Announcement

Collapse
No announcement yet.

Radeon KMS doesn't work at boot

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Radeon KMS doesn't work at boot

    So, I got Radeon kernel modesetting working fine after startup by falling back to a terminal, stopping anything using X, rmmod radeon, modprobe radeon modeset=1, and restarting X. However, when I try to setup kernel modesetting on boot, things don't work.

    I thought it might be an initrd issue, so I remade by initrd with radeon, drm, drm_kms_helper, ttm, agpgart, etc. I checked my new initrd and the radeon firmware is there too. However, even with this new initrd, I can't get the machine to boot - let alone boot into KMS. Basically I get a screen that doesn't look like a KMS terminal and then nothing - no init, no udev, the machine just goes unresponsive.

    Wondering if anyone here had any ideas.

    Thanks in advance.

  • #2
    Originally posted by Tillin9 View Post
    So, I got Radeon kernel modesetting working fine after startup by falling back to a terminal, stopping anything using X, rmmod radeon, modprobe radeon modeset=1, and restarting X. However, when I try to setup kernel modesetting on boot, things don't work.

    I thought it might be an initrd issue, so I remade by initrd with radeon, drm, drm_kms_helper, ttm, agpgart, etc. I checked my new initrd and the radeon firmware is there too. However, even with this new initrd, I can't get the machine to boot - let alone boot into KMS. Basically I get a screen that doesn't look like a KMS terminal and then nothing - no init, no udev, the machine just goes unresponsive.

    Wondering if anyone here had any ideas.

    Thanks in advance.
    The only thing I had to do was add radeon modeset=1 to the kernel line in grub. The other alternative is to go into make menuconfig, and enable from the configuration utility.

    Comment


    • #3
      Just to follow up, the problem is that Debian separates out firmware from the kernel. Also, since Debian's initramfs-tools init script loads modules before premount, this means that modules that now need firmware can't find it.

      Not sure if this is an initramfs-tools bug (leaning that way) or not.

      Anyway... I realized that Debian turned on quiet (my afterboot was really noisy) so I turned that on, found the RV730_pfp.bin not found error message before the hang and since it was in my initrd, figured out the issue was with the script.

      Comment


      • #4
        You must has da firmware

        I ran into some trouble when I first started building radeon KMS into the kernel and enabled it by default. The Trouble has to do with the Binary Firmware Blobs they are hurding us into using. I'm talking about the stuff that shows up in dmesg like this:

        Code:
        [drm] Initialized drm 1.1.0 20060810
        [drm] radeon defaulting to kernel modesetting.
        [drm] radeon kernel modesetting enabled.
        radeon 0000:01:05.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
        radeon 0000:01:05.0: setting latency timer to 64
        [drm] radeon: Initializing kernel modesetting.
        [drm] register mmio base: 0xFE8F0000
        [drm] register mmio size: 65536
        ATOM BIOS: B27721
        [drm] Clocks initialized !
        [drm] 3 Power State(s)
        [drm] State 0 Default (default)
        [drm]   1 Clock Mode(s)
        [drm]           0 engine: 300000
        [drm] State 1 Performance
        [drm]   1 Clock Mode(s)
        [drm]           0 engine: 500000
        [drm] State 2 Default
        [drm]   1 Clock Mode(s)
        [drm]           0 engine: 500000
        [drm] radeon: power management initialized
        radeon 0000:01:05.0: VRAM: 256M 0xC0000000 - 0xCFFFFFFF (256M used)
        radeon 0000:01:05.0: GTT: 512M 0xA0000000 - 0xBFFFFFFF
        [drm] Detected VRAM RAM=256M, BAR=256M
        [drm] RAM width 32bits DDR
        [TTM] Zone  kernel: Available graphics memory: 2928610 kiB.
        [TTM] Zone   dma32: Available graphics memory: 2097152 kiB.
        [drm] radeon: 256M of VRAM memory ready
        [drm] radeon: 512M of GTT memory ready.
        [drm] radeon: irq initialized.
        [drm] GART: num cpu pages 131072, num gpu pages 131072
        [drm] Loading RS780 Microcode
        platform radeon_cp.0: firmware: using built-in firmware radeon/RS780_pfp.bin
        platform radeon_cp.0: firmware: using built-in firmware radeon/RS780_me.bin
        platform radeon_cp.0: firmware: using built-in firmware radeon/R600_rlc.bin
        [drm] ring test succeeded in 0 usecs
        [drm] radeon: ib pool ready.
        [drm] ib test succeeded in 0 usecs
        [drm] Enabling audio support
        [drm] Radeon Display Connectors
        [drm] Connector 0:
        [drm]   VGA
        [drm]   DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c
        [drm]   Encoders:
        [drm]     CRT1: INTERNAL_KLDSCP_DAC1
        [drm] Connector 1:
        [drm]   HDMI-A
        [drm]   HPD3
        [drm]   DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c
        [drm]   Encoders:
        [drm]     DFP1: INTERNAL_KLDSCP_LVTMA
        [drm] fb mappable at 0xD0141000
        [drm] vram apper at 0xD0000000
        [drm] size 8294400
        [drm] fb depth is 24
        That was probably a little too much information. My point is that*platform radeon_cp.0: firmware: using built-in firmware radeon/R600_rlc.bin will fail unless you have the R600_rlc.bin available. It usually is NOT because you have no /lib/firmware when you boot and thus not access to the binary blob technology.

        Look into your kernel configuration and build the firmware into the kernel. This works (for me).

        You want..:

        Code:
        CONFIG_FIRMWARE_IN_KERNEL=y
        CONFIG_EXTRA_FIRMWARE="radeon/R600_rlc.bin radeon/RS780_pfp.bin radeon/RS780_me.bin"
        CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware/"
        I ran into trouble with doing this myself because a) Your space-seperated list of firmware must have the path, i.e. radeon/R600_rlc.bin radeon/RS780_pfp.bin etc and if you just write R600_rlc.bin RS780_pfp.bin then you fail. You must also let the kernel know where the files are when you build the kernel with CONFIG_EXTRA_FIRMWARE_DIR or you fail.

        I am sure that you can get this working, I did and I'm just this guy, you know, I'm not a scientist.

        Good luck!!1

        Comment


        • #5
          Sorry if I wasn't clear - I already got it working.

          Thanks for adding how to do it if you compile your own kernel - if I was doing it myself I would have just embedded the firmware as well. I was using the Debian stock kernel and thus needed the firmware external.

          Debian users need to apt-get install firmware-linux-nonfree, add the following to /etc/initramfs-tools/modules
          Code:
          agpgart
          intel_agp
          i2c-core
          i2c-algo-bit
          drm
          drm_kms_helper
          ttm
          radeon modeset=1
          and update-initramfs -k `uname -r` -u

          Additionally, you need to more the maybe_break premount codeblock to before the maybe_break modules in /usr/share/initramfs-tools/init

          Comment

          Working...
          X