-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
16 changed files
with
910 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
From 0bbf7dded241dc90f2f63ed89ea8884f3c2dd37f Mon Sep 17 00:00:00 2001 | ||
From 440f5aa9cc713a5ad3eb5eb2c121b0e03b9f5032 Mon Sep 17 00:00:00 2001 | ||
From: "Jan Alexander Steffens (heftig)" <[email protected]> | ||
Date: Mon, 16 Sep 2019 04:53:20 +0200 | ||
Subject: [PATCH 1/6] ZEN: Add sysctl and CONFIG to disallow unprivileged | ||
Subject: [PATCH 01/13] ZEN: Add sysctl and CONFIG to disallow unprivileged | ||
CLONE_NEWUSER | ||
|
||
Our default behavior continues to match the vanilla kernel. | ||
|
4 changes: 2 additions & 2 deletions
4
0002-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
From 62285c8ffeb4318bad4686ab794f43a82164514b Mon Sep 17 00:00:00 2001 | ||
From ccd811432798cc548d3796fde7caade188d23bd8 Mon Sep 17 00:00:00 2001 | ||
From: "Jan Alexander Steffens (heftig)" <[email protected]> | ||
Date: Tue, 24 Dec 2019 06:16:39 +0100 | ||
Subject: [PATCH 2/6] iwlwifi: pcie: restore support for Killer Qu C0 NICs | ||
Subject: [PATCH 02/13] iwlwifi: pcie: restore support for Killer Qu C0 NICs | ||
|
||
Commit 809805a820c6 ("iwlwifi: pcie: move some cfg mangling from | ||
trans_pcie_alloc to probe") refactored the cfg mangling. Unfortunately, | ||
|
6 changes: 3 additions & 3 deletions
6
0003-iwlwifi-mvm-Do-not-require-PHY_SKU-NVM-section-for-3.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
From 0e6fb279c7fc6fc818942f668f731946286c959c Mon Sep 17 00:00:00 2001 | ||
From b0dbc3d2f076fa5acee310b34534b44f15ae4836 Mon Sep 17 00:00:00 2001 | ||
From: Dan Moulding <[email protected]> | ||
Date: Tue, 28 Jan 2020 02:31:07 -0700 | ||
Subject: [PATCH 3/6] iwlwifi: mvm: Do not require PHY_SKU NVM section for 3168 | ||
devices | ||
Subject: [PATCH 03/13] iwlwifi: mvm: Do not require PHY_SKU NVM section for | ||
3168 devices | ||
|
||
The logic for checking required NVM sections was recently fixed in | ||
commit b3f20e098293 ("iwlwifi: mvm: fix NVM check for 3168 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
From 7af5e53f87d728579cba99568717a6af3625184b Mon Sep 17 00:00:00 2001 | ||
From 1533cd73061e99ed6dd58cba03da2b762a616a95 Mon Sep 17 00:00:00 2001 | ||
From: Chris Wilson <[email protected]> | ||
Date: Sun, 2 Feb 2020 15:39:34 +0000 | ||
Subject: [PATCH 4/6] drm/i915: Wean off drm_pci_alloc/drm_pci_free | ||
Subject: [PATCH 04/13] drm/i915: Wean off drm_pci_alloc/drm_pci_free | ||
|
||
drm_pci_alloc and drm_pci_free are just very thin wrappers around | ||
dma_alloc_coherent, with a note that we should be removing them. | ||
|
5 changes: 3 additions & 2 deletions
5
0005-drm-Remove-PageReserved-manipulation-from-drm_pci_al.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,8 @@ | ||
From c40f78c76b2f3ae55c348e8b206b0b283f01549c Mon Sep 17 00:00:00 2001 | ||
From 4dfbfe187c731b4f33e1a66e70ca10854e469527 Mon Sep 17 00:00:00 2001 | ||
From: Chris Wilson <[email protected]> | ||
Date: Sun, 2 Feb 2020 17:16:31 +0000 | ||
Subject: [PATCH 5/6] drm: Remove PageReserved manipulation from drm_pci_alloc | ||
Subject: [PATCH 05/13] drm: Remove PageReserved manipulation from | ||
drm_pci_alloc | ||
|
||
drm_pci_alloc/drm_pci_free are very thin wrappers around the core dma | ||
facilities, and we have no special reason within the drm layer to behave | ||
|
4 changes: 2 additions & 2 deletions
4
0006-drm-i915-execlists-Always-force-a-context-reload-whe.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
From 6ffd5925e2659e589d48b8dcaf06e0b3cc0f4d52 Mon Sep 17 00:00:00 2001 | ||
From 4e64b7d1a9e63f7b9c1cecc8995e6fc1fed42e77 Mon Sep 17 00:00:00 2001 | ||
From: Chris Wilson <[email protected]> | ||
Date: Fri, 7 Feb 2020 21:14:52 +0000 | ||
Subject: [PATCH 6/6] drm/i915/execlists: Always force a context reload when | ||
Subject: [PATCH 06/13] drm/i915/execlists: Always force a context reload when | ||
rewinding RING_TAIL | ||
|
||
If we rewind the RING_TAIL on a context, due to a preemption event, we | ||
|
79 changes: 79 additions & 0 deletions
79
0007-drm-i915-Serialise-i915_active_acquire-with-__active.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
From 167299b5c1cc6f0c1274271aec0ab2b9fec01594 Mon Sep 17 00:00:00 2001 | ||
From: Chris Wilson <[email protected]> | ||
Date: Thu, 5 Dec 2019 18:33:32 +0000 | ||
Subject: [PATCH 07/13] drm/i915: Serialise i915_active_acquire() with | ||
__active_retire() | ||
|
||
As __active_retire() does it's final atomic_dec() under the | ||
ref->tree_lock spinlock, in order to prevent ourselves from reusing the | ||
ref->cache and ref->tree as they are being destroyed, we need to | ||
serialise with the retirement during i915_active_acquire(). | ||
|
||
[ +0.000005] kernel BUG at drivers/gpu/drm/i915/i915_active.c:157! | ||
[ +0.000011] invalid opcode: 0000 [#1] SMP | ||
[ +0.000004] CPU: 7 PID: 188 Comm: kworker/u16:4 Not tainted 5.4.0-rc8-03070-gac5e57322614 #89 | ||
[ +0.000002] Hardware name: Razer Razer Blade Stealth 13 Late 2019/LY320, BIOS 1.02 09/10/2019 | ||
[ +0.000082] Workqueue: events_unbound active_work [i915] | ||
[ +0.000059] RIP: 0010:__active_retire+0x115/0x120 [i915] | ||
[ +0.000003] Code: 75 28 48 8b 3d 8c 6e 1a 00 48 89 ee e8 e4 5f a5 c0 48 8b 44 24 10 65 48 33 04 25 28 00 00 00 75 0f 48 83 c4 18 5b 5d 41 5c c3 <0f> 0b 0f 0b 0f 0b e8 a0 90 87 c0 0f 1f 44 00 00 48 8b 3d 54 6e 1a | ||
[ +0.000002] RSP: 0018:ffffb833003f7e48 EFLAGS: 00010286 | ||
[ +0.000003] RAX: ffff8d6e8d726d00 RBX: ffff8d6f9db4e840 RCX: 0000000000000000 | ||
[ +0.000001] RDX: ffffffff82605930 RSI: ffff8d6f9adc4908 RDI: ffff8d6e96cefe28 | ||
[ +0.000002] RBP: ffff8d6e96cefe00 R08: 0000000000000000 R09: ffff8d6f9ffe9a50 | ||
[ +0.000002] R10: 0000000000000048 R11: 0000000000000018 R12: ffff8d6f9adc4930 | ||
[ +0.000001] R13: ffff8d6f9e04fb00 R14: 0000000000000000 R15: ffff8d6f9adc4988 | ||
[ +0.000002] FS: 0000000000000000(0000) GS:ffff8d6f9ffc0000(0000) knlGS:0000000000000000 | ||
[ +0.000002] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 | ||
[ +0.000002] CR2: 000055eb5a34cf10 CR3: 000000018d609002 CR4: 0000000000760ee0 | ||
[ +0.000002] PKRU: 55555554 | ||
[ +0.000001] Call Trace: | ||
[ +0.000010] process_one_work+0x1aa/0x350 | ||
[ +0.000004] worker_thread+0x4d/0x3a0 | ||
[ +0.000004] kthread+0xfb/0x130 | ||
[ +0.000004] ? process_one_work+0x350/0x350 | ||
[ +0.000003] ? kthread_park+0x90/0x90 | ||
[ +0.000005] ret_from_fork+0x1f/0x40 | ||
|
||
Reported-by: Kenneth Graunke <[email protected]> | ||
Fixes: c9ad602feabe ("drm/i915: Split i915_active.mutex into an irq-safe spinlock for the rbtree") | ||
Signed-off-by: Chris Wilson <[email protected]> | ||
Cc: Tvrtko Ursulin <[email protected]> | ||
Cc: Kenneth Graunke <[email protected]> | ||
Cc: Matthew Auld <[email protected]> | ||
Tested-by: Kenneth Graunke <[email protected]> | ||
Reviewed-by: Kenneth Graunke <[email protected]> | ||
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] | ||
--- | ||
drivers/gpu/drm/i915/i915_active.c | 5 +++-- | ||
1 file changed, 3 insertions(+), 2 deletions(-) | ||
|
||
diff --git a/drivers/gpu/drm/i915/i915_active.c b/drivers/gpu/drm/i915/i915_active.c | ||
index a19e7d89bc8a..378b52d1ab74 100644 | ||
--- a/drivers/gpu/drm/i915/i915_active.c | ||
+++ b/drivers/gpu/drm/i915/i915_active.c | ||
@@ -91,10 +91,9 @@ static void debug_active_init(struct i915_active *ref) | ||
|
||
static void debug_active_activate(struct i915_active *ref) | ||
{ | ||
- spin_lock_irq(&ref->tree_lock); | ||
+ lockdep_assert_held(&ref->tree_lock); | ||
if (!atomic_read(&ref->count)) /* before the first inc */ | ||
debug_object_activate(ref, &active_debug_desc); | ||
- spin_unlock_irq(&ref->tree_lock); | ||
} | ||
|
||
static void debug_active_deactivate(struct i915_active *ref) | ||
@@ -407,8 +406,10 @@ int i915_active_acquire(struct i915_active *ref) | ||
if (!atomic_read(&ref->count) && ref->active) | ||
err = ref->active(ref); | ||
if (!err) { | ||
+ spin_lock_irq(&ref->tree_lock); /* vs __active_retire() */ | ||
debug_active_activate(ref); | ||
atomic_inc(&ref->count); | ||
+ spin_unlock_irq(&ref->tree_lock); | ||
} | ||
|
||
mutex_unlock(&ref->mutex); | ||
-- | ||
2.25.0 | ||
|
130 changes: 130 additions & 0 deletions
130
0008-drm-i915-gem-Take-runtime-pm-wakeref-prior-to-unbind.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
From e3d3fd13d0ac1e12848b4f2a57e9e4bf2b557bf0 Mon Sep 17 00:00:00 2001 | ||
From: Chris Wilson <[email protected]> | ||
Date: Tue, 3 Dec 2019 10:13:46 +0000 | ||
Subject: [PATCH 08/13] drm/i915/gem: Take runtime-pm wakeref prior to | ||
unbinding | ||
|
||
Some machines require ACPI for runtime resume, and ACPI is quite kmalloc | ||
happy. We cannot handle kmalloc from inside the vm->mutex, as they are | ||
used by the shrinker, and so we must ensure the global runtime-pm is | ||
awake prior to unbinding to avoid the potential inversion. | ||
|
||
<4> [57.121748] ====================================================== | ||
<4> [57.121750] WARNING: possible circular locking dependency detected | ||
<4> [57.121753] 5.4.0-rc8-CI-CI_DRM_7466+ #1 Tainted: G U | ||
<4> [57.121754] ------------------------------------------------------ | ||
<4> [57.121756] i915_pm_rpm/1105 is trying to acquire lock: | ||
<4> [57.121758] ffffffff82263a40 (fs_reclaim){+.+.}, at: fs_reclaim_acquire.part.117+0x0/0x30 | ||
<4> [57.121766] | ||
but task is already holding lock: | ||
<4> [57.121768] ffff888475a593c0 (&vm->mutex){+.+.}, at: i915_vma_unbind+0x21/0x50 [i915] | ||
<4> [57.121868] | ||
which lock already depends on the new lock. | ||
|
||
<4> [57.121869] | ||
the existing dependency chain (in reverse order) is: | ||
<4> [57.121871] | ||
-> #1 (&vm->mutex){+.+.}: | ||
<4> [57.121951] i915_gem_shrinker_taints_mutex+0xa2/0xd0 [i915] | ||
<4> [57.122028] i915_address_space_init+0xa9/0x170 [i915] | ||
<4> [57.122104] i915_ggtt_init_hw+0x47/0x130 [i915] | ||
<4> [57.122150] i915_driver_probe+0xbb4/0x15f0 [i915] | ||
<4> [57.122197] i915_pci_probe+0x43/0x1c0 [i915] | ||
<4> [57.122202] pci_device_probe+0x9e/0x120 | ||
<4> [57.122206] really_probe+0xea/0x420 | ||
<4> [57.122209] driver_probe_device+0x10b/0x120 | ||
<4> [57.122212] device_driver_attach+0x4a/0x50 | ||
<4> [57.122214] __driver_attach+0x97/0x130 | ||
<4> [57.122217] bus_for_each_dev+0x74/0xc0 | ||
<4> [57.122220] bus_add_driver+0x142/0x220 | ||
<4> [57.122222] driver_register+0x56/0xf0 | ||
<4> [57.122226] do_one_initcall+0x58/0x2ff | ||
<4> [57.122230] do_init_module+0x56/0x1f8 | ||
<4> [57.122233] load_module+0x243e/0x29f0 | ||
<4> [57.122236] __do_sys_finit_module+0xe9/0x110 | ||
<4> [57.122239] do_syscall_64+0x4f/0x210 | ||
<4> [57.122242] entry_SYSCALL_64_after_hwframe+0x49/0xbe | ||
<4> [57.122244] | ||
-> #0 (fs_reclaim){+.+.}: | ||
<4> [57.122249] __lock_acquire+0x1328/0x15d0 | ||
<4> [57.122251] lock_acquire+0xa7/0x1c0 | ||
<4> [57.122254] fs_reclaim_acquire.part.117+0x24/0x30 | ||
<4> [57.122257] __kmalloc+0x48/0x320 | ||
<4> [57.122261] acpi_ns_internalize_name+0x44/0x9b | ||
<4> [57.122264] acpi_ns_get_node_unlocked+0x6b/0xd3 | ||
<4> [57.122267] acpi_ns_get_node+0x3b/0x50 | ||
<4> [57.122271] acpi_get_handle+0x8a/0xb4 | ||
<4> [57.122274] acpi_has_method+0x1c/0x40 | ||
<4> [57.122278] acpi_pci_set_power_state+0x40/0xe0 | ||
<4> [57.122281] pci_platform_power_transition+0x3e/0x90 | ||
<4> [57.122284] pci_set_power_state+0x83/0xf0 | ||
<4> [57.122287] pci_restore_standard_config+0x22/0x40 | ||
<4> [57.122289] pci_pm_runtime_resume+0x23/0xc0 | ||
<4> [57.122293] __rpm_callback+0xb1/0x110 | ||
<4> [57.122296] rpm_callback+0x1a/0x70 | ||
<4> [57.122299] rpm_resume+0x50e/0x790 | ||
<4> [57.122302] __pm_runtime_resume+0x42/0x80 | ||
<4> [57.122357] __intel_runtime_pm_get+0x15/0x60 [i915] | ||
<4> [57.122435] ggtt_unbind_vma+0x24/0x60 [i915] | ||
<4> [57.122514] __i915_vma_unbind.part.39+0xb5/0x500 [i915] | ||
<4> [57.122593] i915_vma_unbind+0x2d/0x50 [i915] | ||
<4> [57.122668] i915_gem_object_unbind+0x11c/0x260 [i915] | ||
<4> [57.122740] i915_gem_object_set_cache_level+0x32/0x90 [i915] | ||
<4> [57.122810] i915_gem_set_caching_ioctl+0x1f7/0x2f0 [i915] | ||
<4> [57.122815] drm_ioctl_kernel+0xa7/0xf0 | ||
<4> [57.122818] drm_ioctl+0x2e1/0x390 | ||
<4> [57.122822] do_vfs_ioctl+0xa0/0x6f0 | ||
<4> [57.122825] ksys_ioctl+0x35/0x60 | ||
<4> [57.122828] __x64_sys_ioctl+0x11/0x20 | ||
<4> [57.122830] do_syscall_64+0x4f/0x210 | ||
<4> [57.122833] entry_SYSCALL_64_after_hwframe+0x49/0xbe | ||
|
||
Closes: https://gitlab.freedesktop.org/drm/intel/issues/711 | ||
Signed-off-by: Chris Wilson <[email protected]> | ||
Reviewed-by: Matthew Auld <[email protected]> | ||
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] | ||
--- | ||
drivers/gpu/drm/i915/i915_gem.c | 17 ++++++++++++++++- | ||
1 file changed, 16 insertions(+), 1 deletion(-) | ||
|
||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c | ||
index 3f07948ea4da..ed2436db5dd2 100644 | ||
--- a/drivers/gpu/drm/i915/i915_gem.c | ||
+++ b/drivers/gpu/drm/i915/i915_gem.c | ||
@@ -119,10 +119,23 @@ i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data, | ||
int i915_gem_object_unbind(struct drm_i915_gem_object *obj, | ||
unsigned long flags) | ||
{ | ||
- struct i915_vma *vma; | ||
+ struct intel_runtime_pm *rpm = &to_i915(obj->base.dev)->runtime_pm; | ||
LIST_HEAD(still_in_list); | ||
+ intel_wakeref_t wakeref; | ||
+ struct i915_vma *vma; | ||
int ret = 0; | ||
|
||
+ if (!atomic_read(&obj->bind_count)) | ||
+ return 0; | ||
+ | ||
+ /* | ||
+ * As some machines use ACPI to handle runtime-resume callbacks, and | ||
+ * ACPI is quite kmalloc happy, we cannot resume beneath the vm->mutex | ||
+ * as they are required by the shrinker. Ergo, we wake the device up | ||
+ * first just in case. | ||
+ */ | ||
+ wakeref = intel_runtime_pm_get(rpm); | ||
+ | ||
spin_lock(&obj->vma.lock); | ||
while (!ret && (vma = list_first_entry_or_null(&obj->vma.list, | ||
struct i915_vma, | ||
@@ -146,6 +159,8 @@ int i915_gem_object_unbind(struct drm_i915_gem_object *obj, | ||
list_splice(&still_in_list, &obj->vma.list); | ||
spin_unlock(&obj->vma.lock); | ||
|
||
+ intel_runtime_pm_put(rpm, wakeref); | ||
+ | ||
return ret; | ||
} | ||
|
||
-- | ||
2.25.0 | ||
|
Oops, something went wrong.