• Ionela Voinescu's avatar
    arch_topology: obtain cpu capacity using information from CPPC · 9924fbb5
    Ionela Voinescu authored
    Define topology_init_cpu_capacity_cppc() to use highest performance
    values from _CPC objects to obtain and set maximum capacity information
    for each CPU. acpi_cppc_processor_probe() is a good point at which to
    trigger the initialization of CPU (u-arch) capacity values, as at this
    point the highest performance values can be obtained from each CPU's
    _CPC objects. Architectures can therefore use this functionality
    through arch_init_invariance_cppc().
    
    The performance scale used by CPPC is a unified scale for all CPUs in
    the system. Therefore, by obtaining the raw highest performance values
    from the _CPC objects, and normalizing them on the [0, 1024] capacity
    scale, used by the task scheduler, we obtain the CPU capacity of each
    CPU.
    
    While an ACPI Notify(0x85) could alert about a change in the highest
    performance value, which should in turn retrigger the CPU capacity
    computations, this notification is not currently handled by the ACPI
    processor driver. When supported, a call to arch_init_invariance_cppc()
    would perform the update.
    Signed-off-by: default avatarIonela Voinescu <ionela.voinescu@arm.com>
    Acked-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Tested-by: default avatarValentin Schneider <valentin.schneider@arm.com>
    Tested-by: default avatarYicong Yang <yangyicong@hisilicon.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    9924fbb5
arch_topology.c 18.9 KB