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>
---
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);
+ 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;
}
--
2.13.5
* Halil Pasic <pasic@linux.vnet.ibm.com> [2017-09-13 13:50:27 +0200]:
> 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>
> ---
> 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);
> + 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;
> }
> --
> 2.13.5
>
Reviewed-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
--
Dong Jia Shi
On 13/09/2017 13:50, 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>
> ---
> 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);
> + 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;
> }
>
Reviewed-by: Pierre Morel<pmorel@linux.vnet.ibm.com>
--
Pierre Morel
Linux/KVM/QEMU in Böblingen - Germany
© 2016 - 2026 Red Hat, Inc.