Messages in this thread | | | Date | Tue, 17 Mar 2020 22:34:33 +0000 | From | Will Deacon <> | Subject | Re: [PATCH 3/3] arm64: reduce trampoline data alignment |
| |
On Mon, Mar 16, 2020 at 02:40:46PM +0200, Rémi Denis-Courmont wrote: > From: Rémi Denis-Courmont <remi.denis.courmont@huawei.com> > > The trampoline data, currently consisting of two relocated pointers, > must be within a single page. However, there are no needs for it to > start a page. > > This reduces the alignment to 16 bytes (with SDEI) or 8 bytes (without > SDEI), which is sufficient to ensure that the data is entirely within a > single page of the fixmap. > > Signed-off-by: Rémi Denis-Courmont <remi.denis.courmont@huawei.com> > --- > arch/arm64/kernel/entry.S | 4 ++-- > arch/arm64/mm/mmu.c | 5 ++--- > 2 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S > index af17fcb4aaea..b648f9fe1e33 100644 > --- a/arch/arm64/kernel/entry.S > +++ b/arch/arm64/kernel/entry.S > @@ -858,12 +858,12 @@ SYM_CODE_END(tramp_exit_compat) > .popsection // .entry.tramp.text > #ifdef CONFIG_RANDOMIZE_BASE > .pushsection ".rodata", "a" > - .align PAGE_SHIFT > #ifdef CONFIG_ARM_SDE_INTERFACE > + .align 4 // all .rodata must be in a single fixmap page > SYM_DATA_START(__sdei_asm_trampoline_next_handler) > .quad __sdei_asm_handler > SYM_DATA_END(__sdei_asm_trampoline_next_handler) > -#endif > +#endif /* CONFIG_ARM_SDE_INTERFACE */ > SYM_DATA_START(__entry_tramp_data_start) > .quad vectors > SYM_DATA_END(__entry_tramp_data_start) > diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c > index 9b08f7c7e6f0..6a0e75f48e7b 100644 > --- a/arch/arm64/mm/mmu.c > +++ b/arch/arm64/mm/mmu.c > @@ -599,9 +599,8 @@ static int __init map_entry_trampoline(void) > if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { > extern char __entry_tramp_data_start[]; > > - __set_fixmap(FIX_ENTRY_TRAMP_DATA, > - __pa_symbol(__entry_tramp_data_start), > - PAGE_KERNEL_RO); > + pa_start = __pa_symbol(__entry_tramp_data_start) & PAGE_MASK; > + __set_fixmap(FIX_ENTRY_TRAMP_DATA, pa_start, PAGE_KERNEL_RO); > } > > return 0;
Acked-by: Will Deacon <will@kernel.org>
Will
| |