aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-05-06 19:30:28 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-06 19:30:28 -0400
commitba3934de557a2074b89d67e29e5ce119f042d057 (patch)
tree315878dfa78ee6d147c2160400a31c37c45e9f0e
parent0bc40e549aeea2de20fc571749de9bbfc099fb34 (diff)
parent14e581c381b942ce5463a7e61326d8ce1c843be7 (diff)
Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 platform updates from Ingo Molnar: "Smaller update for Hyper-V to support EOI assist, plus LTO fixes" * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/kvm: Make steal_time visible x86/hyperv: Make hv_vcpu_is_preempted() visible x86/hyper-v: Implement EOI assist
-rw-r--r--arch/x86/hyperv/hv_apic.c5
-rw-r--r--arch/x86/hyperv/hv_spinlock.c2
-rw-r--r--arch/x86/kernel/kvm.c2
3 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86/hyperv/hv_apic.c b/arch/x86/hyperv/hv_apic.c
index 8eb6fbee8e13..5c056b8aebef 100644
--- a/arch/x86/hyperv/hv_apic.c
+++ b/arch/x86/hyperv/hv_apic.c
@@ -86,6 +86,11 @@ static void hv_apic_write(u32 reg, u32 val)
86 86
87static void hv_apic_eoi_write(u32 reg, u32 val) 87static void hv_apic_eoi_write(u32 reg, u32 val)
88{ 88{
89 struct hv_vp_assist_page *hvp = hv_vp_assist_page[smp_processor_id()];
90
91 if (hvp && (xchg(&hvp->apic_assist, 0) & 0x1))
92 return;
93
89 wrmsr(HV_X64_MSR_EOI, val, 0); 94 wrmsr(HV_X64_MSR_EOI, val, 0);
90} 95}
91 96
diff --git a/arch/x86/hyperv/hv_spinlock.c b/arch/x86/hyperv/hv_spinlock.c
index a861b0456b1a..07f21a06392f 100644
--- a/arch/x86/hyperv/hv_spinlock.c
+++ b/arch/x86/hyperv/hv_spinlock.c
@@ -56,7 +56,7 @@ static void hv_qlock_wait(u8 *byte, u8 val)
56/* 56/*
57 * Hyper-V does not support this so far. 57 * Hyper-V does not support this so far.
58 */ 58 */
59bool hv_vcpu_is_preempted(int vcpu) 59__visible bool hv_vcpu_is_preempted(int vcpu)
60{ 60{
61 return false; 61 return false;
62} 62}
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
index 5c93a65ee1e5..3f0cc828cc36 100644
--- a/arch/x86/kernel/kvm.c
+++ b/arch/x86/kernel/kvm.c
@@ -67,7 +67,7 @@ static int __init parse_no_stealacc(char *arg)
67early_param("no-steal-acc", parse_no_stealacc); 67early_param("no-steal-acc", parse_no_stealacc);
68 68
69static DEFINE_PER_CPU_DECRYPTED(struct kvm_vcpu_pv_apf_data, apf_reason) __aligned(64); 69static DEFINE_PER_CPU_DECRYPTED(struct kvm_vcpu_pv_apf_data, apf_reason) __aligned(64);
70static DEFINE_PER_CPU_DECRYPTED(struct kvm_steal_time, steal_time) __aligned(64); 70DEFINE_PER_CPU_DECRYPTED(struct kvm_steal_time, steal_time) __aligned(64) __visible;
71static int has_steal_clock = 0; 71static int has_steal_clock = 0;
72 72
73/* 73/*