Signed-off-by: Sunil Muthuswamy <sunil...@microsoft.com>
Co-Developed-by: Sunil Muthuswamy <sunil...@microsoft.com>
Signed-off-by: Wei Liu <wei....@kernel.org>
---
 arch/x86/include/asm/hyperv-tlfs.h | 13 +++++++++++
 include/asm-generic/hyperv-tlfs.h  | 36 ++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+)

diff --git a/arch/x86/include/asm/hyperv-tlfs.h 
b/arch/x86/include/asm/hyperv-tlfs.h
index 204010350604..ab7d6cde548d 100644
--- a/arch/x86/include/asm/hyperv-tlfs.h
+++ b/arch/x86/include/asm/hyperv-tlfs.h
@@ -533,6 +533,19 @@ struct hv_partition_assist_pg {
        u32 tlb_lock_count;
 };
 
+enum hv_interrupt_type {
+       HV_X64_INTERRUPT_TYPE_FIXED             = 0x0000,
+       HV_X64_INTERRUPT_TYPE_LOWESTPRIORITY    = 0x0001,
+       HV_X64_INTERRUPT_TYPE_SMI               = 0x0002,
+       HV_X64_INTERRUPT_TYPE_REMOTEREAD        = 0x0003,
+       HV_X64_INTERRUPT_TYPE_NMI               = 0x0004,
+       HV_X64_INTERRUPT_TYPE_INIT              = 0x0005,
+       HV_X64_INTERRUPT_TYPE_SIPI              = 0x0006,
+       HV_X64_INTERRUPT_TYPE_EXTINT            = 0x0007,
+       HV_X64_INTERRUPT_TYPE_LOCALINT0         = 0x0008,
+       HV_X64_INTERRUPT_TYPE_LOCALINT1         = 0x0009,
+       HV_X64_INTERRUPT_TYPE_MAXIMUM           = 0x000A,
+};
 
 #include <asm-generic/hyperv-tlfs.h>
 
diff --git a/include/asm-generic/hyperv-tlfs.h 
b/include/asm-generic/hyperv-tlfs.h
index 42ff1326c6bd..07efe0131fe3 100644
--- a/include/asm-generic/hyperv-tlfs.h
+++ b/include/asm-generic/hyperv-tlfs.h
@@ -152,6 +152,8 @@ struct ms_hyperv_tsc_page {
 #define HVCALL_RETRIEVE_DEBUG_DATA             0x006a
 #define HVCALL_RESET_DEBUG_SESSION             0x006b
 #define HVCALL_ADD_LOGICAL_PROCESSOR           0x0076
+#define HVCALL_MAP_DEVICE_INTERRUPT            0x007c
+#define HVCALL_UNMAP_DEVICE_INTERRUPT          0x007d
 #define HVCALL_RETARGET_INTERRUPT              0x007e
 #define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_SPACE 0x00af
 #define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_LIST 0x00b0
@@ -702,4 +704,38 @@ union hv_device_id {
        } acpi;
 } __packed;
 
+enum hv_interrupt_trigger_mode {
+       HV_INTERRUPT_TRIGGER_MODE_EDGE = 0,
+       HV_INTERRUPT_TRIGGER_MODE_LEVEL = 1,
+};
+
+struct hv_device_interrupt_descriptor {
+       u32 interrupt_type;
+       u32 trigger_mode;
+       u32 vector_count;
+       u32 reserved;
+       struct hv_device_interrupt_target target;
+} __packed;
+
+struct hv_input_map_device_interrupt {
+       u64 partition_id;
+       u64 device_id;
+       u64 flags;
+       struct hv_interrupt_entry logical_interrupt_entry;
+       struct hv_device_interrupt_descriptor interrupt_descriptor;
+} __packed;
+
+struct hv_output_map_device_interrupt {
+       struct hv_interrupt_entry interrupt_entry;
+} __packed;
+
+struct hv_input_unmap_device_interrupt {
+       u64 partition_id;
+       u64 device_id;
+       struct hv_interrupt_entry interrupt_entry;
+} __packed;
+
+#define HV_SOURCE_SHADOW_NONE               0x0
+#define HV_SOURCE_SHADOW_BRIDGE_BUS_RANGE   0x1
+
 #endif
-- 
2.20.1

Reply via email to