linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hanjun Guo <guohanjun@huawei.com>
To: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>,
	"Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Tang Chen <tangchen@cn.fujitsu.com>, <yinghai@kernel.org>,
	<bhelgaas@google.com>, <lenb@kernel.org>, <jiang.liu@huawei.com>,
	<izumi.taku@jp.fujitsu.com>, <linux-acpi@vger.kernel.org>,
	<linux-pci@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	Wen Congyang <wency@cn.fujitsu.com>,
	Toshi Kani <toshi.kani@hp.com>
Subject: Re: [PATCH v3 0/3] ACPI: container hot remove support.
Date: Mon, 26 Nov 2012 13:42:38 +0800	[thread overview]
Message-ID: <50B3014E.3040107@huawei.com> (raw)
In-Reply-To: <509106E2.70008@jp.fujitsu.com>

On 2012/10/31 19:09, Yasuaki Ishimatsu wrote:
> Hi Tang,
> 
> 2012/10/31 16:27, Tang Chen wrote:
>> Hi,
>>
>> The container hotplug handler container_notify_cb() didn't implement
>> the hot-remove functionality. So, these 3 patches implement it like
>> the following way:
>>
>> patch 1. Do not use kacpid_wq/kacpid_notify_wq to handle container hotplug event,
>>           use kacpi_hotplug_wq instead to avoid deadlock.
>>           Doing this is to reuse acpi_bus_hot_remove_device() in container
>>           hot-remove handling.
>>
>> patch 2. Introduce a new function container_device_remove() to handle
>>           ACPI_NOTIFY_EJECT_REQUEST event for container.
> 
> If container device contains memory device, the function is 
> very danger. As you know, we are developing a memory hotplug.
> If memory has kernel memory, memory hot remove operations fails.
> But container_device_remove() cannot realize it. So even if
> the memory hot remove operation fails, container_device_remove()
> keeps hot remove operation. Finally, the function sends _EJ0
> to firmware. In this case, if the memory is accessed, kernel
> panic occurs.

Hi all,
I think Yasuaki mentioned the key point for the container device remove,
that is dependency.

Currently, container, processor, and memory hotpulg are managed by different ACPI
hotplug drivers, the driver works when handle device hotplug individually, but they
have no idea for each other.

This may introduce some issues, such as Yasuaki mentioned above, that is to say, we
should remove its child before remove the device itself, and hot add its parent before
the device itself.

According to the ACPI namespace, we can resolve most of dependency issues. On a typical
two processor sockets system, the namespace is like this:

/_SB                   ---container device, with HID ACPI0004
    |_SCK0             ---container device, with HID ACPI0004
	  |_CPU0       ---processor device, with HID ACPI0009 or LNXCPU
          |_...
          |_CPUx
          |_MEM0       ---Memory device, with HID PNP0C80
    |_SCK1
	  |_CPU0
          |_...
          |_CPUx
          |_MEM1
    |_PCI0            ---Host bridge, with HID PNP0A03 or PNP0A08

If hot remove the container device, such as SCK0, we can easily know the dependency list
is CPU0~CPUx and MEM0, but I think the ACPI hotplug driver haven't resolve this now.

And there is another corner case for hotplug devices in the namespace above, that is:
1) Remove SCK0. yes, we can remove it with no dependency to the host bridge PCI0;

2) Remove SCK1 after SCK0. we should remove the host bridge PCI0 first,
   or the system will crash down. yes, dynamic dependency analysis is needed here.
   and the ACPI hotplug driver totally have no idea of this.

so, should we do something to settle this down ?

Thanks
Hanjun Guo


> The example is as follows:
> 
>  https://lkml.org/lkml/2012/9/26/318
> 
> Thanks,
> Yasuaki Ishimatsu
> 
>>




  parent reply	other threads:[~2012-11-26  5:43 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-31  7:27 [PATCH v3 0/3] ACPI: container hot remove support Tang Chen
2012-10-31  7:27 ` [PATCH v3 1/3] Use acpi_os_hotplug_execute() instead of alloc_acpi_hp_work() Tang Chen
2012-11-01  3:52   ` Yinghai Lu
2012-11-01  6:07     ` Tang Chen
2012-10-31  7:27 ` [PATCH v3 2/3] Use kacpi_hotplug_wq to handle container hotplug event Tang Chen
2012-10-31  7:27 ` [PATCH v3 3/3] Improve container_notify_cb() to support container hot-remove Tang Chen
2012-11-01 16:43   ` Toshi Kani
2012-11-01 18:28     ` Yinghai Lu
2012-11-01 19:17       ` Toshi Kani
2012-11-01 20:17         ` Rafael J. Wysocki
2012-11-01 20:16           ` Yinghai Lu
2012-11-01 21:31             ` Rafael J. Wysocki
2012-11-01 21:51               ` Toshi Kani
2012-11-01 22:15               ` Yinghai Lu
2012-11-01 23:15                 ` Rafael J. Wysocki
2012-11-01 23:39                   ` Yinghai Lu
2012-11-02  1:16                     ` Rafael J. Wysocki
2012-11-01 20:16       ` Rafael J. Wysocki
2012-11-02  1:21     ` Tang Chen
2012-10-31 11:09 ` [PATCH v3 0/3] ACPI: container hot remove support Yasuaki Ishimatsu
2012-10-31 16:48   ` Yinghai Lu
2012-11-01  1:48     ` Tang Chen
2012-11-04 16:33     ` Jiang Liu
2012-11-01  1:40   ` Tang Chen
2012-11-26  5:42   ` Hanjun Guo [this message]
2012-11-26  6:06     ` Tang Chen
2012-11-26 13:04       ` Hanjun Guo
2012-11-27  1:08       ` Hanjun Guo
2012-11-27  2:38         ` Tang Chen
2012-11-27 11:24           ` Hanjun Guo

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=50B3014E.3040107@huawei.com \
    --to=guohanjun@huawei.com \
    --cc=bhelgaas@google.com \
    --cc=isimatu.yasuaki@jp.fujitsu.com \
    --cc=izumi.taku@jp.fujitsu.com \
    --cc=jiang.liu@huawei.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=tangchen@cn.fujitsu.com \
    --cc=toshi.kani@hp.com \
    --cc=wency@cn.fujitsu.com \
    --cc=yinghai@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 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).