Lines Matching refs:lpcb
69 * Call Logical Processor with c=0, the give constant lps and an lpcb request.
465 static int clp_base_slpc(struct clp_req *req, struct clp_req_rsp_slpc *lpcb)
467 unsigned long limit = PAGE_SIZE - sizeof(lpcb->request);
469 if (lpcb->request.hdr.len != sizeof(lpcb->request) ||
470 lpcb->response.hdr.len > limit)
472 return clp_req(lpcb, CLP_LPS_BASE) ? -EOPNOTSUPP : 0;
475 static int clp_base_command(struct clp_req *req, struct clp_req_hdr *lpcb)
477 switch (lpcb->cmd) {
479 return clp_base_slpc(req, (void *) lpcb);
485 static int clp_pci_slpc(struct clp_req *req, struct clp_req_rsp_slpc_pci *lpcb)
487 unsigned long limit = PAGE_SIZE - sizeof(lpcb->request);
489 if (lpcb->request.hdr.len != sizeof(lpcb->request) ||
490 lpcb->response.hdr.len > limit)
492 return clp_req(lpcb, CLP_LPS_PCI) ? -EOPNOTSUPP : 0;
495 static int clp_pci_list(struct clp_req *req, struct clp_req_rsp_list_pci *lpcb)
497 unsigned long limit = PAGE_SIZE - sizeof(lpcb->request);
499 if (lpcb->request.hdr.len != sizeof(lpcb->request) ||
500 lpcb->response.hdr.len > limit)
502 if (lpcb->request.reserved2 != 0)
504 return clp_req(lpcb, CLP_LPS_PCI) ? -EOPNOTSUPP : 0;
508 struct clp_req_rsp_query_pci *lpcb)
510 unsigned long limit = PAGE_SIZE - sizeof(lpcb->request);
512 if (lpcb->request.hdr.len != sizeof(lpcb->request) ||
513 lpcb->response.hdr.len > limit)
515 if (lpcb->request.reserved2 != 0 || lpcb->request.reserved3 != 0)
517 return clp_req(lpcb, CLP_LPS_PCI) ? -EOPNOTSUPP : 0;
521 struct clp_req_rsp_query_pci_grp *lpcb)
523 unsigned long limit = PAGE_SIZE - sizeof(lpcb->request);
525 if (lpcb->request.hdr.len != sizeof(lpcb->request) ||
526 lpcb->response.hdr.len > limit)
528 if (lpcb->request.reserved2 != 0 || lpcb->request.reserved3 != 0 ||
529 lpcb->request.reserved4 != 0)
531 return clp_req(lpcb, CLP_LPS_PCI) ? -EOPNOTSUPP : 0;
534 static int clp_pci_command(struct clp_req *req, struct clp_req_hdr *lpcb)
536 switch (lpcb->cmd) {
538 return clp_pci_slpc(req, (void *) lpcb);
540 return clp_pci_list(req, (void *) lpcb);
542 return clp_pci_query(req, (void *) lpcb);
544 return clp_pci_query_grp(req, (void *) lpcb);
552 struct clp_req_hdr *lpcb;
561 lpcb = clp_alloc_block(GFP_KERNEL);
562 if (!lpcb)
567 if (copy_from_user(lpcb, uptr, PAGE_SIZE) != 0)
571 if (lpcb->fmt != 0 || lpcb->reserved1 != 0 || lpcb->reserved2 != 0)
576 rc = clp_base_command(req, lpcb);
579 rc = clp_pci_command(req, lpcb);
586 if (copy_to_user(uptr, lpcb, PAGE_SIZE) != 0)
592 clp_free_block(lpcb);