diff options
| author | bouyer <bouyer@NetBSD.org> | 2022-05-23 15:03:05 +0000 |
|---|---|---|
| committer | bouyer <bouyer@NetBSD.org> | 2022-05-23 15:03:05 +0000 |
| commit | 593296e2c139ec429d9d6703910be9ce3551bf77 (patch) | |
| tree | 3c052410f92a5b225a746705eb5d55f89a9dd27f /sys/dev/microcode | |
| parent | ca21b0fc0278a90536e6f5e4151abb56c9632f85 (diff) | |
Work in progress on MSI/MSI-X on Xen (MSI works on my hardware, more work
needed for MSI-X):
- Xen silently rejects 32 bits writes to MSI configuration registers
(especially when setting PCI_MSI_CTL_MSI_ENABLE/PCI_MSIX_CTL_ENABLE),
it expects 16 bits writes. So introduce a pci_conf_write16(),
only available on XENPV (and working only for mode 1 without
PCI_OVERRIDE_CONF_WRITE) and use it to enable MSI or MSI-X on XENPV.
- for multi-MSI vectors, Xen allocates all of them in a single hypercall,
so it's not convenient to do it at intr_establish() time.
So do it at alloc() time and register the pirqs in the msipic structure.
xen_pic_to_gsi() now just returns the values cached in the msipic.
As a bonus, if the PHYSDEVOP_map_pirq hypercall fails we can fail
the alloc() and we don't need the xen_pci_msi*_probe() hacks.
options NO_PCI_MSI_MSIX still on by default for XEN3_DOM0.
Diffstat (limited to 'sys/dev/microcode')
0 files changed, 0 insertions, 0 deletions
