asm-generic/hyperv: introduce hv_device_id and auxiliary structures
We will need to identify the device we want Microsoft Hypervisor to manipulate. Introduce the data structures for that purpose. They will be used in a later patch. Signed-off-by: Sunil Muthuswamy <sunilmut@microsoft.com> Co-Developed-by: Sunil Muthuswamy <sunilmut@microsoft.com> Signed-off-by: Wei Liu <wei.liu@kernel.org> Reviewed-by: Michael Kelley <mikelley@microsoft.com> Link: https://lore.kernel.org/r/20210203150435.27941-14-wei.liu@kernel.org
This commit is contained in:
parent
b59fb7b60d
commit
12434e5fb6
|
@ -624,4 +624,83 @@ struct hv_set_vp_registers_input {
|
||||||
} element[];
|
} element[];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
enum hv_device_type {
|
||||||
|
HV_DEVICE_TYPE_LOGICAL = 0,
|
||||||
|
HV_DEVICE_TYPE_PCI = 1,
|
||||||
|
HV_DEVICE_TYPE_IOAPIC = 2,
|
||||||
|
HV_DEVICE_TYPE_ACPI = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef u16 hv_pci_rid;
|
||||||
|
typedef u16 hv_pci_segment;
|
||||||
|
typedef u64 hv_logical_device_id;
|
||||||
|
union hv_pci_bdf {
|
||||||
|
u16 as_uint16;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
u8 function:3;
|
||||||
|
u8 device:5;
|
||||||
|
u8 bus;
|
||||||
|
};
|
||||||
|
} __packed;
|
||||||
|
|
||||||
|
union hv_pci_bus_range {
|
||||||
|
u16 as_uint16;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
u8 subordinate_bus;
|
||||||
|
u8 secondary_bus;
|
||||||
|
};
|
||||||
|
} __packed;
|
||||||
|
|
||||||
|
union hv_device_id {
|
||||||
|
u64 as_uint64;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
u64 reserved0:62;
|
||||||
|
u64 device_type:2;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* HV_DEVICE_TYPE_LOGICAL */
|
||||||
|
struct {
|
||||||
|
u64 id:62;
|
||||||
|
u64 device_type:2;
|
||||||
|
} logical;
|
||||||
|
|
||||||
|
/* HV_DEVICE_TYPE_PCI */
|
||||||
|
struct {
|
||||||
|
union {
|
||||||
|
hv_pci_rid rid;
|
||||||
|
union hv_pci_bdf bdf;
|
||||||
|
};
|
||||||
|
|
||||||
|
hv_pci_segment segment;
|
||||||
|
union hv_pci_bus_range shadow_bus_range;
|
||||||
|
|
||||||
|
u16 phantom_function_bits:2;
|
||||||
|
u16 source_shadow:1;
|
||||||
|
|
||||||
|
u16 rsvdz0:11;
|
||||||
|
u16 device_type:2;
|
||||||
|
} pci;
|
||||||
|
|
||||||
|
/* HV_DEVICE_TYPE_IOAPIC */
|
||||||
|
struct {
|
||||||
|
u8 ioapic_id;
|
||||||
|
u8 rsvdz0;
|
||||||
|
u16 rsvdz1;
|
||||||
|
u16 rsvdz2;
|
||||||
|
|
||||||
|
u16 rsvdz3:14;
|
||||||
|
u16 device_type:2;
|
||||||
|
} ioapic;
|
||||||
|
|
||||||
|
/* HV_DEVICE_TYPE_ACPI */
|
||||||
|
struct {
|
||||||
|
u32 input_mapping_base;
|
||||||
|
u32 input_mapping_count:30;
|
||||||
|
u32 device_type:2;
|
||||||
|
} acpi;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue