diff mbox

[U-Boot,v3,01/11] ARM: PSCI: change PSCI function IDs base and offsets

Message ID 1463562634-16723-2-git-send-email-hongbo.zhang@nxp.com
State Superseded
Delegated to: York Sun
Headers show

Commit Message

macro.wave.z@gmail.com May 18, 2016, 9:10 a.m. UTC
From: Wang Dongsheng <dongsheng.wang@nxp.com>

According to PSCI specification v1.0, the PSCI functions should start from
0x84000000 for SMC32, this patch changes this base value as well as other
function offset values.

Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>
---
 arch/arm/include/asm/psci.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Chen-Yu Tsai May 18, 2016, 9:19 a.m. UTC | #1
Hi,

On Wed, May 18, 2016 at 5:10 PM,  <macro.wave.z@gmail.com> wrote:
> From: Wang Dongsheng <dongsheng.wang@nxp.com>
>
> According to PSCI specification v1.0, the PSCI functions should start from
> 0x84000000 for SMC32, this patch changes this base value as well as other
> function offset values.

I think you should squash this into the PSCI v1.0 skeleton patch. Otherwise
between these 2 patches, we get a function ID and version mismatch?

ChenYu

>
> Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
> Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>
> ---
>  arch/arm/include/asm/psci.h | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
> index 128a606..a4a19e3 100644
> --- a/arch/arm/include/asm/psci.h
> +++ b/arch/arm/include/asm/psci.h
> @@ -19,13 +19,13 @@
>  #define __ARM_PSCI_H__
>
>  /* PSCI interface */
> -#define ARM_PSCI_FN_BASE               0x95c1ba5e
> +#define ARM_PSCI_FN_BASE               0x84000000
>  #define ARM_PSCI_FN(n)                 (ARM_PSCI_FN_BASE + (n))
>
> -#define ARM_PSCI_FN_CPU_SUSPEND                ARM_PSCI_FN(0)
> -#define ARM_PSCI_FN_CPU_OFF            ARM_PSCI_FN(1)
> -#define ARM_PSCI_FN_CPU_ON             ARM_PSCI_FN(2)
> -#define ARM_PSCI_FN_MIGRATE            ARM_PSCI_FN(3)
> +#define ARM_PSCI_FN_CPU_SUSPEND                ARM_PSCI_FN(1)
> +#define ARM_PSCI_FN_CPU_OFF            ARM_PSCI_FN(2)
> +#define ARM_PSCI_FN_CPU_ON             ARM_PSCI_FN(3)
> +#define ARM_PSCI_FN_MIGRATE            ARM_PSCI_FN(5)
>
>  #define ARM_PSCI_RET_SUCCESS           0
>  #define ARM_PSCI_RET_NI                        (-1)
> --
> 2.1.4
>
Andre Przywara May 18, 2016, 10:07 a.m. UTC | #2
Hi,

On 18/05/16 10:10, macro.wave.z@gmail.com wrote:
> From: Wang Dongsheng <dongsheng.wang@nxp.com>
> 
> According to PSCI specification v1.0, the PSCI functions should start from
> 0x84000000 for SMC32, this patch changes this base value as well as other
> function offset values.

Out of curiosity: Do you plan to ever support ARMv8 boards with PSCI
services in U-Boot as well?
Then we would need to think about adjusting the function IDs, because
they use a "64-bit" flag for some functions.

> Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
> Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>

Otherwise:
Reviewed-by: Andre Przywara <andre.przywara@arm.com>

> ---
>  arch/arm/include/asm/psci.h | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
> index 128a606..a4a19e3 100644
> --- a/arch/arm/include/asm/psci.h
> +++ b/arch/arm/include/asm/psci.h
> @@ -19,13 +19,13 @@
>  #define __ARM_PSCI_H__
>  
>  /* PSCI interface */
> -#define ARM_PSCI_FN_BASE		0x95c1ba5e
> +#define ARM_PSCI_FN_BASE		0x84000000
>  #define ARM_PSCI_FN(n)			(ARM_PSCI_FN_BASE + (n))
>  
> -#define ARM_PSCI_FN_CPU_SUSPEND		ARM_PSCI_FN(0)
> -#define ARM_PSCI_FN_CPU_OFF		ARM_PSCI_FN(1)
> -#define ARM_PSCI_FN_CPU_ON		ARM_PSCI_FN(2)
> -#define ARM_PSCI_FN_MIGRATE		ARM_PSCI_FN(3)
> +#define ARM_PSCI_FN_CPU_SUSPEND		ARM_PSCI_FN(1)
> +#define ARM_PSCI_FN_CPU_OFF		ARM_PSCI_FN(2)
> +#define ARM_PSCI_FN_CPU_ON		ARM_PSCI_FN(3)
> +#define ARM_PSCI_FN_MIGRATE		ARM_PSCI_FN(5)
>  
>  #define ARM_PSCI_RET_SUCCESS		0
>  #define ARM_PSCI_RET_NI			(-1)
>
macro.wave.z@gmail.com May 19, 2016, 8:40 a.m. UTC | #3
On Wed, May 18, 2016 at 5:19 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> Hi,
>
> On Wed, May 18, 2016 at 5:10 PM,  <macro.wave.z@gmail.com> wrote:
>> From: Wang Dongsheng <dongsheng.wang@nxp.com>
>>
>> According to PSCI specification v1.0, the PSCI functions should start from
>> 0x84000000 for SMC32, this patch changes this base value as well as other
>> function offset values.
>
> I think you should squash this into the PSCI v1.0 skeleton patch. Otherwise
> between these 2 patches, we get a function ID and version mismatch?
>
> ChenYu
>

Thanks.
But there won't be the mismatch you mentioned, because in v0.1 the
function IDs are implementation defined, the can be set to any values,
here we just make a step forward to adapt legacy v0.1 function IDs
compatible with the coming v1.0.

This patch is updating legacy ID definitions and the coming v1.0
skeleton patch is to add new IDs, it is OK to separate them since
there won't be mismatch you pointed, what's more we've already gotten
the Reviewed-by: tag  :)

>>
>> Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
>> Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>
>> ---
>>  arch/arm/include/asm/psci.h | 10 +++++-----
>>  1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
>> index 128a606..a4a19e3 100644
>> --- a/arch/arm/include/asm/psci.h
>> +++ b/arch/arm/include/asm/psci.h
>> @@ -19,13 +19,13 @@
>>  #define __ARM_PSCI_H__
>>
>>  /* PSCI interface */
>> -#define ARM_PSCI_FN_BASE               0x95c1ba5e
>> +#define ARM_PSCI_FN_BASE               0x84000000
>>  #define ARM_PSCI_FN(n)                 (ARM_PSCI_FN_BASE + (n))
>>
>> -#define ARM_PSCI_FN_CPU_SUSPEND                ARM_PSCI_FN(0)
>> -#define ARM_PSCI_FN_CPU_OFF            ARM_PSCI_FN(1)
>> -#define ARM_PSCI_FN_CPU_ON             ARM_PSCI_FN(2)
>> -#define ARM_PSCI_FN_MIGRATE            ARM_PSCI_FN(3)
>> +#define ARM_PSCI_FN_CPU_SUSPEND                ARM_PSCI_FN(1)
>> +#define ARM_PSCI_FN_CPU_OFF            ARM_PSCI_FN(2)
>> +#define ARM_PSCI_FN_CPU_ON             ARM_PSCI_FN(3)
>> +#define ARM_PSCI_FN_MIGRATE            ARM_PSCI_FN(5)
>>
>>  #define ARM_PSCI_RET_SUCCESS           0
>>  #define ARM_PSCI_RET_NI                        (-1)
>> --
>> 2.1.4
>>
Chen-Yu Tsai May 19, 2016, 8:42 a.m. UTC | #4
On Thu, May 19, 2016 at 4:40 PM, Hongbo Zhang <macro.wave.z@gmail.com> wrote:
> On Wed, May 18, 2016 at 5:19 PM, Chen-Yu Tsai <wens@csie.org> wrote:
>> Hi,
>>
>> On Wed, May 18, 2016 at 5:10 PM,  <macro.wave.z@gmail.com> wrote:
>>> From: Wang Dongsheng <dongsheng.wang@nxp.com>
>>>
>>> According to PSCI specification v1.0, the PSCI functions should start from
>>> 0x84000000 for SMC32, this patch changes this base value as well as other
>>> function offset values.
>>
>> I think you should squash this into the PSCI v1.0 skeleton patch. Otherwise
>> between these 2 patches, we get a function ID and version mismatch?
>>
>> ChenYu
>>
>
> Thanks.
> But there won't be the mismatch you mentioned, because in v0.1 the
> function IDs are implementation defined, the can be set to any values,
> here we just make a step forward to adapt legacy v0.1 function IDs
> compatible with the coming v1.0.
>
> This patch is updating legacy ID definitions and the coming v1.0
> skeleton patch is to add new IDs, it is OK to separate them since
> there won't be mismatch you pointed, what's more we've already gotten
> the Reviewed-by: tag  :)

Great! Thanks for the explanation. I'm not that familiar with the PSCI
spec myself.

ChenYu

>>>
>>> Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
>>> Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>
>>> ---
>>>  arch/arm/include/asm/psci.h | 10 +++++-----
>>>  1 file changed, 5 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
>>> index 128a606..a4a19e3 100644
>>> --- a/arch/arm/include/asm/psci.h
>>> +++ b/arch/arm/include/asm/psci.h
>>> @@ -19,13 +19,13 @@
>>>  #define __ARM_PSCI_H__
>>>
>>>  /* PSCI interface */
>>> -#define ARM_PSCI_FN_BASE               0x95c1ba5e
>>> +#define ARM_PSCI_FN_BASE               0x84000000
>>>  #define ARM_PSCI_FN(n)                 (ARM_PSCI_FN_BASE + (n))
>>>
>>> -#define ARM_PSCI_FN_CPU_SUSPEND                ARM_PSCI_FN(0)
>>> -#define ARM_PSCI_FN_CPU_OFF            ARM_PSCI_FN(1)
>>> -#define ARM_PSCI_FN_CPU_ON             ARM_PSCI_FN(2)
>>> -#define ARM_PSCI_FN_MIGRATE            ARM_PSCI_FN(3)
>>> +#define ARM_PSCI_FN_CPU_SUSPEND                ARM_PSCI_FN(1)
>>> +#define ARM_PSCI_FN_CPU_OFF            ARM_PSCI_FN(2)
>>> +#define ARM_PSCI_FN_CPU_ON             ARM_PSCI_FN(3)
>>> +#define ARM_PSCI_FN_MIGRATE            ARM_PSCI_FN(5)
>>>
>>>  #define ARM_PSCI_RET_SUCCESS           0
>>>  #define ARM_PSCI_RET_NI                        (-1)
>>> --
>>> 2.1.4
>>>
macro.wave.z@gmail.com May 19, 2016, 8:45 a.m. UTC | #5
On Wed, May 18, 2016 at 6:07 PM, Andre Przywara <andre.przywara@arm.com> wrote:
> Hi,
>
> On 18/05/16 10:10, macro.wave.z@gmail.com wrote:
>> From: Wang Dongsheng <dongsheng.wang@nxp.com>
>>
>> According to PSCI specification v1.0, the PSCI functions should start from
>> 0x84000000 for SMC32, this patch changes this base value as well as other
>> function offset values.
>
> Out of curiosity: Do you plan to ever support ARMv8 boards with PSCI
> services in U-Boot as well?
> Then we would need to think about adjusting the function IDs, because
> they use a "64-bit" flag for some functions.
>
My workmate Hongtao Jia <hongtao.jia@nxp.com> is working for ARMv8 PSCI.
That should be in another separate file, so same or different function
names can both be used freely I think.

>> Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
>> Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>
>
> Otherwise:
> Reviewed-by: Andre Przywara <andre.przywara@arm.com>
>
Thanks for review.

>> ---
>>  arch/arm/include/asm/psci.h | 10 +++++-----
>>  1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
>> index 128a606..a4a19e3 100644
>> --- a/arch/arm/include/asm/psci.h
>> +++ b/arch/arm/include/asm/psci.h
>> @@ -19,13 +19,13 @@
>>  #define __ARM_PSCI_H__
>>
>>  /* PSCI interface */
>> -#define ARM_PSCI_FN_BASE             0x95c1ba5e
>> +#define ARM_PSCI_FN_BASE             0x84000000
>>  #define ARM_PSCI_FN(n)                       (ARM_PSCI_FN_BASE + (n))
>>
>> -#define ARM_PSCI_FN_CPU_SUSPEND              ARM_PSCI_FN(0)
>> -#define ARM_PSCI_FN_CPU_OFF          ARM_PSCI_FN(1)
>> -#define ARM_PSCI_FN_CPU_ON           ARM_PSCI_FN(2)
>> -#define ARM_PSCI_FN_MIGRATE          ARM_PSCI_FN(3)
>> +#define ARM_PSCI_FN_CPU_SUSPEND              ARM_PSCI_FN(1)
>> +#define ARM_PSCI_FN_CPU_OFF          ARM_PSCI_FN(2)
>> +#define ARM_PSCI_FN_CPU_ON           ARM_PSCI_FN(3)
>> +#define ARM_PSCI_FN_MIGRATE          ARM_PSCI_FN(5)
>>
>>  #define ARM_PSCI_RET_SUCCESS         0
>>  #define ARM_PSCI_RET_NI                      (-1)
>>
Andre Przywara May 19, 2016, 9:07 a.m. UTC | #6
Hi,

On 19/05/16 09:45, Hongbo Zhang wrote:
> On Wed, May 18, 2016 at 6:07 PM, Andre Przywara <andre.przywara@arm.com> wrote:
>> Hi,
>>
>> On 18/05/16 10:10, macro.wave.z@gmail.com wrote:
>>> From: Wang Dongsheng <dongsheng.wang@nxp.com>
>>>
>>> According to PSCI specification v1.0, the PSCI functions should start from
>>> 0x84000000 for SMC32, this patch changes this base value as well as other
>>> function offset values.
>>
>> Out of curiosity: Do you plan to ever support ARMv8 boards with PSCI
>> services in U-Boot as well?
>> Then we would need to think about adjusting the function IDs, because
>> they use a "64-bit" flag for some functions.
>>
> My workmate Hongtao Jia <hongtao.jia@nxp.com> is working for ARMv8 PSCI.
> That should be in another separate file, so same or different function
> names can both be used freely I think.

OK, let's see how this looks like. The offsets are the same, the prefix
is different, but not for every function - only for those that carry a
register-sized argument (CPU_OFF uses the 32-bit prefix, CPU_ON the
64-bit one, for instance).
That's why I was asking how we address this without duplicating
everything. But we can discuss this in the ARMv8 support thread.

Cheers,
Andre.

> 
>>> Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
>>> Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>
>>
>> Otherwise:
>> Reviewed-by: Andre Przywara <andre.przywara@arm.com>
>>
> Thanks for review.
> 
>>> ---
>>>  arch/arm/include/asm/psci.h | 10 +++++-----
>>>  1 file changed, 5 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
>>> index 128a606..a4a19e3 100644
>>> --- a/arch/arm/include/asm/psci.h
>>> +++ b/arch/arm/include/asm/psci.h
>>> @@ -19,13 +19,13 @@
>>>  #define __ARM_PSCI_H__
>>>
>>>  /* PSCI interface */
>>> -#define ARM_PSCI_FN_BASE             0x95c1ba5e
>>> +#define ARM_PSCI_FN_BASE             0x84000000
>>>  #define ARM_PSCI_FN(n)                       (ARM_PSCI_FN_BASE + (n))
>>>
>>> -#define ARM_PSCI_FN_CPU_SUSPEND              ARM_PSCI_FN(0)
>>> -#define ARM_PSCI_FN_CPU_OFF          ARM_PSCI_FN(1)
>>> -#define ARM_PSCI_FN_CPU_ON           ARM_PSCI_FN(2)
>>> -#define ARM_PSCI_FN_MIGRATE          ARM_PSCI_FN(3)
>>> +#define ARM_PSCI_FN_CPU_SUSPEND              ARM_PSCI_FN(1)
>>> +#define ARM_PSCI_FN_CPU_OFF          ARM_PSCI_FN(2)
>>> +#define ARM_PSCI_FN_CPU_ON           ARM_PSCI_FN(3)
>>> +#define ARM_PSCI_FN_MIGRATE          ARM_PSCI_FN(5)
>>>
>>>  #define ARM_PSCI_RET_SUCCESS         0
>>>  #define ARM_PSCI_RET_NI                      (-1)
>>>
>
macro.wave.z@gmail.com May 20, 2016, 11:26 a.m. UTC | #7
On Thu, May 19, 2016 at 5:07 PM, Andre Przywara <andre.przywara@arm.com> wrote:
> Hi,
>
> On 19/05/16 09:45, Hongbo Zhang wrote:
>> On Wed, May 18, 2016 at 6:07 PM, Andre Przywara <andre.przywara@arm.com> wrote:
>>> Hi,
>>>
>>> On 18/05/16 10:10, macro.wave.z@gmail.com wrote:
>>>> From: Wang Dongsheng <dongsheng.wang@nxp.com>
>>>>
>>>> According to PSCI specification v1.0, the PSCI functions should start from
>>>> 0x84000000 for SMC32, this patch changes this base value as well as other
>>>> function offset values.
>>>
>>> Out of curiosity: Do you plan to ever support ARMv8 boards with PSCI
>>> services in U-Boot as well?
>>> Then we would need to think about adjusting the function IDs, because
>>> they use a "64-bit" flag for some functions.
>>>
>> My workmate Hongtao Jia <hongtao.jia@nxp.com> is working for ARMv8 PSCI.
>> That should be in another separate file, so same or different function
>> names can both be used freely I think.
>
> OK, let's see how this looks like. The offsets are the same, the prefix
> is different, but not for every function - only for those that carry a
> register-sized argument (CPU_OFF uses the 32-bit prefix, CPU_ON the
> 64-bit one, for instance).
> That's why I was asking how we address this without duplicating
> everything. But we can discuss this in the ARMv8 support thread.
>

OK, I see, we can discuss that later for armv8.
And welcome to leave any comments for other patches in this serial.

Thanks.

> Cheers,
> Andre.
>
>>
>>>> Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
>>>> Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>
>>>
>>> Otherwise:
>>> Reviewed-by: Andre Przywara <andre.przywara@arm.com>
>>>
>> Thanks for review.
>>
>>>> ---
>>>>  arch/arm/include/asm/psci.h | 10 +++++-----
>>>>  1 file changed, 5 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
>>>> index 128a606..a4a19e3 100644
>>>> --- a/arch/arm/include/asm/psci.h
>>>> +++ b/arch/arm/include/asm/psci.h
>>>> @@ -19,13 +19,13 @@
>>>>  #define __ARM_PSCI_H__
>>>>
>>>>  /* PSCI interface */
>>>> -#define ARM_PSCI_FN_BASE             0x95c1ba5e
>>>> +#define ARM_PSCI_FN_BASE             0x84000000
>>>>  #define ARM_PSCI_FN(n)                       (ARM_PSCI_FN_BASE + (n))
>>>>
>>>> -#define ARM_PSCI_FN_CPU_SUSPEND              ARM_PSCI_FN(0)
>>>> -#define ARM_PSCI_FN_CPU_OFF          ARM_PSCI_FN(1)
>>>> -#define ARM_PSCI_FN_CPU_ON           ARM_PSCI_FN(2)
>>>> -#define ARM_PSCI_FN_MIGRATE          ARM_PSCI_FN(3)
>>>> +#define ARM_PSCI_FN_CPU_SUSPEND              ARM_PSCI_FN(1)
>>>> +#define ARM_PSCI_FN_CPU_OFF          ARM_PSCI_FN(2)
>>>> +#define ARM_PSCI_FN_CPU_ON           ARM_PSCI_FN(3)
>>>> +#define ARM_PSCI_FN_MIGRATE          ARM_PSCI_FN(5)
>>>>
>>>>  #define ARM_PSCI_RET_SUCCESS         0
>>>>  #define ARM_PSCI_RET_NI                      (-1)
>>>>
>>
Mark Rutland May 23, 2016, 3:54 p.m. UTC | #8
On Wed, May 18, 2016 at 05:10:24PM +0800, macro.wave.z@gmail.com wrote:
> From: Wang Dongsheng <dongsheng.wang@nxp.com>
> 
> According to PSCI specification v1.0, the PSCI functions should start from
> 0x84000000 for SMC32, this patch changes this base value as well as other
> function offset values.

I agree that these are the correct valeus for PSCI 0.2, and we must use
those IDs for PSCI 0.2+.

However, this code is also used on platforms using PSCI 0.1, which did
not have well-defined IDs, and relied on them being described in the DT.
I fear that this may have the unintended sonequence of breaking those.

Does U-Boot patch the DT with the correct IDs per the PSCI 0.1 binding?
If so, then things are fine.

Thanks,
Mark.

> Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
> Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>
> ---
>  arch/arm/include/asm/psci.h | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
> index 128a606..a4a19e3 100644
> --- a/arch/arm/include/asm/psci.h
> +++ b/arch/arm/include/asm/psci.h
> @@ -19,13 +19,13 @@
>  #define __ARM_PSCI_H__
>  
>  /* PSCI interface */
> -#define ARM_PSCI_FN_BASE		0x95c1ba5e
> +#define ARM_PSCI_FN_BASE		0x84000000
>  #define ARM_PSCI_FN(n)			(ARM_PSCI_FN_BASE + (n))
>  
> -#define ARM_PSCI_FN_CPU_SUSPEND		ARM_PSCI_FN(0)
> -#define ARM_PSCI_FN_CPU_OFF		ARM_PSCI_FN(1)
> -#define ARM_PSCI_FN_CPU_ON		ARM_PSCI_FN(2)
> -#define ARM_PSCI_FN_MIGRATE		ARM_PSCI_FN(3)
> +#define ARM_PSCI_FN_CPU_SUSPEND		ARM_PSCI_FN(1)
> +#define ARM_PSCI_FN_CPU_OFF		ARM_PSCI_FN(2)
> +#define ARM_PSCI_FN_CPU_ON		ARM_PSCI_FN(3)
> +#define ARM_PSCI_FN_MIGRATE		ARM_PSCI_FN(5)
>  
>  #define ARM_PSCI_RET_SUCCESS		0
>  #define ARM_PSCI_RET_NI			(-1)
> -- 
> 2.1.4
>
macro.wave.z@gmail.com May 24, 2016, 6:21 a.m. UTC | #9
On Mon, May 23, 2016 at 11:54 PM, Mark Rutland <mark.rutland@arm.com> wrote:
> On Wed, May 18, 2016 at 05:10:24PM +0800, macro.wave.z@gmail.com wrote:
>> From: Wang Dongsheng <dongsheng.wang@nxp.com>
>>
>> According to PSCI specification v1.0, the PSCI functions should start from
>> 0x84000000 for SMC32, this patch changes this base value as well as other
>> function offset values.
>
> I agree that these are the correct valeus for PSCI 0.2, and we must use
> those IDs for PSCI 0.2+.
>
> However, this code is also used on platforms using PSCI 0.1, which did
> not have well-defined IDs, and relied on them being described in the DT.
> I fear that this may have the unintended sonequence of breaking those.
>
> Does U-Boot patch the DT with the correct IDs per the PSCI 0.1 binding?
> If so, then things are fine.
>

Hi Mark,
See such a piece of code from virt_dt.c:
ret = fdt_setprop_u32(fdt, nodeoff, "cpu_on", PSCI_FN_CPU_ON);
The device tree nodes are created by u-boot, and the function IDs are
just what I've edited, so when function IDs are updated, device tree
nodes will be update simultaneously, so there should be no breaking
you mentioned.

In my later 7/11 patch, Andre  raised his comments about dt too, but
that is another thing.

> Thanks,
> Mark.
>
>> Signed-off-by: Wang Dongsheng <dongsheng.wang@nxp.com>
>> Signed-off-by: Hongbo Zhang <hongbo.zhang@nxp.com>
>> ---
>>  arch/arm/include/asm/psci.h | 10 +++++-----
>>  1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
>> index 128a606..a4a19e3 100644
>> --- a/arch/arm/include/asm/psci.h
>> +++ b/arch/arm/include/asm/psci.h
>> @@ -19,13 +19,13 @@
>>  #define __ARM_PSCI_H__
>>
>>  /* PSCI interface */
>> -#define ARM_PSCI_FN_BASE             0x95c1ba5e
>> +#define ARM_PSCI_FN_BASE             0x84000000
>>  #define ARM_PSCI_FN(n)                       (ARM_PSCI_FN_BASE + (n))
>>
>> -#define ARM_PSCI_FN_CPU_SUSPEND              ARM_PSCI_FN(0)
>> -#define ARM_PSCI_FN_CPU_OFF          ARM_PSCI_FN(1)
>> -#define ARM_PSCI_FN_CPU_ON           ARM_PSCI_FN(2)
>> -#define ARM_PSCI_FN_MIGRATE          ARM_PSCI_FN(3)
>> +#define ARM_PSCI_FN_CPU_SUSPEND              ARM_PSCI_FN(1)
>> +#define ARM_PSCI_FN_CPU_OFF          ARM_PSCI_FN(2)
>> +#define ARM_PSCI_FN_CPU_ON           ARM_PSCI_FN(3)
>> +#define ARM_PSCI_FN_MIGRATE          ARM_PSCI_FN(5)
>>
>>  #define ARM_PSCI_RET_SUCCESS         0
>>  #define ARM_PSCI_RET_NI                      (-1)
>> --
>> 2.1.4
>>
diff mbox

Patch

diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
index 128a606..a4a19e3 100644
--- a/arch/arm/include/asm/psci.h
+++ b/arch/arm/include/asm/psci.h
@@ -19,13 +19,13 @@ 
 #define __ARM_PSCI_H__
 
 /* PSCI interface */
-#define ARM_PSCI_FN_BASE		0x95c1ba5e
+#define ARM_PSCI_FN_BASE		0x84000000
 #define ARM_PSCI_FN(n)			(ARM_PSCI_FN_BASE + (n))
 
-#define ARM_PSCI_FN_CPU_SUSPEND		ARM_PSCI_FN(0)
-#define ARM_PSCI_FN_CPU_OFF		ARM_PSCI_FN(1)
-#define ARM_PSCI_FN_CPU_ON		ARM_PSCI_FN(2)
-#define ARM_PSCI_FN_MIGRATE		ARM_PSCI_FN(3)
+#define ARM_PSCI_FN_CPU_SUSPEND		ARM_PSCI_FN(1)
+#define ARM_PSCI_FN_CPU_OFF		ARM_PSCI_FN(2)
+#define ARM_PSCI_FN_CPU_ON		ARM_PSCI_FN(3)
+#define ARM_PSCI_FN_MIGRATE		ARM_PSCI_FN(5)
 
 #define ARM_PSCI_RET_SUCCESS		0
 #define ARM_PSCI_RET_NI			(-1)