[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] VMX status report. Xen:24911 & Dom0: d93dc5c4...



>>> On 14.03.12 at 07:08, "Ren, Yongjie" <yongjie.ren@xxxxxxxxx> wrote:
>>  -----Original Message-----
>> From: xen-devel-bounces@xxxxxxxxxxxxx 
>> [mailto:xen-devel-bounces@xxxxxxxxxxxxx] On Behalf Of Jan Beulich
>> Sent: Tuesday, March 13, 2012 7:34 PM
>> To: Zhou, Chao
>> Cc: xen-devel
>> Subject: Re: [Xen-devel] VMX status report. Xen:24911 & Dom0:
>> d93dc5c4...
>> 
>> >>> On 13.03.12 at 10:18, "Zhou, Chao" <chao.zhou@xxxxxxxxx> wrote:
>> > 1. when detaching a VF from hvm guest, "xl dmesg" will show some
>> warning
>> > information
>> >   http://bugzilla.xen.org/bugzilla/show_bug.cgi?id=1809 
>> 
>> Could you give the qemu-traditional patch below a try (and report
>> the resulting "xl dmesg" regardless of whether this eliminates the
>> warning)?
>> 
> Yes, we tried your below patch. The warning still exists.
> Attached is the output of 'xl dmesg' after detaching a VF.

Okay, so this apparently is an ordering problem:

unregister_real_device()
  -> pt_config_delete()
    -> pt_msix_delete() (frees [and fails to clear] ->msix)
  -> pt_unregister_regions()
    -> _pt_iomem_helper() (with the patch below)
      -> has_msix_mapping() (uses ->msix)

As it is obviously necessary to call _pt_iomem_helper() (rather than
xc_domain_memory_mapping() directly) from pt_unregister_regions(),
it needs to be determined whether
- the calls to pt_config_delete() and pt_unregister_regions() can be
  swapped, or
- the calling of pt_msix_delete() (and for consistency also the freeing
  of ->msi) can be moved into or past the call to
  pt_unregister_regions(), or
- yet something else can be done about this.

Jan

>> --- a/hw/pass-through.c
>> +++ b/hw/pass-through.c
>> @@ -1969,11 +1969,9 @@ static void pt_unregister_regions(struct
>>          if ( type == PCI_ADDRESS_SPACE_MEM ||
>>               type == PCI_ADDRESS_SPACE_MEM_PREFETCH )
>>          {
>> -            ret = xc_domain_memory_mapping(xc_handle, domid,
>> -                    assigned_device->bases[i].e_physbase >>
>> XC_PAGE_SHIFT,
>> -                    assigned_device->bases[i].access.maddr >>
>> XC_PAGE_SHIFT,
>> -                    (e_size+XC_PAGE_SIZE-1) >> XC_PAGE_SHIFT,
>> -                    DPCI_REMOVE_MAPPING);
>> +            ret = _pt_iomem_helper(assigned_device, i,
>> +
>> assigned_device->bases[i].e_physbase,
>> +                                   e_size,
>> DPCI_REMOVE_MAPPING);
>>              if ( ret != 0 )
>>              {
>>                  PT_LOG("Error: remove old mem mapping failed!\n");
>> 
>> 
>> 
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@xxxxxxxxxxxxx 
>> http://lists.xen.org/xen-devel 




_______________________________________________
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®.