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

Re: [Xen-devel] Dom0 hypercall for adding and removing PCI devices



Then what you do already (leave the device assigned to dom0) is the best you
can do. That's easy.

 -- Keir

On 24/7/08 10:14, "Han, Weidong" <weidong.han@xxxxxxxxx> wrote:

> VT-d spec says: Software must not modify fields other than the Present (P)
> field of currently present root-entries or context-entries. If modifications
> to other fields are required, software must first make these entries
> not-present (P=0), which requires serial invalidation of context-cache and
> IOTLB, and then transition them to present (P=1) state along with the
> modifications.
> 
> So your suggestion is not feasible.
> 
> Randy (Weidong)
> 
> Keir Fraser wrote:
>> Exactly my thought.
>> 
>>  K.
>> 
>> On 24/7/08 09:43, "Tian, Kevin" <kevin.tian@xxxxxxxxx> wrote:
>> 
>>> Isn't enough to first switch VT-d page table, and then flush IOTLB?
>>> As long as RMRRs are kept same in two VT-d tables, and in any
>>> time a valid entry (either in IOTLB or by walking) can be found,
>>> above sequence seems complete.
>>> 
>>> Thanks,
>>> Kevin
>>> 
>>>> From: Keir Fraser
>>>> Sent: 2008年7月24日 16:38
>>>> 
>>>> Can the pagetable switch not be made atomic (i.e., so that the RMRR
>>>> regions appear continuously available throughout)? I'd have thought
>>>> that would just naturally happen.
>>>> 
>>>> If creating/destroying RMRR mappings is part of the switch
>>>> operation, you'd have to destroy RMRR mappings in the dom0 table
>>>> after the switch, and create RMRR mappings in the fallback table
>>>> before the switch. Or just have RMRR mappings always mapped into
>>>> all tables. 
>>>> 
>>>> -- Keir
>>>> 
>>>> On 24/7/08 09:32, "Han, Weidong" <weidong.han@xxxxxxxxx> wrote:
>>>> 
>>>>> We found USB (has RMRR) is firstly assigned to dom0, but
>>>>> pci_bus_probe() failed, then it was removed from dom0. The
>>>>> removing needs switch to RMRR VT-d page table. At the same time,
>>>>> BIOS was using its RMRR.
>>>>> 
>>>>> Randy (Weidong)
>>>>> 
>>>>> Keir Fraser wrote:
>>>>>> If a device is assigned to a domain (in this case dom0) then that
>>>>>> domain's VT-d pagetables will contain the RMRR mappings for that
>>>>>> device. Hence BIOS can perform DMA in those RMRR-indicated regions
>>>>>> without swapping to and fro between domain tables and fallback
>>>>>> RMRR tables. The new fallback RMRR table would be just that -- a
>>>>>> fallback table used for any device not currently assigned to any
>>>>>> domain (and hence those devices should only have DMAs initiated
>>>>>> by the BIOS, if at all).
>>>>>> 
>>>>>>  -- Keir
>>>>>> 
>>>>>> On 24/7/08 09:20, "Han, Weidong" <weidong.han@xxxxxxxxx> wrote:
>>>>>> 
>>>>>>> I have another concern, when BIOS is initiating DMA operation
>>>>>>> using RMRR, can we use RMRR VT-d page table to replace dom0 VT-d
>>>>>>> page table? Does it result in some DMA failures?
>>>>>>> 
>>>>>>> Randy (weidong)
>>>>>>> 
>>>>>>> Han, Weidong wrote:
>>>>>>>> Espen Skoglund wrote:
>>>>>>>>> [Keir Fraser]
>>>>>>>>>> On 23/7/08 10:26, "Han, Weidong" <weidong.han@xxxxxxxxx>
>>>>>>>>>> wrote: 
>>>>>>>>>>>> So this would be one extra VT-d pagetable, for the whole
>>>>>>>>>>>> system, which would be the fallback location for RMRR
>>>>>>>>>>>> mappings for devices which are currently not assigned to
>>>>>>>>>>>> any domain? Thus allowing firmware to successfully initiate
>>>>>>>>>>>> DMA operations on those devices? Sounds sensible.
>>>>>>>>> 
>>>>>>>>> Well, the VT-d page table for RMRR devices need not contain the
>>>>>>>>> whole system memory---only those regions specified in the DMAR
>>>>>>>>> tables. 
>>>>>>>>> 
>>>>>>>>>>> Is it possible that idle_domain owns the RMRR VT-d page
>>>>>>>>>>> table? 
>>>>>>>>> 
>>>>>>>>>> If that's a convenient place to stash it then why not? Either
>>>>>>>>>> way, seems you're going to have it special-cased in the code
>>>>>>>>>> as fallback owner for unassigned devices. It's possible that
>>>>>>>>>> having it stashed in the idle domain will simply make the
>>>>>>>>>> code more confusing. I'm not sure though.
>>>>>>>>> 
>>>>>>>>> Right.  I don't see any particular good reason to associate it
>>>>>>>>> with the idle domain.  As noted above, the page table need not
>>>>>>>>> even cover the whole memory, and it will never change after
>>>>>>>>> being set up at boot time.  If special case code is needed
>>>>>>>>> anyway, then one might as well install a custom VT-d page
>>>>>>>>> table. 
>>>>>>>> 
>>>>>>>> What does "custom VT-d page table" mean?
>>>>>>>> 
>>>>>>>> Due to domain id is not the same with DID field in context, we
>>>>>>>> can reverse a DID for RMRR VT-d page table, it can avoid to
>>>>>>>> associate with idle domain.
>>>>>>>> 
>>>>>>>> Currently we reassign the device from dom0 to target domain when
>>>>>>>> assign a device, and return the device to dom0 when target
>>>>>>>> domain tears down. It's not correct due to some devices may be
>>>>>>>> not assigned to any domain. Current device_assigned() also
>>>>>>>> needs to be changed. Maybe it needs more changes on VT-d.
>>>>>>>> 
>>>>>>>> I have some concerns, maybe I missed something. Why did you use
>>>>>>>> dom0 hypercall approach to replace original method? What's the
>>>>>>>> main benefit? I also wonder it's suitable to wrap
>>>>>>>> pci_bus_probe() function.
>>>>>>>> 
>>>>>>>> Randy (Weidong)
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> If supported by hardware, the extra page tables can even be
>>>>>>>>> skipped altogether and the device marked as having passthrough
>>>>>>>>> access. That would give the RMRR device complete access to
>>>>>>>>> system memory, though.
>>>>>>>>> 
>>>>>>>>> eSk
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Xen-devel mailing list
>>>> Xen-devel@xxxxxxxxxxxxxxxxxxx
>>>> http://lists.xensource.com/xen-devel
> 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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