ACS: Difference between revisions
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
You can check whether ACS is enabled on PCI bridges by running: | You can check whether ACS is enabled on PCI bridges by running: | ||
sudo lspci -vvv | grep ACSCtl | sudo lspci -vvv | grep ACSCtl | ||
If lines show “'''SrcValid+'''”, then ACS might be enabled. Looking at the full output of lspci, one can check if a PCI bridge has ACS enabled. | |||
sudo lspci -vvv | |||
If lines show “'''ACSCtl: SrcValid+'''”, then ACS might be enabled. Looking at the full output of lspci, one can check if a PCI bridge has ACS enabled. | |||
sudo lspci -vvv | |||
If PCI switches have ACS enabled, it needs to be disabled. On some systems this can be done from the BIOS by disabling IO virtualization or VT-d. For Broadcom PLX devices, it can be done from the OS but needs to be done again after each reboot. | If PCI switches have ACS enabled, it needs to be disabled. On some systems this can be done from the BIOS by disabling IO virtualization or VT-d. For Broadcom PLX devices, it can be done from the OS but needs to be done again after each reboot. | ||
Use the command below to find the PCI bus IDs of PLX PCI bridges: | Use the command below to find the PCI bus IDs of PLX PCI bridges: | ||
sudo lspci | grep | sudo lspci -vvv | grep ACSCtrl | ||
Next, use setpci to disable ACS with the command below, replacing 03:00.0 by the PCI bus ID of each PCI bridge. | Next, use setpci to disable ACS with the command below, replacing 03:00.0 by the PCI bus ID of each PCI bridge. | ||
run "setpci -s bus#:slot#.func# f2a.w=0000" to disable ACSCtl on the PLX switch. | |||
e.g. | |||
<nowiki>#</nowiki>setpci -s 03:08.0 f2a.w=0000 *assume 03:08.0 is the PLX pcie switch* | |||
run lspci -vvv to confirm ACSCtrl is disabled on PLX switch. | |||
sudo setpci -s 03:00.0 f2a.w=0000 | sudo setpci -s 03:00.0 f2a.w=0000 |
Revision as of 17:01, 18 March 2023
PCI Access Control Services (ACS) used for IO virtualization (also known as, VT-d or IOMMU).
You can check whether ACS is enabled on PCI bridges by running:
sudo lspci -vvv | grep ACSCtl
If lines show “ACSCtl: SrcValid+”, then ACS might be enabled. Looking at the full output of lspci, one can check if a PCI bridge has ACS enabled.
sudo lspci -vvv
If PCI switches have ACS enabled, it needs to be disabled. On some systems this can be done from the BIOS by disabling IO virtualization or VT-d. For Broadcom PLX devices, it can be done from the OS but needs to be done again after each reboot.
Use the command below to find the PCI bus IDs of PLX PCI bridges:
sudo lspci -vvv | grep ACSCtrl
Next, use setpci to disable ACS with the command below, replacing 03:00.0 by the PCI bus ID of each PCI bridge.
run "setpci -s bus#:slot#.func# f2a.w=0000" to disable ACSCtl on the PLX switch.
e.g.
#setpci -s 03:08.0 f2a.w=0000 *assume 03:08.0 is the PLX pcie switch*
run lspci -vvv to confirm ACSCtrl is disabled on PLX switch.
sudo setpci -s 03:00.0 f2a.w=0000