2013-06-06 01:51:14

by Li Guang

[permalink] [raw]
Subject: [PATCH RFC v2 0/3] add cpu physically hotplug driver

This patch-set try to support physically hot-plug/unplug
a cpu automatically, that is:
if you offline a cpu, it will automatically actually remove
a cpu, and if you hot-plug a cpu, then it will online this
cpu automatically.
so, offline is just like eject, but eject attribute seems not
available since recent kernel(can't figure out when), with
this driver, if allowed, it will trigger a eject cpu process.
and for automatically online, it was said there are objections,
don't know the reason, so, send this patch-set boldly.

of course, this approach is for QEMU 's hotplug cpu emulation
only, but not limited, if someone like to explore ec space to
implment cpu hot-plug/unplug for real platform please
feel free to continue.

Li Guang (3)
drivers/platform/x86: add cpu physically hotplug driver
ec: add ec space notifier
cpu_physic_hotplug: register handler for ec space notifier

drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
drivers/platform/x86/Kconfig | 8 ++++
drivers/platform/x86/Makefile | 1 +
drivers/platform/x86/cpu_physic_hotplug.c | 90 +++++++++++++++++++++++++++++
include/linux/acpi.h | 2 ++
5 files changed, 130 insertions(+), 3 deletions(-)
create mode 100644 drivers/platform/x86/cpu_physic_hotplug.c


2013-06-06 01:50:32

by Li Guang

[permalink] [raw]
Subject: [PATCH RFC v2 2/3] ec: add ec space notifier

add a notifier for anyone who are instresting in
ec space changing.

Signed-off-by: liguang <[email protected]>
---
drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
include/linux/acpi.h | 2 ++
2 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index edc0081..dee3417 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -124,6 +124,35 @@ static int EC_FLAGS_MSI; /* Out-of-spec MSI controller */
static int EC_FLAGS_VALIDATE_ECDT; /* ASUStec ECDTs need to be validated */
static int EC_FLAGS_SKIP_DSDT_SCAN; /* Not all BIOS survive early DSDT scan */

+/* notifier chain for who are intresting in ec space changing */
+static RAW_NOTIFIER_HEAD(ec_space_chain);
+
+int __ref register_ec_space_notifier(struct notifier_block *nb)
+{
+ int ret;
+
+ ret = raw_notifier_chain_register(&ec_space_chain, nb);
+
+ return ret;
+}
+EXPORT_SYMBOL(register_ec_space_notifier);
+
+void __ref unregister_ec_space_notifier(struct notifier_block *nb)
+{
+
+ raw_notifier_chain_unregister(&ec_space_chain, nb);
+}
+EXPORT_SYMBOL(unregister_ec_space_notifier);
+
+static int ec_space_notify(void *data)
+{
+ int ret;
+
+ ret = __raw_notifier_call_chain(&ec_space_chain, 0, data, -1, NULL);
+
+ return notifier_to_errno(ret);
+}
+
/* --------------------------------------------------------------------------
Transaction Management
-------------------------------------------------------------------------- */
@@ -638,6 +667,9 @@ static u32 acpi_ec_gpe_handler(acpi_handle gpe_device,
wake_up(&ec->wait);
ec_check_sci(ec, acpi_ec_read_status(ec));
}
+
+ ec_space_notify(data);
+
return ACPI_INTERRUPT_HANDLED | ACPI_REENABLE_GPE;
}

diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 17b5b59..4fe2247 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -158,6 +158,8 @@ extern int ec_transaction(u8 command,
const u8 *wdata, unsigned wdata_len,
u8 *rdata, unsigned rdata_len);
extern acpi_handle ec_get_handle(void);
+extern int register_ec_space_notifier(struct notifier_block *nb);
+extern void unregister_ec_space_notifier(struct notifier_block *nb);

#if defined(CONFIG_ACPI_WMI) || defined(CONFIG_ACPI_WMI_MODULE)

--
1.7.2.5

2013-06-06 01:50:35

by Li Guang

[permalink] [raw]
Subject: [PATCH RFC v2 3/3] cpu_physic_hotplug: register handler for ec space notifier

Signed-off-by: liguang <[email protected]>
---
drivers/platform/x86/cpu_physic_hotplug.c | 30 ++++++++++++++++++++++++++--
1 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/drivers/platform/x86/cpu_physic_hotplug.c b/drivers/platform/x86/cpu_physic_hotplug.c
index a52c042..1cdac1b 100644
--- a/drivers/platform/x86/cpu_physic_hotplug.c
+++ b/drivers/platform/x86/cpu_physic_hotplug.c
@@ -9,6 +9,11 @@ MODULE_AUTHOR("Li Guang");
MODULE_DESCRIPTION("CPU physically hot-plug/unplug Driver");
MODULE_LICENSE("GPL");

+#define EC_SPACE_CPU_IDX 3
+#define EC_SPACE_CPU_OFFSET 4
+#define EC_SPACE_CPU_CMD 2
+#define EC_CPU_EJECT 0xE7
+
static int cpu_logic_hotplug_notify(struct notifier_block *nfb,
unsigned long action, void *hcpu)
{
@@ -20,6 +25,7 @@ static int cpu_logic_hotplug_notify(struct notifier_block *nfb,
case CPU_ONLINE:
break;
case CPU_DEAD:
+ ec_write(EC_SPACE_CPU_CMD, EC_CPU_EJECT);
break;
default:
break;
@@ -34,8 +40,26 @@ static struct notifier_block cpu_logic_hotplug_notifier =
};

static int cpu_physic_hotplug_notify(struct notifier_block *nfb,
- unsigned char *s)
+ unsigned long action, void *s)
{
+ u8 index = 0, val = 0;
+ bool cpu_state = false;
+ struct acpi_processor *pr;
+
+ ec_read(EC_SPACE_CPU_IDX, &index);
+ if (index == 0)
+ goto out;
+ pr = per_cpu(processors, index);
+
+ ec_read(EC_SPACE_CPU_OFFSET + index/8, &val);
+ if (val & 1 << index/8)
+ cpu_state = true;
+
+ if (pr->flags.need_hotplug_init & cpu_state)
+ cpu_up(pr->id);
+
+out:
+ return NOTIFY_OK;
}

static struct notifier_block cpu_physic_hotplug_notifier =
@@ -46,14 +70,14 @@ static struct notifier_block cpu_physic_hotplug_notifier =
static int __init cpu_qemu_hotplug_init(void)
{
register_hotcpu_notifier(&cpu_logic_hotplug_notifier);
- register_ec_gpe_notifier(&cpu_physic_hotplug_notifier);
+ register_ec_space_notifier(&cpu_physic_hotplug_notifier);
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);
+ unregister_ec_space_notifier(&cpu_physic_hotplug_notifier);
}

module_init(cpu_qemu_hotplug_init);
--
1.7.2.5

2013-06-06 01:50:52

by Li Guang

[permalink] [raw]
Subject: [PATCH RFC v2 1/3] drivers/platform/x86: add cpu physically hotplug driver

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 <[email protected]>
---
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)
+{
+}
+
+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);
+ 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);
--
1.7.2.5

2013-06-06 02:27:42

by Gu Zheng

[permalink] [raw]
Subject: Re: [PATCH RFC v2 1/3] drivers/platform/x86: add cpu physically hotplug driver

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 <[email protected]>
> ---
> 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);

2013-06-06 03:04:58

by Li Guang

[permalink] [raw]
Subject: Re: [PATCH RFC v2 1/3] drivers/platform/x86: add cpu physically hotplug driver

在 2013-06-06四的 10:24 +0800,Gu Zheng写道:
> 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 <[email protected]>
> > ---
> > 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.:)
>

right,

Thanks!

>
> > +
> > +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);
>
>

2013-06-06 09:34:20

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH RFC v2 1/3] drivers/platform/x86: add cpu physically hotplug driver

On Thu, Jun 06, 2013 at 09:40:33AM +0800, 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 <[email protected]>
> ---
> 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

This is hillarious: have you actually checked the dictionary on the
meaning of "physic"?

Yep, "laxative" because the kernel is constipated and can't hold its
CPUs anymore.

LOOOL :-).

--
Regards/Gruss,
Boris.

Sent from a fat crate under my desk. Formatting is fine.
--

2013-06-06 10:50:27

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH RFC v2 2/3] ec: add ec space notifier

On Thursday, June 06, 2013 09:40:34 AM liguang wrote:
> add a notifier for anyone who are instresting in
> ec space changing.
>
> Signed-off-by: liguang <[email protected]>

I'm not going to apply this anyway, but can you please explain what's the
problem you're trying to solve here?

Rafael


> ---
> drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
> include/linux/acpi.h | 2 ++
> 2 files changed, 34 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
> index edc0081..dee3417 100644
> --- a/drivers/acpi/ec.c
> +++ b/drivers/acpi/ec.c
> @@ -124,6 +124,35 @@ static int EC_FLAGS_MSI; /* Out-of-spec MSI controller */
> static int EC_FLAGS_VALIDATE_ECDT; /* ASUStec ECDTs need to be validated */
> static int EC_FLAGS_SKIP_DSDT_SCAN; /* Not all BIOS survive early DSDT scan */
>
> +/* notifier chain for who are intresting in ec space changing */
> +static RAW_NOTIFIER_HEAD(ec_space_chain);
> +
> +int __ref register_ec_space_notifier(struct notifier_block *nb)
> +{
> + int ret;
> +
> + ret = raw_notifier_chain_register(&ec_space_chain, nb);
> +
> + return ret;
> +}
> +EXPORT_SYMBOL(register_ec_space_notifier);
> +
> +void __ref unregister_ec_space_notifier(struct notifier_block *nb)
> +{
> +
> + raw_notifier_chain_unregister(&ec_space_chain, nb);
> +}
> +EXPORT_SYMBOL(unregister_ec_space_notifier);
> +
> +static int ec_space_notify(void *data)
> +{
> + int ret;
> +
> + ret = __raw_notifier_call_chain(&ec_space_chain, 0, data, -1, NULL);
> +
> + return notifier_to_errno(ret);
> +}
> +
> /* --------------------------------------------------------------------------
> Transaction Management
> -------------------------------------------------------------------------- */
> @@ -638,6 +667,9 @@ static u32 acpi_ec_gpe_handler(acpi_handle gpe_device,
> wake_up(&ec->wait);
> ec_check_sci(ec, acpi_ec_read_status(ec));
> }
> +
> + ec_space_notify(data);
> +
> return ACPI_INTERRUPT_HANDLED | ACPI_REENABLE_GPE;
> }
>
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index 17b5b59..4fe2247 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -158,6 +158,8 @@ extern int ec_transaction(u8 command,
> const u8 *wdata, unsigned wdata_len,
> u8 *rdata, unsigned rdata_len);
> extern acpi_handle ec_get_handle(void);
> +extern int register_ec_space_notifier(struct notifier_block *nb);
> +extern void unregister_ec_space_notifier(struct notifier_block *nb);
>
> #if defined(CONFIG_ACPI_WMI) || defined(CONFIG_ACPI_WMI_MODULE)
>
>
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

2013-06-06 10:51:29

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH RFC v2 0/3] add cpu physically hotplug driver

On Thursday, June 06, 2013 09:40:32 AM liguang wrote:
> This patch-set try to support physically hot-plug/unplug
> a cpu automatically, that is:
> if you offline a cpu, it will automatically actually remove
> a cpu, and if you hot-plug a cpu, then it will online this
> cpu automatically.

No and no.

Why do you need this?

Rafael


> so, offline is just like eject, but eject attribute seems not
> available since recent kernel(can't figure out when), with
> this driver, if allowed, it will trigger a eject cpu process.
> and for automatically online, it was said there are objections,
> don't know the reason, so, send this patch-set boldly.
>
> of course, this approach is for QEMU 's hotplug cpu emulation
> only, but not limited, if someone like to explore ec space to
> implment cpu hot-plug/unplug for real platform please
> feel free to continue.
>
> Li Guang (3)
> drivers/platform/x86: add cpu physically hotplug driver
> ec: add ec space notifier
> cpu_physic_hotplug: register handler for ec space notifier
>
> drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
> drivers/platform/x86/Kconfig | 8 ++++
> drivers/platform/x86/Makefile | 1 +
> drivers/platform/x86/cpu_physic_hotplug.c | 90 +++++++++++++++++++++++++++++
> include/linux/acpi.h | 2 ++
> 5 files changed, 130 insertions(+), 3 deletions(-)
> create mode 100644 drivers/platform/x86/cpu_physic_hotplug.c
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

2013-06-10 00:37:44

by Li Guang

[permalink] [raw]
Subject: Re: [PATCH RFC v2 0/3] add cpu physically hotplug driver

Hi, Rafael

在 2013-06-06四的 13:00 +0200,Rafael J. Wysocki写道:
> On Thursday, June 06, 2013 09:40:32 AM liguang wrote:
> > This patch-set try to support physically hot-plug/unplug
> > a cpu automatically, that is:
> > if you offline a cpu, it will automatically actually remove
> > a cpu, and if you hot-plug a cpu, then it will online this
> > cpu automatically.
>
> No and no.

Hmm... are you saying cpu online/offline designed to distinguish
with real cpu plug/unplug?
but, what the actual usage of online/offline?
forgive my foolish.

>
> Why do you need this?
>

e.g. for QEMU case, if hot-plug a cpu,
we have to online a cpu manually if there's
no user space support like udev to do it automatically.
and also, I think maybe online/offline should be naturally
integrated with real plug/unplug process of CPU.

>
>
> > so, offline is just like eject, but eject attribute seems not
> > available since recent kernel(can't figure out when), with
> > this driver, if allowed, it will trigger a eject cpu process.
> > and for automatically online, it was said there are objections,
> > don't know the reason, so, send this patch-set boldly.
> >
> > of course, this approach is for QEMU 's hotplug cpu emulation
> > only, but not limited, if someone like to explore ec space to
> > implment cpu hot-plug/unplug for real platform please
> > feel free to continue.
> >
> > Li Guang (3)
> > drivers/platform/x86: add cpu physically hotplug driver
> > ec: add ec space notifier
> > cpu_physic_hotplug: register handler for ec space notifier
> >
> > drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
> > drivers/platform/x86/Kconfig | 8 ++++
> > drivers/platform/x86/Makefile | 1 +
> > drivers/platform/x86/cpu_physic_hotplug.c | 90 +++++++++++++++++++++++++++++
> > include/linux/acpi.h | 2 ++
> > 5 files changed, 130 insertions(+), 3 deletions(-)
> > create mode 100644 drivers/platform/x86/cpu_physic_hotplug.c

2013-06-10 00:48:33

by Li Guang

[permalink] [raw]
Subject: Re: [PATCH RFC v2 2/3] ec: add ec space notifier

在 2013-06-06四的 12:59 +0200,Rafael J. Wysocki写道:
> On Thursday, June 06, 2013 09:40:34 AM liguang wrote:
> > add a notifier for anyone who are instresting in
> > ec space changing.
> >
> > Signed-off-by: liguang <[email protected]>
>
> I'm not going to apply this anyway, but can you please explain what's the
> problem you're trying to solve here?

OK, currently it is for QEMU to do cpu online automatically after
hot-plug a cpu,
and maybe potentially for real platform's cpu
plug/unplug implementation.
with this notifier, we don't need any GPIOes,IO ports, and other
hardware cost if we do have an EC chip in board to trigger kernel's
cpu process for this.

Yep, you said you'll reject this anyway,
but I have to ask do this notifier offend
any rules of your development?
or some other reasons?

Thanks!

>
> > ---
> > drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
> > include/linux/acpi.h | 2 ++
> > 2 files changed, 34 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
> > index edc0081..dee3417 100644
> > --- a/drivers/acpi/ec.c
> > +++ b/drivers/acpi/ec.c
> > @@ -124,6 +124,35 @@ static int EC_FLAGS_MSI; /* Out-of-spec MSI controller */
> > static int EC_FLAGS_VALIDATE_ECDT; /* ASUStec ECDTs need to be validated */
> > static int EC_FLAGS_SKIP_DSDT_SCAN; /* Not all BIOS survive early DSDT scan */
> >
> > +/* notifier chain for who are intresting in ec space changing */
> > +static RAW_NOTIFIER_HEAD(ec_space_chain);
> > +
> > +int __ref register_ec_space_notifier(struct notifier_block *nb)
> > +{
> > + int ret;
> > +
> > + ret = raw_notifier_chain_register(&ec_space_chain, nb);
> > +
> > + return ret;
> > +}
> > +EXPORT_SYMBOL(register_ec_space_notifier);
> > +
> > +void __ref unregister_ec_space_notifier(struct notifier_block *nb)
> > +{
> > +
> > + raw_notifier_chain_unregister(&ec_space_chain, nb);
> > +}
> > +EXPORT_SYMBOL(unregister_ec_space_notifier);
> > +
> > +static int ec_space_notify(void *data)
> > +{
> > + int ret;
> > +
> > + ret = __raw_notifier_call_chain(&ec_space_chain, 0, data, -1, NULL);
> > +
> > + return notifier_to_errno(ret);
> > +}
> > +
> > /* --------------------------------------------------------------------------
> > Transaction Management
> > -------------------------------------------------------------------------- */
> > @@ -638,6 +667,9 @@ static u32 acpi_ec_gpe_handler(acpi_handle gpe_device,
> > wake_up(&ec->wait);
> > ec_check_sci(ec, acpi_ec_read_status(ec));
> > }
> > +
> > + ec_space_notify(data);
> > +
> > return ACPI_INTERRUPT_HANDLED | ACPI_REENABLE_GPE;
> > }
> >
> > diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> > index 17b5b59..4fe2247 100644
> > --- a/include/linux/acpi.h
> > +++ b/include/linux/acpi.h
> > @@ -158,6 +158,8 @@ extern int ec_transaction(u8 command,
> > const u8 *wdata, unsigned wdata_len,
> > u8 *rdata, unsigned rdata_len);
> > extern acpi_handle ec_get_handle(void);
> > +extern int register_ec_space_notifier(struct notifier_block *nb);
> > +extern void unregister_ec_space_notifier(struct notifier_block *nb);
> >
> > #if defined(CONFIG_ACPI_WMI) || defined(CONFIG_ACPI_WMI_MODULE)
> >
> >

2013-06-10 03:52:20

by Yasuaki Ishimatsu

[permalink] [raw]
Subject: Re: [PATCH RFC v2 0/3] add cpu physically hotplug driver

2013/06/10 9:36, li guang wrote:
> Hi, Rafael
>
> 在 2013-06-06四的 13:00 +0200,Rafael J. Wysocki写道:
>> On Thursday, June 06, 2013 09:40:32 AM liguang wrote:
>>> This patch-set try to support physically hot-plug/unplug
>>> a cpu automatically, that is:
>>> if you offline a cpu, it will automatically actually remove
>>> a cpu, and if you hot-plug a cpu, then it will online this
>>> cpu automatically.
>>
>> No and no.
>
> Hmm... are you saying cpu online/offline designed to distinguish
> with real cpu plug/unplug?
> but, what the actual usage of online/offline?
> forgive my foolish.
>
>>
>> Why do you need this?
>>
>
> e.g. for QEMU case, if hot-plug a cpu,

> we have to online a cpu manually if there's
> no user space support like udev to do it automatically.

I could not understand why you do not use udev.
Please explain in detail.

> and also, I think maybe online/offline should be naturally
> integrated with real plug/unplug process of CPU.

I could not understand this explanation too.
Why do we need it?

Thanks,
Yasuaki Ishimatsu

>
>>
>>
>>> so, offline is just like eject, but eject attribute seems not
>>> available since recent kernel(can't figure out when), with
>>> this driver, if allowed, it will trigger a eject cpu process.
>>> and for automatically online, it was said there are objections,
>>> don't know the reason, so, send this patch-set boldly.
>>>
>>> of course, this approach is for QEMU 's hotplug cpu emulation
>>> only, but not limited, if someone like to explore ec space to
>>> implment cpu hot-plug/unplug for real platform please
>>> feel free to continue.
>>>
>>> Li Guang (3)
>>> drivers/platform/x86: add cpu physically hotplug driver
>>> ec: add ec space notifier
>>> cpu_physic_hotplug: register handler for ec space notifier
>>>
>>> drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
>>> drivers/platform/x86/Kconfig | 8 ++++
>>> drivers/platform/x86/Makefile | 1 +
>>> drivers/platform/x86/cpu_physic_hotplug.c | 90 +++++++++++++++++++++++++++++
>>> include/linux/acpi.h | 2 ++
>>> 5 files changed, 130 insertions(+), 3 deletions(-)
>>> create mode 100644 drivers/platform/x86/cpu_physic_hotplug.c
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>

2013-06-10 04:12:50

by Li Guang

[permalink] [raw]
Subject: Re: [PATCH RFC v2 0/3] add cpu physically hotplug driver

在 2013-06-10一的 12:51 +0900,Yasuaki Ishimatsu写道:
> 2013/06/10 9:36, li guang wrote:
> > Hi, Rafael
> >
> > 在 2013-06-06四的 13:00 +0200,Rafael J. Wysocki写道:
> >> On Thursday, June 06, 2013 09:40:32 AM liguang wrote:
> >>> This patch-set try to support physically hot-plug/unplug
> >>> a cpu automatically, that is:
> >>> if you offline a cpu, it will automatically actually remove
> >>> a cpu, and if you hot-plug a cpu, then it will online this
> >>> cpu automatically.
> >>
> >> No and no.
> >
> > Hmm... are you saying cpu online/offline designed to distinguish
> > with real cpu plug/unplug?
> > but, what the actual usage of online/offline?
> > forgive my foolish.
> >
> >>
> >> Why do you need this?
> >>
> >
> > e.g. for QEMU case, if hot-plug a cpu,
>
> > we have to online a cpu manually if there's
> > no user space support like udev to do it automatically.
>
> I could not understand why you do not use udev.
> Please explain in detail.

I did not say I can't use udev now,
just for in case someone can't.

>
> > and also, I think maybe online/offline should be naturally
> > integrated with real plug/unplug process of CPU.
>
> I could not understand this explanation too.
> Why do we need it?
>

actually, I am asking if CPU online/offline have real purpose,
you offline a CPU, then threads can't run on it,
you online a CPU, then threads can run on it,
so, the purpose here is just bouncing threads?
obviously not, any profound historical reasons?

I boldly think maybe online/offline should be integrated into
real plug/unplug process of CPU.

Thanks!

> >
> >>
> >>
> >>> so, offline is just like eject, but eject attribute seems not
> >>> available since recent kernel(can't figure out when), with
> >>> this driver, if allowed, it will trigger a eject cpu process.
> >>> and for automatically online, it was said there are objections,
> >>> don't know the reason, so, send this patch-set boldly.
> >>>
> >>> of course, this approach is for QEMU 's hotplug cpu emulation
> >>> only, but not limited, if someone like to explore ec space to
> >>> implment cpu hot-plug/unplug for real platform please
> >>> feel free to continue.
> >>>
> >>> Li Guang (3)
> >>> drivers/platform/x86: add cpu physically hotplug driver
> >>> ec: add ec space notifier
> >>> cpu_physic_hotplug: register handler for ec space notifier
> >>>
> >>> drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
> >>> drivers/platform/x86/Kconfig | 8 ++++
> >>> drivers/platform/x86/Makefile | 1 +
> >>> drivers/platform/x86/cpu_physic_hotplug.c | 90 +++++++++++++++++++++++++++++
> >>> include/linux/acpi.h | 2 ++
> >>> 5 files changed, 130 insertions(+), 3 deletions(-)
> >>> create mode 100644 drivers/platform/x86/cpu_physic_hotplug.c
> >
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to [email protected]
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at http://www.tux.org/lkml/
> >
>
>

2013-06-10 11:34:07

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH RFC v2 2/3] ec: add ec space notifier

On Monday, June 10, 2013 08:46:54 AM li guang wrote:
> 在 2013-06-06四的 12:59 +0200,Rafael J. Wysocki写道:
> > On Thursday, June 06, 2013 09:40:34 AM liguang wrote:
> > > add a notifier for anyone who are instresting in
> > > ec space changing.
> > >
> > > Signed-off-by: liguang <[email protected]>
> >
> > I'm not going to apply this anyway, but can you please explain what's the
> > problem you're trying to solve here?
>
> OK, currently it is for QEMU to do cpu online automatically after
> hot-plug a cpu,
> and maybe potentially for real platform's cpu
> plug/unplug implementation.
> with this notifier, we don't need any GPIOes,IO ports, and other
> hardware cost if we do have an EC chip in board to trigger kernel's
> cpu process for this.

You need to make ACPI eject/bus/device notifications go to the processor
objects rather than to listen to the EC events.

> Yep, you said you'll reject this anyway,
> but I have to ask do this notifier offend
> any rules of your development?

Well, yes, it does. CPU offline/online is not only for hotplugging and people
do not expect CPUs to actually physically go away after using offline.

Thanks,
Rafael


> > > ---
> > > drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
> > > include/linux/acpi.h | 2 ++
> > > 2 files changed, 34 insertions(+), 0 deletions(-)
> > >
> > > diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
> > > index edc0081..dee3417 100644
> > > --- a/drivers/acpi/ec.c
> > > +++ b/drivers/acpi/ec.c
> > > @@ -124,6 +124,35 @@ static int EC_FLAGS_MSI; /* Out-of-spec MSI controller */
> > > static int EC_FLAGS_VALIDATE_ECDT; /* ASUStec ECDTs need to be validated */
> > > static int EC_FLAGS_SKIP_DSDT_SCAN; /* Not all BIOS survive early DSDT scan */
> > >
> > > +/* notifier chain for who are intresting in ec space changing */
> > > +static RAW_NOTIFIER_HEAD(ec_space_chain);
> > > +
> > > +int __ref register_ec_space_notifier(struct notifier_block *nb)
> > > +{
> > > + int ret;
> > > +
> > > + ret = raw_notifier_chain_register(&ec_space_chain, nb);
> > > +
> > > + return ret;
> > > +}
> > > +EXPORT_SYMBOL(register_ec_space_notifier);
> > > +
> > > +void __ref unregister_ec_space_notifier(struct notifier_block *nb)
> > > +{
> > > +
> > > + raw_notifier_chain_unregister(&ec_space_chain, nb);
> > > +}
> > > +EXPORT_SYMBOL(unregister_ec_space_notifier);
> > > +
> > > +static int ec_space_notify(void *data)
> > > +{
> > > + int ret;
> > > +
> > > + ret = __raw_notifier_call_chain(&ec_space_chain, 0, data, -1, NULL);
> > > +
> > > + return notifier_to_errno(ret);
> > > +}
> > > +
> > > /* --------------------------------------------------------------------------
> > > Transaction Management
> > > -------------------------------------------------------------------------- */
> > > @@ -638,6 +667,9 @@ static u32 acpi_ec_gpe_handler(acpi_handle gpe_device,
> > > wake_up(&ec->wait);
> > > ec_check_sci(ec, acpi_ec_read_status(ec));
> > > }
> > > +
> > > + ec_space_notify(data);
> > > +
> > > return ACPI_INTERRUPT_HANDLED | ACPI_REENABLE_GPE;
> > > }
> > >
> > > diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> > > index 17b5b59..4fe2247 100644
> > > --- a/include/linux/acpi.h
> > > +++ b/include/linux/acpi.h
> > > @@ -158,6 +158,8 @@ extern int ec_transaction(u8 command,
> > > const u8 *wdata, unsigned wdata_len,
> > > u8 *rdata, unsigned rdata_len);
> > > extern acpi_handle ec_get_handle(void);
> > > +extern int register_ec_space_notifier(struct notifier_block *nb);
> > > +extern void unregister_ec_space_notifier(struct notifier_block *nb);
> > >
> > > #if defined(CONFIG_ACPI_WMI) || defined(CONFIG_ACPI_WMI_MODULE)
> > >
> > >
>
>
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

2013-06-10 11:38:12

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH RFC v2 0/3] add cpu physically hotplug driver

On Monday, June 10, 2013 12:04:21 PM li guang wrote:
> 在 2013-06-10一的 12:51 +0900,Yasuaki Ishimatsu写道:
> > 2013/06/10 9:36, li guang wrote:
> > > Hi, Rafael
> > >
> > > 在 2013-06-06四的 13:00 +0200,Rafael J. Wysocki写道:
> > >> On Thursday, June 06, 2013 09:40:32 AM liguang wrote:
> > >>> This patch-set try to support physically hot-plug/unplug
> > >>> a cpu automatically, that is:
> > >>> if you offline a cpu, it will automatically actually remove
> > >>> a cpu, and if you hot-plug a cpu, then it will online this
> > >>> cpu automatically.
> > >>
> > >> No and no.
> > >
> > > Hmm... are you saying cpu online/offline designed to distinguish
> > > with real cpu plug/unplug?
> > > but, what the actual usage of online/offline?
> > > forgive my foolish.
> > >
> > >>
> > >> Why do you need this?
> > >>
> > >
> > > e.g. for QEMU case, if hot-plug a cpu,
> >
> > > we have to online a cpu manually if there's
> > > no user space support like udev to do it automatically.
> >
> > I could not understand why you do not use udev.
> > Please explain in detail.
>
> I did not say I can't use udev now,
> just for in case someone can't.
>
> >
> > > and also, I think maybe online/offline should be naturally
> > > integrated with real plug/unplug process of CPU.
> >
> > I could not understand this explanation too.
> > Why do we need it?
> >
>
> actually, I am asking if CPU online/offline have real purpose,
> you offline a CPU, then threads can't run on it,
> you online a CPU, then threads can run on it,
> so, the purpose here is just bouncing threads?
> obviously not, any profound historical reasons?

The purpose is to ensure that the CPU won't be used after the offline
and the online is simply complementary.

> I boldly think maybe online/offline should be integrated into
> real plug/unplug process of CPU.

Well, please look into the acpi-hotplug branch of the linux-pm.git tree for
patches that do just that.

Thanks,
Rafael


>
> Thanks!
>
> > >
> > >>
> > >>
> > >>> so, offline is just like eject, but eject attribute seems not
> > >>> available since recent kernel(can't figure out when), with
> > >>> this driver, if allowed, it will trigger a eject cpu process.
> > >>> and for automatically online, it was said there are objections,
> > >>> don't know the reason, so, send this patch-set boldly.
> > >>>
> > >>> of course, this approach is for QEMU 's hotplug cpu emulation
> > >>> only, but not limited, if someone like to explore ec space to
> > >>> implment cpu hot-plug/unplug for real platform please
> > >>> feel free to continue.
> > >>>
> > >>> Li Guang (3)
> > >>> drivers/platform/x86: add cpu physically hotplug driver
> > >>> ec: add ec space notifier
> > >>> cpu_physic_hotplug: register handler for ec space notifier
> > >>>
> > >>> drivers/acpi/ec.c | 32 ++++++++++++++++++++++++++++++++
> > >>> drivers/platform/x86/Kconfig | 8 ++++
> > >>> drivers/platform/x86/Makefile | 1 +
> > >>> drivers/platform/x86/cpu_physic_hotplug.c | 90 +++++++++++++++++++++++++++++
> > >>> include/linux/acpi.h | 2 ++
> > >>> 5 files changed, 130 insertions(+), 3 deletions(-)
> > >>> create mode 100644 drivers/platform/x86/cpu_physic_hotplug.c
> > >
> > >
> > > --
> > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > > the body of a message to [email protected]
> > > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > > Please read the FAQ at http://www.tux.org/lkml/
> > >
> >
> >
>
>
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.