tools/libxl: Skip missing PCI GSIs

A PCI device may not have a legacy IRQ.  In that case, we don't need to
do anything, so don't fail in libxl__arch_hvm_map_gsi() and
libxl__arch_hvm_unmap_gsi().

Requires an updated pciback to return -ENOENT.

Fixes: f97f885c71 ("tools: Add new function to do PIRQ (un)map on PVH dom0")
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
This commit is contained in:
Jason Andryuk authored and Jan Beulich committed 2025-03-13 10:23:52 +01:00
1 parent 8808f45305
commit d3ac8fdce2
1 file changed
+8 -2
+8 -2
View File
@@ -901,7 +901,10 @@ int libxl__arch_hvm_map_gsi(libxl__gc *gc, uint32_t sbdf, uint32_t domid)
int pirq = -1, gsi, r; int pirq = -1, gsi, r;
gsi = xc_pcidev_get_gsi(CTX->xch, sbdf); gsi = xc_pcidev_get_gsi(CTX->xch, sbdf);
if (gsi < 0) { if (gsi < 0 && errno == ENOENT) {
LOGD(DEBUG, domid, "xc_pcidev_get_gsi no gsi");
return 0;
} else if (gsi < 0) {
return ERROR_FAIL; return ERROR_FAIL;
} }
@@ -925,7 +928,10 @@ int libxl__arch_hvm_unmap_gsi(libxl__gc *gc, uint32_t sbdf, uint32_t domid)
int pirq = -1, gsi, r; int pirq = -1, gsi, r;
gsi = xc_pcidev_get_gsi(CTX->xch, sbdf); gsi = xc_pcidev_get_gsi(CTX->xch, sbdf);
if (gsi < 0) { if (gsi < 0 && errno == ENOENT) {
LOGD(DEBUG, domid, "xc_pcidev_get_gsi no gsi");
return 0;
} else if (gsi < 0) {
return ERROR_FAIL; return ERROR_FAIL;
} }
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.