Lines Matching refs:schib

117 	CIO_HEX_EVENT(0, &sch->schib, sizeof (struct schib));
162 sch->schib.scsw.cmd.actl |= SCSW_ACTL_START_PEND;
199 sch->schib.scsw.cmd.actl |= SCSW_ACTL_RESUME_PEND;
238 sch->schib.scsw.cmd.actl |= SCSW_ACTL_HALT_PEND;
272 sch->schib.scsw.cmd.actl |= SCSW_ACTL_CLEAR_PEND;
340 if (!sch->schib.pmcw.ena)
344 if (!(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_HALT_PEND) &&
345 !(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_CLEAR_PEND)) {
346 if (!scsw_is_tm(&sch->schib.scsw)) {
358 if (!(scsw_actl(&sch->schib.scsw) & SCSW_ACTL_CLEAR_PEND)) {
379 static void cio_apply_config(struct subchannel *sch, struct schib *schib)
381 schib->pmcw.intparm = sch->config.intparm;
382 schib->pmcw.mbi = sch->config.mbi;
383 schib->pmcw.isc = sch->config.isc;
384 schib->pmcw.ena = sch->config.ena;
385 schib->pmcw.mme = sch->config.mme;
386 schib->pmcw.mp = sch->config.mp;
387 schib->pmcw.csense = sch->config.csense;
388 schib->pmcw.mbfc = sch->config.mbfc;
390 schib->mba = sch->config.mba;
393 static int cio_check_config(struct subchannel *sch, struct schib *schib)
395 return (schib->pmcw.intparm == sch->config.intparm) &&
396 (schib->pmcw.mbi == sch->config.mbi) &&
397 (schib->pmcw.isc == sch->config.isc) &&
398 (schib->pmcw.ena == sch->config.ena) &&
399 (schib->pmcw.mme == sch->config.mme) &&
400 (schib->pmcw.mp == sch->config.mp) &&
401 (schib->pmcw.csense == sch->config.csense) &&
402 (schib->pmcw.mbfc == sch->config.mbfc) &&
403 (!sch->config.mbfc || (schib->mba == sch->config.mba));
412 struct schib schib;
415 if (stsch(sch->schid, &schib) || !css_sch_is_valid(&schib))
419 /* copy desired changes to local schib */
420 cio_apply_config(sch, &schib);
421 ccode = msch(sch->schid, &schib);
426 if (stsch(sch->schid, &schib) ||
427 !css_sch_is_valid(&schib))
429 if (cio_check_config(sch, &schib)) {
430 /* commit changes from local schib */
431 memcpy(&sch->schib, &schib, sizeof(schib));
454 * cio_update_schib - Perform stsch and update schib if subchannel is valid.
460 struct schib schib;
462 if (stsch(sch->schid, &schib) || !css_sch_is_valid(&schib))
465 memcpy(&sch->schib, &schib, sizeof(schib));
553 memcpy (&sch->schib.scsw, &irb->scsw, sizeof (irb->scsw));
592 memcpy(&sch->schib.scsw, &irb->scsw, sizeof(union scsw));
612 struct schib schib;
614 if (stsch(schid, &schib) != 0)
616 if ((schib.pmcw.st == SUBCHANNEL_TYPE_IO) && schib.pmcw.dnv &&
617 (schib.pmcw.dev == console_devno)) {
627 struct schib schib;
633 if (stsch(schid, &schib) != 0 ||
634 (schib.pmcw.st != SUBCHANNEL_TYPE_IO) || !schib.pmcw.dnv)
636 console_devno = schib.pmcw.dev;
648 struct schib schib;
658 ret = stsch(schid, &schib);
662 sch = css_alloc_subchannel(schid, &schib);