Re: [2.6.19 PATCH 2/7] ehea: pHYP interface
From: Alexey Dobriyan <hidden>
Date: 2006-08-18 15:06:12
Also in:
linuxppc-dev, lkml
On Fri, Aug 18, 2006 at 01:30:21PM +0200, Jan-Bernd Themann wrote:
quoted hunk ↗ jump to hunk
--- linux-2.6.18-rc4-orig/drivers/net/ehea/ehea_phyp.c +++ kernel/drivers/net/ehea/ehea_phyp.c
+ hret = ehea_hcall_9arg_9ret(H_QUERY_HEA_QP, + hcp_adapter_handle, /* R4 */ + qp_category, /* R5 */ + qp_handle, /* R6 */ + sel_mask, /* R7 */ + virt_to_abs(cb_addr), /* R8 */ + 0, 0, 0, 0, /* R9-R12 */ + &dummy, /* R4 */ + &dummy, /* R5 */ + &dummy, /* R6 */ + &dummy, /* R7 */ + &dummy, /* R8 */ + &dummy, /* R9 */ + &dummy, /* R10 */ + &dummy, /* R11 */ + &dummy); /* R12 */
I asked SO to recount arguments and we've come to a conclusion that there're in fact 19 args not 18 as the name suggests. 19 args is I-N-S-A-N-E.
+u64 ehea_h_register_rpage_eq(const u64 hcp_adapter_handle,
+ const u64 eq_handle,
+ const u8 pagesize,
+ const u8 queue_type,
+ const u64 log_pageaddr, const u64 count)
+{
+ u64 hret = H_ADAPTER_PARM;
+
+ if (count != 1)
+ return H_PARAMETER;
+
+ hret = ehea_h_register_rpage(hcp_adapter_handle, pagesize, queue_type,
+ eq_handle, log_pageaddr, count);
+ return hret;Just return ehea_h_register_rpage(...);
+u64 ehea_h_register_rpage_cq(const u64 hcp_adapter_handle,
+ const u64 cq_handle,
+ const u8 pagesize,
+ const u8 queue_type,
+ const u64 log_pageaddr,
+ const u64 count, const struct h_epa epa)
+{
+ u64 hret = H_ADAPTER_PARM;
+
+ if (count != 1)
+ return H_PARAMETER;
+
+ hret = ehea_h_register_rpage(hcp_adapter_handle, pagesize, queue_type,
+ cq_handle, log_pageaddr, count);
+ return hret;Ditto.
+u64 ehea_h_register_rpage_qp(const u64 hcp_adapter_handle,
+ const u64 qp_handle,
+ const u8 pagesize,
+ const u8 queue_type,
+ const u64 log_pageaddr,
+ const u64 count, struct h_epa epa)
+{
+ u64 hret = H_ADAPTER_PARM;
+
+ if (count != 1)
+ return H_PARAMETER;
+
+ hret = ehea_h_register_rpage(hcp_adapter_handle, pagesize, queue_type,
+ qp_handle, log_pageaddr, count);
+ return hret;
+}Ditto.
+static inline int hcp_epas_ctor(struct h_epas *epas, u64 paddr_kernel,
+ u64 paddr_user)
+{
+ epas->kernel.fw_handle = (u64) ioremap(paddr_kernel, PAGE_SIZE);
+ epas->user.fw_handle = paddr_user;
+ return 0;
+}
+
+static inline int hcp_epas_dtor(struct h_epas *epas)
+{
+
+ if (epas->kernel.fw_handle)
+ iounmap((void *)epas->kernel.fw_handle);
+ epas->user.fw_handle = epas->kernel.fw_handle = 0;
+ return 0;
+}Always returns 0;