summaryrefslogtreecommitdiff
path: root/drivers/s390/kvm/virtio_ccw.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2014-01-23 14:38:13 +0400
committerPaolo Bonzini <pbonzini@redhat.com>2014-01-23 14:38:13 +0400
commitc760f5e29d92adf5184589f1e616a4be146fb57c (patch)
treeeae46255f2a1633fc29df5430989f3cfbb799b40 /drivers/s390/kvm/virtio_ccw.c
parent0dc3fd0249a295863900984e02dd4bb89204205b (diff)
parent19e4735bd7f02bd38db43a8521377b35f236b3b6 (diff)
downloadlinux-c760f5e29d92adf5184589f1e616a4be146fb57c.tar.xz
Merge tag 'kvm-s390-20140117' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into kvm-queue
This deals with 2 guest features that need enablement in the kvm host: - transactional execution - lpp sampling support In addition there is also a fix to the virtio-ccw guest driver. This will enable future features
Diffstat (limited to 'drivers/s390/kvm/virtio_ccw.c')
-rw-r--r--drivers/s390/kvm/virtio_ccw.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
index d6297176ab85..0fc584832001 100644
--- a/drivers/s390/kvm/virtio_ccw.c
+++ b/drivers/s390/kvm/virtio_ccw.c
@@ -642,8 +642,15 @@ static void virtio_ccw_int_handler(struct ccw_device *cdev,
(SCSW_STCTL_ALERT_STATUS | SCSW_STCTL_STATUS_PEND))) {
/* OK */
}
- if (irb_is_error(irb))
- vcdev->err = -EIO; /* XXX - use real error */
+ if (irb_is_error(irb)) {
+ /* Command reject? */
+ if ((scsw_dstat(&irb->scsw) & DEV_STAT_UNIT_CHECK) &&
+ (irb->ecw[0] & SNS0_CMD_REJECT))
+ vcdev->err = -EOPNOTSUPP;
+ else
+ /* Map everything else to -EIO. */
+ vcdev->err = -EIO;
+ }
if (vcdev->curr_io & activity) {
switch (activity) {
case VIRTIO_CCW_DOING_READ_FEAT: