[2.6.19 PATCH 2/7] ehea: pHYP interface

Alexey Dobriyan adobriyan at gmail.com
Sat Aug 19 01:06:00 EST 2006


On Fri, Aug 18, 2006 at 01:30:21PM +0200, Jan-Bernd Themann wrote:
> --- 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;




More information about the Linuxppc-dev mailing list