aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amdfalconx86/recipes-kernel/linux/files/0037-yocto-amd-drm-amdgpu-add-DCE-10-0-register-headers.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/files/0037-yocto-amd-drm-amdgpu-add-DCE-10-0-register-headers.patch')
-rw-r--r--meta-amdfalconx86/recipes-kernel/linux/files/0037-yocto-amd-drm-amdgpu-add-DCE-10-0-register-headers.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/files/0037-yocto-amd-drm-amdgpu-add-DCE-10-0-register-headers.patch b/meta-amdfalconx86/recipes-kernel/linux/files/0037-yocto-amd-drm-amdgpu-add-DCE-10-0-register-headers.patch
new file mode 100644
index 00000000..8535ac98
--- /dev/null
+++ b/meta-amdfalconx86/recipes-kernel/linux/files/0037-yocto-amd-drm-amdgpu-add-DCE-10-0-register-headers.patch
@@ -0,0 +1,51 @@
+From 704b46b07711e5459ae845bc5ef074dda2473361 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Fri, 17 Apr 2015 10:50:02 -0400
+Subject: drm/amdgpu: Do not directly dereference pointers to BIOS area.
+
+Use readb() and memcpy_fromio() accessors instead.
+
+Ported from radeon commit:
+f2c9e560b406f2f6b14b345c7da33467dee9cdf2
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sanjay R Mehta <Sanju.Mehta@amd.com>
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c
+index d938a11..cdcadf8 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c
+@@ -75,7 +75,7 @@ static bool igp_read_bios_from_vram(struct amdgpu_device *adev)
+
+ bool amdgpu_read_bios(struct amdgpu_device *adev)
+ {
+- uint8_t __iomem *bios;
++ uint8_t __iomem *bios, val1, val2;
+ size_t size;
+
+ adev->bios = NULL;
+@@ -85,15 +85,19 @@ bool amdgpu_read_bios(struct amdgpu_device *adev)
+ return false;
+ }
+
+- if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) {
++ val1 = readb(&bios[0]);
++ val2 = readb(&bios[1]);
++
++ if (size == 0 || val1 != 0x55 || val2 != 0xaa) {
+ pci_unmap_rom(adev->pdev, bios);
+ return false;
+ }
+- adev->bios = kmemdup(bios, size, GFP_KERNEL);
++ adev->bios = kzalloc(size, GFP_KERNEL);
+ if (adev->bios == NULL) {
+ pci_unmap_rom(adev->pdev, bios);
+ return false;
+ }
++ memcpy_fromio(adev->bios, bios, size);
+ pci_unmap_rom(adev->pdev, bios);
+ return true;
+ }
+--
+cgit v0.10.2
+