Message ID | 20170919182745.90280-3-pasic@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 19/09/2017 20:27, Halil Pasic wrote: > Replace direct access which implicitly assumes no IDA > or MIDA with the new ccw data stream interface which should > cope with these transparently in the future. > > Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> > Reviewed-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> > Reviewed-by: Pierre Morel<pmorel@linux.vnet.ibm.com> > --- > hw/s390x/css.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/hw/s390x/css.c b/hw/s390x/css.c > index e8d2016563..6b0cd8861b 100644 > --- a/hw/s390x/css.c > +++ b/hw/s390x/css.c > @@ -890,6 +890,7 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr, > } > > /* Look at the command. */ > + ccw_dstream_init(&sch->cds, &ccw, &(sch->orb)); > switch (ccw.cmd_code) { > case CCW_CMD_NOOP: > /* Nothing to do. */ > @@ -903,8 +904,8 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr, > } > } > len = MIN(ccw.count, sizeof(sch->sense_data)); > - cpu_physical_memory_write(ccw.cda, sch->sense_data, len); > - sch->curr_status.scsw.count = ccw.count - len; > + ccw_dstream_write_buf(&sch->cds, sch->sense_data, len); Well, I oversaw this when I reviewed: I think you should test the return value of ccw_dstream_write_buf here. > + sch->curr_status.scsw.count = ccw_dstream_residual_count(&sch->cds); > memset(sch->sense_data, 0, sizeof(sch->sense_data)); > ret = 0; > break; > @@ -930,8 +931,8 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr, > } else { > sense_id.reserved = 0; > } > - cpu_physical_memory_write(ccw.cda, &sense_id, len); > - sch->curr_status.scsw.count = ccw.count - len; > + ccw_dstream_write_buf(&sch->cds, &sense_id, len); and here > + sch->curr_status.scsw.count = ccw_dstream_residual_count(&sch->cds); > ret = 0; > break; > } >
diff --git a/hw/s390x/css.c b/hw/s390x/css.c index e8d2016563..6b0cd8861b 100644 --- a/hw/s390x/css.c +++ b/hw/s390x/css.c @@ -890,6 +890,7 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr, } /* Look at the command. */ + ccw_dstream_init(&sch->cds, &ccw, &(sch->orb)); switch (ccw.cmd_code) { case CCW_CMD_NOOP: /* Nothing to do. */ @@ -903,8 +904,8 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr, } } len = MIN(ccw.count, sizeof(sch->sense_data)); - cpu_physical_memory_write(ccw.cda, sch->sense_data, len); - sch->curr_status.scsw.count = ccw.count - len; + ccw_dstream_write_buf(&sch->cds, sch->sense_data, len); + sch->curr_status.scsw.count = ccw_dstream_residual_count(&sch->cds); memset(sch->sense_data, 0, sizeof(sch->sense_data)); ret = 0; break; @@ -930,8 +931,8 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr, } else { sense_id.reserved = 0; } - cpu_physical_memory_write(ccw.cda, &sense_id, len); - sch->curr_status.scsw.count = ccw.count - len; + ccw_dstream_write_buf(&sch->cds, &sense_id, len); + sch->curr_status.scsw.count = ccw_dstream_residual_count(&sch->cds); ret = 0; break; }