Page 1 of 2 12 LastLast
Results 1 to 10 of 20

Thread: Newer kernels with KMS hangs at boot looking 4 firmware, howto fix?

  1. #1
    Join Date
    Oct 2009
    Posts
    68

    Thumbs down Newer kernels with KMS hangs at boot looking 4 firmware, howto fix?

    Using newer kernels (2.3.33-rcX) and KMS built into the kernel the kernel will boot and show a message about trying to load the R600_rlc.bin firmware file:

    [drm] Loading RS780 Microcode
    platform radeon_cp.0: firmware: requesting radeon/RS780_pfp.bin
    platform radeon_cp.0: firmware: requesting radeon/RS780_me.bin
    platform radeon_cp.0: firmware: requesting radeon/R600_rlc.bin

    Then it just hangs itself and sits there doing who knows what.

    It appears the file is requested even before /sys is mounted. I found an option to build firmware files into the kernel -- but even then it just hung itself trying to load the firmware file.

    I get the KMS technology working by compiling drm and radeon by modules and loading them by adding radeon and fbcon to /etc/modules.autoload.d/kernel-2.6 and echo "options radeon modeset=1" > /etc/modprobe.d/radeon-kms.conf

    Is there any way I can put R600_rlc.bin into the kernel??? I did try

    CONFIG_FIRMWARE_IN_KERNEL=y
    CONFIG_EXTRA_FIRMWARE="R600_rlc.bin RS780_pfp.bin RS780_me.bin"

    and the files were fetched from the kernels /firmware folder (where I placed them) and compiled into the kernel -- yet loading FAiLED.

    WHY can't the firmware file be stuffed into the kernel (by default would be great), and WHY oh WHY can't I find any source code for this file anywhere when the files header claims that "This is free software; see the source for copying conditions."???

  2. #2
    Join Date
    Nov 2008
    Location
    Madison, WI, USA
    Posts
    838

    Default

    I haven't bothered trying to build it into the kernel yet, but I did have a similar problem to yours (I would get screen blanking when it tried to load R700_rlc.bin during boot and then it'd hang).

    I obtained a copy of R700_rlc.bin and copied it to /lib/firmware/radeon/R700_rlc.bin, and now everything's working for me. I'm not sure if you've tried this or not, but it might be worth a shot (using R600_rlc.bin for you instead of R700_rlc.bin).

  3. #3
    Join Date
    Oct 2009
    Posts
    68

    Smile

    Quote Originally Posted by Veerappan View Post
    I haven't bothered trying to build it into the kernel yet, but I did have a similar problem to yours (I would get screen blanking when it tried to load R700_rlc.bin during boot and then it'd hang).

    I obtained a copy of R700_rlc.bin and copied it to /lib/firmware/radeon/R700_rlc.bin, and now everything's working for me. I'm not sure if you've tried this or not, but it might be worth a shot (using R600_rlc.bin for you instead of R700_rlc.bin).
    I also had this problem when building as modules, and like you, I fixed it by placing the files in /lib/firmware/radeon

    Firmware files can be copied from the kernels firmware/radeon folder, two files are missing, those are available from
    http://people.freedesktop.org/~agd5f/radeon_ucode/ (only the .bin files, no source there)

    However, when you do build it into the kernel then there is no /lib or /sys for that matter since the file is requested _before_ init -- this, nothing is mounted.
    Last edited by xiando; 12-29-2009 at 04:30 PM.

  4. #4
    Join Date
    Jan 2009
    Location
    Italy
    Posts
    82

    Default

    Quote Originally Posted by xiando View Post
    Is there any way I can put R600_rlc.bin into the kernel??? I did try

    CONFIG_FIRMWARE_IN_KERNEL=y
    CONFIG_EXTRA_FIRMWARE="R600_rlc.bin RS780_pfp.bin RS780_me.bin"

    and the files were fetched from the kernels /firmware folder (where I placed them) and compiled into the kernel -- yet loading FAiLED.
    The driver searches for radeon/${name}, did you put the rlc firmware in the correct subdir?

    Quote Originally Posted by xiando View Post
    WHY oh WHY can't I find any source code for this file anywhere when the files header claims that "This is free software; see the source for copying conditions."???
    The firmware itself is not open; for the rlc file see
    http://people.freedesktop.org/~agd5f...LICENSE.radeon

  5. #5
    Join Date
    Jan 2010
    Posts
    1

    Default

    Quote Originally Posted by xiando View Post
    I also had this problem when building as modules, and like you, I fixed it by placing the files in /lib/firmware/radeon

    Firmware files can be copied from the kernels firmware/radeon folder, two files are missing, those are available from
    http://people.freedesktop.org/~agd5f/radeon_ucode/ (only the .bin files, no source there)

    However, when you do build it into the kernel then there is no /lib or /sys for that matter since the file is requested _before_ init -- this, nothing is mounted.
    You have to put the firmware files into the firmware directory in the kernel source tree or set CONFIG_EXTRA_FIRMWARE_DIR.

    Code:
     CONFIG_EXTRA_FIRMWARE_DIR:                                             
    This option controls the directory in which the kernel build system
    looks for the firmware files listed in the EXTRA_FIRMWARE option.
    The default is the firmware/ directory in the kernel source tree,
    but by changing this option you can point it elsewhere, such as the
    /lib/firmware/ directory or another separate directory containing
    firmware files.
    HTH,
    Sirko

  6. #6
    Join Date
    Dec 2009
    Posts
    63

    Default

    I bump the post cause i have the same problem. I'm building a kernel without initrd.

    I set CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware/radeon"
    CONFIG_EXTRA_FIRMWARE="RS780_me.bin RS780_pfp.bin"
    CONFIG_FIRMWARE_IN_KERNEL=y
    CONFIG_PREVENT_FIRMWARE_BUILD disabled.

    CONFIG_FIRMWARE_IN_KERNEL was set as y as well. It says something about "make firmware_install" but i guess it's enough with building the .bin files into the kernel.

    Now, after installed, when i try to boot from it, it hangs after print
    [drm] Loading RS780 Microcode

  7. #7
    Join Date
    Dec 2009
    Posts
    63

    Default

    Damn 1 minute edit time limit.

    I'm using Arch x64 and this is the PKGBUILD I'm using:

    Code:
    pkgname=kernel26-custom
    basekernel=2.6.37
    pkgver=2.6.37
    pkgrel=7
    pkgdesc="My custom kernel"
    arch=('i686' 'x86_64')
    license=('GPL')
    url="http://www.kernel.org"
    depends=('module-init-tools' 'mkinitcpio')
    provides=(kernel26)
    install=kernel26.install
    
    build() {
      LOCAL_VERSION="$(grep "CONFIG_LOCALVERSION=" $startdir/.config | sed 's/.*"\(.*\)"/\1/')"
    
      cd ..
      make || return 1
      mkdir -p $startdir/pkg/{lib/modules,boot}
      make INSTALL_MOD_PATH=$startdir/pkg modules_install || return 1
    
      # There's no separation of firmware depending on kernel version - 
      # comment this line if you intend on using the built kernel exclusively,
      # otherwise there'll be file conflicts with the existing kernel
      rm -rf $startdir/pkg/lib/firmware
    
      install -Dm644 "System.map" "$startdir/pkg/boot/System.map26$LOCAL_VERSION"
      install -Dm644 "arch/x86/boot/bzImage" "$startdir/pkg/boot/vmlinuz26$LOCAL_VERSION"
    
      # Change the version strings in kernel26.install
      sed -i \
            -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=\"$basekernel\"/" \
            -e "s/LOCAL_VERSION=.*/LOCAL_VERSION=\"$LOCAL_VERSION\"/" \
            $startdir/kernel26.install
    }

  8. #8
    Join Date
    Oct 2007
    Location
    Toronto-ish
    Posts
    7,281

    Default

    Quote Originally Posted by Viper_Scull View Post
    CONFIG_EXTRA_FIRMWARE="RS780_me.bin RS780_pfp.bin"
    You need three microcode files, not two. There should be a _rlc file as well.

  9. #9
    Join Date
    Dec 2009
    Posts
    63

    Default

    Thanks for the tip.

    I added R700_rlc.bin and R600_rlc.bin (just in case), but still happening the same.

    Actually it never said

    platform radeon_cp.0: firmware: requesting radeon/RS780_pfp.bin
    platform radeon_cp.0: firmware: requesting radeon/RS780_me.bin
    platform radeon_cp.0: firmware: requesting radeon/R600_rlc.bin


    just hangs after printing
    [drm] Loading RS780 Microcode

  10. #10
    Join Date
    Dec 2007
    Posts
    2,276

    Default

    See "Troubleshooting Extra Firmware" section on:
    http://wiki.x.org/wiki/radeonBuildHowTo

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •