1d22157b3SChris WrightWhat: /sys/bus/pci/drivers/.../bind 2d22157b3SChris WrightDate: December 2003 3d22157b3SChris WrightContact: linux-pci@vger.kernel.org 4d22157b3SChris WrightDescription: 5d22157b3SChris Wright Writing a device location to this file will cause 6d22157b3SChris Wright the driver to attempt to bind to the device found at 7d22157b3SChris Wright this location. This is useful for overriding default 8d22157b3SChris Wright bindings. The format for the location is: DDDD:BB:DD.F. 9d22157b3SChris Wright That is Domain:Bus:Device.Function and is the same as 10d22157b3SChris Wright found in /sys/bus/pci/devices/. For example: 11d22157b3SChris Wright # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/bind 12d22157b3SChris Wright (Note: kernels before 2.6.28 may require echo -n). 13d22157b3SChris Wright 14d22157b3SChris WrightWhat: /sys/bus/pci/drivers/.../unbind 15d22157b3SChris WrightDate: December 2003 16d22157b3SChris WrightContact: linux-pci@vger.kernel.org 17d22157b3SChris WrightDescription: 18d22157b3SChris Wright Writing a device location to this file will cause the 19d22157b3SChris Wright driver to attempt to unbind from the device found at 20d22157b3SChris Wright this location. This may be useful when overriding default 21d22157b3SChris Wright bindings. The format for the location is: DDDD:BB:DD.F. 22d22157b3SChris Wright That is Domain:Bus:Device.Function and is the same as 23d22157b3SChris Wright found in /sys/bus/pci/devices/. For example: 24d22157b3SChris Wright # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/unbind 25d22157b3SChris Wright (Note: kernels before 2.6.28 may require echo -n). 26d22157b3SChris Wright 27d22157b3SChris WrightWhat: /sys/bus/pci/drivers/.../new_id 28d22157b3SChris WrightDate: December 2003 29d22157b3SChris WrightContact: linux-pci@vger.kernel.org 30d22157b3SChris WrightDescription: 31d22157b3SChris Wright Writing a device ID to this file will attempt to 32d22157b3SChris Wright dynamically add a new device ID to a PCI device driver. 33d22157b3SChris Wright This may allow the driver to support more hardware than 34d22157b3SChris Wright was included in the driver's static device ID support 35d22157b3SChris Wright table at compile time. The format for the device ID is: 36d22157b3SChris Wright VVVV DDDD SVVV SDDD CCCC MMMM PPPP. That is Vendor ID, 37d22157b3SChris Wright Device ID, Subsystem Vendor ID, Subsystem Device ID, 38d22157b3SChris Wright Class, Class Mask, and Private Driver Data. The Vendor ID 39d22157b3SChris Wright and Device ID fields are required, the rest are optional. 40d22157b3SChris Wright Upon successfully adding an ID, the driver will probe 41d22157b3SChris Wright for the device and attempt to bind to it. For example: 42d22157b3SChris Wright # echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id 43d22157b3SChris Wright 440994375eSChris WrightWhat: /sys/bus/pci/drivers/.../remove_id 450994375eSChris WrightDate: February 2009 460994375eSChris WrightContact: Chris Wright <chrisw@sous-sol.org> 470994375eSChris WrightDescription: 480994375eSChris Wright Writing a device ID to this file will remove an ID 490994375eSChris Wright that was dynamically added via the new_id sysfs entry. 500994375eSChris Wright The format for the device ID is: 510994375eSChris Wright VVVV DDDD SVVV SDDD CCCC MMMM. That is Vendor ID, Device 520994375eSChris Wright ID, Subsystem Vendor ID, Subsystem Device ID, Class, 530994375eSChris Wright and Class Mask. The Vendor ID and Device ID fields are 540994375eSChris Wright required, the rest are optional. After successfully 550994375eSChris Wright removing an ID, the driver will no longer support the 560994375eSChris Wright device. This is useful to ensure auto probing won't 570994375eSChris Wright match the driver to the device. For example: 580994375eSChris Wright # echo "8086 10f5" > /sys/bus/pci/drivers/foo/remove_id 590994375eSChris Wright 60705b1aaaSAlex ChiangWhat: /sys/bus/pci/rescan 61705b1aaaSAlex ChiangDate: January 2009 62705b1aaaSAlex ChiangContact: Linux PCI developers <linux-pci@vger.kernel.org> 63705b1aaaSAlex ChiangDescription: 64705b1aaaSAlex Chiang Writing a non-zero value to this attribute will 65705b1aaaSAlex Chiang force a rescan of all PCI buses in the system, and 66705b1aaaSAlex Chiang re-discover previously removed devices. 67705b1aaaSAlex Chiang 68468ff15aSYijing WangWhat: /sys/bus/pci/devices/.../msi_bus 69468ff15aSYijing WangDate: September 2014 70468ff15aSYijing WangContact: Linux PCI developers <linux-pci@vger.kernel.org> 71468ff15aSYijing WangDescription: 72468ff15aSYijing Wang Writing a zero value to this attribute disallows MSI and 73468ff15aSYijing Wang MSI-X for any future drivers of the device. If the device 74468ff15aSYijing Wang is a bridge, MSI and MSI-X will be disallowed for future 75468ff15aSYijing Wang drivers of all child devices under the bridge. Drivers 76468ff15aSYijing Wang must be reloaded for the new setting to take effect. 77468ff15aSYijing Wang 78b50cac55SNeil HormanWhat: /sys/bus/pci/devices/.../msi_irqs/ 79b50cac55SNeil HormanDate: September, 2011 80b50cac55SNeil HormanContact: Neil Horman <nhorman@tuxdriver.com> 81b50cac55SNeil HormanDescription: 82b50cac55SNeil Horman The /sys/devices/.../msi_irqs directory contains a variable set 831c51b50cSGreg Kroah-Hartman of files, with each file being named after a corresponding msi 841c51b50cSGreg Kroah-Hartman irq vector allocated to that device. 85b50cac55SNeil Horman 861c51b50cSGreg Kroah-HartmanWhat: /sys/bus/pci/devices/.../msi_irqs/<N> 87b50cac55SNeil HormanDate: September 2011 88b50cac55SNeil HormanContact: Neil Horman <nhorman@tuxdriver.com> 89b50cac55SNeil HormanDescription: 90b50cac55SNeil Horman This attribute indicates the mode that the irq vector named by 911c51b50cSGreg Kroah-Hartman the file is in (msi vs. msix) 92b50cac55SNeil Horman 9377c27c7bSAlex ChiangWhat: /sys/bus/pci/devices/.../remove 9477c27c7bSAlex ChiangDate: January 2009 9577c27c7bSAlex ChiangContact: Linux PCI developers <linux-pci@vger.kernel.org> 9677c27c7bSAlex ChiangDescription: 9777c27c7bSAlex Chiang Writing a non-zero value to this attribute will 9877c27c7bSAlex Chiang hot-remove the PCI device and any of its children. 9977c27c7bSAlex Chiang 100b9d320fcSYinghai LuWhat: /sys/bus/pci/devices/.../pci_bus/.../rescan 101b9d320fcSYinghai LuDate: May 2011 102b9d320fcSYinghai LuContact: Linux PCI developers <linux-pci@vger.kernel.org> 103b9d320fcSYinghai LuDescription: 104b9d320fcSYinghai Lu Writing a non-zero value to this attribute will 105b9d320fcSYinghai Lu force a rescan of the bus and all child buses, 106b9d320fcSYinghai Lu and re-discover devices removed earlier from this 10740b31360SStephen Rothwell part of the device tree. 108b9d320fcSYinghai Lu 109738a6396SAlex ChiangWhat: /sys/bus/pci/devices/.../rescan 110738a6396SAlex ChiangDate: January 2009 111738a6396SAlex ChiangContact: Linux PCI developers <linux-pci@vger.kernel.org> 112738a6396SAlex ChiangDescription: 113738a6396SAlex Chiang Writing a non-zero value to this attribute will 114738a6396SAlex Chiang force a rescan of the device's parent bus and all 115738a6396SAlex Chiang child buses, and re-discover devices removed earlier 116738a6396SAlex Chiang from this part of the device tree. 117738a6396SAlex Chiang 118711d5779SMichael S. TsirkinWhat: /sys/bus/pci/devices/.../reset 119711d5779SMichael S. TsirkinDate: July 2009 120711d5779SMichael S. TsirkinContact: Michael S. Tsirkin <mst@redhat.com> 121711d5779SMichael S. TsirkinDescription: 122711d5779SMichael S. Tsirkin Some devices allow an individual function to be reset 123711d5779SMichael S. Tsirkin without affecting other functions in the same device. 124711d5779SMichael S. Tsirkin For devices that have this support, a file named reset 125711d5779SMichael S. Tsirkin will be present in sysfs. Writing 1 to this file 126711d5779SMichael S. Tsirkin will perform reset. 127711d5779SMichael S. Tsirkin 12894e61088SBen HutchingsWhat: /sys/bus/pci/devices/.../vpd 12994e61088SBen HutchingsDate: February 2008 130473153afSBen HutchingsContact: Ben Hutchings <bwh@kernel.org> 13194e61088SBen HutchingsDescription: 13294e61088SBen Hutchings A file named vpd in a device directory will be a 13394e61088SBen Hutchings binary file containing the Vital Product Data for the 13494e61088SBen Hutchings device. It should follow the VPD format defined in 13594e61088SBen Hutchings PCI Specification 2.1 or 2.2, but users should consider 13694e61088SBen Hutchings that some devices may have malformatted data. If the 13794e61088SBen Hutchings underlying VPD has a writable section then the 13894e61088SBen Hutchings corresponding section of this file will be writable. 13901db4957SYu Zhao 14001db4957SYu ZhaoWhat: /sys/bus/pci/devices/.../virtfnN 14101db4957SYu ZhaoDate: March 2009 14201db4957SYu ZhaoContact: Yu Zhao <yu.zhao@intel.com> 14301db4957SYu ZhaoDescription: 14401db4957SYu Zhao This symbolic link appears when hardware supports the SR-IOV 14501db4957SYu Zhao capability and the Physical Function driver has enabled it. 14601db4957SYu Zhao The symbolic link points to the PCI device sysfs entry of the 14701db4957SYu Zhao Virtual Function whose index is N (0...MaxVFs-1). 14801db4957SYu Zhao 14901db4957SYu ZhaoWhat: /sys/bus/pci/devices/.../dep_link 15001db4957SYu ZhaoDate: March 2009 15101db4957SYu ZhaoContact: Yu Zhao <yu.zhao@intel.com> 15201db4957SYu ZhaoDescription: 15301db4957SYu Zhao This symbolic link appears when hardware supports the SR-IOV 15401db4957SYu Zhao capability and the Physical Function driver has enabled it, 15501db4957SYu Zhao and this device has vendor specific dependencies with others. 15601db4957SYu Zhao The symbolic link points to the PCI device sysfs entry of 15701db4957SYu Zhao Physical Function this device depends on. 15801db4957SYu Zhao 15901db4957SYu ZhaoWhat: /sys/bus/pci/devices/.../physfn 16001db4957SYu ZhaoDate: March 2009 16101db4957SYu ZhaoContact: Yu Zhao <yu.zhao@intel.com> 16201db4957SYu ZhaoDescription: 16301db4957SYu Zhao This symbolic link appears when a device is a Virtual Function. 16401db4957SYu Zhao The symbolic link points to the PCI device sysfs entry of the 16501db4957SYu Zhao Physical Function this device associates with. 166c825bc94SKenji Kaneshige 167c825bc94SKenji KaneshigeWhat: /sys/bus/pci/slots/.../module 168c825bc94SKenji KaneshigeDate: June 2009 169c825bc94SKenji KaneshigeContact: linux-pci@vger.kernel.org 170c825bc94SKenji KaneshigeDescription: 171c825bc94SKenji Kaneshige This symbolic link points to the PCI hotplug controller driver 172c825bc94SKenji Kaneshige module that manages the hotplug slot. 173911e1c9bSNarendra K 174911e1c9bSNarendra KWhat: /sys/bus/pci/devices/.../label 175911e1c9bSNarendra KDate: July 2010 176911e1c9bSNarendra KContact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com 177911e1c9bSNarendra KDescription: 178911e1c9bSNarendra K Reading this attribute will provide the firmware 1796058989bSNarendra_K@Dell.com given name (SMBIOS type 41 string or ACPI _DSM string) of 1806058989bSNarendra_K@Dell.com the PCI device. The attribute will be created only 1816058989bSNarendra_K@Dell.com if the firmware has given a name to the PCI device. 1826058989bSNarendra_K@Dell.com ACPI _DSM string name will be given priority if the 1836058989bSNarendra_K@Dell.com system firmware provides SMBIOS type 41 string also. 184911e1c9bSNarendra KUsers: 185911e1c9bSNarendra K Userspace applications interested in knowing the 186911e1c9bSNarendra K firmware assigned name of the PCI device. 187911e1c9bSNarendra K 188911e1c9bSNarendra KWhat: /sys/bus/pci/devices/.../index 189911e1c9bSNarendra KDate: July 2010 190911e1c9bSNarendra KContact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com 191911e1c9bSNarendra KDescription: 192911e1c9bSNarendra K Reading this attribute will provide the firmware 1936058989bSNarendra_K@Dell.com given instance (SMBIOS type 41 device type instance) of the 1946058989bSNarendra_K@Dell.com PCI device. The attribute will be created only if the firmware 1956058989bSNarendra_K@Dell.com has given an instance number to the PCI device. 196911e1c9bSNarendra KUsers: 197911e1c9bSNarendra K Userspace applications interested in knowing the 198911e1c9bSNarendra K firmware assigned device type instance of the PCI 199911e1c9bSNarendra K device that can help in understanding the firmware 200911e1c9bSNarendra K intended order of the PCI device. 2016058989bSNarendra_K@Dell.com 2026058989bSNarendra_K@Dell.comWhat: /sys/bus/pci/devices/.../acpi_index 2036058989bSNarendra_K@Dell.comDate: July 2010 2046058989bSNarendra_K@Dell.comContact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com 2056058989bSNarendra_K@Dell.comDescription: 2066058989bSNarendra_K@Dell.com Reading this attribute will provide the firmware 2076058989bSNarendra_K@Dell.com given instance (ACPI _DSM instance number) of the PCI device. 2086058989bSNarendra_K@Dell.com The attribute will be created only if the firmware has given 2096058989bSNarendra_K@Dell.com an instance number to the PCI device. ACPI _DSM instance number 2106058989bSNarendra_K@Dell.com will be given priority if the system firmware provides SMBIOS 2116058989bSNarendra_K@Dell.com type 41 device type instance also. 2126058989bSNarendra_K@Dell.comUsers: 2136058989bSNarendra_K@Dell.com Userspace applications interested in knowing the 2146058989bSNarendra_K@Dell.com firmware assigned instance number of the PCI 2156058989bSNarendra_K@Dell.com device that can help in understanding the firmware 2166058989bSNarendra_K@Dell.com intended order of the PCI device. 217046c6531SHuang Ying 218046c6531SHuang YingWhat: /sys/bus/pci/devices/.../d3cold_allowed 219046c6531SHuang YingDate: July 2012 220046c6531SHuang YingContact: Huang Ying <ying.huang@intel.com> 221046c6531SHuang YingDescription: 222046c6531SHuang Ying d3cold_allowed is bit to control whether the corresponding PCI 223046c6531SHuang Ying device can be put into D3Cold state. If it is cleared, the 224046c6531SHuang Ying device will never be put into D3Cold state. If it is set, the 225046c6531SHuang Ying device may be put into D3Cold state if other requirements are 226046c6531SHuang Ying satisfied too. Reading this attribute will show the current 227046c6531SHuang Ying value of d3cold_allowed bit. Writing this attribute will set 228046c6531SHuang Ying the value of d3cold_allowed bit. 2292597ba76SDonald Dutile 2302597ba76SDonald DutileWhat: /sys/bus/pci/devices/.../sriov_totalvfs 2312597ba76SDonald DutileDate: November 2012 2322597ba76SDonald DutileContact: Donald Dutile <ddutile@redhat.com> 2332597ba76SDonald DutileDescription: 2342597ba76SDonald Dutile This file appears when a physical PCIe device supports SR-IOV. 2352597ba76SDonald Dutile Userspace applications can read this file to determine the 2362597ba76SDonald Dutile maximum number of Virtual Functions (VFs) a PCIe physical 2372597ba76SDonald Dutile function (PF) can support. Typically, this is the value reported 2382597ba76SDonald Dutile in the PF's SR-IOV extended capability structure's TotalVFs 2392597ba76SDonald Dutile element. Drivers have the ability at probe time to reduce the 2402597ba76SDonald Dutile value read from this file via the pci_sriov_set_totalvfs() 2412597ba76SDonald Dutile function. 2422597ba76SDonald Dutile 2432597ba76SDonald DutileWhat: /sys/bus/pci/devices/.../sriov_numvfs 2442597ba76SDonald DutileDate: November 2012 2452597ba76SDonald DutileContact: Donald Dutile <ddutile@redhat.com> 2462597ba76SDonald DutileDescription: 2472597ba76SDonald Dutile This file appears when a physical PCIe device supports SR-IOV. 2482597ba76SDonald Dutile Userspace applications can read and write to this file to 2492597ba76SDonald Dutile determine and control the enablement or disablement of Virtual 2502597ba76SDonald Dutile Functions (VFs) on the physical function (PF). A read of this 2512597ba76SDonald Dutile file will return the number of VFs that are enabled on this PF. 2522597ba76SDonald Dutile A number written to this file will enable the specified 2532597ba76SDonald Dutile number of VFs. A userspace application would typically read the 2542597ba76SDonald Dutile file and check that the value is zero, and then write the number 2552597ba76SDonald Dutile of VFs that should be enabled on the PF; the value written 2562597ba76SDonald Dutile should be less than or equal to the value in the sriov_totalvfs 2572597ba76SDonald Dutile file. A userspace application wanting to disable the VFs would 2582597ba76SDonald Dutile write a zero to this file. The core ensures that valid values 2592597ba76SDonald Dutile are written to this file, and returns errors when values are not 2602597ba76SDonald Dutile valid. For example, writing a 2 to this file when sriov_numvfs 2612597ba76SDonald Dutile is not 0 and not 2 already will return an error. Writing a 10 2622597ba76SDonald Dutile when the value of sriov_totalvfs is 8 will return an error. 263782a985dSAlex Williamson 264782a985dSAlex WilliamsonWhat: /sys/bus/pci/devices/.../driver_override 265782a985dSAlex WilliamsonDate: April 2014 266782a985dSAlex WilliamsonContact: Alex Williamson <alex.williamson@redhat.com> 267782a985dSAlex WilliamsonDescription: 268782a985dSAlex Williamson This file allows the driver for a device to be specified which 269782a985dSAlex Williamson will override standard static and dynamic ID matching. When 270782a985dSAlex Williamson specified, only a driver with a name matching the value written 271782a985dSAlex Williamson to driver_override will have an opportunity to bind to the 272782a985dSAlex Williamson device. The override is specified by writing a string to the 273782a985dSAlex Williamson driver_override file (echo pci-stub > driver_override) and 274782a985dSAlex Williamson may be cleared with an empty string (echo > driver_override). 275782a985dSAlex Williamson This returns the device to standard matching rules binding. 276782a985dSAlex Williamson Writing to driver_override does not automatically unbind the 277782a985dSAlex Williamson device from its current driver or make any attempt to 278782a985dSAlex Williamson automatically load the specified driver. If no driver with a 279782a985dSAlex Williamson matching name is currently loaded in the kernel, the device 280782a985dSAlex Williamson will not bind to any driver. This also allows devices to 281782a985dSAlex Williamson opt-out of driver binding using a driver_override name such as 282782a985dSAlex Williamson "none". Only a single driver may be specified in the override, 283782a985dSAlex Williamson there is no support for parsing delimiters. 28463692df1SPrarit Bhargava 28563692df1SPrarit BhargavaWhat: /sys/bus/pci/devices/.../numa_node 28663692df1SPrarit BhargavaDate: Oct 2014 28763692df1SPrarit BhargavaContact: Prarit Bhargava <prarit@redhat.com> 28863692df1SPrarit BhargavaDescription: 28963692df1SPrarit Bhargava This file contains the NUMA node to which the PCI device is 29063692df1SPrarit Bhargava attached, or -1 if the node is unknown. The initial value 29163692df1SPrarit Bhargava comes from an ACPI _PXM method or a similar firmware 29263692df1SPrarit Bhargava source. If that is missing or incorrect, this file can be 29363692df1SPrarit Bhargava written to override the node. In that case, please report 29463692df1SPrarit Bhargava a firmware bug to the system vendor. Writing to this file 29563692df1SPrarit Bhargava taints the kernel with TAINT_FIRMWARE_WORKAROUND, which 29663692df1SPrarit Bhargava reduces the supportability of your system. 297702ed3beSEmil Velikov 298702ed3beSEmil VelikovWhat: /sys/bus/pci/devices/.../revision 299702ed3beSEmil VelikovDate: November 2016 300702ed3beSEmil VelikovContact: Emil Velikov <emil.l.velikov@gmail.com> 301702ed3beSEmil VelikovDescription: 302702ed3beSEmil Velikov This file contains the revision field of the the PCI device. 303702ed3beSEmil Velikov The value comes from device config space. The file is read only. 3040e7df224SBodong Wang 3050e7df224SBodong WangWhat: /sys/bus/pci/devices/.../sriov_drivers_autoprobe 3060e7df224SBodong WangDate: April 2017 3070e7df224SBodong WangContact: Bodong Wang<bodong@mellanox.com> 3080e7df224SBodong WangDescription: 3090e7df224SBodong Wang This file is associated with the PF of a device that 3100e7df224SBodong Wang supports SR-IOV. It determines whether newly-enabled VFs 3110e7df224SBodong Wang are immediately bound to a driver. It initially contains 3120e7df224SBodong Wang 1, which means the kernel automatically binds VFs to a 3130e7df224SBodong Wang compatible driver immediately after they are enabled. If 3140e7df224SBodong Wang an application writes 0 to the file before enabling VFs, 3150e7df224SBodong Wang the kernel will not bind VFs to a driver. 3160e7df224SBodong Wang 3170e7df224SBodong Wang A typical use case is to write 0 to this file, then enable 3180e7df224SBodong Wang VFs, then assign the newly-created VFs to virtual machines. 3190e7df224SBodong Wang Note that changing this file does not affect already- 3200e7df224SBodong Wang enabled VFs. In this scenario, the user must first disable 3210e7df224SBodong Wang the VFs, write 0 to sriov_drivers_autoprobe, then re-enable 3220e7df224SBodong Wang the VFs. 3230e7df224SBodong Wang 3240e7df224SBodong Wang This is similar to /sys/bus/pci/drivers_autoprobe, but 3250e7df224SBodong Wang affects only the VFs associated with a specific PF. 326