Re: [kvm-unit-tests PATCH v12 9/9] s390x: css: ssch/tsch with sense and interrupt

Pierre Morel
2020-07-14T11:51:52Z

On 2020-07-14 13:38, Thomas Huth wrote:
> On 14/07/2020 13.15, Pierre Morel wrote:
>> After a channel is enabled we start a SENSE_ID command using
>> the SSCH instruction to recognize the control unit and device.
>>
>> This tests the success of SSCH, the I/O interruption and the TSCH
>> instructions.
>>
>> The SENSE_ID command response is tested to report 0xff inside
>> its reserved field and to report the same control unit type
>> as the cu_type kernel argument.
>>
>> Without the cu_type kernel argument, the test expects a device
>> with a default control unit type of 0x3832, a.k.a virtio-net-ccw.
>>
>> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
>> ---
> [...]
>> @@ -102,6 +113,19 @@ struct irb {
>> uint32_t emw[8];
>> } __attribute__ ((aligned(4)));
>>
>> +#define CCW_CMD_SENSE_ID 0xe4
>> +#define CSS_SENSEID_COMMON_LEN 8
>> +struct senseid {
>> + /* common part */
>> + uint8_t reserved; /* always 0x'FF' */
>> + uint16_t cu_type; /* control unit type */
>> + uint8_t cu_model; /* control unit model */
>> + uint16_t dev_type; /* device type */
>> + uint8_t dev_model; /* device model */
>> + uint8_t unused; /* padding byte */
>> + uint8_t padding[256 - 10]; /* Extra padding for CCW */
>> +} __attribute__ ((aligned(4))) __attribute__ ((packed));
>
> Is that padding[256 - 10] right? If I count right, there are only 8
> bytes before the padding field, so "10" sounds wrong here?
>

No it is not, should be 248 or 256 - 8.

> [...]
>> diff --git a/lib/s390x/css_lib.c b/lib/s390x/css_lib.c
>> index e47a945..274c293 100644
>> --- a/lib/s390x/css_lib.c
>> +++ b/lib/s390x/css_lib.c
> [...]
>> +/*
>> + * css_residual_count
>> + * Return the residual count, if it is valid.
>> + *
>> + * Return value:
>> + * Success: the residual count
>> + * Not meaningful: -1 (-1 can not be a valid count)
>> + */
>> +int css_residual_count(unsigned int schid)
>> +{
>> +
>> + if (!(irb.scsw.ctrl & (SCSW_SC_PENDING | SCSW_SC_PRIMARY)))
>> + goto invalid;
>> +
>> + if (irb.scsw.dev_stat)
>> + if (irb.scsw.sch_stat & ~(SCSW_SCHS_PCI | SCSW_SCHS_IL))
>> + goto invalid;
>> +
>> + return irb.scsw.count;
>> +
>> +invalid:
>> + return -1;
>> +}
>
> Cosmetical nit: Unless you want to add something between "invalid:" and
> "return -1" later, I'd rather replace "goto invalid" with "return -1"
> and get rid of the "invalid" label here.
>
> Thomas
>

OK, since I need to respin for the padding above.

Thanks,
Pierre

--
Pierre Morel
IBM Lab Boeblingen