diff options
author | Joey Pabalinas | 2018-03-16 16:12:05 -1000 |
---|---|---|
committer | Joey Pabalinas | 2018-03-16 16:12:05 -1000 |
commit | f1307fa0aafd6a1fba5792df2be93c80984145cd (patch) | |
tree | 90703902cfbb13923bfb6711b95d741677a01b7f /kvm.patch | |
parent | 19d32e4763a202006d83eb0b7fa91c397acc6258 (diff) | |
download | aur-f1307fa0aafd6a1fba5792df2be93c80984145cd.tar.gz |
upgpkg: linux-surfacepro3-git 4.16rc5.r80.ge2c15aff5f353ba80b-1
upstream release
Diffstat (limited to 'kvm.patch')
-rw-r--r-- | kvm.patch | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/kvm.patch b/kvm.patch new file mode 100644 index 000000000000..58a2b11a2252 --- /dev/null +++ b/kvm.patch @@ -0,0 +1,38 @@ +From 2911d3320b6414efdabe8aef874857855042424d Mon Sep 17 00:00:00 2001 +From: Joey Pabalinas <joeypabalinas@gmail.com> +Date: Thu, 15 Mar 2018 03:40:23 -1000 +Subject: [PATCH] x86/kvm: replace TASK_UNINTERRUPTIBLE with TASK_KILLABLE + +There doesn't seem to be any advantage to having a *completely* +uninterruptible task here. For most users, allowing a task to respond +to the SIGKILL interrupt signal (all other signals are ignored just like +TASK_UNINTERRUPTIBLE) will not impact them at all. + +However, for the rare edge-cases where a task becomes stuck, maybe due to +snapshot corruption or some other similarly unrecoverable error, it +is *much* more convenient for a user to be able to have the additional +option of nuking that task with SIGKILL, rather than annoying them by +forcing them to reboot in order to remove the immortal process. + +Signed-off-by: Joey Pabalinas <joeypabalinas@gmail.com> + + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c +index bc1a27280c4bf77899..7d4faee962e0c2e3c1 100644 +--- a/arch/x86/kernel/kvm.c ++++ b/arch/x86/kernel/kvm.c +@@ -154,8 +154,8 @@ void kvm_async_pf_task_wait(u32 token, int interrupt_kernel) + + for (;;) { + if (!n.halted) +- prepare_to_swait(&n.wq, &wait, TASK_UNINTERRUPTIBLE); +- if (hlist_unhashed(&n.link)) ++ prepare_to_swait(&n.wq, &wait, TASK_KILLABLE); ++ if (hlist_unhashed(&n.link) || fatal_signal_pending(current)) + break; + + rcu_irq_exit(); +-- +2.16.2 + |