54 lines
1.9 KiB
Diff
54 lines
1.9 KiB
Diff
|
From 2ddddd0b4e89e1fc30ed257653239005d2f31f5b Mon Sep 17 00:00:00 2001
|
||
|
From: Michael Kelley <mikelley@microsoft.com>
|
||
|
Date: Mon, 20 Apr 2020 09:49:26 -0700
|
||
|
Subject: [PATCH] Drivers: hv: Move AEOI determination to architecture
|
||
|
dependent code
|
||
|
|
||
|
Hyper-V on ARM64 doesn't provide a flag for the AEOI recommendation
|
||
|
in ms_hyperv.hints, so having the test in architecture independent
|
||
|
code doesn't work. Resolve this by moving the check of the flag
|
||
|
to an architecture dependent helper function. No functionality is
|
||
|
changed.
|
||
|
|
||
|
Signed-off-by: Michael Kelley <mikelley@microsoft.com>
|
||
|
Link: https://lore.kernel.org/r/20200420164926.24471-1-mikelley@microsoft.com
|
||
|
Signed-off-by: Wei Liu <wei.liu@kernel.org>
|
||
|
---
|
||
|
arch/x86/include/asm/mshyperv.h | 2 ++
|
||
|
drivers/hv/hv.c | 6 +-----
|
||
|
2 files changed, 3 insertions(+), 5 deletions(-)
|
||
|
|
||
|
diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
|
||
|
index 6b79515abb82..7c2bbd6675dc 100644
|
||
|
--- a/arch/x86/include/asm/mshyperv.h
|
||
|
+++ b/arch/x86/include/asm/mshyperv.h
|
||
|
@@ -34,6 +34,8 @@ typedef int (*hyperv_fill_flush_list_func)(
|
||
|
rdmsrl(HV_X64_MSR_SINT0 + int_num, val)
|
||
|
#define hv_set_synint_state(int_num, val) \
|
||
|
wrmsrl(HV_X64_MSR_SINT0 + int_num, val)
|
||
|
+#define hv_recommend_using_aeoi() \
|
||
|
+ (!(ms_hyperv.hints & HV_DEPRECATING_AEOI_RECOMMENDED))
|
||
|
|
||
|
#define hv_get_crash_ctl(val) \
|
||
|
rdmsrl(HV_X64_MSR_CRASH_CTL, val)
|
||
|
diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
|
||
|
index 6098e0cbdb4b..533c8b82b344 100644
|
||
|
--- a/drivers/hv/hv.c
|
||
|
+++ b/drivers/hv/hv.c
|
||
|
@@ -184,11 +184,7 @@ void hv_synic_enable_regs(unsigned int cpu)
|
||
|
|
||
|
shared_sint.vector = HYPERVISOR_CALLBACK_VECTOR;
|
||
|
shared_sint.masked = false;
|
||
|
- if (ms_hyperv.hints & HV_DEPRECATING_AEOI_RECOMMENDED)
|
||
|
- shared_sint.auto_eoi = false;
|
||
|
- else
|
||
|
- shared_sint.auto_eoi = true;
|
||
|
-
|
||
|
+ shared_sint.auto_eoi = hv_recommend_using_aeoi();
|
||
|
hv_set_synint_state(VMBUS_MESSAGE_SINT, shared_sint.as_uint64);
|
||
|
|
||
|
/* Enable the global synic bit */
|
||
|
--
|
||
|
2.26.2
|
||
|
|