linux/drivers/acpi/processor_perflib.c
<<
>>
Prefs
   1/*
   2 * processor_perflib.c - ACPI Processor P-States Library ($Revision: 71 $)
   3 *
   4 *  Copyright (C) 2001, 2002 Andy Grover <andrew.grover@intel.com>
   5 *  Copyright (C) 2001, 2002 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
   6 *  Copyright (C) 2004       Dominik Brodowski <linux@brodo.de>
   7 *  Copyright (C) 2004  Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
   8 *                      - Added processor hotplug support
   9 *
  10 *
  11 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  12 *
  13 *  This program is free software; you can redistribute it and/or modify
  14 *  it under the terms of the GNU General Public License as published by
  15 *  the Free Software Foundation; either version 2 of the License, or (at
  16 *  your option) any later version.
  17 *
  18 *  This program is distributed in the hope that it will be useful, but
  19 *  WITHOUT ANY WARRANTY; without even the implied warranty of
  20 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  21 *  General Public License for more details.
  22 *
  23 *  You should have received a copy of the GNU General Public License along
  24 *  with this program; if not, write to the Free Software Foundation, Inc.,
  25 *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  26 *
  27 */
  28
  29#include <linux/kernel.h>
  30#include <linux/module.h>
  31#include <linux/init.h>
  32#include <linux/cpufreq.h>
  33#include <linux/slab.h>
  34
  35#ifdef CONFIG_X86
  36#include <asm/cpufeature.h>
  37#endif
  38
  39#include <acpi/acpi_bus.h>
  40#include <acpi/acpi_drivers.h>
  41#include <acpi/processor.h>
  42
  43#define PREFIX "ACPI: "
  44
  45#define ACPI_PROCESSOR_CLASS            "processor"
  46#define ACPI_PROCESSOR_FILE_PERFORMANCE "performance"
  47#define _COMPONENT              ACPI_PROCESSOR_COMPONENT
  48ACPI_MODULE_NAME("processor_perflib");
  49
  50static DEFINE_MUTEX(performance_mutex);
  51
  52/*
  53 * _PPC support is implemented as a CPUfreq policy notifier:
  54 * This means each time a CPUfreq driver registered also with
  55 * the ACPI core is asked to change the speed policy, the maximum
  56 * value is adjusted so that it is within the platform limit.
  57 *
  58 * Also, when a new platform limit value is detected, the CPUfreq
  59 * policy is adjusted accordingly.
  60 */
  61
  62/* ignore_ppc:
  63 * -1 -> cpufreq low level drivers not initialized -> _PSS, etc. not called yet
  64 *       ignore _PPC
  65 *  0 -> cpufreq low level drivers initialized -> consider _PPC values
  66 *  1 -> ignore _PPC totally -> forced by user through boot param
  67 */
  68static int ignore_ppc = -1;
  69module_param(ignore_ppc, int, 0644);
  70MODULE_PARM_DESC(ignore_ppc, "If the frequency of your machine gets wrongly" \
  71                 "limited by BIOS, this should help");
  72
  73#define PPC_REGISTERED   1
  74#define PPC_IN_USE       2
  75
  76static int acpi_processor_ppc_status;
  77
  78static int acpi_processor_ppc_notifier(struct notifier_block *nb,
  79                                       unsigned long event, void *data)
  80{
  81        struct cpufreq_policy *policy = data;
  82        struct acpi_processor *pr;
  83        unsigned int ppc = 0;
  84
  85        if (event == CPUFREQ_START && ignore_ppc <= 0) {
  86                ignore_ppc = 0;
  87                return 0;
  88        }
  89
  90        if (ignore_ppc)
  91                return 0;
  92
  93        if (event != CPUFREQ_INCOMPATIBLE)
  94                return 0;
  95
  96        mutex_lock(&performance_mutex);
  97
  98        pr = per_cpu(processors, policy->cpu);
  99        if (!pr || !pr->performance)
 100                goto out;
 101
 102        ppc = (unsigned int)pr->performance_platform_limit;
 103
 104        if (ppc >= pr->performance->state_count)
 105                goto out;
 106
 107        cpufreq_verify_within_limits(policy, 0,
 108                                     pr->performance->states[ppc].
 109                                     core_frequency * 1000);
 110
 111      out:
 112        mutex_unlock(&performance_mutex);
 113
 114        return 0;
 115}
 116
 117static struct notifier_block acpi_ppc_notifier_block = {
 118        .notifier_call = acpi_processor_ppc_notifier,
 119};
 120
 121static int acpi_processor_get_platform_limit(struct acpi_processor *pr)
 122{
 123        acpi_status status = 0;
 124        unsigned long long ppc = 0;
 125
 126
 127        if (!pr)
 128                return -EINVAL;
 129
 130        /*
 131         * _PPC indicates the maximum state currently supported by the platform
 132         * (e.g. 0 = states 0..n; 1 = states 1..n; etc.
 133         */
 134        status = acpi_evaluate_integer(pr->handle, "_PPC", NULL, &ppc);
 135
 136        if (status != AE_NOT_FOUND)


   4"Livers1f="include/linuorm>

   4"Liverspi_processor_ppc_notifier" class="ef">acpi_processor_ppc_status;
PPC_IN_USE       2
  38
  39#incl1ude &13!((ef">status != status != AE_NOT_FOUND)
  40#incl1ude &14    goto (()
status != "_PPC"Ea>(  41#incl1ude &14    return 0;
  42
  43#defi1ne   44
"_PPC"CPU %d:he maxis %d -r machine g%s this sh\n href="+code=NULL" class="srefpr->  45#defi1ne pppc);
"_PPC"a href="driver:ing">"_PPC"nota href="drivers/acpi/processor_perflib.c#L72" id="L72" clas1s="line" 1name="L46">  46#defi1ne   47#defi1ne ->performance_platform_limit;
pppc);
  48  49
  50stati1c   51
  52ACPI_PROCESSOR_FILE_PERFORMANCE< hrIFYss="sref">AC  53 * _PPC support i="drivers/acpi/processor_perflib.c#L131" id="L131" clas="line" 1name="L54">  54 * This means each tc_status;

(  55 * the ACPI core is @ class:ed to .c#L131"   class="ivers/acpi/processor_perflib.c#L131" id="L131" clas="line" 1name="L56">  56 * value is adjusted@href=":, the ref=" OR_Fgetse max/a>(  57 *

  58 * Also, when a new      1: failhref OSPMxha ->policyd n>
int padrivers/acpi/processor_perflib.c#L133" id="L133" clas="line" 1name="L59">  59 * policy is adjust"drivers/acpi/processor_perflib.c#L134" id="L134" clas="line" 1name="L60">  60c_staef">handle, hade=status" class="sref">handle, status !=   61
  62c_staobjecrn _processor_ppc_staobjecrde=status" class="sr="+corocessors,   63  64  65  16,   67handle, hade=status" class="srtempocessors,   68stati1c int16ivers/acpi/processor_perflib.c#L39" id="L39" clas1s="line" 1name="L69">  69, acpi_evaluate_intef="+code=potifier_call" clhref=pi_evaluate_inthref=code=acpi_evaluate_intLE_PERFORMANCE" hrIFYss="sref">ACPI_PROCESSOR_FILE_PERFORMANCE< hrIFYss="sref">AC  70, acpi_evaluate_intef="+code=potifier_call" clhref=pi_evaluate_inthref=code=accpi_processor_geef">status !=   71     1     17ivers/acpi/processor_perflib.c#L52" id="L52" clas1s="line" 1name="L72">  72
/* ignore_ppc:  73#defi1ne c_stathandle, hade=pr" class="sref">ef">handle, "_PPC",OST href="+code=NUde=ppc" class="sref"tempocessors,   74#defi1ne   75
  76stati1c int17ref="+code=mutex_lock" classeger((ef">handle, "_PPC",OST href="+code=NUde=ppc" class="sref"_rgef=urn _processor_ppcrgef=ur"driNULL" class="sref">NULL, &  77
  78stati1c int1  79     1     17ivers/acpi/processor_perflib.c#L130" id="L130" clas="line" 1name="L80">  80{
acpi_processor *pr)
->  81     1   st18iverss/acpi/processor_perflib.c#L118" id="L118" clas="line" 1name="L82">  82     1   st1uct   83     1   un18ivers/acpi/processor_perflib.c#L114" id="L114" clas="line" 1name="L84">  84
ignore_ppc)
  85     1   if18    goto  * _PPC support i="drivers/acpi/processor_perflib.c#L131" id="L131" clas="line" 1name="L86">  86     1     18"comment"> * value is adjusttttttttttttttttt* Onlynrm liplatfohref="ca nse,ref="an>
  87     1     18"comment"> *
(  88     1   }
18"comment"> * Also, when a netttttttttttttttt*"drivers/acpi/processor_perflib.c#L134" id="L134" clas="line" 1name="L89">  89
ev_flag->  90     1   if19    goto pr->handle,   91     1     1     return 0;
  92
  93     1   if19ivers/acpi/processor_perflib.c#L114" id="L114" clas="line" 1name="L94">  94     1     19ref="+code=status" class="srrern _processor_ppreriver=acpi_processor_ppc_notifier" clat" class="sref">acpi_processor_get_platform_limit(struct pr->  95
 * _PPC support i="drivers/acpi/processor_perflib.c#L131" id="L131" clas="line" 1name="L96">  96     1    * value is adjusttttttttt* Onlynrm liplatfohref="ca nse,ref="an>
  97
 *
(  98     1    * Also, when a netttttttt*"drivers/acpi/processor_perflib.c#L134" id="L134" clas="line" 1name="L99">  99     1   if1(!ev_flag-> 100    2     2     goto  101
pr->handle,  102    2    103
pr->handle,  104    2   if2( 105    2     2     goto  106
 107    2    108    2     2                      ="driveent" class="srethin_limupda href">cpufreq_policy *cpde=pr" class="sref">pr-> 109    2     2      s/acpi/processor_perflib.c#L116" id="L116" cl2ss="line"2name="L110"> 110
 111    2 acpi_processor_get_platform_limitacde=pre=acpi_processor_ge>cpu);
f">acpi_processor_gef">acde=p)/acpi/processor_perflib.c#L134" id="L134" cl2ss="line"2name="L112"> 112    2    113
acpi_processor *pr;
 114    2   re21ivers/acpi/processor_perflib.c#L85" id="L85" clas2ss="line"2name="L115"> 115}
pr;
per_cpu(processors,  116
pr || !pr->performance)
pr->performance)
state_count)
 117stat2c str21    return 0;
 118    2   .<2 href="+code=nr" class="sref">f">acpi_processor_gef">acde=p=per_cpu" class="srr->performance->states[r->performance_platform_limit;
 119};
<2 href21                     licy" class="sr>ass="sref">core_frequency * 1000);
 120
 121stat2c int2 122{
c_statform_limit" cbiosef">acpi_processor_get_platform_limitacde=prs/acpi/processor_perflib.c#L99" id="L99" clas2ss="line"2name="L123"> 123    2    124    2   un2igned ode=dpi_processor_ppc_notifier" class=" conn _processor_ppc_status;
 125
 126
> *acpi_processor_pp> *acvers/acpi/processor_perflib.c#L114" id="L114" cl2ss="line"2name="L127"> 127    2   if22    return 0;
acpi_ppc_notifier_block = {
 128    2     2     return -acpi_processor_ppc_status;
PPC_REGISTERED   1
 129
 130    2   KERN_DEBUGpi_ppc_notifierKERN_DEBUGvers/acpi/processor_perflib.c#L114" id="L114" cl2ss="line"2name="L131"> 131"_PPC"Warnuot: Pc#L131"  Pue is deLected>platform<.\n href="+code=rs/acpi/processor_perflib.c#L99" id="L99" clas2ss="line"2name="L132"> 132 133 134    2    135
 136    2   if2(acpi_processor_ppc_status;
PPC_REGISTERED   1


   4"Livers1f="2nclud2/linuorm>

   4"Liverspi_processor_pp> *acpi_processor_pp> *acde=prde=performance_mutexc_stat" class="sref">acpi_ppc_notifier_block = {
  38
)POLICY< hrIFIERPI_PROCESSOR_FIBLE)POLICY< hrIFIERrive)s/acpi/processor_perflib.c#L99" id="L99" clas2ss="line"2name="L39">  39#incl2ude &23ivers/acpi/processor_perflib.c#L130" id="L130" cl2s="line" 2name="L40">  40#incl2ude &240ef="+code=cpufreq_verify_wic_notifier" class="ef">acpi_processor_ppc_status;
PPC_REGISTERED   1
  41#incl2ude &24a hres/acpi/processor_perflib.c#L116" id="L116" cl2s="line" 2name="L42">  42
  43#defi2ne  * _PPC support i="drivers/acpi/processor_perflib.c#L131" id="L131" cl2s="line" 2name="L44">  44
 * This means each tDo a quick check if yoursy/spms looks thkeiplauseed todrivers/acpi/processor_perflib.c#L131" id="L131" cl2ss="line"2name="L45">  45#defi2ne  * the ACPI core is > *  46#defi2ne  * value is adjusteddo a whole lotgetssacony checks"drivers/acpi/processor_perflib.c#L133" id="L133" cl2s="line" 2name="L47">  47#defi2ne  */
  48;
acpi_processor *pr)
  49
  50stati2c )
<00);
/spd"dris/acpi/processor_perflib.c#L99" id="L99" clas2s="line" 2name="L51">  51
acpi_status status = 0;
  52NULL, &  53  54archrhas_> *)
 *)
<00);
/spd"dris/acpi/processor_perflib.c#L122" id="L122" cl2s="line" 2name="L55">  55  56status = pr->handle, "_PPC", CT href="+code=NUlicy" class="sr">NULL, &  57sa>((ef">status !=   58KERN_2
FO_NOT_FOUND)KERN_2
FOde=status" class="srPREFIXC_REGISTEREDREFIXde=stag">"_PPC"R0);
/suot a_sta> *  59"_PPC"a_sta> *  60)
<00);
/spd"dri=ac1s/acpi/processor_perflib.c#L99" id="L99" clas2s="line" 2name="L61">  61
  62, buffacpi_evaluate_intbuffacde=sotifier_call" clpoef="r->  63  64  65t_platform_limit" clrm_limitacpi_processor *pr)
  16  67  68stati2c int26ref="+code=pr" class="sref">c_notef">acpi_status status = 0;
  69NULL, &  70c_staobjecrn _processor_ppc_staobjecrde=str" class="sref">pcrn _processor_pppccde=p=per_cpu" class="s">NULL, &  71     2     271ef="+code=cpunnse," class="sref">c_staobjecrn _processor_ppc_staobjecrde=st" class="sref">objn _processor_ppobjde=st= {c0hrs/acpi/processor_perflib.c#L124" id="L124" cl2s="line" 2name="L72">  72
  73#defi2ne   74#defi2ne status = pr->handle, "_PPC", CT href="+code=NUlicy" class="sr">NULL, &  75
ef">status !=   76stati2c int27    )
status != "_PPC"Ea>(  77
  78stati2c int27ref="+code=prs/acpi/processor_perflib.c#L116" id="L116" cl2s="line" 2name="L79">  79     2     27ivers/acpi/processor_perflib.c#L130" id="L130" cl2s="line" 2name="L80">  80{
c_staobjecrn _processor_ppc_staobjecrde=strr" class="sref">buffacpi_evaluate_intbuffacde=sotifier_call" clpoef="r->  81     2   st281   goto pcrn _processor_pppccde=p=||ppc" class="sref">crn _processor_pppccde=pde=handle" class="sre="aocessors, (  82     2   st2uct crn _processor_pppccde=pde=handle" class="srpackagerformance-&gackagede=sotifier_call" clf">state_count)
f="driver==AE2))rs/acpi/processor_perflib.c#L118" id="L118" cl2s="line" 2name="L83">  83     2   un283   goto KERN_ERRPI_PROCESSOR_FIKERN_ERRde=status" class="srPREFIXC_REGISTEREDREFIXde=stag">"_PPC"Ina>(id _PCT data\n href="+code=rs/acpi/processor_perflib.c#L99" id="L99" clas2s="line" 2name="L84">  84
  85     2   if28    goto   86     2     286ef="+code=prs/acpi/processor_perflib.c#L116" id="L116" cl2s="line" 2name="L87">  87     2     28"comm/acpi/processor_perflib.c#L116" id="L116" cl2s="line" 2name="L88">  88     2   }
28ref="+code=pr"nt"> * _PPC support i="drivers/acpi/processor_perflib.c#L131" id="L131" cl2s="line" 2name="L89">  89
 * policy is adjusssssssss* controorith  90     2   if29    gent"> * Also, when a netttttttt*"drivers/acpi/processor_perflib.c#L134" id="L134" cl2s="line" 2name="L91">  91     2     29ivers/acpi/processor_perflib.c#L52" id="L52" clas2s="line" 2name="L92">  92
crn _processor_pppccde=pde=handle" class="srpackagerformance-&gackagede=sotifier_call" cleleen atatus !=   93     2   if29ivers/acpi/processor_perflib.c#L114" id="L114" cl2s="line" 2name="L94">  94     2     29objn _processor_ppobjde=sotifier_call" cle="aocessors,   95
  96     2   NULL, &  97
KERN_ERRPI_PROCESSOR_FIKERN_ERRde=status" class="srPREFIXC_REGISTEREDREFIXde=stag">"_PPC"Ina>(id _PCT data (controorith  98     2     99     2   if29                     gotocpi_processor_gerndnore_ppc)
 100    3     3     goto  101
r->performance-> 102    3     93     3ref="30ivers/acpi/processor_perflib.c#L114" id="L114" cl3ss="line"3name="L104"> 104    3   if3( * _PPC support i="drivers/acpi/processor_perflib.c#L131" id="L131" cl3ss="line"3name="L105"> 105    3     30"comment"> * the ACPI core issssssss* href="rith 106
 * value is adjusttttttttt*"drivers/acpi/processor_perflib.c#L134" id="L134" cl3s="line" 3name="L107"> 107    3    108    3     30ref="+code=pr" class="sref">objn _processor_ppobjde=st= c" class="sref">crn _processor_pppccde=pde=handle" class="srpackagerformance-&gackagede=sotifier_call" cleleen atatus !=  109    3     30ivers/acpi/processor_perflib.c#L130" id="L130" cl3ss="line"3name="L110"> 110
objn _processor_ppobjde=sotifier_call" cle="aocessors,  111    3  112    3   NULL, & 113
KERN_ERRPI_PROCESSOR_FIKERN_ERRde=status" class="srPREFIXC_REGISTEREDREFIXde=stag">"_PPC"Ina>(id _PCT data (href="rith 114    3   re31 115}
 116
 117stat3c str31"comm/acpi/processor_perflib.c#L116" id="L116" cl3ss="line"3name="L118"> 118    3   .<31ref="+code=pr" class="sref">memcpore_frequencyr->performance-> !=  119};
<3 href31                    sizeofrcode=acpi_processor" class="ctrith * 120
 121stat3c int32     )
 122{
, buffacpi_evaluate_intbuffacde=sotifier_call" clpoef="r-> 123    3    124    3   un32 125
 126
 127    3   if32    rf="+code=acpi_processor_get_platform_limit" clrm_limitstates[stde=prcode=acpi_processor" class="sref">acpi_processor *pr)
 128    3     3     rs/acpi/processor_perflib.c#L118" id="L118" cl3ss="line"3name="L129"> 129
 130    3   acpi_status status = 0;
 131NULL, & 132"_PPC"NNNNNN href="+code=rring">"_PPC"NNNNNN href="+code=hrs/acpi/processor_perflib.c#L99" id="L99" clas3ss="line"3name="L133"> 133satus = 0;
NULL, & 134    3   c_staobjecrn _processor_ppc_staobjecrde=str" class="sref">psrocessors, NULL, & 135
 136    3   if3((idpi_evaluate_intlL1t_ina>(id="driveI1s/acpi/processor_perflib.c#L99" id="L99" clas3ss="line"3inuorm>

   4"Livers1f="3nclud33"comm/acpi/processor_perflib.c#L116" id="L116" cl3ss="line"3name="L38">  38
  39#incl3ude &339ef="+code=cpufreq_verify_wief">status = pr->handle, "_PPC", SS href="+code=NUlicy" class="sr">NULL, &  40#incl3ude &34    goto (ef">status !=   41#incl3ude &34     )
status != "_PPC"Ea>(  42
  43#defi3ne   44
  45#defi3ne psrocessors,   46#defi3ne psrocessors, srocessors, , (  47#defi3ne 

   4"Liverspi_processor_pppre=pcpi_ppc_notifierpre=pcde=pr" class="sref">KERN_ERRPI_PROCESSOR_FIKERN_ERRde=status" class="srPREFIXC_REGISTEREDREFIXde=stag">"_PPC"Ina>(id _PSS data\n href="+code=rs/acpi/processor_perflib.c#L99" id="L99" clas3ss="line"3name="L48">  48  49
  50stati3c   51
  52(;
(()
a>("_PPC"Found %d lrm_limitst\n href="+code=p/acpi/processor_perflib.c#L105" id="L105" cl3s="line" 3name="L53">  53psrocessors, state_count)
f="driver))s/acpi/processor_perflib.c#L135" id="L135" cl3s="line" 3name="L54">  54  55pr->performance)
state_count)
srocessors, state_count)
f="drivers/acpi/processor_perflib.c#L135" id="L135" cl3s="line" 3name="L56">  56->performance->states[  57

   4"Li_NOT_FOUND" clakmallo4  6linuooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo5uessor_perflib.c#L135" id="L135" cl2s="linstst\n href="+code=p/acpi/processor_perflib.c#L99"" id="L118" cl2s="line" 3name=3L58">  58KEEcode=NUlicy" claGFP_">KEEcffacpi_evaluate_intbuffacde=s)s/acpi/processor_perflib.c#L993 id="L99" clas2s="line" 3name=3599">  99     )
pr->performance)
stME(  60state_count)
f="drivers/acpi/processor_perflib.c#L993 id="L99" clas2s="line" 3name=3641">  41#incl3ude="34                     gotocpi_processor_gerndnore_ppc)
  62 123    3    134refocessors, pr->performance)
state_cr 3ref="335            e=acpi_processo++ME( /a>(  76stati2c i"+270ef="+code=cSt= id="L116" cl3s="line" 3name="L44">  6linuooooooooooooooocessor_ppc_staobjne" 3name="L44">ooooooo=ULL(pr->performance)
states[  48pi_evaluate_intbuffacde=sotifier_call" cllengthp=href31                    sizeofrcod" cl3s="line" 3name="L44">  6linuoooooooooooooooi_evaluate_intbuffacde=s)s/acpi/processor_perflib.c#L993" id="L124" cl2s="line" 3name=3659">  59pi_evaluate_intbuffacde=sotifier_call" clpoef="rooooooi_evaluate_intbuffacde=s)s/acpi/processor_perflib.c#L123" id="L124" cl2s="line" 3name=37120"> 120
  41#incl3ude &34     (;
(()
a>()
f="driver))s/acpi/processor_perflib.c#L123" id="L124" cl2s="line" 3name=3L72">  72
 113
status = ;
([st\n href="+code=p/acpi/processor_perflib.c#L113" id="L114" cl2s="line" 3name=37114"> 114    3                                 LL, &ate_count)
f="driver))s/acpi/processor_perflib.c#L85" id="L99" clas2s="line" 3name=37115"> 115}
(ef">status !=   76stati2c iincl3ude &34     )
status != "_PPC"ot;Ea>(  77
  38
, pr->performance)
st  59  60  51
  82     3ude &34     (;
((
  83     2   >
st\n href="+code=p/acpi/processor_perflib.c#L993 id="L99" clas2s="line" 3name=3L84">  84

st\n href="+code=p/acpi/processor_perflib.c#L85"" id="L135" cl2s="line" 3name=3L85">  85     2                     a hr/a>()aspan3 clas35    ne" 3name="L44">ooooooance->st\n href="+code=p/acpi/processor_perflib.c#L113" id="L135" cl2s="line" 3name=3876">  76stati2c iincl3ude          a hr/a>()aspan3 clas35    ne" 3name="L44">ooooooance->  77
()aspan3 clas35    ne" 3name="L44">ooooooance->  38
)aspan3 clas35    ne" 3name="L44">ooooooance->bus_marocesl"srncy="r->  59()aspan3 clas35    ne" 3name="L44">ooooooance->()aspan3 clas35    ne" 3name="L44">ooooooance->ef">statrndnore_ppc)
 120
  41#incl3ude  id="L134" cl2s="line" 3name=3941">  41#incl3ude  id="L134" cl2s="line"ooo5uessor_perfliacpi/processor_perflib.c4"3nam4or_pe14e" 3n" 3name="L44">  #id="L122" cl26="line" 3aame=3676">  76stati2c i"+270ef="Ri"lins" class="sr_liminNULL  46s u64 MHz will be "line"as u32 KHz inprocessope14e" 3n" 3name="L44">  #id="L122" cl26="line" 3aameringS="sr cl2s="line" 2name="L94"3  94<39cl2s="line" 2name="L44">  4ll" cwef="r-&g7    3   )
  76sta || 3   ef">statrndnore_ppce)
  76sta * 1000) !an3 clas35linuorm>

   4"Li_NOT_FOUND" clakmalobjn _pro3essor_ppobjde=sotifier_c3ll" c3buffacpi_evaluate_  76sta * 1000)stati2c iincl3ude &34     KERN_ERRPI_PROCEpi/proces/a>)
"_PPC"Ina>(id _PSS data\nFW_i/p>"_PPC&quoFW_i/p>Ina>(id _PSS data\n href="+code=rs/acpi/processor_i2c iincl3ude &34       76  84

)
stEa>(  76sta  51
status != 

   4"Liverrs1f  3     3     rs/acpi/processor_perflib.c#L114_frequenc4

   4"Liver" cl3ss="line"3name="L136"> 136    3   if3(status != 

   4"Live!rs1f ati2c iincl3ude &34       #id="L122" cl26="line" 3aa4* href="r4th nuorm>

   4"" crype14e" 3n" 3name="L44">  #id="L122" cl26="line" 3aa4*6href="r4tssor_ppobjde=sotifier_c4L134"4id="L134" cl3s="line" 3name="L107"> 1                        g7    3   ooooooance-> != performancee)
st  59

   4"Liv    3                                 LL, &4ocessor_p4objde=st= c" class="sref4>crn 40name="L44">ooooooance-> !=   59ooooooance->

   4"Liva 3ref="32ivers/acpi/processor_perflib.c#L1334n _proces4or_ppobjde=sotifier_call4 cle=41ame=3851">  51
 123    3   refocessors, status != 

   4"Liverrs0 ati2c iincl3ude &34     )
"_PPC"Ina>(id _PSS data\nFW_i/p>"_PPC&quoFW_i/p>Ina>(id _PSS data\n href="+code=rs/acpi/processor_i2c iincl3ude &34     ooooooance-&g" id="L99" clas3ss="line"3nao "line"BIOS" 3nam">  76stKERN_ERRPI_PROCESSOR_FIKERN_ERRe=ss/acpi/processor_perflib.c#L133" id="L135" cl2s="line" 3name=3738">  38
performance)
st  59states[  57 135
  51
)
     3ude &34     , buf4acpi_evaluate_ef">status != 

   4"LiveL135s0  3ude &34     KERN_ERRPI_PROCESSOR_FIKERN_ERRde"+code=states" class="sref">states[

   4"Liva 3ref="32ivers/acpi/processor_perflib.c#L13340sulnn _p4ocessor_pp00suln="drs/ac4i/pro42>pr-4" id="L114" cl3ss="line"3name="L124"> 1242ssor_perfli130" cl2s="line" 3name=3860">  60performance-> 123    3   stat4s42> 1242 cllengthp=hrc#L99" id="L99" clas3ss="line"3name="L125"> 125
acpi_sta4us #incl3ude  id="L134" cl2s="line" 3name=3941">  44ass=buffa4pi_evaluate_integerstde=prcode=acpi_proceinfo" cl2s="line" 3name=3659">  59rcode=acpi_proceinfo->="sref">pr)
 128    3     3     rs/acpi/processor_perflib.c#L114ass=buffa4pi_evaluate_integer 130    3   pr)
 131, &4performance)
NULlasE_Ulicy"ROCESSOR_FILE_OK="drUlicy" class="sr">NULL, &a="L124" cl3ss="line"3name="L135"> 135
    3   if32    rf="+code=acpi_processor_get_pl4 id="L1164 cl3ss="line"3name="L38"4  38<43ref">KERN_ERRmance)
,e)
stME(,e)
stME(NULL, &am  3     3     rs/acpi/processor_perflib.c#L114a id="L114las3ss="line"3name="L39"4  39<43 cllengthp=href31    .c#L135" id="L135" cl3s=INVA"3name="L135"> 1=INVA"a>

ob4EFAILURCP4_MODULE_NAME(status = 0;
<.a>;
(NULlasE_rcodUlicy"mance)
stNULL, &NULL, &am a 3ref="335            e=acpi_processor_geiLL4LE_PEEXCE4TIONPI_MODULE_NAME(<4XCEPT4ONde=prp_NOT_Fef">status !=   76stati2c iincl3ude &34     ;
 != 
  83     2   >
  48  43#defi3ne , 4asf="drive_NOT_FOUND" cl4buffa4pi_evaluate_in h3ref="35ivers/acpi/processor_perflib.c#L52"4ocessors<4a>, KERN_ERR124" id="L124" cl3ss="line"3name="L130"> 130 limit" clrm_limitstde=prcode=acpi_proce="L44">ooooooance-itstde=prcode=acpi_proce="L44">mance)
status !=  130)
#defi3ne   44id="L52" 4las3s="line" 3name="L52"4  52<45f">r-> 130 limit" clrm_limitstde=prcode=acpi_processor" class="sref">acpi_processor *)
status !=  130, #defi3ne pr-4gt;performancest 130 limit" clrm_limitstde=prcodelatref=_limiode=handle" class="sref">stde=prcodelatref=_limioclass)
#incl3ude &339ef="+code=cpufreq_verify_wief">sta4/a>-><4 href="+code=performance4 clas4="sref">perforc#L99" id="L99" clas3ss="line"3name="L125"> 125
#incl3ude  id="L134" cl2s="line" 3name=3941">  44or_gerndn4re_ppc)
  #id="L122" cl26="line" 3aa4b.c#L993 4d="L99" clas2s="line" 3n4me=3646 class="sr_liminNULL  76yridod h.c#Lefoepe14e" 3n" 3name="L44">  #id="L122" cl26="line" 3aa4bs="sref"4 cl2s="line" 3name=361344> 13446cl2s="line" 2name="L44">  4ll" cwef=*Lefe"BIOS"is olderLefonLefe"CPU   76  #id="L122" cl26="line" 3aa4btaobjecr4          e=acpi_process4pi_ev4span3 34" cl3s="line" 3name="L107"> 107    3   statL135" cl3s="lineupdckagbioline" 3name=3L76updckagbiol>#de  6linuooooooooooooo4ocess4r_ppc_#ifdefL135" cl3s="lineCONFIG_XrouL132">)ae=3L76CONFIG_Xro#incl3ude  id="L134" cl2s="line" 3name=3941">  44oo4KERN_ERRmancflib.c#L933" id="L11SUCCESS="line" 3name=3L83">SUCCESSclass)
NULlasE_rcodUlicy"mance)
stNULL, &NULL, &am ))ti2c iincl3ude &34     pi_ev4luate_intbuffacde=sotifi4r_cal4" cllengthp=href31    if;)
 &am )i2c iincl3ude &34       51
  76  48(;
4 1134/a>
 =  125
stde=pnotify_smmde=handle" class="sref">stde=pnotify_smm->="sref">pr)
NULmoduy"d="L122" cl3ss="line"callpc"_moduy" class="sr">NULcallpc"_moduy"30, pr>pr)
NULis_don"30    3   #incl3ude  id="L134" cl2s="line" 3name=3941">  44 id="L1224 cl2s="line" 3name=3L82"4  82<4a>     3ude &34     (;
4!s)
(id _PSS data\n PC_REGISTEREDve_NOT_FOUND" c PC_REGISTERED &am )i2c iincl3ude &34       BUSYL99"a 3ref="3riverss/acpi/processor_perflib.c#L114=acpi_pro4essotst\n href="+4ode=p48>pr-4L99" cpi_4rouL132">)aspan3 clas35 4  ne"43name="L44">oomance)
 try_moduy"_rco_REGISTEREDREFIXcallpc"_moduy" class="sr">NULcallpc"_moduy"30)aspan3 clas35 4  ne"43name="L44">ooooooance.c#L135" id="L135" cl3s=INVA"3name="L135"> 1=INVA"a>
)aspan3 clas35 4  ne"48>)aspan3 clas35 4  ne"43name="L44">oo)aspan3 clas35 4  ne"43name="line" 2name="L44">  4ll" cwef=*L#inc"line" 2name="L44">  4ll" cwef=*Lwas already notified. Tfis avoids double notifica838"" id="Li2c iincl3ude &34       4ll" cwef=*Lwhich might lead ="Lunexpected  125(stati2c i"+270ef="4i"lin4" class="sr_liminNULL    3   oomanclimit" clrm_limis_don" class="sr">NULis_don"30 moduy"_puo_REGISTEREDREFIXcallpc"_moduy" class="sr">NULcallpc"_moduy"30NULis_don"30KERN_ERRPI_PROCE>pr)
 moduy"_puo_REGISTEREDREFIXcallpc"_moduy" class="sr">NULcallpc"_moduy"30NULis_don"30)
  45_frequenc5r->NULis_don"30 " id="L135" cl3s=Is="line" 3name=3=Is30  46t write ppackagert;    3   )
pi/p99" id="L99" clasmi_c4"3, e)
pi/p99" id="L99" clappackagert;)
  48ooooooance>pr)
 moduy"_puo_REGISTEREDREFIXcallpc"_moduy" class="sr">NULcallpc"_moduy"30 10850name="L44">ooooooance.c#L135   3   oo h3ref="35ivers/acpi/processor_perflib.c#L52"5b9essor_p5oe_ppc)
 11050a>
ob5n _proces5or_ppobjde=sotifier_call5 cle=51ass="sref">status = 0;

  83     2   >
ate_count)
f="driver))Writ3namppackagert;  84

pr)


refocessors, pr)
;
(

)
ef">statrndnore_ppc)

st  76stati2c iincl3ude &34     KERN_ERRPI_PROCESSOR_FIKERN_ERRUND)
status != "_PPC"ot;Ea>(
  51

( moduy"_puo_REGISTEREDREFIXcallpc"_moduy" class="sr">NULcallpc"_moduy"30, buf52cpi/processor_perflibc#L99" id="L99" clas3ss/acpi/processor_perflib.c#L99"a 3ref="3riverss/acpi/processor_perflib.c#L115ere=pcpi_5 cl3ss="line"3name="L1245> 12452ref">KERN_ERR h3ref="35ivers/acpi/processor_perflib.c#L52"50sulnn _p5ocessor_pp00suln="drs/ac5i/pro52>pr-5" id="L115" cl3ss="line"3name="L125"> 1252">performance  46s nome=PC, we needo="Lfear nothpc", so" id="Li2c iincl3ude &34      1* we c clallowLefe"rocessosude &3o="Lbe rmmod>  46ed. 07    3   stat5s52ref">KERN_ERR124" id="L124" is_don" class="sr">NULis_don"30 1a 3ref="3riverss/acpi/processor_perflib.c#L115ecessor_p5" cl3ss="line"3name="L125"> 1252>#incl3ude &339ef="+code=cpufreq_verify_wief">sta5lnn _proc5ssor_pp00suln="drivers/a5pi/pr529srocessors, !s)
(id _PSS data\n PC_IN_USd))rs/acpi/proce PC_IN_USd30acpi_sta5us   51
( moduy"_puo_REGISTEREDREFIXcallpc"_moduy" class="sr">NULcallpc"_moduy"30     3ude &34     pr-5/a>, &5per id="L135" cl3s=XPORT_SYMBO"3name="L135"> 1=XPORT_SYMBO"class)
stde=pnotify_smmde=handle" class="sref">stde=pnotify_smm-> a 3ref="335            e=acpi_processor_geiLL5aid="L1165_evaluate_intlL1t_ina>(i5="dri53a>    3   if32    rf="+code=acpi_processor_get_pl5 id="L1165 cl3ss="line"3name="L38"5  38<53ref">t_platform_limit" clrm_limitstde=prcodesa/processor_perfitstde=prcodesa->="sref">pr)
stde=/processor_perfitstde=d="L122" cl3ss="line"3name="L128"> 128    3     3     rs/acpi/processor_perflib.c#L115a id="L115las3ss="line"3name="L39"5  39<53 clleti2c iincl3ude &34      130    3   (status = 0;
 131(<5XCEPT5ONde=prp_NOT_F="sref">pr)
"_PPC&quoUNDEa>( 135
<}pa3 clas33     ;
pr)
)
f="driver))NNNNN8">  48)
f="driver))NNNNN8">  48pr)
 115} id{0>Ea>( 135
<}pa3 clas33      135
pr)
NULlasE_esd_packag"d="L122" cl3ss="line"3domain/processor_perfedomaina>
, KERN_ERR124" id="L124" .a>;
()
stNULL, & 135
<1285" id="L99" clas2s==s)s/acpi/processor_perflib.c#L a 3ref="335            e=acpi_processor_geiLL5L id="L115rocessor_pp00suln="drive5NVAL"5class="sreFAULef">status !=   76stati2c iincl3ude &34       43#defi3ne   51
     3ude &34     ;
( 123 fi3ne , oomance)
NULbyp"->p!id="L99" clas3ss="sor_TYPE_PACKAGd))rs/acpi/processor_TYPE_PACKAGdstati2c iincl3ude &34     pr)
"_PPC"Ina>(id _PSS data\n href="+code=rs/acpi/processor_esflib.c#L133" id="L135" cl2s="line"srSD dataL48">  48)
  38
ooooooanceid="L135" cl3s="line" 3name=3860">  60sta5/a>-><5 href="+code=performance5 clas559srocessors, )
NULpackag"d="L99" id="L99" clade=handle" class="srerformance!rsf ati2c iincl3ude &34       51
("_PPC"Ina>(id _PSS data\n href="+code=rs/acpi/processor_esflib.c#L133" id="L135" cl2s="line"srSD dataL48">  48)
(  38
  60 13456ref">KERN_ERR h3ref="35ivers/acpi/processor_perflib.c#L52"5btaobjecr5          e=acpi_process5pi_ev56>pr-5 id="L1225 cl26="line" 3aame=3676"5  76<56">performance)
st  6linuooooooooooooo5ocess56a>    3   if32    rf="+code=acpi_processor_get_pl5oo4KERN_ERR124" id="L124" .a>;e" 3name=37115"> 115}99" id="L99" clalength" 3name=37115">lengtha>
<133de=s)s/acpi/processor_perflib.c#L99sd_packag" class="sr">NULlasE_esd_packag"d="L a 3ref="335            e=acpi_processor_geiLL5" id="L115luate_intbuffacde=sotifi5r_cal56ass="sref">pr>pr)
;e" 3name=37115"> 115}99" id="L99" clas3ss="line"3name="L123"> 123 pa="L124" cl3ss="l3domain/processor_perfedomaina>
ob5 id="L1245 cl2s="line" 3name=3741"5  41<57ass="sref">status = 0;
<.a>;
(NULlasE_extract_packag"_REGImancee)
NULpackag"d="L99" id="L99" claele3nam(ele3nam, &5/a>(;
5;e" 3name=37115"> 115} a 3ref="335            e=acpi_processor_geiLL5id="L93" 5las2s="line" 3name=371135> 11357cpi_evaluate_ef">status !=   76stati2c iincl3ude &34      = ("_PPC"Ina>(id _PSS data\n href="+code=rs/acpi/processor_esflib.c#L133" id="L135" cl2s="line"srSD dataL48">  48  38
5  6057uffacpi_evalu}h2ref="23    3 clas35linuorm>"+code=mu_NOT_F5uo4, status != <3domain/processor_perfedomaina>
acnum_" cri" ->p!id="L99" clas3ss="sor_rSD_REV0_ENTRIES="line" 3name=3L83">rSD_REV0_ENTRIESsati2c iincl3ude &34     "_PPC"Ina>(id _PSS data\n href="+code=rs/acpi/processor_esflib.c#L133" id="L135" cl2Unknown"srSD:num_" cri" L48">  48  51
(  38
  60(;
5"+code=mu_NOT_F5dringS="s5o[t;_PPC]: core_fa00);nc5[t;_P58a>refocessors, st\n href="+5ode=p58lass="sreFAULef">status != <3domain/processor_perfedomaina>
)aspan3 clas35 5  ne"58ssor_perflib.c#L135" s/a>)
"_PPC"Ina>(id _PSS data\n href="+code=rs/acpi/processor_esflib.c#L133" id="L135" cl2Unknown"srSD:revisionL48">  48)aspan3 clas35 5  ne"53name="L44">ooooooance" clasa>(  38
)aspan3 clas35 5  ne"58ref">KERN_ERRPI_PROCEid="L135" cl3s="line" 3name=3860">  60)aspan3 clas35 5  ne"58name="L44">oo h3ref="35ivers/acpi/processor_perflib.c#L52"5L99" cpi_5rouL132">)aspan3 clas35 5  ne"58a>
ob5 id="L1345 cl2s="line" 3name=3941"5  41<590ass="sreFAULef">status != <3domain/processor_perfedomaina>
NULcoord_byp"->p!id="L99" clas3ss=DOMAIN_COORD_TYPE_SW/ALL class="sr">NULDOMAIN_COORD_TYPE_SW/ALL->p85" i85" i 3ref="31    goto ob5 id="L1225ude  id="L134" cl2s="lin5"ooo559PRINTde=prp_NOT_Fstatus != <3domain/processor_perfedomaina>
NULcoord_byp"->p!id="L99" clas3ss=DOMAIN_COORD_TYPE_SW/ANY" 3name="L43"> DOMAIN_COORD_TYPE_SW/ANY->p85" i85" i 3ref="31    goto ob5 a>(stati2c i"+270ef="5i"lin59cpi/processor_perstatus != <3domain/processor_perfedomaina>
NULcoord_byp"->p!id="L99" clas3ss=DOMAIN_COORD_TYPE_HW/ALL class="sr">NULDOMAIN_COORD_TYPE_HW/ALL->sati2c iincl3ude &34     ("_PPC"Ina>(id _PSS data\n href="+code=rs/acpi/processor_esflib.c#L133" id="L135" cl2s="line"srSD:coord_byp"L48">  48pr)
  38
  60135" cl3s="line" 3name=3860">  60pr>pr)
NULkfre"_REGISTEREDREFIX=s)s/acpi/processor_perflib.c#L99" id="L99" clas3ss="line"3name="L123"> 123  hr3ef="+34    return -)
perforc#L99" id="L99" clas3ss="line"3name="L125"> 125
"+code=mu_NOT_F6_frequenc6stde=ppreregis23<_ href="+code=))s/acpi/procitstde=ppreregis23<_ href="+cod_REGI 3ude &34      10460] power[t;_PPC] trans="sref">pr)
stde=_ href="+code=))s/acpi/procitstde=pphref="+cod_REG">pr)
 erfor_tarrcoa>
ooac#L124" id="L124" clt"lie"3name="L125"> 1t"li.c#L133   3   oounsignedform_limit" clrm_limie"3name="L125">imanc124" cl2s="line" je"3name="L125">ja>
pr>pr)
 epumask_var_o_REG">pr)
accoss/ed_roc a>
)
 11060pi/processor_t_sref">pr)
stde=/processor_perfitstde=d="L122" cl3ss="line"3name="L128"> 128  a 3ref="3riverss/acpi/processor_perflib.c#L116n _proces6or_ppobjde=sotifier_call6 cle=61ass="sref">st="sref">pr)
NULlasE_esd_packag"d="L122" cl3ss="line"3domain/processor_perfedomaina>
pr)
stde=/processor_perfitstde=d="L122" cl3ss="line"match_3name="L128"> 128match_3na>
pr)
NULlasE_esd_packag"d="L122" cl3ss="line"match_3domain/processor_perfmatch_3domaina>
refocessors, e)
accoss/ed_roc a>
<124" cl2s="line" GFP_t;NULGFP_t;stocessors,   "lMEMa>
KERN_ERR124" id="L124" mutex_locatus" class="srPmutex_loca_REGImance>pr)
  hr3ef="+34    return -sta6_processo6" class="ctrith *  #id="L122" cl26="line" 3aa6 id="L1116 cl3ss="line"3name="L1216> 12162>#inc"line" 2name="L44">  4ll" cwef=*LCheckomanr_other ude &3ohas already regis23  #id="L122" cl26="line" 3aa6 bjn _pro6dde=s:/acpi/processor_pe6flib.62ssor_"line" 2name="L44">  4ll" cwef=*Lchang3namprcpi/pessor_perflomanitohas.LCheckomnput data as well." id="Li2c iincl3ude &34     buf62 class="sr_liminNULL    3   KERN_ERRd="L99" clas2s=ver_each_3ossible_cpue=))s/acpi/procver_each_3ossible_cpu_REGISTEREDREFIXie"3name="L125">imancsati2c iincl3ude &34     pr)
 128  pa="L124" cl3ss="l33<_cpue=))s/acpi/proc33<_cpu_REGISTEREDREFIXspan clas class="sref">acspan clas a>
<124" cl2s="line" ie"3name="L125">imancshr3ef="+34    return - 1262ssor_perflib.c#L135" mance)
 128   ati2c iincl3ude &34     ooooooance*    3   stat6s62ref">KERN_ERRPI_PROCEEEEEEEEEert;inuehr3ef="+34    return - 1262 cllengthp=href31    }h2ref="23    3 clas35linuorm>"+code=mu_NOT_F6lnn _proc6ssor_pp00suln="drivers/a6pi/pr62a>
ob6>acpi_sta6us   51
status != <3riverde=states" class="sref">st 1t"li.c#L133" id="L135" cl3s=BUSY" 3name="L43">  BUSYL99"a 3ref="3riverss/acpi/processor_perflib.c#L116ass=buffa6pi_evaluate_integer "rr_ouoL99"a 3ref="3riverss/acpi/processor_perflib.c#L116are=pcpi_6pi_evaluate_integerpr-6/a>, &6)
,e)
REFIXshref="+code=))s/acpi/processor_perflib.c124" cl2s="line" ie"3name="L125">imancs ati2c iincl3ude &34     (i6="dri63name="L44">ooooooance* 1t"li.c#L133" id="L135" cl3s=INVA"3name="L135"> 1=INVA"a>
KERN_ERRPI_PROCEEEEEEEEEid="L135" cl3s="line"rr_ouo" 3name="L43"> "rr_ouoL99"a 3ref="3riverss/acpi/processor_perflib.c#L116acessor_p6las3ss="line"3name="L39"6  39<63 cllengthp=href31    }h2ref="23    3 clas35linuorm>"+code=mu_NOT_F6_nn _proc6a href="+code=acpi_evalu6te_in63ssor_perflib. h3ref="35ivers/acpi/processor_perflib.c#L52"6EFAILURCP6_MODULE_NAME(#incl3ude  id="L134" cl2s="line" 3name=3941">  46LE_PEEXCE6TIONPI_MODULE_NAME(<6XCEPT6ONde=prp_NOT_F    3   ;
REFIXie"3name="L125">imancsati2c iincl3ude &34     ( 128  pa="L124" cl3ss="l33<_cpue=))s/acpi/proc33<_cpu_REGISTEREDREFIXspan clas class="sref">acspan clas a>
<124" cl2s="line" ie"3name="L125">imancshr3ef="+34    return -)
 128   r3ef="+34    return -KERN_ERRPI_PROCESSOR_FIKERN_ERR3riverde=states" class="sref">stREFIXshref="+code=))s/acpi/processor_perflib.c124" cl2s="line" ie"3name="L125">imancshr3ef="+34    return -pr)
REFIXie"3name="L125">imanc124" cl2s="line" driverde=states" class="sref">ststatus != stde=prcodesa/processor_perfitstde=prcodesa->)
 128   sati2c iincl3ude &34       51
 1t"li.c#L133" id="L135" cl3s=INVA"3name="L135"> 1=INVA"a>
;
(, KERN_ERR h3ref="35ivers/acpi/processor_perflib.c#L52"6btaobjecr6las3s="line" 3name="L55"6  55<65lass="sreFAULef">status !=  1t"li.c#L r3ef="+34    return - "rr_rcoa>
  #id="L122" cl26="line" 3aa6i id="L116KEEcffacpi_evaluate_intb6ffacd65>#inc"line" 2name="L44">  4ll" cwef=*LNowLefat we have"srSD data fromoall"CPUs, lets setup P- 115< pe14e" 3n" 3name="L44">  #id="L122" cl26="line" 3aa6inn _proc6 href="+code=performance6 clas65name="line" 2name="L44">  4ll" cwef=*Ldomain info." id="Li2c iincl3ude &34     #inc"line" 2name="L44">  4ll" cwef=*7    3   )
r->imancsati2c iincl3ude &34     ( 128  pa="L124" cl3ss="l33<_cpue=))s/acpi/proc33<_cpu_REGISTEREDREFIXspan clas class="sref">acspan clas a>
<124" cl2s="line" ie"3name="L125">imancshr3ef="+34    return - 13466] power[t;_PPC] transmance)
 128   r3ef="+34    return -perr3ef="+34    return -  6linuooooooooooooo6ocess66name="L44">ooooooanceef">status != REFIXie"3name="L125">imanc124" cl2s="line" coss/ed_roc class="sref">accoss/ed_roc a>
, KERN_ERRPI_PROCEEEEEEEEEert;inuehr3ef="+34    return -sta6ea>-><6luate_intbuffacde=sotifi6r_cal66 *->
<133mancee)
st  51
(REFIXie"3name="L125">imanc124" cl2s="line" driverde=states" class="sref">st;
6(REFIXie"3name="L125">imanc124" cl2s="line" coss/ed_roc class="sref">accoss/ed_roc a>
 11367cpi/processor_perflibef">status != <3domain/processor_perfedomaina>
acnum_span clas pi/pr<rsf r3ref="335            e=acpi_processor_geiLL6 s="sref"6 = pr-6iid="L1226AILURCPI_MODULE_NAME6    3   67name="L44">ooooooance" clasa>( erfor_tarrcoa>
acnum_span clas pi/phr3ef="+34    return -KERN_ERRPI_PROCESSOR_FIKERN_ERRde=handle" class="srerformance> 1a 3ref="3riverss/acpi/processor_perflib.c#L116UND" clak6a andle, status != <3domain/processor_perfedomaina>
NULcoord_byp"->p=id="L99" clas3ss=DOMAIN_COORD_TYPE_SW/ALL class="sr">NULDOMAIN_COORD_TYPE_SW/ALL-> r3ref="335            e=acpi_processor_geiLL6 a>-><6_gerndnore_ppc)
 *stNULsha/ed_byp"a>
NULCPUFREQ_SHARED_TYPE_ALLpi/phr3ef="+34    return -  51
status != <3domain/processor_perfedomaina>
NULcoord_byp"->p=id="L99" clas3ss=DOMAIN_COORD_TYPE_HW/ALL class="sr">NULDOMAIN_COORD_TYPE_HW/ALL->sr3ef="+34    return -stNULsha/ed_byp"a>
NULCPUFREQ_SHARED_TYPE_HWpi/phr3ef="+34    return -status != <3domain/processor_perfedomaina>
NULcoord_byp"->p=id="L99" clas3ss=DOMAIN_COORD_TYPE_SW/ANY" 3name="L43"> DOMAIN_COORD_TYPE_SW/ANY->sr3ef="+34    return -stNULsha/ed_byp"a>
 CPUFREQ_SHARED_TYPE_ANYpi/phr3ef="+34    return -st\n href="+6ode=p68>pr-6L99" cpi_6rouL132">)aspan3 clas35 6  ne"68ssor_perflib.c#L135" s/a>)
ja>
)aspan3 clas35 6  ne"63name="L44">ooooooanceeeeeeeeeef">status != imancp=id="L99" clas3ss=je"3name="L125">ja>
)aspan3 clas35 6  ne"68ref">KERN_ERRPI_PROCEEEEEEEEEEEEEEEEEert;inuehr3ef="+34    return -)aspan3 clas35 6  ne"68>#incl3ude &339ef="+code=cpufreq_verify_wief">sta6L99" cpi_6rouL132">)aspan3 clas35 6  ne"68 * 128match_3na>
acspan clas a>
<124" cl2s="line" je"3name="L125">ja>
  51
)
 128match_3na>

<133mancee)
 128match_3na>
<"sref">st
    3   if32    rf="+code=acpi_processor_get_pl6n99" cpi_6pc_notifierpre=pcde=pr" 6lass=69ref">KERN_ERRPI_PROCEEEEEEEEE    3   #incl3ude &339ef="+code=cpufreq_verify_wief">sta6n99" cpi_6re_ppc)
 *
<#L993" id="L116" cl2num_span clas class="sref">acnum_span clas pi/pr!id="L99" clas3ss=erfor_tarrco" 3name="L43"> erfor_tarrcoa>
  51
 1t"li.c#L133" id="L135" cl3s=INVA"3name="L135"> 1=INVA"a>
 "rr_rcoa>
 10470a>refocessors, 
NULcoord_byp"->p!id="L99" clas3ss=match_3domain/processor_perfmatch_3domaina>
<#L993" id="L116" cl2coord_byp" class="sr">NULcoord_byp"->sati2c iincl3ude &34      1t"li.c#L133" id="L135" cl3s=INVA"3name="L135"> 1=INVA"a>
ooooooanceeeeeeeeeEEEEEEEEid="L135" cl3s="line"rr_rco" 3name="L43"> "rr_rcoa>
 10870ref">KERN_ERRPI_PROCEEEEEEEEE h3ref="35ivers/acpi/processor_perflib.c#L52"7_8d="L1147 ocessor_pp00suln="drive7>crn 70>#incl3ude &339ef="+code=cpufreq_verify_wief">sta7b9d="L1167 e_ppc)
 11070 *REFIXje"3name="L125">ja>
<124" cl2s="line" coss/ed_roc class="sref">accoss/ed_roc a>
  51
REFIXje"3name="L125">ja>
<124" cl2s="line" driverde=states" class="sref">strefocessors, pr)
REFIXje"3name="L125">ja>
)
status != imancp=id="L99" clas3ss=je"3name="L125">ja>
ooooooanceeeeeeeeeEEEEEEEEert;inuehr3ef="+34    return - 128match_3na>
acspan clas a>
<124" cl2s="line" je"3name="L125">ja>
 128match_3na>
  51
, buf72cpi/processor_perflibbbbbbbbbSSOR_FIKERN_ERRmatch_3domain/processor_perfmatch_3domaina>
<133mancee)
 128match_3na>
<"sref">st
 1272">perr3ef="+34    return -ooooooance*)
 128match_3na>
<"sref">stNULsha/ed_byp"a>
stat7s72ref">KERN_ERRPI_PROCEEEEEEEEEooooance*)
stNULsha/ed_byp"a>
 1272 cllengthp=href31    *)
 128match_3na>
<"sref">st, &7lnn _proc7ssor_pp00suln="drivers/a7pi/pr72 *)
stacpi_sta7us   51
,  "rr_rcoa>
<pr)
REFIXie"3name="L125">imancsati2c iincl3ude &34     )
acspan clas a>
<124" cl2s="line" ie"3name="L125">imancshr3ef="+34    return -(i7="dri73name="L44">ooooooancemance)
 128  pa>,e)
stKERN_ERRPI_PROCEEEEEEEEEert;inuehr3ef="+34    return -#incl3ude &339ef="+code=cpufreq_verify_wief">sta7_nn _proc7a href="+code=acpi_evalu7te_in73 *    3   (  51
status !=  1t"li.c#L ati2c iincl3ude &34     st;
REFIXie"3name="L125">imanc124" cl2s="line" driverde=states" class="sref">ststNULsha/ed_byp"a>
NULCPUFREQ_SHARED_TYPE_ALLpi/phr3ef="+34    return -, &7asf="drive_NOT_FOUND" cl7buffa74ssor_perflib.c#L135" SSOR_FIKERN_ERRdriverde=states" class="sref">stNULNULLpi/phe    3   "+code=mu_NOT_F7pre=pcpi_7pc_notifierpre=pcde=pr" 7lass=74> "rr_ouoL99")
REFIXmutex_unlocatus" class="srPmutex_unloca_REGImance>pr)
  hr3ef="+34    return -  5>pr)
REFIXcoss/ed_roc class="sref">accoss/ed_roc a>
 1t"li.c#Lhr3ref="335            e=acpi_processor_geiLL7iss=buffa7AL;
(,  1=XPORT_SYMBO"_REGISTEREDREFIXitstde=ppreregis23<_ href="+code=))s/acpi/procitstde=ppreregis23<_ href="+cod_REGshr3ref="335            e=acpi_processor_geiLL7itaobjecr7las3s="line" 3name="L55"7  55<75>pr-7gt;pr-7g6href="r7="+code=performance" cla7s="sr75a>   STEREDREFIXitstde=pregis23<_ href="+code=))s/acpi/procitstde=pregis23<_ href="+cod_REGI="sref">pr)
stde=_ href="+code=))s/acpi/procitstde=pphref="+cod_REGn3 clas35    goto pr-7gre=pcpi_7f="+270ef="+code=cSt= id7"L11675ref">KERN_ERRPI_PROCEEEEEEEEEooooance*stpr)
stde=/processor_perfitstde=d="L122" cl3ss="line"3name="L128"> 128  a 3ref="3riverss/acpi/processor_perflib.c#L11700sulnn _7rocessor_pp00sulNOMEMive7NVAL"76>#incl3ude  id="L134" cl2s="line" 3name=3941">  47or_gerndn7re_ppc)
r->manceISTEREDREFIXitstde=pppc_ 115c class="sref">acitstde=pppc_ 115c ">r(id _PSS data\n PC_REGISTEREDclass="sref">ac PC_REGISTEREDib.c  r3ef="+34    return - 1=INVA"a>
 13476a>refocessors, pr)
perr3ef="+34    return -  6linuooooooooooooo7ocess76name="L44">oos/a>)
acspan clas a>
<124" cl2s="line" cpue=))s/acpi/proccpuib.c hr3ef="+34    return -KERN_ERRmance)
 128   ati2c iincl3ude &34      1="lDEVa>
  5}h2ref="23    3 clas35linuorm>"+code=mu_NOT_F7 r_gerndn7_PRINTNVAL;
7     3ude &34      11377cpi/processoref">status != <3riverde=states" class="sref">st =   BUSYL99"a 3ref="3riverss/acpi/processor_perflib.c#L117iid="L1227AILURCPI_MODULE_NAME7"+code=mu_NOT_F7 id="L1167_PEEXCEPTIONPI_MODULE_NA7E77a>    3   if32    rf="+code=acpi_processor_get_pl7mo4KERN_ERR124" id="L124" WARN_ON" 3name="L43"> WARN_ON_REGIe)
#incl3ude &339ef="+code=cpufreq_verify_wief">sta7 a>-><7_gerndnore_ppc)
REFIX3riverde=states" class="sref">st#incl3ude  id="L134" cl2s="line" 3name=3941">  47rr_gerndn7 cl2s="line" 3name=3L82"7  82<78f">r->mancSTEREDREFIXitstde=prcodessor_perfl_info" cl2s="line" 3itstde=prcodessor_perfl_info_REGISTEREDREFIXspiverde=states" class= sati2c iincl3ude &34     stNULNULLpi/phi2c iincl3ude &34     pr)
st\n href="+7ode=p78cpi/processor_perflib.c#L135" id="L135" cl3s=IO3name="L135"> 1=IOpi/phi2c iincl3ude &34     )aspan3 clas35 7  ne"78ssor_perflib.}h2ref="23    3 clas35linuorm>"+code=mu_NOT_F7rate_intL7rouL132">)aspan3 clas35 7  ne"78a>    3   if32    rf="+code=acpi_processor_get_pl7ro4)aspan3 clas35 7  ne"78ref">KERN_ERR124" id="L124" mutex_unlocatus" class="srPmutex_unloca_REGImance>pr)
  hr3ef="+34    return -)aspan3 clas35 7  ne"78 cllengthp=hr.c#L1350hr3ef="+34    return -)aspan3 clas35 7  ne"78 }h2ref="23    3 clas35linuorm>"+code=mu_NOT_F7 id="L1347 cl2s="line" 3name=3941"7  41<79>#incl3ude  id="L134" cl2s="line" 3name=3941">  47 id="L1227ude  id="L134" cl2s="lin7"ooo579PRINT135" cl3s="lineEXPORT_SYMBO"3name="L135"> 1=XPORT_SYMBO"_REGISTEREDREFIXitstde=pregis23<_ href="+code=))s/acpi/procitstde=pregis23<_ href="+cod_REG hr3ef="+34    return -REFIXitstde=punregis23<_ href="+code=))s/acpi/procitstde=punregis23<_ href="+cod_REGI="sref">pr)
stde=_ href="+code=))s/acpi/procitstde=pphref="+cod_REGn3 clas35    goto pr-7 99" cpi_7essor_ppobjde=sotifier_c7ll" c7buffacpi_evaluate_a hrEEEEEEEEEEEEEEEEEEEEEE*">st   ti2c iincl3ude &34     KERN_ERRt_sref">pr)
stde=/processor_perfitstde=d="L122" cl3ss="line"3name="L128"> 128  a 3ref="3riverss/acpi/processor_perflib.c#L117n99" cpi_7rocessor_pp00suln="drive7NVAL"79>#incl3ude &339ef="+code=cpufreq_verify_wief">sta7n99" cpi_7re_ppc)
REFIXmutex_locatus" class="srPmutex_loca_REGImance>pr)
  hr3ef="+34    return -  48_frequenc8r->acspan clas a>
<124" cl2s="line" cpue=))s/acpi/proccpuib.c hr3ef="+34    return -e)
 128   ati2c iincl3ude &34      10480] power[t;_PPC] trans>pr)
"+code=mu_NOT_F8_6d="L1148 ssor_ppobjde=sotifier_c8L134"80a>    3   if32    rf="+code=acpi_processor_get_pl8_7d="L1148 c_notifierpre=pcde=pr" 8> 10880ref">KERN_ERRmancstatus != <3riverde=states" class="sref">ststacs115< /a>  hr3ef="+34    return -)
 11080ssor_perflib.STEREDREFIX3riverde=states" class="sref">stNULNULLpi/phi2c iincl3ude &34       48objn _pro8essor_ppobjde=sotifier_c8ll" c81f">r->perr3ef="+34    return - 1=XPORT_SYMBO"_REGISTEREDREFIXitstde=punregis23<_ href="+code=))s/acpi/procitstde=punregis23<_ href="+cod_REG hr3ef="+34    return -
The original LXR software by efe"3ef="+34 http://sourceef=ge.neta hrjects/lx<">LXR c4"3unitya>
<12this exproi3namal retuion by 3ef="+34 mailto:lx<@e"3ux.no">lx<@e"3ux.noa>
<.


lx<.e"3ux.no kindly hos23d by 3ef="+34 http://www.redpill-e"3 hr.no">Redpill L"3 hr ASa>
<12 hrvider of L"3uxEertsult3nam