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",
|
.name = "ANDROID",
|
||||||
.flags = M_ATTR_OFC,
|
.flags = M_ATTR_OFC,
|
||||||
},
|
},
|
||||||
|
[MEMBLK_ID_AVB_ANDROID] = {
|
||||||
|
.name = "AVB_ANDROID",
|
||||||
|
.flags = M_ATTR_OFC,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct memblk_attr *mem_attr = plat_mem_attr;
|
const struct memblk_attr *mem_attr = plat_mem_attr;
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ enum memblk_id {
|
||||||
MEMBLK_ID_FDT_AOSP,
|
MEMBLK_ID_FDT_AOSP,
|
||||||
MEMBLK_ID_KERNEL,
|
MEMBLK_ID_KERNEL,
|
||||||
MEMBLK_ID_ANDROID,
|
MEMBLK_ID_ANDROID,
|
||||||
|
MEMBLK_ID_AVB_ANDROID,
|
||||||
|
|
||||||
/* Other */
|
/* Other */
|
||||||
MEMBLK_ID_BY_NAME,
|
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) {
|
} else if (id > MEMBLK_ID_UNK && id < MEMBLK_ID_MAX) {
|
||||||
attr = mem_attr[id];
|
attr = mem_attr[id];
|
||||||
name = attr.name;
|
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 {
|
} else {
|
||||||
SYSMEM_E("Unsupport memblk id %d for alloc sysmem\n", id);
|
SYSMEM_E("Unsupport memblk id %d for alloc sysmem\n", id);
|
||||||
goto out;
|
goto out;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue