summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZefan Li <lizefan@huawei.com>2015-10-11 17:58:32 +0800
committerZefan Li <lizefan@huawei.com>2015-10-11 18:55:34 +0800
commit1afe6fdedef22bbaaff59f875ce7fd9205a0d2c3 (patch)
treee78c9d26b26619719eef224cd1042b3effef9f79
parent2eb3884b594136bbe2224c8fbcc35b6af296e711 (diff)
downloadlinux-3.4.y-queue-1afe6fdedef22bbaaff59f875ce7fd9205a0d2c3.tar.gz
Fix some bugs introduced in 3.4.109
-rw-r--r--patches/arm-fix-incorrect-backport-of-0b59d8806a31.patch23
-rw-r--r--patches/crypto-s390-ghash-fix-incorrect-backport-of-a1cae34e23b1.patch21
-rw-r--r--patches/drm-radeon-partially-revert-fix-vm_context-_page_table_end_addr-handling.patch82
-rw-r--r--patches/revert-drm-i915-don-t-skip-request-retirement-if-the-active-list-is-empty.patch38
-rw-r--r--patches/revert-drm-radeon-use-drm_calloc_ab-for-cs-relocs.patch36
-rw-r--r--patches/series5
6 files changed, 205 insertions, 0 deletions
diff --git a/patches/arm-fix-incorrect-backport-of-0b59d8806a31.patch b/patches/arm-fix-incorrect-backport-of-0b59d8806a31.patch
new file mode 100644
index 0000000..e305bf3
--- /dev/null
+++ b/patches/arm-fix-incorrect-backport-of-0b59d8806a31.patch
@@ -0,0 +1,23 @@
+From 56041bfe2c3c122eeb5d8065eff569e30ddcf794 Mon Sep 17 00:00:00 2001
+From: Zefan Li <lizefan@huawei.com>
+Date: Sun, 11 Oct 2015 18:45:19 +0800
+Subject: [PATCH] ARM: Fix incorrect backport of 0b59d8806a31
+
+Reported-by: Jim Faulkner <jfaulkne@ccs.neu.edu>
+Fixed-by: Nicolas Schichan <nschichan@freebox.fr>
+Signed-off-by: Zefan Li <lizefan@huawei.com>
+---
+ arch/arm/net/bpf_jit_32.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm/net/bpf_jit_32.c
++++ b/arch/arm/net/bpf_jit_32.c
+@@ -899,7 +899,7 @@ void bpf_jit_compile(struct sk_filter *f
+ if (ctx.imm_count)
+ kfree(ctx.imms);
+ #endif
+- bpf_jit_binary_free(header);
++ module_free(NULL, ctx.target);
+ goto out;
+ }
+ build_epilogue(&ctx);
diff --git a/patches/crypto-s390-ghash-fix-incorrect-backport-of-a1cae34e23b1.patch b/patches/crypto-s390-ghash-fix-incorrect-backport-of-a1cae34e23b1.patch
new file mode 100644
index 0000000..958e074
--- /dev/null
+++ b/patches/crypto-s390-ghash-fix-incorrect-backport-of-a1cae34e23b1.patch
@@ -0,0 +1,21 @@
+From b1c0b1d3a205ba28387b96848d9f6ab25a44015f Mon Sep 17 00:00:00 2001
+From: Zefan Li <lizefan@huawei.com>
+Date: Sun, 11 Oct 2015 16:27:16 +0800
+Subject: [PATCH] crypto: s390/ghash: Fix incorrect backport of a1cae34e23b1
+
+Signed-off-by: Zefan Li <lizefan@huawei.com>
+---
+ arch/s390/crypto/ghash_s390.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/s390/crypto/ghash_s390.c
++++ b/arch/s390/crypto/ghash_s390.c
+@@ -115,7 +115,7 @@ static int ghash_final(struct shash_desc
+ struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
+
+ ghash_flush(dctx);
+- memcpy(dst, dtx->icv, GHASH_BLOCK_SIZE);
++ memcpy(dst, dctx->icv, GHASH_BLOCK_SIZE);
+
+ return 0;
+ }
diff --git a/patches/drm-radeon-partially-revert-fix-vm_context-_page_table_end_addr-handling.patch b/patches/drm-radeon-partially-revert-fix-vm_context-_page_table_end_addr-handling.patch
new file mode 100644
index 0000000..2930be4
--- /dev/null
+++ b/patches/drm-radeon-partially-revert-fix-vm_context-_page_table_end_addr-handling.patch
@@ -0,0 +1,82 @@
+From 7c0411d2fabc2e2702c9871ffb603e251158b317 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Thu, 28 May 2015 15:51:59 +0200
+Subject: drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR
+ handling"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+commit 7c0411d2fabc2e2702c9871ffb603e251158b317 upstream.
+
+We have that bug for years and some users report side effects when fixing it on older hardware.
+
+So revert it for VM_CONTEXT0_PAGE_TABLE_END_ADDR, but keep it for VM 1-15.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+[lizf: Backported to 3.4: drop the change to clk.c]
+Signed-off-by: Zefan Li <lizefan@huawei.com>
+---
+ drivers/gpu/drm/radeon/evergreen.c | 2 +-
+ drivers/gpu/drm/radeon/ni.c | 2 +-
+ drivers/gpu/drm/radeon/r600.c | 2 +-
+ drivers/gpu/drm/radeon/rv770.c | 2 +-
+ drivers/gpu/drm/radeon/si.c | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/evergreen.c
++++ b/drivers/gpu/drm/radeon/evergreen.c
+@@ -1079,7 +1079,7 @@ int evergreen_pcie_gart_enable(struct ra
+ WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp);
+ WREG32(MC_VM_MB_L1_TLB3_CNTL, tmp);
+ WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
+- WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
++ WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+ WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
+ WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) |
+ RANGE_PROTECTION_FAULT_ENABLE_DEFAULT);
+--- a/drivers/gpu/drm/radeon/ni.c
++++ b/drivers/gpu/drm/radeon/ni.c
+@@ -1075,7 +1075,7 @@ int cayman_pcie_gart_enable(struct radeo
+ L2_CACHE_BIGK_FRAGMENT_SIZE(6));
+ /* setup context0 */
+ WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
+- WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
++ WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+ WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
+ WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR,
+ (u32)(rdev->dummy_page.addr >> 12));
+--- a/drivers/gpu/drm/radeon/r600.c
++++ b/drivers/gpu/drm/radeon/r600.c
+@@ -930,7 +930,7 @@ int r600_pcie_gart_enable(struct radeon_
+ WREG32(MC_VM_L1_TLB_MCB_RD_SEM_CNTL, tmp | ENABLE_SEMAPHORE_MODE);
+ WREG32(MC_VM_L1_TLB_MCB_WR_SEM_CNTL, tmp | ENABLE_SEMAPHORE_MODE);
+ WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
+- WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
++ WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+ WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
+ WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) |
+ RANGE_PROTECTION_FAULT_ENABLE_DEFAULT);
+--- a/drivers/gpu/drm/radeon/rv770.c
++++ b/drivers/gpu/drm/radeon/rv770.c
+@@ -158,7 +158,7 @@ int rv770_pcie_gart_enable(struct radeon
+ WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp);
+ WREG32(MC_VM_MB_L1_TLB3_CNTL, tmp);
+ WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
+- WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
++ WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+ WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
+ WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) |
+ RANGE_PROTECTION_FAULT_ENABLE_DEFAULT);
+--- a/drivers/gpu/drm/radeon/si.c
++++ b/drivers/gpu/drm/radeon/si.c
+@@ -2537,7 +2537,7 @@ int si_pcie_gart_enable(struct radeon_de
+ L2_CACHE_BIGK_FRAGMENT_SIZE(0));
+ /* setup context0 */
+ WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
+- WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
++ WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+ WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
+ WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR,
+ (u32)(rdev->dummy_page.addr >> 12));
diff --git a/patches/revert-drm-i915-don-t-skip-request-retirement-if-the-active-list-is-empty.patch b/patches/revert-drm-i915-don-t-skip-request-retirement-if-the-active-list-is-empty.patch
new file mode 100644
index 0000000..1ec6bd2
--- /dev/null
+++ b/patches/revert-drm-i915-don-t-skip-request-retirement-if-the-active-list-is-empty.patch
@@ -0,0 +1,38 @@
+From 245ec9d85696c3e539b23e210f248698b478379c Mon Sep 17 00:00:00 2001
+From: Jani Nikula <jani.nikula@intel.com>
+Date: Mon, 15 Jun 2015 12:59:37 +0300
+Subject: Revert "drm/i915: Don't skip request retirement if the active list is
+ empty"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+commit 245ec9d85696c3e539b23e210f248698b478379c upstream.
+
+This reverts commit 0aedb1626566efd72b369c01992ee7413c82a0c5.
+
+I messed things up while applying [1] to drm-intel-fixes. Rectify.
+
+[1] http://mid.gmane.org/1432827156-9605-1-git-send-email-ville.syrjala@linux.intel.com
+
+Fixes: 0aedb1626566 ("drm/i915: Don't skip request retirement if the active list is empty")
+Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+[lizf: Backported to 3.4: adjust context]
+Signed-off-by: Zefan Li <lizefan@huawei.com>
+---
+ drivers/gpu/drm/i915/i915_gem.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -1779,6 +1779,9 @@ i915_gem_retire_requests_ring(struct int
+ uint32_t seqno;
+ int i;
+
++ if (list_empty(&ring->request_list))
++ return;
++
+ WARN_ON(i915_verify_lists(ring->dev));
+
+ seqno = ring->get_seqno(ring);
diff --git a/patches/revert-drm-radeon-use-drm_calloc_ab-for-cs-relocs.patch b/patches/revert-drm-radeon-use-drm_calloc_ab-for-cs-relocs.patch
new file mode 100644
index 0000000..d0c1bd2
--- /dev/null
+++ b/patches/revert-drm-radeon-use-drm_calloc_ab-for-cs-relocs.patch
@@ -0,0 +1,36 @@
+From 7d2e186544bcdad49d19143d00faef26e2b6b0ee Mon Sep 17 00:00:00 2001
+From: Zefan Li <lizefan@huawei.com>
+Date: Sun, 11 Oct 2015 16:03:09 +0800
+Subject: [PATCH] Revert "drm/radeon: Use drm_calloc_ab for CS relocs"
+
+This reverts commit 961bd13539b9e7ca5d2e667668141496b7a1d6bc.
+
+Both Satoshi-san and Cal reported a kernel crash due to this commit.
+
+Reported-by: Satoshi Iwamoto <satoshi.iwamoto@nifty.ne.jp>
+Reported-by: Cal Peake <cp@absolutedigital.net>
+Signed-off-by: Zefan Li <lizefan@huawei.com>
+---
+ drivers/gpu/drm/radeon/radeon_cs.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_cs.c
++++ b/drivers/gpu/drm/radeon/radeon_cs.c
+@@ -49,7 +49,7 @@ int radeon_cs_parser_relocs(struct radeo
+ if (p->relocs_ptr == NULL) {
+ return -ENOMEM;
+ }
+- p->relocs = drm_calloc_large(p->nrelocs, sizeof(struct radeon_bo_list));
++ p->relocs = kcalloc(p->nrelocs, sizeof(struct radeon_cs_reloc), GFP_KERNEL);
+ if (p->relocs == NULL) {
+ return -ENOMEM;
+ }
+@@ -324,7 +324,7 @@ static void radeon_cs_parser_fini(struct
+ }
+ }
+ kfree(parser->track);
+- drm_free_large(parser->relocs);
++ kfree(parser->relocs);
+ kfree(parser->relocs_ptr);
+ for (i = 0; i < parser->nchunks; i++) {
+ kfree(parser->chunks[i].kdata);
diff --git a/patches/series b/patches/series
index 14f7040..6804feb 100644
--- a/patches/series
+++ b/patches/series
@@ -53,3 +53,8 @@ acpica-tables-fix-an-issue-that-facs-initialization-is-performed-twice.patch
kvm-x86-make-vapics_in_nmi_mode-atomic.patch
kvm-x86-properly-restore-lvt0.patch
9p-forgetting-to-cancel-request-on-interrupted-zero-copy-rpc.patch
+revert-drm-i915-don-t-skip-request-retirement-if-the-active-list-is-empty.patch
+revert-drm-radeon-use-drm_calloc_ab-for-cs-relocs.patch
+drm-radeon-partially-revert-fix-vm_context-_page_table_end_addr-handling.patch
+crypto-s390-ghash-fix-incorrect-backport-of-a1cae34e23b1.patch
+arm-fix-incorrect-backport-of-0b59d8806a31.patch