Re: [Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports
On 01/14/2010 09:34 AM, Amit Shah wrote: On (Thu) Jan 14 2010 [08:34:42], Anthony Liguori wrote: On 01/14/2010 07:17 AM, Amit Shah wrote: Hello people, This iteration of the series removes the START and END flags (and hence the header associated with each buffer). That's the major change since the last submission. I think the biggest issue remaining is the buffering. I think this is a pretty fundamental issue to work out since it determines the very nature of the transport (stream vs. datagram). The buffering is done so that the guest copy of the buffer is acked so that the guest can go about doing other things. (Currently the guest spins till a buffer is acked by the host and waiting for individual ports to flush their data to whichever receiver will consume some time.) The guest already gets an ack when data is consumed. The host adds the consumed buffer to the used ring. This also puts buffer management in one place: not all ports will consume all the data given to them. There's a need to maintain the buffer contents till the ports consume all the data. This buffer management can either be done by the individual ports, or it could be done by the bus code. I prefer doing it in the bus code since the code will be the same and be in one place instead of each port doing it separately all around the place. The rings themselves are buffers. Since each port has a ring, each port has independent buffering right now. Regards, Anthony Liguori
Re: [Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports
On (Tue) Jan 19 2010 [17:59:33], Jamie Lokier wrote: What happens if the guest crashes, kexecs or whatever when it's half way through sending a cut buffer? A stream protocol will not have a nice way to recover from that unless there is an additional out of band way to say I'm starting again. Does virtio-serial have an I'm starting again which is passed to the host side application? That's what I meant when I was talking about the START and END delimiters. I've removed those for now though. Something like what you suggest can be added later on. Amit
[Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports
Hello all, In this series I've removed the buffering that happened in the host and ack the amount of data that ports actually consume. This basically removes the older patch 5/8 that introduced buffering and throttling. Other changes include addition of patch 8: MSI support and ensuring we don't crash in the event we don't have chardevs opened and guest writes out to virtio-consoles. Obligatory disclaimer: This series splits up the patches by functionality. Note, however, that patches 2-5 introduce some functionality that's advertised to the guest as having to work all at once or not at all. Also, the savevm version is bumped only once but save/restore state is added in each of the patches. They are split only for easier reviewability. The older virtio-console.c file is completely removed and a new virtio-serial.c is introduced so that reviewing is easier. I can send a later patch to rename virtio-serial.c back to virtio-console.c. Amit Shah (8): virtio: Remove duplicate macro definition for max. virtqueues, bump up the max virtio-console: qdev conversion, new virtio-serial-bus virtio-serial-bus: Maintain guest and host port open/close state virtio-serial-bus: Add a port 'name' property for port discovery in guests virtio-serial-bus: Add ability to hot-unplug ports virtio-serial: Add a 'virtserialport' device for generic serial port support Move virtio-serial to Makefile.objs virtio-serial: Use MSI vectors for port virtqueues Makefile.objs |2 +- Makefile.target|2 +- hw/pc.c| 11 +- hw/ppc440_bamboo.c |7 - hw/qdev.c | 10 +- hw/s390-virtio-bus.c | 17 +- hw/s390-virtio-bus.h |2 + hw/s390-virtio.c |8 - hw/virtio-console.c| 143 --- hw/virtio-console.h| 19 -- hw/virtio-pci.c| 17 +- hw/virtio-serial-bus.c | 620 hw/virtio-serial.c | 146 hw/virtio-serial.h | 173 ++ hw/virtio.c|2 - hw/virtio.h|4 +- qemu-options.hx|4 + sysemu.h |6 - vl.c |2 + 19 files changed, 978 insertions(+), 217 deletions(-) delete mode 100644 hw/virtio-console.c delete mode 100644 hw/virtio-console.h create mode 100644 hw/virtio-serial-bus.c create mode 100644 hw/virtio-serial.c create mode 100644 hw/virtio-serial.h
[Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports
Hello people, This iteration of the series removes the START and END flags (and hence the header associated with each buffer). That's the major change since the last submission. Please review. Obligatory disclaimer: This series splits up the patches by functionality. Note, however, that patches 2-6 introduce some functionality that's advertised to the guest as having to work all at once or not at all. Also, the savevm version is bumped only once but save/restore state is added in each of the patches. They are split only for easier reviewability. The older virtio-console.c file is completely removed and a new virtio-serial.c is introduced so that reviewing is easier. I can send a later patch to rename virtio-serial.c back to virtio-console.c. Amit Shah (8): virtio: Remove duplicate macro definition for max. virtqueues, bump up the max virtio-console: qdev conversion, new virtio-serial-bus virtio-serial-bus: Maintain guest and host port open/close state virtio-serial-bus: Add a port 'name' property for port discovery in guests virtio-serial-bus: Add support for buffering guest output, throttling guests virtio-serial-bus: Add ability to hot-unplug ports virtio-serial: Add a 'virtserialport' device for generic serial port support Move virtio-serial to Makefile.objs Makefile.objs |2 +- Makefile.target|2 +- hw/pc.c| 11 +- hw/ppc440_bamboo.c |7 - hw/qdev.c | 10 +- hw/s390-virtio-bus.c | 17 +- hw/s390-virtio-bus.h |2 + hw/s390-virtio.c |8 - hw/virtio-console.c| 143 - hw/virtio-console.h| 19 -- hw/virtio-pci.c| 13 +- hw/virtio-serial-bus.c | 788 hw/virtio-serial.c | 143 + hw/virtio-serial.h | 199 hw/virtio.c|2 - hw/virtio.h|4 +- qemu-options.hx|4 + sysemu.h |6 - vl.c |2 + 19 files changed, 1165 insertions(+), 217 deletions(-) delete mode 100644 hw/virtio-console.c delete mode 100644 hw/virtio-console.h create mode 100644 hw/virtio-serial-bus.c create mode 100644 hw/virtio-serial.c create mode 100644 hw/virtio-serial.h
Re: [Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports
On 01/14/2010 07:17 AM, Amit Shah wrote: Hello people, This iteration of the series removes the START and END flags (and hence the header associated with each buffer). That's the major change since the last submission. I think the biggest issue remaining is the buffering. I think this is a pretty fundamental issue to work out since it determines the very nature of the transport (stream vs. datagram). Because you have to put a max buffer size on the transport, I think buffering is a really flawed approach provably equivalent to just increasing the message size within the transport. In general, the later is a better approach because then the guest is using it's memory vs. using host memory. Regards, Anthony Liguori
[Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports
Hello, This series addresses comments from last time: - use ldl/stl instead of communicating in little endian. - virtio-serial-bus is back in Makefile.target as a result of the above change. - don't write to guest memory in handle_control_message - is_console is a property; remove from custom debug output. - reword FIXME comment for serial chardevs in qdev.c - no need to maintain copy of guest_features And a couple of other changes/bugfixes: - Set serial ports to noncaching behaviour by default - Ensure console input works in case of older kernel module (rebase artifact) Obligatory disclaimer: This series splits up the patches by functionality. Note, however, that patches 2-6 introduce some functionality that's advertised to the guest as having to work all at once or not at all. Also, the savevm version is bumped only once but save/restore state is added in each of the patches. They are split only for easier reviewability. The older virtio-console.c file is completely removed and a new virtio-serial.c is introduced so that reviewing is easier. I can send a later patch to rename virtio-serial.c back to virtio-console.c. Amit Shah (8): virtio: Remove duplicate macro definition for max. virtqueues, bump up the max virtio-console: qdev conversion, new virtio-serial-bus virtio-serial-bus: Maintain guest and host port open/close state virtio-serial-bus: Add a port 'name' property for port discovery in guests virtio-serial-bus: Add support for buffering guest output, throttling guests virtio-serial-bus: Add ability to hot-unplug ports virtio-serial: Add a 'virtserialport' device for generic serial port support Move virtio-serial to Makefile.hw Makefile.hw|2 +- Makefile.target|2 +- hw/pc.c| 11 +- hw/ppc440_bamboo.c |7 - hw/qdev.c | 10 +- hw/s390-virtio-bus.c | 17 +- hw/s390-virtio-bus.h |2 + hw/s390-virtio.c |8 - hw/virtio-console.c| 143 hw/virtio-console.h| 19 - hw/virtio-pci.c| 13 +- hw/virtio-serial-bus.c | 952 hw/virtio-serial.c | 151 hw/virtio-serial.h | 227 hw/virtio.c|2 - hw/virtio.h|4 +- qemu-options.hx|4 + sysemu.h |6 - vl.c | 17 +- 19 files changed, 1378 insertions(+), 219 deletions(-) delete mode 100644 hw/virtio-console.c delete mode 100644 hw/virtio-console.h create mode 100644 hw/virtio-serial-bus.c create mode 100644 hw/virtio-serial.c create mode 100644 hw/virtio-serial.h
[Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports
Hello, This series addresses some comments from last time: - locking is removed - send/receive struct elements in endian-safe way - appropriate device is created based on machine being used (virtio-serial-pci vs virtio-serial-s390). This series splits up the patches by functionality. Note, however, that patches 2-6 introduce some functionality that's advertised to the guest as having to work all at once or not at all. Also, the savevm version is bumped only once but save/restore state is added in each of the patches. They are split only for easier reviewability. The older virtio-console.c file is completely removed and a new virtio-serial.c is introduced so that reviewing is easier. I can send a later patch to rename virtio-serial.c back to virtio-console.c. Amit Shah (8): virtio: Remove duplicate macro definition for max. virtqueues, bump up the max virtio-console: qdev conversion, new virtio-serial-bus virtio-serial-bus: Maintain guest and host port open/close state virtio-serial-bus: Add a port 'name' property for port discovery in guests virtio-serial-bus: Add support for buffering guest output, throttling guests virtio-serial-bus: Add ability to hot-unplug ports virtio-serial: Add 'virtserialport' device for generic serial port support Move virtio-serial and virtio-serial-bus to Makefile.hw Makefile.hw|2 +- Makefile.target|2 +- hw/pc.c| 11 +- hw/ppc440_bamboo.c |7 - hw/qdev.c |8 +- hw/s390-virtio-bus.c | 17 +- hw/s390-virtio-bus.h |2 + hw/s390-virtio.c |8 - hw/virtio-console.c| 143 hw/virtio-console.h| 19 - hw/virtio-pci.c| 13 +- hw/virtio-serial-bus.c | 946 hw/virtio-serial.c | 151 hw/virtio-serial.h | 227 hw/virtio.c|2 - hw/virtio.h|4 +- qemu-options.hx|4 + sysemu.h |6 - vl.c | 17 +- 19 files changed, 1371 insertions(+), 218 deletions(-) delete mode 100644 hw/virtio-console.c delete mode 100644 hw/virtio-console.h create mode 100644 hw/virtio-serial-bus.c create mode 100644 hw/virtio-serial.c create mode 100644 hw/virtio-serial.h