[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