[PATCH v2 0/3] Ethernet support for Raspberry Pi 4

André Przywara andre.przywara at arm.com
Mon Jan 27 02:20:30 CET 2020


On 26/01/2020 02:28, Matthias Brugger wrote:
> On 24/01/2020 01:26, André Przywara wrote:

[ ... ]

>> Found the culprit, after following a lead started by an over-lunch
>> discussion: Colleagues pointed out the SError (interrupts) early in the
>> kernel could just show because they just got unmasked when dropping into
>> EL1. And indeed in AArch64 U-Boot we keep Aborts masked - we don't clear
>> the A bit in DAIF normally (only for Freescale).
>> So allowing SError exceptions in U-Boot's start.S revealed that the
>> SError interrupt was actually triggered by the writel in write_hwaddr(),
>> I guess because the MAC wasn't reset before. And the SError condition
>> stayed pending all the time, until the kernel announced its interest in
>> being told about fatal errors - then it inherited U-Boot's error.
> 
> Thanks for the explanation. I think the situation leaves space for improving.
> Either should we warn about a pending Abort before leaving U-Boot or we should
> allow aborts in general.

Definitively we should unmasks SErrors in U-Boot, since they point us to
serious problems, with this one here actually being somewhat on the
harmless side. Also U-Boot has exception handlers that dump useful
information, so we should use them.

But doing so would need to be done for all ARMv8 ports (in start.S), so
I am a bit reluctant to post something this late in the merge window
without proper testing on multiple platforms.

>> So for me the issue is fixed after adding the reset routine I sketched
>> in that thread before.
>>
>> But you mentioned that it still didn't work for you?
>>
> 
> I just double checked and everything works fine. Please feel free to send a new
> version :)

Great, thanks! Did just that.

Cheers,
Andre


More information about the U-Boot mailing list