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

KyleMahlkuch kmahlkuc at linux.vnet.ibm.com
Wed Oct 9 02:45:09 AEDT 2019


Radeon support was removed due to an issue with kexec. The attached
radeon patch fixes this issue. For reference this is upstream commit
9db6c14c36fc8f7824ade95f53bcdad43df678b4

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