[PATCH v7 1/2] arm64: refactor the rodata=xxx
Shijie Huang
shijie at amperemail.onmicrosoft.com
Mon Sep 8 22:26:10 PDT 2025
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.
>> them susceptible to inadvertent modification by software.
>>
>> Signed-off-by: Huang Shijie <shijie at os.amperecomputing.com>
>> ---
>> 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
Thanks
Huang Shijie
More information about the linux-arm-kernel
mailing list