[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/hvm: allow {,un}map_pirq hypercalls unconditionally
commit 035baa203b978b219828d0d3c16057beb344f35c Author: Jiqian Chen <Jiqian.Chen@xxxxxxx> AuthorDate: Wed Sep 11 12:58:24 2024 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed Sep 11 12:58:24 2024 +0200 x86/hvm: allow {,un}map_pirq hypercalls unconditionally 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@xxxxxxx> Signed-off-by: Huang Rui <ray.huang@xxxxxxx> Signed-off-by: Jiqian Chen <Jiqian.Chen@xxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/hvm/hypercall.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c index f023f7879e..81883c8d4f 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: -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |