Commit d589ae61 authored by Wei Liu's avatar Wei Liu

asm-generic/hyperv: update hv_msi_entry

We will soon need to access fields inside the MSI address and MSI data
fields. Introduce hv_msi_address_register and hv_msi_data_register.

Fix up one user of hv_msi_entry in mshyperv.h.

No functional change expected.
Signed-off-by: default avatarWei Liu <wei.liu@kernel.org>
Reviewed-by: default avatarMichael Kelley <mikelley@microsoft.com>
Link: https://lore.kernel.org/r/20210203150435.27941-12-wei.liu@kernel.org
parent 333abaf5
...@@ -259,8 +259,8 @@ static inline void hv_apic_init(void) {} ...@@ -259,8 +259,8 @@ static inline void hv_apic_init(void) {}
static inline void hv_set_msi_entry_from_desc(union hv_msi_entry *msi_entry, static inline void hv_set_msi_entry_from_desc(union hv_msi_entry *msi_entry,
struct msi_desc *msi_desc) struct msi_desc *msi_desc)
{ {
msi_entry->address = msi_desc->msg.address_lo; msi_entry->address.as_uint32 = msi_desc->msg.address_lo;
msi_entry->data = msi_desc->msg.data; msi_entry->data.as_uint32 = msi_desc->msg.data;
} }
#else /* CONFIG_HYPERV */ #else /* CONFIG_HYPERV */
......
...@@ -481,12 +481,36 @@ struct hv_create_vp { ...@@ -481,12 +481,36 @@ struct hv_create_vp {
u64 flags; u64 flags;
} __packed; } __packed;
union hv_msi_address_register {
u32 as_uint32;
struct {
u32 reserved1:2;
u32 destination_mode:1;
u32 redirection_hint:1;
u32 reserved2:8;
u32 destination_id:8;
u32 msi_base:12;
};
} __packed;
union hv_msi_data_register {
u32 as_uint32;
struct {
u32 vector:8;
u32 delivery_mode:3;
u32 reserved1:3;
u32 level_assert:1;
u32 trigger_mode:1;
u32 reserved2:16;
};
} __packed;
/* HvRetargetDeviceInterrupt hypercall */ /* HvRetargetDeviceInterrupt hypercall */
union hv_msi_entry { union hv_msi_entry {
u64 as_uint64; u64 as_uint64;
struct { struct {
u32 address; union hv_msi_address_register address;
u32 data; union hv_msi_data_register data;
} __packed; } __packed;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment