diff options
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/processor_pdc.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c index 48df08ebcec4..e786e2ce1882 100644 --- a/drivers/acpi/processor_pdc.c +++ b/drivers/acpi/processor_pdc.c | |||
@@ -1,3 +1,12 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2005 Intel Corporation | ||
3 | * Copyright (C) 2009 Hewlett-Packard Development Company, L.P. | ||
4 | * | ||
5 | * Alex Chiang <achiang@hp.com> | ||
6 | * - Unified x86/ia64 implementations | ||
7 | * Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> | ||
8 | * - Added _PDC for platforms with Intel CPUs | ||
9 | */ | ||
1 | #include <linux/dmi.h> | 10 | #include <linux/dmi.h> |
2 | 11 | ||
3 | #include <acpi/acpi_drivers.h> | 12 | #include <acpi/acpi_drivers.h> |
@@ -121,6 +130,16 @@ static int acpi_processor_eval_pdc(struct acpi_processor *pr) | |||
121 | return status; | 130 | return status; |
122 | } | 131 | } |
123 | 132 | ||
133 | static void acpi_processor_cleanup_pdc(struct acpi_processor *pr) | ||
134 | { | ||
135 | if (pr->pdc) { | ||
136 | kfree(pr->pdc->pointer->buffer.pointer); | ||
137 | kfree(pr->pdc->pointer); | ||
138 | kfree(pr->pdc); | ||
139 | pr->pdc = NULL; | ||
140 | } | ||
141 | } | ||
142 | |||
124 | void acpi_processor_set_pdc(struct acpi_processor *pr) | 143 | void acpi_processor_set_pdc(struct acpi_processor *pr) |
125 | { | 144 | { |
126 | if (arch_has_acpi_pdc() == false) | 145 | if (arch_has_acpi_pdc() == false) |
@@ -128,7 +147,7 @@ void acpi_processor_set_pdc(struct acpi_processor *pr) | |||
128 | 147 | ||
129 | acpi_processor_init_pdc(pr); | 148 | acpi_processor_init_pdc(pr); |
130 | acpi_processor_eval_pdc(pr); | 149 | acpi_processor_eval_pdc(pr); |
131 | arch_acpi_processor_cleanup_pdc(pr); | 150 | acpi_processor_cleanup_pdc(pr); |
132 | } | 151 | } |
133 | EXPORT_SYMBOL_GPL(acpi_processor_set_pdc); | 152 | EXPORT_SYMBOL_GPL(acpi_processor_set_pdc); |
134 | 153 | ||