[U-Boot] [PATCH v2 1/9] fdt_support: fdt reservations on the sandbox
Simon Glass
sjg at chromium.org
Tue Nov 13 21:35:57 UTC 2018
Hi,
On 13 November 2018 at 12:39, Alexander Graf <agraf at suse.de> wrote:
>
>
> On 12.11.18 18:55, Heinrich Schuchardt wrote:
>> On the sandbox the memory addresses in the device tree refer to the virtual
>> address space of the sandbox. This implies that the memory reservations for
>> the fdt also have to be converted to this address space.
>>
>> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
>> ---
>> v2:
>> no change
>> ---
>> common/fdt_support.c | 7 +++++--
>> 1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/common/fdt_support.c b/common/fdt_support.c
>> index e6daa67990d..ec6af92dbba 100644
>> --- a/common/fdt_support.c
>> +++ b/common/fdt_support.c
>> @@ -7,6 +7,7 @@
>> */
>>
>> #include <common.h>
>> +#include <mapmem.h>
>> #include <stdio_dev.h>
>> #include <linux/ctype.h>
>> #include <linux/types.h>
>> @@ -240,7 +241,8 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end)
>> }
>> }
>>
>> - err = fdt_add_mem_rsv(fdt, initrd_start, initrd_end - initrd_start);
>> + err = fdt_add_mem_rsv((void *)(uintptr_t)map_to_sysmem(fdt),
>
> This sounds like an API bug to me. Either fdt_add_mem_rsv() takes an
> address (ulong) or a pointer (void*). But taking void * while expecting
> an address to get passed in sounds pretty broken to me.
Yes that can't be right. If it, we need to change the first param of
fdt_initrd() to a ulong and adjust.
We should use addresses in U-Boot code, not pointers.
We should use addresses in U-Boot code, not pointers.
We should use addresses in U-Boot code, not pointers.
It avoids so much confusion.
Regards,
Simon
>
> Simon?
>
>
> Alex
>
>> + initrd_start, initrd_end - initrd_start);
>> if (err < 0) {
>> printf("fdt_initrd: %s\n", fdt_strerror(err));
>> return err;
>> @@ -633,7 +635,8 @@ int fdt_shrink_to_minimum(void *blob, uint extrasize)
>> fdt_set_totalsize(blob, actualsize);
>>
>> /* Add the new reservation */
>> - ret = fdt_add_mem_rsv(blob, (uintptr_t)blob, actualsize);
>> + ret = fdt_add_mem_rsv((void *)(uintptr_t)map_to_sysmem(blob),
>> + (uintptr_t)blob, actualsize);
>> if (ret < 0)
>> return ret;
>>
>>
More information about the U-Boot
mailing list