Linux v4.9.5
This commit is contained in:
parent
7cf4b8dbe0
commit
7ecd61efd0
|
@ -1,141 +0,0 @@
|
|||
From c7c7030a020405d5826c03839e38986e0f78f2ea Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Tue, 13 Dec 2016 10:25:10 +0000
|
||||
Subject: [PATCH] efi: prune invalid memory map entries
|
||||
|
||||
Some machines, such as the Lenovo ThinkPad W541 with firmware GNET80WW
|
||||
(2.28), include memory map entries with phys_addr=0x0 and num_pages=0.
|
||||
|
||||
Currently the log output for this case (with efi=debug) looks like:
|
||||
|
||||
[ 0.000000] efi: mem45: [Reserved | | | | | | | | | | | | ] range=[0x0000000000000000-0xffffffffffffffff] (0MB)
|
||||
|
||||
This is clearly wrong, and also not as informative as it could be. This
|
||||
patch changes it so that if we find obviously invalid memory map
|
||||
entries, we print an error and those entries. It also detects the
|
||||
display of the address range calculation overflow, so the new output is:
|
||||
|
||||
[ 0.000000] efi: [Firmware Bug]: Invalid EFI memory map entries:
|
||||
[ 0.000000] efi: mem45: [Reserved | | | | | | | | | | | | ] range=[0x0000000000000000-0x0000000000000000] (invalid)
|
||||
|
||||
It also detects memory map sizes that would overflow the physical
|
||||
address, for example phys_addr=0xfffffffffffff000 and
|
||||
num_pages=0x0200000000000001, and prints:
|
||||
|
||||
[ 0.000000] efi: [Firmware Bug]: Invalid EFI memory map entries:
|
||||
[ 0.000000] efi: mem45: [Reserved | | | | | | | | | | | | ] range=[phys_addr=0xfffffffffffff000-0x20ffffffffffffffff] (invalid)
|
||||
|
||||
It then removes these entries from the memory map.
|
||||
|
||||
Cc: Matt Fleming <matt@codeblueprint.co.uk>
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
[ardb: refactor for clarity with no functional changes, avoid PAGE_SHIFT]
|
||||
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||||
---
|
||||
arch/x86/platform/efi/efi.c | 70 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
include/linux/efi.h | 1 +
|
||||
2 files changed, 71 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
|
||||
index bf99aa7..0a1550b 100644
|
||||
--- a/arch/x86/platform/efi/efi.c
|
||||
+++ b/arch/x86/platform/efi/efi.c
|
||||
@@ -210,6 +210,74 @@ int __init efi_memblock_x86_reserve_range(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+#define OVERFLOW_ADDR_SHIFT (64 - EFI_PAGE_SHIFT)
|
||||
+#define OVERFLOW_ADDR_MASK (U64_MAX << OVERFLOW_ADDR_SHIFT)
|
||||
+#define U64_HIGH_BIT (~(U64_MAX >> 1))
|
||||
+
|
||||
+static bool __init efi_memmap_entry_valid(const efi_memory_desc_t *md, int i)
|
||||
+{
|
||||
+ static __initdata bool once = true;
|
||||
+ u64 end = (md->num_pages << EFI_PAGE_SHIFT) + md->phys_addr - 1;
|
||||
+ u64 end_hi = 0;
|
||||
+ char buf[64];
|
||||
+
|
||||
+ if (md->num_pages == 0) {
|
||||
+ end = 0;
|
||||
+ } else if (md->num_pages > EFI_PAGES_MAX ||
|
||||
+ EFI_PAGES_MAX - md->num_pages <
|
||||
+ (md->phys_addr >> EFI_PAGE_SHIFT)) {
|
||||
+ end_hi = (md->num_pages & OVERFLOW_ADDR_MASK)
|
||||
+ >> OVERFLOW_ADDR_SHIFT;
|
||||
+
|
||||
+ if ((md->phys_addr & U64_HIGH_BIT) && !(end & U64_HIGH_BIT))
|
||||
+ end_hi += 1;
|
||||
+ } else {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ if (once) {
|
||||
+ pr_warn(FW_BUG "Invalid EFI memory map entries:\n");
|
||||
+ once = false;
|
||||
+ }
|
||||
+
|
||||
+ if (end_hi) {
|
||||
+ pr_warn("mem%02u: %s range=[0x%016llx-0x%llx%016llx] (invalid)\n",
|
||||
+ i, efi_md_typeattr_format(buf, sizeof(buf), md),
|
||||
+ md->phys_addr, end_hi, end);
|
||||
+ } else {
|
||||
+ pr_warn("mem%02u: %s range=[0x%016llx-0x%016llx] (invalid)\n",
|
||||
+ i, efi_md_typeattr_format(buf, sizeof(buf), md),
|
||||
+ md->phys_addr, end);
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+static void __init efi_clean_memmap(void)
|
||||
+{
|
||||
+ efi_memory_desc_t *out = efi.memmap.map;
|
||||
+ const efi_memory_desc_t *in = out;
|
||||
+ const efi_memory_desc_t *end = efi.memmap.map_end;
|
||||
+ int i, n_removal;
|
||||
+
|
||||
+ for (i = n_removal = 0; in < end; i++) {
|
||||
+ if (efi_memmap_entry_valid(in, i)) {
|
||||
+ if (out != in)
|
||||
+ memcpy(out, in, efi.memmap.desc_size);
|
||||
+ out = (void *)out + efi.memmap.desc_size;
|
||||
+ } else {
|
||||
+ n_removal++;
|
||||
+ }
|
||||
+ in = (void *)in + efi.memmap.desc_size;
|
||||
+ }
|
||||
+
|
||||
+ if (n_removal > 0) {
|
||||
+ u64 size = efi.memmap.nr_map - n_removal;
|
||||
+
|
||||
+ pr_warn("Removing %d invalid memory map entries.\n", n_removal);
|
||||
+ efi_memmap_install(efi.memmap.phys_map, size);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void __init efi_print_memmap(void)
|
||||
{
|
||||
efi_memory_desc_t *md;
|
||||
@@ -472,6 +540,8 @@ void __init efi_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
+ efi_clean_memmap();
|
||||
+
|
||||
if (efi_enabled(EFI_DBG))
|
||||
efi_print_memmap();
|
||||
}
|
||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||
index 4c1b3ea..712a3aa 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -103,6 +103,7 @@ typedef struct {
|
||||
|
||||
#define EFI_PAGE_SHIFT 12
|
||||
#define EFI_PAGE_SIZE (1UL << EFI_PAGE_SHIFT)
|
||||
+#define EFI_PAGES_MAX (U64_MAX >> EFI_PAGE_SHIFT)
|
||||
|
||||
typedef struct {
|
||||
u32 type;
|
||||
--
|
||||
2.9.3
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 9f31204f829da97f99f7aacf30f0ddc26e456df7 Mon Sep 17 00:00:00 2001
|
||||
From 12e2c6926a6b03e070fc58271cf41a482de06467 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Fri, 9 Mar 2012 09:28:15 -0500
|
||||
Subject: [PATCH 06/20] Restrict /dev/mem and /dev/kmem when module loading is
|
||||
|
@ -8,16 +8,17 @@ Allowing users to write to address space makes it possible for the kernel
|
|||
to be subverted, avoiding module loading restrictions. Prevent this when
|
||||
any restrictions have been imposed on loading modules.
|
||||
|
||||
[labbott: Rebased again]
|
||||
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
---
|
||||
drivers/char/mem.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
|
||||
index 7f1a7ab5850d..d6a6f05fbc1c 100644
|
||||
index 6d9cc2d39d22..bda271d022a0 100644
|
||||
--- a/drivers/char/mem.c
|
||||
+++ b/drivers/char/mem.c
|
||||
@@ -164,6 +164,9 @@ static ssize_t write_mem(struct file *file, const char __user *buf,
|
||||
@@ -163,6 +163,9 @@ static ssize_t write_mem(struct file *file, const char __user *buf,
|
||||
if (p != *ppos)
|
||||
return -EFBIG;
|
||||
|
||||
|
@ -27,9 +28,9 @@ index 7f1a7ab5850d..d6a6f05fbc1c 100644
|
|||
if (!valid_phys_addr_range(p, count))
|
||||
return -EFAULT;
|
||||
|
||||
@@ -516,6 +519,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
|
||||
if (!pfn_valid(PFN_DOWN(p)))
|
||||
return -EIO;
|
||||
@@ -513,6 +516,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
|
||||
char *kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */
|
||||
int err = 0;
|
||||
|
||||
+ if (secure_modules())
|
||||
+ return -EPERM;
|
||||
|
@ -38,5 +39,5 @@ index 7f1a7ab5850d..d6a6f05fbc1c 100644
|
|||
unsigned long to_write = min_t(unsigned long, count,
|
||||
(unsigned long)high_memory - p);
|
||||
--
|
||||
2.9.3
|
||||
2.11.0
|
||||
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
From 30772942cc1095c3129eecfa182e2c568e566b9d Mon Sep 17 00:00:00 2001
|
||||
From: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Date: Thu, 13 Oct 2016 11:54:31 +0300
|
||||
Subject: [PATCH] drm/vc4: Fix a couple error codes in vc4_cl_lookup_bos()
|
||||
|
||||
If the allocation fails the current code returns success. If
|
||||
copy_from_user() fails it returns the number of bytes remaining instead
|
||||
of -EFAULT.
|
||||
|
||||
Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
|
||||
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Reviewed-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_gem.c | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
|
||||
index ae1609e..4050540 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_gem.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
|
||||
@@ -548,14 +548,15 @@ vc4_cl_lookup_bos(struct drm_device *dev,
|
||||
|
||||
handles = drm_malloc_ab(exec->bo_count, sizeof(uint32_t));
|
||||
if (!handles) {
|
||||
+ ret = -ENOMEM;
|
||||
DRM_ERROR("Failed to allocate incoming GEM handles\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
- ret = copy_from_user(handles,
|
||||
- (void __user *)(uintptr_t)args->bo_handles,
|
||||
- exec->bo_count * sizeof(uint32_t));
|
||||
- if (ret) {
|
||||
+ if (copy_from_user(handles,
|
||||
+ (void __user *)(uintptr_t)args->bo_handles,
|
||||
+ exec->bo_count * sizeof(uint32_t))) {
|
||||
+ ret = -EFAULT;
|
||||
DRM_ERROR("Failed to copy in GEM handles\n");
|
||||
goto fail;
|
||||
}
|
||||
--
|
||||
2.9.3
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
From 7192c54a68013f6058b1bb505645fcd07015191c Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
Date: Thu, 5 Jan 2017 13:02:37 -0500
|
||||
Subject: drm/amdgpu: drop verde dpm quirks
|
||||
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
|
||||
commit 7192c54a68013f6058b1bb505645fcd07015191c upstream.
|
||||
|
||||
Port of radeon change to amdgpu.
|
||||
|
||||
Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/gpu/drm/amd/amdgpu/si_dpm.c | 13 -------------
|
||||
1 file changed, 13 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/amd/amdgpu/si_dpm.c
|
||||
+++ b/drivers/gpu/drm/amd/amdgpu/si_dpm.c
|
||||
@@ -3485,19 +3485,6 @@ static void si_apply_state_adjust_rules(
|
||||
(adev->pdev->device == 0x6817) ||
|
||||
(adev->pdev->device == 0x6806))
|
||||
max_mclk = 120000;
|
||||
- } else if (adev->asic_type == CHIP_VERDE) {
|
||||
- if ((adev->pdev->revision == 0x81) ||
|
||||
- (adev->pdev->revision == 0x83) ||
|
||||
- (adev->pdev->revision == 0x87) ||
|
||||
- (adev->pdev->device == 0x6820) ||
|
||||
- (adev->pdev->device == 0x6821) ||
|
||||
- (adev->pdev->device == 0x6822) ||
|
||||
- (adev->pdev->device == 0x6823) ||
|
||||
- (adev->pdev->device == 0x682A) ||
|
||||
- (adev->pdev->device == 0x682B)) {
|
||||
- max_sclk = 75000;
|
||||
- max_mclk = 80000;
|
||||
- }
|
||||
} else if (adev->asic_type == CHIP_OLAND) {
|
||||
if ((adev->pdev->revision == 0xC7) ||
|
||||
(adev->pdev->revision == 0x80) ||
|
|
@ -1,110 +0,0 @@
|
|||
From 5165484b02f2cbedb5bf3a41ff5e8ae16069016c Mon Sep 17 00:00:00 2001
|
||||
From: Flora Cui <Flora.Cui@amd.com>
|
||||
Date: Thu, 15 Dec 2016 13:43:59 +0800
|
||||
Subject: drm/amdgpu: update si kicker smc firmware
|
||||
|
||||
From: Flora Cui <Flora.Cui@amd.com>
|
||||
|
||||
commit 5165484b02f2cbedb5bf3a41ff5e8ae16069016c upstream.
|
||||
|
||||
Use the appropriate smc firmware for each chip revision.
|
||||
Using the wrong one can cause stability issues.
|
||||
|
||||
Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
|
||||
Signed-off-by: Flora Cui <Flora.Cui@amd.com>
|
||||
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/gpu/drm/amd/amdgpu/si_dpm.c | 57 +++++++++++++++++-------------------
|
||||
1 file changed, 28 insertions(+), 29 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/amd/amdgpu/si_dpm.c
|
||||
+++ b/drivers/gpu/drm/amd/amdgpu/si_dpm.c
|
||||
@@ -56,7 +56,6 @@
|
||||
#define BIOS_SCRATCH_4 0x5cd
|
||||
|
||||
MODULE_FIRMWARE("radeon/tahiti_smc.bin");
|
||||
-MODULE_FIRMWARE("radeon/tahiti_k_smc.bin");
|
||||
MODULE_FIRMWARE("radeon/pitcairn_smc.bin");
|
||||
MODULE_FIRMWARE("radeon/pitcairn_k_smc.bin");
|
||||
MODULE_FIRMWARE("radeon/verde_smc.bin");
|
||||
@@ -7685,49 +7684,49 @@ static int si_dpm_init_microcode(struct
|
||||
chip_name = "tahiti";
|
||||
break;
|
||||
case CHIP_PITCAIRN:
|
||||
- if ((adev->pdev->revision == 0x81) ||
|
||||
- (adev->pdev->device == 0x6810) ||
|
||||
- (adev->pdev->device == 0x6811) ||
|
||||
- (adev->pdev->device == 0x6816) ||
|
||||
- (adev->pdev->device == 0x6817) ||
|
||||
- (adev->pdev->device == 0x6806))
|
||||
+ if ((adev->pdev->revision == 0x81) &&
|
||||
+ ((adev->pdev->device == 0x6810) ||
|
||||
+ (adev->pdev->device == 0x6811)))
|
||||
chip_name = "pitcairn_k";
|
||||
else
|
||||
chip_name = "pitcairn";
|
||||
break;
|
||||
case CHIP_VERDE:
|
||||
- if ((adev->pdev->revision == 0x81) ||
|
||||
- (adev->pdev->revision == 0x83) ||
|
||||
- (adev->pdev->revision == 0x87) ||
|
||||
- (adev->pdev->device == 0x6820) ||
|
||||
- (adev->pdev->device == 0x6821) ||
|
||||
- (adev->pdev->device == 0x6822) ||
|
||||
- (adev->pdev->device == 0x6823) ||
|
||||
- (adev->pdev->device == 0x682A) ||
|
||||
- (adev->pdev->device == 0x682B))
|
||||
+ if (((adev->pdev->device == 0x6820) &&
|
||||
+ ((adev->pdev->revision == 0x81) ||
|
||||
+ (adev->pdev->revision == 0x83))) ||
|
||||
+ ((adev->pdev->device == 0x6821) &&
|
||||
+ ((adev->pdev->revision == 0x83) ||
|
||||
+ (adev->pdev->revision == 0x87))) ||
|
||||
+ ((adev->pdev->revision == 0x87) &&
|
||||
+ ((adev->pdev->device == 0x6823) ||
|
||||
+ (adev->pdev->device == 0x682b))))
|
||||
chip_name = "verde_k";
|
||||
else
|
||||
chip_name = "verde";
|
||||
break;
|
||||
case CHIP_OLAND:
|
||||
- if ((adev->pdev->revision == 0xC7) ||
|
||||
- (adev->pdev->revision == 0x80) ||
|
||||
- (adev->pdev->revision == 0x81) ||
|
||||
- (adev->pdev->revision == 0x83) ||
|
||||
- (adev->pdev->revision == 0x87) ||
|
||||
- (adev->pdev->device == 0x6604) ||
|
||||
- (adev->pdev->device == 0x6605))
|
||||
+ if (((adev->pdev->revision == 0x81) &&
|
||||
+ ((adev->pdev->device == 0x6600) ||
|
||||
+ (adev->pdev->device == 0x6604) ||
|
||||
+ (adev->pdev->device == 0x6605) ||
|
||||
+ (adev->pdev->device == 0x6610))) ||
|
||||
+ ((adev->pdev->revision == 0x83) &&
|
||||
+ (adev->pdev->device == 0x6610)))
|
||||
chip_name = "oland_k";
|
||||
else
|
||||
chip_name = "oland";
|
||||
break;
|
||||
case CHIP_HAINAN:
|
||||
- if ((adev->pdev->revision == 0x81) ||
|
||||
- (adev->pdev->revision == 0x83) ||
|
||||
- (adev->pdev->revision == 0xC3) ||
|
||||
- (adev->pdev->device == 0x6664) ||
|
||||
- (adev->pdev->device == 0x6665) ||
|
||||
- (adev->pdev->device == 0x6667))
|
||||
+ if (((adev->pdev->revision == 0x81) &&
|
||||
+ (adev->pdev->device == 0x6660)) ||
|
||||
+ ((adev->pdev->revision == 0x83) &&
|
||||
+ ((adev->pdev->device == 0x6660) ||
|
||||
+ (adev->pdev->device == 0x6663) ||
|
||||
+ (adev->pdev->device == 0x6665) ||
|
||||
+ (adev->pdev->device == 0x6667))) ||
|
||||
+ ((adev->pdev->revision == 0xc3) &&
|
||||
+ (adev->pdev->device == 0x6665)))
|
||||
chip_name = "hainan_k";
|
||||
else
|
||||
chip_name = "hainan";
|
|
@ -1,44 +0,0 @@
|
|||
From 8a08403bcb39f5d0e733bcf59a8a74f16b538f6e Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
Date: Thu, 5 Jan 2017 12:39:01 -0500
|
||||
Subject: drm/radeon: drop verde dpm quirks
|
||||
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
|
||||
commit 8a08403bcb39f5d0e733bcf59a8a74f16b538f6e upstream.
|
||||
|
||||
fixes:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=98897
|
||||
https://bugs.launchpad.net/bugs/1651981
|
||||
|
||||
Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Cc: Adrian Fiergolski <A.Fiergolski@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/gpu/drm/radeon/si_dpm.c | 13 -------------
|
||||
1 file changed, 13 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/radeon/si_dpm.c
|
||||
+++ b/drivers/gpu/drm/radeon/si_dpm.c
|
||||
@@ -3008,19 +3008,6 @@ static void si_apply_state_adjust_rules(
|
||||
(rdev->pdev->device == 0x6817) ||
|
||||
(rdev->pdev->device == 0x6806))
|
||||
max_mclk = 120000;
|
||||
- } else if (rdev->family == CHIP_VERDE) {
|
||||
- if ((rdev->pdev->revision == 0x81) ||
|
||||
- (rdev->pdev->revision == 0x83) ||
|
||||
- (rdev->pdev->revision == 0x87) ||
|
||||
- (rdev->pdev->device == 0x6820) ||
|
||||
- (rdev->pdev->device == 0x6821) ||
|
||||
- (rdev->pdev->device == 0x6822) ||
|
||||
- (rdev->pdev->device == 0x6823) ||
|
||||
- (rdev->pdev->device == 0x682A) ||
|
||||
- (rdev->pdev->device == 0x682B)) {
|
||||
- max_sclk = 75000;
|
||||
- max_mclk = 80000;
|
||||
- }
|
||||
} else if (rdev->family == CHIP_OLAND) {
|
||||
if ((rdev->pdev->revision == 0xC7) ||
|
||||
(rdev->pdev->revision == 0x80) ||
|
|
@ -1,124 +0,0 @@
|
|||
From 6458bd4dfd9414cba5804eb9907fe2a824278c34 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
Date: Thu, 5 Jan 2017 12:15:52 -0500
|
||||
Subject: drm/radeon: update smc firmware selection for SI
|
||||
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
|
||||
commit 6458bd4dfd9414cba5804eb9907fe2a824278c34 upstream.
|
||||
|
||||
Use the appropriate smc firmware for each chip revision.
|
||||
Using the wrong one can cause stability issues.
|
||||
|
||||
Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/gpu/drm/radeon/si.c | 60 ++++++++++++++++++++------------------------
|
||||
1 file changed, 28 insertions(+), 32 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/radeon/si.c
|
||||
+++ b/drivers/gpu/drm/radeon/si.c
|
||||
@@ -50,7 +50,6 @@ MODULE_FIRMWARE("radeon/tahiti_ce.bin");
|
||||
MODULE_FIRMWARE("radeon/tahiti_mc.bin");
|
||||
MODULE_FIRMWARE("radeon/tahiti_rlc.bin");
|
||||
MODULE_FIRMWARE("radeon/tahiti_smc.bin");
|
||||
-MODULE_FIRMWARE("radeon/tahiti_k_smc.bin");
|
||||
|
||||
MODULE_FIRMWARE("radeon/PITCAIRN_pfp.bin");
|
||||
MODULE_FIRMWARE("radeon/PITCAIRN_me.bin");
|
||||
@@ -1657,9 +1656,6 @@ static int si_init_microcode(struct rade
|
||||
switch (rdev->family) {
|
||||
case CHIP_TAHITI:
|
||||
chip_name = "TAHITI";
|
||||
- /* XXX: figure out which Tahitis need the new ucode */
|
||||
- if (0)
|
||||
- new_smc = true;
|
||||
new_chip_name = "tahiti";
|
||||
pfp_req_size = SI_PFP_UCODE_SIZE * 4;
|
||||
me_req_size = SI_PM4_UCODE_SIZE * 4;
|
||||
@@ -1671,12 +1667,9 @@ static int si_init_microcode(struct rade
|
||||
break;
|
||||
case CHIP_PITCAIRN:
|
||||
chip_name = "PITCAIRN";
|
||||
- if ((rdev->pdev->revision == 0x81) ||
|
||||
- (rdev->pdev->device == 0x6810) ||
|
||||
- (rdev->pdev->device == 0x6811) ||
|
||||
- (rdev->pdev->device == 0x6816) ||
|
||||
- (rdev->pdev->device == 0x6817) ||
|
||||
- (rdev->pdev->device == 0x6806))
|
||||
+ if ((rdev->pdev->revision == 0x81) &&
|
||||
+ ((rdev->pdev->device == 0x6810) ||
|
||||
+ (rdev->pdev->device == 0x6811)))
|
||||
new_smc = true;
|
||||
new_chip_name = "pitcairn";
|
||||
pfp_req_size = SI_PFP_UCODE_SIZE * 4;
|
||||
@@ -1689,15 +1682,15 @@ static int si_init_microcode(struct rade
|
||||
break;
|
||||
case CHIP_VERDE:
|
||||
chip_name = "VERDE";
|
||||
- if ((rdev->pdev->revision == 0x81) ||
|
||||
- (rdev->pdev->revision == 0x83) ||
|
||||
- (rdev->pdev->revision == 0x87) ||
|
||||
- (rdev->pdev->device == 0x6820) ||
|
||||
- (rdev->pdev->device == 0x6821) ||
|
||||
- (rdev->pdev->device == 0x6822) ||
|
||||
- (rdev->pdev->device == 0x6823) ||
|
||||
- (rdev->pdev->device == 0x682A) ||
|
||||
- (rdev->pdev->device == 0x682B))
|
||||
+ if (((rdev->pdev->device == 0x6820) &&
|
||||
+ ((rdev->pdev->revision == 0x81) ||
|
||||
+ (rdev->pdev->revision == 0x83))) ||
|
||||
+ ((rdev->pdev->device == 0x6821) &&
|
||||
+ ((rdev->pdev->revision == 0x83) ||
|
||||
+ (rdev->pdev->revision == 0x87))) ||
|
||||
+ ((rdev->pdev->revision == 0x87) &&
|
||||
+ ((rdev->pdev->device == 0x6823) ||
|
||||
+ (rdev->pdev->device == 0x682b))))
|
||||
new_smc = true;
|
||||
new_chip_name = "verde";
|
||||
pfp_req_size = SI_PFP_UCODE_SIZE * 4;
|
||||
@@ -1710,13 +1703,13 @@ static int si_init_microcode(struct rade
|
||||
break;
|
||||
case CHIP_OLAND:
|
||||
chip_name = "OLAND";
|
||||
- if ((rdev->pdev->revision == 0xC7) ||
|
||||
- (rdev->pdev->revision == 0x80) ||
|
||||
- (rdev->pdev->revision == 0x81) ||
|
||||
- (rdev->pdev->revision == 0x83) ||
|
||||
- (rdev->pdev->revision == 0x87) ||
|
||||
- (rdev->pdev->device == 0x6604) ||
|
||||
- (rdev->pdev->device == 0x6605))
|
||||
+ if (((rdev->pdev->revision == 0x81) &&
|
||||
+ ((rdev->pdev->device == 0x6600) ||
|
||||
+ (rdev->pdev->device == 0x6604) ||
|
||||
+ (rdev->pdev->device == 0x6605) ||
|
||||
+ (rdev->pdev->device == 0x6610))) ||
|
||||
+ ((rdev->pdev->revision == 0x83) &&
|
||||
+ (rdev->pdev->device == 0x6610)))
|
||||
new_smc = true;
|
||||
new_chip_name = "oland";
|
||||
pfp_req_size = SI_PFP_UCODE_SIZE * 4;
|
||||
@@ -1728,12 +1721,15 @@ static int si_init_microcode(struct rade
|
||||
break;
|
||||
case CHIP_HAINAN:
|
||||
chip_name = "HAINAN";
|
||||
- if ((rdev->pdev->revision == 0x81) ||
|
||||
- (rdev->pdev->revision == 0x83) ||
|
||||
- (rdev->pdev->revision == 0xC3) ||
|
||||
- (rdev->pdev->device == 0x6664) ||
|
||||
- (rdev->pdev->device == 0x6665) ||
|
||||
- (rdev->pdev->device == 0x6667))
|
||||
+ if (((rdev->pdev->revision == 0x81) &&
|
||||
+ (rdev->pdev->device == 0x6660)) ||
|
||||
+ ((rdev->pdev->revision == 0x83) &&
|
||||
+ ((rdev->pdev->device == 0x6660) ||
|
||||
+ (rdev->pdev->device == 0x6663) ||
|
||||
+ (rdev->pdev->device == 0x6665) ||
|
||||
+ (rdev->pdev->device == 0x6667))) ||
|
||||
+ ((rdev->pdev->revision == 0xc3) &&
|
||||
+ (rdev->pdev->device == 0x6665)))
|
||||
new_smc = true;
|
||||
new_chip_name = "hainan";
|
||||
pfp_req_size = SI_PFP_UCODE_SIZE * 4;
|
|
@ -1,39 +0,0 @@
|
|||
From 14221cc45caad2fcab3a8543234bb7eda9b540d5 Mon Sep 17 00:00:00 2001
|
||||
From: Artur Molchanov <arturmolchanov@gmail.com>
|
||||
Date: Fri, 30 Dec 2016 19:46:36 +0300
|
||||
Subject: bridge: netfilter: Fix dropping packets that moving through bridge
|
||||
interface
|
||||
|
||||
Problem:
|
||||
br_nf_pre_routing_finish() calls itself instead of
|
||||
br_nf_pre_routing_finish_bridge(). Due to this bug reverse path filter drops
|
||||
packets that go through bridge interface.
|
||||
|
||||
User impact:
|
||||
Local docker containers with bridge network can not communicate with each
|
||||
other.
|
||||
|
||||
Fixes: c5136b15ea36 ("netfilter: bridge: add and use br_nf_hook_thresh")
|
||||
Signed-off-by: Artur Molchanov <artur.molchanov@synesis.ru>
|
||||
Acked-by: Florian Westphal <fw@strlen.de>
|
||||
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
---
|
||||
net/bridge/br_netfilter_hooks.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c
|
||||
index b12501a..135cc8a 100644
|
||||
--- a/net/bridge/br_netfilter_hooks.c
|
||||
+++ b/net/bridge/br_netfilter_hooks.c
|
||||
@@ -399,7 +399,7 @@ bridged_dnat:
|
||||
br_nf_hook_thresh(NF_BR_PRE_ROUTING,
|
||||
net, sk, skb, skb->dev,
|
||||
NULL,
|
||||
- br_nf_pre_routing_finish);
|
||||
+ br_nf_pre_routing_finish_bridge);
|
||||
return 0;
|
||||
}
|
||||
ether_addr_copy(eth_hdr(skb)->h_dest, dev->dev_addr);
|
||||
--
|
||||
cgit v0.12
|
||||
|
21
kernel.spec
21
kernel.spec
|
@ -42,7 +42,7 @@ Summary: The Linux kernel
|
|||
# For non-released -rc kernels, this will be appended after the rcX and
|
||||
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
||||
#
|
||||
%global baserelease 201
|
||||
%global baserelease 200
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# base_sublevel is the kernel version we're starting with and patching
|
||||
|
@ -54,7 +54,7 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 4
|
||||
%define stable_update 5
|
||||
# Set rpm version accordingly
|
||||
%if 0%{?stable_update}
|
||||
%define stablerev %{stable_update}
|
||||
|
@ -522,8 +522,6 @@ Patch430: ARM-tegra-usb-no-reset.patch
|
|||
|
||||
Patch431: bcm2837-initial-support.patch
|
||||
|
||||
Patch432: bcm283x-vc4-fixes.patch
|
||||
|
||||
Patch433: bcm283x-fixes.patch
|
||||
|
||||
# http://www.spinics.net/lists/linux-mmc/msg41151.html
|
||||
|
@ -625,24 +623,12 @@ Patch665: netfilter-x_tables-deal-with-bogus-nextoffset-values.patch
|
|||
#ongoing complaint, full discussion delayed until ksummit/plumbers
|
||||
Patch849: 0001-iio-Use-event-header-from-kernel-tree.patch
|
||||
|
||||
# Work around thinkpad firmware memory layout issues and efi_mem_reserve()
|
||||
Patch850: 0001-efi-prune-invalid-memory-map-entries.patch
|
||||
|
||||
# Request from dwalsh
|
||||
Patch851: selinux-namespace-fix.patch
|
||||
|
||||
#rhbz 1390308
|
||||
Patch852: nouveau-add-maxwell-to-backlight-init.patch
|
||||
|
||||
# Possible ATI fixes?
|
||||
Patch853: drm-amdgpu-drop-verde-dpm-quirks.patch
|
||||
Patch854: drm-amdgpu-update-si-kicker-smc-firmware.patch
|
||||
Patch855: drm-radeon-drop-verde-dpm-quirks.patch
|
||||
Patch856: drm-radeon-update-smc-firmware-selection-for-si.patch
|
||||
|
||||
#rhbz 1414068
|
||||
Patch857: k8s-fix.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
%endif
|
||||
|
@ -2190,6 +2176,9 @@ fi
|
|||
#
|
||||
#
|
||||
%changelog
|
||||
* Fri Jan 20 2017 Laura Abbott <labbott@redhat.com> - 4.9.5-200
|
||||
- Linux v4.9.5
|
||||
|
||||
* Tue Jan 17 2017 Laura Abbott <labbott@fedoraproject.org>
|
||||
- Fix kubernetes networking issue (rhbz 1414068)
|
||||
|
||||
|
|
2
sources
2
sources
|
@ -1,3 +1,3 @@
|
|||
SHA512 (linux-4.9.tar.xz) = bf67ff812cc3cb7e5059e82cc5db0d9a7c5637f7ed9a42e4730c715bf7047c81ed3a571225f92a33ef0b6d65f35595bc32d773356646df2627da55e9bc7f1f1a
|
||||
SHA512 (perf-man-4.9.tar.gz) = d23bb3da1eadd6623fddbf4696948de7675f3dcf57c711a7427dd7ae111394f58d8f42752938bbea7cd219f1e7f6f116fc67a1c74f769711063940a065f37b99
|
||||
SHA512 (patch-4.9.4.xz) = d6a81ef416068a92bfa5a6a6156cfc50e9c4c44ac6343c076551376f0ce5be486147abf7aa1eed48c3f10ef5d97d3880924c56b70ff4b92faae106d994a25e48
|
||||
SHA512 (patch-4.9.5.xz) = 1da3b136478103eeabcdc02fae60ba75f3ff0a07835e47a5fbf033761fcaab2400e85184083f883b3c652f031e6834533c63c9c2b46bbe09a81ed0baa1369765
|
||||
|
|
Loading…
Reference in New Issue