From: Gu Zheng <guz.fnst@cn.fujitsu.com>
To: liguang <lig.fnst@cn.fujitsu.com>
Cc: "Len Brown" <lenb@kernel.org>, "Rafael J. Wysocki" <rjw@sisk.pl>,
"Matthew Garrett" <matthew.garrett@nebula.com>,
linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
platform-driver-x86@vger.kernel.org,
"Andreas Färber" <afaerber@suse.de>,
"Igor Mammedov" <imammedo@redhat.com>
Subject: Re: [PATCH RFC v2 1/3] drivers/platform/x86: add cpu physically hotplug driver
Date: Thu, 06 Jun 2013 10:24:59 +0800 [thread overview]
Message-ID: <51AFF2FB.6020007@cn.fujitsu.com> (raw)
In-Reply-To: <1370482835-764-2-git-send-email-lig.fnst@cn.fujitsu.com>
On 06/06/2013 09:40 AM, liguang wrote:
> this driver will support cpu phyical add/removal automatically
> after online/offline. if cpu hotpluged, cpu will not
> online automatically, and for cpu offline, we try to
> do actually eject if allowed for cpu like
> "echo 1 > /sys/bus/acpi/devices/LNXCPU\:0X/eject"
> this "echo ..." is only present for recent kernel
> (sorry, can't figure out since when), for a little
> older kernel, there's not such approach AFAICS.
>
> Signed-off-by: liguang <lig.fnst@cn.fujitsu.com>
> ---
> drivers/platform/x86/Kconfig | 8 ++++
> drivers/platform/x86/Makefile | 1 +
> drivers/platform/x86/cpu_physic_hotplug.c | 60 +++++++++++++++++++++++++++++
> 3 files changed, 69 insertions(+), 0 deletions(-)
> create mode 100644 drivers/platform/x86/cpu_physic_hotplug.c
>
> diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
> index 8577261..39b2392 100644
> --- a/drivers/platform/x86/Kconfig
> +++ b/drivers/platform/x86/Kconfig
> @@ -789,4 +789,12 @@ config PVPANIC
> a paravirtualized device provided by QEMU; it lets a virtual machine
> (guest) communicate panic events to the host.
>
> +config QEMU_CPU_PHYSIC_HOTPLUG
> + tristate "physically add/remove cpu after cpu onlined/offlined"
> + depends on ACPI_HOTPLUG_CPU
> + ---help---
> + This driver will support physically remove a cpu after
> + it offlined for QEMU automatically. someone may require this feature
> + to do a physically removal for a cpu.
> +
> endif # X86_PLATFORM_DEVICES
> diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
> index ef0ec74..2e669b0 100644
> --- a/drivers/platform/x86/Makefile
> +++ b/drivers/platform/x86/Makefile
> @@ -53,3 +53,4 @@ obj-$(CONFIG_APPLE_GMUX) += apple-gmux.o
> obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o
>
> obj-$(CONFIG_PVPANIC) += pvpanic.o
> +obj-$(CONFIG_QEMU_CPU_PHYSIC_HOTPLUG) += cpu_physic_hotplug.o
> diff --git a/drivers/platform/x86/cpu_physic_hotplug.c b/drivers/platform/x86/cpu_physic_hotplug.c
> new file mode 100644
> index 0000000..a52c042
> --- /dev/null
> +++ b/drivers/platform/x86/cpu_physic_hotplug.c
> @@ -0,0 +1,60 @@
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/acpi.h>
> +#include <linux/cpu.h>
> +#include <linux/notifier.h>
> +#include <acpi/processor.h>
> +
> +MODULE_AUTHOR("Li Guang");
> +MODULE_DESCRIPTION("CPU physically hot-plug/unplug Driver");
> +MODULE_LICENSE("GPL");
> +
> +static int cpu_logic_hotplug_notify(struct notifier_block *nfb,
> + unsigned long action, void *hcpu)
> +{
> + unsigned int cpu = (unsigned long)hcpu;
> + struct acpi_processor *pr = per_cpu(processors, cpu);
> +
> + if (pr) {
> + switch (action) {
> + case CPU_ONLINE:
> + break;
> + case CPU_DEAD:
> + break;
> + default:
> + break;
> + }
> + }
> + return NOTIFY_OK;
> +}
> +
> +static struct notifier_block cpu_logic_hotplug_notifier =
> +{
> + .notifier_call = cpu_logic_hotplug_notify,
> +};
> +
> +static int cpu_physic_hotplug_notify(struct notifier_block *nfb,
> + unsigned char *s)
> +{
> +}
Hi guang,
Maybe you need to define the callback function in the right format at the beginning,
if so, no need to correct it later.:)
Thanks,
Gu
> +
> +static struct notifier_block cpu_physic_hotplug_notifier =
> +{
> + .notifier_call = cpu_physic_hotplug_notify,
> +};
> +
> +static int __init cpu_qemu_hotplug_init(void)
> +{
> + register_hotcpu_notifier(&cpu_logic_hotplug_notifier);
> + register_ec_gpe_notifier(&cpu_physic_hotplug_notifier);
As the [PATCH 2/3] has no dependence on this one, so you can set [PATCH 2/3] to [PATCH 1/3] and this one
to [PATCH 2/3]. Then you can use the xxx_ec_space_notifier directly here.
> + return 0;
> +}
> +
> +static void __exit cpu_qemu_hotplug_exit(void)
> +{
> + unregister_hotcpu_notifier(&cpu_logic_hotplug_notifier);
> + unregister_ec_gpe_notifier(&cpu_physic_hotplug_notifier);
> +}
> +
> +module_init(cpu_qemu_hotplug_init);
> +module_exit(cpu_qemu_hotplug_exit);
next prev parent reply other threads:[~2013-06-06 2:27 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-06 1:40 [PATCH RFC v2 0/3] add cpu physically hotplug driver liguang
2013-06-06 1:40 ` [PATCH RFC v2 1/3] drivers/platform/x86: " liguang
2013-06-06 2:24 ` Gu Zheng [this message]
2013-06-06 3:03 ` li guang
2013-06-06 3:03 ` li guang
2013-06-06 9:34 ` Borislav Petkov
2013-06-06 1:40 ` [PATCH RFC v2 2/3] ec: add ec space notifier liguang
2013-06-06 10:59 ` Rafael J. Wysocki
2013-06-10 0:46 ` li guang
2013-06-10 11:43 ` Rafael J. Wysocki
2013-06-10 11:43 ` Rafael J. Wysocki
2013-06-06 1:40 ` [PATCH RFC v2 3/3] cpu_physic_hotplug: register handler for " liguang
2013-06-06 11:00 ` [PATCH RFC v2 0/3] add cpu physically hotplug driver Rafael J. Wysocki
2013-06-10 0:36 ` li guang
2013-06-10 3:51 ` Yasuaki Ishimatsu
2013-06-10 4:04 ` li guang
2013-06-10 4:04 ` li guang
2013-06-10 11:47 ` Rafael J. Wysocki
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=51AFF2FB.6020007@cn.fujitsu.com \
--to=guz.fnst@cn.fujitsu.com \
--cc=afaerber@suse.de \
--cc=imammedo@redhat.com \
--cc=lenb@kernel.org \
--cc=lig.fnst@cn.fujitsu.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew.garrett@nebula.com \
--cc=platform-driver-x86@vger.kernel.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.