linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Initial APCI root bus discovery vs. rescan
@ 2015-05-25 23:36 Prarit Bhargava
  2015-05-26 16:07 ` Bjorn Helgaas
  0 siblings, 1 reply; 7+ messages in thread
From: Prarit Bhargava @ 2015-05-25 23:36 UTC (permalink / raw)
  To: Linux PCI

During system init, acpi_pci_root_add() is called which uses ACPI information to
reserve memory and IO regions for PCI devices under the root bridge.

If I hot remove a device, by echo'ing 1 into its remove file, and then
rescanning the parent bus (in this case the same bridge discovered by
acpi_pci_root_add()) by echo'ing 1 into the rescan file, the code path calls

unsigned int pci_rescan_bus(struct pci_bus *bus)
{
        unsigned int max;

        max = pci_scan_child_bus(bus);
        pci_assign_unassigned_bus_resources(bus);
        pci_bus_add_devices(bus);

        return max;
}

which AFAICT does not take into account ACPI Memory and IO regions for devices
under the bridge.  Is there an obvious reason to do this?  Or is there some
other init required before I issue the rescan on the bus?

Or ... is this a bug?

FWIW, I am removing a PCI Serial port card by echo'ing 1 into its remove file
and then reinserting it by doing a rescan on the parent bus.  The card does not
come up with the same memory & IO as it initially had.  I would have expected
that it did come up with the same resources as the memory & IO are free... but
maybe that expectation is incorrect.

P.


P.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-06-02 23:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-25 23:36 Initial APCI root bus discovery vs. rescan Prarit Bhargava
2015-05-26 16:07 ` Bjorn Helgaas
2015-06-02 17:54   ` Prarit Bhargava
2015-06-02 20:44     ` Bjorn Helgaas
2015-06-02 22:31       ` Prarit Bhargava
2015-06-02 22:38         ` Prarit Bhargava
2015-06-02 23:38           ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).