--- linux-2.6.18.i686/drivers/scsi/aacraid/rx.c.orig	2009-07-10 13:45:11.369506000 -0700
+++ linux-2.6.18.i686/drivers/scsi/aacraid/rx.c	2009-07-13 12:52:48.513425000 -0700
@@ -545,6 +545,11 @@ int _aac_rx_init(struct aac_dev *dev)
 	/* Failure to reset here is an option ... */
 	dev->a_ops.adapter_sync_cmd = rx_sync_cmd;
 	dev->a_ops.adapter_enable_int = aac_rx_disable_interrupt;
+
+	/* Device is healthy */
+	if (!aac_rx_check_health(dev) && !(aac_reset_devices || reset_devices))
+		goto noreset;
+
 	dev->OIMR = status = rx_readb (dev, MUnit.OIMR);
 	if ((((status & 0x0c) != 0x0c) || aac_reset_devices || reset_devices) &&
 	  !aac_rx_restart_adapter(dev, 0))
@@ -600,6 +605,7 @@ int _aac_rx_init(struct aac_dev *dev)
 		}
 		msleep(1);
 	}
+noreset:
 	if (restart && aac_commit)
 		aac_commit = 1;
 	/*
