From: Ryan Roberts <ryan.roberts@arm.com>
To: Andrew Morton <akpm@linux-foundation.org>,
Anshuman Khandual <anshuman.khandual@arm.com>,
Ard Biesheuvel <ardb@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
David Hildenbrand <david@redhat.com>,
Greg Marsden <greg.marsden@oracle.com>,
Ivan Ivanov <ivan.ivanov@suse.com>,
Kalesh Singh <kaleshsingh@google.com>,
Marc Zyngier <maz@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Matthias Brugger <mbrugger@suse.com>,
Miroslav Benes <mbenes@suse.cz>, Will Deacon <will@kernel.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: [RFC PATCH v1 54/57] arm64: Support runtime folding in idmap_kpti_install_ng_mappings
Date: Mon, 14 Oct 2024 11:59:01 +0100 [thread overview]
Message-ID: <20241014105912.3207374-54-ryan.roberts@arm.com> (raw)
In-Reply-To: <20241014105912.3207374-1-ryan.roberts@arm.com>
TODO:
Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
---
***NOTE***
Any confused maintainers may want to read the cover note here for context:
https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
arch/arm64/include/asm/assembler.h | 5 ++
arch/arm64/kernel/cpufeature.c | 21 +++++-
arch/arm64/mm/proc.S | 107 ++++++++++++++++++++++-------
3 files changed, 108 insertions(+), 25 deletions(-)
diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h
index 6424fd6be1cbe..0cfa7c3efd214 100644
--- a/arch/arm64/include/asm/assembler.h
+++ b/arch/arm64/include/asm/assembler.h
@@ -919,6 +919,11 @@ alternative_cb_end
value_for_page_size \val, \val, SZ_4K, SZ_16K, SZ_64K
.endm
+ .macro get_page_shift, val
+ get_tg0 \val
+ value_for_page_size \val, \val, ARM64_PAGE_SHIFT_4K, ARM64_PAGE_SHIFT_16K, ARM64_PAGE_SHIFT_64K
+ .endm
+
.macro get_page_mask, val
get_tg0 \val
value_for_page_size \val, \val, (~(SZ_4K-1)), (~(SZ_16K-1)), (~(SZ_64K-1))
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 663cc76569a27..ee94de556d3f0 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -1908,11 +1908,27 @@ static phys_addr_t __init kpti_ng_pgd_alloc(int shift)
return kpti_ng_temp_alloc;
}
+struct install_ng_pgtable_geometry {
+ unsigned long ptrs_per_pte;
+ unsigned long ptrs_per_pmd;
+ unsigned long ptrs_per_pud;
+ unsigned long ptrs_per_p4d;
+ unsigned long ptrs_per_pgd;
+};
+
static int __init __kpti_install_ng_mappings(void *__unused)
{
- typedef void (kpti_remap_fn)(int, int, phys_addr_t, unsigned long);
+ typedef void (kpti_remap_fn)(int, int, phys_addr_t, unsigned long,
+ struct install_ng_pgtable_geometry *);
extern kpti_remap_fn idmap_kpti_install_ng_mappings;
kpti_remap_fn *remap_fn;
+ struct install_ng_pgtable_geometry geometry = {
+ .ptrs_per_pte = PTRS_PER_PTE,
+ .ptrs_per_pmd = PTRS_PER_PMD,
+ .ptrs_per_pud = PTRS_PER_PUD,
+ .ptrs_per_p4d = PTRS_PER_P4D,
+ .ptrs_per_pgd = PTRS_PER_PGD,
+ };
int cpu = smp_processor_id();
int levels = CONFIG_PGTABLE_LEVELS;
@@ -1957,7 +1973,8 @@ static int __init __kpti_install_ng_mappings(void *__unused)
}
cpu_install_idmap();
- remap_fn(cpu, num_online_cpus(), kpti_ng_temp_pgd_pa, KPTI_NG_TEMP_VA);
+ remap_fn(cpu, num_online_cpus(), kpti_ng_temp_pgd_pa, KPTI_NG_TEMP_VA,
+ &geometry);
cpu_uninstall_idmap();
if (!cpu) {
diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S
index ab5aa84923524..11bf6ba6dac33 100644
--- a/arch/arm64/mm/proc.S
+++ b/arch/arm64/mm/proc.S
@@ -190,7 +190,7 @@ SYM_FUNC_ALIAS(__pi_idmap_cpu_replace_ttbr1, idmap_cpu_replace_ttbr1)
.pushsection ".idmap.text", "a"
.macro pte_to_phys, phys, pte
- and \phys, \pte, #PTE_ADDR_LOW
+ and \phys, \pte, pte_addr_low
#ifdef CONFIG_ARM64_PA_BITS_52
and \pte, \pte, #PTE_ADDR_HIGH
orr \phys, \phys, \pte, lsl #PTE_ADDR_HIGH_SHIFT
@@ -198,7 +198,8 @@ SYM_FUNC_ALIAS(__pi_idmap_cpu_replace_ttbr1, idmap_cpu_replace_ttbr1)
.endm
.macro kpti_mk_tbl_ng, type, num_entries
- add end_\type\()p, cur_\type\()p, #\num_entries * 8
+ lsl scratch, \num_entries, #3
+ add end_\type\()p, cur_\type\()p, scratch
.Ldo_\type:
ldr \type, [cur_\type\()p], #8 // Load the entry and advance
tbz \type, #0, .Lnext_\type // Skip invalid and
@@ -220,14 +221,18 @@ SYM_FUNC_ALIAS(__pi_idmap_cpu_replace_ttbr1, idmap_cpu_replace_ttbr1)
.macro kpti_map_pgtbl, type, level
str xzr, [temp_pte, #8 * (\level + 2)] // break before make
dsb nshst
- add pte, temp_pte, #PAGE_SIZE * (\level + 2)
+ mov scratch, #(\level + 2)
+ mul scratch, scratch, page_size
+ add pte, temp_pte, scratch
lsr pte, pte, #12
tlbi vaae1, pte
dsb nsh
isb
phys_to_pte pte, cur_\type\()p
- add cur_\type\()p, temp_pte, #PAGE_SIZE * (\level + 2)
+ mov scratch, #(\level + 2)
+ mul scratch, scratch, page_size
+ add cur_\type\()p, temp_pte, scratch
orr pte, pte, pte_flags
str pte, [temp_pte, #8 * (\level + 2)]
dsb nshst
@@ -235,7 +240,8 @@ SYM_FUNC_ALIAS(__pi_idmap_cpu_replace_ttbr1, idmap_cpu_replace_ttbr1)
/*
* void __kpti_install_ng_mappings(int cpu, int num_secondaries, phys_addr_t temp_pgd,
- * unsigned long temp_pte_va)
+ * unsigned long temp_pte_va,
+ * struct install_ng_pgtable_geometry *geometry)
*
* Called exactly once from stop_machine context by each CPU found during boot.
*/
@@ -251,6 +257,8 @@ SYM_TYPED_FUNC_START(idmap_kpti_install_ng_mappings)
temp_pgd_phys .req x2
swapper_ttb .req x3
flag_ptr .req x4
+ geometry .req x4
+ scratch .req x4
cur_pgdp .req x5
end_pgdp .req x6
pgd .req x7
@@ -264,18 +272,45 @@ SYM_TYPED_FUNC_START(idmap_kpti_install_ng_mappings)
valid .req x17
cur_p4dp .req x19
end_p4dp .req x20
-
- mov x5, x3 // preserve temp_pte arg
- mrs swapper_ttb, ttbr1_el1
- adr_l flag_ptr, __idmap_kpti_flag
+ page_size .req x21
+ ptrs_per_pte .req x22
+ ptrs_per_pmd .req x23
+ ptrs_per_pud .req x24
+ ptrs_per_p4d .req x25
+ ptrs_per_pgd .req x26
+ pte_addr_low .req x27
cbnz cpu, __idmap_kpti_secondary
-#if CONFIG_PGTABLE_LEVELS > 4
- stp x29, x30, [sp, #-32]!
+ /* Preserve callee-saved registers */
+ stp x19, x20, [sp, #-96]!
+ stp x21, x22, [sp, #80]
+ stp x23, x24, [sp, #64]
+ stp x25, x26, [sp, #48]
+ stp x27, x28, [sp, #32]
+ stp x29, x30, [sp, #16]
mov x29, sp
- stp x19, x20, [sp, #16]
-#endif
+
+ /* Load pgtable geometry parameters */
+ get_page_size page_size
+ ldr ptrs_per_pte, [geometry, #0]
+ ldr ptrs_per_pmd, [geometry, #8]
+ ldr ptrs_per_pud, [geometry, #16]
+ ldr ptrs_per_p4d, [geometry, #24]
+ ldr ptrs_per_pgd, [geometry, #32]
+
+ /* Precalculate pte_addr_low mask */
+ get_page_shift x0
+ mov pte_addr_low, #50
+ sub pte_addr_low, pte_addr_low, x0
+ mov scratch, #1
+ lsl pte_addr_low, scratch, pte_addr_low
+ sub pte_addr_low, pte_addr_low, #1
+ lsl pte_addr_low, pte_addr_low, x0
+
+ mov temp_pte, x3
+ mrs swapper_ttb, ttbr1_el1
+ adr_l flag_ptr, __idmap_kpti_flag
/* We're the boot CPU. Wait for the others to catch up */
sevl
@@ -290,7 +325,6 @@ SYM_TYPED_FUNC_START(idmap_kpti_install_ng_mappings)
msr ttbr1_el1, temp_pgd_phys
isb
- mov temp_pte, x5
mov_q pte_flags, KPTI_NG_PTE_FLAGS
/* Everybody is enjoying the idmap, so we can rewrite swapper. */
@@ -320,7 +354,7 @@ alternative_else_nop_endif
/* PGD */
adrp cur_pgdp, swapper_pg_dir
kpti_map_pgtbl pgd, -1
- kpti_mk_tbl_ng pgd, PTRS_PER_PGD
+ kpti_mk_tbl_ng pgd, ptrs_per_pgd
/* Ensure all the updated entries are visible to secondary CPUs */
dsb ishst
@@ -331,21 +365,33 @@ alternative_else_nop_endif
isb
/* Set the flag to zero to indicate that we're all done */
+ adr_l flag_ptr, __idmap_kpti_flag
str wzr, [flag_ptr]
-#if CONFIG_PGTABLE_LEVELS > 4
- ldp x19, x20, [sp, #16]
- ldp x29, x30, [sp], #32
-#endif
+
+ /* Restore callee-saved registers */
+ ldp x29, x30, [sp, #16]
+ ldp x27, x28, [sp, #32]
+ ldp x25, x26, [sp, #48]
+ ldp x23, x24, [sp, #64]
+ ldp x21, x22, [sp, #80]
+ ldp x19, x20, [sp], #96
+
ret
.Lderef_pgd:
/* P4D */
.if CONFIG_PGTABLE_LEVELS > 4
p4d .req x30
+ cmp ptrs_per_p4d, #1
+ b.eq .Lfold_p4d
pte_to_phys cur_p4dp, pgd
kpti_map_pgtbl p4d, 0
- kpti_mk_tbl_ng p4d, PTRS_PER_P4D
+ kpti_mk_tbl_ng p4d, ptrs_per_p4d
b .Lnext_pgd
+.Lfold_p4d:
+ mov p4d, pgd // fold to next level
+ mov cur_p4dp, end_p4dp // must be equal to terminate loop
+ b .Lderef_p4d
.else /* CONFIG_PGTABLE_LEVELS <= 4 */
p4d .req pgd
.set .Lnext_p4d, .Lnext_pgd
@@ -355,10 +401,16 @@ alternative_else_nop_endif
/* PUD */
.if CONFIG_PGTABLE_LEVELS > 3
pud .req x10
+ cmp ptrs_per_pud, #1
+ b.eq .Lfold_pud
pte_to_phys cur_pudp, p4d
kpti_map_pgtbl pud, 1
- kpti_mk_tbl_ng pud, PTRS_PER_PUD
+ kpti_mk_tbl_ng pud, ptrs_per_pud
b .Lnext_p4d
+.Lfold_pud:
+ mov pud, p4d // fold to next level
+ mov cur_pudp, end_pudp // must be equal to terminate loop
+ b .Lderef_pud
.else /* CONFIG_PGTABLE_LEVELS <= 3 */
pud .req pgd
.set .Lnext_pud, .Lnext_pgd
@@ -368,10 +420,16 @@ alternative_else_nop_endif
/* PMD */
.if CONFIG_PGTABLE_LEVELS > 2
pmd .req x13
+ cmp ptrs_per_pmd, #1
+ b.eq .Lfold_pmd
pte_to_phys cur_pmdp, pud
kpti_map_pgtbl pmd, 2
- kpti_mk_tbl_ng pmd, PTRS_PER_PMD
+ kpti_mk_tbl_ng pmd, ptrs_per_pmd
b .Lnext_pud
+.Lfold_pmd:
+ mov pmd, pud // fold to next level
+ mov cur_pmdp, end_pmdp // must be equal to terminate loop
+ b .Lderef_pmd
.else /* CONFIG_PGTABLE_LEVELS <= 2 */
pmd .req pgd
.set .Lnext_pmd, .Lnext_pgd
@@ -381,7 +439,7 @@ alternative_else_nop_endif
/* PTE */
pte_to_phys cur_ptep, pmd
kpti_map_pgtbl pte, 3
- kpti_mk_tbl_ng pte, PTRS_PER_PTE
+ kpti_mk_tbl_ng pte, ptrs_per_pte
b .Lnext_pmd
.unreq cpu
@@ -408,6 +466,9 @@ alternative_else_nop_endif
/* Secondary CPUs end up here */
__idmap_kpti_secondary:
+ mrs swapper_ttb, ttbr1_el1
+ adr_l flag_ptr, __idmap_kpti_flag
+
/* Uninstall swapper before surgery begins */
__idmap_cpu_set_reserved_ttbr1 x16, x17
--
2.43.0
next prev parent reply other threads:[~2024-10-14 11:02 UTC|newest]
Thread overview: 196+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-14 10:55 [RFC PATCH v1 00/57] Boot-time page size selection for arm64 Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 01/57] mm: Add macros ahead of supporting boot-time page size selection Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 02/57] vmlinux: Align to PAGE_SIZE_MAX Ryan Roberts
2024-10-14 16:50 ` Christoph Lameter (Ampere)
2024-10-15 10:53 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 03/57] mm/memcontrol: Fix seq_buf size to save memory when PAGE_SIZE is large Ryan Roberts
2024-10-14 13:00 ` Johannes Weiner
2024-10-14 19:59 ` Shakeel Butt
2024-10-15 10:55 ` Ryan Roberts
2024-10-17 12:21 ` Michal Hocko
2024-10-17 16:09 ` Roman Gushchin
2024-10-14 10:58 ` [RFC PATCH v1 04/57] mm/page_alloc: Make page_frag_cache boot-time page size compatible Ryan Roberts
2024-11-14 8:23 ` Vlastimil Babka
2024-11-14 9:36 ` Ryan Roberts
2024-11-14 9:43 ` Vlastimil Babka
2024-10-14 10:58 ` [RFC PATCH v1 05/57] mm: Avoid split pmd ptl if pmd level is run-time folded Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 06/57] mm: Remove PAGE_SIZE compile-time constant assumption Ryan Roberts
2024-10-16 14:37 ` Ryan Roberts
2024-11-01 20:16 ` [RFC PATCH] mm/slab: Avoid build bug for calls to kmalloc with a large constant Dave Kleikamp
2024-11-06 11:44 ` Ryan Roberts
2024-11-06 15:20 ` Dave Kleikamp
2024-11-14 10:09 ` Vlastimil Babka
2024-11-26 12:18 ` Ryan Roberts
2024-11-26 12:36 ` Vlastimil Babka
2024-11-26 14:26 ` Ryan Roberts
2024-11-26 14:53 ` Ryan Roberts
2024-11-26 15:09 ` Vlastimil Babka
2024-11-26 15:27 ` Vlastimil Babka
2024-11-26 15:33 ` Ryan Roberts
2024-11-14 10:17 ` [RFC PATCH v1 06/57] mm: Remove PAGE_SIZE compile-time constant assumption Vlastimil Babka
2024-11-26 10:08 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 07/57] fs: Introduce MAX_BUF_PER_PAGE_SIZE_MAX for array sizing Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 08/57] fs: Remove PAGE_SIZE compile-time constant assumption Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 09/57] fs/nfs: " Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 10/57] fs/ext4: " Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 11/57] fork: Permit boot-time THREAD_SIZE determination Ryan Roberts
2024-11-14 10:42 ` Vlastimil Babka
2024-10-14 10:58 ` [RFC PATCH v1 12/57] cgroup: Remove PAGE_SIZE compile-time constant assumption Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 13/57] bpf: " Ryan Roberts
2024-10-16 14:38 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 14/57] pm/hibernate: " Ryan Roberts
2024-10-16 14:39 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 15/57] stackdepot: " Ryan Roberts
2024-11-14 11:15 ` Vlastimil Babka
2024-11-26 10:15 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 16/57] perf: " Ryan Roberts
2024-10-16 14:40 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 17/57] kvm: " Ryan Roberts
2024-10-14 21:37 ` Sean Christopherson
2024-10-15 10:57 ` Ryan Roberts
2024-10-16 14:41 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 18/57] trace: " Ryan Roberts
2024-10-14 16:46 ` Steven Rostedt
2024-10-15 11:09 ` Ryan Roberts
2024-10-18 15:24 ` Steven Rostedt
2024-10-14 10:58 ` [RFC PATCH v1 19/57] crash: " Ryan Roberts
2024-10-15 3:47 ` Baoquan He
2024-10-15 11:13 ` Ryan Roberts
2024-10-18 3:00 ` Baoquan He
2024-10-14 10:58 ` [RFC PATCH v1 20/57] crypto: " Ryan Roberts
2024-10-26 6:54 ` Herbert Xu
2024-10-14 10:58 ` [RFC PATCH v1 21/57] sunrpc: " Ryan Roberts
2024-10-16 14:42 ` Ryan Roberts
2024-10-16 14:47 ` Chuck Lever
2024-10-16 14:54 ` Jeff Layton
2024-10-16 15:09 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 22/57] sound: " Ryan Roberts
2024-10-14 11:38 ` Mark Brown
2024-10-14 12:24 ` Ryan Roberts
2024-10-14 12:41 ` Takashi Iwai
2024-10-14 12:52 ` Ryan Roberts
2024-10-14 16:01 ` Mark Brown
2024-10-15 11:35 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 23/57] net: " Ryan Roberts
2024-10-16 14:43 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 24/57] net: fec: " Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 25/57] net: marvell: " Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 26/57] net: hns3: " Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 27/57] net: e1000: " Ryan Roberts
2024-10-16 14:43 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 28/57] net: igbvf: " Ryan Roberts
2024-10-16 14:44 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 29/57] net: igb: " Ryan Roberts
2024-10-16 14:45 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 30/57] drivers/base: " Ryan Roberts
2024-10-16 14:45 ` Ryan Roberts
2024-10-16 15:04 ` Greg Kroah-Hartman
2024-10-16 15:12 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 31/57] edac: " Ryan Roberts
2024-10-16 14:46 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 32/57] optee: " Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 33/57] random: " Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 34/57] sata_sil24: " Ryan Roberts
2024-10-17 9:09 ` Niklas Cassel
2024-10-17 12:42 ` Ryan Roberts
2024-10-17 12:51 ` Niklas Cassel
2024-10-21 9:24 ` Ryan Roberts
2024-10-21 11:04 ` Niklas Cassel
2024-10-21 11:26 ` Ryan Roberts
2024-10-21 11:43 ` Niklas Cassel
2024-10-14 10:58 ` [RFC PATCH v1 35/57] virtio: " Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 36/57] xen: " Ryan Roberts
2024-10-16 14:46 ` Ryan Roberts
2024-10-23 1:23 ` Stefano Stabellini
2024-10-24 10:32 ` Ryan Roberts
2024-10-25 1:18 ` Stefano Stabellini
2024-10-14 10:58 ` [RFC PATCH v1 37/57] arm64: Fix macros to work in C code in addition to the linker script Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 38/57] arm64: Track early pgtable allocation limit Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 39/57] arm64: Introduce macros required for boot-time page selection Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 40/57] arm64: Refactor early pgtable size calculation macros Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 41/57] arm64: Pass desired page size on command line Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 42/57] arm64: Divorce early init from PAGE_SIZE Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 43/57] arm64: Clean up simple cases of CONFIG_ARM64_*K_PAGES Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 44/57] arm64: Align sections to PAGE_SIZE_MAX Ryan Roberts
2024-10-19 14:16 ` Thomas Weißschuh
2024-10-21 11:20 ` Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 45/57] arm64: Rework trampoline rodata mapping Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 46/57] arm64: Generalize fixmap for boot-time page size Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 47/57] arm64: Statically allocate and align for worst-case " Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 48/57] arm64: Convert switch to if for non-const comparison values Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 49/57] arm64: Convert BUILD_BUG_ON to VM_BUG_ON Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 50/57] arm64: Remove PAGE_SZ asm-offset Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 51/57] arm64: Introduce cpu features for page sizes Ryan Roberts
2024-10-14 10:58 ` [RFC PATCH v1 52/57] arm64: Remove PAGE_SIZE from assembly code Ryan Roberts
2024-10-14 10:59 ` [RFC PATCH v1 53/57] arm64: Runtime-fold pmd level Ryan Roberts
2024-10-14 10:59 ` Ryan Roberts [this message]
2024-10-14 10:59 ` [RFC PATCH v1 55/57] arm64: TRAMP_VALIAS is no longer compile-time constant Ryan Roberts
2024-10-14 11:21 ` Ard Biesheuvel
2024-10-14 11:28 ` Ryan Roberts
2024-10-14 10:59 ` [RFC PATCH v1 56/57] arm64: Determine THREAD_SIZE at boot-time Ryan Roberts
2024-10-14 10:59 ` [RFC PATCH v1 57/57] arm64: Enable boot-time page size selection Ryan Roberts
2024-10-15 17:42 ` Zi Yan
2024-10-16 8:14 ` Ryan Roberts
2024-10-16 14:21 ` Zi Yan
2024-10-16 14:31 ` Ryan Roberts
2024-10-16 14:35 ` Zi Yan
2024-10-15 17:52 ` Michael Kelley
2024-10-16 8:17 ` Ryan Roberts
2024-10-14 13:54 ` [RFC PATCH v1 01/57] mm: Add macros ahead of supporting " Pingfan Liu
2024-10-14 14:07 ` Ryan Roberts
2024-10-15 3:04 ` Pingfan Liu
2024-10-15 11:16 ` Ryan Roberts
2024-10-16 14:36 ` Ryan Roberts
2024-10-30 8:45 ` Ryan Roberts
2024-10-14 17:32 ` [RFC PATCH v1 00/57] Boot-time page size selection for arm64 Florian Fainelli
2024-10-15 11:48 ` Ryan Roberts
2024-10-15 18:38 ` Michael Kelley
2024-10-16 8:23 ` Ryan Roberts
2024-10-16 15:16 ` David Hildenbrand
2024-10-16 16:08 ` Ryan Roberts
2024-10-17 12:27 ` Petr Tesarik
2024-10-17 12:32 ` Ryan Roberts
2024-10-18 12:56 ` Petr Tesarik
2024-10-18 14:41 ` Petr Tesarik
2024-10-21 11:47 ` Ryan Roberts
2024-10-23 21:00 ` Thomas Tai
2024-10-24 10:48 ` Ryan Roberts
2024-10-24 11:45 ` Petr Tesarik
2024-10-24 12:10 ` Ryan Roberts
2024-10-30 22:11 ` Sumit Gupta
2024-11-11 12:14 ` Petr Tesarik
2024-11-11 12:25 ` Ryan Roberts
2024-11-12 9:45 ` Petr Tesarik
2024-11-12 10:19 ` Ryan Roberts
2024-11-12 10:50 ` Petr Tesarik
2024-11-13 12:40 ` Petr Tesarik
2024-11-13 12:56 ` Ryan Roberts
2024-11-13 14:22 ` Petr Tesarik
2024-12-05 17:20 ` Petr Tesarik
2024-12-05 18:52 ` Michael Kelley
2024-12-06 7:50 ` Petr Tesarik
2024-12-06 10:26 ` Ryan Roberts
2024-12-06 13:05 ` Michael Kelley
2024-10-17 22:05 ` Dave Kleikamp
2024-10-21 11:49 ` Ryan Roberts
2024-10-18 18:15 ` Joseph Salisbury
2024-10-18 18:27 ` David Hildenbrand
2024-10-18 19:19 ` [External] : " Joseph Salisbury
2024-10-18 19:27 ` David Hildenbrand
2024-10-18 20:06 ` Joseph Salisbury
2024-10-21 9:55 ` Ryan Roberts
2024-10-19 15:47 ` Neal Gompa
2024-10-21 11:02 ` Ryan Roberts
2024-10-21 11:32 ` Eric Curtin
2024-10-21 11:51 ` Ryan Roberts
2024-10-21 13:49 ` Neal Gompa
2024-10-21 15:01 ` Ryan Roberts
2024-10-22 9:33 ` Neal Gompa
2024-10-22 15:03 ` Nick Chan
2024-10-22 15:12 ` Ryan Roberts
2024-10-22 17:30 ` Neal Gompa
2024-10-24 10:34 ` Ryan Roberts
2024-10-31 21:07 ` Catalin Marinas
2024-11-06 11:37 ` Ryan Roberts
2024-11-07 12:35 ` Catalin Marinas
2024-11-07 12:47 ` Ryan Roberts
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=20241014105912.3207374-54-ryan.roberts@arm.com \
--to=ryan.roberts@arm.com \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=ardb@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=david@redhat.com \
--cc=greg.marsden@oracle.com \
--cc=ivan.ivanov@suse.com \
--cc=kaleshsingh@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=mbenes@suse.cz \
--cc=mbrugger@suse.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