Announcement

Collapse
No announcement yet.

Radeon4870 X Start annoyance

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

  • Radeon4870 X Start annoyance

    It's going now really on my nerves since it gets worse. I need to like reboot 5 to 10 times before I come up with X not freezing into a full halt. When the X comes up everything works fine and I can do game deving and all going heavy on the card but it takes multiple tries before it boots.

    Any ideas what could be done here? The card does work hence it is not a general problem that it would never work hence the driver ( fglrx ) has to be bugged somewhere resulting in random crashes on X startup.

    And why the hell ATI is it so damn difficult to fix this? Please stop adding more gadgets to this driver if it can't reliably boot into X! In game deving all class A and B bugs ( show stopper bugs, crashes, unplayability, major impeding play ) have to be fixed first then C and lower class bugs ( smaller problems, feature requests ) are addressed. How comes you leave people having with class A bugs while wasting time on class E ( feature requests ) bugs?!

    System:
    - Linux 2.6.25-gentoo-r7 #1 SMP PREEMPT x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 6400+ AuthenticAMD GNU/Linux
    - x11-drivers/ati-drivers-8.542
    - x11-base/xorg-server-1.3.0.0-r6
    Last edited by Dragonlord; 05 November 2008, 12:15 PM.

  • #2
    Sounds like a timing race.

    Please post dmesg and Xorg.0.log from a crash.

    Comment


    • #3
      It's a bit tricky but let's see if this works.

      /var/log/everything on hang.
      Nov 7 18:25:58 [kernel] [fglrx] CMM init INV FB MC:0xf10000000, length:0x10000000
      Nov 7 18:25:58 [kernel] [fglrx] Reserved FB block: Shared offset:0, size:1000000
      Nov 7 18:25:58 [kernel] [fglrx] Reserved FB block: Unshared offset:ff77000, size:88000
      *** FLATLINE ***
      Without hang it just continues here with kernel logs. Nothing interesting to find there.

      /var/log/Xorg.0.log on hang:
      (II) fglrx(0): driver needs X.org 7.1.x.y with x.y >= 0.0
      (II) fglrx(0): detected X.org 7.1.0.0
      (II) Loading extension ATIFGLRXDRI
      (II) fglrx(0): doing DRIScreenInit
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 8, (OK)
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 8, (OK)
      drmOpenByBusid: Searching for BusID PCI:6:0:0
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 8, (OK)
      drmOpenByBusid: drmOpenMinor returns 8
      drmOpenByBusid: drmGetBusid reports PCI:6:0:0
      (II) fglrx(0): [drm] DRM interface version 1.0
      (II) fglrx(0): [drm] created "fglrx" driver at busid "PCI:6:0:0"
      (II) fglrx(0): [drm] added 8192 byte SAREA at 0x2000
      (II) fglrx(0): [drm] mapped SAREA 0x2000 to 0x7fcf2429e000
      (II) fglrx(0): [drm] framebuffer handle = 0x3000
      (II) fglrx(0): [drm] added 1 reserved context for kernel
      (II) fglrx(0): DRIScreenInit done
      (II) fglrx(0): Kernel Module Version Information:
      (II) fglrx(0): Name: fglrx
      (II) fglrx(0): Version: 8.54.3
      (II) fglrx(0): Date: Oct 3 2008
      (II) fglrx(0): Desc: ATI FireGL DRM kernel module
      (II) fglrx(0): Kernel Module version matches driver.
      (II) fglrx(0): Kernel Module Build Time Information:
      (II) fglrx(0): Build-Kernel UTS_RELEASE: 2.6.25-gentoo-r7
      (II) fglrx(0): Build-Kernel MODVERSIONS: no
      (II) fglrx(0): Build-Kernel __SMP__: yes
      (II) fglrx(0): Build-Kernel PAGE_SIZE: 0x1000
      (II) fglrx(0): [drm] register handle = 0x00004000
      *** FLATLINE ***
      When it works:
      (II) fglrx(0): driver needs X.org 7.1.x.y with x.y >= 0.0
      (II) fglrx(0): detected X.org 7.1.0.0
      (II) Loading extension ATIFGLRXDRI
      (II) fglrx(0): doing DRIScreenInit
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 8, (OK)
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 8, (OK)
      drmOpenByBusid: Searching for BusID PCI:6:0:0
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 8, (OK)
      drmOpenByBusid: drmOpenMinor returns 8
      drmOpenByBusid: drmGetBusid reports PCI:6:0:0
      (II) fglrx(0): [drm] DRM interface version 1.0
      (II) fglrx(0): [drm] created "fglrx" driver at busid "PCI:6:0:0"
      (II) fglrx(0): [drm] added 8192 byte SAREA at 0x2000
      (II) fglrx(0): [drm] mapped SAREA 0x2000 to 0x7f2abd58b000
      (II) fglrx(0): [drm] framebuffer handle = 0x3000
      (II) fglrx(0): [drm] added 1 reserved context for kernel
      (II) fglrx(0): DRIScreenInit done
      (II) fglrx(0): Kernel Module Version Information:
      (II) fglrx(0): Name: fglrx
      (II) fglrx(0): Version: 8.54.3
      (II) fglrx(0): Date: Oct 3 2008
      (II) fglrx(0): Desc: ATI FireGL DRM kernel module
      (II) fglrx(0): Kernel Module version matches driver.
      (II) fglrx(0): Kernel Module Build Time Information:
      (II) fglrx(0): Build-Kernel UTS_RELEASE: 2.6.25-gentoo-r7
      (II) fglrx(0): Build-Kernel MODVERSIONS: no
      (II) fglrx(0): Build-Kernel __SMP__: yes
      (II) fglrx(0): Build-Kernel PAGE_SIZE: 0x1000
      (II) fglrx(0): [drm] register handle = 0x00004000
      (II) fglrx(0): DRI initialization successfull!
      (II) fglrx(0): FBADPhys: 0xf00000000 FBMappedSize: 0x01008000
      (II) fglrx(0): FBMM initialized for area (0,0)-(1728,2432)
      (II) fglrx(0): FBMM auto alloc for area (0,0)-(1728,1050) (front color buffer - assumption)
      (II) fglrx(0): Largest offscreen area available: 1728 x 1382
      (==) fglrx(0): Backing store disabled
      (II) Loading extension FGLRXEXTENSION
      (II) Loading extension ATITVOUT
      (**) fglrx(0): DPMS enabled
      (**) fglrx(0): Textured Video is enabled.
      And more. Looks like it hangs inside the DRI initialization call somewhere as it never reaches the "DRI initialization successfull!" line.

      Comment


      • #4
        That means it dies loading the fglrx kernel module.

        Can you ssh into the machine when it is locked? dmesg could be useful.


        IRQ or DMA settings are likely the culprit.

        IRQ:
        Do you have noapic in your kernel parameters? fglrx does NOT like it.
        Some BIOSes do not configure the APIC properly. Update may be needed.
        Kernel APIC support had some nasty bugs in it.
        Newer kernels also have fixes for many buggy APICs.

        If you have noapic set, this is likely the cause.

        DMA:
        The only difference I see in your logs is SAREA location. This shouldn't matter, but if your BIOS isn't setting up memory maps properly it could overlap with something else.
        If you have 4GB RAM or more, your BIOS may not be reserving a large enough memory hole for IO.

        Comment


        • #5
          I don't think it dies on loading fglrx since GenToo loads the driver early in the booting process. Afterwards networking is loaded and at the very end XDM is started where the hang occurs. Hence fglrx is fully loaded by that time already. It has to be inside the driver somewhere where it dies therefore.

          >> Do you have noapic in your kernel parameters? fglrx does NOT like it.
          No, no noapic in use. Using very defensive kernel line:
          kernel /gentoo-stable.kernel root=/dev/sda5 vga=791
          >> DMA: If you have 4GB RAM or more, your BIOS may not be reserving a large enough memory hole for IO.
          2GB RAM ( dual 1GB ).

          >> SSH:
          Doesn't work. Hard freeze.

          Comment


          • #6
            Even so, we are agreed that DRI initialization triggers the fault.

            Possibilities:
            1 bug in fglrx binary blob
            -not much we can do here.
            2 bug/miscompile fglrx kernel module.
            -gcc version mismatch could cause this. There is specific code in this module to prevent it, but still possible.
            -Also can happen if module is compiled against wrong kernel source.
            -ati-drivers-8.542 may have problems http://bugs.gentoo.org/243172
            3 kernel bug
            -There were some really nasty APIC related kernel bugs for about 10 versions (8.6.1x to 8.6.2x) that can kill newer fglrx. I'm not sure if the fixes made it in to 2.6.25. I know they are in 2.6.26.
            4 BIOS misconfigures card randomly (PnP error)
            -Either IRQ or DMA misconfigure can cause this. Newer fglrx really shows this up.
            5 Incorrect permissions on /etc/ati/authatieventsd.sh
            -however, you shouldn't be able to boot at all in this case.
            -see: http://bugs.gentoo.org/show_bug.cgi?id=242582

            Beyond that we're getting in over my head. Sorry

            Comment


            • #7
              i think there is a way you can ssh in or set up a serial console over ethernet or rs232 for system messages before the crash. i was debuggin something a while ago and done this but have forgetten the details.

              Comment

              Working...
              X