From b7838d12bd1adc12e7fa820fc124a251b8f4629e Mon Sep 17 00:00:00 2001 From: Roger Pau Monne Date: Mon, 20 Oct 2025 11:56:13 +0100 Subject: [PATCH] tools/libxc: fix xc_physdev_map_pirq_msi() with PCI segments != 0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Otherwise it's not possible for device models to map IRQs of devices on segments different than 0. Keep the same function prototype and pass the segment in the high 16bits of the bus parameter, like it's done for the hypercall itself. Amends: 7620c0cf9a4d ("PCI multi-seg: add new physdevop-s") Signed-off-by: Roger Pau Monné Release-Acked-by: Oleksii Kurochko Reviewed-by: Anthony PERARD --- tools/include/xenctrl.h | 2 +- tools/libs/ctrl/xc_physdev.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index c14ecd66aa..d5dbf69c89 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -1623,7 +1623,7 @@ int xc_physdev_map_pirq_msi(xc_interface *xch, int index, int *pirq, int devfn, - int bus, + int segbus, int entry_nr, uint64_t table_base); diff --git a/tools/libs/ctrl/xc_physdev.c b/tools/libs/ctrl/xc_physdev.c index 25e686d7b3..9fb78536ea 100644 --- a/tools/libs/ctrl/xc_physdev.c +++ b/tools/libs/ctrl/xc_physdev.c @@ -65,7 +65,7 @@ int xc_physdev_map_pirq_msi(xc_interface *xch, int index, int *pirq, int devfn, - int bus, + int segbus, int entry_nr, uint64_t table_base) { @@ -79,10 +79,10 @@ int xc_physdev_map_pirq_msi(xc_interface *xch, } memset(&map, 0, sizeof(struct physdev_map_pirq)); map.domid = domid; - map.type = MAP_PIRQ_TYPE_MSI; + map.type = MAP_PIRQ_TYPE_MSI_SEG; map.index = index; map.pirq = *pirq; - map.bus = bus; + map.bus = segbus; map.devfn = devfn; map.entry_nr = entry_nr; map.table_base = table_base;