[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] RE: Resend: RE: enable_ats_device() call site
> So why does the capability to list individual devices then exist? And why > does it matter for DRHDs, but not for ATSRs? The difference is ATSR only is meant to communicate PCIe root ports' ATS capability. If the root port is capable, then downstream endpoints can enable ATS device translation cache. acpi_find_matched_drhd_unit() is used to find out which VT-d hardware is servicing the endpoint device. Given drhd lists either the actually PCI endpoints or include_all, we have to match the actual BDF of the device passed in with devices we recorded for that VT-d HW. acpi_find_matched_astr_unit() is used to find out if the endpoint device is under a ATS capable PCIe root port or not. ASTR information is remembered as secondary and subsidiary bus ranges. All we have to do is the match the device's bus number with a root ports bus range. Matching the actual device in this case, will only match the root port device itself, this is what we recorded in acpi_parse_dev_scope(), which should not happen since we don't assign a root port to a guest. Even if we do, checking for ATS capability is meaningless since root port will not have device translation cache. Allen -----Original Message----- From: Jan Beulich [mailto:JBeulich@xxxxxxxx] Sent: Thursday, October 20, 2011 12:24 AM To: Kay, Allen M Cc: Dugger, Donald D; Shan, Haitao; Tian, Kevin; xen-devel@xxxxxxxxxxxxxxxxxxx Subject: RE: Resend: RE: enable_ats_device() call site >>> On 20.10.11 at 00:20, "Kay, Allen M" <allen.m.kay@xxxxxxxxx> wrote: >> I reckon that the availability of device specifications in the ATSR >> data > structure must be there for a purpose. >> If that's not correct, then I'll certainly remove that code again, >> but I'd > like to understand what that data is meant >> to be for in that case. > > The atsr leverages the same PCI device scope is used for drhd and rmrr > so device and function comes along with bus number. As far as I can > tell, we only need to check the bus number for atsr. So why does the capability to list individual devices then exist? And why does it matter for DRHDs, but not for ATSRs? >> Either we don't need to call it at all during discovery (which I >> doubt, > since when the device is in use by Dom0, I >> suppose having ATS enabled is still desirable or even required), or >> we have > to potentially do it twice (remember >> that older Dom0 kernels may fail to report all PCI devices to the > hypervisor). > > I see, calling enable_ats_device() in pci_add_device() will also solve > the case where MMCFG might not work until after dom0 is initialized. > > As I mentioned before, our QA team doesn't test ATS and ACS regularly. > It would good if you can coordinate with our QA team to test out these > changes to make sure they don't break any ACS and ATS functionality. How would I do that other than by getting the stuff committed and wait for their bi-weekly(?) testing round? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |