Hi Hanjun,
On 5/20/15 22:43, Hanjun Guo wrote:
@@ -322,7 +322,7 @@ static struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin) u8 bridge_pin, orig_pin = pin; int ret;
- ret = acpi_pci_irq_find_prt_entry(dev, pin, &entry);
- ret = acpi_pci_irq_find_prt_entry(dev->bus, PCI_SLOT(dev->devfn),
pin, &entry); if (!ret && entry) { #ifdef CONFIG_X86_IO_APIC acpi_reroute_boot_interrupt(dev, entry); @@ -336,7 +336,7 @@ static struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin) * Attempt to derive an IRQ for this device from a parent bridge's * PCI interrupt routing entry (eg. yenta bridge and add-in card bridge). */
- bridge = dev->bus->self;
- bridge = pci_upstream_bridge(dev); while (bridge) { pin = pci_swizzle_interrupt_pin(dev, pin);
@@ -352,7 +352,7 @@ static struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin) pin = bridge_pin; }
ret = acpi_pci_irq_find_prt_entry(bridge, pin, &entry);
ret = acpi_pci_irq_find_prt_entry(bridge->bus,
PCI_SLOT(bridge->devfn), pin, &entry); if (!ret && entry) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Derived GSI for %s INT %c from %s\n", @@ -362,7 +362,27 @@ static struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin) }
dev = bridge;
bridge = dev->bus->self;
bridge = pci_upstream_bridge(dev);
- }
It seems that the code above already handle _PRT for root bridge to me, does the PCI bridge topology is special on Seattle?
Thanks Hanjun
I don't thing there is anything special. Here is what the topology looks like:
# lspci -tv -[0000:00]-+-00.0 Advanced Micro Devices, Inc. [AMD] Device 1a00 (Host bridge) +-02.0 Advanced Micro Devices, Inc. [AMD] Device 1a01 -02.1- PCI-PCI bridge - [01]----00.0 Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express
Also, this is what the _PRT looks like:
// // PCIe Root bus // Device (PCI0) { Name (_HID, "PNP0A08") // PCI Express Root Bridge Name (_CID, "PNP0A03") // Compatible PCI Root Bridge Name(_SEG, 0) // Segment of this Root complex Name(_BBN, 0) // Base Bus Number Name (_CCA, 1) // Cache-coherent bus
Name(_PRT, Package(4) { // PCI Routing Table Package(4) {0x000000FFFF, 0, 0, 320}, // A Package(4) {0x000000FFFF, 1, 0, 321}, // B Package(4) {0x000000FFFF, 2, 0, 322}, // C Package(4) {0x000000FFFF, 3, 0, 323} // D })
Thanks, Suravee