Lines Matching refs:irb
23 static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *irb);
77 Irb irb; in basic_sense() local
79 return __do_cio(schid, ptr2u32(&senseCcw), CCW_FMT1, &irb); in basic_sense()
82 static bool irb_error(Irb *irb) in irb_error() argument
84 if (irb->scsw.cstat) { in irb_error()
87 return irb->scsw.dstat != (SCSW_DSTAT_DEVEND | SCSW_DSTAT_CHEND); in irb_error()
180 static void print_irb_err(Irb *irb) in print_irb_err() argument
182 uint64_t this_ccw = *(uint64_t *)u32toptr(irb->scsw.cpa); in print_irb_err()
183 uint64_t prev_ccw = *(uint64_t *)u32toptr(irb->scsw.cpa - 8); in print_irb_err()
189 if (irb->scsw.ctrl & SCSW_FCTL_START_FUNC) { in print_irb_err()
192 if (irb->scsw.ctrl & SCSW_FCTL_HALT_FUNC) { in print_irb_err()
195 if (irb->scsw.ctrl & SCSW_FCTL_CLEAR_FUNC) { in print_irb_err()
202 if (irb->scsw.ctrl & SCSW_ACTL_RESUME_PEND) { in print_irb_err()
205 if (irb->scsw.ctrl & SCSW_ACTL_START_PEND) { in print_irb_err()
208 if (irb->scsw.ctrl & SCSW_ACTL_HALT_PEND) { in print_irb_err()
211 if (irb->scsw.ctrl & SCSW_ACTL_CLEAR_PEND) { in print_irb_err()
214 if (irb->scsw.ctrl & SCSW_ACTL_CH_ACTIVE) { in print_irb_err()
217 if (irb->scsw.ctrl & SCSW_ACTL_DEV_ACTIVE) { in print_irb_err()
220 if (irb->scsw.ctrl & SCSW_ACTL_SUSPENDED) { in print_irb_err()
227 if (irb->scsw.ctrl & SCSW_SCTL_ALERT) { in print_irb_err()
230 if (irb->scsw.ctrl & SCSW_SCTL_INTERMED) { in print_irb_err()
233 if (irb->scsw.ctrl & SCSW_SCTL_PRIMARY) { in print_irb_err()
236 if (irb->scsw.ctrl & SCSW_SCTL_SECONDARY) { in print_irb_err()
239 if (irb->scsw.ctrl & SCSW_SCTL_STATUS_PEND) { in print_irb_err()
246 if (irb->scsw.dstat & SCSW_DSTAT_ATTN) { in print_irb_err()
249 if (irb->scsw.dstat & SCSW_DSTAT_STATMOD) { in print_irb_err()
252 if (irb->scsw.dstat & SCSW_DSTAT_CUEND) { in print_irb_err()
255 if (irb->scsw.dstat & SCSW_DSTAT_BUSY) { in print_irb_err()
258 if (irb->scsw.dstat & SCSW_DSTAT_CHEND) { in print_irb_err()
261 if (irb->scsw.dstat & SCSW_DSTAT_DEVEND) { in print_irb_err()
264 if (irb->scsw.dstat & SCSW_DSTAT_UCHK) { in print_irb_err()
267 if (irb->scsw.dstat & SCSW_DSTAT_UEXCP) { in print_irb_err()
274 if (irb->scsw.cstat & SCSW_CSTAT_PCINT) { in print_irb_err()
277 if (irb->scsw.cstat & SCSW_CSTAT_BADLEN) { in print_irb_err()
280 if (irb->scsw.cstat & SCSW_CSTAT_PROGCHK) { in print_irb_err()
283 if (irb->scsw.cstat & SCSW_CSTAT_PROTCHK) { in print_irb_err()
286 if (irb->scsw.cstat & SCSW_CSTAT_CHDCHK) { in print_irb_err()
289 if (irb->scsw.cstat & SCSW_CSTAT_CHCCHK) { in print_irb_err()
292 if (irb->scsw.cstat & SCSW_CSTAT_ICCHK) { in print_irb_err()
295 if (irb->scsw.cstat & SCSW_CSTAT_CHAINCHK) { in print_irb_err()
300 printf(" cpa= 0x%X\n", irb->scsw.cpa); in print_irb_err()
310 static int __do_cio(SubChannelId schid, uint32_t ccw_addr, int fmt, Irb *irb) in __do_cio() argument
335 tsch(schid, irb); in __do_cio()
346 rc = tsch(schid, irb); in __do_cio()
372 Irb irb = {}; in do_cio() local
377 rc = __do_cio(schid, ccw_addr, fmt, &irb); in do_cio()
388 if (!irb_error(&irb)) { in do_cio()
396 if ((unit_check(&irb) || iface_ctrl_check(&irb)) && retries <= 2) { in do_cio()
397 if (unit_check(&irb)) { in do_cio()
410 print_irb_err(&irb); in do_cio()