* [PATCH 0/2] tools: Fix PVH dom0 passthrough with legacy irq @ 2025-02-26 20:10 Jason Andryuk 2025-02-26 20:10 ` [PATCH 1/2] tools/ctrl: Silence missing GSI in xc_pcidev_get_gsi() Jason Andryuk 2025-02-26 20:10 ` [PATCH 2/2] tools/libxl: Skip missing PCI GSIs Jason Andryuk 0 siblings, 2 replies; 7+ messages in thread From: Jason Andryuk @ 2025-02-26 20:10 UTC (permalink / raw) To: xen-devel Cc: Jiqian Chen, Huang Rui, Jason Andryuk, Anthony PERARD, Juergen Gross A PCI device may not have a legacy IRQ assigned. This series allows passthrough of such a device to a guest. It relies on a Linux change to xen-pciback to also handle missing legacy IRQs: https://lore.kernel.org/xen-devel/20250226200134.29759-1-jason.andryuk@amd.com/T/#u Jason Andryuk (2): tools/ctrl: Silence missing GSI in xc_pcidev_get_gsi() tools/libxl: Skip missing PCI GSIs tools/libs/ctrl/xc_linux.c | 3 ++- tools/libs/light/libxl_x86.c | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) -- 2.34.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] tools/ctrl: Silence missing GSI in xc_pcidev_get_gsi() 2025-02-26 20:10 [PATCH 0/2] tools: Fix PVH dom0 passthrough with legacy irq Jason Andryuk @ 2025-02-26 20:10 ` Jason Andryuk 2025-02-28 13:59 ` Roger Pau Monné 2025-02-28 14:02 ` Roger Pau Monné 2025-02-26 20:10 ` [PATCH 2/2] tools/libxl: Skip missing PCI GSIs Jason Andryuk 1 sibling, 2 replies; 7+ messages in thread From: Jason Andryuk @ 2025-02-26 20:10 UTC (permalink / raw) To: xen-devel Cc: Jiqian Chen, Huang Rui, Jason Andryuk, Anthony PERARD, Juergen Gross It is valid for a PCI device to not have a legacy IRQ. In that case, do not print an error to keep the lgs clean. This relies on pciback being updated to return -ENOENT for a missing GSI. Fixes: b93e5981d258 ("tools: Add new function to get gsi from dev") Signed-off-by: Jason Andryuk <jason.andryuk@amd.com> --- tools/libs/ctrl/xc_linux.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/libs/ctrl/xc_linux.c b/tools/libs/ctrl/xc_linux.c index 92591e49a1..c18f09392f 100644 --- a/tools/libs/ctrl/xc_linux.c +++ b/tools/libs/ctrl/xc_linux.c @@ -78,7 +78,8 @@ int xc_pcidev_get_gsi(xc_interface *xch, uint32_t sbdf) IOCTL_PRIVCMD_PCIDEV_GET_GSI, &dev_gsi); if (ret < 0) { - PERROR("Failed to get gsi from dev"); + if (errno != ENOENT) + PERROR("Failed to get gsi from dev"); } else { ret = dev_gsi.gsi; } -- 2.34.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] tools/ctrl: Silence missing GSI in xc_pcidev_get_gsi() 2025-02-26 20:10 ` [PATCH 1/2] tools/ctrl: Silence missing GSI in xc_pcidev_get_gsi() Jason Andryuk @ 2025-02-28 13:59 ` Roger Pau Monné 2025-02-28 14:02 ` Roger Pau Monné 1 sibling, 0 replies; 7+ messages in thread From: Roger Pau Monné @ 2025-02-28 13:59 UTC (permalink / raw) To: Jason Andryuk Cc: xen-devel, Jiqian Chen, Huang Rui, Anthony PERARD, Juergen Gross On Wed, Feb 26, 2025 at 03:10:21PM -0500, Jason Andryuk wrote: > It is valid for a PCI device to not have a legacy IRQ. In that case, do > not print an error to keep the lgs clean. ^ logs? > > This relies on pciback being updated to return -ENOENT for a missing > GSI. > > Fixes: b93e5981d258 ("tools: Add new function to get gsi from dev") > Signed-off-by: Jason Andryuk <jason.andryuk@amd.com> Acked-by: Roger Pau Monné <roger.pau@citrix.com> > --- > tools/libs/ctrl/xc_linux.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/tools/libs/ctrl/xc_linux.c b/tools/libs/ctrl/xc_linux.c > index 92591e49a1..c18f09392f 100644 > --- a/tools/libs/ctrl/xc_linux.c > +++ b/tools/libs/ctrl/xc_linux.c > @@ -78,7 +78,8 @@ int xc_pcidev_get_gsi(xc_interface *xch, uint32_t sbdf) > IOCTL_PRIVCMD_PCIDEV_GET_GSI, &dev_gsi); > > if (ret < 0) { > - PERROR("Failed to get gsi from dev"); > + if (errno != ENOENT) > + PERROR("Failed to get gsi from dev"); Nit: isn't the style of xc_pcidev_get_gsi() wrong? From what I see in this same file and all other files in libs/ctrl it should use the hypervisor coding style. Thanks, Roger. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] tools/ctrl: Silence missing GSI in xc_pcidev_get_gsi() 2025-02-26 20:10 ` [PATCH 1/2] tools/ctrl: Silence missing GSI in xc_pcidev_get_gsi() Jason Andryuk 2025-02-28 13:59 ` Roger Pau Monné @ 2025-02-28 14:02 ` Roger Pau Monné 1 sibling, 0 replies; 7+ messages in thread From: Roger Pau Monné @ 2025-02-28 14:02 UTC (permalink / raw) To: Jason Andryuk Cc: xen-devel, Jiqian Chen, Huang Rui, Anthony PERARD, Juergen Gross On Wed, Feb 26, 2025 at 03:10:21PM -0500, Jason Andryuk wrote: > It is valid for a PCI device to not have a legacy IRQ. In that case, do > not print an error to keep the lgs clean. > > This relies on pciback being updated to return -ENOENT for a missing > GSI. > > Fixes: b93e5981d258 ("tools: Add new function to get gsi from dev") > Signed-off-by: Jason Andryuk <jason.andryuk@amd.com> > --- > tools/libs/ctrl/xc_linux.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/tools/libs/ctrl/xc_linux.c b/tools/libs/ctrl/xc_linux.c > index 92591e49a1..c18f09392f 100644 > --- a/tools/libs/ctrl/xc_linux.c > +++ b/tools/libs/ctrl/xc_linux.c > @@ -78,7 +78,8 @@ int xc_pcidev_get_gsi(xc_interface *xch, uint32_t sbdf) > IOCTL_PRIVCMD_PCIDEV_GET_GSI, &dev_gsi); > > if (ret < 0) { > - PERROR("Failed to get gsi from dev"); > + if (errno != ENOENT) > + PERROR("Failed to get gsi from dev"); While here, could you maybe print the S:B:D:F as part of the error message? (seeing as it's a function parameter). Thanks, Roger. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] tools/libxl: Skip missing PCI GSIs 2025-02-26 20:10 [PATCH 0/2] tools: Fix PVH dom0 passthrough with legacy irq Jason Andryuk 2025-02-26 20:10 ` [PATCH 1/2] tools/ctrl: Silence missing GSI in xc_pcidev_get_gsi() Jason Andryuk @ 2025-02-26 20:10 ` Jason Andryuk 2025-02-27 8:25 ` Jan Beulich 1 sibling, 1 reply; 7+ messages in thread From: Jason Andryuk @ 2025-02-26 20:10 UTC (permalink / raw) To: xen-devel Cc: Jiqian Chen, Huang Rui, Jason Andryuk, Anthony PERARD, Juergen Gross 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: f97f885c7198 ("tools: Add new function to do PIRQ (un)map on PVH dom0") Signed-off-by: Jason Andryuk <jason.andryuk@amd.com> --- tools/libs/light/libxl_x86.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c index a3164a3077..63208362af 100644 --- a/tools/libs/light/libxl_x86.c +++ b/tools/libs/light/libxl_x86.c @@ -901,7 +901,10 @@ int libxl__arch_hvm_map_gsi(libxl__gc *gc, uint32_t sbdf, uint32_t domid) int pirq = -1, gsi, r; gsi = xc_pcidev_get_gsi(CTX->xch, sbdf); - if (gsi < 0) { + if (gsi == -1 && errno == ENOENT) { + LOGD(DEBUG, domid, "xc_pcidev_get_gsi no gsi"); + return 0; + } else if (gsi < 0) { 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; gsi = xc_pcidev_get_gsi(CTX->xch, sbdf); - if (gsi < 0) { + if (gsi == -1 && errno == ENOENT) { + LOGD(DEBUG, domid, "xc_pcidev_get_gsi no gsi"); + return 0; + } else if (gsi < 0) { return ERROR_FAIL; } -- 2.34.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] tools/libxl: Skip missing PCI GSIs 2025-02-26 20:10 ` [PATCH 2/2] tools/libxl: Skip missing PCI GSIs Jason Andryuk @ 2025-02-27 8:25 ` Jan Beulich 2025-02-27 15:24 ` Jason Andryuk 0 siblings, 1 reply; 7+ messages in thread From: Jan Beulich @ 2025-02-27 8:25 UTC (permalink / raw) To: Jason Andryuk Cc: Jiqian Chen, Huang Rui, Anthony PERARD, Juergen Gross, xen-devel On 26.02.2025 21:10, Jason Andryuk wrote: > --- a/tools/libs/light/libxl_x86.c > +++ b/tools/libs/light/libxl_x86.c > @@ -901,7 +901,10 @@ int libxl__arch_hvm_map_gsi(libxl__gc *gc, uint32_t sbdf, uint32_t domid) > int pirq = -1, gsi, r; > > gsi = xc_pcidev_get_gsi(CTX->xch, sbdf); > - if (gsi < 0) { > + if (gsi == -1 && errno == ENOENT) { > + LOGD(DEBUG, domid, "xc_pcidev_get_gsi no gsi"); > + return 0; > + } else if (gsi < 0) { > 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; > > gsi = xc_pcidev_get_gsi(CTX->xch, sbdf); > - if (gsi < 0) { > + if (gsi == -1 && errno == ENOENT) { > + LOGD(DEBUG, domid, "xc_pcidev_get_gsi no gsi"); > + return 0; > + } else if (gsi < 0) { > return ERROR_FAIL; > } > Why the special-casing of the value -1? Jan ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] tools/libxl: Skip missing PCI GSIs 2025-02-27 8:25 ` Jan Beulich @ 2025-02-27 15:24 ` Jason Andryuk 0 siblings, 0 replies; 7+ messages in thread From: Jason Andryuk @ 2025-02-27 15:24 UTC (permalink / raw) To: Jan Beulich Cc: Jiqian Chen, Huang Rui, Anthony PERARD, Juergen Gross, xen-devel On 2025-02-27 03:25, Jan Beulich wrote: > On 26.02.2025 21:10, Jason Andryuk wrote: >> --- a/tools/libs/light/libxl_x86.c >> +++ b/tools/libs/light/libxl_x86.c >> @@ -925,7 +928,10 @@ int libxl__arch_hvm_unmap_gsi(libxl__gc *gc, uint32_t sbdf, uint32_t domid) >> int pirq = -1, gsi, r; >> >> gsi = xc_pcidev_get_gsi(CTX->xch, sbdf); >> - if (gsi < 0) { >> + if (gsi == -1 && errno == ENOENT) { >> + LOGD(DEBUG, domid, "xc_pcidev_get_gsi no gsi"); >> + return 0; >> + } else if (gsi < 0) { >> return ERROR_FAIL; >> } >> > > Why the special-casing of the value -1? No good reason. I'll restore it to < 0. I originally thought xc_pcidev_get_gsi() was returning -errno in gsi. That was not the case. Regards, Jason ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-02-28 14:02 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-02-26 20:10 [PATCH 0/2] tools: Fix PVH dom0 passthrough with legacy irq Jason Andryuk 2025-02-26 20:10 ` [PATCH 1/2] tools/ctrl: Silence missing GSI in xc_pcidev_get_gsi() Jason Andryuk 2025-02-28 13:59 ` Roger Pau Monné 2025-02-28 14:02 ` Roger Pau Monné 2025-02-26 20:10 ` [PATCH 2/2] tools/libxl: Skip missing PCI GSIs Jason Andryuk 2025-02-27 8:25 ` Jan Beulich 2025-02-27 15:24 ` Jason Andryuk
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.