On (Thu) 29 Dec 2011 [15:32:14], Christian Borntraeger wrote:
> > 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);

'ret' here is the return value from info->have_data(), which is
hw/virtio-console.c:flush_buf().  That function returns the value that
qemu_chr_fe_write() returns, which is qemu-char.c:send_all() for pty,
tcp, unix sockets.  send_all() just keeps spinning here if it can't
write, doesn't signal EAGAIN at all (or even a partial write).

Can you print out the return values of have_data to check what's going
on?  Maybe you're hitting a case I never hit earlier and throttling
indeed does get enabled?


                Amit

Reply via email to