diff -Naur arch/ia64/config.in arch/ia64/config.in
--- arch/ia64/config.in	Fri Nov  9 16:26:17 2001
+++ arch/ia64/config.in	Mon Nov 26 09:43:02 2001
@@ -163,6 +163,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 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
