jlay / kernel-acspatch


4.19+ kernel with add-acs-overrides patch from Arch AUR:

AUR linux-vfio


Installation Instructions

1 Enable the repository:

dnf copr enable jlay/kernel-acspatch

2 Add pci_acs_override= to GRUB_CMDLINE_LINUX as necessary in /etc/sysconfig/grub

pci_acs_override notes

pcie_acs_override = [PCIE] Override missing PCIe ACS support for: downstream All downstream ports - full ACS capabilties multifunction All multifunction devices - multifunction ACS subset id:nnnn:nnnn Specfic device - full ACS capabilities Specified as vid:did (vendor/device ID) in hex

Here is my full GRUB_CMDLINE_LINUX in /etc/sysconfig/grub for reference:

GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/root rd.luks.uuid=luks-c6218459-1ccd-40b3-90da-da2b844a705e rd.lvm.lv=fedora/swap rhgb quiet iommu=1 amd_iommu=on pcie_acs_override=downstream,multifunction,id:1022:43b4 rd.driver.pre=vfio-pci default_hugepagesz=1G hugepagesz=1G hugepages=16 transparent_hugepage=never nordrand libata.noacpi=1"

I specify many (and possibly redundant) options for pci_acs_override (downstream,multifunction,id=1022:43b4) - not all of them may be necessary. Setting pcie_acs_override=downstream alone may be sufficient.

If using id=, you should provide the ID for the PCI-e bridge device connected to the PCI-e device you want in another IOMMU group. In my example above, I provide the ID for the PCI-e bridge connected to my Sound Blaster Z so that it is assigned a new IOMMU group and can be passed to a VM (VFIO):

[jlay@workstation ~]$ sudo lspci -nn | grep 1022:43b4 03:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port [1022:43b4] (rev 02) [...] 03:07.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port [1022:43b4] (rev 02)

The other CMDLINE settings I've provided are those I've set for general IOMMU/VFIO use - 16GB hugepages, enabling AMD IOMMU, and so on. They are not necessary for this patch (only pcie_acs_override for subdividing IOMMU groups further) but may prove useful for those on Ryzen systems (particularly nordrand to improve /dev/random performance).

3 Install the updated kernel:

dnf update kernel --refresh

Active Releases

The following unofficial repositories are provided as-is by owner of this project. Contact the owner directly for bugs or issues (IE: not bugzilla).

Release Architectures Repo Download
Fedora 27 x86_64 (0)* Fedora 27 (33 downloads)
Fedora 28 x86_64 (0)* Fedora 28 (121 downloads)
Fedora 29 x86_64 (0)* Fedora 29 (33 downloads)
Fedora rawhide x86_64 (0)* Fedora rawhide (2 downloads)

* Total number of packages downloaded in the last seven days.