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

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



>>> On 15.03.12 at 11:12, "Jan Beulich" <JBeulich@xxxxxxxx> wrote:
>>>> 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.

I'd really appreciate some advice here.

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