hw/xen: pass PCI domain to xc_physdev_map_pirq_msi()
It's currently impossible for passthrough devices on segment different than 0 to work correctly, as the PCI domain is not provided to xc_physdev_map_pirq_msi(), and hence it's unconditionally assumed that all devices are on segment 0. Adjust the call to xc_physdev_map_pirq_msi() to pass the PCI domain in the high 16bits of the bus parameter. On versions of Xen where this is not supported the passed segment will be ignored and assume to be 0, no worse than the current state. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Frediano Ziglio <freddy77@gmail.com> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com> Message-ID: <20251017155136.16540-1-roger.pau@citrix.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
6095c7dd3b
commit
f74ce60226
1 changed files with 1 additions and 0 deletions
|
|
@ -138,6 +138,7 @@ static int msi_msix_setup(XenPCIPassthroughState *s,
|
|||
rc = xc_physdev_map_pirq_msi(xen_xc, xen_domid, XEN_PT_AUTO_ASSIGN,
|
||||
ppirq, PCI_DEVFN(s->real_device.dev,
|
||||
s->real_device.func),
|
||||
((uint32_t)s->real_device.domain << 16) |
|
||||
s->real_device.bus,
|
||||
msix_entry, table_base);
|
||||
if (rc) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue