[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.