[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] fix XSA-46 regression with xend/xm
>>> On 21.05.13 at 10:56, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote: > 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? Both of them run xend only afaik. > 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 |