Package: xserver-xorg-video-radeon Version: 1:6.12.192-2 Severity: wishlist Tags: patch
#include <hallo.h> This is followup to bug #575945. I should mention the fact that I _had_ a lot of radeon firmware files in /lib/firmware/$(uname -r)/radeon/, therefore it was not obvious to look for firmware issues. The firmware-linux package was suggested, sure, but its description only talks about "modules from kernel source" and I obviously HAD them installed. The kernel log mentioned the missing firmware but that message was hard to spot among other udev/framebuffer/... spam. The Xorg.0.log mentioned a fallback to shadowfb but did not tell why, and even that thin line is printed below tons of unrelated messages. So, sorry, say what you want but locating the reason for the trouble is not as simple as it may appear. Therefore, I offer the attached patch which tries to detect a such situation and prints a more prominently looking text block in the X log. Regards, Eduard.
diff --git a/src/radeon_kms.c b/src/radeon_kms.c index 15e5e3f..d18a1ce 100644 --- a/src/radeon_kms.c +++ b/src/radeon_kms.c @@ -231,6 +231,24 @@ static Bool RADEONPreInitAccel_KMS(ScrnInfoPtr pScrn) (!RADEONIsAccelWorking(pScrn))) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "GPU accel disabled or not working, using shadowfb for KMS\n"); + + /* + * Tell the user about what's (possibly) causing the problem. + * + * Checking whether required ucode files are present on the system + * in the location used by at least Debian and Mandriva. + */ + if( access("/lib/firmware/radeon/R600_rlc.bin", R_OK) || + access("/lib/firmware/radeon/R700_rlc.bin", R_OK)) + { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "This symptom may indicate an incompletely initialized firmware,\n" + "\tand apparently some firmware files are missing in the\n" + "\t/lib/firmware/radeon/ directory.\n" + "\tInstalling firmware-linux package and reloading the radeon\n" + "\tkernel module might solve the problem (reboot if needed).\n"); + } + info->r600_shadow_fb = TRUE; if (!xf86LoadSubModule(pScrn, "shadow")) info->r600_shadow_fb = FALSE;