asm-generic/hyperv: update hv_interrupt_entry
We will soon use the same structure to handle IO-APIC interrupts as well. Introduce an enum to identify the source and a data structure for IO-APIC RTE. While at it, update pci-hyperv.c to use the enum. No functional change. Signed-off-by: Wei Liu <wei.liu@kernel.org> Acked-by: Rob Herring <robh@kernel.org> Reviewed-by: Michael Kelley <mikelley@microsoft.com> Link: https://lore.kernel.org/r/20210203150435.27941-13-wei.liu@kernel.org
This commit is contained in:
parent
d589ae61bc
commit
b59fb7b60d
|
@ -1216,7 +1216,7 @@ static void hv_irq_unmask(struct irq_data *data)
|
||||||
params = &hbus->retarget_msi_interrupt_params;
|
params = &hbus->retarget_msi_interrupt_params;
|
||||||
memset(params, 0, sizeof(*params));
|
memset(params, 0, sizeof(*params));
|
||||||
params->partition_id = HV_PARTITION_ID_SELF;
|
params->partition_id = HV_PARTITION_ID_SELF;
|
||||||
params->int_entry.source = 1; /* MSI(-X) */
|
params->int_entry.source = HV_INTERRUPT_SOURCE_MSI;
|
||||||
hv_set_msi_entry_from_desc(¶ms->int_entry.msi_entry, msi_desc);
|
hv_set_msi_entry_from_desc(¶ms->int_entry.msi_entry, msi_desc);
|
||||||
params->device_id = (hbus->hdev->dev_instance.b[5] << 24) |
|
params->device_id = (hbus->hdev->dev_instance.b[5] << 24) |
|
||||||
(hbus->hdev->dev_instance.b[4] << 16) |
|
(hbus->hdev->dev_instance.b[4] << 16) |
|
||||||
|
|
|
@ -481,6 +481,11 @@ struct hv_create_vp {
|
||||||
u64 flags;
|
u64 flags;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
enum hv_interrupt_source {
|
||||||
|
HV_INTERRUPT_SOURCE_MSI = 1, /* MSI and MSI-X */
|
||||||
|
HV_INTERRUPT_SOURCE_IOAPIC,
|
||||||
|
};
|
||||||
|
|
||||||
union hv_msi_address_register {
|
union hv_msi_address_register {
|
||||||
u32 as_uint32;
|
u32 as_uint32;
|
||||||
struct {
|
struct {
|
||||||
|
@ -514,10 +519,37 @@ union hv_msi_entry {
|
||||||
} __packed;
|
} __packed;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
union hv_ioapic_rte {
|
||||||
|
u64 as_uint64;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
u32 vector:8;
|
||||||
|
u32 delivery_mode:3;
|
||||||
|
u32 destination_mode:1;
|
||||||
|
u32 delivery_status:1;
|
||||||
|
u32 interrupt_polarity:1;
|
||||||
|
u32 remote_irr:1;
|
||||||
|
u32 trigger_mode:1;
|
||||||
|
u32 interrupt_mask:1;
|
||||||
|
u32 reserved1:15;
|
||||||
|
|
||||||
|
u32 reserved2:24;
|
||||||
|
u32 destination_id:8;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct {
|
||||||
|
u32 low_uint32;
|
||||||
|
u32 high_uint32;
|
||||||
|
};
|
||||||
|
} __packed;
|
||||||
|
|
||||||
struct hv_interrupt_entry {
|
struct hv_interrupt_entry {
|
||||||
u32 source; /* 1 for MSI(-X) */
|
u32 source;
|
||||||
u32 reserved1;
|
u32 reserved1;
|
||||||
union hv_msi_entry msi_entry;
|
union {
|
||||||
|
union hv_msi_entry msi_entry;
|
||||||
|
union hv_ioapic_rte ioapic_rte;
|
||||||
|
};
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue