u64 hipz_h_register_rpage_mr(const struct ipz_adapter_handle adapter_handle, const struct ehca_mr *mr, const u8 pagesize, const u8 queue_type, const u64 logical_address_of_page, const u64 count) { u64 ret; if ((count > 1) && (logical_address_of_page & (EHCA_PAGESIZE-1))) { ehca_gen_err("logical_address_of_page not on a 4k boundary " "adapter_handle=%lx mr=%p mr_handle=%lx " "pagesize=%x queue_type=%x " "logical_address_of_page=%lx count=%lx", adapter_handle.handle, mr, mr->ipz_mr_handle.handle, pagesize, queue_type, logical_address_of_page, count); ret = H_PARAMETER; } else ret = hipz_h_register_rpage(adapter_handle, pagesize, queue_type, mr->ipz_mr_handle.handle, logical_address_of_page, count); return ret; }
u64 hipz_h_register_rpage_qp(const struct ipz_adapter_handle adapter_handle, const struct ipz_qp_handle qp_handle, struct ehca_pfqp *pfqp, const u8 pagesize, const u8 queue_type, const u64 logical_address_of_page, const u64 count, const struct h_galpa galpa) { if (count > 1) { ehca_gen_err("Page counter=%llx", count); return H_PARAMETER; } return hipz_h_register_rpage(adapter_handle, pagesize, queue_type, qp_handle.handle, logical_address_of_page, count); }
u64 hipz_h_register_rpage_eq(const struct ipz_adapter_handle adapter_handle, const struct ipz_eq_handle eq_handle, struct ehca_pfeq *pfeq, const u8 pagesize, const u8 queue_type, const u64 logical_address_of_page, const u64 count) { if (count != 1) { ehca_gen_err("Ppage counter=%llx", count); return H_PARAMETER; } return hipz_h_register_rpage(adapter_handle, pagesize, queue_type, eq_handle.handle, logical_address_of_page, count); }
u64 hipz_h_register_rpage_mr(const struct ipz_adapter_handle adapter_handle, const struct ehca_mr *mr, const u8 pagesize, const u8 queue_type, const u64 logical_address_of_page, const u64 count) { u64 ret; if (unlikely(ehca_debug_level >= 3)) { if (count > 1) { u64 *kpage; int i; kpage = (u64 *)abs_to_virt(logical_address_of_page); for (i = 0; i < count; i++) ehca_gen_dbg("kpage[%d]=%p", i, (void *)kpage[i]); } else ehca_gen_dbg("kpage=%p", (void *)logical_address_of_page); } if ((count > 1) && (logical_address_of_page & (EHCA_PAGESIZE-1))) { ehca_gen_err("logical_address_of_page not on a 4k boundary " "adapter_handle=%llx mr=%p mr_handle=%llx " "pagesize=%x queue_type=%x " "logical_address_of_page=%llx count=%llx", adapter_handle.handle, mr, mr->ipz_mr_handle.handle, pagesize, queue_type, logical_address_of_page, count); ret = H_PARAMETER; } else ret = hipz_h_register_rpage(adapter_handle, pagesize, queue_type, mr->ipz_mr_handle.handle, logical_address_of_page, count); return ret; }