Re: [PATCH V2 4/7] perf/x86/intel/uncore: Defer ADL global PMON enable to enable_box()
From: Chen, Zide
Date: Thu May 28 2026 - 14:11:52 EST
On 5/28/2026 1:35 AM, Mi, Dapeng wrote:
>
> On 5/27/2026 11:11 PM, Zide Chen wrote:
>> On some Raptor Cove CPUs, enabling uncore PMON globally at driver init
>> may increase power consumption even when no perf events are in use.
>>
>> Drop adl_uncore_msr_init_box() and defer programming the global control
>> register to enable_box(), so it is only set when a box is actually used.
>>
>> IMC and IMC freerunning counters use a separate control path and are
>> unaffected.
>>
>> Cc: stable@xxxxxxxxxxxxxxx
>
> Need a "Fixes" tag?
Not really. This is a workaround for hardware issues rather than a fix
for software bugs.
> Reviewed-by: Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx>
>
>
>> Signed-off-by: Zide Chen <zide.chen@xxxxxxxxx>
>> ---
>> arch/x86/events/intel/uncore_snb.c | 7 -------
>> 1 file changed, 7 deletions(-)
>>
>> diff --git a/arch/x86/events/intel/uncore_snb.c b/arch/x86/events/intel/uncore_snb.c
>> index 3dbc6bacbd9d..edddd4f9ab5f 100644
>> --- a/arch/x86/events/intel/uncore_snb.c
>> +++ b/arch/x86/events/intel/uncore_snb.c
>> @@ -563,12 +563,6 @@ void tgl_uncore_cpu_init(void)
>> skl_uncore_msr_ops.init_box = rkl_uncore_msr_init_box;
>> }
>>
>> -static void adl_uncore_msr_init_box(struct intel_uncore_box *box)
>> -{
>> - if (box->pmu->pmu_idx == 0)
>> - wrmsrq(ADL_UNC_PERF_GLOBAL_CTL, SNB_UNC_GLOBAL_CTL_EN);
>> -}
>> -
>> static void adl_uncore_msr_enable_box(struct intel_uncore_box *box)
>> {
>> wrmsrq(ADL_UNC_PERF_GLOBAL_CTL, SNB_UNC_GLOBAL_CTL_EN);
>> @@ -587,7 +581,6 @@ static void adl_uncore_msr_exit_box(struct intel_uncore_box *box)
>> }
>>
>> static struct intel_uncore_ops adl_uncore_msr_ops = {
>> - .init_box = adl_uncore_msr_init_box,
>> .enable_box = adl_uncore_msr_enable_box,
>> .disable_box = adl_uncore_msr_disable_box,
>> .exit_box = adl_uncore_msr_exit_box,