Let's initialize the structs at the beginning to ease reading and also
zeroing all other fields. This also makes the compiler stop
compalining about sense_id_ccw.flags being ored into when it's not
initialized.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Pierre Morel <pmorel@linux.ibm.com>
---
pc-bios/s390-ccw/cio.c | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/pc-bios/s390-ccw/cio.c b/pc-bios/s390-ccw/cio.c
index 339ec5fbe7..63301ebb58 100644
--- a/pc-bios/s390-ccw/cio.c
+++ b/pc-bios/s390-ccw/cio.c
@@ -49,13 +49,13 @@ void enable_subchannel(SubChannelId schid)
uint16_t cu_type(SubChannelId schid)
{
- Ccw1 sense_id_ccw;
SenseId sense_data;
-
- sense_id_ccw.cmd_code = CCW_CMD_SENSE_ID;
- sense_id_ccw.cda = ptr2u32(&sense_data);
- sense_id_ccw.count = sizeof(sense_data);
- sense_id_ccw.flags |= CCW_FLAG_SLI;
+ Ccw1 sense_id_ccw = {
+ .cmd_code = CCW_CMD_SENSE_ID,
+ .count = sizeof(sense_data),
+ .flags = CCW_FLAG_SLI,
+ .cda = ptr2u32(&sense_data),
+ };
if (do_cio(schid, CU_TYPE_UNKNOWN, ptr2u32(&sense_id_ccw), CCW_FMT1)) {
panic("Failed to run SenseID CCw\n");
@@ -67,13 +67,13 @@ uint16_t cu_type(SubChannelId schid)
int basic_sense(SubChannelId schid, uint16_t cutype, void *sense_data,
uint16_t data_size)
{
- Ccw1 senseCcw;
+ Ccw1 senseCcw = {
+ .cmd_code = CCW_CMD_BASIC_SENSE,
+ .count = data_size,
+ .cda = ptr2u32(sense_data),
+ };
Irb irb;
- senseCcw.cmd_code = CCW_CMD_BASIC_SENSE;
- senseCcw.cda = ptr2u32(sense_data);
- senseCcw.count = data_size;
-
return __do_cio(schid, ptr2u32(&senseCcw), CCW_FMT1, &irb);
}
@@ -314,7 +314,13 @@ static void print_irb_err(Irb *irb)
*/
static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *irb)
{
- CmdOrb orb = {};
+ CmdOrb orb = {
+ .fmt = fmt,
+ .pfch = 1, /* QEMU's cio implementation requires prefetch */
+ .c64 = 1, /* QEMU's cio implementation requires 64-bit idaws */
+ .lpm = 0xFF, /* All paths allowed */
+ .cpa = ccw_addr,
+ };
int rc;
IPL_assert(fmt == 0 || fmt == 1, "Invalid ccw format");
@@ -324,12 +330,6 @@ static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *irb)
IPL_assert(ccw_addr <= 0xFFFFFF - 8, "Invalid ccw address");
}
- orb.fmt = fmt;
- orb.pfch = 1; /* QEMU's cio implementation requires prefetch */
- orb.c64 = 1; /* QEMU's cio implementation requires 64-bit idaws */
- orb.lpm = 0xFF; /* All paths allowed */
- orb.cpa = ccw_addr;
-
rc = ssch(schid, &orb);
if (rc == 1 || rc == 2) {
/* Subchannel status pending or busy. Eat status and ask for retry. */
--
2.25.1
On 14.05.20 14:37, Janosch Frank wrote:
> Let's initialize the structs at the beginning to ease reading and also
> zeroing all other fields. This also makes the compiler stop
> compalining about sense_id_ccw.flags being ored into when it's not
s/compalining/complaining/
> initialized.
>
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> Reviewed-by: Pierre Morel <pmorel@linux.ibm.com>
> ---
> pc-bios/s390-ccw/cio.c | 36 ++++++++++++++++++------------------
> 1 file changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/pc-bios/s390-ccw/cio.c b/pc-bios/s390-ccw/cio.c
> index 339ec5fbe7..63301ebb58 100644
> --- a/pc-bios/s390-ccw/cio.c
> +++ b/pc-bios/s390-ccw/cio.c
> @@ -49,13 +49,13 @@ void enable_subchannel(SubChannelId schid)
>
> uint16_t cu_type(SubChannelId schid)
> {
> - Ccw1 sense_id_ccw;
> SenseId sense_data;
> -
> - sense_id_ccw.cmd_code = CCW_CMD_SENSE_ID;
> - sense_id_ccw.cda = ptr2u32(&sense_data);
> - sense_id_ccw.count = sizeof(sense_data);
> - sense_id_ccw.flags |= CCW_FLAG_SLI;
> + Ccw1 sense_id_ccw = {
> + .cmd_code = CCW_CMD_SENSE_ID,
> + .count = sizeof(sense_data),
> + .flags = CCW_FLAG_SLI,
> + .cda = ptr2u32(&sense_data),
> + };
>
> if (do_cio(schid, CU_TYPE_UNKNOWN, ptr2u32(&sense_id_ccw), CCW_FMT1)) {
> panic("Failed to run SenseID CCw\n");
> @@ -67,13 +67,13 @@ uint16_t cu_type(SubChannelId schid)
> int basic_sense(SubChannelId schid, uint16_t cutype, void *sense_data,
> uint16_t data_size)
> {
> - Ccw1 senseCcw;
> + Ccw1 senseCcw = {
> + .cmd_code = CCW_CMD_BASIC_SENSE,
> + .count = data_size,
> + .cda = ptr2u32(sense_data),
> + };
> Irb irb;
>
> - senseCcw.cmd_code = CCW_CMD_BASIC_SENSE;
> - senseCcw.cda = ptr2u32(sense_data);
> - senseCcw.count = data_size;
> -
> return __do_cio(schid, ptr2u32(&senseCcw), CCW_FMT1, &irb);
> }
>
> @@ -314,7 +314,13 @@ static void print_irb_err(Irb *irb)
> */
> static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *irb)
> {
> - CmdOrb orb = {};
> + CmdOrb orb = {
> + .fmt = fmt,
> + .pfch = 1, /* QEMU's cio implementation requires prefetch */
> + .c64 = 1, /* QEMU's cio implementation requires 64-bit idaws */
Maybe just document this on top (all comments combined)
/*
* QEMU's CIO implementation requires prefetch and 64-bit idaws. We
* allow all paths.
*/
Or get rid of the tabs ;)
Reviewed-by: David Hildenbrand <david@redhat.com>
--
Thanks,
David / dhildenb
On 5/18/20 1:52 PM, David Hildenbrand wrote:
> On 14.05.20 14:37, Janosch Frank wrote:
>> Let's initialize the structs at the beginning to ease reading and also
>> zeroing all other fields. This also makes the compiler stop
>> compalining about sense_id_ccw.flags being ored into when it's not
>
> s/compalining/complaining/
>
>> initialized.
>>
>> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
>> Reviewed-by: Pierre Morel <pmorel@linux.ibm.com>
>> ---
>> pc-bios/s390-ccw/cio.c | 36 ++++++++++++++++++------------------
>> 1 file changed, 18 insertions(+), 18 deletions(-)
>>
>> diff --git a/pc-bios/s390-ccw/cio.c b/pc-bios/s390-ccw/cio.c
>> index 339ec5fbe7..63301ebb58 100644
>> --- a/pc-bios/s390-ccw/cio.c
>> +++ b/pc-bios/s390-ccw/cio.c
>> @@ -49,13 +49,13 @@ void enable_subchannel(SubChannelId schid)
>>
>> uint16_t cu_type(SubChannelId schid)
>> {
>> - Ccw1 sense_id_ccw;
>> SenseId sense_data;
>> -
>> - sense_id_ccw.cmd_code = CCW_CMD_SENSE_ID;
>> - sense_id_ccw.cda = ptr2u32(&sense_data);
>> - sense_id_ccw.count = sizeof(sense_data);
>> - sense_id_ccw.flags |= CCW_FLAG_SLI;
>> + Ccw1 sense_id_ccw = {
>> + .cmd_code = CCW_CMD_SENSE_ID,
>> + .count = sizeof(sense_data),
>> + .flags = CCW_FLAG_SLI,
>> + .cda = ptr2u32(&sense_data),
>> + };
>>
>> if (do_cio(schid, CU_TYPE_UNKNOWN, ptr2u32(&sense_id_ccw), CCW_FMT1)) {
>> panic("Failed to run SenseID CCw\n");
>> @@ -67,13 +67,13 @@ uint16_t cu_type(SubChannelId schid)
>> int basic_sense(SubChannelId schid, uint16_t cutype, void *sense_data,
>> uint16_t data_size)
>> {
>> - Ccw1 senseCcw;
>> + Ccw1 senseCcw = {
>> + .cmd_code = CCW_CMD_BASIC_SENSE,
>> + .count = data_size,
>> + .cda = ptr2u32(sense_data),
>> + };
>> Irb irb;
>>
>> - senseCcw.cmd_code = CCW_CMD_BASIC_SENSE;
>> - senseCcw.cda = ptr2u32(sense_data);
>> - senseCcw.count = data_size;
>> -
>> return __do_cio(schid, ptr2u32(&senseCcw), CCW_FMT1, &irb);
>> }
>>
>> @@ -314,7 +314,13 @@ static void print_irb_err(Irb *irb)
>> */
>> static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *irb)
>> {
>> - CmdOrb orb = {};
>> + CmdOrb orb = {
>> + .fmt = fmt,
>> + .pfch = 1, /* QEMU's cio implementation requires prefetch */
>> + .c64 = 1, /* QEMU's cio implementation requires 64-bit idaws */
>
> Maybe just document this on top (all comments combined)
>
> /*
> * QEMU's CIO implementation requires prefetch and 64-bit idaws. We
> * allow all paths.
> */
>
> Or get rid of the tabs ;)
>
> Reviewed-by: David Hildenbrand <david@redhat.com>
Will do, thanks!
On 14/05/2020 14.37, Janosch Frank wrote: > Let's initialize the structs at the beginning to ease reading and also > zeroing all other fields. This also makes the compiler stop > compalining about sense_id_ccw.flags being ored into when it's not > initialized. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > Reviewed-by: Pierre Morel <pmorel@linux.ibm.com> > --- > pc-bios/s390-ccw/cio.c | 36 ++++++++++++++++++------------------ > 1 file changed, 18 insertions(+), 18 deletions(-) With the nits mentioned by David fixed: Reviewed-by: Thomas Huth <thuth@redhat.com>
© 2016 - 2026 Red Hat, Inc.