Kernel almost hangs when CONFIG_DRM_RADEON=y
bp at alien8.de
Sat Aug 27 22:36:24 PDT 2011
On Sat, Aug 27, 2011 at 06:50:37PM -0400, Pavel Ivanov wrote:
> 2011/8/27 Michel Dänzer <michel at daenzer.net>:
> >> I observe very strange behavior dependent on value of
> >> CONFIG_DRM_RADEON parameter. When it's set to m everything works very
> >> good, no problem. When I set it to y I see kernel hang during boot. Or
> >> I should better say it "almost hangs" because during last boot attempt
> >> I accidentally waited a little bit longer and saw that after more than
> >> a minute waiting system continued to boot. Dmesg after "hang" shows
> >> these messages:
> >> [ 8.542639] [drm] Loading CEDAR Microcode
> >> [ 69.161605] r600_cp: Failed to load firmware "radeon/CEDAR_pfp.bin"
> >> [ 69.161670] [drm:evergreen_startup] *ERROR* Failed to load firmware!
> >> While during normal boot
> >> [ 9.898870] [drm] Loading CEDAR Microcode
> >> [ 9.908425] radeon 0000:05:00.0: WB enabled
> > With CONFIG_DRM_RADEON=y, the microcode is needed before it can be
> > loaded from userspace, so it needs to be built into the kernel as well.
> How should I do that? I've tried to set all "m"s to "y" in .config and
> still saw this issue. Should I set some special parameter?
You need to add "radeon/CEDAR_pfp.bin" to CONFIG_EXTRA_FIRMWARE when you
configure your kernel and enable CONFIG_FIRMWARE_IN_KERNEL.
The radeon/CEDAR_pfp.bin file (+ leading directory, mind you) should
most probably be located in /lib/firmware or to whatever you have set
CONFIG_EXTRA_FIRMWARE_DIR so that Kbuild can find it (if not, you'll get
a warning at the end of the kernel build). This way, it works for both
radeon being =m and =y.
More information about the dri-devel