lkml.org 
[lkml]   [2013]   [Jan]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v3 4/6] PCI/acpiphp: update ACPI hotplug slot information when PCI hotplug happens
On 01/09/2013 08:04 AM, Rafael J. Wysocki wrote:
> On Wednesday, January 09, 2013 12:52:23 AM Jiang Liu wrote:
>> Currently the acpiphp driver fails to update hotplug slot information under
>> several conditions, such as:
>> 1) The bridge device is removed through /sys/bus/pci/devices/.../remove
>> 2) The bridge device is added/removed by PCI hotplug driver other than the
>> acpiphp driver itself. For example, if an IO expansion box with ACPI
>> hotplug slots available is hot-added by the pciehp driver, all ACPI
>> hotplug slots won't be discovered by the acpiphp driver.
>>
>> So hook the BUS_NOTIFY_ADD_DEVICE/BUS_NOTIFY_DEL_DEVICE events to
>> update ACPI hotplug slot information when PCI hotplug event happens.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
>> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
>> ---
>> drivers/pci/hotplug/acpiphp_glue.c | 62 ++++++++++++++++++++++++++++++++++--
>> 1 file changed, 60 insertions(+), 2 deletions(-)
>>
snip
>> +static struct notifier_block acpi_pci_hp_notifier = {
>> + .notifier_call = &acpi_pci_hp_notify_fn,
>> +};
>> +
>> static struct acpi_pci_driver acpi_pci_hp_driver = {
>> .add = add_bridge,
>> .remove = remove_bridge,
>> @@ -1448,6 +1503,8 @@ int __init acpiphp_glue_init(void)
>> else
>> acpi_pci_register_driver(&acpi_pci_hp_driver);
>>
>> + bus_register_notifier(&pci_bus_type, &acpi_pci_hp_notifier);
>
> Your previous patch adds a PCI bus notifier for a similar thing. Why are
> you adding another one here?
Hi Rafael,
The acpiphp driver could be built as a module, and this bus notifier
is used to setup/tear down ACPI based PCI hotplug controllers under a PCI bridge.
The previous patch is to add/remove PCI slots. The PCI slot and PCI hotplug
controller are related but different objects, so we use two notifiers to support
them all.
Thanks!
Gerry

>
>
>> +
>> return 0;
>> }
>>
>> @@ -1459,6 +1516,7 @@ int __init acpiphp_glue_init(void)
>> */
>> void acpiphp_glue_exit(void)
>> {
>> + bus_unregister_notifier(&pci_bus_type, &acpi_pci_hp_notifier);
>> acpi_pci_unregister_driver(&acpi_pci_hp_driver);
>> }
>
> Thanks,
> Rafael
>
>



\
 
 \ /
  Last update: 2013-01-09 18:21    [W:0.113 / U:0.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site