[OpenPower-Firmware] [PATCH] kernel: Enable radeon support for CHAICOS adapters

Joel Stanley joel at jms.id.au
Thu Oct 17 12:48:17 AEDT 2019


Hi Kyle,

On Tue, 15 Oct 2019 at 15:29, KyleMahlkuch <kmahlkuc at linux.vnet.ibm.com> wrote:
>
> Radeon support was removed due to an issue with kexec. The attached
> radeon patch fixes this issue. For reference this is upstream commit
> 9db6c14c36fc8f7824ade95f53bcdad43df678b4

Thanks for the patch. Normally we want the kernel commit sent to the
list, which I will apply to the kernel tree. I can fix it up this
time.

Which platforms do you want to support this Radeon device? I ask as
the firmware whitelist will add it to all machines, increasing the
size of the initramfs for all platforms. We might instead want to make
it per-platform.

Cheers,

Joel

>
> CHAICOS microcode was removed due to the issue with the radeon driver
> so now that microcode must be added to the firmware whitelist.
>
> Signed-off-by: Kyle Mahlkuch <Kyle.Mahlkuch at ibm.com>
> ---
>  .../0003-drm-radeon-Fix-EEH-during-kexec.patch     | 41 ++++++++++++++++++++++
>  openpower/scripts/firmware-whitelist               |  8 ++++-
>  2 files changed, 48 insertions(+), 1 deletion(-)
>  create mode 100644 openpower/linux/0003-drm-radeon-Fix-EEH-during-kexec.patch
>
> diff --git a/openpower/linux/0003-drm-radeon-Fix-EEH-during-kexec.patch b/openpower/linux/0003-drm-radeon-Fix-EEH-during-kexec.patch
> new file mode 100644
> index 0000000..5db3538
> --- /dev/null
> +++ b/openpower/linux/0003-drm-radeon-Fix-EEH-during-kexec.patch
> @@ -0,0 +1,41 @@
> +From 28430c1b6681763fff4b1affc8f0c52c1207a1e9 Mon Sep 17 00:00:00 2001
> +From: KyleMahlkuch <kmahlkuc at linux.vnet.ibm.com>
> +Date: Fri, 4 Oct 2019 16:06:15 -0500
> +Subject: [PATCH] drm/radeon: Fix EEH during kexec
> +
> +During kexec some adapters hit an EEH since they are not properly
> +shut down in the radeon_pci_shutdown() function. Adding
> +radeon_suspend_kms() fixes this issue.
> +
> +Signed-off-by: Kyle Mahlkuch <Kyle.Mahlkuch at ibm.com>
> +---
> + drivers/gpu/drm/radeon/radeon_drv.c | 8 ++++++++
> + 1 file changed, 8 insertions(+)
> +
> +diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> +index a6cbe11..15d7beb 100644
> +--- a/drivers/gpu/drm/radeon/radeon_drv.c
> ++++ b/drivers/gpu/drm/radeon/radeon_drv.c
> +@@ -349,11 +349,19 @@ static int radeon_pci_probe(struct pci_dev *pdev,
> + static void
> + radeon_pci_shutdown(struct pci_dev *pdev)
> + {
> ++      struct drm_device *ddev = pci_get_drvdata(pdev);
> ++
> +       /* if we are running in a VM, make sure the device
> +        * torn down properly on reboot/shutdown
> +        */
> +       if (radeon_device_is_virtual())
> +               radeon_pci_remove(pdev);
> ++
> ++      /* Some adapters need to be suspended before a
> ++      * shutdown occurs in order to prevent an error
> ++      * during kexec.
> ++      */
> ++      radeon_suspend_kms(ddev, true, true, false);
> + }
> +
> + static int radeon_pmops_suspend(struct device *dev)
> +--
> +1.8.3.1
> +
> diff --git a/openpower/scripts/firmware-whitelist b/openpower/scripts/firmware-whitelist
> index 3ca6e7b..9c34242 100755
> --- a/openpower/scripts/firmware-whitelist
> +++ b/openpower/scripts/firmware-whitelist
> @@ -11,7 +11,13 @@ whitelist=(     'acenic/'
>                  'cxgb4/t4fw.bin'
>                  'cxgb3/'
>                  'qed/qed_init_values_zipped-8.37.2.0.bin'
> -                'ql2500_fw.bin')
> +                'ql2500_fw.bin'
> +                'radeon/BTC_rlc.bin'
> +                'radeon/CAICOS_mc.bin'
> +                'radeon/CAICOS_me.bin'
> +                'radeon/CAICOS_pfp.bin'
> +                'radeon/CAICOS_smc.bin'
> +                'radeon/SUMO_uvd.bin')
>
>  if [ -z "${TARGET_DIR}" ] ; then
>          echo "TARGET_DIR not defined, setting to $1"
> --
> 1.8.3.1
>


More information about the OpenPower-Firmware mailing list