[RESEND PATCH v2 2/3] powerpc/powernv: Introduce Self save support

Pratik Sampat psampat at linux.ibm.com
Mon Jan 13 20:51:37 AEDT 2020


I made a mistake while arranging the patches in the series. I'll re-arrange it
correctly now. Sorry about that.

On 13/01/20 1:21 pm, Ram Pai wrote:
> On Mon, Jan 13, 2020 at 09:15:08AM +0530, Pratik Rajesh Sampat wrote:
>> This commit introduces and leverages the Self save API which OPAL now
>> supports.
>>
>> Add the new Self Save OPAL API call in the list of OPAL calls.
>> Implement the self saving of the SPRs based on the support populated
>> while respecting it's preferences.
>>
>> This implementation allows mixing of support for the SPRs, which
>> means that a SPR can be self restored while another SPR be self saved if
>> they support and prefer it to be so.
>>
>> Signed-off-by: Pratik Rajesh Sampat <psampat at linux.ibm.com>
>> ---
>>   arch/powerpc/include/asm/opal-api.h        | 3 ++-
>>   arch/powerpc/include/asm/opal.h            | 1 +
>>   arch/powerpc/platforms/powernv/idle.c      | 2 ++
>>   arch/powerpc/platforms/powernv/opal-call.c | 1 +
>>   4 files changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/include/asm/opal-api.h b/arch/powerpc/include/asm/opal-api.h
>> index c1f25a760eb1..1b6e1a68d431 100644
>> --- a/arch/powerpc/include/asm/opal-api.h
>> +++ b/arch/powerpc/include/asm/opal-api.h
>> @@ -214,7 +214,8 @@
>>   #define OPAL_SECVAR_GET				176
>>   #define OPAL_SECVAR_GET_NEXT			177
>>   #define OPAL_SECVAR_ENQUEUE_UPDATE		178
>> -#define OPAL_LAST				178
>> +#define OPAL_SLW_SELF_SAVE_REG			181
>> +#define OPAL_LAST				181
>>
>>   #define QUIESCE_HOLD			1 /* Spin all calls at entry */
>>   #define QUIESCE_REJECT			2 /* Fail all calls with OPAL_BUSY */
>> diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
>> index 9986ac34b8e2..389a85b63805 100644
>> --- a/arch/powerpc/include/asm/opal.h
>> +++ b/arch/powerpc/include/asm/opal.h
>> @@ -203,6 +203,7 @@ int64_t opal_handle_hmi(void);
>>   int64_t opal_handle_hmi2(__be64 *out_flags);
>>   int64_t opal_register_dump_region(uint32_t id, uint64_t start, uint64_t end);
>>   int64_t opal_unregister_dump_region(uint32_t id);
>> +int64_t opal_slw_self_save_reg(uint64_t cpu_pir, uint64_t sprn);
>>   int64_t opal_slw_set_reg(uint64_t cpu_pir, uint64_t sprn, uint64_t val);
>>   int64_t opal_config_cpu_idle_state(uint64_t state, uint64_t flag);
>>   int64_t opal_pci_set_phb_cxl_mode(uint64_t phb_id, uint64_t mode, uint64_t pe_number);
>> diff --git a/arch/powerpc/platforms/powernv/idle.c b/arch/powerpc/platforms/powernv/idle.c
>> index 2f328403b0dc..d67d4d0b169b 100644
>> --- a/arch/powerpc/platforms/powernv/idle.c
>> +++ b/arch/powerpc/platforms/powernv/idle.c
>> @@ -1172,6 +1172,8 @@ void pnv_program_cpu_hotplug_lpcr(unsigned int cpu, u64 lpcr_val)
>>   		if (!is_lpcr_self_save)
>>   			opal_slw_set_reg(pir, SPRN_LPCR,
>>   					 lpcr_val);
>> +		else
>> +			opal_slw_self_save_reg(pir, SPRN_LPCR);
> opal_slw_self_save_reg() was used in the prior patch too. How did it
> compile, if the definition is in this patch?
>
>
> Reviewed-by: Ram Pai <linuxram at us.ibm.com>
>
> RP



More information about the Linuxppc-dev mailing list