Message ID | 20220418090735.3940393-2-wei.chen@arm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Device tree based NUMA support for Arm - Part#1 | expand |
Hi Wei, > -----Original Message----- > From: Xen-devel <xen-devel-bounces@lists.xenproject.org> On Behalf Of > Wei Chen > Sent: 2022年4月18日 17:07 > To: --to=xen-devel@lists.xenproject.org; xen-devel@lists.xenproject.org > Cc: nd <nd@arm.com>; Wei Chen <Wei.Chen@arm.com>; Stefano Stabellini > <sstabellini@kernel.org>; Julien Grall <julien@xen.org>; Bertrand Marquis > <Bertrand.Marquis@arm.com>; Volodymyr Babchuk > <Volodymyr_Babchuk@epam.com>; Julien Grall <jgrall@amazon.com> > Subject: [PATCH v2 01/10] xen/arm: Print a 64-bit number in hex from early > uart > > Current putn function that is using for early print > only can print low 32-bit of AArch64 register. This > will lose some important messages while debugging > with early console. For example: > (XEN) Bringing up CPU5 > - CPU 0000000100000100 booting - > Will be truncated to > (XEN) Bringing up CPU5 > - CPU 00000100 booting - > > In this patch, we increased the print loops and shift > bits to make putn print 64-bit number. > > Signed-off-by: Wei Chen <wei.chen@arm.com> > Acked-by: Julien Grall <jgrall@amazon.com> > --- > xen/arch/arm/arm64/head.S | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S > index e62c48ec1c..2bb7906f69 100644 > --- a/xen/arch/arm/arm64/head.S > +++ b/xen/arch/arm/arm64/head.S > @@ -866,17 +866,19 @@ puts: > ret > ENDPROC(puts) > > -/* Print a 32-bit number in hex. Specific to the PL011 UART. > +/* > + * Print a 64-bit number in hex. > * x0: Number to print. > * x23: Early UART base address > - * Clobbers x0-x3 */ > + * Clobbers x0-x3 > + */ > putn: > adr x1, hex > - mov x3, #8 > + mov x3, #16 > 1: > early_uart_ready x23, 2 > - and x2, x0, #0xf0000000 /* Mask off the top nybble */ > - lsr x2, x2, #28 > + and x2, x0, #(0xf<<60) /* Mask off the top nybble */ > + lsr x2, x2, #60 > ldrb w2, [x1, x2] /* Convert to a char */ > early_uart_transmit x23, w2 > lsl x0, x0, #4 /* Roll it through one nybble at a time */ > -- > 2.25.1 > I have tested the whole patch series on Armv8A(config without NUMA) and X86(config with NUMA), both can enter Dom0 successfully and the X86 NUMA works normally. Tested-by: Jiamei Xie <jiamei.xie@arm.com> Regards, Jiamei Xie
Hi Jiamei, On 2022/4/19 17:13, Jiamei Xie wrote: > Hi Wei, > >> -----Original Message----- >> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> On Behalf Of >> Wei Chen >> Sent: 2022年4月18日 17:07 >> To: --to=xen-devel@lists.xenproject.org; xen-devel@lists.xenproject.org >> Cc: nd <nd@arm.com>; Wei Chen <Wei.Chen@arm.com>; Stefano Stabellini >> <sstabellini@kernel.org>; Julien Grall <julien@xen.org>; Bertrand Marquis >> <Bertrand.Marquis@arm.com>; Volodymyr Babchuk >> <Volodymyr_Babchuk@epam.com>; Julien Grall <jgrall@amazon.com> >> Subject: [PATCH v2 01/10] xen/arm: Print a 64-bit number in hex from early >> uart >> >> Current putn function that is using for early print >> only can print low 32-bit of AArch64 register. This >> will lose some important messages while debugging >> with early console. For example: >> (XEN) Bringing up CPU5 >> - CPU 0000000100000100 booting - >> Will be truncated to >> (XEN) Bringing up CPU5 >> - CPU 00000100 booting - >> >> In this patch, we increased the print loops and shift >> bits to make putn print 64-bit number. >> >> Signed-off-by: Wei Chen <wei.chen@arm.com> >> Acked-by: Julien Grall <jgrall@amazon.com> >> --- >> xen/arch/arm/arm64/head.S | 12 +++++++----- >> 1 file changed, 7 insertions(+), 5 deletions(-) >> >> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S >> index e62c48ec1c..2bb7906f69 100644 >> --- a/xen/arch/arm/arm64/head.S >> +++ b/xen/arch/arm/arm64/head.S >> @@ -866,17 +866,19 @@ puts: >> ret >> ENDPROC(puts) >> >> -/* Print a 32-bit number in hex. Specific to the PL011 UART. >> +/* >> + * Print a 64-bit number in hex. >> * x0: Number to print. >> * x23: Early UART base address >> - * Clobbers x0-x3 */ >> + * Clobbers x0-x3 >> + */ >> putn: >> adr x1, hex >> - mov x3, #8 >> + mov x3, #16 >> 1: >> early_uart_ready x23, 2 >> - and x2, x0, #0xf0000000 /* Mask off the top nybble */ >> - lsr x2, x2, #28 >> + and x2, x0, #(0xf<<60) /* Mask off the top nybble */ >> + lsr x2, x2, #60 >> ldrb w2, [x1, x2] /* Convert to a char */ >> early_uart_transmit x23, w2 >> lsl x0, x0, #4 /* Roll it through one nybble at a time */ >> -- >> 2.25.1 >> > > I have tested the whole patch series on Armv8A(config without NUMA) and X86(config with NUMA), both can enter Dom0 successfully and the X86 NUMA works normally. > > Tested-by: Jiamei Xie <jiamei.xie@arm.com> > Thanks for your testing! > Regards, > Jiamei Xie
diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S index e62c48ec1c..2bb7906f69 100644 --- a/xen/arch/arm/arm64/head.S +++ b/xen/arch/arm/arm64/head.S @@ -866,17 +866,19 @@ puts: ret ENDPROC(puts) -/* Print a 32-bit number in hex. Specific to the PL011 UART. +/* + * Print a 64-bit number in hex. * x0: Number to print. * x23: Early UART base address - * Clobbers x0-x3 */ + * Clobbers x0-x3 + */ putn: adr x1, hex - mov x3, #8 + mov x3, #16 1: early_uart_ready x23, 2 - and x2, x0, #0xf0000000 /* Mask off the top nybble */ - lsr x2, x2, #28 + and x2, x0, #(0xf<<60) /* Mask off the top nybble */ + lsr x2, x2, #60 ldrb w2, [x1, x2] /* Convert to a char */ early_uart_transmit x23, w2 lsl x0, x0, #4 /* Roll it through one nybble at a time */