[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] fix XSA-46 regression with xend/xm
On Tue, 2013-05-21 at 09:40 +0100, Jan Beulich wrote: > The hypervisor side changes for XSA-46 require the tool stack to now > always map the guest pIRQ before granting access permission to the > underlying host IRQ (GSI). This in particular requires that pciif.py > no longer can skip this step (assuming qemu would do it) for HVM > guests. > > This in turn exposes, however, an inconsistency between xend and qemu: > The former wants to always establish 1:1 mappings between pIRQ and host > IRQ (for non-MSI only of course), while the latter always wants to > allocate an arbitrary mapping. Since the whole tool stack obviously > should always agree on the mapping model, make libxc enforce the 1:1 > mapping as the more natural one (as well as being the one that allows > for easier debugging, since there no need to find out the extra > mapping). Users of libxc that want to establish a particular (rather > than an allocated) mapping are still free to do so, as well as tool > stacks not based on libxc wanting to implement an allocation based > model (which is why it's not the hypervisor that's being changed to > enforce either model). > > Since libxl, like xend, already uses a 1:1 model, it's unaffected by > the libxc change (and it being unaffected by the original hypervisor > side changes is - afaict - simply due to qemu getting spawned at a > later point in time compared to the xend event flow). > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > Tested-by: Andreas Falck <falck.andreas.lists@xxxxxxxxx> (on 4.1) > Tested-by: Gordan Bobic <gordan@xxxxxxxxxx> (on 4.2) In both cases tested with xend rather than xl or both? Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > --- a/tools/libxc/xc_physdev.c > +++ b/tools/libxc/xc_physdev.c > @@ -49,7 +49,7 @@ int xc_physdev_map_pirq(xc_interface *xc > map.domid = domid; > map.type = MAP_PIRQ_TYPE_GSI; > map.index = index; > - map.pirq = *pirq; > + map.pirq = *pirq < 0 ? index : *pirq; > > rc = do_physdev_op(xch, PHYSDEVOP_map_pirq, &map, sizeof(map)); > > --- a/tools/python/xen/xend/server/pciif.py > +++ b/tools/python/xen/xend/server/pciif.py > @@ -340,7 +340,7 @@ class PciController(DevController): > raise VmError(('pci: failed to configure I/O memory on > device '+ > '%s - errno=%d')%(dev.name,rc)) > > - if not self.vm.info.is_hvm() and dev.irq: > + if dev.irq > 0: > rc = xc.physdev_map_pirq(domid = fe_domid, > index = dev.irq, > pirq = dev.irq) > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |