[ACPI] Avoid BIOS inflicted crashes by evaluating _PDC only once
[safe/jmp/linux-2.6] / arch / ia64 / kernel / cpufreq / acpi-cpufreq.c
index da4d5cf..5a1bf81 100644 (file)
@@ -269,48 +269,6 @@ acpi_cpufreq_verify (
 }
 
 
-/*
- * processor_init_pdc - let BIOS know about the SMP capabilities
- * of this driver
- * @perf: processor-specific acpi_io_data struct
- * @cpu: CPU being initialized
- *
- * To avoid issues with legacy OSes, some BIOSes require to be informed of
- * the SMP capabilities of OS P-state driver. Here we set the bits in _PDC
- * accordingly. Actual call to _PDC is done in driver/acpi/processor.c
- */
-static void
-processor_init_pdc (
-               struct acpi_processor_performance *perf,
-               unsigned int cpu,
-               struct acpi_object_list *obj_list
-               )
-{
-       union acpi_object *obj;
-       u32 *buf;
-
-       dprintk("processor_init_pdc\n");
-
-       perf->pdc = NULL;
-       /* Initialize pdc. It will be used later. */
-       if (!obj_list)
-               return;
-
-       if (!(obj_list->count && obj_list->pointer))
-               return;
-
-       obj = obj_list->pointer;
-       if ((obj->buffer.length == 12) && obj->buffer.pointer) {
-               buf = (u32 *)obj->buffer.pointer;
-                       buf[0] = ACPI_PDC_REVISION_ID;
-                       buf[1] = 1;
-                       buf[2] = ACPI_PDC_EST_CAPABILITY_SMP;
-               perf->pdc = obj_list;
-       }
-       return;
-}
-
-
 static int
 acpi_cpufreq_cpu_init (
        struct cpufreq_policy   *policy)
@@ -320,14 +278,7 @@ acpi_cpufreq_cpu_init (
        struct cpufreq_acpi_io  *data;
        unsigned int            result = 0;
 
-       union acpi_object               arg0 = {ACPI_TYPE_BUFFER};
-       u32                             arg0_buf[3];
-       struct acpi_object_list         arg_list = {1, &arg0};
-
        dprintk("acpi_cpufreq_cpu_init\n");
-       /* setup arg_list for _PDC settings */
-        arg0.buffer.length = 12;
-        arg0.buffer.pointer = (u8 *) arg0_buf;
 
        data = kmalloc(sizeof(struct cpufreq_acpi_io), GFP_KERNEL);
        if (!data)
@@ -337,9 +288,7 @@ acpi_cpufreq_cpu_init (
 
        acpi_io_data[cpu] = data;
 
-       processor_init_pdc(&data->acpi_data, cpu, &arg_list);
        result = acpi_processor_register_performance(&data->acpi_data, cpu);
-       data->acpi_data.pdc = NULL;
 
        if (result)
                goto err_free;