1d22157b3SChris WrightWhat: /sys/bus/pci/drivers/.../bind 2bab2f3c1SMauro Carvalho ChehabWhat: /sys/devices/pciX/.../bind 3d22157b3SChris WrightDate: December 2003 4d22157b3SChris WrightContact: linux-pci@vger.kernel.org 5d22157b3SChris WrightDescription: 6d22157b3SChris Wright Writing a device location to this file will cause 7d22157b3SChris Wright the driver to attempt to bind to the device found at 8d22157b3SChris Wright this location. This is useful for overriding default 9d22157b3SChris Wright bindings. The format for the location is: DDDD:BB:DD.F. 10d22157b3SChris Wright That is Domain:Bus:Device.Function and is the same as 1154a19b4dSMauro Carvalho Chehab found in /sys/bus/pci/devices/. For example:: 1254a19b4dSMauro Carvalho Chehab 13d22157b3SChris Wright # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/bind 1454a19b4dSMauro Carvalho Chehab 15d22157b3SChris Wright (Note: kernels before 2.6.28 may require echo -n). 16d22157b3SChris Wright 17d22157b3SChris WrightWhat: /sys/bus/pci/drivers/.../unbind 18bab2f3c1SMauro Carvalho ChehabWhat: /sys/devices/pciX/.../unbind 19d22157b3SChris WrightDate: December 2003 20d22157b3SChris WrightContact: linux-pci@vger.kernel.org 21d22157b3SChris WrightDescription: 22d22157b3SChris Wright Writing a device location to this file will cause the 23d22157b3SChris Wright driver to attempt to unbind from the device found at 24d22157b3SChris Wright this location. This may be useful when overriding default 25d22157b3SChris Wright bindings. The format for the location is: DDDD:BB:DD.F. 26d22157b3SChris Wright That is Domain:Bus:Device.Function and is the same as 2754a19b4dSMauro Carvalho Chehab found in /sys/bus/pci/devices/. For example:: 2854a19b4dSMauro Carvalho Chehab 29d22157b3SChris Wright # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/unbind 3054a19b4dSMauro Carvalho Chehab 31d22157b3SChris Wright (Note: kernels before 2.6.28 may require echo -n). 32d22157b3SChris Wright 33d22157b3SChris WrightWhat: /sys/bus/pci/drivers/.../new_id 34bab2f3c1SMauro Carvalho ChehabWhat: /sys/devices/pciX/.../new_id 35d22157b3SChris WrightDate: December 2003 36d22157b3SChris WrightContact: linux-pci@vger.kernel.org 37d22157b3SChris WrightDescription: 38d22157b3SChris Wright Writing a device ID to this file will attempt to 39d22157b3SChris Wright dynamically add a new device ID to a PCI device driver. 40d22157b3SChris Wright This may allow the driver to support more hardware than 41d22157b3SChris Wright was included in the driver's static device ID support 42d22157b3SChris Wright table at compile time. The format for the device ID is: 43d22157b3SChris Wright VVVV DDDD SVVV SDDD CCCC MMMM PPPP. That is Vendor ID, 44d22157b3SChris Wright Device ID, Subsystem Vendor ID, Subsystem Device ID, 45d22157b3SChris Wright Class, Class Mask, and Private Driver Data. The Vendor ID 46d22157b3SChris Wright and Device ID fields are required, the rest are optional. 47d22157b3SChris Wright Upon successfully adding an ID, the driver will probe 4854a19b4dSMauro Carvalho Chehab for the device and attempt to bind to it. For example:: 4954a19b4dSMauro Carvalho Chehab 50d22157b3SChris Wright # echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id 51d22157b3SChris Wright 520994375eSChris WrightWhat: /sys/bus/pci/drivers/.../remove_id 53bab2f3c1SMauro Carvalho ChehabWhat: /sys/devices/pciX/.../remove_id 540994375eSChris WrightDate: February 2009 550994375eSChris WrightContact: Chris Wright <chrisw@sous-sol.org> 560994375eSChris WrightDescription: 570994375eSChris Wright Writing a device ID to this file will remove an ID 580994375eSChris Wright that was dynamically added via the new_id sysfs entry. 590994375eSChris Wright The format for the device ID is: 600994375eSChris Wright VVVV DDDD SVVV SDDD CCCC MMMM. That is Vendor ID, Device 610994375eSChris Wright ID, Subsystem Vendor ID, Subsystem Device ID, Class, 620994375eSChris Wright and Class Mask. The Vendor ID and Device ID fields are 630994375eSChris Wright required, the rest are optional. After successfully 640994375eSChris Wright removing an ID, the driver will no longer support the 650994375eSChris Wright device. This is useful to ensure auto probing won't 6654a19b4dSMauro Carvalho Chehab match the driver to the device. For example:: 6754a19b4dSMauro Carvalho Chehab 680994375eSChris Wright # echo "8086 10f5" > /sys/bus/pci/drivers/foo/remove_id 690994375eSChris Wright 70705b1aaaSAlex ChiangWhat: /sys/bus/pci/rescan 71705b1aaaSAlex ChiangDate: January 2009 72705b1aaaSAlex ChiangContact: Linux PCI developers <linux-pci@vger.kernel.org> 73705b1aaaSAlex ChiangDescription: 74705b1aaaSAlex Chiang Writing a non-zero value to this attribute will 75705b1aaaSAlex Chiang force a rescan of all PCI buses in the system, and 76705b1aaaSAlex Chiang re-discover previously removed devices. 77705b1aaaSAlex Chiang 78468ff15aSYijing WangWhat: /sys/bus/pci/devices/.../msi_bus 79468ff15aSYijing WangDate: September 2014 80468ff15aSYijing WangContact: Linux PCI developers <linux-pci@vger.kernel.org> 81468ff15aSYijing WangDescription: 82468ff15aSYijing Wang Writing a zero value to this attribute disallows MSI and 83468ff15aSYijing Wang MSI-X for any future drivers of the device. If the device 84468ff15aSYijing Wang is a bridge, MSI and MSI-X will be disallowed for future 85468ff15aSYijing Wang drivers of all child devices under the bridge. Drivers 86468ff15aSYijing Wang must be reloaded for the new setting to take effect. 87468ff15aSYijing Wang 88b50cac55SNeil HormanWhat: /sys/bus/pci/devices/.../msi_irqs/ 89b50cac55SNeil HormanDate: September, 2011 90b50cac55SNeil HormanContact: Neil Horman <nhorman@tuxdriver.com> 91b50cac55SNeil HormanDescription: 92b50cac55SNeil Horman The /sys/devices/.../msi_irqs directory contains a variable set 931c51b50cSGreg Kroah-Hartman of files, with each file being named after a corresponding msi 941c51b50cSGreg Kroah-Hartman irq vector allocated to that device. 95b50cac55SNeil Horman 961c51b50cSGreg Kroah-HartmanWhat: /sys/bus/pci/devices/.../msi_irqs/<N> 97b50cac55SNeil HormanDate: September 2011 98b50cac55SNeil HormanContact: Neil Horman <nhorman@tuxdriver.com> 99b50cac55SNeil HormanDescription: 100b50cac55SNeil Horman This attribute indicates the mode that the irq vector named by 1011c51b50cSGreg Kroah-Hartman the file is in (msi vs. msix) 102b50cac55SNeil Horman 1035e3be666SBarry SongWhat: /sys/bus/pci/devices/.../irq 1045e3be666SBarry SongDate: August 2021 1055e3be666SBarry SongContact: Linux PCI developers <linux-pci@vger.kernel.org> 1065e3be666SBarry SongDescription: 1075e3be666SBarry Song If a driver has enabled MSI (not MSI-X), "irq" contains the 1085e3be666SBarry Song IRQ of the first MSI vector. Otherwise "irq" contains the 1095e3be666SBarry Song IRQ of the legacy INTx interrupt. 1105e3be666SBarry Song 1115e3be666SBarry Song "irq" being set to 0 indicates that the device isn't 1125e3be666SBarry Song capable of generating legacy INTx interrupts. 1135e3be666SBarry Song 11477c27c7bSAlex ChiangWhat: /sys/bus/pci/devices/.../remove 11577c27c7bSAlex ChiangDate: January 2009 11677c27c7bSAlex ChiangContact: Linux PCI developers <linux-pci@vger.kernel.org> 11777c27c7bSAlex ChiangDescription: 11877c27c7bSAlex Chiang Writing a non-zero value to this attribute will 11977c27c7bSAlex Chiang hot-remove the PCI device and any of its children. 12077c27c7bSAlex Chiang 121b9d320fcSYinghai LuWhat: /sys/bus/pci/devices/.../pci_bus/.../rescan 122b9d320fcSYinghai LuDate: May 2011 123b9d320fcSYinghai LuContact: Linux PCI developers <linux-pci@vger.kernel.org> 124b9d320fcSYinghai LuDescription: 125b9d320fcSYinghai Lu Writing a non-zero value to this attribute will 126b9d320fcSYinghai Lu force a rescan of the bus and all child buses, 127b9d320fcSYinghai Lu and re-discover devices removed earlier from this 12840b31360SStephen Rothwell part of the device tree. 129b9d320fcSYinghai Lu 130738a6396SAlex ChiangWhat: /sys/bus/pci/devices/.../rescan 131738a6396SAlex ChiangDate: January 2009 132738a6396SAlex ChiangContact: Linux PCI developers <linux-pci@vger.kernel.org> 133738a6396SAlex ChiangDescription: 134738a6396SAlex Chiang Writing a non-zero value to this attribute will 135738a6396SAlex Chiang force a rescan of the device's parent bus and all 136738a6396SAlex Chiang child buses, and re-discover devices removed earlier 137738a6396SAlex Chiang from this part of the device tree. 138738a6396SAlex Chiang 139d88f521dSAmey NarkhedeWhat: /sys/bus/pci/devices/.../reset_method 140d88f521dSAmey NarkhedeDate: August 2021 141d88f521dSAmey NarkhedeContact: Amey Narkhede <ameynarkhede03@gmail.com> 142d88f521dSAmey NarkhedeDescription: 143d88f521dSAmey Narkhede Some devices allow an individual function to be reset 144d88f521dSAmey Narkhede without affecting other functions in the same slot. 145d88f521dSAmey Narkhede 146d88f521dSAmey Narkhede For devices that have this support, a file named 147d88f521dSAmey Narkhede reset_method is present in sysfs. Reading this file 148d88f521dSAmey Narkhede gives names of the supported and enabled reset methods and 149d88f521dSAmey Narkhede their ordering. Writing a space-separated list of names of 150d88f521dSAmey Narkhede reset methods sets the reset methods and ordering to be 151d88f521dSAmey Narkhede used when resetting the device. Writing an empty string 152d88f521dSAmey Narkhede disables the ability to reset the device. Writing 153d88f521dSAmey Narkhede "default" enables all supported reset methods in the 154d88f521dSAmey Narkhede default ordering. 155d88f521dSAmey Narkhede 156711d5779SMichael S. TsirkinWhat: /sys/bus/pci/devices/.../reset 157711d5779SMichael S. TsirkinDate: July 2009 158711d5779SMichael S. TsirkinContact: Michael S. Tsirkin <mst@redhat.com> 159711d5779SMichael S. TsirkinDescription: 160711d5779SMichael S. Tsirkin Some devices allow an individual function to be reset 161711d5779SMichael S. Tsirkin without affecting other functions in the same device. 162711d5779SMichael S. Tsirkin For devices that have this support, a file named reset 163711d5779SMichael S. Tsirkin will be present in sysfs. Writing 1 to this file 164711d5779SMichael S. Tsirkin will perform reset. 165711d5779SMichael S. Tsirkin 16694e61088SBen HutchingsWhat: /sys/bus/pci/devices/.../vpd 16794e61088SBen HutchingsDate: February 2008 168473153afSBen HutchingsContact: Ben Hutchings <bwh@kernel.org> 16994e61088SBen HutchingsDescription: 17094e61088SBen Hutchings A file named vpd in a device directory will be a 17194e61088SBen Hutchings binary file containing the Vital Product Data for the 17294e61088SBen Hutchings device. It should follow the VPD format defined in 17394e61088SBen Hutchings PCI Specification 2.1 or 2.2, but users should consider 1743e42d1deSCarlos Bilbao that some devices may have incorrectly formatted data. 1753e42d1deSCarlos Bilbao If the underlying VPD has a writable section then the 17694e61088SBen Hutchings corresponding section of this file will be writable. 17701db4957SYu Zhao 17824d732a9SMauro Carvalho ChehabWhat: /sys/bus/pci/devices/.../virtfn<N> 17901db4957SYu ZhaoDate: March 2009 18001db4957SYu ZhaoContact: Yu Zhao <yu.zhao@intel.com> 18101db4957SYu ZhaoDescription: 18201db4957SYu Zhao This symbolic link appears when hardware supports the SR-IOV 18301db4957SYu Zhao capability and the Physical Function driver has enabled it. 18401db4957SYu Zhao The symbolic link points to the PCI device sysfs entry of the 18501db4957SYu Zhao Virtual Function whose index is N (0...MaxVFs-1). 18601db4957SYu Zhao 18701db4957SYu ZhaoWhat: /sys/bus/pci/devices/.../dep_link 18801db4957SYu ZhaoDate: March 2009 18901db4957SYu ZhaoContact: Yu Zhao <yu.zhao@intel.com> 19001db4957SYu ZhaoDescription: 19101db4957SYu Zhao This symbolic link appears when hardware supports the SR-IOV 19201db4957SYu Zhao capability and the Physical Function driver has enabled it, 19301db4957SYu Zhao and this device has vendor specific dependencies with others. 19401db4957SYu Zhao The symbolic link points to the PCI device sysfs entry of 19501db4957SYu Zhao Physical Function this device depends on. 19601db4957SYu Zhao 19701db4957SYu ZhaoWhat: /sys/bus/pci/devices/.../physfn 19801db4957SYu ZhaoDate: March 2009 19901db4957SYu ZhaoContact: Yu Zhao <yu.zhao@intel.com> 20001db4957SYu ZhaoDescription: 20101db4957SYu Zhao This symbolic link appears when a device is a Virtual Function. 20201db4957SYu Zhao The symbolic link points to the PCI device sysfs entry of the 20301db4957SYu Zhao Physical Function this device associates with. 204c825bc94SKenji Kaneshige 2059919c339SMauro Carvalho ChehabWhat: /sys/bus/pci/devices/.../modalias 2069919c339SMauro Carvalho ChehabDate: May 2005 2079919c339SMauro Carvalho ChehabContact: Greg Kroah-Hartman <gregkh@linuxfoundation.org> 2089919c339SMauro Carvalho ChehabDescription: 2099919c339SMauro Carvalho Chehab This attribute indicates the PCI ID of the device object. 2109919c339SMauro Carvalho Chehab 2119919c339SMauro Carvalho Chehab That is in the format: 2129919c339SMauro Carvalho Chehab pci:vXXXXXXXXdXXXXXXXXsvXXXXXXXXsdXXXXXXXXbcXXscXXiXX, 2139919c339SMauro Carvalho Chehab where: 2149919c339SMauro Carvalho Chehab 2159919c339SMauro Carvalho Chehab - vXXXXXXXX contains the vendor ID; 2169919c339SMauro Carvalho Chehab - dXXXXXXXX contains the device ID; 2179919c339SMauro Carvalho Chehab - svXXXXXXXX contains the sub-vendor ID; 2189919c339SMauro Carvalho Chehab - sdXXXXXXXX contains the subsystem device ID; 2199919c339SMauro Carvalho Chehab - bcXX contains the device class; 2209919c339SMauro Carvalho Chehab - scXX contains the device subclass; 2219919c339SMauro Carvalho Chehab - iXX contains the device class programming interface. 2229919c339SMauro Carvalho Chehab 223c825bc94SKenji KaneshigeWhat: /sys/bus/pci/slots/.../module 224c825bc94SKenji KaneshigeDate: June 2009 225c825bc94SKenji KaneshigeContact: linux-pci@vger.kernel.org 226c825bc94SKenji KaneshigeDescription: 227c825bc94SKenji Kaneshige This symbolic link points to the PCI hotplug controller driver 228c825bc94SKenji Kaneshige module that manages the hotplug slot. 229911e1c9bSNarendra K 230911e1c9bSNarendra KWhat: /sys/bus/pci/devices/.../label 231911e1c9bSNarendra KDate: July 2010 232911e1c9bSNarendra KContact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com 233911e1c9bSNarendra KDescription: 234911e1c9bSNarendra K Reading this attribute will provide the firmware 2356058989bSNarendra_K@Dell.com given name (SMBIOS type 41 string or ACPI _DSM string) of 2366058989bSNarendra_K@Dell.com the PCI device. The attribute will be created only 2376058989bSNarendra_K@Dell.com if the firmware has given a name to the PCI device. 2386058989bSNarendra_K@Dell.com ACPI _DSM string name will be given priority if the 2396058989bSNarendra_K@Dell.com system firmware provides SMBIOS type 41 string also. 240911e1c9bSNarendra KUsers: 241911e1c9bSNarendra K Userspace applications interested in knowing the 242911e1c9bSNarendra K firmware assigned name of the PCI device. 243911e1c9bSNarendra K 244911e1c9bSNarendra KWhat: /sys/bus/pci/devices/.../index 245911e1c9bSNarendra KDate: July 2010 246911e1c9bSNarendra KContact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com 247911e1c9bSNarendra KDescription: 24881bbf039SNiklas Schnelle Reading this attribute will provide the firmware given instance 24981bbf039SNiklas Schnelle number of the PCI device. Depending on the platform this can 25081bbf039SNiklas Schnelle be for example the SMBIOS type 41 device type instance or the 25181bbf039SNiklas Schnelle user-defined ID (UID) on s390. The attribute will be created 25281bbf039SNiklas Schnelle only if the firmware has given an instance number to the PCI 25381bbf039SNiklas Schnelle device and that number is guaranteed to uniquely identify the 25481bbf039SNiklas Schnelle device in the system. 255911e1c9bSNarendra KUsers: 256911e1c9bSNarendra K Userspace applications interested in knowing the 257911e1c9bSNarendra K firmware assigned device type instance of the PCI 258911e1c9bSNarendra K device that can help in understanding the firmware 259911e1c9bSNarendra K intended order of the PCI device. 2606058989bSNarendra_K@Dell.com 2616058989bSNarendra_K@Dell.comWhat: /sys/bus/pci/devices/.../acpi_index 2626058989bSNarendra_K@Dell.comDate: July 2010 2636058989bSNarendra_K@Dell.comContact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com 2646058989bSNarendra_K@Dell.comDescription: 2656058989bSNarendra_K@Dell.com Reading this attribute will provide the firmware 2666058989bSNarendra_K@Dell.com given instance (ACPI _DSM instance number) of the PCI device. 2676058989bSNarendra_K@Dell.com The attribute will be created only if the firmware has given 2686058989bSNarendra_K@Dell.com an instance number to the PCI device. ACPI _DSM instance number 2696058989bSNarendra_K@Dell.com will be given priority if the system firmware provides SMBIOS 2706058989bSNarendra_K@Dell.com type 41 device type instance also. 2716058989bSNarendra_K@Dell.comUsers: 2726058989bSNarendra_K@Dell.com Userspace applications interested in knowing the 2736058989bSNarendra_K@Dell.com firmware assigned instance number of the PCI 2746058989bSNarendra_K@Dell.com device that can help in understanding the firmware 2756058989bSNarendra_K@Dell.com intended order of the PCI device. 276046c6531SHuang Ying 277046c6531SHuang YingWhat: /sys/bus/pci/devices/.../d3cold_allowed 278046c6531SHuang YingDate: July 2012 279046c6531SHuang YingContact: Huang Ying <ying.huang@intel.com> 280046c6531SHuang YingDescription: 281046c6531SHuang Ying d3cold_allowed is bit to control whether the corresponding PCI 282046c6531SHuang Ying device can be put into D3Cold state. If it is cleared, the 283046c6531SHuang Ying device will never be put into D3Cold state. If it is set, the 284046c6531SHuang Ying device may be put into D3Cold state if other requirements are 285046c6531SHuang Ying satisfied too. Reading this attribute will show the current 286046c6531SHuang Ying value of d3cold_allowed bit. Writing this attribute will set 287046c6531SHuang Ying the value of d3cold_allowed bit. 2882597ba76SDonald Dutile 2892597ba76SDonald DutileWhat: /sys/bus/pci/devices/.../sriov_totalvfs 2902597ba76SDonald DutileDate: November 2012 2912597ba76SDonald DutileContact: Donald Dutile <ddutile@redhat.com> 2922597ba76SDonald DutileDescription: 2932597ba76SDonald Dutile This file appears when a physical PCIe device supports SR-IOV. 2942597ba76SDonald Dutile Userspace applications can read this file to determine the 2952597ba76SDonald Dutile maximum number of Virtual Functions (VFs) a PCIe physical 2962597ba76SDonald Dutile function (PF) can support. Typically, this is the value reported 2972597ba76SDonald Dutile in the PF's SR-IOV extended capability structure's TotalVFs 2982597ba76SDonald Dutile element. Drivers have the ability at probe time to reduce the 2992597ba76SDonald Dutile value read from this file via the pci_sriov_set_totalvfs() 3002597ba76SDonald Dutile function. 3012597ba76SDonald Dutile 3022597ba76SDonald DutileWhat: /sys/bus/pci/devices/.../sriov_numvfs 3032597ba76SDonald DutileDate: November 2012 3042597ba76SDonald DutileContact: Donald Dutile <ddutile@redhat.com> 3052597ba76SDonald DutileDescription: 3062597ba76SDonald Dutile This file appears when a physical PCIe device supports SR-IOV. 3072597ba76SDonald Dutile Userspace applications can read and write to this file to 3082597ba76SDonald Dutile determine and control the enablement or disablement of Virtual 3092597ba76SDonald Dutile Functions (VFs) on the physical function (PF). A read of this 3102597ba76SDonald Dutile file will return the number of VFs that are enabled on this PF. 3112597ba76SDonald Dutile A number written to this file will enable the specified 3122597ba76SDonald Dutile number of VFs. A userspace application would typically read the 3132597ba76SDonald Dutile file and check that the value is zero, and then write the number 3142597ba76SDonald Dutile of VFs that should be enabled on the PF; the value written 3152597ba76SDonald Dutile should be less than or equal to the value in the sriov_totalvfs 3162597ba76SDonald Dutile file. A userspace application wanting to disable the VFs would 3172597ba76SDonald Dutile write a zero to this file. The core ensures that valid values 3182597ba76SDonald Dutile are written to this file, and returns errors when values are not 3192597ba76SDonald Dutile valid. For example, writing a 2 to this file when sriov_numvfs 3202597ba76SDonald Dutile is not 0 and not 2 already will return an error. Writing a 10 3212597ba76SDonald Dutile when the value of sriov_totalvfs is 8 will return an error. 322782a985dSAlex Williamson 323782a985dSAlex WilliamsonWhat: /sys/bus/pci/devices/.../driver_override 324782a985dSAlex WilliamsonDate: April 2014 325782a985dSAlex WilliamsonContact: Alex Williamson <alex.williamson@redhat.com> 326782a985dSAlex WilliamsonDescription: 327782a985dSAlex Williamson This file allows the driver for a device to be specified which 328782a985dSAlex Williamson will override standard static and dynamic ID matching. When 329782a985dSAlex Williamson specified, only a driver with a name matching the value written 330782a985dSAlex Williamson to driver_override will have an opportunity to bind to the 331782a985dSAlex Williamson device. The override is specified by writing a string to the 332782a985dSAlex Williamson driver_override file (echo pci-stub > driver_override) and 333782a985dSAlex Williamson may be cleared with an empty string (echo > driver_override). 334782a985dSAlex Williamson This returns the device to standard matching rules binding. 335782a985dSAlex Williamson Writing to driver_override does not automatically unbind the 336782a985dSAlex Williamson device from its current driver or make any attempt to 337782a985dSAlex Williamson automatically load the specified driver. If no driver with a 338782a985dSAlex Williamson matching name is currently loaded in the kernel, the device 339782a985dSAlex Williamson will not bind to any driver. This also allows devices to 340782a985dSAlex Williamson opt-out of driver binding using a driver_override name such as 341782a985dSAlex Williamson "none". Only a single driver may be specified in the override, 342782a985dSAlex Williamson there is no support for parsing delimiters. 34363692df1SPrarit Bhargava 34463692df1SPrarit BhargavaWhat: /sys/bus/pci/devices/.../numa_node 34563692df1SPrarit BhargavaDate: Oct 2014 34663692df1SPrarit BhargavaContact: Prarit Bhargava <prarit@redhat.com> 34763692df1SPrarit BhargavaDescription: 34863692df1SPrarit Bhargava This file contains the NUMA node to which the PCI device is 34963692df1SPrarit Bhargava attached, or -1 if the node is unknown. The initial value 35063692df1SPrarit Bhargava comes from an ACPI _PXM method or a similar firmware 35163692df1SPrarit Bhargava source. If that is missing or incorrect, this file can be 35263692df1SPrarit Bhargava written to override the node. In that case, please report 35363692df1SPrarit Bhargava a firmware bug to the system vendor. Writing to this file 35463692df1SPrarit Bhargava taints the kernel with TAINT_FIRMWARE_WORKAROUND, which 35563692df1SPrarit Bhargava reduces the supportability of your system. 356702ed3beSEmil Velikov 357702ed3beSEmil VelikovWhat: /sys/bus/pci/devices/.../revision 358702ed3beSEmil VelikovDate: November 2016 359702ed3beSEmil VelikovContact: Emil Velikov <emil.l.velikov@gmail.com> 360702ed3beSEmil VelikovDescription: 36188486beeSsayli karnik This file contains the revision field of the PCI device. 362702ed3beSEmil Velikov The value comes from device config space. The file is read only. 3630e7df224SBodong Wang 3640e7df224SBodong WangWhat: /sys/bus/pci/devices/.../sriov_drivers_autoprobe 3650e7df224SBodong WangDate: April 2017 3660e7df224SBodong WangContact: Bodong Wang<bodong@mellanox.com> 3670e7df224SBodong WangDescription: 3680e7df224SBodong Wang This file is associated with the PF of a device that 3690e7df224SBodong Wang supports SR-IOV. It determines whether newly-enabled VFs 3700e7df224SBodong Wang are immediately bound to a driver. It initially contains 3710e7df224SBodong Wang 1, which means the kernel automatically binds VFs to a 3720e7df224SBodong Wang compatible driver immediately after they are enabled. If 3730e7df224SBodong Wang an application writes 0 to the file before enabling VFs, 3740e7df224SBodong Wang the kernel will not bind VFs to a driver. 3750e7df224SBodong Wang 3760e7df224SBodong Wang A typical use case is to write 0 to this file, then enable 3770e7df224SBodong Wang VFs, then assign the newly-created VFs to virtual machines. 3780e7df224SBodong Wang Note that changing this file does not affect already- 3790e7df224SBodong Wang enabled VFs. In this scenario, the user must first disable 3800e7df224SBodong Wang the VFs, write 0 to sriov_drivers_autoprobe, then re-enable 3810e7df224SBodong Wang the VFs. 3820e7df224SBodong Wang 3830e7df224SBodong Wang This is similar to /sys/bus/pci/drivers_autoprobe, but 3840e7df224SBodong Wang affects only the VFs associated with a specific PF. 385cbb8ca69SLogan Gunthorpe 386cbb8ca69SLogan GunthorpeWhat: /sys/bus/pci/devices/.../p2pmem/size 387cbb8ca69SLogan GunthorpeDate: November 2017 388cbb8ca69SLogan GunthorpeContact: Logan Gunthorpe <logang@deltatee.com> 389cbb8ca69SLogan GunthorpeDescription: 390cbb8ca69SLogan Gunthorpe If the device has any Peer-to-Peer memory registered, this 391cbb8ca69SLogan Gunthorpe file contains the total amount of memory that the device 392cbb8ca69SLogan Gunthorpe provides (in decimal). 393cbb8ca69SLogan Gunthorpe 394cbb8ca69SLogan GunthorpeWhat: /sys/bus/pci/devices/.../p2pmem/available 395cbb8ca69SLogan GunthorpeDate: November 2017 396cbb8ca69SLogan GunthorpeContact: Logan Gunthorpe <logang@deltatee.com> 397cbb8ca69SLogan GunthorpeDescription: 398cbb8ca69SLogan Gunthorpe If the device has any Peer-to-Peer memory registered, this 399cbb8ca69SLogan Gunthorpe file contains the amount of memory that has not been 400cbb8ca69SLogan Gunthorpe allocated (in decimal). 401cbb8ca69SLogan Gunthorpe 402cbb8ca69SLogan GunthorpeWhat: /sys/bus/pci/devices/.../p2pmem/published 403cbb8ca69SLogan GunthorpeDate: November 2017 404cbb8ca69SLogan GunthorpeContact: Logan Gunthorpe <logang@deltatee.com> 405cbb8ca69SLogan GunthorpeDescription: 406cbb8ca69SLogan Gunthorpe If the device has any Peer-to-Peer memory registered, this 407cbb8ca69SLogan Gunthorpe file contains a '1' if the memory has been published for 408cbb8ca69SLogan Gunthorpe use outside the driver that owns the device. 40972ea91afSHeiner Kallweit 410*6d4338cbSLogan GunthorpeWhat: /sys/bus/pci/devices/.../p2pmem/allocate 411*6d4338cbSLogan GunthorpeDate: August 2022 412*6d4338cbSLogan GunthorpeContact: Logan Gunthorpe <logang@deltatee.com> 413*6d4338cbSLogan GunthorpeDescription: 414*6d4338cbSLogan Gunthorpe This file allows mapping p2pmem into userspace. For each 415*6d4338cbSLogan Gunthorpe mmap() call on this file, the kernel will allocate a chunk 416*6d4338cbSLogan Gunthorpe of Peer-to-Peer memory for use in Peer-to-Peer transactions. 417*6d4338cbSLogan Gunthorpe This memory can be used in O_DIRECT calls to NVMe backed 418*6d4338cbSLogan Gunthorpe files for Peer-to-Peer copies. 419*6d4338cbSLogan Gunthorpe 42072ea91afSHeiner KallweitWhat: /sys/bus/pci/devices/.../link/clkpm 42172ea91afSHeiner Kallweit /sys/bus/pci/devices/.../link/l0s_aspm 42272ea91afSHeiner Kallweit /sys/bus/pci/devices/.../link/l1_aspm 42372ea91afSHeiner Kallweit /sys/bus/pci/devices/.../link/l1_1_aspm 42472ea91afSHeiner Kallweit /sys/bus/pci/devices/.../link/l1_2_aspm 42572ea91afSHeiner Kallweit /sys/bus/pci/devices/.../link/l1_1_pcipm 42672ea91afSHeiner Kallweit /sys/bus/pci/devices/.../link/l1_2_pcipm 42772ea91afSHeiner KallweitDate: October 2019 42872ea91afSHeiner KallweitContact: Heiner Kallweit <hkallweit1@gmail.com> 42972ea91afSHeiner KallweitDescription: If ASPM is supported for an endpoint, these files can be 43072ea91afSHeiner Kallweit used to disable or enable the individual power management 43172ea91afSHeiner Kallweit states. Write y/1/on to enable, n/0/off to disable. 43280a129afSMaximilian Luz 43380a129afSMaximilian LuzWhat: /sys/bus/pci/devices/.../power_state 43480a129afSMaximilian LuzDate: November 2020 43580a129afSMaximilian LuzContact: Linux PCI developers <linux-pci@vger.kernel.org> 43680a129afSMaximilian LuzDescription: 43780a129afSMaximilian Luz This file contains the current PCI power state of the device. 43880a129afSMaximilian Luz The value comes from the PCI kernel device state and can be one 43980a129afSMaximilian Luz of: "unknown", "error", "D0", D1", "D2", "D3hot", "D3cold". 44080a129afSMaximilian Luz The file is read only. 441c3d5c2d9SLeon Romanovsky 442c3d5c2d9SLeon RomanovskyWhat: /sys/bus/pci/devices/.../sriov_vf_total_msix 443c3d5c2d9SLeon RomanovskyDate: January 2021 444c3d5c2d9SLeon RomanovskyContact: Leon Romanovsky <leonro@nvidia.com> 445c3d5c2d9SLeon RomanovskyDescription: 446c3d5c2d9SLeon Romanovsky This file is associated with a SR-IOV physical function (PF). 447c3d5c2d9SLeon Romanovsky It contains the total number of MSI-X vectors available for 448c3d5c2d9SLeon Romanovsky assignment to all virtual functions (VFs) associated with PF. 449c3d5c2d9SLeon Romanovsky The value will be zero if the device doesn't support this 450c3d5c2d9SLeon Romanovsky functionality. For supported devices, the value will be 451c3d5c2d9SLeon Romanovsky constant and won't be changed after MSI-X vectors assignment. 452c3d5c2d9SLeon Romanovsky 453c3d5c2d9SLeon RomanovskyWhat: /sys/bus/pci/devices/.../sriov_vf_msix_count 454c3d5c2d9SLeon RomanovskyDate: January 2021 455c3d5c2d9SLeon RomanovskyContact: Leon Romanovsky <leonro@nvidia.com> 456c3d5c2d9SLeon RomanovskyDescription: 457c3d5c2d9SLeon Romanovsky This file is associated with a SR-IOV virtual function (VF). 458c3d5c2d9SLeon Romanovsky It allows configuration of the number of MSI-X vectors for 459c3d5c2d9SLeon Romanovsky the VF. This allows devices that have a global pool of MSI-X 460c3d5c2d9SLeon Romanovsky vectors to optimally divide them between VFs based on VF usage. 461c3d5c2d9SLeon Romanovsky 462c3d5c2d9SLeon Romanovsky The values accepted are: 463c3d5c2d9SLeon Romanovsky * > 0 - this number will be reported as the Table Size in the 464c3d5c2d9SLeon Romanovsky VF's MSI-X capability 465c3d5c2d9SLeon Romanovsky * < 0 - not valid 466c3d5c2d9SLeon Romanovsky * = 0 - will reset to the device default value 467c3d5c2d9SLeon Romanovsky 468c3d5c2d9SLeon Romanovsky The file is writable if the PF is bound to a driver that 469c3d5c2d9SLeon Romanovsky implements ->sriov_set_msix_vec_count(). 47091fa1277SAlex Williamson 47191fa1277SAlex WilliamsonWhat: /sys/bus/pci/devices/.../resourceN_resize 47291fa1277SAlex WilliamsonDate: September 2022 47391fa1277SAlex WilliamsonContact: Alex Williamson <alex.williamson@redhat.com> 47491fa1277SAlex WilliamsonDescription: 47591fa1277SAlex Williamson These files provide an interface to PCIe Resizable BAR support. 47691fa1277SAlex Williamson A file is created for each BAR resource (N) supported by the 47791fa1277SAlex Williamson PCIe Resizable BAR extended capability of the device. Reading 47891fa1277SAlex Williamson each file exposes the bitmap of available resource sizes: 47991fa1277SAlex Williamson 48091fa1277SAlex Williamson # cat resource1_resize 48191fa1277SAlex Williamson 00000000000001c0 48291fa1277SAlex Williamson 48391fa1277SAlex Williamson The bitmap represents supported resource sizes for the BAR, 48491fa1277SAlex Williamson where bit0 = 1MB, bit1 = 2MB, bit2 = 4MB, etc. In the above 48591fa1277SAlex Williamson example the device supports 64MB, 128MB, and 256MB BAR sizes. 48691fa1277SAlex Williamson 48791fa1277SAlex Williamson When writing the file, the user provides the bit position of 48891fa1277SAlex Williamson the desired resource size, for example: 48991fa1277SAlex Williamson 49091fa1277SAlex Williamson # echo 7 > resource1_resize 49191fa1277SAlex Williamson 49291fa1277SAlex Williamson This indicates to set the size value corresponding to bit 7, 49391fa1277SAlex Williamson 128MB. The resulting size is 2 ^ (bit# + 20). This definition 49491fa1277SAlex Williamson matches the PCIe specification of this capability. 49591fa1277SAlex Williamson 49691fa1277SAlex Williamson In order to make use of resource resizing, all PCI drivers must 49791fa1277SAlex Williamson be unbound from the device and peer devices under the same 49891fa1277SAlex Williamson parent bridge may need to be soft removed. In the case of 49991fa1277SAlex Williamson VGA devices, writing a resize value will remove low level 50091fa1277SAlex Williamson console drivers from the device. Raw users of pci-sysfs 50191fa1277SAlex Williamson resourceN attributes must be terminated prior to resizing. 50291fa1277SAlex Williamson Success of the resizing operation is not guaranteed. 503