[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v2 1/2] KVM: s390: virtio-ccw: Handle comman
From: |
Christian Borntraeger |
Subject: |
Re: [Qemu-devel] [RFC PATCH v2 1/2] KVM: s390: virtio-ccw: Handle command rejects. |
Date: |
Wed, 10 Jul 2013 10:47:25 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130623 Thunderbird/17.0.7 |
On 09/07/13 13:34, Cornelia Huck wrote:
> A command reject for a ccw may happen if we run on a host not supporting
> a certain feature. We want to be able to handle this as special case of
> command failure, so let's split this off from the generic -EIO error code.
>
> Signed-off-by: Cornelia Huck <address@hidden>
Acked-by: Christian Borntraeger <address@hidden>
> ---
> drivers/s390/kvm/virtio_ccw.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
> index 779dc51..d6c7aba 100644
> --- a/drivers/s390/kvm/virtio_ccw.c
> +++ b/drivers/s390/kvm/virtio_ccw.c
> @@ -639,8 +639,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:
>