summaryrefslogtreecommitdiffstats
path: root/0001-Drivers-hv-Move-AEOI-determination-to-architecture-d.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-Drivers-hv-Move-AEOI-determination-to-architecture-d.patch')
-rw-r--r--0001-Drivers-hv-Move-AEOI-determination-to-architecture-d.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/0001-Drivers-hv-Move-AEOI-determination-to-architecture-d.patch b/0001-Drivers-hv-Move-AEOI-determination-to-architecture-d.patch
new file mode 100644
index 000000000..c7bf7e8a4
--- /dev/null
+++ b/0001-Drivers-hv-Move-AEOI-determination-to-architecture-d.patch
@@ -0,0 +1,53 @@
+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
+