[U-Boot] [PATCH 2/3] arm/PSCI: Fixed the backward compatiblity issue
york sun
york.sun at nxp.com
Mon Aug 1 18:10:23 CEST 2016
On 07/31/2016 08:20 PM, Zhiqiang Hou wrote:
> Hi York,
>
> Thanks for your comments!
>
>> -----Original Message-----
>> From: york sun
>> Sent: 2016年7月29日 23:37
>> To: Zhiqiang Hou <zhiqiang.hou at nxp.com>; u-boot at lists.denx.de;
>> albert.u.boot at aribaud.net; hdegoede at redhat.com; wens at csie.org; Hongbo
>> Zhang <hongbo.zhang at nxp.com>; b.galvani at gmail.com
>> Subject: Re: [PATCH 2/3] arm/PSCI: Fixed the backward compatiblity issue
>>
>> On 07/29/2016 03:37 AM, Zhiqiang Hou wrote:
>>> From: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
>>>
>>> Appended the compatible strings of old version PSCI to the latest
>>> version supported. And there are some psci functions' property must be
>>> added to DT only for psci version 0.1, such as 'cpu_on' 'cpu_off' etc.
>>>
>>> Note:
>>> The PSCI version 0.1 isn't supported by ARMv8 Secure Firmware Framework.
>>>
>>> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
>>> ---
>>
>> You missed version number and change log.
>
> Should the previous Secure Firmware Framework patchset need to be resubmitted? And the version number follow the that patchset?
Zhiqiang,
When you send a new version, reviewers are expecting updated version
number and a change log. This helps us tracking what has been changed.
All patches in the same set should be updated. If a patch has not
change, a simple "no change" helps. If any dependency has
changed/updated, please update the note as well.
>
>>> arch/arm/include/asm/psci.h | 3 +++
>>> arch/arm/lib/psci-dt.c | 61
>> ++++++++++++++++++++++++++-------------------
>>> 2 files changed, 38 insertions(+), 26 deletions(-)
>>>
>>> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
>>> index 8aefaa7..5b8ce4d 100644
>>> --- a/arch/arm/include/asm/psci.h
>>> +++ b/arch/arm/include/asm/psci.h
>>> @@ -18,6 +18,9 @@
>>> #ifndef __ARM_PSCI_H__
>>> #define __ARM_PSCI_H__
>>>
>>> +#define ARM_PSCI_VER_1_0 (0x00010000)
>>> +#define ARM_PSCI_VER_0_2 (0x00000002)
>>> +
>>> /* PSCI 0.1 interface */
>>> #define ARM_PSCI_FN_BASE 0x95c1ba5e
>>> #define ARM_PSCI_FN(n) (ARM_PSCI_FN_BASE + (n))
>>> diff --git a/arch/arm/lib/psci-dt.c b/arch/arm/lib/psci-dt.c index
>>> bcd92e7..af49c24 100644
>>> --- a/arch/arm/lib/psci-dt.c
>>> +++ b/arch/arm/lib/psci-dt.c
>>> @@ -19,7 +19,6 @@ int fdt_psci(void *fdt) #if
>>> defined(CONFIG_ARMV8_PSCI) || defined(CONFIG_ARMV7_PSCI)
>>> int nodeoff;
>>> unsigned int psci_ver = 0;
>>> - char *psci_compt;
>>> int tmp;
>>>
>>> nodeoff = fdt_path_offset(fdt, "/cpus"); @@ -68,39 +67,49 @@
>>> init_psci_node:
>>> psci_ver = sec_firmware_support_psci_version();
>>> #endif
>>> switch (psci_ver) {
>>> - case 0x00010000:
>>> - psci_compt = "arm,psci-1.0";
>>> - break;
>>> - case 0x00000002:
>>> - psci_compt = "arm,psci-0.2";
>>> - break;
>>> + case ARM_PSCI_VER_1_0:
>>> + tmp = fdt_setprop_string(fdt, nodeoff,
>>> + "compatible", "arm,psci-1.0");
>>> + if (tmp)
>>> + return tmp;
>>
>> Add a comment "fall through".
>>
>
> Yes, will add the comment.
> []
>>> + case ARM_PSCI_VER_0_2:
>>> + tmp = fdt_appendprop_string(fdt, nodeoff,
>>> + "compatible", "arm,psci-0.2");
>>> + if (tmp)
>>> + return tmp;
>>
>> Add a comment "fall through".
>>
>>> default:
>>> - psci_compt = "arm,psci";
>>> + /*
>>> + * The Secure firmware framework isn't able to support PSCI version 0.1.
>>> + */
>>> +#ifndef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
>>> + tmp = fdt_appendprop_string(fdt, nodeoff,
>>> + "compatible", "arm,psci");
>>> + if (tmp)
>>> + return tmp;
>>> + tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_suspend",
>>> + ARM_PSCI_FN_CPU_SUSPEND);
>>> + if (tmp)
>>> + return tmp;
>>> + tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_off",
>>> + ARM_PSCI_FN_CPU_OFF);
>>> + if (tmp)
>>> + return tmp;
>>> + tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_on",
>>> + ARM_PSCI_FN_CPU_ON);
>>> + if (tmp)
>>> + return tmp;
>>> + tmp = fdt_setprop_u32(fdt, nodeoff, "migrate",
>>> + ARM_PSCI_FN_MIGRATE);
>>> + if (tmp)
>>> + return tmp;
>>
>> This may not be a real concern, but I am curious what would happen if one of
>> the above fdt_setprop_u32 fails? Would it be better to set "arm,psci" last?
>
> Trend to add the error check to prevent the unexpected issue. Is there benefit to set the "arm,psci" last?
I just guessed without "arm,psci" node, kernel wouldn't look for
"cpu_on", "cpu_off" node. I could be wrong.
York
More information about the U-Boot
mailing list