lib: sysmem: support avb android memblk sysmem alloc
Because avb android image usually needs a large memory buffer, always alloc avb android memblk right after U-Boot stack is a better choice to avoid memblk overlap with others. Since we have overflow protect magic for U-Boot stack, so we add a pad(4KB) between them. Change-Id: I72655d022f7e82f1ed9fbb381424d04bc86ccf6a Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
This commit is contained in:
parent
dcb404a677
commit
f6e1530165
|
|
@ -61,6 +61,10 @@ const static struct memblk_attr plat_mem_attr[MEMBLK_ID_MAX] = {
|
|||
.name = "ANDROID",
|
||||
.flags = M_ATTR_OFC,
|
||||
},
|
||||
[MEMBLK_ID_AVB_ANDROID] = {
|
||||
.name = "AVB_ANDROID",
|
||||
.flags = M_ATTR_OFC,
|
||||
},
|
||||
};
|
||||
|
||||
const struct memblk_attr *mem_attr = plat_mem_attr;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ enum memblk_id {
|
|||
MEMBLK_ID_FDT_AOSP,
|
||||
MEMBLK_ID_KERNEL,
|
||||
MEMBLK_ID_ANDROID,
|
||||
MEMBLK_ID_AVB_ANDROID,
|
||||
|
||||
/* Other */
|
||||
MEMBLK_ID_BY_NAME,
|
||||
|
|
|
|||
|
|
@ -245,6 +245,15 @@ static void *sysmem_alloc_align_base(enum memblk_id id,
|
|||
} else if (id > MEMBLK_ID_UNK && id < MEMBLK_ID_MAX) {
|
||||
attr = mem_attr[id];
|
||||
name = attr.name;
|
||||
|
||||
/*
|
||||
* Fixup base and place right after U-Boot stack, adding a lot
|
||||
* of space(4KB) maybe safer.
|
||||
*/
|
||||
if ((id == MEMBLK_ID_AVB_ANDROID) &&
|
||||
(base == SYSMEM_ALLOC_ANYWHERE))
|
||||
base = gd->start_addr_sp -
|
||||
CONFIG_SYS_STACK_SIZE - size - 0x1000;
|
||||
} else {
|
||||
SYSMEM_E("Unsupport memblk id %d for alloc sysmem\n", id);
|
||||
goto out;
|
||||
|
|
|
|||
Loading…
Reference in New Issue