[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


 


Rackspace

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