mirror of https://github.com/xemu-project/xemu.git
virtio-serial-bus: Ports are expected to implement 'have_data' callback
There's no need to check if ports can accept any incoming data from the guest each time the guest sends data. Check if the port implements such functionality during port initialisation. Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
05e7af694c
commit
03ecd2c80a
|
@ -466,13 +466,11 @@ static void handle_output(VirtIODevice *vdev, VirtQueue *vq)
|
|||
{
|
||||
VirtIOSerial *vser;
|
||||
VirtIOSerialPort *port;
|
||||
VirtIOSerialPortInfo *info;
|
||||
|
||||
vser = DO_UPCAST(VirtIOSerial, vdev, vdev);
|
||||
port = find_port_by_vq(vser, vq);
|
||||
info = port ? DO_UPCAST(VirtIOSerialPortInfo, qdev, port->dev.info) : NULL;
|
||||
|
||||
if (!port || !port->host_connected || !info->have_data) {
|
||||
if (!port || !port->host_connected) {
|
||||
discard_vq_data(vq, vdev);
|
||||
return;
|
||||
}
|
||||
|
@ -746,6 +744,8 @@ static int virtser_port_qdev_init(DeviceState *qdev, DeviceInfo *base)
|
|||
port->vser = bus->vser;
|
||||
port->bh = qemu_bh_new(flush_queued_data_bh, port);
|
||||
|
||||
assert(info->have_data);
|
||||
|
||||
/*
|
||||
* Is the first console port we're seeing? If so, put it up at
|
||||
* location 0. This is done for backward compatibility (old
|
||||
|
|
Loading…
Reference in New Issue