pc-bios: s390x: cio.c cleanup and compile fix
Let's initialize the structs at the beginning to ease reading and also zeroing all other fields. This also makes the compiler stop complaining 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> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: David Hildenbrand <david@redhat.com> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Message-Id: <20200624075226.92728-2-frankja@linux.ibm.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
fc1bff9589
commit
8c6cc7b9df
@ -49,13 +49,13 @@ void enable_subchannel(SubChannelId schid)
|
|||||||
|
|
||||||
uint16_t cu_type(SubChannelId schid)
|
uint16_t cu_type(SubChannelId schid)
|
||||||
{
|
{
|
||||||
Ccw1 sense_id_ccw;
|
|
||||||
SenseId sense_data;
|
SenseId sense_data;
|
||||||
|
Ccw1 sense_id_ccw = {
|
||||||
sense_id_ccw.cmd_code = CCW_CMD_SENSE_ID;
|
.cmd_code = CCW_CMD_SENSE_ID,
|
||||||
sense_id_ccw.cda = ptr2u32(&sense_data);
|
.flags = CCW_FLAG_SLI,
|
||||||
sense_id_ccw.count = sizeof(sense_data);
|
.count = sizeof(sense_data),
|
||||||
sense_id_ccw.flags |= CCW_FLAG_SLI;
|
.cda = ptr2u32(&sense_data),
|
||||||
|
};
|
||||||
|
|
||||||
if (do_cio(schid, CU_TYPE_UNKNOWN, ptr2u32(&sense_id_ccw), CCW_FMT1)) {
|
if (do_cio(schid, CU_TYPE_UNKNOWN, ptr2u32(&sense_id_ccw), CCW_FMT1)) {
|
||||||
panic("Failed to run SenseID CCw\n");
|
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,
|
int basic_sense(SubChannelId schid, uint16_t cutype, void *sense_data,
|
||||||
uint16_t data_size)
|
uint16_t data_size)
|
||||||
{
|
{
|
||||||
Ccw1 senseCcw;
|
Ccw1 senseCcw = {
|
||||||
|
.cmd_code = CCW_CMD_BASIC_SENSE,
|
||||||
|
.count = data_size,
|
||||||
|
.cda = ptr2u32(sense_data),
|
||||||
|
};
|
||||||
Irb irb;
|
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);
|
return __do_cio(schid, ptr2u32(&senseCcw), CCW_FMT1, &irb);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,7 +314,17 @@ static void print_irb_err(Irb *irb)
|
|||||||
*/
|
*/
|
||||||
static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *irb)
|
static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *irb)
|
||||||
{
|
{
|
||||||
CmdOrb orb = {};
|
/*
|
||||||
|
* QEMU's CIO implementation requires prefetch and 64-bit idaws. We
|
||||||
|
* allow all paths.
|
||||||
|
*/
|
||||||
|
CmdOrb orb = {
|
||||||
|
.fmt = fmt,
|
||||||
|
.pfch = 1,
|
||||||
|
.c64 = 1,
|
||||||
|
.lpm = 0xFF,
|
||||||
|
.cpa = ccw_addr,
|
||||||
|
};
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
IPL_assert(fmt == 0 || fmt == 1, "Invalid ccw format");
|
IPL_assert(fmt == 0 || fmt == 1, "Invalid ccw format");
|
||||||
@ -324,12 +334,6 @@ static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *irb)
|
|||||||
IPL_assert(ccw_addr <= 0xFFFFFF - 8, "Invalid ccw address");
|
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);
|
rc = ssch(schid, &orb);
|
||||||
if (rc == 1 || rc == 2) {
|
if (rc == 1 || rc == 2) {
|
||||||
/* Subchannel status pending or busy. Eat status and ask for retry. */
|
/* Subchannel status pending or busy. Eat status and ask for retry. */
|
||||||
|
Loading…
Reference in New Issue
Block a user