diff -Naur arch/alpha/config.in arch/alpha/config.in
--- arch/alpha/config.in	Mon Nov  5 11:47:41 2001
+++ arch/alpha/config.in	Mon Nov 19 14:33:54 2001
@@ -296,6 +296,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	Wed Oct 17 16:46:29 2001
+++ drivers/block/genhd.c	Thu Nov  1 22:04:12 2001
@@ -161,9 +161,6 @@
 
 
 extern int blk_dev_init(void);
-#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);
@@ -178,9 +175,6 @@
 	sti();
 #ifdef CONFIG_I2O
 	i2o_init();
-#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
@@ -500,6 +500,7 @@
 	Scsi_Request * SRpnt;
 	int bflags, type = -1;
 	extern devfs_handle_t scsi_devfs_handle;
+	int scsi_level;
 
 	SDpnt->host = shpnt;
 	SDpnt->id = dev;
@@ -672,6 +673,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
@@ -749,6 +751,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
