diff mbox series

[2/5] s390x/css: use ccw data stream

Message ID 20170905111645.18068-3-pasic@linux.vnet.ibm.com
State New
Headers show
Series None | expand

Commit Message

Halil Pasic Sept. 5, 2017, 11:16 a.m. UTC
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 | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Cornelia Huck Sept. 6, 2017, 12:32 p.m. UTC | #1
On Tue,  5 Sep 2017 13:16:42 +0200
Halil Pasic <pasic@linux.vnet.ibm.com> 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 | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/s390x/css.c b/hw/s390x/css.c
> index 87d913f81c..c1bc9944e6 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,7 +904,7 @@ 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);
> +        ccw_dstream_write_buf(&sch->cds, sch->sense_data, len);
>          sch->curr_status.scsw.count = ccw.count - len;

ccw_dstream_residual_count()?

>          memset(sch->sense_data, 0, sizeof(sch->sense_data));
>          ret = 0;
> @@ -930,7 +931,7 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr,
>          } else {
>              sense_id.reserved = 0;
>          }
> -        cpu_physical_memory_write(ccw.cda, &sense_id, len);
> +        ccw_dstream_write_buf(&sch->cds, &sense_id, len);
>          sch->curr_status.scsw.count = ccw.count - len;

dito

>          ret = 0;
>          break;
Halil Pasic Sept. 6, 2017, 12:42 p.m. UTC | #2
On 09/06/2017 02:32 PM, Cornelia Huck wrote:
> On Tue,  5 Sep 2017 13:16:42 +0200
> Halil Pasic <pasic@linux.vnet.ibm.com> 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 | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/s390x/css.c b/hw/s390x/css.c
>> index 87d913f81c..c1bc9944e6 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,7 +904,7 @@ 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);
>> +        ccw_dstream_write_buf(&sch->cds, sch->sense_data, len);
>>          sch->curr_status.scsw.count = ccw.count - len;
> 
> ccw_dstream_residual_count()?

Yeah, I've introduced that function later. Will do.

> 
>>          memset(sch->sense_data, 0, sizeof(sch->sense_data));
>>          ret = 0;
>> @@ -930,7 +931,7 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr,
>>          } else {
>>              sense_id.reserved = 0;
>>          }
>> -        cpu_physical_memory_write(ccw.cda, &sense_id, len);
>> +        ccw_dstream_write_buf(&sch->cds, &sense_id, len);
>>          sch->curr_status.scsw.count = ccw.count - len;
> 
> dito
> 
>>          ret = 0;
>>          break;
>
Pierre Morel Sept. 21, 2017, 9:33 a.m. UTC | #3
On 05/09/2017 13:16, 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 | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/s390x/css.c b/hw/s390x/css.c
> index 87d913f81c..c1bc9944e6 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,7 +904,7 @@ 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);
> +        ccw_dstream_write_buf(&sch->cds, sch->sense_data, len);

Don't you need to check the return value ?

>           sch->curr_status.scsw.count = ccw.count - len;
>           memset(sch->sense_data, 0, sizeof(sch->sense_data));
>           ret = 0;
> @@ -930,7 +931,7 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr,
>           } else {
>               sense_id.reserved = 0;
>           }
> -        cpu_physical_memory_write(ccw.cda, &sense_id, len);
> +        ccw_dstream_write_buf(&sch->cds, &sense_id, len);

here too ?

>           sch->curr_status.scsw.count = ccw.count - len;
>           ret = 0;
>           break;
>
Pierre Morel Sept. 21, 2017, 9:36 a.m. UTC | #4
On 21/09/2017 11:33, Pierre Morel wrote:
> On 05/09/2017 13:16, 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 | 5 +++--

>>   1 file changed, 3 insertions(+), 2 deletions(-)

>>

>> diff --git a/hw/s390x/css.c b/hw/s390x/css.c

>> index 87d913f81c..c1bc9944e6 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,7 +904,7 @@ 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);

>> +        ccw_dstream_write_buf(&sch->cds, sch->sense_data, len);

> 

> Don't you need to check the return value ?

> 

>>           sch->curr_status.scsw.count = ccw.count - len;

>>           memset(sch->sense_data, 0, sizeof(sch->sense_data));

>>           ret = 0;

>> @@ -930,7 +931,7 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr 

>> ccw_addr,

>>           } else {

>>               sense_id.reserved = 0;

>>           }

>> -        cpu_physical_memory_write(ccw.cda, &sense_id, len);

>> +        ccw_dstream_write_buf(&sch->cds, &sense_id, len);

> 

> here too ?

> 

>>           sch->curr_status.scsw.count = ccw.count - len;

>>           ret = 0;

>>           break;

>>

> 

> 

Forget it I took the wrong serie.
Sorry


-- 
Pierre Morel
Linux/KVM/QEMU in Böblingen - Germany
Cornelia Huck Sept. 21, 2017, 9:45 a.m. UTC | #5
On Thu, 21 Sep 2017 11:33:03 +0200
Pierre Morel <pmorel@linux.vnet.ibm.com> wrote:

> On 05/09/2017 13:16, 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 | 5 +++--
> >   1 file changed, 3 insertions(+), 2 deletions(-)
> > 
> > diff --git a/hw/s390x/css.c b/hw/s390x/css.c
> > index 87d913f81c..c1bc9944e6 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,7 +904,7 @@ 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);
> > +        ccw_dstream_write_buf(&sch->cds, sch->sense_data, len);  
> 
> Don't you need to check the return value ?
> 
> >           sch->curr_status.scsw.count = ccw.count - len;
> >           memset(sch->sense_data, 0, sizeof(sch->sense_data));
> >           ret = 0;
> > @@ -930,7 +931,7 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr,
> >           } else {
> >               sense_id.reserved = 0;
> >           }
> > -        cpu_physical_memory_write(ccw.cda, &sense_id, len);
> > +        ccw_dstream_write_buf(&sch->cds, &sense_id, len);  
> 
> here too ?
> 
> >           sch->curr_status.scsw.count = ccw.count - len;
> >           ret = 0;
> >           break;
> >   
> 
> 

I think Halil wanted to introduce error checking in a patch on top, to
keep changes minimal for now (at least one of the patch submissions
said so).

It isn't worse than before, so putting it into a separate patch is fine
by me.
diff mbox series

Patch

diff --git a/hw/s390x/css.c b/hw/s390x/css.c
index 87d913f81c..c1bc9944e6 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,7 +904,7 @@  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);
+        ccw_dstream_write_buf(&sch->cds, sch->sense_data, len);
         sch->curr_status.scsw.count = ccw.count - len;
         memset(sch->sense_data, 0, sizeof(sch->sense_data));
         ret = 0;
@@ -930,7 +931,7 @@  static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr,
         } else {
             sense_id.reserved = 0;
         }
-        cpu_physical_memory_write(ccw.cda, &sense_id, len);
+        ccw_dstream_write_buf(&sch->cds, &sense_id, len);
         sch->curr_status.scsw.count = ccw.count - len;
         ret = 0;
         break;