mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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: Wei Liu <wei.liu@kernel.org> Reviewed-by: Michael Kelley <mikelley@microsoft.com> Link: https://lore.kernel.org/r/20210203150435.27941-12-wei.liu@kernel.org
This commit is contained in:
parent
333abaf5ab
commit
d589ae61bc
2 changed files with 28 additions and 4 deletions
|
@ -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 {
|
||||||
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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue