On Fri, Feb 15, 2013 at 5:26 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > On Fri, Feb 15, 2013 at 4:39 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: >> On Thu, Feb 14, 2013 at 5:50 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: >>> On Tue, Feb 12, 2013 at 12:22 PM, Rafael J. Wysocki <rjw@xxxxxxx> wrote: >>>> On Tuesday, February 12, 2013 11:11:23 AM Yinghai Lu wrote: >>>>> Peter Hurley found "irq 18 nobody cared" with pci-next, and dmesg has >>>>> >>>>> [ 8.983246] pci 0000:00:1e.0: can't derive routing for PCI INT A >>>>> [ 8.983600] snd_ctxfi 0000:09:02.0: PCI INT A: no GSI - using ISA IRQ 5 >>>>> >>>>> bisect to >>>>> | commit 4f535093cf8f6da8cfda7c36c2c1ecd2e9586ee4 >>>>> | PCI: Put pci_dev in device tree as early as possible >>>>> >>>>> It turns out we need to call acpi_pci_irq_add_prt() after the pci bridges >>>>> are scanned. >>>>> >>>>> Bjorn said: >>>>> The bus number binding means acpi_pci_irq_add_prt() has to happen >>>>> after enumerating everything below a bridge, and it will prevent us >>>>> from doing any bus number reassignment for hotplug. >>>>> >>>>> I think we should remove the bus numbers from the cached _PRT (or >>>>> maybe even remove the _PRT caching completely). When we enable a PCI >>>>> device's IRQ, we should search up the PCI device tree looking for a >>>>> _PRT associated with each node, and applying normal PCI bridge >>>>> swizzling when we don't find a _PRT. I think this can be done without >>>>> using PCI bus numbers at all. >>>>> >>>>> So here we try to remove _PRT caching completely. >>>>> >>>>> -v2: check !handle early. >>>>> >>>>> Reported-and-tested-by: Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> >>>>> Suggested-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> >>>>> Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> >>>> >>>> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> >>>> >>>>> --- >>>>> drivers/acpi/pci_irq.c | 95 +++++++++++++++++--------------------------- >>>>> drivers/acpi/pci_root.c | 18 -------- >>>>> drivers/pci/pci-acpi.c | 24 ----------- >>>>> include/acpi/acpi_drivers.h | 5 -- >>>>> 4 files changed, 38 insertions(+), 104 deletions(-) >>> >>> Bjorn, >>> >>> Can you put this one into pci/next? >> >> I'm not sure what this patch is based on or what the best way to merge >> it is. It doesn't apply cleanly to my next or >> pci/yinghai-root-bus-hotplug branches. > > My fault, that is based on pci/next + pm/linux-next > > linux-next removed > acpi_power_resource_(un)register_device ... > >> >> I did apply it manually on top of pci/yinghai-root-bus-hotplug to try >> it out, but we need to tweak the messages a little bit. >> >> Previously we printed "ACPI: PCI Interrupt Routing Table [%s._PRT]" >> once when loading it, which was fine. Now we print it every time we >> look at a _PRT, which is too much because it isn't really adding any >> information. >> >> We also print "ACPI Exception: AE_NOT_FOUND, Evaluating _PRT >> [AE_NOT_FOUND] (20121018/pci_irq-259)" if we find ACPI nodes without >> _PRTs, which we shouldn't do, because that's a common and normal >> situation. > > Sure. Can you have separated patch to do that ? > > Or want me to resend the patch. Please check attached updated version that remove print out ... and it could be applied cleanly on top of pci/yinghai-root-bus-hotplug Thanks Yinghai
Attachment:
move_setup_prt_down_for_pci.patch
Description: Binary data