diff -Naur arch/alpha/config.in arch/alpha/config.in
--- arch/alpha/config.in	Sun Aug 12 12:51:41 2001
+++ arch/alpha/config.in	Mon Sep 24 11:03:45 2001
@@ -288,6 +288,10 @@
 fi
 endmenu
 
+if [ "$CONFIG_PCI" = "y" ]; then
+  source drivers/message/fusion/Config.in
+fi
+
 if [ "$CONFIG_NET" = "y" ]; then
   mainmenu_option next_comment
   comment 'Network device support'
diff -Naur arch/ia64/config.in arch/ia64/config.in
--- arch/ia64/config.in	Tue Jul 31 12:30:08 2001
+++ arch/ia64/config.in	Mon Sep 24 11:05:11 2001
@@ -177,6 +177,10 @@
 fi
 endmenu
 
+if [ "$CONFIG_PCI" = "y" ]; then
+  source drivers/message/fusion/Config.in
+fi
+
 if [ "$CONFIG_IA64_HP_SIM" = "n" ]; then
 
 if [ "$CONFIG_NET" = "y" ]; then
diff -Naur arch/sparc64/config.in arch/sparc64/config.in
--- arch/sparc64/config.in	Thu Sep 20 16:11:57 2001
+++ arch/sparc64/config.in	Mon Sep 24 11:05:49 2001
@@ -209,9 +209,11 @@
 fi
 endmenu
 
-source drivers/fc4/Config.in
+if [ "$CONFIG_PCI" = "y" ]; then
+   source drivers/message/fusion/Config.in
+fi
 
-source drivers/message/fusion/Config.in
+source drivers/fc4/Config.in
 
 source drivers/ieee1394/Config.in
 
diff -Naur drivers/block/genhd.c drivers/block/genhd.c
--- drivers/block/genhd.c	Sun Sep  9 14:00:55 2001
+++ drivers/block/genhd.c	Mon Sep 24 11:06:44 2001
@@ -146,9 +146,6 @@
 #ifdef CONFIG_BLK_DEV_DAC960
 extern void DAC960_Initialize(void);
 #endif
-#ifdef CONFIG_FUSION_BOOT
-extern int fusion_init(void);
-#endif
 extern int net_dev_init(void);
 extern void console_map_init(void);
 extern int soc_probe(void);
@@ -166,9 +163,6 @@
 #endif
 #ifdef CONFIG_BLK_DEV_DAC960
 	DAC960_Initialize();
-#endif
-#ifdef CONFIG_FUSION_BOOT
-	fusion_init();
 #endif
 #ifdef CONFIG_FC4_SOC
 	/* This has to be done before scsi_dev_init */
diff -Naur drivers/scsi/scsi_scan.c drivers/scsi/scsi_scan.c
--- drivers/scsi/scsi_scan.c	Tue Nov 13 19:35:16 2001
+++ drivers/scsi/scsi_scan.c	Fri Dec 21 11:41:55 2001
@@ -496,6 +496,7 @@
 	Scsi_Request * SRpnt;
 	int bflags, type = -1;
 	extern devfs_handle_t scsi_devfs_handle;
+	int scsi_level;
 
 	SDpnt->host = shpnt;
 	SDpnt->id = dev;
@@ -668,6 +669,7 @@
 	    (SDpnt->scsi_level == 1 &&
 	     (scsi_result[3] & 0x0f) == 1))
 		SDpnt->scsi_level++;
+	scsi_level = SDpnt->scsi_level;
 
 	/*
 	 * Accommodate drivers that want to sleep when they should be in a polling
@@ -745,6 +747,7 @@
 	SDpnt->queue_depth = 1;
 	SDpnt->host = shpnt;
 	SDpnt->online = TRUE;
+	SDpnt->scsi_level = scsi_level;
 
 	/*
 	 * Register the queue for the device.  All I/O requests will come
