aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorAlex Chiang <achiang@hp.com>2009-12-20 14:19:19 -0500
committerLen Brown <len.brown@intel.com>2009-12-22 03:24:11 -0500
commit407cd87c54e76c266245e8faef8dd4a84b7254fe (patch)
treee07067c0d51317a4dc93144f1d16c050a0f5ca89 /arch/x86
parent1d9cb470a755409ce97c3376174b1e234bd20371 (diff)
ACPI: processor: unify arch_acpi_processor_init_pdc
The x86 and ia64 implementations of arch_acpi_processor_init_pdc() are almost exactly the same. The only difference is in what bits they set in obj_list buffer. Combine the boilerplate memory management code, and leave the arch-specific bit twiddling in separate implementations. Cc: Tony Luck <tony.luck@intel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Alex Chiang <achiang@hp.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kernel/acpi/processor.c34
1 files changed, 1 insertions, 33 deletions
diff --git a/arch/x86/kernel/acpi/processor.c b/arch/x86/kernel/acpi/processor.c
index bcb6efe08c5..967860b43f2 100644
--- a/arch/x86/kernel/acpi/processor.c
+++ b/arch/x86/kernel/acpi/processor.c
@@ -14,31 +14,7 @@
14 14
15static void init_intel_pdc(struct acpi_processor *pr, struct cpuinfo_x86 *c) 15static void init_intel_pdc(struct acpi_processor *pr, struct cpuinfo_x86 *c)
16{ 16{
17 struct acpi_object_list *obj_list; 17 u32 *buf = (u32 *)pr->pdc->pointer->buffer.pointer;
18 union acpi_object *obj;
19 u32 *buf;
20
21 /* allocate and initialize pdc. It will be used later. */
22 obj_list = kmalloc(sizeof(struct acpi_object_list), GFP_KERNEL);
23 if (!obj_list) {
24 printk(KERN_ERR "Memory allocation error\n");
25 return;
26 }
27
28 obj = kmalloc(sizeof(union acpi_object), GFP_KERNEL);
29 if (!obj) {
30 printk(KERN_ERR "Memory allocation error\n");
31 kfree(obj_list);
32 return;
33 }
34
35 buf = kmalloc(12, GFP_KERNEL);
36 if (!buf) {
37 printk(KERN_ERR "Memory allocation error\n");
38 kfree(obj);
39 kfree(obj_list);
40 return;
41 }
42 18
43 buf[0] = ACPI_PDC_REVISION_ID; 19 buf[0] = ACPI_PDC_REVISION_ID;
44 buf[1] = 1; 20 buf[1] = 1;
@@ -62,13 +38,6 @@ static void init_intel_pdc(struct acpi_processor *pr, struct cpuinfo_x86 *c)
62 if (!cpu_has(c, X86_FEATURE_MWAIT)) 38 if (!cpu_has(c, X86_FEATURE_MWAIT))
63 buf[2] &= ~(ACPI_PDC_C_C2C3_FFH); 39 buf[2] &= ~(ACPI_PDC_C_C2C3_FFH);
64 40
65 obj->type = ACPI_TYPE_BUFFER;
66 obj->buffer.length = 12;
67 obj->buffer.pointer = (u8 *) buf;
68 obj_list->count = 1;
69 obj_list->pointer = obj;
70 pr->pdc = obj_list;
71
72 return; 41 return;
73} 42}
74 43
@@ -78,7 +47,6 @@ void arch_acpi_processor_init_pdc(struct acpi_processor *pr)
78{ 47{
79 struct cpuinfo_x86 *c = &cpu_data(pr->id); 48 struct cpuinfo_x86 *c = &cpu_data(pr->id);
80 49
81 pr->pdc = NULL;
82 init_intel_pdc(pr, c); 50 init_intel_pdc(pr, c);
83 51
84 return; 52 return;