From mboxrd@z Thu Jan 1 00:00:00 1970 From: "canquan.shen" Subject: Re: Re : [PATCH] acpi: Fix hot cpu remove problem on acpi subsystem Date: Tue, 06 Sep 2011 14:48:52 +0800 Message-ID: <4E65C254.8090107@huawei.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-reply-to: Sender: linux-kernel-owner@vger.kernel.org To: Bjorn Helgaas Cc: "lenb@kernel.org" , "rui.zhao@intel.com" , "shemminger@vyatta.com" , "yakui.zhao@intel.com" , "xiaowei.yang@huawei.com" , hanweidong , "linux-kernel@vger.kernel.org" , "linux-acpi@vger.kernel.org" List-Id: linux-acpi@vger.kernel.org On 2011/9/6 12:19, Bjorn Helgaas wrote: >> =E4=B8=BB=E9=A2=98: [PATCH] acpi: Fix hot cpu remove problem on acpi= subsystem >> >> In Xen virtualization environment, When I used xen tools (xm vcpu-se= t vcpu_number ) to test the vcpu add and remove, I found it is failure = on vcpu remove, I found the reason is that nothing to do when cpu remov= e in acpi_processor_hotplug_notify function, so I add the code of send = the OFFLINE message to udev and add the rule of udev. it is ok on vcpu = remove. >> Signed-off-by: Shen canquan >> --- >> drivers/acpi/processor_driver.c | 2 ++ >> 1 files changed, 2 insertions(+), 0 deletions(-) >> diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processo= r_driver.c >> index a4e0f1b..a1c564f 100644 >> --- a/drivers/acpi/processor_driver.c >> +++ b/drivers/acpi/processor_driver.c >> @@ -677,6 +677,8 @@ static void acpi_processor_hotplug_notify(acpi_h= andle handle, >> "Driver data is NULL, dropping = EJECT\n"); >> return; >> } >> + >> + kobject_uevent(&device->dev.kobj, KOBJ_OFFLINE); >> break; >> default: >> ACPI_DEBUG_PRINT((ACPI_DB_INFO, > > The processor driver used to generate ONLINE and OFFLINE messages. I > removed them with c1815e0740. According to the changelog, the driver > core still generates KOBJ_ADD and KOBJ_REMOVE events. > Thanks for your answer. When I used xen tools (xm vcpu-set vcpu_numer) to reduce the cpu number= =2E=20 I don't found any event . I use the following tool to capture the event= :=20 udevadm monitor --env --kernel --udev. If I used xen tools to add the cpu number , udev module will receive th= e=20 KOBJ_ADD event. In my patch ,It is more fine to replace KOBJ_OFFLINE to KOBJ_REMOVE eve= nt . btw: how to find changelog of the c1815e0740. > Could you fix the Xen vcpu add/remove problem by looking for > ADD/REMOVE events rather than ONLINE/OFFLINE? > Xen vcpu add/remove module has send the sci interrupt to linux ACPI Cor= e=20 module. the sci interrupt handler function (acpi_ev_gpe_xrupt_handler)=20 has hanled it and called to AML code of processor to add and remove cpu= =2E=20 and then call back acpi_processor_hotplug_notify function to notify=20 linux acpi processor driver . > I removed ONLINE/OFFLINE because I think hotplug should be handled in > the ACPI core, not in the drivers. Removing ONLINE/OFFLINE got rid o= f > one small piece of driver-specific hotplug handling. Obviously, > there's still a lot to do. > > If using ADD/REMOVE is not sufficient, what is the justification for > needing both REMOVE and OFFLINE, and how would they be different? > I think the device of processor add and remove should be handle in=20 processor driver . The ONLINE/OFFLINE function of CPU should be handle=20 in linux kernel. so when removing cpu by Xen. at first it should be=20 notify linux kernel to offline the cpu and then remove the device of=20 processor. btw: I found acpi_eject_store function in driver/acpi/scan.c will deal=20 the offline cpu and remove the device of processor. > Bjorn > >