Re: [Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports

2010-01-19 Thread Anthony Liguori

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

2010-01-19 Thread Amit Shah
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

2010-01-19 Thread Amit Shah
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

2010-01-14 Thread Amit Shah
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

2010-01-14 Thread Anthony Liguori

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

2010-01-06 Thread Amit Shah
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

2010-01-04 Thread Amit Shah
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