Lines Matching refs:schib

673     SCHIB *schib = &sch->curr_status;  in sch_handle_clear_func()  local
680 schib->pmcw.lpum = 0; in sch_handle_clear_func()
681 schib->pmcw.pom = 0xff; in sch_handle_clear_func()
682 schib->scsw.flags &= ~SCSW_FLAGS_MASK_PNO; in sch_handle_clear_func()
687 schib->scsw.ctrl &= ~SCSW_ACTL_CLEAR_PEND; in sch_handle_clear_func()
688 schib->scsw.ctrl |= SCSW_STCTL_STATUS_PEND; in sch_handle_clear_func()
690 schib->scsw.dstat = 0; in sch_handle_clear_func()
691 schib->scsw.cstat = 0; in sch_handle_clear_func()
692 schib->pmcw.lpum = path; in sch_handle_clear_func()
698 SCHIB *schib = &sch->curr_status; in sch_handle_halt_func() local
708 schib->scsw.ctrl &= ~SCSW_ACTL_HALT_PEND; in sch_handle_halt_func()
709 schib->scsw.ctrl |= SCSW_STCTL_STATUS_PEND; in sch_handle_halt_func()
711 if ((schib->scsw.ctrl & (SCSW_ACTL_SUBCH_ACTIVE | in sch_handle_halt_func()
713 !((schib->scsw.ctrl & SCSW_ACTL_START_PEND) || in sch_handle_halt_func()
714 (schib->scsw.ctrl & SCSW_ACTL_SUSP))) { in sch_handle_halt_func()
715 schib->scsw.dstat = SCSW_DSTAT_DEVICE_END; in sch_handle_halt_func()
717 if ((schib->scsw.ctrl & (SCSW_ACTL_SUBCH_ACTIVE | in sch_handle_halt_func()
719 (schib->scsw.ctrl & SCSW_ACTL_SUSP)) { in sch_handle_halt_func()
720 schib->scsw.cpa = curr_ccw + 8; in sch_handle_halt_func()
722 schib->scsw.cstat = 0; in sch_handle_halt_func()
723 schib->pmcw.lpum = path; in sch_handle_halt_func()
1104 SCHIB *schib = &sch->curr_status; in sch_handle_start_func_virtual() local
1112 if (!(schib->scsw.ctrl & SCSW_ACTL_SUSP)) { in sch_handle_start_func_virtual()
1115 schib->scsw.cstat = 0; in sch_handle_start_func_virtual()
1116 schib->scsw.dstat = 0; in sch_handle_start_func_virtual()
1118 schib->pmcw.intparm = orb->intparm; in sch_handle_start_func_virtual()
1121 schib->scsw.flags |= SCSW_FLAGS_MASK_CC; in sch_handle_start_func_virtual()
1122 schib->scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL; in sch_handle_start_func_virtual()
1123 schib->scsw.ctrl |= (SCSW_STCTL_ALERT | SCSW_STCTL_STATUS_PEND); in sch_handle_start_func_virtual()
1127 schib->scsw.flags |= (sch->ccw_fmt_1) ? SCSW_FLAGS_MASK_FMT : 0; in sch_handle_start_func_virtual()
1132 schib->scsw.ctrl &= ~(SCSW_ACTL_SUSP | SCSW_ACTL_RESUME_PEND); in sch_handle_start_func_virtual()
1145 schib->scsw.ctrl &= ~SCSW_ACTL_START_PEND; in sch_handle_start_func_virtual()
1146 schib->scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL; in sch_handle_start_func_virtual()
1147 schib->scsw.ctrl |= SCSW_STCTL_PRIMARY | SCSW_STCTL_SECONDARY | in sch_handle_start_func_virtual()
1149 schib->scsw.dstat = SCSW_DSTAT_CHANNEL_END | SCSW_DSTAT_DEVICE_END; in sch_handle_start_func_virtual()
1150 schib->scsw.cpa = sch->channel_prog + 8; in sch_handle_start_func_virtual()
1157 schib->scsw.ctrl &= ~SCSW_ACTL_START_PEND; in sch_handle_start_func_virtual()
1158 schib->scsw.dstat = SCSW_DSTAT_UNIT_CHECK; in sch_handle_start_func_virtual()
1161 schib->scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL; in sch_handle_start_func_virtual()
1162 schib->scsw.ctrl |= SCSW_STCTL_PRIMARY | SCSW_STCTL_SECONDARY | in sch_handle_start_func_virtual()
1164 schib->scsw.cpa = sch->channel_prog + 8; in sch_handle_start_func_virtual()
1168 schib->scsw.ctrl &= ~SCSW_ACTL_START_PEND; in sch_handle_start_func_virtual()
1169 schib->scsw.ctrl |= SCSW_ACTL_SUSP; in sch_handle_start_func_virtual()
1173 schib->scsw.ctrl &= ~SCSW_ACTL_START_PEND; in sch_handle_start_func_virtual()
1174 schib->scsw.cstat = SCSW_CSTAT_PROG_CHECK; in sch_handle_start_func_virtual()
1175 schib->scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL; in sch_handle_start_func_virtual()
1176 schib->scsw.ctrl |= SCSW_STCTL_PRIMARY | SCSW_STCTL_SECONDARY | in sch_handle_start_func_virtual()
1178 schib->scsw.cpa = sch->channel_prog + 8; in sch_handle_start_func_virtual()
1237 SCHIB *schib = &sch->curr_status; in sch_handle_start_func_passthrough() local
1239 if (!(schib->scsw.ctrl & SCSW_ACTL_SUSP)) { in sch_handle_start_func_passthrough()
1241 schib->pmcw.intparm = orb->intparm; in sch_handle_start_func_passthrough()
1254 SCHIB *schib = &sch->curr_status; in do_subchannel_work_virtual() local
1256 if (schib->scsw.ctrl & SCSW_FCTL_CLEAR_FUNC) { in do_subchannel_work_virtual()
1258 } else if (schib->scsw.ctrl & SCSW_FCTL_HALT_FUNC) { in do_subchannel_work_virtual()
1260 } else if (schib->scsw.ctrl & SCSW_FCTL_START_FUNC) { in do_subchannel_work_virtual()
1271 SCHIB *schib = &sch->curr_status; in do_subchannel_work_passthrough() local
1273 if (schib->scsw.ctrl & SCSW_FCTL_CLEAR_FUNC) { in do_subchannel_work_passthrough()
1275 } else if (schib->scsw.ctrl & SCSW_FCTL_HALT_FUNC) { in do_subchannel_work_passthrough()
1277 } else if (schib->scsw.ctrl & SCSW_FCTL_START_FUNC) { in do_subchannel_work_passthrough()
1352 IOInstEnding css_do_stsch(SubchDev *sch, SCHIB *schib) in css_do_stsch() argument
1364 copy_schib_to_guest(schib, &sch->curr_status); in css_do_stsch()
1422 SCHIB *schib = &sch->curr_status; in css_do_msch() local
1426 if (!(schib->pmcw.flags & PMCW_FLAGS_MASK_DNV)) { in css_do_msch()
1430 if (schib->scsw.ctrl & SCSW_STCTL_STATUS_PEND) { in css_do_msch()
1434 if (schib->scsw.ctrl & in css_do_msch()
1441 schib->pmcw.intparm = schib_copy.pmcw.intparm; in css_do_msch()
1442 oldflags = schib->pmcw.flags; in css_do_msch()
1443 schib->pmcw.flags &= ~(PMCW_FLAGS_MASK_ISC | PMCW_FLAGS_MASK_ENA | in css_do_msch()
1446 schib->pmcw.flags |= schib_copy.pmcw.flags & in css_do_msch()
1450 schib->pmcw.lpm = schib_copy.pmcw.lpm; in css_do_msch()
1451 schib->pmcw.mbi = schib_copy.pmcw.mbi; in css_do_msch()
1452 schib->pmcw.pom = schib_copy.pmcw.pom; in css_do_msch()
1453 schib->pmcw.chars &= ~(PMCW_CHARS_MASK_MBFC | PMCW_CHARS_MASK_CSENSE); in css_do_msch()
1454 schib->pmcw.chars |= schib_copy.pmcw.chars & in css_do_msch()
1456 schib->mba = schib_copy.mba; in css_do_msch()
1460 && (schib->pmcw.flags & PMCW_FLAGS_MASK_ENA) == 0) { in css_do_msch()
1468 SCHIB *schib = &sch->curr_status; in css_do_xsch() local
1470 if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) { in css_do_xsch()
1474 if (schib->scsw.ctrl & SCSW_CTRL_MASK_STCTL) { in css_do_xsch()
1478 if (!(schib->scsw.ctrl & SCSW_CTRL_MASK_FCTL) || in css_do_xsch()
1479 ((schib->scsw.ctrl & SCSW_CTRL_MASK_FCTL) != SCSW_FCTL_START_FUNC) || in css_do_xsch()
1480 (!(schib->scsw.ctrl & in css_do_xsch()
1482 (schib->scsw.ctrl & SCSW_ACTL_SUBCH_ACTIVE)) { in css_do_xsch()
1487 schib->scsw.ctrl &= ~(SCSW_FCTL_START_FUNC | in css_do_xsch()
1493 schib->scsw.dstat = 0; in css_do_xsch()
1494 schib->scsw.cstat = 0; in css_do_xsch()
1500 SCHIB *schib = &sch->curr_status; in css_do_csch() local
1504 if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) { in css_do_csch()
1512 old_scsw_ctrl = schib->scsw.ctrl; in css_do_csch()
1515 schib->scsw.ctrl &= ~(SCSW_CTRL_MASK_FCTL | SCSW_CTRL_MASK_ACTL); in css_do_csch()
1516 schib->scsw.ctrl |= SCSW_FCTL_CLEAR_FUNC | SCSW_ACTL_CLEAR_PEND; in css_do_csch()
1521 schib->scsw.ctrl = old_scsw_ctrl; in css_do_csch()
1529 SCHIB *schib = &sch->curr_status; in css_do_hsch() local
1533 if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) { in css_do_hsch()
1537 if (((schib->scsw.ctrl & SCSW_CTRL_MASK_STCTL) == SCSW_STCTL_STATUS_PEND) || in css_do_hsch()
1538 (schib->scsw.ctrl & (SCSW_STCTL_PRIMARY | in css_do_hsch()
1544 if (schib->scsw.ctrl & (SCSW_FCTL_HALT_FUNC | SCSW_FCTL_CLEAR_FUNC)) { in css_do_hsch()
1552 old_scsw_ctrl = schib->scsw.ctrl; in css_do_hsch()
1555 schib->scsw.ctrl |= SCSW_FCTL_HALT_FUNC; in css_do_hsch()
1556 schib->scsw.ctrl &= ~SCSW_FCTL_START_FUNC; in css_do_hsch()
1557 if (((schib->scsw.ctrl & SCSW_CTRL_MASK_ACTL) == in css_do_hsch()
1559 ((schib->scsw.ctrl & SCSW_CTRL_MASK_STCTL) == in css_do_hsch()
1561 schib->scsw.ctrl &= ~SCSW_STCTL_STATUS_PEND; in css_do_hsch()
1563 schib->scsw.ctrl |= SCSW_ACTL_HALT_PEND; in css_do_hsch()
1568 schib->scsw.ctrl = old_scsw_ctrl; in css_do_hsch()
1611 SCHIB *schib = &sch->curr_status; in css_do_ssch() local
1615 if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) { in css_do_ssch()
1619 if (schib->scsw.ctrl & SCSW_STCTL_STATUS_PEND) { in css_do_ssch()
1623 if (schib->scsw.ctrl & (SCSW_FCTL_START_FUNC | in css_do_ssch()
1640 old_scsw_ctrl = schib->scsw.ctrl; in css_do_ssch()
1641 old_scsw_flags = schib->scsw.flags; in css_do_ssch()
1644 schib->scsw.ctrl |= (SCSW_FCTL_START_FUNC | SCSW_ACTL_START_PEND); in css_do_ssch()
1645 schib->scsw.flags &= ~SCSW_FLAGS_MASK_PNO; in css_do_ssch()
1650 schib->scsw.ctrl = old_scsw_ctrl; in css_do_ssch()
1651 schib->scsw.flags = old_scsw_flags; in css_do_ssch()
1720 SCHIB *schib = &sch->curr_status; in build_irb_virtual() local
1721 uint16_t stctl = schib->scsw.ctrl & SCSW_CTRL_MASK_STCTL; in build_irb_virtual()
1724 if (schib->scsw.cstat & (SCSW_CSTAT_DATA_CHECK | in build_irb_virtual()
1733 if ((schib->scsw.dstat & SCSW_DSTAT_UNIT_CHECK) && in build_irb_virtual()
1734 (schib->pmcw.chars & PMCW_CHARS_MASK_CSENSE)) { in build_irb_virtual()
1744 SCHIB *schib = &sch->curr_status; in css_do_tsch_get_irb() local
1749 if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) { in css_do_tsch_get_irb()
1753 stctl = schib->scsw.ctrl & SCSW_CTRL_MASK_STCTL; in css_do_tsch_get_irb()
1759 irb.scsw = schib->scsw; in css_do_tsch_get_irb()
1767 p = schib->pmcw; in css_do_tsch_get_irb()
1775 SCHIB *schib = &sch->curr_status; in css_do_tsch_update_subch() local
1780 stctl = schib->scsw.ctrl & SCSW_CTRL_MASK_STCTL; in css_do_tsch_update_subch()
1781 fctl = schib->scsw.ctrl & SCSW_CTRL_MASK_FCTL; in css_do_tsch_update_subch()
1782 actl = schib->scsw.ctrl & SCSW_CTRL_MASK_ACTL; in css_do_tsch_update_subch()
1786 schib->scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL; in css_do_tsch_update_subch()
1790 schib->scsw.ctrl &= ~SCSW_CTRL_MASK_FCTL; in css_do_tsch_update_subch()
1793 schib->scsw.flags &= ~SCSW_FLAGS_MASK_PNO; in css_do_tsch_update_subch()
1794 schib->scsw.ctrl &= ~(SCSW_ACTL_RESUME_PEND | in css_do_tsch_update_subch()
1802 schib->scsw.flags &= ~SCSW_FLAGS_MASK_PNO; in css_do_tsch_update_subch()
1804 schib->scsw.ctrl &= ~(SCSW_ACTL_RESUME_PEND | in css_do_tsch_update_subch()
1810 schib->scsw.ctrl &= ~SCSW_ACTL_RESUME_PEND; in css_do_tsch_update_subch()
1815 if (schib->pmcw.chars & PMCW_CHARS_MASK_CSENSE) { in css_do_tsch_update_subch()
1928 SCHIB *schib = &sch->curr_status; in css_do_rsch() local
1930 if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) { in css_do_rsch()
1934 if (schib->scsw.ctrl & SCSW_STCTL_STATUS_PEND) { in css_do_rsch()
1938 if (((schib->scsw.ctrl & SCSW_CTRL_MASK_FCTL) != SCSW_FCTL_START_FUNC) || in css_do_rsch()
1939 (schib->scsw.ctrl & SCSW_ACTL_RESUME_PEND) || in css_do_rsch()
1940 (!(schib->scsw.ctrl & SCSW_ACTL_SUSP))) { in css_do_rsch()
1949 schib->scsw.ctrl |= SCSW_ACTL_RESUME_PEND; in css_do_rsch()
2050 SCHIB *schib = &sch->curr_status; in css_sch_build_virtual_schib() local
2055 memset(&schib->pmcw, 0, sizeof(PMCW)); in css_sch_build_virtual_schib()
2056 schib->pmcw.flags |= PMCW_FLAGS_MASK_DNV; in css_sch_build_virtual_schib()
2057 schib->pmcw.devno = sch->devno; in css_sch_build_virtual_schib()
2059 schib->pmcw.pim = 0x80; in css_sch_build_virtual_schib()
2060 schib->pmcw.pom = 0xff; in css_sch_build_virtual_schib()
2061 schib->pmcw.pam = 0x80; in css_sch_build_virtual_schib()
2062 schib->pmcw.chpid[0] = chpid; in css_sch_build_virtual_schib()
2067 memset(&schib->scsw, 0, sizeof(SCSW)); in css_sch_build_virtual_schib()
2068 schib->mba = 0; in css_sch_build_virtual_schib()
2069 for (i = 0; i < ARRAY_SIZE(schib->mda); i++) { in css_sch_build_virtual_schib()
2070 schib->mda[i] = 0; in css_sch_build_virtual_schib()
2382 SCHIB *schib = &sch->curr_status; in css_reset_sch() local
2384 if ((schib->pmcw.flags & PMCW_FLAGS_MASK_ENA) != 0 && sch->disable_cb) { in css_reset_sch()
2388 schib->pmcw.intparm = 0; in css_reset_sch()
2389 schib->pmcw.flags &= ~(PMCW_FLAGS_MASK_ISC | PMCW_FLAGS_MASK_ENA | in css_reset_sch()
2392 schib->pmcw.flags |= PMCW_FLAGS_MASK_DNV; in css_reset_sch()
2393 schib->pmcw.devno = sch->devno; in css_reset_sch()
2394 schib->pmcw.pim = 0x80; in css_reset_sch()
2395 schib->pmcw.lpm = schib->pmcw.pim; in css_reset_sch()
2396 schib->pmcw.pnom = 0; in css_reset_sch()
2397 schib->pmcw.lpum = 0; in css_reset_sch()
2398 schib->pmcw.mbi = 0; in css_reset_sch()
2399 schib->pmcw.pom = 0xff; in css_reset_sch()
2400 schib->pmcw.pam = 0x80; in css_reset_sch()
2401 schib->pmcw.chars &= ~(PMCW_CHARS_MASK_MBFC | PMCW_CHARS_MASK_XMWME | in css_reset_sch()
2404 memset(&schib->scsw, 0, sizeof(schib->scsw)); in css_reset_sch()
2405 schib->mba = 0; in css_reset_sch()
2559 SCHIB *schib = &sch->curr_status; in css_sch_get_chpids() local
2578 for (i = 0; i < ARRAY_SIZE(schib->pmcw.chpid); i++) { in css_sch_get_chpids()
2579 schib->pmcw.chpid[i] = chpid[i]; in css_sch_get_chpids()
2593 SCHIB *schib = &sch->curr_status; in css_sch_get_path_masks() local
2610 schib->pmcw.pim = pim; in css_sch_get_path_masks()
2611 schib->pmcw.pam = pam; in css_sch_get_path_masks()
2612 schib->pmcw.pom = pom; in css_sch_get_path_masks()
2654 SCHIB *schib = &sch->curr_status; in css_sch_build_schib() local
2659 memset(&schib->pmcw, 0, sizeof(PMCW)); in css_sch_build_schib()
2660 schib->pmcw.flags |= PMCW_FLAGS_MASK_DNV; in css_sch_build_schib()
2662 schib->pmcw.devno = sch->devno; in css_sch_build_schib()
2677 for (i = 0; i < ARRAY_SIZE(schib->pmcw.chpid); i++) { in css_sch_build_schib()
2678 if (schib->pmcw.chpid[i] && !css->chpids[schib->pmcw.chpid[i]].in_use) { in css_sch_build_schib()
2679 ret = css_sch_get_chpid_type(schib->pmcw.chpid[i], &type, dev_id); in css_sch_build_schib()
2683 css_add_chpid(sch->cssid, schib->pmcw.chpid[i], type, false); in css_sch_build_schib()
2687 memset(&schib->scsw, 0, sizeof(SCSW)); in css_sch_build_schib()
2688 schib->mba = 0; in css_sch_build_schib()
2689 for (i = 0; i < ARRAY_SIZE(schib->mda); i++) { in css_sch_build_schib()
2690 schib->mda[i] = 0; in css_sch_build_schib()