while (mv != I2O_QUEUE_EMPTY) {  if (i2o_driver_dispatch(c, mv))  i2o_flush_reply(c, mv);   mv = readl(c->out_port); if (mv == I2O_QUEUE_EMPTY) mv = readl(c->out_port); }  return IRQ_HANDLED;
return rc;
static irqreturn_t i2o_pci_interrupt(int irq, void *dev_id, struct pt_regs *r){	struct i2o_controller *c = dev_id;	struct device *dev = &c->pdev->dev;	u32 mv = readl(c->out_port);	/*	 * Old 960 steppings had a bug in the I2O unit that caused	 * the queue to appear empty when it wasn't.	 */	if (mv == I2O_QUEUE_EMPTY) {		mv = readl(c->out_port);		if (unlikely(mv == I2O_QUEUE_EMPTY))			return IRQ_NONE;		else			pr_debug("%s: 960 bug detected\n", c->name);	}	while (mv != I2O_QUEUE_EMPTY) {		/* dispatch it */		if (i2o_driver_dispatch(c, mv))			/* flush it if result != 0 */			i2o_flush_reply(c, mv);		/*		 * That 960 bug again...		 */		mv = readl(c->out_port);		if (mv == I2O_QUEUE_EMPTY)			mv = readl(c->out_port);	}	return IRQ_HANDLED;}