@@ -49,13 +49,13 @@ void enable_subchannel(SubChannelId schid)
49
49
50
50
uint16_t cu_type (SubChannelId schid )
51
51
{
52
- Ccw1 sense_id_ccw ;
53
52
SenseId sense_data ;
54
-
55
- sense_id_ccw .cmd_code = CCW_CMD_SENSE_ID ;
56
- sense_id_ccw .cda = ptr2u32 (& sense_data );
57
- sense_id_ccw .count = sizeof (sense_data );
58
- sense_id_ccw .flags |= CCW_FLAG_SLI ;
53
+ Ccw1 sense_id_ccw = {
54
+ .cmd_code = CCW_CMD_SENSE_ID ,
55
+ .flags = CCW_FLAG_SLI ,
56
+ .count = sizeof (sense_data ),
57
+ .cda = ptr2u32 (& sense_data ),
58
+ };
59
59
60
60
if (do_cio (schid , CU_TYPE_UNKNOWN , ptr2u32 (& sense_id_ccw ), CCW_FMT1 )) {
61
61
panic ("Failed to run SenseID CCw\n" );
@@ -67,13 +67,13 @@ uint16_t cu_type(SubChannelId schid)
67
67
int basic_sense (SubChannelId schid , uint16_t cutype , void * sense_data ,
68
68
uint16_t data_size )
69
69
{
70
- Ccw1 senseCcw ;
70
+ Ccw1 senseCcw = {
71
+ .cmd_code = CCW_CMD_BASIC_SENSE ,
72
+ .count = data_size ,
73
+ .cda = ptr2u32 (sense_data ),
74
+ };
71
75
Irb irb ;
72
76
73
- senseCcw .cmd_code = CCW_CMD_BASIC_SENSE ;
74
- senseCcw .cda = ptr2u32 (sense_data );
75
- senseCcw .count = data_size ;
76
-
77
77
return __do_cio (schid , ptr2u32 (& senseCcw ), CCW_FMT1 , & irb );
78
78
}
79
79
@@ -314,7 +314,17 @@ static void print_irb_err(Irb *irb)
314
314
*/
315
315
static int __do_cio (SubChannelId schid , uint32_t ccw_addr , int fmt , Irb * irb )
316
316
{
317
- CmdOrb orb = {};
317
+ /*
318
+ * QEMU's CIO implementation requires prefetch and 64-bit idaws. We
319
+ * allow all paths.
320
+ */
321
+ CmdOrb orb = {
322
+ .fmt = fmt ,
323
+ .pfch = 1 ,
324
+ .c64 = 1 ,
325
+ .lpm = 0xFF ,
326
+ .cpa = ccw_addr ,
327
+ };
318
328
int rc ;
319
329
320
330
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)
324
334
IPL_assert (ccw_addr <= 0xFFFFFF - 8 , "Invalid ccw address" );
325
335
}
326
336
327
- orb .fmt = fmt ;
328
- orb .pfch = 1 ; /* QEMU's cio implementation requires prefetch */
329
- orb .c64 = 1 ; /* QEMU's cio implementation requires 64-bit idaws */
330
- orb .lpm = 0xFF ; /* All paths allowed */
331
- orb .cpa = ccw_addr ;
332
-
333
337
rc = ssch (schid , & orb );
334
338
if (rc == 1 || rc == 2 ) {
335
339
/* Subchannel status pending or busy. Eat status and ask for retry. */
0 commit comments