All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Taku Izumi <izumi.taku@jp.fujitsu.com>
Cc: linux-pci@vger.kernel.org, bhelgaas@google.com,
	linux-acpi@vger.kernel.org, kaneshige.kenji@jp.fujitsu.com,
	jiang.liu@huawei.com
Subject: Re: [PATCH v2 6/6] ACPI, PCI: add resoruce-assign code for devices under hot-added hostbridge
Date: Mon, 3 Sep 2012 13:27:11 -0700	[thread overview]
Message-ID: <CAE9FiQVXtTf3+jpbYzHk3D3VVm-bXEB9EcgkBwkEtYR-SRiKHA@mail.gmail.com> (raw)
In-Reply-To: <20120903170705.4e6dbc2c.izumi.taku@jp.fujitsu.com>

On Mon, Sep 3, 2012 at 1:07 AM, Taku Izumi <izumi.taku@jp.fujitsu.com> wrote:
>
> Devices under hot-added hostbridge have no chance to assign resources
> and to configure them, so this patch adds such code for hot-added
> hostbridges at acpi_pci_root_start().
>
> Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com>
> ---
>  drivers/acpi/pci_root.c |   17 +++++++++++++++++
>  include/acpi/acpi_bus.h |    1 +
>  2 files changed, 18 insertions(+)
>
> Index: Bjorn-next-0903/drivers/acpi/pci_root.c
> ===================================================================
> --- Bjorn-next-0903.orig/drivers/acpi/pci_root.c
> +++ Bjorn-next-0903/drivers/acpi/pci_root.c
> @@ -39,6 +39,7 @@
>  #include <acpi/acpi_bus.h>
>  #include <acpi/acpi_drivers.h>
>  #include <acpi/apei.h>
> +#include <linux/pci_hotplug.h>
>
>  #define PREFIX "ACPI: "
>
> @@ -461,6 +462,9 @@ static int __devinit acpi_pci_root_add(s
>         if (!root)
>                 return -ENOMEM;
>
> +       if (system_state != SYSTEM_BOOTING)
> +               root->hot_added = true;
> +
>         segment = 0;
>         status = acpi_evaluate_integer(device->handle, METHOD_NAME__SEG, NULL,
>                                        &segment);
> @@ -639,6 +643,7 @@ static int acpi_pci_root_start(struct ac
>  {
>         struct acpi_pci_root *root = acpi_driver_data(device);
>         struct acpi_pci_driver *driver;
> +       struct pci_dev *pdev;
>
>         mutex_lock(&acpi_pci_root_lock);
>         list_for_each_entry(driver, &acpi_pci_drivers, node)
> @@ -646,6 +651,18 @@ static int acpi_pci_root_start(struct ac
>                         driver->add(device->handle);
>         mutex_unlock(&acpi_pci_root_lock);
>
> +       /*
> +        * Devices under hot-added hostbridge have no chance to assign
> +        * resources and to configure them, so do that here
> +        */
> +       if (root->hot_added) {
> +               pci_bus_size_bridges(root->bus);
> +               pci_bus_assign_resources(root->bus);
> +               list_for_each_entry(pdev, &root->bus->devices, bus_list)
> +                       pci_configure_slot(pdev);
> +               pci_enable_bridges(root->bus);
> +       }
> +
>         pci_bus_add_devices(root->bus);

after looking at your simplified version in patch5 and patch6
found that you do not understand my patchset correctly.

in my patchset there is change on:
acpi_pci_root_add
acpi_pci_root_start
acpi_pci_root_remove

and
handle_root_bridge_insertion/acpi_root_configure_bridge
handle_root_bridge_removal

for hot add path:
handle_root_bridge_insertion will call
      acpi_pci_root_add: it will scan the root bus and find all pci device
      acpi_root_configure_bridge: it will survey fw set pci resource,
and assigned unsigned resource
      acpi_pci_root_start: it will start acpi_pci driver for ioapic
controller and dmar iommu
                                    then call pci_bus_add_devices to
load other pci device drivers.

for hot remove path:
      acpi_pci_root_remove: will call pci_stop_bus_devices() to stop
drivers for all normal pci devices.
                                        then stop acpi_pci driver for
dmar and ioapic driver
                                        then call
pci_stop_and_remove_bus to remove the root bus.

the point is : keep the driver of ioapic and dmar  driver loading
before normal pci drivers, and later
stop driver for dmar/iommu, after unloading pci drivers.

Thanks

Yinghai

  reply	other threads:[~2012-09-03 20:27 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-03  7:58 [PATCH v2 0/6] acpi,pci: hostbridge hotplug support Taku Izumi
2012-09-03  8:03 ` [PATCH v2 1/6] ACPI, PCI: Use normal list for struct acpi_pci_driver Taku Izumi
2012-09-03  8:04 ` [PATCH v2 2/6] ACPI, PCI: Notify acpi_pci_drivers when hot-plugging PCI root bridges Taku Izumi
2012-09-04  7:58   ` Kaneshige, Kenji
2012-09-04  7:58     ` Kaneshige, Kenji
2012-09-04 19:12     ` Yinghai Lu
2012-09-05  4:32       ` Kaneshige, Kenji
2012-09-05  5:01         ` Yinghai Lu
2012-09-05  8:55           ` Kaneshige, Kenji
2012-09-03  8:05 ` [PATCH v2 3/6] ACPI, PCI: add acpi_pci_drivers protection Taku Izumi
2012-09-03  8:06 ` [PATCH v2 4/6] ACPI, PCI: add acpi_pci_roots protection Taku Izumi
2012-09-12 23:40   ` Bjorn Helgaas
2012-09-13 19:09     ` Yinghai Lu
2012-09-13 19:39       ` Bjorn Helgaas
2012-09-13 21:17         ` Yinghai Lu
2012-09-13 22:44           ` Yinghai Lu
2012-09-14  4:35     ` Taku Izumi
2012-09-14 14:43       ` Bjorn Helgaas
2012-09-15  3:23         ` Jiang Liu
2012-09-03  8:06 ` [PATCH v2 5/6] ACPI, PCI: add hostbridge removal function Taku Izumi
2012-09-03  8:07 ` [PATCH v2 6/6] ACPI, PCI: add resoruce-assign code for devices under hot-added hostbridge Taku Izumi
2012-09-03 20:27   ` Yinghai Lu [this message]
2012-09-07  9:26     ` Taku Izumi
2012-09-07  9:31       ` Taku Izumi

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=CAE9FiQVXtTf3+jpbYzHk3D3VVm-bXEB9EcgkBwkEtYR-SRiKHA@mail.gmail.com \
    --to=yinghai@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=izumi.taku@jp.fujitsu.com \
    --cc=jiang.liu@huawei.com \
    --cc=kaneshige.kenji@jp.fujitsu.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.