>> I'm surprised: did you test this with upstream qemu?  That codebase
>> doesn't yet throttle writes, and this code path won't execute.  Does
>> it really not reproduce with this patch?
> 
> I think 
> static void handle_output(VirtIODevice *vdev, VirtQueue *vq)
> [....]
>     if (!port->throttled) {
>         do_flush_queued_data(port, vq, vdev);
>         return;
> 
> makes a difference here, since we will never return the buffer to the guest, 
> no?

And of course this while

static void do_flush_queued_data(VirtIOSerialPort *port, VirtQueue *vq,
                                 VirtIODevice *vdev)
[...]
    while (!port->throttled) {
        unsigned int i;

will also prevent further processing, as virtio_serial_throttle_port will 
set port-throttled.


Reply via email to