| #
e9237ab5 |
| 17-Mar-2022 |
Joseph Chen <chenjh@rock-chips.com> |
lib: sysmem: Support alloc temporary memory
Always alloc from available top address and ensure 1KB align.
Signed-off-by: Joseph Chen <chenjh@rock-chips.com> Change-Id: I18241ca6f63122ada2f17487938a
lib: sysmem: Support alloc temporary memory
Always alloc from available top address and ensure 1KB align.
Signed-off-by: Joseph Chen <chenjh@rock-chips.com> Change-Id: I18241ca6f63122ada2f17487938aa6a064b870ba
show more ...
|
| #
f3ff8d72 |
| 19-May-2020 |
Joseph Chen <chenjh@rock-chips.com> |
sysmem: fix compile error
Error msg: multiple definition of `sysmem_overflow_check'.
Signed-off-by: Joseph Chen <chenjh@rock-chips.com> Change-Id: I46de1ef35f2decfab7412c415b7f734e3459e5d9
|
| #
acffe332 |
| 22-Jul-2019 |
Joseph Chen <chenjh@rock-chips.com> |
lib: sysmem: add sysmem_alloc_by_name() interface
Change-Id: I9e2fd6d99fdc487396dd9619dc54567bcd2ba242 Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
|
| #
50226c8f |
| 15-Jul-2019 |
Joseph Chen <chenjh@rock-chips.com> |
lib: sysmem: optimise alloc policy
- Allow request region alloc within the first invisiable region reserved by bidram when request region has flags M_ATTR_IGNORE_INVISIBLE. This is a workaround
lib: sysmem: optimise alloc policy
- Allow request region alloc within the first invisiable region reserved by bidram when request region has flags M_ATTR_IGNORE_INVISIBLE. This is a workaround for some firmware memory layout, eg: on RK3308-AArch32, the ATF region is 0~1M(same as RK3308-AArch64), but the kernel would like to alloc at 0x00058000.
- Always make kernel reserved-memory alloc successfully and check overlap with invisible and sysmem allocated regions in sysmem_overflow_check() before bootm. This makes alloc policy more easier.
Change-Id: I533c710a6e69bd930befda441b9ec64415e3f408 Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
show more ...
|
| #
2c66f6f3 |
| 25-Jun-2019 |
Joseph Chen <chenjh@rock-chips.com> |
lib: sysmem: add sysmem overflow check support
Change-Id: Ifcb6e8cd59656b133f56115d104a1bba017c7c1b Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
|
| #
3bee194f |
| 07-May-2019 |
Joseph Chen <chenjh@rock-chips.com> |
lib: sysmem: add sysmem_can_alloc() interface
Check if the region can be sysmem allocated.
Change-Id: I26a524c1597bee65ab1282da5ec373b9603866ba Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
|
| #
dcb404a6 |
| 07-May-2019 |
Joseph Chen <chenjh@rock-chips.com> |
lib: sysmem: add sysmem_alloc() interface
Change-Id: I3ae1fe618ba1bb9c7924bb9816884eb26927dc1e Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
|
| #
6e15146e |
| 14-Mar-2019 |
Joseph Chen <chenjh@rock-chips.com> |
lib: sysmem: refactor code
- import memblk id to manage memory blocks; - change "sysmem_property" to generic "memblock"; - use alloc instead of reserve for all memory blocks; - clean up and fix some
lib: sysmem: refactor code
- import memblk id to manage memory blocks; - change "sysmem_property" to generic "memblock"; - use alloc instead of reserve for all memory blocks; - clean up and fix some logic; - add U-Boot cmd for sysmem;
Change-Id: I614223ce3bf97a7b3566412a9d1864fb30b68fd8 Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
show more ...
|
| #
2c9d1179 |
| 29-Jan-2019 |
Joseph Chen <chenjh@rock-chips.com> |
sysmem: fdt: reserve more CONFIG_SYS_FDT_PAD size for fdt
Sometimes, framework or user would call fdt_increase_size() to update fdt size, it's better reserve more space to avoid sysmem gives the fdt
sysmem: fdt: reserve more CONFIG_SYS_FDT_PAD size for fdt
Sometimes, framework or user would call fdt_increase_size() to update fdt size, it's better reserve more space to avoid sysmem gives the fdt region overflow report.
The CONFIG_SYS_FDT_PAD default value is sync with bootm framework in: common/image-fdt.c
Change-Id: I363e9a4182e13b1628a76666acd8272d25db659d Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
show more ...
|
| #
ffa8f8b7 |
| 13-Jan-2019 |
Joseph Chen <chenjh@rock-chips.com> |
lib: introduce sysmem for permanent memory management
U-Boot provides MALLOC for runtime temporary memory management and LMB for bootm memory management. There is not a mechanism for permanent memor
lib: introduce sysmem for permanent memory management
U-Boot provides MALLOC for runtime temporary memory management and LMB for bootm memory management. There is not a mechanism for permanent memory management. so that the memory blocks are easy to overlap with each other.
What does permanent memory mean ? - The memory can't be touched by U-Boot(ATF/OPTEE/SHM/kernel-reserved, etc); - The memory occupied even in kernel, such as some firmware load buffer;
This patch introduces sysmem to do permanent memory management, which implements base on LMB. It provides memory block (pool): - init; - add; - alloc; - free; - reserve; - stat; - overflow check;
Here is an example for RK3399 sysmem boot stat(assume the "fdt" region is Overflow) called by sysmem_dump_all():
sysmem_dump_all: ------------------------------------------------------ memory.rgn[0].base = 0x00000000 .size = 0x00000000 memory.rgn[1].base = 0x00200000 .size = 0x08200000 memory.rgn[2].base = 0x0a200000 .size = 0x75e00000
memory.total = 0x7e000000 (2016 MiB. 0 KiB) ------------------------------------------------------ reserved.rgn[0].name = "ATF" .base = 0x00000000 .size = 0x00100000 reserved.rgn[1].name = "PSTORE/ATAGS/SHM" .base = 0x00100000 .size = 0x00100000 reserved.rgn[2].name = "OP-TEE" .base = 0x08400000 .size = 0x01e00000 reserved.rgn[3].name = "U-Boot" .base = 0x71be03c0 .size = 0x0e41fc40 reserved.rgn[4].name = "secure-memory@20000000" .base = 0x20000000 .size = 0x10000000
reserved.total = 0x2041fc40 (516 MiB. 127 KiB) ------------------------------------------------------ allocated.rgn[0].name = "fdt" (Overflow) .base = 0x01f00000 .size = 0x00009704 allocated.rgn[1].name = "kernel" .base = 0x0027c000 .size = 0x0129da04 allocated.rgn[2].name = "ramdisk" .base = 0x0a200000 .size = 0x001e6c04
allocated.total = 0x0148dd0c (20 MiB. 567 KiB) ------------------------------------------------------ LMB.reserved[0].base = 0x00000000 .size = 0x00200000 LMB.reserved[1].base = 0x0027c000 .size = 0x0129da04 LMB.reserved[2].base = 0x01f00000 .size = 0x00009704 LMB.reserved[3].base = 0x08400000 .size = 0x01fe6c04 LMB.reserved[4].base = 0x20000000 .size = 0x10000000 LMB.reserved[5].base = 0x71be03c0 .size = 0x0e41fc40
reserved.core.total = 0x218ad94c (536 MiB. 694 KiB) ------------------------------------------------------
Change-Id: If63b7abed2cdd3c054719511fcceed733ddf606d Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
show more ...
|