Messages in this thread |  | | Date | Sun, 12 May 2024 17:47:24 +0200 | | From | Alexandre Ghiti <> | | Subject | Re: [PATCH 0/7] remove size limit on XIP kernel |
| |
Hi Nam,
On 10/05/2024 08:28, Nam Cao wrote: > Hi, > > For XIP kernel, the writable data section is always at offset specified in > XIP_OFFSET, which is hard-coded to 32MB. > > Unfortunately, this means the read-only section (placed before the > writable section) is restricted in size. This causes build failure if the > kernel gets too large. > > This series remove the use of XIP_OFFSET one by one, then remove this > macro entirely at the end, with the goal of lifting this size restriction. > > Also some cleanup and documentation along the way. > > This series depends on > https://lore.kernel.org/linux-riscv/20240508191917.2892064-1-namcao@linutronix.de/ > to apply cleanly, and also depends on > https://lore.kernel.org/linux-riscv/20240508173116.2866192-1-namcao@linutronix.de/ > which fixes a boot issue. > > Best regards, > Nam > > Nam Cao (7): > riscv: cleanup XIP_FIXUP macro > riscv: replace va_kernel_pa_offset with va_kernel_data_pa_offset on > XIP > riscv: drop the use of XIP_OFFSET in XIP_FIXUP_OFFSET > riscv: drop the use of XIP_OFFSET in XIP_FIXUP_FLASH_OFFSET > riscv: drop the use of XIP_OFFSET in kernel_mapping_va_to_pa() > riscv: drop the use of XIP_OFFSET in create_kernel_page_table() > riscv: remove limit on the size of read-only section for XIP kernel > > arch/riscv/include/asm/page.h | 25 ++++++++++++++++++------ > arch/riscv/include/asm/pgtable.h | 18 +++++++---------- > arch/riscv/include/asm/xip_fixup.h | 30 +++++++++++++++++++++++------ > arch/riscv/kernel/vmlinux-xip.lds.S | 4 ++-- > arch/riscv/mm/init.c | 11 +++++++---- > 5 files changed, 59 insertions(+), 29 deletions(-) >
XIP kernels are intended for use with flash devices so the XIP_OFFSET restriction actually represents the size of the flash device: IIRC this 32MB was chosen because it would fit "most devices". I think it would be good to come up with a mechanism that allows to restrict the size at build time: a config? XIP kernels are custom kernels so the user could enter its flash size so that if kernel ends up being too large, it fails. And by default, we could a very large size to avoid kernel test robot build failures.
Thanks,
Alex
|  |