Announcement

Collapse
No announcement yet.

fglrx multiseat crash

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

  • fglrx multiseat crash

    To anybody whose tried a fglrx-based multiseat setup.

    Using the same configuration files I use on my Nvidia based multiseat
    stations, stripping out the Nvidia options and replacing them with Ati ones - I get a partially working setup.

    1 out of 10 boots will be fairly stable, starting gdm manually from bash has a 5 - 10 success rate. If it crashes - which it does
    most of the time - it brings down the entire system with it. Using the
    same hardware with Nvidia cards causes no problems whatsoever.

    OS: Debian Lenny

    Hardware:

    CPU: AMD Phenom X4 9550 2,2Ghz
    MOBO: MSI K9A2 Platinum (flashed to latest BIOS)
    RAM: 4 GB Kingston HyperX DDR2 1066 running @ 800 for compatibility
    GPU 1 : Sapphire Radeon HD 4670 Ultimate
    GPU 2 : Sapphire Radeon HD 3450
    GPU 3 : Sapphire Radeon HD 3450
    GPU 4 : Sapphire Radeon HD 3450

    I haven't bothered setting up the 3rd and 4th GPU's - as bringing 2 up is already troublesome.

    Example xorg.conf for the first seat terminal 0:

    Section "ServerLayout"
    Identifier "Terminal0"
    Screen "Screen0" 0 0
    InputDevice "Keyboard0" "CoreKeyboard"
    InputDevice "Mouse0" "CorePointer"
    # InputDevice "NoKeyboard0" "CoreKeyboard"
    # InputDevice "NoMouse0" "CorePointer"
    # InputDevice "Sixaxis0" "SendCoreEvents"
    # InputDevice "Sixaxis0" "CorePointer"
    Option "IsolateDevice" "PCI:1:0:0"
    EndSection

    Section "Files"
    RgbPath "/usr/X11R6/lib/X11/rgb"
    EndSection

    Section "Module"
    Load "dbe"
    Load "extmod"
    Load "type1"
    Load "freetype"
    Load "glx"
    Load "dri"
    SubSection "extmod"
    Option "omit xfree86-dga"
    EndSubSection
    EndSection

    Section "ServerFlags"
    Option "AllowMouseOpenFail" "on"
    Option "Xinerama" "0"
    # Option "Aiglx" "true"
    # Option "DontVTSwitch" "Yes"
    # Option "DontZAP" "Yes"
    Option "HandleSpecialKeys" "always"
    EndSection

    ########## MAIN INPUT DEVICES ##########

    Section "InputDevice"
    Identifier "Keyboard0"
    Driver "evdev"
    # Option "Phys" "usb-0000:04:02.2-4.4.4/input0"
    Option "Device" "/dev/input/by-path/pci-0000:06:02.2-usb-0:4.4.4:1.0-event-kbd"
    Option "evBits" "+1"
    Option "keyBits" "~1-255 ~352-511"
    Option "Pass" "3"
    Option "XkbLayout" "us"
    Option "XkbVariant" "euro"
    Option "XkbModel" "evdev"
    Option "XkbRules" "xfree86"
    # "Logitech Ultra Flat Keyboard USB"
    EndSection

    Section "InputDevice"
    Identifier "Mouse0"
    # Driver "mouse"
    Driver "evdev"
    Option "Buttons" "5"
    # Option "Device" "/dev/input/mouse2"
    Option "Device" "/dev/input/by-path/pci-0000:06:02.2-usb-0:4.4.3:1.0-event-mouse"
    Option "Name" "Logitech TrackMan Wheel"
    Option "Protocol" "explorerps/2"
    Option "ZAxisMapping" "4 5"
    EndSection

    ########## DUMMY INPUT DEVICES ##########

    Section "InputDevice"
    Driver "void"
    Identifier "NoKeyboard0"
    EndSection

    Section "InputDevice"
    Driver "void"
    Identifier "NoMouse0"
    EndSection

    ########## SPECIAL INPUT DEVICES ##########

    #Section "InputDevice"
    # Identifier "Sixaxis0"
    # Driver "joystick"
    # Option "Device" "/dev/input/by-id/usb-Broadcom_Corp_BCM92045B3_ROM-event-joystick"
    # Option "Path" "/dev/input/js0"
    # Map Button 16 - square
    # Option "MapButton16" "button=3"
    # Map Button 15 - x
    # Option "MapButton15" "button=1"
    # Map Button 11 - L1
    # Option "MapButton11" "key=Alt_L,Left"
    # Map Button 12 - R1
    # Option "MapButton12" "key=Alt_L,Right"
    # Option "MapAxis1" "mode=relative axis=2.0x deadzone=3000"
    # Option "MapAxis2" "mode=relative axis=2.0y deadzone=3000"
    #EndSection

    ######### MAIN SCREEN SECTION #########

    Section "Modes"
    Identifier "Modes0"
    ModeLine "1680x1050" 147.1 1680 1784 1968 2256 1050 1051 1054 1087
    EndSection

    Section "Monitor"
    Identifier "Monitor0"
    VendorName "--> LCD"
    ModelName "1680X1050@60HZ"
    UseModes "Modes0"
    DisplaySize 431 269
    HorizSync 30.0 - 81.0
    VertRefresh 56.0 - 75.0
    Option "CalcAlgorithm" "XServerPool"
    Option "DPMS"
    EndSection

    Section "Device"
    Identifier "Videocard0"
    Driver "fglrx"
    VendorName "ATI Corporation"
    BoardName "Radeon HD 4670"
    BusID "PCI:1:0:0"
    EndSection

    Section "Screen"
    Identifier "Screen0"
    Device "Videocard0"
    Monitor "Monitor0"
    DefaultDepth 24
    # ### generic DRI settings ###
    # === disable PnP Monitor ===
    #Option "NoDDC"
    # === disable/enable XAA/DRI ===
    Option "no_accel" "no"
    Option "no_dri" "no"
    # === misc DRI settings ===
    Option "mtrr" "off" # disable DRI mtrr mapper, driver has its own code for mtrr
    # ### FireGL DDX driver module specific settings ###
    # === Screen Management ===
    Option "DesktopSetup" "0x00000000" #single
    # Option "DesktopSetup" "0x00000201" #big
    # Option "DesktopSetup" "0x00000000" #dual
    # Option "DesktopSetup" "0x00000100" #clone
    Option "MonitorLayout" "TMDS, CRT"
    Option "IgnoreEDID" "off"
    Option "HSync2" "unspecified"
    Option "VRefresh2" "unspecified"
    Option "ScreenOverlap" "0"
    # === TV-out Management ===
    Option "NoTV" "no"
    Option "TVStandard" "PAL-G"
    Option "TVHSizeAdj" "0"
    Option "TVVSizeAdj" "0"
    Option "TVHPosAdj" "0"
    Option "TVVPosAdj" "0"
    Option "TVHStartAdj" "0"
    Option "TVColorAdj" "0"
    Option "GammaCorrectionI" "0x06419064"
    Option "GammaCorrectionII" "0x06419064"
    # === OpenGL specific profiles/settings ===
    Option "Capabilities" "0x00000000"
    # === Video Overlay for the Xv extension ===
    Option "VideoOverlay" "on"
    # === OpenGL Overlay ===
    # Note: When OpenGL Overlay is enabled, Video Overlay
    # will be disabled automatically
    Option "OpenGLOverlay" "off"
    # === Center Mode (Laptops only) ===
    Option "CenterMode" "off"
    # === Pseudo Color Visuals (8-bit visuals) ===
    Option "PseudoColorVisuals" "off"
    # === QBS Management ===
    Option "Stereo" "off"
    Option "StereoSyncEnable" "1"
    # === FSAA Management ===
    Option "FSAAEnable" "no"
    Option "FSAAScale" "1"
    Option "FSAADisableGamma" "no"
    Option "FSAACustomizeMSPos" "no"
    Option "FSAAMSPosX0" "0.000000"
    Option "FSAAMSPosY0" "0.000000"
    Option "FSAAMSPosX1" "0.000000"
    Option "FSAAMSPosY1" "0.000000"
    Option "FSAAMSPosX2" "0.000000"
    Option "FSAAMSPosY2" "0.000000"
    Option "FSAAMSPosX3" "0.000000"
    Option "FSAAMSPosY3" "0.000000"
    Option "FSAAMSPosX4" "0.000000"
    Option "FSAAMSPosY4" "0.000000"
    Option "FSAAMSPosX5" "0.000000"
    Option "FSAAMSPosY5" "0.000000"
    # === Misc Options ===
    Option "UseFastTLS" "0"
    Option "BlockSignalsOnLock" "on"
    Option "UseInternalAGPGART" "no"
    Option "ForceGenericCPU" "no"
    SubSection "Display"
    Depth 24
    Modes "1680x1050"
    EndSubSection
    EndSection

    Section "Extensions"
    Option "Composite" "Disable"
    EndSection

    Section "DRI"
    Mode 0666
    EndSection

    Lines used in defaults.conf to invoke the x-servers:

    ...

    [servers]

    0=Terminal0
    1=Terminal1

    ...

    [server-Terminal0]
    name=Standard server
    command=/usr/bin/X -br -audit 0 -sharevts -novtswitch -config /etc/X11/xorg0.conf
    flexible=false

    [server-Terminal1]
    name=Standard server
    command=/usr/bin/X -br -audit 0 -sharevts -novtswitch -config /etc/X11/xorg1.conf
    flexible=false

    Can anybody suggest a possible fix?

    I've tried different versions of fglrx, compiled my own module, tried the stock module and tried minimal versions of xorg.conf.

  • #2
    I've been struggeling with this myself over the past few weeks. It seems fglrx is unstable even with 1 seat and the opensource driver (-ati & -radeonhd) do not run on multiple cards..

    Comment


    • #3
      I couldn't get the open source drivers working either - nor did I expect them to work as the Gpu's in question are 'fairly new'.

      I would have thought that ATi would have made a decent driver by now.. Nvidia's proprietary driver works perfectly with multiseat.

      Did you try any other options in xorg.conf that improved stability; or is it really not viable with Ati at the moment?

      Comment


      • #4
        At the moment ATi is worthless, but I hope Egbert Eich will fix the problem described in bugzilla. Otherwise I'll have to dive into the code myself, which I don't want to, because I'm rather busy atm.

        Comment


        • #5
          You may find that 2x 3450 works better than a mix of 4670 and 3450. I think the multi-GPU focus has been mostly on sets of identical cards so far.

          AFAIK multi-seat support with fglrx is primarily controlled through the aticonfig command and amdpcsdb, not the xorg.conf file. The initial aticonfig command between install and first run is pretty important IIRC. Taking a conf file from one driver to the other is probably not what you want, at least for the driver/GPU bits.

          I think you want VideoOverlay off for modern GPUs. From 5xx on we use Textured Video, not VideoOverlay. Most of the other options in your conf file are NVidia-specific so I expect the driver will ignore them.

          The issue with the open drivers and multi-GPU support is not related to the newness of the GPU but a limitation in RandR - the multiscreen model used in RandR assumes a single physical frame buffer shared by all the displays, and that isn't compatible with multiple GPUs unless something like "shatter" is added to the framework.

          Comment


          • #6
            Originally posted by bridgman View Post
            The issue with the open drivers and multi-GPU support is not related to the newness of the GPU but a limitation in RandR - the multiscreen model used in RandR assumes a single physical frame buffer shared by all the displays, and that isn't compatible with multiple GPUs unless something like "shatter" is added to the framework.
            This shouldn't be a problem when running >1 xservers (which is the case in Multiseat), right?
            Right now, with RandR 1.2, you get multiple X screens, one per-GPU, each of which can have multiple monitors connected.
            http://liquidat.wordpress.com/2007/1...g-development/

            Comment


            • #7
              From the same link, further down the page :
              I don’t think this statement:

              "Right now, with RandR 1.2, you get multiple X screens, one per-GPU, each of which can have multiple monitors connected."

              Is correct. According to:

              http://wiki.debian.org/XStrikeForce/HowToRandR12

              multiple boards is not supported by RandR 1.2

              Not sure which is correct?
              I believe the issue is that RandR can only process commands for the first GPU. Not 100% sure though, haven't played with it myself.

              EDIT : That reminds me; I remember seeing a couple of posts indicating that turning RandR *off* in fglrx helped in certain cases; not sure if that was multiseat or Xinerama, but they're both similar in the sense that you *don't* want all the screens joined together at driver level.
              Last edited by bridgman; 04-20-2009, 01:59 PM.

              Comment


              • #8
                I've just replaced the ATI's with NVIDIA cards;

                1 x 9600 GT
                1 x 8600 GT
                2 x 8400 GS

                Works perfectly...

                I thought as Radeon 3450 and 4670 are both in the same generation
                driver-wise, that it should've worked - as it does with Nvidia.

                The Randr thing is new to me; as far as i knew multiseat (when using
                multiple X servers) was about using evdev, isolating the pci bus id's, and using gdm,kdm or xdm to initiate the x-servers.

                Comment


                • #9
                  Mixing the different GPU's shouldn't have mattered all that much - as they all invoke their own X-servers.
                  I've set up mixed environments of Intel, Matrox, ATI and Nvidia before (which is a pain as all the libraries have to be maintained seperately) - that also worked, although it was with old GPU's all of which are supported by FOSS drivers.

                  I'll look into the video-overlay tip; although I doubt it was the reason for the entire system to lock up while attempting to bring up gdm on all x-servers.
                  With Nvidia or Matrox if any setting was incorrect - the X-server would die, not the entire machine like with Ati...

                  But there is a slim chance that someone will code a fix then?

                  Or do you suggest looking into the Randr thing...?

                  Comment


                  • #10
                    Seems Randr is applicable when doing either a Xephyr or XGL multiseat - with individual x-servers the gpu's don't "see" each other as active, nor do they share a framebuffer..

                    Comment


                    • #11
                      My points were that :

                      a) multi-GPU support was only added to the consumer drivers quite recently (in the last couple of months), so your chances of success are best on the configurations we tested first (ie matched cards). Over time, this should be less of an issue.

                      b) you are basically setting up the driver the same way as the NVidia card even though the ATI driver uses a different mechanism for managing configuration changes. The ATI driver uses the aticonfig command in most cases, and stores the resulting config info in amdpcsdb, not in the conf file. Simply copying and tweaking an NVidia config file is not likely to work.

                      I don't think using RandR or the open source drivers will work for you today, although it wouldn't hurt to look up the posts related to turning RandR off in fglrx.

                      Originally posted by c1981 View Post
                      Seems Randr is applicable when doing either a Xephyr or XGL multiseat - with individual x-servers the gpu's don't "see" each other as active, nor do they share a framebuffer..
                      For a single GPU, yes. My point is that most of the devs have said you can't use RandR with multiple GPUs today.
                      Last edited by bridgman; 04-20-2009, 02:25 PM.

                      Comment


                      • #12
                        Right, now I understand why fiddling with the xorg.conf helped little to nothing..

                        Do you know which aticonfig options might work?

                        Comment


                        • #13
                          I haven't played with aticonfig much myself (my role here is related to the open source drivers) but will see what I can find.

                          My guess would be that deleting the amdpcsdb file (not the backup, just the active copy) then running aticonfig --initial --adapters=all before starting X might be a good place to start.

                          Comment


                          • #14
                            Thanks, if you could find a helpful post I'd be very grateful indeed.

                            I tried the aticonfig all adapters option a few days back, haven't tried deleting the amdpcsdb file first yet..

                            Comment


                            • #15
                              Successful with Multiseat, no DPMS

                              Using the Kubuntu Jaunty x64 release candidate, I successfully setup and ran a multiseat setup using a Radeon 4850 and a Radeon 3850. I found the key to be minimal config (as few extra options as possible, forcing Xorg to defaults).

                              The biggest initial issue I had was that my 3850 kept hopping device IDs between reboots. It couldn't decide whether to settle on PCI:3:0:0 or PCI:4:0:0, so I was constantly modifying my Xorg.conf for the id-du-jour. If the second card wasn't initialized (due to wrong ID), the whole system would hang as soon as the password was entered in KDM (hard lock) in the first session.

                              When it did work, it worked pretty well. Just for kicks, I played a few rounds of Unreal Tournament 2004 with my daughter using seat0 and seat1. Performance was stellar.

                              The one thing that really killed me about it was that no matter what, I could not get DPMS to work. xset dpms options would cause the monitor to blank (black screen), but the backlight stayed on. vbetool was the only way to get the monitor to actually enter DPMS (and only on seat0).

                              I'm really not looking to keep 2 or 4 monitors on 24/7. If I can't figure out a fix, I'm going to start looking for different hardware.

                              Comment

                              Working...
                              X