> port->throttled never becomes true for qemu.  

Huh? What did I miss below?

            if (ret == -EAGAIN || (ret >= 0 && ret < buf_size)) {
                virtio_serial_throttle_port(port, true);
                                                   |
                                                   |
                                                   V
void virtio_serial_throttle_port(VirtIOSerialPort *port, bool throttle)
{
    if (!port) {
        return;
    }

    trace_virtio_serial_throttle_port(port->id, throttle);
    port->throttled = throttle;              <-------------------- WHOOOT!
    if (throttle) {
        return;
    }
    qemu_bh_schedule(port->bh);
}



Reply via email to