Commit c0f303d7 authored by Huang Shijie's avatar Huang Shijie Committed by Will Deacon
Browse files

arm64: mm: Rework the 'rodata=' options



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.

For parity with other architectures, namely x86, rework 'rodata=on' to
match the current "full" behaviour and replace 'rodata=full' with a new
'rodata=noalias' option which retains writable aliases in the direct map
for memory regions outside of the kernel image.

Signed-off-by: default avatarHuang Shijie <shijie@os.amperecomputing.com>
Reviewed-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent b868fff5
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -6405,8 +6405,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]

	rockchip.usb_uart
			[EARLY]
+2 −2
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ static inline bool arch_parse_debug_rodata(char *arg)
	if (!arg)
		return false;

	if (!strcmp(arg, "full")) {
	if (!strcmp(arg, "on")) {
		rodata_enabled = rodata_full = true;
		return true;
	}
@@ -31,7 +31,7 @@ static inline bool arch_parse_debug_rodata(char *arg)
		return true;
	}

	if (!strcmp(arg, "on")) {
	if (!strcmp(arg, "noalias")) {
		rodata_enabled = true;
		rodata_full = false;
		return true;