/openbmc/linux/arch/s390/include/asm/ |
H A D | scsw.h | 140 union scsw { union 230 static inline int scsw_is_tm(union scsw *scsw) in scsw_is_tm() argument 232 return css_general_characteristics.fcx && (scsw->tm.x == 1); in scsw_is_tm() 242 static inline u32 scsw_key(union scsw *scsw) in scsw_key() argument 244 if (scsw_is_tm(scsw)) in scsw_key() 245 return scsw->tm.key; in scsw_key() 247 return scsw->cmd.key; in scsw_key() 257 static inline u32 scsw_eswf(union scsw *scsw) in scsw_eswf() argument 259 if (scsw_is_tm(scsw)) in scsw_eswf() 260 return scsw->tm.eswf; in scsw_eswf() [all …]
|
/openbmc/linux/drivers/s390/cio/ |
H A D | device_status.c | 34 if (!scsw_is_valid_cstat(&irb->scsw) || in ccw_device_msg_control_check() 35 !(scsw_cstat(&irb->scsw) & (SCHN_STAT_CHN_DATA_CHK | in ccw_device_msg_control_check() 44 scsw_dstat(&irb->scsw), scsw_cstat(&irb->scsw)); in ccw_device_msg_control_check() 83 cdev->private->dma_area->irb.scsw.cmd.ectl = 0; in ccw_device_accumulate_ecw() 84 if ((irb->scsw.cmd.stctl & SCSW_STCTL_ALERT_STATUS) && in ccw_device_accumulate_ecw() 85 !(irb->scsw.cmd.stctl & SCSW_STCTL_INTER_STATUS)) in ccw_device_accumulate_ecw() 86 cdev->private->dma_area->irb.scsw.cmd.ectl = irb->scsw.cmd.ectl; in ccw_device_accumulate_ecw() 88 if (!cdev->private->dma_area->irb.scsw.cmd.ectl) in ccw_device_accumulate_ecw() 100 if (!irb->scsw.cmd.eswf && in ccw_device_accumulate_esw_valid() 101 (irb->scsw.cmd.stctl == SCSW_STCTL_STATUS_PEND)) in ccw_device_accumulate_esw_valid() [all …]
|
H A D | ccwreq.c | 173 struct cmd_scsw *scsw = &irb->scsw.cmd; in ccwreq_status() local 180 if (scsw->fctl & (SCSW_FCTL_HALT_FUNC | SCSW_FCTL_CLEAR_FUNC)) in ccwreq_status() 183 if (scsw->cc == 3 || scsw->pno) in ccwreq_status() 215 if (scsw->cstat != 0) in ccwreq_status() 218 if (scsw->dstat & ~(DEV_STAT_CHN_END | DEV_STAT_DEV_END)) in ccwreq_status() 221 if (!(scsw->dstat & DEV_STAT_DEV_END)) in ccwreq_status() 224 if (scsw->cc == 1 && (scsw->stctl & SCSW_STCTL_ALERT_STATUS)) in ccwreq_status() 340 scsw_cstat(&sch->schib.scsw), in ccw_request_timeout() 341 scsw_dstat(&sch->schib.scsw), in ccw_request_timeout()
|
H A D | vfio_ccw_fsm.c | 49 sch->schib.scsw.cmd.actl |= SCSW_ACTL_START_PEND; in fsm_io_helper() 101 sch->schib.scsw.cmd.actl |= SCSW_ACTL_HALT_PEND; in fsm_do_halt() 140 sch->schib.scsw.cmd.actl = SCSW_ACTL_CLEAR_PEND; in fsm_do_clear() 247 union scsw *scsw = &private->scsw; in fsm_io_request() local 253 memcpy(scsw, io_region->scsw_area, sizeof(*scsw)); in fsm_io_request() 255 if (scsw->cmd.fctl & SCSW_FCTL_START_FUNC) { in fsm_io_request() 304 } else if (scsw->cmd.fctl & SCSW_FCTL_HALT_FUNC) { in fsm_io_request() 312 } else if (scsw->cmd.fctl & SCSW_FCTL_CLEAR_FUNC) { in fsm_io_request() 324 trace_vfio_ccw_fsm_io_request(scsw->cmd.fctl, schid, in fsm_io_request()
|
H A D | device_fsm.c | 458 struct cmd_scsw *scsw = &irb->scsw.cmd; in create_fake_irb() local 459 scsw->cc = 1; in create_fake_irb() 460 scsw->fctl = SCSW_FCTL_START_FUNC; in create_fake_irb() 461 scsw->actl = SCSW_ACTL_START_PEND; in create_fake_irb() 462 scsw->stctl = SCSW_STCTL_STATUS_PEND; in create_fake_irb() 464 struct tm_scsw *scsw = &irb->scsw.tm; in create_fake_irb() local 465 scsw->x = 1; in create_fake_irb() 466 scsw->cc = 1; in create_fake_irb() 467 scsw->fctl = SCSW_FCTL_START_FUNC; in create_fake_irb() 468 scsw->actl = SCSW_ACTL_START_PEND; in create_fake_irb() [all …]
|
H A D | cio.c | 162 sch->schib.scsw.cmd.actl |= SCSW_ACTL_START_PEND; in cio_start_key() 199 sch->schib.scsw.cmd.actl |= SCSW_ACTL_RESUME_PEND; in cio_resume() 238 sch->schib.scsw.cmd.actl |= SCSW_ACTL_HALT_PEND; in cio_halt() 272 sch->schib.scsw.cmd.actl |= SCSW_ACTL_CLEAR_PEND; in cio_clear() 344 if (!(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_HALT_PEND) && in cio_cancel_halt_clear() 345 !(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_CLEAR_PEND)) { in cio_cancel_halt_clear() 346 if (!scsw_is_tm(&sch->schib.scsw)) { in cio_cancel_halt_clear() 358 if (!(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_CLEAR_PEND)) { in cio_cancel_halt_clear() 557 memcpy (&sch->schib.scsw, &irb->scsw, sizeof (irb->scsw)); in do_cio_interrupt() 596 memcpy(&sch->schib.scsw, &irb->scsw, sizeof(union scsw)); in cio_tsch()
|
H A D | eadm_sch.c | 76 sch->schib.scsw.eadm.actl |= SCSW_ACTL_START_PEND; in eadm_subchannel_start() 95 sch->schib.scsw.eadm.actl |= SCSW_ACTL_CLEAR_PEND; in eadm_subchannel_clear() 125 struct eadm_scsw *scsw = &sch->schib.scsw.eadm; in eadm_subchannel_irq() local 134 if ((scsw->stctl & (SCSW_STCTL_ALERT_STATUS | SCSW_STCTL_STATUS_PEND)) in eadm_subchannel_irq() 135 && scsw->eswf == 1 && irb->esw.eadm.erw.r) in eadm_subchannel_irq() 138 if (scsw->fctl & SCSW_FCTL_CLEAR_FUNC) in eadm_subchannel_irq() 150 scm_irq_handler(phys_to_virt(scsw->aob), error); in eadm_subchannel_irq()
|
H A D | vfio_ccw_cp.h | 47 void cp_update_scsw(struct channel_program *cp, union scsw *scsw);
|
H A D | trace.h | 128 __entry->scsw_dcc = scsw_cc(&irb->scsw); 129 __entry->scsw_pno = scsw_pno(&irb->scsw); 130 __entry->scsw_fctl = scsw_fctl(&irb->scsw); 131 __entry->scsw_actl = scsw_actl(&irb->scsw); 132 __entry->scsw_stctl = scsw_stctl(&irb->scsw); 133 __entry->scsw_dstat = scsw_dstat(&irb->scsw); 134 __entry->scsw_cstat = scsw_cstat(&irb->scsw);
|
H A D | device_id.c | 148 struct cmd_scsw *scsw = &cdev->private->dma_area->irb.scsw.cmd; in snsid_check() local 149 int len = sizeof(struct senseid) - scsw->count; in snsid_check()
|
H A D | chsc_sch.c | 176 return sch->schib.pmcw.ena && !scsw_fctl(&sch->schib.scsw); in chsc_subchannel_match_next_free() 232 sch->schib.scsw.cmd.fctl |= SCSW_FCTL_START_FUNC; in chsc_async() 267 if (!(scsw_stctl(&request->irb.scsw) & SCSW_STCTL_STATUS_PEND)) in chsc_examine_irb() 269 backed_up = scsw_cstat(&request->irb.scsw) & SCHN_STAT_CHAIN_CHECK; in chsc_examine_irb() 270 request->irb.scsw.cmd.cstat &= ~SCHN_STAT_CHAIN_CHECK; in chsc_examine_irb() 271 if (scsw_cstat(&request->irb.scsw) == 0) in chsc_examine_irb() 275 if (scsw_cstat(&request->irb.scsw) & SCHN_STAT_PROG_CHECK) in chsc_examine_irb() 277 if (scsw_cstat(&request->irb.scsw) & SCHN_STAT_PROT_CHECK) in chsc_examine_irb() 279 if (scsw_cstat(&request->irb.scsw) & SCHN_STAT_CHN_DATA_CHK) in chsc_examine_irb() 281 if (scsw_cstat(&request->irb.scsw) & SCHN_STAT_CHN_CTRL_CHK) in chsc_examine_irb()
|
H A D | cio.h | 68 union scsw scsw; /* subchannel status word */ member
|
H A D | vfio_ccw_private.h | 120 union scsw scsw; member
|
H A D | device_ops.c | 217 ((sch->schib.scsw.cmd.stctl & SCSW_STCTL_PRIM_STATUS) && in ccw_device_start_timeout_key() 218 !(sch->schib.scsw.cmd.stctl & SCSW_STCTL_SEC_STATUS))) in ccw_device_start_timeout_key() 417 !(sch->schib.scsw.cmd.actl & SCSW_ACTL_SUSPENDED)) in ccw_device_resume() 693 if (!scsw_is_tm(&sch->schib.scsw) || in ccw_device_tm_intrg() 694 !(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_START_PEND)) in ccw_device_tm_intrg()
|
/openbmc/qemu/pc-bios/s390-ccw/ |
H A D | cio.c | 84 if (irb->scsw.cstat) { in irb_error() 87 return irb->scsw.dstat != (SCSW_DSTAT_DEVEND | SCSW_DSTAT_CHEND); in irb_error() 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() [all …]
|
H A D | cio.h | 64 struct scsw { struct 119 struct scsw scsw; /* subchannel status word */ member 339 #define unit_check(irb) ((irb)->scsw.dstat & SCSW_DSTAT_UCHK) 340 #define iface_ctrl_check(irb) ((irb)->scsw.cstat & SCSW_CSTAT_ICCHK) 344 struct scsw scsw; member
|
/openbmc/qemu/hw/s390x/ |
H A D | css.c | 120 VMSTATE_STRUCT(scsw, SCHIB, 0, vmstate_scsw, SCSW), 634 if (!(sch->curr_status.scsw.ctrl & SCSW_STCTL_STATUS_PEND)) { in css_conditional_io_interrupt() 640 sch->curr_status.scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL; in css_conditional_io_interrupt() 641 sch->curr_status.scsw.ctrl |= in css_conditional_io_interrupt() 711 schib->scsw.flags &= ~SCSW_FLAGS_MASK_PNO; in sch_handle_clear_func() 716 schib->scsw.ctrl &= ~SCSW_ACTL_CLEAR_PEND; in sch_handle_clear_func() 717 schib->scsw.ctrl |= SCSW_STCTL_STATUS_PEND; in sch_handle_clear_func() 719 schib->scsw.dstat = 0; in sch_handle_clear_func() 720 schib->scsw.cstat = 0; in sch_handle_clear_func() 737 schib->scsw.ctrl &= ~SCSW_ACTL_HALT_PEND; in sch_handle_halt_func() [all …]
|
H A D | 3270-ccw.c | 36 ccw_dev->sch->curr_status.scsw.count = ccw->count - len; in handle_payload_3270_read() 58 ccw_dev->sch->curr_status.scsw.count = ccw->count - len; in handle_payload_3270_write() 87 sch->curr_status.scsw.dstat = SCSW_DSTAT_UNIT_CHECK; in emulated_ccw_3270_cb() 89 schib->scsw.ctrl &= ~SCSW_ACTL_START_PEND; in emulated_ccw_3270_cb() 90 schib->scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL; in emulated_ccw_3270_cb() 91 schib->scsw.ctrl |= SCSW_STCTL_PRIMARY | SCSW_STCTL_SECONDARY | in emulated_ccw_3270_cb()
|
H A D | virtio-ccw.c | 313 sch->curr_status.scsw.count = 0; in virtio_ccw_handle_set_vq() 407 sch->curr_status.scsw.count = ccw.count - sizeof(features); in virtio_ccw_cb() 455 sch->curr_status.scsw.count = ccw.count - sizeof(features); in virtio_ccw_cb() 473 sch->curr_status.scsw.count = ccw.count - len; in virtio_ccw_cb() 491 sch->curr_status.scsw.count = ccw.count - len; in virtio_ccw_cb() 511 sch->curr_status.scsw.count = ccw.count - sizeof(vdev->status); in virtio_ccw_cb() 543 sch->curr_status.scsw.count = ccw.count - sizeof(status); in virtio_ccw_cb() 581 sch->curr_status.scsw.count = ccw.count - sizeof(indicators); in virtio_ccw_cb() 605 sch->curr_status.scsw.count = ccw.count - sizeof(indicators); in virtio_ccw_cb() 637 sch->curr_status.scsw.count = ccw.count - sizeof(vq_config); in virtio_ccw_cb() [all …]
|
/openbmc/qemu/hw/vfio/ |
H A D | ccw.c | 96 memcpy(region->scsw_area, &sch->curr_status.scsw, sizeof(SCSW)); in vfio_ccw_handle_request() 163 if (s->scsw.flags & SCSW_FLAGS_MASK_PNO) { in vfio_ccw_handle_store() 164 schib->scsw.flags |= SCSW_FLAGS_MASK_PNO; in vfio_ccw_handle_store() 331 schib->scsw.flags |= SCSW_FLAGS_MASK_CC; in vfio_ccw_io_notifier_handler() 332 schib->scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL; in vfio_ccw_io_notifier_handler() 333 schib->scsw.ctrl |= (SCSW_STCTL_ALERT | SCSW_STCTL_STATUS_PEND); in vfio_ccw_io_notifier_handler() 337 schib->scsw.ctrl &= ~SCSW_ACTL_START_PEND; in vfio_ccw_io_notifier_handler() 338 schib->scsw.cstat = SCSW_CSTAT_DATA_CHECK; in vfio_ccw_io_notifier_handler() 339 schib->scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL; in vfio_ccw_io_notifier_handler() 340 schib->scsw.ctrl |= SCSW_STCTL_PRIMARY | SCSW_STCTL_SECONDARY | in vfio_ccw_io_notifier_handler() [all …]
|
/openbmc/linux/drivers/s390/block/ |
H A D | dasd_fba.c | 242 if ((irb->scsw.cmd.dstat & mask) == mask) in dasd_fba_check_for_device_change() 648 scsw_is_tm(&irb->scsw) ? "t" : "c", in dasd_fba_dump_sense_dbf() 649 scsw_cc(&irb->scsw), scsw_cstat(&irb->scsw), in dasd_fba_dump_sense_dbf() 650 scsw_dstat(&irb->scsw), sense[0], sense[1], in dasd_fba_dump_sense_dbf() 678 irb->scsw.cmd.cstat, irb->scsw.cmd.dstat); in dasd_fba_dump_sense() 682 (void *) (addr_t) irb->scsw.cmd.cpa); in dasd_fba_dump_sense() 724 if (act < ((struct ccw1 *)(addr_t) irb->scsw.cmd.cpa) - 2) { in dasd_fba_dump_sense() 725 act = ((struct ccw1 *)(addr_t) irb->scsw.cmd.cpa) - 2; in dasd_fba_dump_sense() 728 end = min((struct ccw1 *)(addr_t) irb->scsw.cmd.cpa + 2, last); in dasd_fba_dump_sense()
|
/openbmc/linux/drivers/s390/char/ |
H A D | tape_core.c | 875 irb->scsw.cmd.dstat, irb->scsw.cmd.cstat); in tape_dump_sense_dbf() 1090 if (irb->scsw.cmd.cc != 0 && in __tape_do_irq() 1091 (irb->scsw.cmd.fctl & SCSW_FCTL_START_FUNC) && in __tape_do_irq() 1094 device->cdev_id, irb->scsw.cmd.cc, irb->scsw.cmd.fctl); in __tape_do_irq() 1102 request->rescnt = irb->scsw.cmd.count; in __tape_do_irq() 1103 else if ((irb->scsw.cmd.dstat == 0x85 || irb->scsw.cmd.dstat == 0x80) && in __tape_do_irq() 1118 if (irb->scsw.cmd.dstat != 0x0c) { in __tape_do_irq()
|
/openbmc/linux/drivers/s390/net/ |
H A D | lcs.c | 1313 cstat = irb->scsw.cmd.cstat; in lcs_get_problem() 1314 dstat = irb->scsw.cmd.dstat; in lcs_get_problem() 1374 cstat = irb->scsw.cmd.cstat; in lcs_irq() 1375 dstat = irb->scsw.cmd.dstat; in lcs_irq() 1377 LCS_DBF_TEXT_(5, trace, "%4x%4x", irb->scsw.cmd.cstat, in lcs_irq() 1378 irb->scsw.cmd.dstat); in lcs_irq() 1379 LCS_DBF_TEXT_(5, trace, "%4x%4x", irb->scsw.cmd.fctl, in lcs_irq() 1380 irb->scsw.cmd.actl); in lcs_irq() 1400 (irb->scsw.cmd.fctl & SCSW_FCTL_START_FUNC) && in lcs_irq() 1401 (irb->scsw.cmd.cpa != 0)) { in lcs_irq() [all …]
|
/openbmc/qemu/include/hw/s390x/ |
H A D | css.h | 149 sch->curr_status.scsw.ctrl &= ~(SCSW_ACTL_DEVICE_ACTIVE | in sch_gen_unit_exception() 151 sch->curr_status.scsw.ctrl |= SCSW_STCTL_PRIMARY | in sch_gen_unit_exception() 155 sch->curr_status.scsw.cpa = sch->channel_prog + 8; in sch_gen_unit_exception() 156 sch->curr_status.scsw.dstat = SCSW_DSTAT_UNIT_EXCEP; in sch_gen_unit_exception()
|
/openbmc/qemu/hw/char/ |
H A D | terminal3270.c | 71 sch->curr_status.scsw.dstat = SCSW_DSTAT_DEVICE_END; in TN3270_handshake_done() 137 sch->curr_status.scsw.dstat = SCSW_DSTAT_ATTENTION; in terminal_read() 169 sch->curr_status.scsw.dstat = SCSW_DSTAT_DEVICE_END; in chr_event()
|