[Top][All Lists]

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

[Qemu-devel] [RFC 0/3] qemu-char: Add poll timeouts for character backen

From: Heinz Graalfs
Subject: [Qemu-devel] [RFC 0/3] qemu-char: Add poll timeouts for character backends
Date: Fri, 24 Oct 2014 10:13:44 +0200

On s390 one can observe system hang situations wrt console input when
using 'dataplane=on'.

dataplane processing causes an inactive main thread and an active
dataplane thread.

When a character backend descriptor disappears from the main thread's
poll() descriptor array (when can_read() returns 0) it happens that it
will never reappear in the poll() array due to missing poll() interrupts.

The following patches fix observed hangs on s390 and provide a means
to avoid potential hangs in other backends/frontends.

The command line to reproduce the hang on s390:
qemu-system-s390x -machine s390-ccw-virtio,accel=kvm,usb=off,kernel_irqchip=on
 -m 1024 -realtime mlock=off -smp 4,sockets=4,cores=1,threads=1 -rtc base=utc
 -drive file=/dev/disk/by-path/ccw-0.0.e7ac,if=none,id=drive-virtio-disk0,
 -device virtio-blk-ccw,ioeventfd=on,scsi=off,config-wce=off,devno=fe.0.0001,
 -kernel /guest/vmlinux
 -append "root=/dev/vda1 console=ttyS0"
 -chardev stdio,id=sclpcon1,mux=off
 -device sclplmconsole,chardev=sclpcon1
 -nographic -nodefaults

Patch 1:
Adds timeout to poll() when a frontend returned -EAGAIN on 'can_read'.

Patch 2:
The SCLP line mode console now returns -EAGAIN on 'can_read' to fix a hang
after the backend descriptor disappeared forever from the poll() descriptor

Patch 3:
The ASCII console now returns -EAGAIN on 'can_read' to avoid a potential hang.

Heinz Graalfs (3):
  char: Trigger timeouts on poll() when frontend is unready
  s390x: Fix hanging SCLP line mode console
  s390x: Avoid hanging SCLP ASCII console

 hw/char/sclpconsole-lm.c |  4 ++--
 hw/char/sclpconsole.c    |  7 ++++++-
 qemu-char.c              | 27 ++++++++++++++++++++++++++-
 3 files changed, 34 insertions(+), 4 deletions(-)


reply via email to

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