On 20 September 2013 10:56, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > If the hw support intel_pstate and acpi_cpufreq, intel_pstate will > get loaded at first. s/at // > > acpi_cpufreq_init will call acpi_cpufreq_early_init() > and it allocate perf data and init those perf data in ACPI core, (that s/it /that will / > will go over all cpus). s/go over/cover/ > but late it will free them as cpufreq_register_driver(acpi_cpufreq) will s/late/later > return fail as init_pstate already take over before. write it as: fail as intel_pstate is already registered. > Use cpufreq_get_current_driver() to check if we can skip the > acpi_cpufreq loading. The below material looks to be a separate issue and so we probably break this patch into two? > Also there is racing in > __acpi_processor_start > ==> acpi_processor_load_module > ==> request_module_nowait/requested = 1 > Index: linux-2.6/drivers/cpufreq/acpi-cpufreq.c > =================================================================== > --- linux-2.6.orig/drivers/cpufreq/acpi-cpufreq.c > +++ linux-2.6/drivers/cpufreq/acpi-cpufreq.c > @@ -986,6 +986,10 @@ static int __init acpi_cpufreq_init(void > { > int ret; > > + /* don't keep reloading if cpufreq_driver exists */ > + if (cpufreq_get_current_driver()) > + return 0; > + > if (acpi_disabled) > return 0; This looks fine to me.. > Index: linux-2.6/drivers/acpi/processor_perflib.c > =================================================================== > --- linux-2.6.orig/drivers/acpi/processor_perflib.c > +++ linux-2.6/drivers/acpi/processor_perflib.c Can't really review this one.. Rafael will do it.. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html