[U-Boot] Crash in U-Boot

Alexander Graf agraf at csgraf.de
Mon Jun 24 05:56:17 UTC 2019



> Am 24.06.2019 um 00:01 schrieb Ard Biesheuvel <ard.biesheuvel at linaro.org>:
> 
>> On Sun, 23 Jun 2019 at 23:47, Alexander Graf <agraf at csgraf.de> wrote:
>> 
>> 
>> 
>>> Am 23.06.2019 um 17:08 schrieb Heinrich Schuchardt <xypron.glpk at gmx.de>:
>>> 
>>> Hello Alex,
>>> 
>>> on the i.MX6 Wandboard the Kernel crashes when booting via GRUB at least
>>> since U-Boot v2019.01. See below.
>>> 
>>> In the code for SetVirtualAddressMap I saw the that the pointer to the
>>> list of configuration tables is adjusted:
>>> 
>>>        if ((map_start <= (uintptr_t)systab.tables) &&
>>>            (map_end >= (uintptr_t)systab.tables)) {
>>>                char *ptr = (char *)systab.tables;
>>>                ptr += off;
>>>                systab.tables = (struct efi_configuration_table *)ptr;
>>>        }
>>> 
>>> Shouldn't the pointers to the individual configuration tables be
>>> adjusted too? I found no such code.
>> 
>> We have to adapt the systable, because RT code may use it. However, I thought tables are not guaranteed to be around after SVAM? Ard?
>> 
> 
> Only the system table pointers are updated for virtual remapping. I'm
> not entirely sure why, but this permits the runtime firmware
> components themselves to access the array. However, runtime firmware
> typically has no way to translate a physical address into a virtual
> address, so if they need to access such tables, they have to grab the
> address *before* SVAM(), which means it doesn't matter whether the
> config table array point is translated as well.
> 
>> I tend to agree that in that case, adjusting the table pointer does not sound very useful either. Can we legally just set the table count to 0 there?
>> 
> 
> No. The OS expects to be able to locate config tables, and the OS
> itself does not care about runtime remapping.
> 
>> If however they are indeed legal to access via virtual addresses afterwards, I do agree that we should patch the individual table pointers too, yes.
>> 
>> 
> 
> Please don't do the sane thing. Where's the fun in that? :-)

I keep forgetting that we talk UEFI here ;). So the status quo is correct? Or do we have to drop the relocation part for the table array pointer?

Alex




More information about the U-Boot mailing list