mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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
					
				
					 1 changed files with 5 additions and 0 deletions
				
			
		| 
						 | 
					@ -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 a new issue