Re: [PATCH 10/10] arm: imx: imx8m: Add basic PSCI provider implementation

Marek Vasut
2023-01-03T10:09:34Z

On 1/3/23 02:05, Adam Ford wrote:
> On Mon, Jan 2, 2023 at 5:58 PM Marek Vasut <marex@denx.de> wrote:
>>
>> On 1/3/23 00:47, Adam Ford wrote:
>>> On Mon, Jan 2, 2023 at 5:41 PM Marek Vasut <marex@denx.de> wrote:
>>>>
>>>> On 1/2/23 17:44, Adam Ford wrote:
>>>>> On Wed, Dec 21, 2022 at 9:58 PM Marek Vasut <marex@denx.de> wrote:
>>>>>>
>>>>>> On 12/22/22 04:05, Adam Ford wrote:
>>>>>>> On Wed, Dec 21, 2022 at 6:47 PM Marek Vasut <marex@denx.de> wrote:
>>>>>>>>
>>>>>>>> Implement basic PSCI provider to let OS turn CPU cores off and on,
>>>>>>>> power off and restart the system and determine PSCI version. This
>>>>>>>> is sufficient to remove the need for the ATF BL31 blob altogether.
>>>>>>>>
>>>>>>>> To make use of this functionality, active the following Kconfig options:
>>>>>>>> # CONFIG_PSCI_RESET is not set
>>>>>>>> CONFIG_ARMV8_MULTIENTRY=y
>>>>>>>> CONFIG_ARMV8_SET_SMPEN=y
>>>>>>>> CONFIG_ARMV8_SPL_EXCEPTION_VECTORS=y
>>>>>>>> CONFIG_ARMV8_EA_EL3_FIRST=y
>>>>>>>> CONFIG_ARMV8_PSCI=y
>>>>>>>> CONFIG_ARMV8_PSCI_CPUS_PER_CLUSTER=4
>>>>>>>> CONFIG_ARMV8_SECURE_BASE=0x970000
>>>>>>>
>>>>>>> I am guessing 0x970000 was for the 8MP based on the previous location
>>>>>>> of ATF. Is that true? If that's the case, can I assume that this
>>>>>>> address would be 0x910000, 0x920000 and 0x960000 for the imx8mq,
>>>>>>> imx8mm and imx8mn respectively?
>>>>>>
>>>>>> It was for MX8MP, but you can pick whichever address you want, since it
>>>>>> is U-Boot that installs the SMC handlers, you are no longer forced to
>>>>>> somehow try and accommodate custom not well fitting load address picked
>>>>>> by some 3rd party binary blob.
>>>>>
>>>>> I patched U-Boot's master with this series and I tried it on
>>>>> imx8mn_beacon and imx8mm_beacon without success. I never even saw the
>>>>> SPL message. I tried to focus on the Nano since the boot ROM in that
>>>>> one is more similar to that of the 8mp, but the behaviour was similar
>>>>> to that of the Nano. Are there any dependencies or should I have used
>>>>> a specific starting branch?
>>>>
>>>> Nope . But if you don't even see output from SPL, that's where I would
>>>> start looking. Do you see output from SPL without this series ? Note
>>>> that bulk of this series content applies to U-Boot proper, not SPL so far.
>>>
>>> Without the patch series the generated flash.bin file booted both the
>>> Mini and the Nano just fine. I have a pending 8m plus that I can also
>>> try, since that is what you used. I just wanted to make sure I was
>>> starting from the right place before I went too far with it.
>>
>> Try and drop
>>
>> [PATCH 09/10] arm: imx: imx8m: Program CSU and TZASC if PSCI provider
>>
>> does SPL start then ?
>
> I reverted 9/19 without success either. I'll try to do a git bisect
> to see if I can narrow it down. I might see if my employer will let
> me borrow a debugger. Debugging SPL is a bit challenging due to the
> relocation step, but I am not convinced I am geting that far since I
> get no text output at all.

Hmmmmm, did you tweak the CONFIG_ARMV8_SECURE_BASE ? Are you sure your
setting is within valid OCRAM address range ? I think the MX8MN OCRAM is
smaller than the MX8MP one, but I might be wrong.

Bisect looks like the best option now. You can start by scrubbing the
custom config options and see if the result still boots with the blob
bl31.bin . If it does, it is somehow related to the newly enabled code.
It has to be related to something very early though, something which is
triggered before the UART init. Do you use DM_SERIAL in SPL ?

>> I plan to try this on Nano at some point this month too.
>
> I'll let you know my findings when I get some more time to test this.

Thanks