From patchwork Thu Aug 1 14:32:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 11070863 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 66C7A746 for ; Thu, 1 Aug 2019 14:38:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 576B62856F for ; Thu, 1 Aug 2019 14:38:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4BC7228573; Thu, 1 Aug 2019 14:38:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E88E928515 for ; Thu, 1 Aug 2019 14:38:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732132AbfHAOiU (ORCPT ); Thu, 1 Aug 2019 10:38:20 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:36213 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729084AbfHAOiU (ORCPT ); Thu, 1 Aug 2019 10:38:20 -0400 Received: from localhost ([127.0.0.1] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1htCDV-0000lz-DQ; Thu, 01 Aug 2019 16:38:05 +0200 Message-Id: <20190801143657.785902257@linutronix.de> User-Agent: quilt/0.65 Date: Thu, 01 Aug 2019 16:32:51 +0200 From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Peter Zijlstra , Ingo Molnar , Sebastian Siewior , Anna-Maria Gleixner , Steven Rostedt , Julia Cartwright , Paul McKenney , Frederic Weisbecker , Oleg Nesterov , kvm@vger.kernel.org, Radim Krcmar , Paolo Bonzini , John Stultz , Andy Lutomirski , "Paul E. McKenney" Subject: [patch 1/5] tracehook: Provide TIF_NOTIFY_RESUME handling for KVM References: <20190801143250.370326052@linutronix.de> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP TIF_NOTITY_RESUME is evaluated on return to user space along with other TIF flags. >From the kernels point of view a VMENTER is more or less equivalent to return to user space which means that at least a subset of TIF flags needs to be evaluated and handled. Currently KVM handles only TIF_SIGPENDING and TIF_NEED_RESCHED, but TIF_NOTIFY_RESUME is ignored. So pending task_work etc, is completely ignored until the vCPU thread actually goes all the way back into userspace/qemu. Provide notify_resume_pending() and tracehook_handle_notify_resume() so this can be handled similar to SIGPENDING. Signed-off-by: Thomas Gleixner Cc: Oleg Nesterov --- include/linux/tracehook.h | 15 +++++++++++++++ kernel/task_work.c | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) --- a/include/linux/tracehook.h +++ b/include/linux/tracehook.h @@ -163,6 +163,21 @@ static inline void set_notify_resume(str #endif } +#ifdef CONFIG_HAVE_ARCH_TRACEHOOK +/** + * notify_resume_pending - Check whether current has TIF_NOTIFY_RESUME set + */ +static inline bool notify_resume_pending(void) +{ + return test_thread_flag(TIF_NOTIFY_RESUME); +} + +void tracehook_handle_notify_resume(void); +#else +static inline bool notify_resume_pending(void) { return false; } +static inline void tracehook_handle_notify_resume(void) { } +#endif + /** * tracehook_notify_resume - report when about to return to user mode * @regs: user-mode registers of @current task --- a/kernel/task_work.c +++ b/kernel/task_work.c @@ -116,3 +116,22 @@ void task_work_run(void) } while (work); } } + +#ifdef CONFIG_HAVE_ARCH_TRACEHOOK +/** + * tracehook_handle_notify_resume - Notify resume handling for virt + * + * Called with interrupts and preemption enabled from VMENTER/EXIT. + */ +void tracehook_handle_notify_resume(void) +{ + local_irq_disable(); + while (test_and_clear_thread_flag(TIF_NOTIFY_RESUME)) { + local_irq_enable(); + tracehook_notify_resume(NULL); + local_irq_disable(); + } + local_irq_enable(); +} +EXPORT_SYMBOL_GPL(tracehook_handle_notify_resume); +#endif From patchwork Thu Aug 1 14:32:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 11070857 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 34BB0746 for ; Thu, 1 Aug 2019 14:38:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2717928515 for ; Thu, 1 Aug 2019 14:38:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1A7132857B; Thu, 1 Aug 2019 14:38:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B531728515 for ; Thu, 1 Aug 2019 14:38:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732176AbfHAOi2 (ORCPT ); Thu, 1 Aug 2019 10:38:28 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:36235 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732157AbfHAOi0 (ORCPT ); Thu, 1 Aug 2019 10:38:26 -0400 Received: from localhost ([127.0.0.1] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1htCDW-0000m4-17; Thu, 01 Aug 2019 16:38:06 +0200 Message-Id: <20190801143657.887648487@linutronix.de> User-Agent: quilt/0.65 Date: Thu, 01 Aug 2019 16:32:52 +0200 From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Peter Zijlstra , Ingo Molnar , Sebastian Siewior , Anna-Maria Gleixner , Steven Rostedt , Julia Cartwright , Paul McKenney , Frederic Weisbecker , kvm@vger.kernel.org, Radim Krcmar , Paolo Bonzini , Oleg Nesterov , John Stultz , Andy Lutomirski , "Paul E. McKenney" Subject: [patch 2/5] x86/kvm: Handle task_work on VMENTER/EXIT References: <20190801143250.370326052@linutronix.de> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP TIF_NOTITY_RESUME is evaluated on return to user space along with other TIF flags. >From the kernels point of view a VMENTER is more or less equivalent to return to user space which means that at least a subset of TIF flags needs to be evaluated and handled. Currently KVM handles only TIF_SIGPENDING and TIF_NEED_RESCHED, but TIF_NOTIFY_RESUME is ignored. So pending task_work etc, is completely ignored until the vCPU thread actually goes all the way back into userspace/qemu. Use the newly provided notify_resume_pending() and tracehook_handle_notify_resume() to solve this similar to the existing handling of SIGPENDING. Signed-off-by: Thomas Gleixner Cc: kvm@vger.kernel.org Cc: Radim Krcmar Cc: Paolo Bonzini --- arch/x86/kvm/x86.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -7972,7 +7973,8 @@ static int vcpu_enter_guest(struct kvm_v kvm_x86_ops->sync_pir_to_irr(vcpu); if (vcpu->mode == EXITING_GUEST_MODE || kvm_request_pending(vcpu) - || need_resched() || signal_pending(current)) { + || need_resched() || signal_pending(current) + || notify_resume_pending()) { vcpu->mode = OUTSIDE_GUEST_MODE; smp_wmb(); local_irq_enable(); @@ -8172,6 +8174,10 @@ static int vcpu_run(struct kvm_vcpu *vcp ++vcpu->stat.signal_exits; break; } + + if (notify_resume_pending()) + tracehook_handle_notify_resume(); + if (need_resched()) { srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx); cond_resched(); From patchwork Thu Aug 1 14:32:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 11070861 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D37D913AC for ; Thu, 1 Aug 2019 14:38:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C608028515 for ; Thu, 1 Aug 2019 14:38:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BA27C28573; Thu, 1 Aug 2019 14:38:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 64DEC28515 for ; Thu, 1 Aug 2019 14:38:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732161AbfHAOiZ (ORCPT ); Thu, 1 Aug 2019 10:38:25 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:36227 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731467AbfHAOiY (ORCPT ); Thu, 1 Aug 2019 10:38:24 -0400 Received: from localhost ([127.0.0.1] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1htCDW-0000m7-KX; Thu, 01 Aug 2019 16:38:06 +0200 Message-Id: <20190801143657.980489544@linutronix.de> User-Agent: quilt/0.65 Date: Thu, 01 Aug 2019 16:32:53 +0200 From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Peter Zijlstra , Ingo Molnar , Sebastian Siewior , Anna-Maria Gleixner , Steven Rostedt , Julia Cartwright , Paul McKenney , Frederic Weisbecker , Oleg Nesterov , kvm@vger.kernel.org, Radim Krcmar , Paolo Bonzini , John Stultz , Andy Lutomirski , "Paul E. McKenney" Subject: [patch 3/5] posix-cpu-timers: Split run_posix_cpu_timers() References: <20190801143250.370326052@linutronix.de> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Split run_posix_cpu_timers() into two pieces, the hard interrupt context part and the actual timer evaluation/expiry part. The hard interrupt context part contains only the lockless fast path check and for now calls the expiry part as before. No functional change. Preparatory change to move the expiry part into task context. Signed-off-by: Thomas Gleixner Cc: Oleg Nesterov --- kernel/time/posix-cpu-timers.c | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) --- a/kernel/time/posix-cpu-timers.c +++ b/kernel/time/posix-cpu-timers.c @@ -1127,25 +1127,11 @@ static inline int fastpath_timer_check(s return 0; } -/* - * This is called from the timer interrupt handler. The irq handler has - * already updated our counts. We need to check if any timers fire now. - * Interrupts are disabled. - */ -void run_posix_cpu_timers(struct task_struct *tsk) +static void __run_posix_cpu_timers(struct task_struct *tsk) { - LIST_HEAD(firing); struct k_itimer *timer, *next; unsigned long flags; - - lockdep_assert_irqs_disabled(); - - /* - * The fast path checks that there are no expired thread or thread - * group timers. If that's so, just return. - */ - if (!fastpath_timer_check(tsk)) - return; + LIST_HEAD(firing); if (!lock_task_sighand(tsk, &flags)) return; @@ -1193,6 +1179,25 @@ void run_posix_cpu_timers(struct task_st } /* + * This is called from the timer interrupt handler. The irq handler has + * already updated our counts. We need to check if any timers fire now. + * Interrupts are disabled. + */ +void run_posix_cpu_timers(struct task_struct *tsk) +{ + lockdep_assert_irqs_disabled(); + + /* + * The fast path checks that there are no expired thread or thread + * group timers. If that's so, just return. + */ + if (!fastpath_timer_check(tsk)) + return; + + __run_posix_cpu_timers(tsk); +} + +/* * Set one of the process-wide special case CPU timers or RLIMIT_CPU. * The tsk->sighand->siglock must be held by the caller. */ From patchwork Thu Aug 1 14:32:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 11070859 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 979CF17E0 for ; Thu, 1 Aug 2019 14:38:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 85A2928515 for ; Thu, 1 Aug 2019 14:38:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 78E9D2856F; Thu, 1 Aug 2019 14:38:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0AAE128573 for ; Thu, 1 Aug 2019 14:38:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732187AbfHAOic (ORCPT ); Thu, 1 Aug 2019 10:38:32 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:36248 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732171AbfHAOib (ORCPT ); Thu, 1 Aug 2019 10:38:31 -0400 Received: from localhost ([127.0.0.1] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1htCDX-0000mC-7j; Thu, 01 Aug 2019 16:38:07 +0200 Message-Id: <20190801143658.074833024@linutronix.de> User-Agent: quilt/0.65 Date: Thu, 01 Aug 2019 16:32:54 +0200 From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Peter Zijlstra , Ingo Molnar , Sebastian Siewior , Anna-Maria Gleixner , Steven Rostedt , Julia Cartwright , Paul McKenney , Frederic Weisbecker , John Stultz , Andy Lutomirski , "Paul E. McKenney" , Oleg Nesterov , kvm@vger.kernel.org, Radim Krcmar , Paolo Bonzini Subject: [patch 4/5] posix-cpu-timers: Defer timer handling to task_work References: <20190801143250.370326052@linutronix.de> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Running posix cpu timers in hard interrupt context has a few downsides: - For PREEMPT_RT it cannot work as the expiry code needs to take sighand lock, which is a 'sleeping spinlock' in RT - For fine grained accounting it's just wrong to run this in context of the timer interrupt because that way a process specific cpu time is accounted to the timer interrupt. There is no real hard requirement to run the expiry code in hard interrupt context. The posix CPU timers are an approximation anyway, so having them expired and evaluated in task work context does not really make them worse. Make it conditional on a selectable config switch as this requires that task work is handled in KVM. The available tests pass and no problematic difference has been observed. Signed-off-by: Thomas Gleixner Cc: John Stultz Cc: Andy Lutomirski Cc: "Paul E. McKenney" --- include/linux/sched.h | 3 +++ kernel/time/Kconfig | 5 +++++ kernel/time/posix-cpu-timers.c | 26 +++++++++++++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -880,6 +880,9 @@ struct task_struct { struct task_cputime cputime_expires; struct list_head cpu_timers[3]; #endif +#ifdef CONFIG_POSIX_CPU_TIMERS_TASK_WORK + struct callback_head cpu_timer_work; +#endif /* Process credentials: */ --- a/kernel/time/Kconfig +++ b/kernel/time/Kconfig @@ -52,6 +52,11 @@ config GENERIC_CLOCKEVENTS_MIN_ADJUST config GENERIC_CMOS_UPDATE bool +# Select to handle posix CPU timers from task_work +# and not from the timer interrupt context +config POSIX_CPU_TIMERS_TASK_WORK + bool + if GENERIC_CLOCKEVENTS menu "Timers subsystem" --- a/kernel/time/posix-cpu-timers.c +++ b/kernel/time/posix-cpu-timers.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include "posix-timers.h" @@ -1127,7 +1128,7 @@ static inline int fastpath_timer_check(s return 0; } -static void __run_posix_cpu_timers(struct task_struct *tsk) +static void handle_posix_cpu_timers(struct task_struct *tsk) { struct k_itimer *timer, *next; unsigned long flags; @@ -1178,6 +1179,29 @@ static void __run_posix_cpu_timers(struc } } +#ifdef CONFIG_POSIX_CPU_TIMERS_TASK_WORK + +static void posix_cpu_timers_work(struct callback_head *work) +{ + handle_posix_cpu_timers(current); +} + +static void __run_posix_cpu_timers(struct task_struct *tsk) +{ + /* FIXME: Init it proper in fork or such */ + init_task_work(&tsk->cpu_timer_work, posix_cpu_timers_work); + task_work_add(tsk, &tsk->cpu_timer_work, true); +} + +#else + +static void __run_posix_cpu_timers(struct task_struct *tsk) +{ + handle_posix_cpu_timers(tsk); +} + +#endif + /* * This is called from the timer interrupt handler. The irq handler has * already updated our counts. We need to check if any timers fire now. From patchwork Thu Aug 1 14:32:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 11070855 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2821313AC for ; Thu, 1 Aug 2019 14:38:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 139DF28515 for ; Thu, 1 Aug 2019 14:38:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 049A728573; Thu, 1 Aug 2019 14:38:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8FEA928515 for ; Thu, 1 Aug 2019 14:38:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732148AbfHAOiV (ORCPT ); Thu, 1 Aug 2019 10:38:21 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:36218 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731467AbfHAOiU (ORCPT ); Thu, 1 Aug 2019 10:38:20 -0400 Received: from localhost ([127.0.0.1] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1htCDX-0000mF-Rw; Thu, 01 Aug 2019 16:38:07 +0200 Message-Id: <20190801143658.166001448@linutronix.de> User-Agent: quilt/0.65 Date: Thu, 01 Aug 2019 16:32:55 +0200 From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Peter Zijlstra , Ingo Molnar , Sebastian Siewior , Anna-Maria Gleixner , Steven Rostedt , Julia Cartwright , Paul McKenney , Frederic Weisbecker , Oleg Nesterov , kvm@vger.kernel.org, Radim Krcmar , Paolo Bonzini , John Stultz , Andy Lutomirski , "Paul E. McKenney" Subject: [patch 5/5] x86: Select POSIX_CPU_TIMERS_TASK_WORK References: <20190801143250.370326052@linutronix.de> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP X86 handles task work in KVM now. Enable the delegation of posix cpu timer expiry into task work. Signed-off-by: Thomas Gleixner --- arch/x86/Kconfig | 1 + 1 file changed, 1 insertion(+) --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -213,6 +213,7 @@ config X86 select NEED_SG_DMA_LENGTH select PCI_DOMAINS if PCI select PCI_LOCKLESS_CONFIG if PCI + select POSIX_CPU_TIMERS_TASK_WORK select PERF_EVENTS select RTC_LIB select RTC_MC146818_LIB