if (out_is_imm) { memcpy_fromio(out_param, dev->hcr + HCR_OUT_PARAM_OFFSET, sizeof (u64)); be64_to_cpus(out_param); } 
if (out_is_imm) *out_param = (u64) be32_to_cpu((__force __be32) __raw_readl(dev->hcr + HCR_OUT_PARAM_OFFSET)) << 32 | (u64) be32_to_cpu((__force __be32) __raw_readl(dev->hcr + HCR_OUT_PARAM_OFFSET + 4)); 
static int mthca_cmd_poll(struct mthca_dev *dev,			  u64 in_param,			  u64 *out_param,			  int out_is_imm,			  u32 in_modifier,			  u8 op_modifier,			  u16 op,			  unsigned long timeout,			  u8 *status){	int err = 0;	unsigned long end;	if (down_interruptible(&dev->cmd.poll_sem))		return -EINTR;	err = mthca_cmd_post(dev, in_param,			     out_param ? *out_param : 0,			     in_modifier, op_modifier,			     op, CMD_POLL_TOKEN, 0);	if (err)		goto out;	end = timeout + jiffies;	while (go_bit(dev) && time_before(jiffies, end)) {		set_current_state(TASK_RUNNING);		schedule();	}	if (go_bit(dev)) {		err = -EBUSY;		goto out;	}	if (out_is_imm) {		memcpy_fromio(out_param, dev->hcr + HCR_OUT_PARAM_OFFSET, sizeof (u64));		be64_to_cpus(out_param);	}	*status = be32_to_cpu(__raw_readl(dev->hcr + HCR_STATUS_OFFSET)) >> 24;out:	up(&dev->cmd.poll_sem);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/97f52eb438be7caebe026421545619d8a0c1398a/mthca_cmd.c/buggy/drivers/infiniband/hw/mthca/mthca_cmd.c