Lines Matching refs:sccb
39 int sclp_sync_request(sclp_cmdw_t cmd, void *sccb)
41 return sclp_sync_request_timeout(cmd, sccb, 0);
44 int sclp_sync_request_timeout(sclp_cmdw_t cmd, void *sccb, int timeout)
56 request->sccb = sccb;
90 struct read_cpu_info_sccb *sccb;
95 sccb = (void *)__get_free_pages(GFP_KERNEL | GFP_DMA | __GFP_ZERO, get_order(length));
96 if (!sccb)
98 sccb->header.length = length;
99 sccb->header.control_mask[2] = 0x80;
100 rc = sclp_sync_request_timeout(SCLP_CMDW_READ_CPU_INFO, sccb,
104 if (sccb->header.response_code != 0x0010) {
106 sccb->header.response_code);
110 sclp_fill_core_info(info, sccb);
112 free_pages((unsigned long) sccb, get_order(length));
122 struct cpu_configure_sccb *sccb;
131 sccb = kzalloc(sizeof(*sccb), GFP_KERNEL | GFP_DMA);
132 if (!sccb)
134 sccb->header.length = sizeof(*sccb);
135 rc = sclp_sync_request_timeout(cmd, sccb, SCLP_QUEUE_INTERVAL);
138 switch (sccb->header.response_code) {
144 cmd, sccb->header.response_code);
149 kfree(sccb);
195 struct assign_storage_sccb *sccb;
198 sccb = (void *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
199 if (!sccb)
201 sccb->header.length = PAGE_SIZE;
202 sccb->rn = rn;
203 rc = sclp_sync_request_timeout(cmd, sccb, SCLP_QUEUE_INTERVAL);
206 switch (sccb->header.response_code) {
212 cmd, sccb->header.response_code, rn);
217 free_page((unsigned long) sccb);
249 struct attach_storage_sccb *sccb;
253 sccb = (void *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
254 if (!sccb)
256 sccb->header.length = PAGE_SIZE;
257 sccb->header.function_code = 0x40;
258 rc = sclp_sync_request_timeout(0x00080001 | id << 8, sccb,
262 switch (sccb->header.response_code) {
265 for (i = 0; i < sccb->assigned; i++) {
266 if (sccb->entries[i])
267 sclp_unassign_storage(sccb->entries[i] >> 16);
275 free_page((unsigned long) sccb);
452 struct read_storage_sccb *sccb;
460 sccb = (void *) __get_free_page(GFP_KERNEL | GFP_DMA);
461 if (!sccb)
465 memset(sccb, 0, PAGE_SIZE);
466 sccb->header.length = PAGE_SIZE;
467 rc = sclp_sync_request(SCLP_CMDW_READ_STORAGE_INFO | id << 8, sccb);
470 switch (sccb->header.response_code) {
473 for (i = 0; i < sccb->assigned; i++) {
474 if (!sccb->entries[i])
477 insert_increment(sccb->entries[i] >> 16, 0, 1);
483 for (i = 0; i < sccb->assigned; i++) {
484 if (!sccb->entries[i])
487 insert_increment(sccb->entries[i] >> 16, 1, 1);
495 sclp_max_storage_id = sccb->max_id;
506 free_page((unsigned long) sccb);
530 struct chp_cfg_sccb *sccb;
535 /* Prepare sccb. */
536 sccb = (struct chp_cfg_sccb *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
537 if (!sccb)
539 sccb->header.length = sizeof(*sccb);
540 rc = sclp_sync_request(cmd, sccb);
543 switch (sccb->header.response_code) {
551 cmd, sccb->header.response_code);
556 free_page((unsigned long) sccb);
604 struct chp_info_sccb *sccb;
609 /* Prepare sccb. */
610 sccb = (struct chp_info_sccb *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
611 if (!sccb)
613 sccb->header.length = sizeof(*sccb);
614 rc = sclp_sync_request(SCLP_CMDW_READ_CHPATH_INFORMATION, sccb);
617 if (sccb->header.response_code != 0x0010) {
619 sccb->header.response_code);
623 memcpy(info->recognized, sccb->recognized, SCLP_CHP_INFO_MASK_SIZE);
624 memcpy(info->standby, sccb->standby, SCLP_CHP_INFO_MASK_SIZE);
625 memcpy(info->configured, sccb->configured, SCLP_CHP_INFO_MASK_SIZE);
627 free_page((unsigned long) sccb);