[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/2] hw/openrisc/openrisc_sim: keep serial@90000000 as def
From: |
Peter Maydell |
Subject: |
Re: [PATCH v2 1/2] hw/openrisc/openrisc_sim: keep serial@90000000 as default |
Date: |
Mon, 2 Dec 2024 16:59:55 +0000 |
On Sun, 1 Dec 2024 at 07:11, Stafford Horne <shorne@gmail.com> wrote:
>
> From: Ahmad Fatoum <a.fatoum@pengutronix.de>
>
> We used to only have a single UART on the platform and it was located at
> address 0x90000000. When the number of UARTs was increased to 4, the
> first UART remained at it's location, but instead of being the first one
> to be registered, it became the last.
>
> This caused QEMU to pick 0x90000300 as the default UART, which broke
> software that hardcoded the address of 0x90000000 and expected it's
> output to be visible when the user configured only a single console.
>
> This caused regressions[1] in the barebox test suite when updating to a
> newer QEMU. As there seems to be no good reason to register the UARTs in
> inverse order, let's register them by ascending address, so existing
> software can remain oblivious to the additional UART ports.
>
> Changing the order of uart registration alone breaks Linux which
> was choosing the UART at 0x90000300 as the default for ttyS0. To fix
> Linux we fix two things in the device tree:
three
> 1. Define stdout-path only one time for the first registered UART
> instead of incorrectly defining for each UART.
> 2. Change the UART alias name from 'uart0' to 'serial0' as almost all
> Linux tty drivers look for an alias starting with "serial".
3. Create the UART nodes so they appear in the final DTB in the
order starting with the lowest address and working upwards.
(Linux doesn't care about this but some DTB consumers might.)
If you like you could also add something like:
These changes mean that:
* serial_hd(0) is the lowest-address UART
* serial_hd(0) is listed first in the DTB
* serial_hd(0) is the /chosen/stdout-path one
* the /aliases/serial0 alias points at serial_hd(0)
as a summary.
> [1]:
> https://lore.barebox.org/barebox/707e7c50-aad1-4459-8796-0cc54bab32e2@pengutronix.de/T/#m5da26e8a799033301489a938b5d5667b81cef6ad
>
> Fixes: 777784bda468 ("hw/openrisc: support 4 serial ports in or1ksim")
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> [stafford: Change to serial0 alias and update change message, reverse
> uart registration order]
> Signed-off-by: Stafford Horne <shorne@gmail.com>
> ---
> Since v1:
> - Fix commit message and reverse registration order as pointed out by Peter.
>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
thanks
-- PMM