From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 3/4] ARM: mm: truncate memory banks to fit in 4GB space for classic MMU
Date: Wed, 11 Apr 2012 15:30:38 +0100 [thread overview]
Message-ID: <1334154639-13869-4-git-send-email-will.deacon@arm.com> (raw)
In-Reply-To: <1334154639-13869-1-git-send-email-will.deacon@arm.com>
If a bank of memory spanning the 4GB boundary is added on a !CONFIG_LPAE
kernel then we will hang early during boot since the memory bank will
have wrapped around to zero.
This patch truncates memory banks for !LPAE configurations when the end
address is not representable in 32 bits.
Cc: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
arch/arm/kernel/setup.c | 16 +++++++++++++++-
1 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index b914113..ebfac78 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -523,7 +523,21 @@ int __init arm_add_memory(phys_addr_t start, unsigned long size)
*/
size -= start & ~PAGE_MASK;
bank->start = PAGE_ALIGN(start);
- bank->size = size & PAGE_MASK;
+
+#ifndef CONFIG_LPAE
+ if (bank->start + size < bank->start) {
+ printk(KERN_CRIT "Truncating memory at 0x%08llx to fit in "
+ "32-bit physical address space\n", (long long)start);
+ /*
+ * To ensure bank->start + bank->size is representable in
+ * 32 bits, we use ULONG_MAX as the upper limit rather than 4GB.
+ * This means we lose a page after masking.
+ */
+ size = ULONG_MAX - bank->start;
+ }
+#endif
+
+ bank->size = size & PAGE_MASK;
/*
* Check whether this memory region has non-zero size or
--
1.7.4.1
next prev parent reply other threads:[~2012-04-11 14:30 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-11 14:30 [PATCH v2 0/4] Miscellaneous nommu fixes Will Deacon
2012-04-11 14:30 ` [PATCH v2 1/4] ARM: nommu: fix typo in mm/Kconfig Will Deacon
2012-04-11 14:30 ` [PATCH v2 2/4] ARM: suspend: fix CPU suspend code for !CONFIG_MMU configurations Will Deacon
2012-04-11 14:30 ` Will Deacon [this message]
2012-04-11 14:44 ` [PATCH v2 3/4] ARM: mm: truncate memory banks to fit in 4GB space for classic MMU Nicolas Pitre
2012-04-11 15:07 ` Will Deacon
2012-04-11 15:52 ` Russell King - ARM Linux
2012-04-11 16:27 ` Russell King - ARM Linux
2012-04-11 17:26 ` David Brown
2012-04-11 17:38 ` Daniel Walker
2012-04-11 17:40 ` Russell King - ARM Linux
2012-04-11 18:06 ` Daniel Walker
2012-04-11 14:30 ` [PATCH v2 4/4] ARM: nommu: populate vectors page from paging_init Will Deacon
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=1334154639-13869-4-git-send-email-will.deacon@arm.com \
--to=will.deacon@arm.com \
--cc=linux-arm-kernel@lists.infradead.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