udelay(10);
                }
        } else {
-               value = (u32) data->acpi_data.states[state].status;
 -              i = 0;
+               value = (u32) perf->states[state].status;
        }
  
-       /* notify cpufreq */
-       cpufreq_notify_transition(&cpufreq_freqs, CPUFREQ_POSTCHANGE);
- 
-       if (unlikely(value != (u32) data->acpi_data.states[state].status)) {
-               unsigned int tmp = cpufreq_freqs.new;
-               cpufreq_freqs.new = cpufreq_freqs.old;
-               cpufreq_freqs.old = tmp;
-               cpufreq_notify_transition(&cpufreq_freqs, CPUFREQ_PRECHANGE);
-               cpufreq_notify_transition(&cpufreq_freqs, CPUFREQ_POSTCHANGE);
+       if (unlikely(value != (u32) perf->states[state].status)) {
                printk(KERN_WARNING "acpi-cpufreq: Transition failed\n");
                retval = -ENODEV;
-               goto migrate_end;
+               return (retval);
        }
  
        dprintk("Transition successful after %d microseconds\n", i * 10);
 
        unsigned long                   cur_freq;
        int                             result = 0, i;
        unsigned int                    cpu = policy->cpu;
+       struct acpi_processor_performance       *p;
+ 
+       p = acpi_perf_data[cpu];
  
        /* register with ACPI core */
-       if (acpi_processor_register_performance(&p, cpu)) {
-               dprintk("obtaining ACPI data failed\n");
+       if (acpi_processor_register_performance(p, cpu)) {
 -              dprintk(KERN_INFO PFX "obtaining ACPI data failed\n");
++              dprintk(PFX "obtaining ACPI data failed\n");
                return -EIO;
        }
+       policy->cpus = p->shared_cpu_map;
+       policy->shared_type = p->shared_type;
  
        /* verify the acpi_data */
-       if (p.state_count <= 1) {
+       if (p->state_count <= 1) {
                dprintk("No P-States\n");
                result = -ENODEV;
                goto err_unreg;
   err_kfree:
        kfree(centrino_model[cpu]);
   err_unreg:
-       acpi_processor_unregister_performance(&p, cpu);
-       dprintk("invalid ACPI data\n");
+       acpi_processor_unregister_performance(p, cpu);
 -      dprintk(KERN_INFO PFX "invalid ACPI data\n");
++      dprintk(PFX "invalid ACPI data\n");
        return (result);
  }
  #else