From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: bug in identity map for 4KB pages?
Date: Wed, 29 Jul 2015 13:53:24 +0100 [thread overview]
Message-ID: <20150729125324.GO15213@leverpostej> (raw)
In-Reply-To: <CAKv+Gu-0NO5QnK34iXEK2_ATgsSYLMUwiq7u_=iPv5UrNba4kQ@mail.gmail.com>
On Wed, Jul 29, 2015 at 12:49:53PM +0100, Ard Biesheuvel wrote:
> On 29 July 2015 at 13:42, Mark Rutland <mark.rutland@arm.com> wrote:
> > On Wed, Jul 29, 2015 at 08:47:10AM +0100, Ard Biesheuvel wrote:
> >> On 29 July 2015 at 04:37, Stuart Yoder <stuart.yoder@freescale.com> wrote:
> >> > Our system has RAM at a high address, and previously required using 48-bit VA
> >> > in order to have an idmap that covered all of RAM.
> >> >
> >> > In testing on 4.2-rc4, which now contains support for the increased VA range
> >> > of the idmap without using 48-bit VA, I'm finding that things work for
> >> > 64KB pages, but do not for 4KB pages.
> >> >
> >> > Is there any known limitation here with 4KB pages? Any ideas?
> >> >
> >>
> >> You probably have memory at 0x8000_0000 and at 0x80_8000_0000, right?
> >> So the physical arrangement still requires more than the 39 bits of
> >> virtual address space you get with 3 levels, even if the ID map can
> >> cope now. That is why you get the 0x40_0000_0000 virtual address:
> >> __phys_to_virt() just wraps to a positive number.
> >
> > Ah, I see. So it's the linear mapping rather than the idmap which is the
> > problem.
> >
> > We cut memory which would fall below the start of the linear map in
> > early_init_dt_add_memory_arch, by cutting memory below phys_offset.
> >
> > It looks like we already have the logic for cutting memory beyond the
> > end of the linear map, so we should just need to override the limit.
> >
> > Stuart, does the below patch prevent the panic you see?
> >
>
> Wouldn't something like this make more sense?
>
> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> index 597831bdddf3..64480b65ef17 100644
> --- a/arch/arm64/mm/init.c
> +++ b/arch/arm64/mm/init.c
> @@ -158,6 +158,15 @@ early_param("mem", early_mem);
>
> void __init arm64_memblock_init(void)
> {
> + /*
> + * Remove the memory that we will not be able to cover
> + * with the linear mapping.
> + */
> + const s64 linear_region_size = -(s64)PAGE_OFFSET;
> +
> + memblock_remove(0, memstart_addr);
> + memblock_remove(memstart_addr + linear_region_size, ULLONG_MAX);
The maths is more correct, certainly.
I'd prefer to handle the truncation in early_init_dt_add_memory_arch
because it already has the requisite logic, and keeping the truncation
in one place should keep things less confusing.
To that end I'll respin my patch using PAGE_OFFSET to determine the
physical memory limit.
Unless there's something I've missed?
Thanks,
Mark.
next prev parent reply other threads:[~2015-07-29 12:53 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-29 2:37 bug in identity map for 4KB pages? Stuart Yoder
2015-07-29 7:47 ` Ard Biesheuvel
2015-07-29 11:42 ` Mark Rutland
2015-07-29 11:49 ` Ard Biesheuvel
2015-07-29 11:58 ` Ard Biesheuvel
2015-07-29 12:30 ` Will Deacon
2015-07-29 12:36 ` Mark Rutland
2015-07-29 12:32 ` Mark Rutland
2015-07-29 12:53 ` Mark Rutland [this message]
2015-07-29 12:57 ` Ard Biesheuvel
2015-07-29 13:24 ` Mark Rutland
2015-07-29 15:45 ` Stuart Yoder
2015-07-29 15:48 ` Ard Biesheuvel
2015-07-29 15:58 ` Stuart Yoder
2015-07-29 16:12 ` Ard Biesheuvel
2015-07-29 18:40 ` Ard Biesheuvel
2015-07-29 19:19 ` Stuart Yoder
2015-07-29 19:19 ` Stuart Yoder
2015-07-29 20:37 ` Ard Biesheuvel
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=20150729125324.GO15213@leverpostej \
--to=mark.rutland@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.