[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] Dom0 hypercall for adding and removing PCI devices
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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |