diff mbox series

[v2,01/10] xen/arm: Print a 64-bit number in hex from early uart

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

Commit Message

Wei Chen April 18, 2022, 9:07 a.m. UTC
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(-)

Comments

Jiamei Xie April 19, 2022, 9:13 a.m. UTC | #1
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
Wei Chen April 21, 2022, 7:05 a.m. UTC | #2
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 mbox series

Patch

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 */