From: Anshuman Khandual <anshuman.khandual@arm.com>
To: Ard Biesheuvel <ardb@google.com>, linux-arm-kernel@lists.infradead.org
Cc: Ard Biesheuvel <ardb@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Ryan Roberts <ryan.roberts@arm.com>,
Kees Cook <keescook@chromium.org>
Subject: Re: [PATCH v6 04/41] arm64: mm: Move PCI I/O emulation region above the vmemmap region
Date: Thu, 30 Nov 2023 13:29:40 +0530 [thread overview]
Message-ID: <5b52d515-d970-4566-a621-b44d5ab4aa99@arm.com> (raw)
In-Reply-To: <20231129111555.3594833-47-ardb@google.com>
On 11/29/23 16:46, Ard Biesheuvel wrote:
> From: Ard Biesheuvel <ardb@kernel.org>
>
> Move the PCI I/O region above the vmemmap region in the kernel's VA
> space. This will permit us to reclaim the lower part of the vmemmap
> region for vmalloc/vmap allocations when running a 52-bit VA capable
> build on a 48-bit VA capable system.
>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> ---
> arch/arm64/include/asm/memory.h | 4 ++--
> arch/arm64/mm/ptdump.c | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
> index b8d726f951ae..99caeff78e1a 100644
> --- a/arch/arm64/include/asm/memory.h
> +++ b/arch/arm64/include/asm/memory.h
> @@ -49,8 +49,8 @@
> #define MODULES_VSIZE (SZ_2G)
> #define VMEMMAP_START (-(UL(1) << (VA_BITS - VMEMMAP_SHIFT)))
> #define VMEMMAP_END (VMEMMAP_START + VMEMMAP_SIZE)
> -#define PCI_IO_END (VMEMMAP_START - SZ_8M)
> -#define PCI_IO_START (PCI_IO_END - PCI_IO_SIZE)
> +#define PCI_IO_START (VMEMMAP_END + SZ_8M)
> +#define PCI_IO_END (PCI_IO_START + PCI_IO_SIZE)
> #define FIXADDR_TOP (VMEMMAP_START - SZ_32M)
>
> #if VA_BITS > 48
> diff --git a/arch/arm64/mm/ptdump.c b/arch/arm64/mm/ptdump.c
> index e305b6593c4e..d1df56d44f8a 100644
> --- a/arch/arm64/mm/ptdump.c
> +++ b/arch/arm64/mm/ptdump.c
> @@ -47,10 +47,10 @@ static struct addr_marker address_markers[] = {
> { VMALLOC_END, "vmalloc() end" },
> { FIXADDR_TOT_START, "Fixmap start" },
> { FIXADDR_TOP, "Fixmap end" },
> - { PCI_IO_START, "PCI I/O start" },
> - { PCI_IO_END, "PCI I/O end" },
> { VMEMMAP_START, "vmemmap start" },
> { VMEMMAP_START + VMEMMAP_SIZE, "vmemmap end" },
> + { PCI_IO_START, "PCI I/O start" },
> + { PCI_IO_END, "PCI I/O end" },
> { -1, NULL },
> };
>
I have not debugged this any further, but the PCI region displays no entries
via ptdump just after this patch being applied.
With the patch:
---[ Fixmap end ]---
0xfffffbfffe000000-0xfffffc0000000000 32M PMD
---[ vmemmap start ]---
0xfffffc0000000000-0xfffffc0002000000 32M PMD RW NX SHD AF NG BLK UXN MEM/NORMAL
0xfffffc0002000000-0xfffffc0020000000 480M PMD
0xfffffc0020000000-0xfffffc0022000000 32M PMD RW NX SHD AF NG BLK UXN MEM/NORMAL
0xfffffc0022000000-0xfffffc0040000000 480M PMD
0xfffffc0040000000-0xfffffc8000000000 511G PUD
0xfffffc8000000000-0xfffffe0000000000 1536G PGD
---[ vmemmap end ]---
0xfffffe0000000000-0xfffffe8000000000 512G PGD
---[ PCI I/O start ]---
---[ PCI I/O end ]--- -----> No entries
0xfffffe8000000000-0x0000000000000000 1536G PGD
Without the patch:
--[ Fixmap start ]---
0xfffffbfffdc31000-0xfffffbfffddf6000 1812K PTE
0xfffffbfffddf6000-0xfffffbfffddf9000 12K PTE ro x SHD AF UXN MEM/NORMAL
0xfffffbfffddf9000-0xfffffbfffddfa000 4K PTE ro NX SHD AF NG UXN MEM/NORMAL
0xfffffbfffddfa000-0xfffffbfffddfd000 12K PTE
0xfffffbfffddfd000-0xfffffbfffddfe000 4K PTE RW NX SHD AF NG UXN DEVICE/nGnRE
0xfffffbfffddfe000-0xfffffbfffde00000 8K PTE ro NX SHD AF NG UXN MEM/NORMAL
0xfffffbfffde00000-0xfffffbfffe000000 2M PTE
---[ Fixmap end ]---
0xfffffbfffe000000-0xfffffbfffe800000 8M PMD
---[ PCI I/O start ]---
0xfffffbfffe800000-0xfffffbffff800000 16M PMD
---[ PCI I/O end ]---
0xfffffbffff800000-0xfffffc0000000000 8M PMD
---[ vmemmap start ]---
0xfffffc0000000000-0xfffffc0002000000 32M PMD RW NX SHD AF NG BLK UXN MEM/NORMAL
0xfffffc0002000000-0xfffffc0020000000 480M PMD
0xfffffc0020000000-0xfffffc0022000000 32M PMD RW NX SHD AF NG BLK UXN MEM/NORMAL
0xfffffc0022000000-0xfffffc0040000000 480M PMD
0xfffffc0040000000-0xfffffc8000000000 511G PUD
0xfffffc8000000000-0xfffffe0000000000 1536G PGD
---[ vmemmap end ]---
_______________________________________________
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:[~2023-11-30 8:00 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-29 11:15 [PATCH v6 00/41] arm64: Reorganize kernel VA space for LPA2 Ard Biesheuvel
2023-11-29 11:15 ` [PATCH v6 01/41] arm64: kernel: Disable latent_entropy GCC plugin in early C runtime Ard Biesheuvel
2023-11-30 4:44 ` Anshuman Khandual
2023-11-29 11:15 ` [PATCH v6 02/41] arm64: mm: Take potential load offset into account when KASLR is off Ard Biesheuvel
2023-11-30 5:23 ` Anshuman Khandual
2023-12-04 14:12 ` Mark Rutland
2023-12-04 15:40 ` Ard Biesheuvel
2023-11-29 11:15 ` [PATCH v6 03/41] arm64: mm: get rid of kimage_vaddr global variable Ard Biesheuvel
2023-11-30 5:38 ` Anshuman Khandual
2023-12-04 14:37 ` Mark Rutland
2023-12-05 2:26 ` Anshuman Khandual
2023-11-29 11:16 ` [PATCH v6 04/41] arm64: mm: Move PCI I/O emulation region above the vmemmap region Ard Biesheuvel
2023-11-30 7:59 ` Anshuman Khandual [this message]
2023-11-30 8:02 ` Ard Biesheuvel
2023-11-30 8:52 ` Anshuman Khandual
2023-11-30 8:56 ` Ard Biesheuvel
2023-12-11 13:57 ` Mark Rutland
2023-12-11 14:10 ` Ard Biesheuvel
2023-12-11 14:21 ` Mark Rutland
2023-11-29 11:16 ` [PATCH v6 05/41] arm64: mm: Move fixmap region above " Ard Biesheuvel
2023-12-11 14:23 ` Mark Rutland
2023-11-29 11:16 ` [PATCH v6 06/41] arm64: ptdump: Allow all region boundaries to be defined at boot time Ard Biesheuvel
2023-12-11 14:15 ` Mark Rutland
2023-11-29 11:16 ` [PATCH v6 07/41] arm64: ptdump: Discover start of vmemmap region at runtime Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 08/41] arm64: vmemmap: Avoid base2 order of struct page size to dimension region Ard Biesheuvel
2023-12-11 14:35 ` Mark Rutland
2023-12-12 21:34 ` Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 09/41] arm64: mm: Reclaim unused vmemmap region for vmalloc use Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 10/41] arm64: kaslr: Adjust randomization range dynamically Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 11/41] arm64: kernel: Manage absolute relocations in code built under pi/ Ard Biesheuvel
2023-11-29 12:27 ` Marc Zyngier
2023-11-29 12:46 ` Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 12/41] arm64: kernel: Don't rely on objcopy to make code under pi/ __init Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 13/41] arm64: head: move relocation handling to C code Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 14/41] arm64: idreg-override: Omit non-NULL checks for override pointer Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 15/41] arm64: idreg-override: Prepare for place relative reloc patching Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 16/41] arm64: idreg-override: Avoid parameq() and parameqn() Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 17/41] arm64: idreg-override: avoid strlen() to check for empty strings Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 18/41] arm64: idreg-override: Avoid sprintf() for simple string concatenation Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 19/41] arm64: idreg-override: Avoid kstrtou64() to parse a single hex digit Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 20/41] arm64/kernel: Move 'nokaslr' parsing out of early idreg code Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 21/41] arm64: idreg-override: Move to early mini C runtime Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 22/41] arm64: kernel: Remove early fdt remap code Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 23/41] arm64: head: Clear BSS and the kernel page tables in one go Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 24/41] arm64: Move feature overrides into the BSS section Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 25/41] arm64: head: Run feature override detection before mapping the kernel Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 26/41] arm64: head: move dynamic shadow call stack patching into early C runtime Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 27/41] arm64: cpufeature: Add helper to test for CPU feature overrides Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 28/41] arm64: kaslr: Use feature override instead of parsing the cmdline again Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 29/41] arm64: idreg-override: Create a pseudo feature for rodata=off Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 30/41] arm64: Add helpers to probe local CPU for PAC and BTI support Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 31/41] arm64: head: allocate more pages for the kernel mapping Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 32/41] arm64: head: move memstart_offset_seed handling to C code Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 33/41] arm64: mm: Make kaslr_requires_kpti() a static inline Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 34/41] arm64: mmu: Make __cpu_replace_ttbr1() out of line Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 35/41] arm64: head: Move early kernel mapping routines into C code Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 36/41] arm64: mm: Use 48-bit virtual addressing for the permanent ID map Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 37/41] arm64: pgtable: Decouple PGDIR size macros from PGD/PUD/PMD levels Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 38/41] arm64: kernel: Create initial ID map from C code Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 39/41] arm64: mm: avoid fixmap for early swapper_pg_dir updates Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 40/41] arm64: mm: omit redundant remap of kernel image Ard Biesheuvel
2023-11-29 11:16 ` [PATCH v6 41/41] arm64: Revert "mm: provide idmap pointer to cpu_replace_ttbr1()" Ard Biesheuvel
2023-12-12 17:20 ` [PATCH v6 00/41] arm64: Reorganize kernel VA space for LPA2 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=5b52d515-d970-4566-a621-b44d5ab4aa99@arm.com \
--to=anshuman.khandual@arm.com \
--cc=ardb@google.com \
--cc=ardb@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=keescook@chromium.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=ryan.roberts@arm.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 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.