Message ID | 20240911065832.1591273-2-Jiqian.Chen@amd.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Support device passthrough when dom0 is PVH on Xen | expand |
On 11.09.2024 08:58, Jiqian Chen wrote: > The current hypercall interfaces to manage and assign interrupts to > domains is mostly based in using pIRQs as handlers. Such pIRQ values > are abstract domain-specific references to interrupts. > > Classic HVM domains can have access to {,un}map_pirq hypercalls if the > domain is allowed to route physical interrupts over event channels. > That's however a different interface, limited to only mapping > interrupts to itself. PVH domains on the other hand never had access > to the interface, as PVH domains are not allowed to route interrupts > over event channels. > > In order to allow setting up PCI passthrough from a PVH domain it > needs access to the {,un}map_pirq hypercalls so interrupts can be > assigned a pIRQ handler that can then be used by further hypercalls to > bind the interrupt to a domain. > > Note that the {,un}map_pirq hypercalls end up calling helpers that are > already used against a PVH domain in order to setup interrupts for the > hardware domain when running in PVH mode. physdev_map_pirq() will > call allocate_and_map_{gsi,msi}_pirq() which is already used by the > vIO-APIC or the vPCI code respectively. So the exposed code paths are > not new when targeting a PVH domain, but rather previous callers are > not hypercall but emulation based. > > Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com> > Signed-off-by: Huang Rui <ray.huang@amd.com> > Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com> Acked-by: Jan Beulich <jbeulich@suse.com>
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c index f023f7879e24..81883c8d4f60 100644 --- a/xen/arch/x86/hvm/hypercall.c +++ b/xen/arch/x86/hvm/hypercall.c @@ -73,6 +73,8 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) { case PHYSDEVOP_map_pirq: case PHYSDEVOP_unmap_pirq: + break; + case PHYSDEVOP_eoi: case PHYSDEVOP_irq_status_query: case PHYSDEVOP_get_free_pirq: