mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
63692df103
NUMA systems with ACPI normally describe the physical topology via _PXM methods. But many BIOSes don't implement _PXM, which leaves the kernel with no way to discover the device topology, which reduces performance because we can't put memory and processes close to the device. The NUMA node of a PCI device is already exported in the sysfs "numa_node" file. Make that file writable so users can workaround the lack of _PXM methods in the BIOS. For example: echo 3 > /sys/devices/pci0000:ff/0000:03:1f.3/numa_node sets the node for PCI device 0000:03:1f.3. Writing the file emits a FW_BUG warning to encourage users to request firmware updates. It also taints the kernel with TAINT_FIRMWARE_WORKAROUND because overriding the node incorrectly can cause performance issues. [bhelgaas: changelog, documentation text] Signed-off-by: Prarit Bhargava <prarit@redhat.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> CC: Myron Stowe <mstowe@redhat.com> CC: Alexander Ducyk <alexander.h.duyck@redhat.com> CC: Jiang Liu <jiang.liu@linux.intel.com>
297 lines
12 KiB
Plaintext
297 lines
12 KiB
Plaintext
What: /sys/bus/pci/drivers/.../bind
|
|
Date: December 2003
|
|
Contact: linux-pci@vger.kernel.org
|
|
Description:
|
|
Writing a device location to this file will cause
|
|
the driver to attempt to bind to the device found at
|
|
this location. This is useful for overriding default
|
|
bindings. The format for the location is: DDDD:BB:DD.F.
|
|
That is Domain:Bus:Device.Function and is the same as
|
|
found in /sys/bus/pci/devices/. For example:
|
|
# echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/bind
|
|
(Note: kernels before 2.6.28 may require echo -n).
|
|
|
|
What: /sys/bus/pci/drivers/.../unbind
|
|
Date: December 2003
|
|
Contact: linux-pci@vger.kernel.org
|
|
Description:
|
|
Writing a device location to this file will cause the
|
|
driver to attempt to unbind from the device found at
|
|
this location. This may be useful when overriding default
|
|
bindings. The format for the location is: DDDD:BB:DD.F.
|
|
That is Domain:Bus:Device.Function and is the same as
|
|
found in /sys/bus/pci/devices/. For example:
|
|
# echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/unbind
|
|
(Note: kernels before 2.6.28 may require echo -n).
|
|
|
|
What: /sys/bus/pci/drivers/.../new_id
|
|
Date: December 2003
|
|
Contact: linux-pci@vger.kernel.org
|
|
Description:
|
|
Writing a device ID to this file will attempt to
|
|
dynamically add a new device ID to a PCI device driver.
|
|
This may allow the driver to support more hardware than
|
|
was included in the driver's static device ID support
|
|
table at compile time. The format for the device ID is:
|
|
VVVV DDDD SVVV SDDD CCCC MMMM PPPP. That is Vendor ID,
|
|
Device ID, Subsystem Vendor ID, Subsystem Device ID,
|
|
Class, Class Mask, and Private Driver Data. The Vendor ID
|
|
and Device ID fields are required, the rest are optional.
|
|
Upon successfully adding an ID, the driver will probe
|
|
for the device and attempt to bind to it. For example:
|
|
# echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id
|
|
|
|
What: /sys/bus/pci/drivers/.../remove_id
|
|
Date: February 2009
|
|
Contact: Chris Wright <chrisw@sous-sol.org>
|
|
Description:
|
|
Writing a device ID to this file will remove an ID
|
|
that was dynamically added via the new_id sysfs entry.
|
|
The format for the device ID is:
|
|
VVVV DDDD SVVV SDDD CCCC MMMM. That is Vendor ID, Device
|
|
ID, Subsystem Vendor ID, Subsystem Device ID, Class,
|
|
and Class Mask. The Vendor ID and Device ID fields are
|
|
required, the rest are optional. After successfully
|
|
removing an ID, the driver will no longer support the
|
|
device. This is useful to ensure auto probing won't
|
|
match the driver to the device. For example:
|
|
# echo "8086 10f5" > /sys/bus/pci/drivers/foo/remove_id
|
|
|
|
What: /sys/bus/pci/rescan
|
|
Date: January 2009
|
|
Contact: Linux PCI developers <linux-pci@vger.kernel.org>
|
|
Description:
|
|
Writing a non-zero value to this attribute will
|
|
force a rescan of all PCI buses in the system, and
|
|
re-discover previously removed devices.
|
|
|
|
What: /sys/bus/pci/devices/.../msi_bus
|
|
Date: September 2014
|
|
Contact: Linux PCI developers <linux-pci@vger.kernel.org>
|
|
Description:
|
|
Writing a zero value to this attribute disallows MSI and
|
|
MSI-X for any future drivers of the device. If the device
|
|
is a bridge, MSI and MSI-X will be disallowed for future
|
|
drivers of all child devices under the bridge. Drivers
|
|
must be reloaded for the new setting to take effect.
|
|
|
|
What: /sys/bus/pci/devices/.../msi_irqs/
|
|
Date: September, 2011
|
|
Contact: Neil Horman <nhorman@tuxdriver.com>
|
|
Description:
|
|
The /sys/devices/.../msi_irqs directory contains a variable set
|
|
of files, with each file being named after a corresponding msi
|
|
irq vector allocated to that device.
|
|
|
|
What: /sys/bus/pci/devices/.../msi_irqs/<N>
|
|
Date: September 2011
|
|
Contact: Neil Horman <nhorman@tuxdriver.com>
|
|
Description:
|
|
This attribute indicates the mode that the irq vector named by
|
|
the file is in (msi vs. msix)
|
|
|
|
What: /sys/bus/pci/devices/.../remove
|
|
Date: January 2009
|
|
Contact: Linux PCI developers <linux-pci@vger.kernel.org>
|
|
Description:
|
|
Writing a non-zero value to this attribute will
|
|
hot-remove the PCI device and any of its children.
|
|
|
|
What: /sys/bus/pci/devices/.../pci_bus/.../rescan
|
|
Date: May 2011
|
|
Contact: Linux PCI developers <linux-pci@vger.kernel.org>
|
|
Description:
|
|
Writing a non-zero value to this attribute will
|
|
force a rescan of the bus and all child buses,
|
|
and re-discover devices removed earlier from this
|
|
part of the device tree.
|
|
|
|
What: /sys/bus/pci/devices/.../rescan
|
|
Date: January 2009
|
|
Contact: Linux PCI developers <linux-pci@vger.kernel.org>
|
|
Description:
|
|
Writing a non-zero value to this attribute will
|
|
force a rescan of the device's parent bus and all
|
|
child buses, and re-discover devices removed earlier
|
|
from this part of the device tree.
|
|
|
|
What: /sys/bus/pci/devices/.../reset
|
|
Date: July 2009
|
|
Contact: Michael S. Tsirkin <mst@redhat.com>
|
|
Description:
|
|
Some devices allow an individual function to be reset
|
|
without affecting other functions in the same device.
|
|
For devices that have this support, a file named reset
|
|
will be present in sysfs. Writing 1 to this file
|
|
will perform reset.
|
|
|
|
What: /sys/bus/pci/devices/.../vpd
|
|
Date: February 2008
|
|
Contact: Ben Hutchings <bwh@kernel.org>
|
|
Description:
|
|
A file named vpd in a device directory will be a
|
|
binary file containing the Vital Product Data for the
|
|
device. It should follow the VPD format defined in
|
|
PCI Specification 2.1 or 2.2, but users should consider
|
|
that some devices may have malformatted data. If the
|
|
underlying VPD has a writable section then the
|
|
corresponding section of this file will be writable.
|
|
|
|
What: /sys/bus/pci/devices/.../virtfnN
|
|
Date: March 2009
|
|
Contact: Yu Zhao <yu.zhao@intel.com>
|
|
Description:
|
|
This symbolic link appears when hardware supports the SR-IOV
|
|
capability and the Physical Function driver has enabled it.
|
|
The symbolic link points to the PCI device sysfs entry of the
|
|
Virtual Function whose index is N (0...MaxVFs-1).
|
|
|
|
What: /sys/bus/pci/devices/.../dep_link
|
|
Date: March 2009
|
|
Contact: Yu Zhao <yu.zhao@intel.com>
|
|
Description:
|
|
This symbolic link appears when hardware supports the SR-IOV
|
|
capability and the Physical Function driver has enabled it,
|
|
and this device has vendor specific dependencies with others.
|
|
The symbolic link points to the PCI device sysfs entry of
|
|
Physical Function this device depends on.
|
|
|
|
What: /sys/bus/pci/devices/.../physfn
|
|
Date: March 2009
|
|
Contact: Yu Zhao <yu.zhao@intel.com>
|
|
Description:
|
|
This symbolic link appears when a device is a Virtual Function.
|
|
The symbolic link points to the PCI device sysfs entry of the
|
|
Physical Function this device associates with.
|
|
|
|
What: /sys/bus/pci/slots/.../module
|
|
Date: June 2009
|
|
Contact: linux-pci@vger.kernel.org
|
|
Description:
|
|
This symbolic link points to the PCI hotplug controller driver
|
|
module that manages the hotplug slot.
|
|
|
|
What: /sys/bus/pci/devices/.../label
|
|
Date: July 2010
|
|
Contact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com
|
|
Description:
|
|
Reading this attribute will provide the firmware
|
|
given name (SMBIOS type 41 string or ACPI _DSM string) of
|
|
the PCI device. The attribute will be created only
|
|
if the firmware has given a name to the PCI device.
|
|
ACPI _DSM string name will be given priority if the
|
|
system firmware provides SMBIOS type 41 string also.
|
|
Users:
|
|
Userspace applications interested in knowing the
|
|
firmware assigned name of the PCI device.
|
|
|
|
What: /sys/bus/pci/devices/.../index
|
|
Date: July 2010
|
|
Contact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com
|
|
Description:
|
|
Reading this attribute will provide the firmware
|
|
given instance (SMBIOS type 41 device type instance) of the
|
|
PCI device. The attribute will be created only if the firmware
|
|
has given an instance number to the PCI device.
|
|
Users:
|
|
Userspace applications interested in knowing the
|
|
firmware assigned device type instance of the PCI
|
|
device that can help in understanding the firmware
|
|
intended order of the PCI device.
|
|
|
|
What: /sys/bus/pci/devices/.../acpi_index
|
|
Date: July 2010
|
|
Contact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com
|
|
Description:
|
|
Reading this attribute will provide the firmware
|
|
given instance (ACPI _DSM instance number) of the PCI device.
|
|
The attribute will be created only if the firmware has given
|
|
an instance number to the PCI device. ACPI _DSM instance number
|
|
will be given priority if the system firmware provides SMBIOS
|
|
type 41 device type instance also.
|
|
Users:
|
|
Userspace applications interested in knowing the
|
|
firmware assigned instance number of the PCI
|
|
device that can help in understanding the firmware
|
|
intended order of the PCI device.
|
|
|
|
What: /sys/bus/pci/devices/.../d3cold_allowed
|
|
Date: July 2012
|
|
Contact: Huang Ying <ying.huang@intel.com>
|
|
Description:
|
|
d3cold_allowed is bit to control whether the corresponding PCI
|
|
device can be put into D3Cold state. If it is cleared, the
|
|
device will never be put into D3Cold state. If it is set, the
|
|
device may be put into D3Cold state if other requirements are
|
|
satisfied too. Reading this attribute will show the current
|
|
value of d3cold_allowed bit. Writing this attribute will set
|
|
the value of d3cold_allowed bit.
|
|
|
|
What: /sys/bus/pci/devices/.../sriov_totalvfs
|
|
Date: November 2012
|
|
Contact: Donald Dutile <ddutile@redhat.com>
|
|
Description:
|
|
This file appears when a physical PCIe device supports SR-IOV.
|
|
Userspace applications can read this file to determine the
|
|
maximum number of Virtual Functions (VFs) a PCIe physical
|
|
function (PF) can support. Typically, this is the value reported
|
|
in the PF's SR-IOV extended capability structure's TotalVFs
|
|
element. Drivers have the ability at probe time to reduce the
|
|
value read from this file via the pci_sriov_set_totalvfs()
|
|
function.
|
|
|
|
What: /sys/bus/pci/devices/.../sriov_numvfs
|
|
Date: November 2012
|
|
Contact: Donald Dutile <ddutile@redhat.com>
|
|
Description:
|
|
This file appears when a physical PCIe device supports SR-IOV.
|
|
Userspace applications can read and write to this file to
|
|
determine and control the enablement or disablement of Virtual
|
|
Functions (VFs) on the physical function (PF). A read of this
|
|
file will return the number of VFs that are enabled on this PF.
|
|
A number written to this file will enable the specified
|
|
number of VFs. A userspace application would typically read the
|
|
file and check that the value is zero, and then write the number
|
|
of VFs that should be enabled on the PF; the value written
|
|
should be less than or equal to the value in the sriov_totalvfs
|
|
file. A userspace application wanting to disable the VFs would
|
|
write a zero to this file. The core ensures that valid values
|
|
are written to this file, and returns errors when values are not
|
|
valid. For example, writing a 2 to this file when sriov_numvfs
|
|
is not 0 and not 2 already will return an error. Writing a 10
|
|
when the value of sriov_totalvfs is 8 will return an error.
|
|
|
|
What: /sys/bus/pci/devices/.../driver_override
|
|
Date: April 2014
|
|
Contact: Alex Williamson <alex.williamson@redhat.com>
|
|
Description:
|
|
This file allows the driver for a device to be specified which
|
|
will override standard static and dynamic ID matching. When
|
|
specified, only a driver with a name matching the value written
|
|
to driver_override will have an opportunity to bind to the
|
|
device. The override is specified by writing a string to the
|
|
driver_override file (echo pci-stub > driver_override) and
|
|
may be cleared with an empty string (echo > driver_override).
|
|
This returns the device to standard matching rules binding.
|
|
Writing to driver_override does not automatically unbind the
|
|
device from its current driver or make any attempt to
|
|
automatically load the specified driver. If no driver with a
|
|
matching name is currently loaded in the kernel, the device
|
|
will not bind to any driver. This also allows devices to
|
|
opt-out of driver binding using a driver_override name such as
|
|
"none". Only a single driver may be specified in the override,
|
|
there is no support for parsing delimiters.
|
|
|
|
What: /sys/bus/pci/devices/.../numa_node
|
|
Date: Oct 2014
|
|
Contact: Prarit Bhargava <prarit@redhat.com>
|
|
Description:
|
|
This file contains the NUMA node to which the PCI device is
|
|
attached, or -1 if the node is unknown. The initial value
|
|
comes from an ACPI _PXM method or a similar firmware
|
|
source. If that is missing or incorrect, this file can be
|
|
written to override the node. In that case, please report
|
|
a firmware bug to the system vendor. Writing to this file
|
|
taints the kernel with TAINT_FIRMWARE_WORKAROUND, which
|
|
reduces the supportability of your system.
|