static int sch_handle_start_func_passthrough(SubchDev *sch)

{



    PMCW *p = &sch->curr_status.pmcw;

    SCSW *s = &sch->curr_status.scsw;

    int ret;



    ORB *orb = &sch->orb;

    if (!(s->ctrl & SCSW_ACTL_SUSP)) {

        assert(orb != NULL);

        p->intparm = orb->intparm;

    }



    /*

     * Only support prefetch enable mode.

     * Only support 64bit addressing idal.

     */

    if (!(orb->ctrl0 & ORB_CTRL0_MASK_PFCH) ||

        !(orb->ctrl0 & ORB_CTRL0_MASK_C64)) {

        return -EINVAL;

    }



    ret = s390_ccw_cmd_request(orb, s, sch->driver_data);

    switch (ret) {

    /* Currently we don't update control block and just return the cc code. */

    case 0:

        break;

    case -EBUSY:

        break;

    case -ENODEV:

        break;

    case -EACCES:

        /* Let's reflect an inaccessible host device by cc 3. */

        ret = -ENODEV;

        break;

    default:

       /*

        * All other return codes will trigger a program check,

        * or set cc to 1.

        */

       break;

    };



    return ret;

}

static int sch_handle_start_func_passthrough(SubchDev *sch)

{



    PMCW *p = &sch->curr_status.pmcw;

    SCSW *s = &sch->curr_status.scsw;

    int ret;



    ORB *orb = &sch->orb;

    if (!(s->ctrl & SCSW_ACTL_SUSP)) {

        assert(orb != NULL);

        p->intparm = orb->intparm;

    }



    







    if (!(orb->ctrl0 & ORB_CTRL0_MASK_PFCH) ||

        !(orb->ctrl0 & ORB_CTRL0_MASK_C64)) {

        return -EINVAL;

    }



    ret = s390_ccw_cmd_request(orb, s, sch->driver_data);

    switch (ret) {

    

    case 0:

        break;

    case -EBUSY:

        break;

    case -ENODEV:

        break;

    case -EACCES:

        

        ret = -ENODEV;

        break;

    default:

       







       break;

    };



    return ret;

}

static int sch_handle_start_func_passthrough(SubchDev *sch)     int ret;         return -EINVAL;     ret = s390_ccw_cmd_request(orb, s, sch->driver_data);     switch (ret) {     case 0:         break;     case -EBUSY:         break;     case -ENODEV:         break;     case -EACCES:         ret = -ENODEV;         break;     default:        break;     };     return ret;     return ret;         return -EINVAL;     int ret;         ret = -ENODEV;     return ret;     int ret;         ret = -ENODEV;     return ret;     switch (ret) {     case -ENODEV:         break;     case -EBUSY:         break;     case 0:         break;     default:         break;     switch (ret) {     case -ENODEV:         break;         break;     case 0:         break;     default:         break;
static int FUNC_0(SubchDev *VAR_0)

{



    PMCW *p = &VAR_0->curr_status.pmcw;

    SCSW *s = &VAR_0->curr_status.scsw;

    int VAR_1;



    ORB *orb = &VAR_0->orb;

    if (!(s->ctrl & SCSW_ACTL_SUSP)) {

        assert(orb != NULL);

        p->intparm = orb->intparm;

    }



    







    if (!(orb->ctrl0 & ORB_CTRL0_MASK_PFCH) ||

        !(orb->ctrl0 & ORB_CTRL0_MASK_C64)) {

        return -EINVAL;

    }



    VAR_1 = s390_ccw_cmd_request(orb, s, VAR_0->driver_data);

    switch (VAR_1) {

    

    case 0:

        break;

    case -EBUSY:

        break;

    case -ENODEV:

        break;

    case -EACCES:

        

        VAR_1 = -ENODEV;

        break;

    default:

       







       break;

    };



    return VAR_1;

}

static int FUNC_0(SubchDev *VAR_0)
{ PMCW *p = &VAR_0->curr_status.pmcw; SCSW *s = &VAR_0->curr_status.scsw; int VAR_1; ORB *orb = &VAR_0->orb; if (!(s->ctrl & SCSW_ACTL_SUSP)) { assert(orb != NULL); p->intparm = orb->intparm; } if (!(orb->ctrl0 & ORB_CTRL0_MASK_PFCH) ||
!(orb->ctrl0 & ORB_CTRL0_MASK_C64)) { return -EINVAL; } VAR_1 = s390_ccw_cmd_request(orb, s, VAR_0->driver_data); switch (VAR_1) { case 0:
break; case -EBUSY:
break; case -ENODEV:
break; case -EACCES:
VAR_1 = -ENODEV; break; default:
break; }; return VAR_1; }