Initial APCI root bus discovery vs. rescan

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux