[Qemu-devel] [PATCH] bcm2835_aux: Swap RX and TX interrupt assignments

Guenter Roeck posted 1 patch 5 years, 10 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1529355846-25102-1-git-send-email-linux@roeck-us.net
Test checkpatch passed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test s390x passed
hw/char/bcm2835_aux.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[Qemu-devel] [PATCH] bcm2835_aux: Swap RX and TX interrupt assignments
Posted by Guenter Roeck 5 years, 10 months ago
RX and TX interrupt bits were reversed, resulting in an endless sequence
of serial interupts in the emulated system and the following repeated
error message when booting Linux.

serial8250: too much work for irq61

This results in a boot failure most of the time.

Qemu command line used to reproduce the problem:

	qemu-system-aarch64 -M raspi3 -m 1024 \
	-kernel arch/arm64/boot/Image \
	--append "rdinit=/sbin/init console=ttyS1,115200"
	-initrd rootfs.cpio \
	-dtb arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dtb \
	-nographic -monitor null -serial null -serial stdio

This is with arm64:defconfig. The root file system was generated using
buildroot.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
 hw/char/bcm2835_aux.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c
index 370dc7e..0364596 100644
--- a/hw/char/bcm2835_aux.c
+++ b/hw/char/bcm2835_aux.c
@@ -39,8 +39,8 @@
 #define AUX_MU_BAUD_REG 0x68
 
 /* bits in IER/IIR registers */
-#define TX_INT  0x1
-#define RX_INT  0x2
+#define RX_INT  0x1
+#define TX_INT  0x2
 
 static void bcm2835_aux_update(BCM2835AuxState *s)
 {
-- 
2.7.4


Re: [Qemu-devel] bcm2835_aux: Swap RX and TX interrupt assignments
Posted by Guenter Roeck 5 years, 9 months ago
ping ...

On Mon, Jun 18, 2018 at 02:04:06PM -0700, Guenter Roeck wrote:
> RX and TX interrupt bits were reversed, resulting in an endless sequence
> of serial interupts in the emulated system and the following repeated
> error message when booting Linux.
> 
> serial8250: too much work for irq61
> 
> This results in a boot failure most of the time.
> 
> Qemu command line used to reproduce the problem:
> 
> 	qemu-system-aarch64 -M raspi3 -m 1024 \
> 	-kernel arch/arm64/boot/Image \
> 	--append "rdinit=/sbin/init console=ttyS1,115200"
> 	-initrd rootfs.cpio \
> 	-dtb arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dtb \
> 	-nographic -monitor null -serial null -serial stdio
> 
> This is with arm64:defconfig. The root file system was generated using
> buildroot.
> 
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
>  hw/char/bcm2835_aux.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c
> index 370dc7e..0364596 100644
> --- a/hw/char/bcm2835_aux.c
> +++ b/hw/char/bcm2835_aux.c
> @@ -39,8 +39,8 @@
>  #define AUX_MU_BAUD_REG 0x68
>  
>  /* bits in IER/IIR registers */
> -#define TX_INT  0x1
> -#define RX_INT  0x2
> +#define RX_INT  0x1
> +#define TX_INT  0x2
>  
>  static void bcm2835_aux_update(BCM2835AuxState *s)
>  {

Re: [Qemu-devel] bcm2835_aux: Swap RX and TX interrupt assignments
Posted by Paolo Bonzini 5 years, 9 months ago
On 14/07/2018 15:53, Guenter Roeck wrote:
> ping ...

Queued, thanks.

Paolo

> On Mon, Jun 18, 2018 at 02:04:06PM -0700, Guenter Roeck wrote:
>> RX and TX interrupt bits were reversed, resulting in an endless sequence
>> of serial interupts in the emulated system and the following repeated
>> error message when booting Linux.
>>
>> serial8250: too much work for irq61
>>
>> This results in a boot failure most of the time.
>>
>> Qemu command line used to reproduce the problem:
>>
>> 	qemu-system-aarch64 -M raspi3 -m 1024 \
>> 	-kernel arch/arm64/boot/Image \
>> 	--append "rdinit=/sbin/init console=ttyS1,115200"
>> 	-initrd rootfs.cpio \
>> 	-dtb arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dtb \
>> 	-nographic -monitor null -serial null -serial stdio
>>
>> This is with arm64:defconfig. The root file system was generated using
>> buildroot.
>>
>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
>> ---
>>  hw/char/bcm2835_aux.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c
>> index 370dc7e..0364596 100644
>> --- a/hw/char/bcm2835_aux.c
>> +++ b/hw/char/bcm2835_aux.c
>> @@ -39,8 +39,8 @@
>>  #define AUX_MU_BAUD_REG 0x68
>>  
>>  /* bits in IER/IIR registers */
>> -#define TX_INT  0x1
>> -#define RX_INT  0x2
>> +#define RX_INT  0x1
>> +#define TX_INT  0x2
>>  
>>  static void bcm2835_aux_update(BCM2835AuxState *s)
>>  {


Re: [Qemu-devel] [PATCH] bcm2835_aux: Swap RX and TX interrupt assignments
Posted by Peter Maydell 5 years, 9 months ago
On 18 June 2018 at 22:04, Guenter Roeck <linux@roeck-us.net> wrote:
> RX and TX interrupt bits were reversed, resulting in an endless sequence
> of serial interupts in the emulated system and the following repeated
> error message when booting Linux.
>
> serial8250: too much work for irq61
>
> This results in a boot failure most of the time.
>
> Qemu command line used to reproduce the problem:
>
>         qemu-system-aarch64 -M raspi3 -m 1024 \
>         -kernel arch/arm64/boot/Image \
>         --append "rdinit=/sbin/init console=ttyS1,115200"
>         -initrd rootfs.cpio \
>         -dtb arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dtb \
>         -nographic -monitor null -serial null -serial stdio
>
> This is with arm64:defconfig. The root file system was generated using
> buildroot.

Worth mentioning in the commit message that there is an
error in the BCM2835 datasheet for the TX_INT and RX_INT
bits in the AUX_MU_IER_REG description (as per
https://elinux.org/BCM2835_datasheet_errata)

thanks
-- PMM

Re: [Qemu-devel] [PATCH] bcm2835_aux: Swap RX and TX interrupt assignments
Posted by Guenter Roeck 5 years, 9 months ago
On 07/16/2018 06:48 AM, Peter Maydell wrote:
> On 18 June 2018 at 22:04, Guenter Roeck <linux@roeck-us.net> wrote:
>> RX and TX interrupt bits were reversed, resulting in an endless sequence
>> of serial interupts in the emulated system and the following repeated
>> error message when booting Linux.
>>
>> serial8250: too much work for irq61
>>
>> This results in a boot failure most of the time.
>>
>> Qemu command line used to reproduce the problem:
>>
>>          qemu-system-aarch64 -M raspi3 -m 1024 \
>>          -kernel arch/arm64/boot/Image \
>>          --append "rdinit=/sbin/init console=ttyS1,115200"
>>          -initrd rootfs.cpio \
>>          -dtb arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dtb \
>>          -nographic -monitor null -serial null -serial stdio
>>
>> This is with arm64:defconfig. The root file system was generated using
>> buildroot.
> 
> Worth mentioning in the commit message that there is an
> error in the BCM2835 datasheet for the TX_INT and RX_INT
> bits in the AUX_MU_IER_REG description (as per
> https://elinux.org/BCM2835_datasheet_errata)
> 

I didn't know that ;-). I found out the hard way.

Guenter

Re: [Qemu-devel] [PATCH] bcm2835_aux: Swap RX and TX interrupt assignments
Posted by Peter Maydell 5 years, 9 months ago
On 16 July 2018 at 15:13, Guenter Roeck <linux@roeck-us.net> wrote:
> On 07/16/2018 06:48 AM, Peter Maydell wrote:
>>
>> On 18 June 2018 at 22:04, Guenter Roeck <linux@roeck-us.net> wrote:
>>>
>>> RX and TX interrupt bits were reversed, resulting in an endless sequence
>>> of serial interupts in the emulated system and the following repeated
>>> error message when booting Linux.
>>>
>>> serial8250: too much work for irq61
>>>
>>> This results in a boot failure most of the time.
>>>
>>> Qemu command line used to reproduce the problem:
>>>
>>>          qemu-system-aarch64 -M raspi3 -m 1024 \
>>>          -kernel arch/arm64/boot/Image \
>>>          --append "rdinit=/sbin/init console=ttyS1,115200"
>>>          -initrd rootfs.cpio \
>>>          -dtb arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dtb \
>>>          -nographic -monitor null -serial null -serial stdio
>>>
>>> This is with arm64:defconfig. The root file system was generated using
>>> buildroot.
>>
>>
>> Worth mentioning in the commit message that there is an
>> error in the BCM2835 datasheet for the TX_INT and RX_INT
>> bits in the AUX_MU_IER_REG description (as per
>> https://elinux.org/BCM2835_datasheet_errata)
>>
>
> I didn't know that ;-). I found out the hard way.

I'll take this through target-arm.next (I have some other patches
for rc1 anyway) and adjust the commit message.

Paolo: you can drop it from your queue.

thanks
-- PMM

Re: [Qemu-devel] [PATCH] bcm2835_aux: Swap RX and TX interrupt assignments
Posted by Paolo Bonzini 5 years, 9 months ago
On 16/07/2018 16:47, Peter Maydell wrote:
>> I didn't know that ;-). I found out the hard way.
> I'll take this through target-arm.next (I have some other patches
> for rc1 anyway) and adjust the commit message.
> 
> Paolo: you can drop it from your queue.

Done, thanks!

Paolo