ACPI/PCI: Pay attention to device-specific _PXM node values
The ACPI specification allows you to provide _PXM entries for devices based on their location on a particular bus. Let us use that if it is provided rather than just assuming it makes sense to put the device into the proximity domain of the root. An example DSDT entry that will supply this is: Device (PCI2) { Name (_HID, "PNP0A08") // PCI Express Root Bridge Name (_CID, "PNP0A03") // Compatible PCI Root Bridge Name(_SEG, 2) // Segment of this Root complex Name(_BBN, 0xF8) // Base Bus Number Name(_CCA, 1) Method (_PXM, 0, NotSerialized) { Return(0x00) } ... Device (BRI0) { Name (_HID, "19E51610") Name (_ADR, 0) Name (_BBN, 0xF9) Device (CAR0) { Name (_HID, "97109912") Name (_ADR, 0) Method (_PXM, 0, NotSerialized) { Return(0x02) } } } } Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
d193631bfb
commit
bad7dcd94f
@ -751,10 +751,15 @@ static void pci_acpi_setup(struct device *dev)
|
|||||||
{
|
{
|
||||||
struct pci_dev *pci_dev = to_pci_dev(dev);
|
struct pci_dev *pci_dev = to_pci_dev(dev);
|
||||||
struct acpi_device *adev = ACPI_COMPANION(dev);
|
struct acpi_device *adev = ACPI_COMPANION(dev);
|
||||||
|
int node;
|
||||||
|
|
||||||
if (!adev)
|
if (!adev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
node = acpi_get_node(adev->handle);
|
||||||
|
if (node != NUMA_NO_NODE)
|
||||||
|
set_dev_node(dev, node);
|
||||||
|
|
||||||
pci_acpi_optimize_delay(pci_dev, adev->handle);
|
pci_acpi_optimize_delay(pci_dev, adev->handle);
|
||||||
|
|
||||||
pci_acpi_add_pm_notifier(adev, pci_dev);
|
pci_acpi_add_pm_notifier(adev, pci_dev);
|
||||||
|
Loading…
Reference in New Issue
Block a user