[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#576229: Warn about missing firmware files



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;

Reply to: