The patch titled radeonfb: fix engine hangs and cache flushing (v2) has been added to the -mm tree. Its filename is radeonfb-fix-engine-hangs-and-cache-flushing-v2.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: radeonfb: fix engine hangs and cache flushing (v2) From: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> (Thanks to David Miller for debugging that on his rv370 and providing the initial version of that patch !) This patches fixes a few things. One is, among the 3 or so different variants of cache control registers, radeon_engine_flush() is using one that shouldn't be used on r3xx and later. This fixes it by making is use one that should work on everything at least for the 2D cache. We also didn't use the proper list of chip families on some functions, this resyncs us with what X does. In addition, I added a waitfor fifo in radeon_engine_flush() to make sure the cache flush command did hit the register backbone before testing for completion of the flush operation. Finally, we enqueue a destination cache flush and a wait for engine idle before solid fills and blits. This effectively prevents those operations from being pipelined and shouldn't be necessary but it appaears to cure some hangs on David's card, so I suspect something fishy is going on with the engine caches. The performances of radeonfb don't appear to suffer a great deal from that anyway. v2. adds a missing wait on fifo Signed-off-by: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: <stable@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/video/aty/radeon_accel.c | 1 + 1 file changed, 1 insertion(+) diff -puN drivers/video/aty/radeon_accel.c~radeonfb-fix-engine-hangs-and-cache-flushing-v2 drivers/video/aty/radeon_accel.c --- a/drivers/video/aty/radeon_accel.c~radeonfb-fix-engine-hangs-and-cache-flushing-v2 +++ a/drivers/video/aty/radeon_accel.c @@ -60,6 +60,7 @@ static void radeonfb_prim_fillrect(struc * * This works around engine lockups on some cards */ + radeon_fifo_wait(2); OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL); OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE)); _ Patches currently in -mm which might be from benh@xxxxxxxxxxxxxxxxxxx are radeonfb-fix-engine-hangs-and-cache-flushing.patch radeonfb-fix-engine-hangs-and-cache-flushing-v2.patch radeonfb-fix-engine-hangs-and-cache-flushing-checkpatch-fixes.patch linux-next.patch powerpc-replace-__function__-with-__func__.patch x86-rename-iommu_num_pages-function-to-iommu_nr_pages.patch powerpc-rename-iommu_num_pages-function-to-iommu_nr_pages.patch introduce-generic-iommu_num_pages-function.patch powerpc-use-iommu_num_pages-function-in-iommu-code.patch radeonfb-revert-fix-radeon-ddc-regression.patch gcov-architecture-specific-compile-flag-adjustments-powerpc-moved-stuff.patch powerpc-hugetlb-pgtable-cache-access-cleanup.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html