diff options
Diffstat (limited to 'drivers/scsi/aacraid/rx.c')
| -rw-r--r-- | drivers/scsi/aacraid/rx.c | 15 | 
1 files changed, 10 insertions, 5 deletions
| diff --git a/drivers/scsi/aacraid/rx.c b/drivers/scsi/aacraid/rx.c index 93ef7c37e568..620166694171 100644 --- a/drivers/scsi/aacraid/rx.c +++ b/drivers/scsi/aacraid/rx.c @@ -561,11 +561,16 @@ int _aac_rx_init(struct aac_dev *dev)  	dev->a_ops.adapter_sync_cmd = rx_sync_cmd;  	dev->a_ops.adapter_enable_int = aac_rx_disable_interrupt;  	dev->OIMR = status = rx_readb (dev, MUnit.OIMR); -	if ((((status & 0x0c) != 0x0c) || aac_reset_devices || reset_devices) && -	  !aac_rx_restart_adapter(dev, 0, IOP_HWSOFT_RESET)) -		/* Make sure the Hardware FIFO is empty */ -		while ((++restart < 512) && -		  (rx_readl(dev, MUnit.OutboundQueue) != 0xFFFFFFFFL)); + +	if (((status & 0x0c) != 0x0c) || dev->init_reset) { +		dev->init_reset = false; +		if (!aac_rx_restart_adapter(dev, 0, IOP_HWSOFT_RESET)) { +			/* Make sure the Hardware FIFO is empty */ +			while ((++restart < 512) && +			       (rx_readl(dev, MUnit.OutboundQueue) != 0xFFFFFFFFL)); +		} +	} +  	/*  	 *	Check to see if the board panic'd while booting.  	 */ |