| From foo@baz Tue Aug 14 16:14:56 CEST 2018 |
| From: Nicolai Stange <nstange@suse.de> |
| Date: Sat, 21 Jul 2018 22:16:56 +0200 |
| Subject: x86/KVM/VMX: Don't set l1tf_flush_l1d to true from vmx_l1d_flush() |
| |
| From: Nicolai Stange <nstange@suse.de> |
| |
| commit 379fd0c7e6a391e5565336a646f19f218fb98c6c upstream |
| |
| vmx_l1d_flush() gets invoked only if l1tf_flush_l1d is true. There's no |
| point in setting l1tf_flush_l1d to true from there again. |
| |
| Signed-off-by: Nicolai Stange <nstange@suse.de> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/kvm/vmx.c | 14 +++++++------- |
| 1 file changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/arch/x86/kvm/vmx.c |
| +++ b/arch/x86/kvm/vmx.c |
| @@ -8665,15 +8665,15 @@ static void vmx_l1d_flush(struct kvm_vcp |
| /* |
| * This code is only executed when the the flush mode is 'cond' or |
| * 'always' |
| - * |
| - * If 'flush always', keep the flush bit set, otherwise clear |
| - * it. The flush bit gets set again either from vcpu_run() or from |
| - * one of the unsafe VMEXIT handlers. |
| */ |
| - if (static_branch_unlikely(&vmx_l1d_flush_always)) |
| - vcpu->arch.l1tf_flush_l1d = true; |
| - else |
| + if (!static_branch_unlikely(&vmx_l1d_flush_always)) { |
| + /* |
| + * Clear the flush bit, it gets set again either from |
| + * vcpu_run() or from one of the unsafe VMEXIT |
| + * handlers. |
| + */ |
| vcpu->arch.l1tf_flush_l1d = false; |
| + } |
| |
| vcpu->stat.l1d_flush++; |
| |