On 11/18/21 19:18, Mark Cave-Ayland wrote: > The ESCC datasheet states that SPEC_ALLSENT is always set in sync mode and set > in async mode once all characters have cleared the transmitter. Since writes > to > SERIAL_DATA use a synchronous chardev API, the guest can never see the state > when > transmission is in progress so it is possible to set SPEC_ALLSENT in the > R_SPEC register unconditionally. > > This fixes a hang when using the Sun PROM as it attempts to enumerate the > onboard serial devices, and a similar hang in OpenBSD SPARC32 where in both > cases > the boot process will not proceed until SPEC_ALLSENT has been set after > writing > to W_TXCTRL1. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> > --- > hw/char/escc.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+)
Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org>