On 09/09/25 10:56 AM, Shijie Huang wrote: > > On 09/09/2025 12:29, Anshuman Khandual wrote: >> On 09/09/25 9:02 AM, Huang Shijie wrote: >>> As per admin guide documentation, "rodata=on" should be the default on >>> platforms. Documentation/admin-guide/kernel-parameters.txt describes >>> these options as >>> >>> rodata= [KNL,EARLY] >>> on Mark read-only kernel memory as read-only (default). >>> off Leave read-only kernel memory writable for debugging. >>> full Mark read-only kernel memory and aliases as read-only >>> [arm64] >>> >>> But on arm64 platform, RODATA_FULL_DEFAULT_ENABLED is enabled by default, >>> so "rodata=full" is the default instead. >>> >>> This patch implements the following changes: >>> - Make "rodata=on" behaviour same as the original "rodata=full". >>> This keeps align with the x86. >>> - Make "rodata=noalias" (new) behaviour same as the original "rodata=on" >>> - Drop the original "rodata=full" >>> >>> After this patch, the "rodata=on" will be the default on arm64 platform >>> as well. >>> >>> Different rodata options may have different performance, so record more >>> detail information here: >>> >>> rodata=on (default) >>> This applies read-only attributes to VM areas and to the linear >>> alias of the backing pages as well. This prevents code or read- >>> only data from being modified (inadvertently or intentionally), >>> via another mapping for the same memory page. >>> >>> But this might cause linear map region to be mapped down to base >>> pages, which may adversely affect performance in some cases. >>> >>> rodata=off >>> This provides more block mappings and contiguous hints for linear >>> map region which would minimize TLB footprint. This also leaves >>> read-only kernel memory writable for debugging. >>> >>> rodata=noalias >>> This provides more block mappings and contiguous hints for linear >>> map region which would minimize TLB footprint. This leaves the linear >>> alias of read-only mappings in the vmalloc space writeable, making >> typo ^^^^^^^^ > What's the typo? It seems "writeable" is okay. Alright. >>> them susceptible to inadvertent modification by software. >>> >>> Signed-off-by: Huang Shijie <shijie@xxxxxxxxxxxxxxxxxxxxxx> >>> --- >>> Documentation/admin-guide/kernel-parameters.txt | 5 +++-- >>> arch/arm64/include/asm/setup.h | 4 ++-- >>> 2 files changed, 5 insertions(+), 4 deletions(-) >>> >>> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt >>> index db84a629f7b1..138e0db5af64 100644 >>> --- a/Documentation/admin-guide/kernel-parameters.txt >>> +++ b/Documentation/admin-guide/kernel-parameters.txt >>> @@ -6418,8 +6418,9 @@ >>> rodata= [KNL,EARLY] >>> on Mark read-only kernel memory as read-only (default). >>> off Leave read-only kernel memory writable for debugging. >>> - full Mark read-only kernel memory and aliases as read-only >>> - [arm64] >>> + noalias Mark read-only kernel memory as read-only but retain >>> + writable aliases in the direct map for regions outside >>> + of the kernel image. [arm64] >> Should not the arm64 specific performance implications be mentioned >> in the above documentation update as well ? But in case this appears >> too much platform specific - probably do consider adding them above >> or inside arch_parse_debug_rodata() as an in-code documentation. > > Will had already suggested do not add them for the arch_parse_debug_rodata(): > > https://lists.infradead.org/pipermail/linux-arm-kernel/2025-September/1060135.html Alright. Reviewed-by: Anshuman Khandual <anshuman.khandual@xxxxxxx>