<div dir="ltr"><div><div><div>Hi again,<br><br></div>Thanks a lot for investigating. I've reported the issue to the manufacturer.<br><br><br></div>Thanks,<br></div>sarnex<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Sep 17, 2016 at 5:35 PM, Alex Williamson <span dir="ltr"><<a href="mailto:alex.l.williamson@gmail.com" target="_blank">alex.l.williamson@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Sat, Sep 17, 2016 at 12:29 PM, Nick Sarnie <span dir="ltr"><<a href="mailto:commendsarnex@gmail.com" target="_blank">commendsarnex@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><div dir="ltr"><div><div><div>Hi Alex, <br><br></div>The output is here: <a href="http://pastebin.com/raw/qjnpuaVr" target="_blank">http://pastebin.com/raw/qjnpua<wbr>Vr</a> <br></div></div></div></span></blockquote><div><br></div></span><div>Ok, you need to go complain to your motherboard manufacturer, they're the ones hiding the ACS capability.  PCIe capabilities always start at 0x100, the dword there is:</div><div><br></div><div>100: 01 00 01 22 = 0x22010001<br></div><div><br></div><div>Breaking that down, the capability at 0x100 is ID 0x0001 (AER), version 0x1, and the next capability is at 0x220.  So we do the same there:</div><div><br></div><div>220: 19 00 01 00 = 0x00010019<br></div><div><br></div><div>Capability ID 0x0019 (Secondary PCIe), version 0x1, next capability 0x0, terminating the capability list.</div><div><br></div><div>Per Intel documentation for the chipset (<a href="http://www.intel.com/content/www/us/en/chipsets/100-series-chipset-datasheet-vol-2.html" target="_blank">http://www.intel.com/content/<wbr>www/us/en/chipsets/100-series-<wbr>chipset-datasheet-vol-2.html</a>), the ACS capability and control registers live at 0x144 and 0x148 respectively and we can see that you do have data here matching the default value of the capability register:</div><div><br></div><div><div>140: 00 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00</div></div><div><br></div><div>ie. default value of 0x144 is 0xf.  It appears that this BIOS vendor didn't connect the capability into the chain or fill in the capability header.  The registers to do this are RW/O, ie. Read-Write-Once.  IOW, the registers can only be written once, which is intended to be used by the BIOS.  The capability bits themselves are RW/O, allowing vendors to expose different sets of ACS capabilities.  Given that this vendor has not exposed the capability, we have no basis to believe that the default value of the register represents the real capabilities of the system and therefore we cannot assume we're able to control ACS.  File a bug with the vendor or look for a BIOS update where they may have already fixed this.</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><div dir="ltr"><div><div>Also,
 is there any way we could move the USB controller into its own group, 
or remove the Ethernet and SATA controller into a seperate group? 
Ideally, I could pass the USB Controller in group 7 without the ACS 
patch.</div></div></div></span></blockquote><div><br></div></span><div>That's not how IOMMU groups works.  See  <a href="http://vfio.blogspot.com/2014/08/iommu-groups-inside-and-out.html" target="_blank">http://vfio.blogspot.com/<wbr>2014/08/iommu-groups-inside-<wbr>and-out.html</a>  We aren't creating these groups arbitrarily, we base them on the information provided to use by the IOMMU driver and PCI topology features, including ACS.  If we cannot determine that there is isolation between components, we must assume that they are not isolated.  Your choices are to run an unsupported (and unsupportable) configuration using the ACS override patch, get your hardware vendor to fix their platform, or upgrade to better hardware with better isolation characteristics.</div></div></div></div>
</blockquote></div><br></div>