u8 *status_block; 
volatile u8 *status_block; 
int i2o_status_get(struct i2o_controller *c){	struct i2o_message __iomem *msg;	u32 m;	u8 *status_block;	unsigned long timeout;	status_block = (u8 *) c->status_block.virt;	memset(status_block, 0, sizeof(i2o_status_block));	m = i2o_msg_get_wait(c, &msg, I2O_TIMEOUT_MESSAGE_GET);	if (m == I2O_QUEUE_EMPTY)		return -ETIMEDOUT;	writel(NINE_WORD_MSG_SIZE | SGL_OFFSET_0, &msg->u.head[0]);	writel(I2O_CMD_STATUS_GET << 24 | HOST_TID << 12 | ADAPTER_TID,	       &msg->u.head[1]);	writel(i2o_exec_driver.context, &msg->u.s.icntxt);	writel(0, &msg->u.s.tcntxt);	// FIXME: use resonable transaction context	writel(0, &msg->body[0]);	writel(0, &msg->body[1]);	writel(i2o_dma_low(c->status_block.phys), &msg->body[2]);	writel(i2o_dma_high(c->status_block.phys), &msg->body[3]);	writel(sizeof(i2o_status_block), &msg->body[4]);	/* always 88 bytes */	i2o_msg_post(c, m);	/* Wait for a reply */	timeout = jiffies + I2O_TIMEOUT_STATUS_GET * HZ;	while (status_block[87] != 0xFF) {		if (time_after(jiffies, timeout)) {			printk(KERN_ERR "%s: Get status timeout.\n", c->name);			return -ETIMEDOUT;		}		set_current_state(TASK_UNINTERRUPTIBLE);		schedule_timeout(1);		rmb();	}#ifdef DEBUG	i2o_debug_state(c);#endif	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/9e87545f06930c1d294423a8091d1077e7444a47/iop.c/buggy/drivers/message/i2o/iop.c