[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 repost 3/4] xen/arm64: head: Use PRINT_ID() for secondary CPU MMU-off boot code
On 16/01/2024 15:37, Julien Grall wrote: > > > From: Julien Grall <jgrall@xxxxxxxxxx> > > With the upcoming work to color Xen, the binary will not be anymore > physically contiguous. This will be a problem during boot as the > assembly code will need to work out where each piece of Xen reside. > > An easy way to solve the issue is to have all code/data accessed > by the secondary CPUs while the MMU is off within a single page. > > Right now, most of the early printk messages are using PRINT() which > will add the message in .rodata. This is unlikely to be within the > same page as the rest of the idmap. > > So replace all the PRINT() that can be reachable by the secondary > CPU with MMU-off with PRINT_ID(). > > Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx> Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx> with some remarks below > --- > xen/arch/arm/arm64/head.S | 14 +++++++------- > xen/arch/arm/arm64/mmu/head.S | 2 +- > xen/arch/arm/include/asm/arm64/macros.h | 9 ++++++--- > 3 files changed, 14 insertions(+), 11 deletions(-) > > diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S > index cfc04c755400..fa8b00b6f1db 100644 > --- a/xen/arch/arm/arm64/head.S > +++ b/xen/arch/arm/arm64/head.S > @@ -289,9 +289,9 @@ GLOBAL(init_secondary) > > #ifdef CONFIG_EARLY_PRINTK > ldr x23, =CONFIG_EARLY_UART_BASE_ADDRESS /* x23 := UART base > address */ > - PRINT("- CPU ") > + PRINT_ID("- CPU ") > print_reg x24 > - PRINT(" booting -\r\n") > + PRINT_ID(" booting -\r\n") > #endif > bl check_cpu_mode > bl cpu_init > @@ -314,10 +314,10 @@ ENDPROC(init_secondary) > * Clobbers x0 - x5 > */ > check_cpu_mode: > - PRINT("- Current EL ") > + PRINT_ID("- Current EL ") > mrs x5, CurrentEL > print_reg x5 > - PRINT(" -\r\n") > + PRINT_ID(" -\r\n") > > /* Are we in EL2 */ > cmp x5, #PSR_MODE_EL2t > @@ -326,8 +326,8 @@ check_cpu_mode: > ret > 1: > /* OK, we're boned. */ > - PRINT("- Xen must be entered in NS EL2 mode -\r\n") > - PRINT("- Please update the bootloader -\r\n") > + PRINT_ID("- Xen must be entered in NS EL2 mode -\r\n") > + PRINT_ID("- Please update the bootloader -\r\n") > b fail What about the PRINT in fail? > ENDPROC(check_cpu_mode) > > @@ -361,7 +361,7 @@ ENDPROC(zero_bss) > * Clobbers x0 - x3 > */ > cpu_init: > - PRINT("- Initialize CPU -\r\n") > + PRINT_ID("- Initialize CPU -\r\n") > > /* Set up memory attribute type tables */ > ldr x0, =MAIRVAL > diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/head.S > index 92b62ae94ce5..fa40b696ddc8 100644 > --- a/xen/arch/arm/arm64/mmu/head.S > +++ b/xen/arch/arm/arm64/mmu/head.S > @@ -276,7 +276,7 @@ ENDPROC(create_page_tables) > enable_mmu: > mov x4, x0 > mov x5, x1 > - PRINT("- Turning on paging -\r\n") > + PRINT_ID("- Turning on paging -\r\n") > > /* > * The state of the TLBs is unknown before turning on the MMU. > diff --git a/xen/arch/arm/include/asm/arm64/macros.h > b/xen/arch/arm/include/asm/arm64/macros.h > index 10e652041f57..6a0108f778a2 100644 > --- a/xen/arch/arm/include/asm/arm64/macros.h > +++ b/xen/arch/arm/include/asm/arm64/macros.h > @@ -39,9 +39,12 @@ > * There are multiple flavors: > * - PRINT_SECT(section, string): The @string will be located in @section > * - PRINT(): The string will be located in .rodata.str. > - * - PRINT_ID(): When Xen is running on the Identity Mapping, it is > - * only possible to have a limited amount of Xen. This will create > - * the string in .rodata.idmap which will always be mapped. > + * - PRINT_ID(): This will create the string in .rodata.idmap which > + * will always be accessible. This is used when: > + * - Xen is running on the identity mapping because not all of Xen is > mapped > + * - Running with the MMU-off on secondary boots as Xen may not be s/boots/CPUs > + * physically contiguous in memory (e.g. in the case of cache > + * coloring). > * > * Clobbers x0 - x3 > */ > -- > 2.40.1 > ~Michal
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |