From: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Linux PCI <linux-pci@vger.kernel.org>,
Jesse Barnes <jbarnes@virtuousgeek.org>,
LKML <linux-kernel@vger.kernel.org>,
Linux PM list <linux-pm@vger.kernel.org>,
ACPI Devel Mailing List <linux-acpi@vger.kernel.org>,
Matthew Garrett <mjg59@srcf.ucam.org>
Subject: Re: [PATCH] PCI / ACPI: Make acpiphp ignore root bridges using PCIe native hotplug
Date: Tue, 25 Oct 2011 22:10:16 +0900 [thread overview]
Message-ID: <4EA6B538.7020401@jp.fujitsu.com> (raw)
In-Reply-To: <201110220043.38635.rjw@sisk.pl>
Looks good.
This is also needed for SHPC native hotplug.
Regards,
Kenji Kaneshige
(2011/10/22 7:43), Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki<rjw@sisk.pl>
>
> If the kernel has requested control of the PCIe native hotplug
> feature for a given root complex, the acpiphp driver should not try
> to handle that root complex and it should leave it to pciehp.
> Failing to do so causes problems to happen if acpiphp is loaded
> before pciehp on such systems.
>
> To address this issue make find_root_bridges() ignore PCIe root
> complexes with PCIe native hotplug enabled and make add_bridge()
> return error code if PCIe native hotplug is enabled for the given
> root port. This causes acpiphp to refuse to load if PCIe native
> hotplug is enabled for all complexes and to refuse binding to
> the root complexes with PCIe native hotplug is enabled.
>
> Signed-off-by: Rafael J. Wysocki<rjw@sisk.pl>
> ---
> drivers/pci/hotplug/acpiphp_glue.c | 29 ++++++++++++++++++++++++-----
> 1 file changed, 24 insertions(+), 5 deletions(-)
>
> Index: linux/drivers/pci/hotplug/acpiphp_glue.c
> ===================================================================
> --- linux.orig/drivers/pci/hotplug/acpiphp_glue.c
> +++ linux/drivers/pci/hotplug/acpiphp_glue.c
> @@ -458,8 +458,17 @@ static int add_bridge(acpi_handle handle
> {
> acpi_status status;
> unsigned long long tmp;
> + struct acpi_pci_root *root;
> acpi_handle dummy_handle;
>
> + /*
> + * We shouldn't use this bridge if PCIe native hotplug control has been
> + * granted by the BIOS for it.
> + */
> + root = acpi_pci_find_root(handle);
> + if (root&& (root->osc_control_set& OSC_PCI_EXPRESS_NATIVE_HP_CONTROL))
> + return -ENODEV;
> +
> /* if the bridge doesn't have _STA, we assume it is always there */
> status = acpi_get_handle(handle, "_STA",&dummy_handle);
> if (ACPI_SUCCESS(status)) {
> @@ -1297,13 +1306,23 @@ static void handle_hotplug_event_func(ac
> static acpi_status
> find_root_bridges(acpi_handle handle, u32 lvl, void *context, void **rv)
> {
> + struct acpi_pci_root *root;
> int *count = (int *)context;
>
> - if (acpi_is_root_bridge(handle)) {
> - acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY,
> - handle_hotplug_event_bridge, NULL);
> - (*count)++;
> - }
> + if (!acpi_is_root_bridge(handle))
> + return AE_OK;
> +
> + root = acpi_pci_find_root(handle);
> + if (!root)
> + return AE_OK;
> +
> + if (root->osc_control_set& OSC_PCI_EXPRESS_NATIVE_HP_CONTROL)
> + return AE_OK;
> +
> + (*count)++;
> + acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY,
> + handle_hotplug_event_bridge, NULL);
> +
> return AE_OK ;
> }
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2011-10-25 13:10 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-21 22:43 [PATCH] PCI / ACPI: Make acpiphp ignore root bridges using PCIe native hotplug Rafael J. Wysocki
2011-10-22 21:58 ` Yinghai Lu
2011-10-22 22:10 ` Rafael J. Wysocki
2011-10-25 13:10 ` Kenji Kaneshige [this message]
2011-10-25 13:25 ` Rafael J. Wysocki
2011-10-26 0:28 ` Kenji Kaneshige
2011-10-26 11:42 ` Rafael J. Wysocki
2011-10-28 2:45 ` Kenji Kaneshige
2011-11-06 22:11 ` [PATCH] PCI / ACPI: Make acpiphp ignore root bridges using SHPC " Rafael J. Wysocki
2011-11-07 1:43 ` Kenji Kaneshige
2011-11-11 17:49 ` Jesse Barnes
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=4EA6B538.7020401@jp.fujitsu.com \
--to=kaneshige.kenji@jp.fujitsu.com \
--cc=jbarnes@virtuousgeek.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
--cc=rjw@sisk.pl \
/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.