From: Ard Biesheuvel <ardb@kernel.org>
To: linux-arm-kernel@lists.infradead.org
Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com,
Ard Biesheuvel <ardb@kernel.org>,
Kefeng Wang <wangkefeng.wang@huawei.com>
Subject: [PATCH 2/2] arm64: kaslr: take free space at start of DRAM into account
Date: Wed, 15 Dec 2021 15:52:28 +0100 [thread overview]
Message-ID: <20211215145228.953702-3-ardb@kernel.org> (raw)
In-Reply-To: <20211215145228.953702-1-ardb@kernel.org>
Commit 97d6786e0669 ("arm64: mm: account for hotplug memory when
randomizing the linear region") limited the randomization range of the
linear region substantially, or even eliminated it entirely for
configurations where the VA range equals or exceeds the maximum PA
range, even in cases where most of the PA range is not occupied to begin
with.
In such cases, we can recover this ability to some extent by taking
advantage of the reduced value of ARM64_MEMSTART_ALIGN, and disregarding
the physical region below the first memblock, allowing us to randomize
the placement of physical DRAM within the linear region even in cases
where the PArange equals the virtual range.
NOTE: this relies on the assumption that hotpluggable memory will never
appear below the lowest boot-time memblock memory region, but only
above.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
arch/arm64/mm/init.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index a8834434af99..b3ffb356bc8b 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -288,7 +288,8 @@ void __init arm64_memblock_init(void)
int parange = cpuid_feature_extract_unsigned_field(
mmfr0, ID_AA64MMFR0_PARANGE_SHIFT);
s64 range = linear_region_size -
- BIT(id_aa64mmfr0_parange_to_phys_shift(parange));
+ BIT(id_aa64mmfr0_parange_to_phys_shift(parange)) +
+ memblock_start_of_DRAM();
/*
* If the size of the linear region exceeds, by a sufficient
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-12-15 14:54 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-15 14:52 [PATCH 0/2] arm64: permit KASLR in linear region even VArange == PArange Ard Biesheuvel
2021-12-15 14:52 ` [PATCH 1/2] arm64: simplify rules for defining ARM64_MEMSTART_ALIGN Ard Biesheuvel
2021-12-15 14:52 ` Ard Biesheuvel [this message]
2021-12-16 7:37 ` [PATCH 0/2] arm64: permit KASLR in linear region even VArange == PArange Kefeng Wang
2021-12-16 8:56 ` Ard Biesheuvel
2021-12-16 11:32 ` Kefeng Wang
2022-02-15 2:09 ` Kefeng Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211215145228.953702-3-ardb@kernel.org \
--to=ardb@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=wangkefeng.wang@huawei.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).