<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Sep 4, 2015 at 12:17 PM, Bradley Davis <span dir="ltr"><<a href="mailto:bradleydavisjr@gmail.com" target="_blank">bradleydavisjr@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">It appears my last message wasn't delivered by google.<br><br><span>What is the feature called that Xeon E5s have that others do not? I'm not<br>
seeing references to ACS on Intel ARC. I have an Intel Xeon X5660 and i'm<br>
trying to see if my processor has the feature. Maybe I just got lucky with<br>
my motherboard having each PCIe slot in its IOMMU group.</span></div></blockquote><div><br></div><div>It's ACS, Access Control Services.  It's not specified on ARK.  It's a PCIe capability that let's the OS configure whether the PCIe root port is allowed to do things like redirect a transaction before being translated by the IOMMU or whether the root port is required to enforce source validation to prevent a malicious device from spoofing itself as another.  For root ports, the capability generally needs to be configurable, it's not really enough to have a read-only implementation, so don't jump too quickly if you see it there, the right set of control bits need to be enabled.</div><div><br></div><div>The Xeon 5600 series (Westmere) is relatively old, I don't think that E5 class existed back then, but it's similar to my W3520 (Nehalem), which does support ACS on the processor root ports.  You probably see something like this in lspci for those root ports:</div><div><br></div><div><div>        Capabilities: [150 v1] Access Control Services</div><div>                ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-</div><div>                ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-</div></div><div><br></div><div>Those '+' marks in the ACSCtl line are important, see the PCIe spec for a description of each.  You'll also notice that the PCH (well, in this case ICH) root ports do not support ACS.  We also have no kernel quirks that enable "ACS equivalent isolation" for ICH root ports, and I don't expect to be getting any for such an old system.  So yes, your system likely supports ACS, but you are also getting lucky that you're plugging the cards to be assigned into the processor root ports rather than the ICH root ports.  Most people need to do the opposite, install the assigned devices into PCH root ports, which have quirks to enable the ACS equivalent isolation, while the processor root ports do not have native ACS support and Intel has no plans to tell us how to implement ACS equivalent isolation via quirks for those root ports.</div><div><br></div><div>Xeon E5 systems should have native ACS support for the processor root ports and quirks for the PCH root ports (hopefully native support there eventually too), so we should at least have a good foundation for isolation on those systems.  Of course if you read my blog post on IOMMU groups, you know that isolation needs to be end-to-end, so switches and bridges downstream can also break isolation, but the further downstream the problem, the smaller the IOMMU group.  Thanks,</div><div><br></div><div>Alex</div></div></div></div>