[Skiboot] [PATCH] OCC: Increase max pstate check on P9 to 255
Stewart Smith
stewart at linux.vnet.ibm.com
Wed Nov 22 07:39:59 AEDT 2017
Stewart Smith <stewart at linux.vnet.ibm.com> writes:
> Vaidyanathan Srinivasan <svaidy at linux.vnet.ibm.com> writes:
>> * Stewart Smith <stewart at linux.vnet.ibm.com> [2017-11-17 09:34:03]:
>>
>>> This has changed from P8, we can now have > 127 pstates.
>>>
>>> This was observed on Boston during WoF bringup.
>>>
>>> Reported-by: Minda Wei <minda.wei at ibm.com>
>>
>> Reported-by: Francesco A Campisano <campisan at us.ibm.com>
>>>
>>>
>>> Signed-off-by: Stewart Smith <stewart at linux.vnet.ibm.com>
>>
>> Reviewed-by: Vaidyanathan Srinivasan <svaidy at linux.vnet.ibm.com>
>>
>>
>>> ---
>>> hw/occ.c | 10 ++++++----
>>> 1 file changed, 6 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/hw/occ.c b/hw/occ.c
>>> index 78c6a6a356e3..8ad0dfe421d7 100644
>>> --- a/hw/occ.c
>>> +++ b/hw/occ.c
>>> @@ -612,13 +612,15 @@ static bool add_cpu_pstate_properties(int *pstate_nom)
>>> nr_pstates = labs(pmax - pmin) + 1;
>>> prlog(PR_DEBUG, "OCC: Version %x Min %d Nom %d Max %d Nr States %d\n",
>>> occ_data->version, pmin, pnom, pmax, nr_pstates);
>>> - if (nr_pstates <= 1 || nr_pstates > 128) {
>>> + if ((occ_data->version == 0x90 && (nr_pstates <= 1)) ||
>>> + (occ_data->version <= 0x02 &&
>>> + (nr_pstates <= 1 || nr_pstates > 128))) {
>>> /**
>>> * @fwts-label OCCInvalidPStateRange
>>> * @fwts-advice The number of pstates is outside the valid
>>> - * range (currently <=1 or > 128), so OPAL has not added
>>> - * pstates to the device tree. This means that OCC (On Chip
>>> - * Controller) will be non-functional. This means
>>> + * range (currently <=1 or > 128 on p8, >255 on P9), so OPAL
>>> + * has not added pstates to the device tree. This means that
>>> + * OCC (On Chip Controller) will be non-functional. This means
>>> * that CPU idle states and CPU frequency scaling
>>> * will not be functional.
>>> */
>>
>> Thanks for the fix to increase the limit.
>>
>> Checking for occ_data->version is the right check to decide permitted
>> range between P8 vs P9.
>>
>> In case occ_data->version is bumped up, then we do not know the range
>> and we will fail in an earlier check and not export any pstates.
>>
>> We need to update the right range for future versions here.
>>
>> However Linux could have reporting problems with PState IDs more than
>> 128 and also with large number of PStates. This change does not as
>> such crash Linux, but more work is needed in Linux driver to support
>> large number of PStates.
>
> I'll pull the patch in and let's see how it goes for a bit... see if
> people see this as a real problem or not. We can always pull it out and
> do a dance with filtering pstates to limit to 128 and put the full list
> somewhere else that the kernel doesn't poke at by default.
>
> mpe, what are your thoughts here?
I've merged to master as of
701556d2ea9b890a389183907ae484b78c05c665.... let's see if this is a
terrible idea :)
--
Stewart Smith
OPAL Architect, IBM.
More information about the Skiboot
mailing list