[U-Boot] [PATCH] arm: socfpga: control reboot from SRAM via env callback
Marek Vasut
marex at denx.de
Mon May 6 21:12:31 UTC 2019
On 5/6/19 9:50 PM, Simon Goldschmidt wrote:
> Am 06.05.2019 um 00:51 schrieb Marek Vasut:
>> On 5/5/19 10:21 PM, Simon Goldschmidt wrote:
>>> Am 05.05.2019 um 22:17 schrieb Marek Vasut:
>>>> On 5/5/19 8:05 AM, Simon Goldschmidt wrote:
>>>>>
>>>>>
>>>>> On 05.05.19 03:42, Marek Vasut wrote:
>>>>>> On 5/4/19 9:10 PM, Simon Goldschmidt wrote:
>>>>>>> Am 04.05.2019 um 20:43 schrieb Marek Vasut:
>>>>>>>> On 5/3/19 10:53 PM, Simon Goldschmidt wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Marek Vasut <marex at denx.de <mailto:marex at denx.de>> schrieb am
>>>>>>>>> Fr., 3.
>>>>>>>>> Mai 2019, 22:42:
>>>>>>>>>
>>>>>>>>> On 5/3/19 10:39 PM, Simon Goldschmidt wrote:
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> > On 03.05.19 22:35, Marek Vasut wrote:
>>>>>>>>> >> On 5/3/19 10:30 PM, Simon Goldschmidt wrote:
>>>>>>>>> >>>
>>>>>>>>> >>>
>>>>>>>>> >>> On 03.05.19 22:28, Marek Vasut wrote:
>>>>>>>>> >>>> On 5/3/19 10:08 PM, Simon Goldschmidt wrote:
>>>>>>>>> >>>>> This moves the code that enables the Boot ROM to
>>>>>>>>> just jump
>>>>>>>>> to SRAM
>>>>>>>>> >>>>> instead
>>>>>>>>> >>>>> of loading SPL from the original boot source on warm
>>>>>>>>> reboot.
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> Instead of always enabling this, an environment
>>>>>>>>> callback
>>>>>>>>> for the
>>>>>>>>> >>>>> env var
>>>>>>>>> >>>>> "socfpga_reboot_from_sram" is used. This way, the
>>>>>>>>> behaviour can be
>>>>>>>>> >>>>> enabled
>>>>>>>>> >>>>> at runtime and via saved environment.
>>>>>>>>> >>>>>
>>>>>>>>> >>>>> Signed-off-by: Simon Goldschmidt
>>>>>>>>> <simon.k.r.goldschmidt at gmail.com
>>>>>>>>> <mailto:simon.k.r.goldschmidt at gmail.com>>
>>>>>>>>> >>>>
>>>>>>>>> >>>> Would that be like a default "reset" command action ?
>>>>>>>>> >>>> This probably shouldn't be socfpga specific then.
>>>>>>>>> >>>
>>>>>>>>> >>> No, it's a thing that lives on and influences even the
>>>>>>>>> soft
>>>>>>>>> reset issued
>>>>>>>>> >>> by linux "reboot" command. This is something *very*
>>>>>>>>> socfpga
>>>>>>>>> specific.
>>>>>>>>> >>
>>>>>>>>> >> Hmmm, so isn't this a policy to be configured on the
>>>>>>>>> Linux
>>>>>>>>> end ?
>>>>>>>>> >
>>>>>>>>> > Might be, but it affects U-Boot's 'reset' command as
>>>>>>>>> well. And
>>>>>>>>> I guess
>>>>>>>>> > it's set up in U-Boot this early to ensure it always
>>>>>>>>> works.
>>>>>>>>>
>>>>>>>>> Drat, that's right. So there has to be some way to
>>>>>>>>> agree on
>>>>>>>>> how the
>>>>>>>>> reset works between the kernel and U-Boot ?
>>>>>>>>>
>>>>>>>>> > If it were for me, we could drop writing this magic
>>>>>>>>> altogether. I just
>>>>>>>>> > figured some boards might require it to be written
>>>>>>>>> somewhere,
>>>>>>>>> and came
>>>>>>>>> > up with a patch that might save those boards with the
>>>>>>>>> way
>>>>>>>>> it was
>>>>>>>>> before.
>>>>>>>>>
>>>>>>>>> Isn't this magic actually used by bootrom ?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Right. It tells the boot rom to jump to ocram on next reboot
>>>>>>>>> instead of
>>>>>>>>> loading spl from qspi or mmc. But if that's required or not a good
>>>>>>>>> idea
>>>>>>>>> at all depends on many factors. Some of them board related, some
>>>>>>>>> U-Boot
>>>>>>>>> related and some Linux related (depending on the hardware and
>>>>>>>>> drivers
>>>>>>>>> used).
>>>>>>>>
>>>>>>>> Should that be runtime configurable then ?
>>>>>>>
>>>>>>> Since it might depend on Linux putting the qspi chip into a state
>>>>>>> where
>>>>>>> it's not accessible by the boot ROM. That might change without
>>>>>>> rebuilding U-Boot.
>>>>>>
>>>>>> If Linux switches the chip into some weird mode the bootrom cannot
>>>>>> cope
>>>>>> with, it's a reset routing problem. This cannot be fixed in software.
>>>>>
>>>>> No, it cannot be fixed, but currently there's a workaround for those
>>>>> boards and I thought it was worth to keep this workaround, even though
>>>>> my own boards will be fixed and not require such a workaround in the
>>>>> future :-)
>>>>
>>>> What's the workaround ?
>>>
>>> The workaround is what this patch is about: the Boot ROM just branches
>>> off to SRAM where it expectes SPL to be still working.
>>
>> But you still cannot communicate with the SPI NOR from your SPL ?
>
> Well, in most "every day reboot" cases, you can. Just reset BAR or
> 4-byte mode.
"In most" reads as "it's unreliable".
>>> SPL can then e.g. reset 4-byte mode or whatever to still communicate
>>> with the device when Boot ROM can't.
>>
>> Unless, of course, the SPI NOR doesn't interpret the command as data and
>> corrupts something in the flash itself.
>
> Right, in this case, you can't.
>
> Don't get me wrong, I'm not arguing for this to be totally right, of
> course I'd rahter get the boards fixed.
>
> I'm just trying to find a way to keep this code in for people depending
> on it. I know we have some broken boards that depend on it. I could live
> with writing this magic in our private board code, but it's a bummer for
> other people upgrading if we removed it...
Put it in a board file with BIG FAT WARNING that it's wrong ?
--
Best regards,
Marek Vasut
More information about the U-Boot
mailing list