Announcement

Collapse
No announcement yet.

Terascale and Southern Islands - enable amdgpu without blacklisting radeon

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

  • Terascale and Southern Islands - enable amdgpu without blacklisting radeon

    I have a laptop with a Richland APU (A10-5750M with HD 8650G) and a Southern Islands (GCN 1.0) card. I want to use the amdgpu kernel driver for the GCN card without blacklisting the radeon driver (because the HD 8650G). I tried to use the amdgpu.si_support=1 radeon.si_support=0 with the Linux 4.13, 4.15 and 4.16, but the system (I have Lubuntu 16.04.4 and Arch Linux) couldn't boot properly if I added these options. Is there any way to switch to the amdgpu kernel driver and use the RADV also (If I also can use some kind of OpenCL driver would be nice) for the GCN card?
    Thank you for any suggestion!

  • #2
    A little status update:
    If I use the amdgpu.si_support=1 radeon.si_support=0 with Lubuntu 16.04.4 and Linux 4.16, then the system boots, but I only have terminal, the GUI fails to start. When I checked the devices with lspci, I saw that the right kernel modules loaded for both GPU (radeon for the Terascale and amdgpu for the GCN), but the lightdm couldn't start. In the log files I found this part at the end:
    Fatal server error:
    AddScreen/ScreenInit failed for driver
    So the system can't initialise the display/screen when both kernel modules are in use, but I still don't know why. Or precisely can't boot properly when the amdgpu kernel driver also in use, because I think my problem is the same as this one: AMD APU + AMD GPU won't boot into GUI with amdgpu

    Comment


    • #3
      You may have to force the X driver per bus id in your xorg config.

      Comment


      • #4
        I made the following xorg.conf file (based on the Arch Linux Xorg help page):

        Code:
        Section "Device"
            Identifier             "TERASCALE"
            Driver                 "radeon"
            BusID                  "PCI:00:01.0"
        EndSection
        
        Section "Device"
            Identifier             "GCN"
            Driver                 "amdgpu"
            BusID                  "PCI:01:00.0"
        EndSection
        I put this into the /etc/X11/ folder. After this I started the system with the following GRUB_CMDLINE_LINUX_DEFAULT options:
        Code:
        amdgpu.si_support=1 radeon.si_support=0 radeon.runpm=0 amdgpu.runpm=0
        I used the runpm options because I found these:
        Bug 105573 - AddScreen/ScreenInit failed for gpu driver 0 -1 / amdgpu
        R600 + Radeon SI switchable graphics on Ubuntu 16.04+

        After the restart two thing happened:
        1. The system activates the amdgpu for the card - as expected - but still can't boot the GUI and I still get the same error:
        Code:
        [    83.962] (II) RADEON(G0): [DRI2] Setup complete
        [    83.962] (II) RADEON(G0): [DRI2]   DRI driver: radeonsi
        [    83.962] (II) RADEON(G0): [DRI2]   VDPAU driver: radeonsi
        [    83.962] (EE) RADEON(G0): failed to initialise surface manager
        [    83.962] (EE) RADEON(G0): radeon_setup_kernel_mem failed
        [    83.962] (EE) 
        Fatal server error:
        [    83.962] (EE) AddScreen/ScreenInit failed for gpu driver 0 -1
        2. The system renamed the xorg.conf file which is created by myself and put the current date after the end of the filename, so I got this:
        Code:
        xorg.conf -> xorg.conf.04132018


        So, still no success. Do you have any other idea or did I do something in the wrong way?

        Comment


        • #5
          Funnily enough starting to sound like this migration is just tons simpler with Wayland. There setting those variables in kernel line resulted in a working setup for me with no further changes.

          Comment


          • #6
            I think first I try these modification with my already existing Arch Linux and hope I can make it work.

            Comment


            • #7
              Update:
              I tried under Arch Linux the amdgpu.si_support=1 radeon.si_support=0 settings with Linux 4.16 and I also set the MODULES="amdgpu radeon" in mkinitcpio.
              1 out of 10 times the system boots and the AMDGPU works properly (I have Vulkan and other fancy stuff) but most of the time the GUI can't start with the usual error:


              Code:
              AddScreen/ScreenInit failed for gpu driver 0 -1
              It is like the russian roulette, but with amdgpu.

              Comment


              • #8
                After all this time I finally able to solve this issue, so I leave here the solution for anyone who has this TeraScale + GCN1 or 2 combo setup and could not enable amdgpu (for Vulkan and etc.). I am using Arch Linux alone so this solution was tested on this distribution.

                GCN1 - Southern Islands (SI)
                GCN2 - Sea Islands (CIK)

                1. Add kernel parameters at boot:

                For SI: radeon.si_support=0 amdgpu.si_support=1
                For CIK: radeon.cik_support=0 amdgpu.cik_support=1

                2. Set module parameters in modprobe.d

                Edit /etc/modprobe.d/amdgpu.conf file and add this:
                Code:
                options amdgpu si_support=1
                options amdgpu cik_support=1
                Edit /etc/modprobe.d/radeon.conf file and add this:
                Code:
                options radeon si_support=0
                options radeon cik_support=0
                Be sure that in /etc/mkinitcpio.conf the modconf parameter exist in the HOOKS array and regenerate initramfs:
                Code:
                mkinitcpio -P
                or
                Code:
                mkinitcpio -p linux
                3. Set the module order:

                Edit /etc/mkinitcpio.conf and set the correct module order:
                MODULES=(amdgpu radeon)

                Note: amdgpu should be in front of the radeon.
                Regenerate initramfs.

                4. Create Xorg config file

                Create 20-amdgpu.conf in /etc/X11/xorg.conf.d/ with the fllowing content:

                Code:
                Section "Device"
                Identifier "AMD"
                Driver "modesetting"
                #Option "AccelMethod" "Glamor" #valid options are XAA, EXA and Glamor. Default value varies per-GPU.
                #Option "AccelMethod" "XAA" #valid options are XAA, EXA and Glamor. Default value varies per-GPU.
                #Option "AccelMethod" "EXA" #valid options are XAA, EXA and Glamor. Default value varies per-GPU.
                Option "DRI3" "on" #enable DRI3 instead of the default DRI2-mode
                EndSection
                If there is in the /etc/X11/xorg.conf.d/ or /usr/share/X11/xorg.conf.d/ folders a file named 20-radeon.conf, rename or remove it.

                This last Xorg config file thing solved the problem finally for me. I knew the module parameter stuff, but that alone was not a stable solution.

                Sources:
                Module settings: https://wiki.archlinux.org/index.php..._(CIK)_support
                Xorg conf file: https://www.phoronix.com/forums/foru...-hd-7850/page2

                Comment

                Working...
                X