qemu/hw/char
David Gibson 6c3bc244d3 spapr: Implement bug in spapr-vty device to be compatible with PowerVM
The spapr-vty device implements the PAPR defined virtual console,
which is also implemented by IBM's proprietary PowerVM hypervisor.

PowerVM's implementation has a bug where it inserts an extra \0 after
every \r going to the guest.  Because of that Linux's guest side
driver has a workaround which strips \0 characters that appear
immediately after a \r.

That means that when running under qemu, sending a binary stream from
host to guest via spapr-vty which happens to include a \r\0 sequence
will get corrupted by that workaround.

To deal with that, this patch duplicates PowerVM's bug, inserting an
extra \0 after each \r.  Ugly, but the best option available.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
2017-11-22 15:28:37 +11:00
..
bcm2835_aux.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
cadence_uart.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
cmsdk-apb-uart.c hw/arm/mps2: Add UARTs 2017-07-17 13:36:08 +01:00
debugcon.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
digic-uart.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
escc.c qapi: Mechanically convert FOO_lookup[...] to FOO_str(...) 2017-09-04 13:09:13 +02:00
etraxfs_ser.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
exynos4210_uart.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
grlib_apbuart.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
imx_serial.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
ipoctal232.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
lm32_juart.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
lm32_uart.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
Makefile.objs hw/char/cmsdk-apb-uart.c: Implement CMSDK APB UART 2017-07-17 13:36:08 +01:00
mcf_uart.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
milkymist-uart.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
omap_uart.c chardev: move headers to include/chardev 2017-06-02 11:33:52 +04:00
parallel.c chardev: fix parallel device can't be reconnect 2017-07-14 12:04:41 +02:00
pl011.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
sclpconsole-lm.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
sclpconsole.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
serial-isa.c char: rename CharDriverState Chardev 2017-01-27 18:07:59 +01:00
serial-pci.c pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
serial.c Enable 8-byte wide MMIO for 16550 serial devices 2017-11-06 17:15:14 +01:00
sh_serial.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
spapr_vty.c spapr: Implement bug in spapr-vty device to be compatible with PowerVM 2017-11-22 15:28:37 +11:00
stm32f2xx_usart.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00
terminal3270.c s390x/3270: handle writes of arbitrary length 2017-10-06 10:53:02 +02:00
trace-events trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
virtio-console.c virtio-serial: add enable_backend callback 2017-09-21 11:51:49 +02:00
virtio-serial-bus.c virtio-serial: add enable_backend callback 2017-09-21 11:51:49 +02:00
xen_console.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
xilinx_uartlite.c char: add backend hotswap handler 2017-07-14 11:04:33 +02:00