[U-Boot] [u-boot] [PATCH] arm: sleep: Get the entry point of kernel from SPARE4 register

Scott Wood scott.wood at nxp.com
Thu Apr 7 18:08:37 CEST 2016


On 04/07/2016 04:11 AM, Huan Wang wrote:
> Hi, Scott,
> 
>> On 04/05/2016 09:16 PM, Huan Wang wrote:
>>> Hi, York and Scott,
>>>
>>>> On 04/05/2016 05:11 AM, Alison Wang wrote:
>>>>> For LS1021A Secure Boot, SPARE2 register is used and modified by the
>>>>> IBR. To avoid the conflict, SPARE4 is used instead of SPARE2 to
>>>>> store the entry point of kernel. This patch is to get the entry
>>>>> point of kernel from SPARE4 instead of SPARE2.
>>>>>
>>>>> Signed-off-by: Alison Wang <alison.wang at nxp.com>
>>>>> ---
>>>>>  board/freescale/common/arm_sleep.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/board/freescale/common/arm_sleep.c
>>>>> b/board/freescale/common/arm_sleep.c
>>>>> index 71ed15e..6d967f0 100644
>>>>> --- a/board/freescale/common/arm_sleep.c
>>>>> +++ b/board/freescale/common/arm_sleep.c
>>>>> @@ -88,7 +88,7 @@ int fsl_dp_resume(void)
>>>>>  	dp_resume_prepare();
>>>>>
>>>>>  	/* Get the entry address and jump to kernel */
>>>>> -	start_addr = in_le32(&scfg->sparecr[1]);
>>>>> +	start_addr = in_le32(&scfg->sparecr[3]);
>>>>>  	debug("Entry address is 0x%08x\n", start_addr);
>>>>>  	kernel_resume = (void (*)(void))start_addr;
>>>>>  	secure_ram_addr(_do_nonsec_entry)(kernel_resume, 0, 0, 0);
>>>>>
>>>> Alison,
>>>>
>>>> Does this change need to be in sync with Kernel change?
>>>>
>>>> York
>>>>
>>>> Where does this get written?
>>>>
>>>> -Scott
>>> [Alison Wang] Thanks for your replies. Your concerns are right.
>>> SPARE4 register needs to be written in kernel.
>>>
>>> This is an issue about deep sleep in LS1021A Secure Boot. It is found
>>> in SDK2.0. The corresponding patch for kernel is sent in SDK2.0.
>>>
>>> Well, deep sleep uses an old way in SDK2.0. For upstream, deep sleep
>>> patches haven't been sent out as it will use PSCI and there are some
>>> issues about PSCI. So the corresponding patch for kernel can't be sent
>>> out now.
>>
>> It's not about when the patch is sent.  It's about managing
>> compatibility.  There needs to be some way to communicate what the
>> expectations are between Linux and U-Boot, or to limit the change to
>> chips where this feature has never worked before.  We can't introduce
>> regressions when the kernel is updated but not U-Boot, and regressions
>> when U-Boot is updated but not the kernel are almost as bad.
>>
>> -Scott
> [Alison Wang] Thanks for your advice. What you said is right. I will give up
> this patch in upstream now. Later, when the deep sleep patches for kernel is
> ready, I will fix the issue in U-Boot and kernel simultaneously. So there isn't
> any problem about the compatibility between U-Boot and kernel.

Please reread what I wrote.  Fixing them simultaneously doesn't solve
the problem because there's no guarantee that users update
simultaneously.  For a particularly bad example, consider someone
bisecting the kernel.  It would be terrible to require that the boot
firmware be reflashed every time the kernel crosses this boundary.

-Scott



More information about the U-Boot mailing list