Searched refs:schib (Results 1 - 17 of 17) sorted by relevance

/linux-4.1.27/drivers/s390/cio/
H A Dcio.c119 CIO_HEX_EVENT(0, &sch->schib, sizeof (struct schib)); cio_start_handle_notoper()
164 sch->schib.scsw.cmd.actl |= SCSW_ACTL_START_PEND; cio_start_key()
199 sch->schib.scsw.cmd.actl |= SCSW_ACTL_RESUME_PEND; cio_resume()
237 sch->schib.scsw.cmd.actl |= SCSW_ACTL_HALT_PEND; cio_halt()
270 sch->schib.scsw.cmd.actl |= SCSW_ACTL_CLEAR_PEND; cio_clear()
315 static void cio_apply_config(struct subchannel *sch, struct schib *schib) cio_apply_config() argument
317 schib->pmcw.intparm = sch->config.intparm; cio_apply_config()
318 schib->pmcw.mbi = sch->config.mbi; cio_apply_config()
319 schib->pmcw.isc = sch->config.isc; cio_apply_config()
320 schib->pmcw.ena = sch->config.ena; cio_apply_config()
321 schib->pmcw.mme = sch->config.mme; cio_apply_config()
322 schib->pmcw.mp = sch->config.mp; cio_apply_config()
323 schib->pmcw.csense = sch->config.csense; cio_apply_config()
324 schib->pmcw.mbfc = sch->config.mbfc; cio_apply_config()
326 schib->mba = sch->config.mba; cio_apply_config()
329 static int cio_check_config(struct subchannel *sch, struct schib *schib) cio_check_config() argument
331 return (schib->pmcw.intparm == sch->config.intparm) && cio_check_config()
332 (schib->pmcw.mbi == sch->config.mbi) && cio_check_config()
333 (schib->pmcw.isc == sch->config.isc) && cio_check_config()
334 (schib->pmcw.ena == sch->config.ena) && cio_check_config()
335 (schib->pmcw.mme == sch->config.mme) && cio_check_config()
336 (schib->pmcw.mp == sch->config.mp) && cio_check_config()
337 (schib->pmcw.csense == sch->config.csense) && cio_check_config()
338 (schib->pmcw.mbfc == sch->config.mbfc) && cio_check_config()
339 (!sch->config.mbfc || (schib->mba == sch->config.mba)); cio_check_config()
348 struct schib schib; cio_commit_config() local
351 if (stsch_err(sch->schid, &schib) || !css_sch_is_valid(&schib)) cio_commit_config()
355 /* copy desired changes to local schib */ cio_commit_config()
356 cio_apply_config(sch, &schib); cio_commit_config()
357 ccode = msch_err(sch->schid, &schib); cio_commit_config()
362 if (stsch_err(sch->schid, &schib) || cio_commit_config()
363 !css_sch_is_valid(&schib)) cio_commit_config()
365 if (cio_check_config(sch, &schib)) { cio_commit_config()
366 /* commit changes from local schib */ cio_commit_config()
367 memcpy(&sch->schib, &schib, sizeof(schib)); cio_commit_config()
389 * cio_update_schib - Perform stsch and update schib if subchannel is valid.
395 struct schib schib; cio_update_schib() local
397 if (stsch_err(sch->schid, &schib) || !css_sch_is_valid(&schib)) cio_update_schib()
400 memcpy(&sch->schib, &schib, sizeof(schib)); cio_update_schib()
466 if (is_blacklisted(sch->schid.ssid, sch->schib.pmcw.dev)) { cio_check_devno_blacklisted()
473 sch->schib.pmcw.dev, sch->schid.ssid); cio_check_devno_blacklisted()
482 if (!css_sch_is_valid(&sch->schib)) cio_validate_io_subchannel()
492 if (!css_sch_is_valid(&sch->schib)) cio_validate_msg_subchannel()
526 ccode = stsch_err(schid, &sch->schib); cio_validate_subchannel()
531 sch->st = sch->schib.pmcw.st; cio_validate_subchannel()
576 memcpy (&sch->schib.scsw, &irb->scsw, sizeof (irb->scsw)); do_cio_interrupt()
619 memcpy(&sch->schib.scsw, &irb->scsw, sizeof(union scsw)); cio_tsch()
639 struct schib schib; cio_test_for_console() local
641 if (stsch_err(schid, &schib) != 0) cio_test_for_console()
643 if ((schib.pmcw.st == SUBCHANNEL_TYPE_IO) && schib.pmcw.dnv && cio_test_for_console()
644 (schib.pmcw.dev == console_devno)) { cio_test_for_console()
654 struct schib schib; cio_get_console_sch_no() local
660 if (stsch_err(schid, &schib) != 0 || cio_get_console_sch_no()
661 (schib.pmcw.st != SUBCHANNEL_TYPE_IO) || !schib.pmcw.dnv) cio_get_console_sch_no()
663 console_devno = schib.pmcw.dev; cio_get_console_sch_no()
723 __disable_subchannel_easy(struct subchannel_id schid, struct schib *schib) __disable_subchannel_easy() argument
729 schib->pmcw.ena = 0; __disable_subchannel_easy()
730 cc = msch_err(schid, schib); __disable_subchannel_easy()
733 if (stsch_err(schid, schib) || !css_sch_is_valid(schib)) __disable_subchannel_easy()
735 if (!schib->pmcw.ena) __disable_subchannel_easy()
774 static int stsch_reset(struct subchannel_id schid, struct schib *addr) stsch_reset()
794 struct schib schib; __shutdown_subchannel_easy() local
796 if (stsch_reset(schid, &schib)) __shutdown_subchannel_easy()
798 if (!schib.pmcw.ena) __shutdown_subchannel_easy()
800 switch(__disable_subchannel_easy(schid, &schib)) { __shutdown_subchannel_easy()
805 switch (schib.pmcw.st) { __shutdown_subchannel_easy()
817 stsch_err(schid, &schib); __shutdown_subchannel_easy()
818 __disable_subchannel_easy(schid, &schib); __shutdown_subchannel_easy()
904 struct schib schib; __reipl_subchannel_match() local
907 if (stsch_reset(schid, &schib)) __reipl_subchannel_match()
909 if ((schib.pmcw.st == SUBCHANNEL_TYPE_IO) && schib.pmcw.dnv && __reipl_subchannel_match()
910 (schib.pmcw.dev == match_id->devid.devno) && __reipl_subchannel_match()
948 struct schib schib; cio_get_iplinfo() local
953 if (stsch_err(schid, &schib)) cio_get_iplinfo()
955 if (schib.pmcw.st != SUBCHANNEL_TYPE_IO) cio_get_iplinfo()
957 if (!schib.pmcw.dnv) cio_get_iplinfo()
959 iplinfo->devno = schib.pmcw.dev; cio_get_iplinfo()
960 iplinfo->is_qdio = schib.pmcw.qf; cio_get_iplinfo()
H A Dioasm.h28 static inline int stsch_err(struct subchannel_id schid, struct schib *addr) stsch_err()
45 static inline int msch(struct subchannel_id schid, struct schib *addr) msch()
60 static inline int msch_err(struct subchannel_id schid, struct schib *addr) msch_err()
H A Ddevice_fsm.c38 struct schib schib; ccw_timeout_log() local
47 cc = stsch_err(sch->schid, &schib); ccw_timeout_log()
83 printk(KERN_WARNING "cio: schib:\n"); ccw_timeout_log()
85 &schib, sizeof(schib), 0); ccw_timeout_log()
144 if (!sch->schib.pmcw.ena) ccw_device_cancel_halt_clear()
148 if (!(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_HALT_PEND) && ccw_device_cancel_halt_clear()
149 !(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_CLEAR_PEND)) { ccw_device_cancel_halt_clear()
150 if (!scsw_is_tm(&sch->schib.scsw)) { ccw_device_cancel_halt_clear()
159 if (!(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_CLEAR_PEND)) { ccw_device_cancel_halt_clear()
217 chpid.id = sch->schib.pmcw.chpid[i]; __recover_lost_chpids()
246 sch->lpm = sch->schib.pmcw.pam & sch->opm; ccw_device_recog_done()
522 /* Update schib - pom may have changed. */ ccw_device_verify_done()
639 if (scsw_actl(&sch->schib.scsw) != 0) ccw_device_offline()
693 * subchannel we have to update the schib. ccw_device_online_verify()
700 if (scsw_actl(&sch->schib.scsw) != 0 || ccw_device_online_verify()
701 (scsw_stctl(&sch->schib.scsw) & SCSW_STCTL_STATUS_PEND) || ccw_device_online_verify()
936 sch->lpm = sch->schib.pmcw.pam & sch->opm; ccw_device_trigger_reprobe()
947 if (sch->schib.pmcw.dev != cdev->private->dev_id.devno) ccw_device_trigger_reprobe()
H A Dcio.h64 struct schib { struct
95 struct schib schib; /* subchannel information block */ member in struct:subchannel
H A Dccwreq.c335 if ((0x80 >> chp) & sch->schib.pmcw.lpum) ccw_request_timeout()
339 scsw_cstat(&sch->schib.scsw), ccw_request_timeout()
340 scsw_dstat(&sch->schib.scsw), ccw_request_timeout()
342 sch->schib.pmcw.chpid[chp]); ccw_request_timeout()
H A Ddevice_ops.c146 if (!sch->schib.pmcw.ena) ccw_device_clear()
194 if (!sch->schib.pmcw.ena) ccw_device_start_key()
209 ((sch->schib.scsw.cmd.stctl & SCSW_STCTL_PRIM_STATUS) && ccw_device_start_key()
210 !(sch->schib.scsw.cmd.stctl & SCSW_STCTL_SEC_STATUS)) || ccw_device_start_key()
371 if (!sch->schib.pmcw.ena) ccw_device_halt()
405 if (!sch->schib.pmcw.ena) ccw_device_resume()
410 !(sch->schib.scsw.cmd.actl & SCSW_ACTL_SUSPENDED)) ccw_device_resume()
582 chpid.id = sch->schib.pmcw.chpid[chp_idx]; ccw_device_get_chp_desc()
615 if (!sch->schib.pmcw.ena) ccw_device_tm_start_key()
730 chpid.id = sch->schib.pmcw.chpid[i]; ccw_device_get_mdc()
762 if (!sch->schib.pmcw.ena) ccw_device_tm_intrg()
766 if (!scsw_is_tm(&sch->schib.scsw) || ccw_device_tm_intrg()
767 !(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_START_PEND)) ccw_device_tm_intrg()
H A Dcss.h140 struct schib;
141 int css_sch_is_valid(struct schib *);
H A Dcss.c257 ssd_from_pmcw(&sch->ssd_info, &sch->schib.pmcw); css_update_ssd_info()
374 * @schib: subchannel information block for the subchannel
376 int css_sch_is_valid(struct schib *schib) css_sch_is_valid() argument
378 if ((schib->pmcw.st == SUBCHANNEL_TYPE_IO) && !schib->pmcw.dnv) css_sch_is_valid()
380 if ((schib->pmcw.st == SUBCHANNEL_TYPE_MSG) && !schib->pmcw.w) css_sch_is_valid()
388 struct schib schib; css_evaluate_new_subchannel() local
394 if (stsch_err(schid, &schib)) { css_evaluate_new_subchannel()
398 if (!css_sch_is_valid(&schib)) { css_evaluate_new_subchannel()
H A Deadm_sch.c80 sch->schib.scsw.eadm.actl |= SCSW_ACTL_START_PEND; eadm_subchannel_start()
99 sch->schib.scsw.eadm.actl |= SCSW_ACTL_CLEAR_PEND; eadm_subchannel_clear()
136 struct eadm_scsw *scsw = &sch->schib.scsw.eadm; eadm_subchannel_irq()
H A Dchsc_sch.c130 struct schib schib; chsc_subchannel_prepare() local
136 cc = stsch_err(sch->schid, &schib); chsc_subchannel_prepare()
137 if (!cc && scsw_stctl(&schib.scsw)) chsc_subchannel_prepare()
215 return sch->schib.pmcw.ena && !scsw_fctl(&sch->schib.scsw); chsc_subchannel_match_next_free()
271 sch->schib.scsw.cmd.fctl |= SCSW_FCTL_START_FUNC; chsc_async()
H A Ddevice_pgid.c75 req->lpm = lpm_adjust(req->lpm, sch->schib.pmcw.pam & sch->opm & nop_do()
180 req->lpm = sch->schib.pmcw.pam; pgid_wipeout_start()
456 req->lpm = lpm_adjust(req->lpm, sch->schib.pmcw.pam & snid_do()
514 sch->lpm = sch->schib.pmcw.pam; verify_start()
519 cdev->private->pgid_todo_mask = sch->schib.pmcw.pam; verify_start()
609 req->lpm = sch->schib.pmcw.pam & sch->opm; ccw_device_disband_start()
663 req->lpm = sch->schib.pmcw.pam & sch->opm; ccw_device_stlck_start()
H A Ddevice.c241 struct pmcw *pmcw = &sch->schib.pmcw; pimpampom_show()
766 priv->dev_id.devno = sch->schib.pmcw.dev; io_subchannel_initialize_dev()
965 old_enabled = old_sch->schib.pmcw.ena; ccw_device_move_to_sch()
984 sch->schib.pmcw.dev, rc); ccw_device_move_to_sch()
1050 sch->lpm = sch->schib.pmcw.pam & sch->opm; io_subchannel_init_fields()
1055 sch->schib.pmcw.dev, sch->schid.ssid, io_subchannel_init_fields()
1056 sch->schid.sch_no, sch->schib.pmcw.pim, io_subchannel_init_fields()
1057 sch->schib.pmcw.pam, sch->schib.pmcw.pom); io_subchannel_init_fields()
1164 if (scsw_actl(&sch->schib.scsw) == 0 || sch->schib.pmcw.lpum != mask) io_subchannel_terminate_path()
1233 if (!sch->schib.pmcw.ena) io_subchannel_quiesce()
1419 if (sch->schib.pmcw.dev != cdev->private->dev_id.devno) { sch_get_action()
1424 if ((sch->schib.pmcw.pam & sch->opm) == 0) { sch_get_action()
1547 dev_id.devno = sch->schib.pmcw.dev; io_subchannel_sch_event()
1680 if (sch->schib.scsw.cmd.actl == 0) ccw_device_wait_idle()
H A Ddevice_id.c218 req->lpm = sch->schib.pmcw.pam & sch->opm; ccw_device_sense_id_start()
H A Ddevice_status.c62 sch->schib.pmcw.pnom); ccw_device_path_notoper()
64 sch->lpm &= ~sch->schib.pmcw.pnom; ccw_device_path_notoper()
H A Dcmf.c308 if (scsw_fctl(&sch->schib.scsw) & SCSW_FCTL_START_FUNC) { cmf_copy_block()
310 if ((!(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_SUSPENDED)) && cmf_copy_block()
311 (scsw_actl(&sch->schib.scsw) & cmf_copy_block()
313 (!(scsw_stctl(&sch->schib.scsw) & SCSW_STCTL_SEC_STATUS))) cmf_copy_block()
H A Dchp.c87 chpid.id = sch->schib.pmcw.chpid[i]; chp_get_sch_opm()
/linux-4.1.27/arch/s390/kernel/
H A Dhead.S242 tm 31(%r5),0xff # bits is set in the schib

Completed in 264 milliseconds