From: Cornelia Huck Date: Fri, 26 Apr 2013 02:12:53 +0000 (+0000) Subject: s390-ccw.img: Enhance drain_irqs(). X-Git-Tag: TizenStudio_2.0_p2.3.2~208^2~1967 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=776e7f0f215dd11dde85277723408fae3d319143;p=sdk%2Femulator%2Fqemu.git s390-ccw.img: Enhance drain_irqs(). - Use tpi + tsch to get interrupts. - Return an error if the irb indicates problems. Signed-off-by: Cornelia Huck Signed-off-by: Alexander Graf --- diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c index 1968fc6..1bd17d4 100644 --- a/pc-bios/s390-ccw/virtio.c +++ b/pc-bios/s390-ccw/virtio.c @@ -38,12 +38,21 @@ static void virtio_notify(struct subchannel_id schid) * Virtio functions * ***********************************************/ -static void drain_irqs(struct subchannel_id schid) +static int drain_irqs(struct subchannel_id schid) { struct irb irb = {}; + int r = 0; + while (1) { + /* FIXME: make use of TPI, for that enable subchannel and isc */ if (tsch(schid, &irb)) { - return; + /* Might want to differentiate error codes later on. */ + if (irb.scsw.cstat) { + r = -EIO; + } else if (irb.scsw.dstat != 0xc) { + r = -EIO; + } + return r; } } }