>From 9a12d7c610bffb900015e8947a57e4e428058abf Mon Sep 17 00:00:00 2001 From: Liu, Jinsong <jinsong.liu@xxxxxxxxx> Date: Fri, 24 Feb 2012 01:51:18 +0800 Subject: [PATCH 1/2] Prepare PAD for native and xen platform This patch is to prepare PAD (Processor Aggregator Device) for native and xen platform. When working under baremetal it initializes native acpi_pad, while working under xen platform it would hook to xen acpi_pad (would implement at later patch). Signed-off-by: Liu, Jinsong <jinsong.liu@xxxxxxxxx> --- drivers/acpi/Kconfig | 3 ++- drivers/acpi/acpi_pad.c | 21 +++++++++------------ include/acpi/acpi_drivers.h | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 7556913..2653a98 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -213,10 +213,11 @@ config ACPI_HOTPLUG_CPU default y config ACPI_PROCESSOR_AGGREGATOR - tristate "Processor Aggregator" + bool "Processor Aggregator" depends on ACPI_PROCESSOR depends on EXPERIMENTAL depends on X86 + default n help ACPI 4.0 defines processor Aggregator, which enables OS to perform specific processor configuration and control that applies to all diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c index a43fa1a..8aebbe5 100644 --- a/drivers/acpi/acpi_pad.c +++ b/drivers/acpi/acpi_pad.c @@ -2,6 +2,7 @@ * acpi_pad.c ACPI Processor Aggregator Driver * * Copyright (c) 2009, Intel Corporation. + * Author: Li, Shaohua <shaohua.li@xxxxxxxxx> * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -32,9 +33,6 @@ #include <acpi/acpi_drivers.h> #include <asm/mwait.h> -#define ACPI_PROCESSOR_AGGREGATOR_CLASS "acpi_pad" -#define ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME "Processor Aggregator" -#define ACPI_PROCESSOR_AGGREGATOR_NOTIFY 0x80 static DEFINE_MUTEX(isolated_cpus_lock); static unsigned long power_saving_mwait_eax; @@ -510,7 +508,7 @@ static struct acpi_driver acpi_pad_driver = { }, }; -static int __init acpi_pad_init(void) +static int __init native_acpi_pad_init(void) { power_saving_mwait_init(); if (power_saving_mwait_eax == 0) @@ -519,13 +517,12 @@ static int __init acpi_pad_init(void) return acpi_bus_register_driver(&acpi_pad_driver); } -static void __exit acpi_pad_exit(void) +struct acpi_pad_ops acpi_pad_ops = { + .init = native_acpi_pad_init, +}; + +static int __init acpi_pad_init(void) { - acpi_bus_unregister_driver(&acpi_pad_driver); + return acpi_pad_ops.init(); } - -module_init(acpi_pad_init); -module_exit(acpi_pad_exit); -MODULE_AUTHOR("Shaohua Li<shaohua.li@xxxxxxxxx>"); -MODULE_DESCRIPTION("ACPI Processor Aggregator Driver"); -MODULE_LICENSE("GPL"); +device_initcall(acpi_pad_init); diff --git a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h index bb145e4..d40abbc 100644 --- a/include/acpi/acpi_drivers.h +++ b/include/acpi/acpi_drivers.h @@ -115,6 +115,21 @@ void pci_acpi_crs_quirks(void); #define ACPI_PROCESSOR_LIMIT_INCREMENT 0x01 #define ACPI_PROCESSOR_LIMIT_DECREMENT 0x02 +/* -------------------------------------------------------------------------- + PAD (Processor Aggregator Device) + -------------------------------------------------------------------------- */ + +#define ACPI_PROCESSOR_AGGREGATOR_CLASS "acpi_pad" +#define ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME "Processor Aggregator" +#define ACPI_PROCESSOR_AGGREGATOR_NOTIFY 0x80 + +struct acpi_pad_ops { + int (*init)(void); +}; +#ifdef CONFIG_ACPI_PROCESSOR_AGGREGATOR +extern struct acpi_pad_ops acpi_pad_ops; +#endif + /*-------------------------------------------------------------------------- Dock Station -------------------------------------------------------------------------- */ -- 1.7.1
Attachment:
0001-Prepare-PAD-for-native-and-xen-platform.patch
Description: 0001-Prepare-PAD-for-native-and-xen-platform.patch