From: Bjorn Helgaas <bhelgaas@google.com>
To: Prarit Bhargava <prarit@redhat.com>
Cc: Linux PCI <linux-pci@vger.kernel.org>
Subject: Re: Initial APCI root bus discovery vs. rescan
Date: Tue, 26 May 2015 11:07:16 -0500 [thread overview]
Message-ID: <20150526160716.GM32152@google.com> (raw)
In-Reply-To: <5563B21A.8080504@redhat.com>
Hi Prarit,
On Mon, May 25, 2015 at 07:36:58PM -0400, Prarit Bhargava wrote:
> 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.
It might be quicker if you posted the complete dmesg log, along with
pointers to the specific things that look wrong.
In this scenario, I assume the serial port device remains powered all the
time, even while it is logically removed from the system, so when we
re-enumerate and find the device, I would think its BARs would still
contain whatever they had before, and since they are still valid, we should
still use them.
So I think my expectation is the same as yours, and I don't know why it
doesn't work that way. I assume the device actually *works* with the new
resources, so it's not really broken in that sense, but it does bother me
if we're changing something when we don't need to change it.
Bjorn
next prev parent reply other threads:[~2015-05-26 16:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-25 23:36 Initial APCI root bus discovery vs. rescan Prarit Bhargava
2015-05-26 16:07 ` Bjorn Helgaas [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150526160716.GM32152@google.com \
--to=bhelgaas@google.com \
--cc=linux-pci@vger.kernel.org \
--cc=prarit@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).