qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCHv2] Fix virtio-console failure on unconnected pty


From: Christian Borntraeger
Subject: Re: [Qemu-devel] [PATCHv2] Fix virtio-console failure on unconnected pty
Date: Thu, 29 Dec 2011 16:14:13 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.24) Gecko/20111108 Lightning/1.0b2 Thunderbird/3.1.16

On 29/12/11 15:56, Amit Shah wrote:
> 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?

ret is 0, see below for the gdb output. send_all does indeed break out of the
loop in case of 0. 

(gdb) bt
#0  do_flush_queued_data (port=0x8130a910, vq=0x813091e0, vdev=0x81309060) at 
/home/cborntra/REPOS/qemu/hw/virtio-serial-bus.c:166
#1  0x000000008022641e in handle_output (vdev=0x81309060, vq=0x813091e0) at 
/home/cborntra/REPOS/qemu/hw/virtio-serial-bus.c:481
#2  0x000000008022ac34 in virtio_queue_notify_vq (vq=0x813091e0) at 
/home/cborntra/REPOS/qemu/hw/virtio.c:632
#3  0x000000008022acc2 in virtio_queue_notify (vdev=0x81309060, n=1) at 
/home/cborntra/REPOS/qemu/hw/virtio.c:638
#4  0x00000000801e7168 in s390_virtio_hypercall (env=0x812f8170, 
mem=2097954816, hypercall=0) at /home/cborntra/REPOS/qemu/hw/s390-virtio.c:86
#5  0x00000000801bf3d4 in handle_hypercall (env=0x812f8170, run=0x20000028000) 
at /home/cborntra/REPOS/qemu/target-s390x/kvm.c:270
#6  0x00000000801bf48a in handle_diag (env=0x812f8170, run=0x20000028000, 
ipb_code=1280) at /home/cborntra/REPOS/qemu/target-s390x/kvm.c:281
#7  0x00000000801bfa3e in handle_instruction (env=0x812f8170, 
run=0x20000028000) at /home/cborntra/REPOS/qemu/target-s390x/kvm.c:397
#8  0x00000000801bfb76 in handle_intercept (env=0x812f8170) at 
/home/cborntra/REPOS/qemu/target-s390x/kvm.c:420
#9  0x00000000801bfcd2 in kvm_arch_handle_exit (env=0x812f8170, 
run=0x20000028000) at /home/cborntra/REPOS/qemu/target-s390x/kvm.c:452
#10 0x00000000801bd774 in kvm_cpu_exec (env=0x812f8170) at 
/home/cborntra/REPOS/qemu/kvm-all.c:1021
#11 0x0000000080181470 in qemu_kvm_cpu_thread_fn (arg=0x812f8170) at 
/home/cborntra/REPOS/qemu/cpus.c:740
#12 0x000002000043240e in start_thread () from /lib64/libpthread.so.0
#13 0x000002000055469a in thread_start () from /lib64/libc.so.6
(gdb) print ret
$3 = 0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]