static void __init sclp_read_info_early(void) { int rc; int i; struct read_info_sccb *sccb; sclp_cmdw_t commands[] = {SCLP_CMDW_READ_SCP_INFO_FORCED, SCLP_CMDW_READ_SCP_INFO}; sccb = &early_read_info_sccb; for (i = 0; i < ARRAY_SIZE(commands); i++) { do { memset(sccb, 0, sizeof(*sccb)); sccb->header.length = sizeof(*sccb); sccb->header.function_code = 0x80; sccb->header.control_mask[2] = 0x80; rc = sclp_cmd_sync_early(commands[i], sccb); } while (rc == -EBUSY); if (rc) break; if (sccb->header.response_code == 0x10) { early_read_info_sccb_valid = 1; break; } if (sccb->header.response_code != 0x1f0) break; } }
static void __init sclp_event_mask_early(void) { struct init_sccb *sccb = &early_event_mask_sccb; int rc; do { memset(sccb, 0, sizeof(*sccb)); sccb->header.length = sizeof(*sccb); sccb->mask_length = sizeof(sccb_mask_t); rc = sclp_cmd_sync_early(SCLP_CMDW_WRITE_EVENT_MASK, sccb); } while (rc == -EBUSY); }