[SCSI] BusLogic: make FlashPoint support x86-32 only
authorMatthew Wilcox <matthew@wil.cx>
Thu, 13 Mar 2008 12:55:08 +0000 (06:55 -0600)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Mon, 7 Apr 2008 17:15:44 +0000 (12:15 -0500)
We've verified that there are 64 bit and endianness problems in the
flashpoint driver.  Reverse the logic of CONFIG_OMIT_FLASHPOINT (make
it CONFIG_SCSI_FLASHPOINT) and make it depend on X86_32 so it can't
appear for any other architectures.  Long term, if someone chooses,
they could make FlashPoint 64 bit compliant (it looks like its a
question of fixing up the sizes in some of the packed descriptors)

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/BusLogic.c
drivers/scsi/BusLogic.h
drivers/scsi/FlashPoint.c
drivers/scsi/Kconfig

index 4d3ebb1af49022e9777a6472f368d96e1a6dec45..2d689af2466419a70d51afddad85572db31dc507 100644 (file)
@@ -896,7 +896,7 @@ static int __init BusLogic_InitializeFlashPointProbeInfo(struct BusLogic_HostAda
                IRQ_Channel = PCI_Device->irq;
                IO_Address = BaseAddress0 = pci_resource_start(PCI_Device, 0);
                PCI_Address = BaseAddress1 = pci_resource_start(PCI_Device, 1);
-#ifndef CONFIG_SCSI_OMIT_FLASHPOINT
+#ifdef CONFIG_SCSI_FLASHPOINT
                if (pci_resource_flags(PCI_Device, 0) & IORESOURCE_MEM) {
                        BusLogic_Error("BusLogic: Base Address0 0x%X not I/O for " "FlashPoint Host Adapter\n", NULL, BaseAddress0);
                        BusLogic_Error("at PCI Bus %d Device %d I/O Address 0x%X\n", NULL, Bus, Device, IO_Address);
@@ -1006,6 +1006,9 @@ static void __init BusLogic_InitializeProbeInfoList(struct BusLogic_HostAdapter
 }
 
 
+#else
+#define BusLogic_InitializeProbeInfoList(adapter) \
+               BusLogic_InitializeProbeInfoListISA(adapter)
 #endif                         /* CONFIG_PCI */
 
 
index bfbfb5c3a8f65281a42db90626925ce94da92f4f..73f237a1ed94f6e81ca686ba58a280e54e7056be 100644 (file)
 #define PACKED __attribute__((packed))
 #endif
 
-/*
-  FlashPoint support is only available for the Intel x86 Architecture with
-  CONFIG_PCI set.
-*/
-
-#ifndef __i386__
-#undef CONFIG_SCSI_OMIT_FLASHPOINT
-#define CONFIG_SCSI_OMIT_FLASHPOINT
-#endif
-
-#ifndef CONFIG_PCI
-#undef CONFIG_SCSI_OMIT_FLASHPOINT
-#define CONFIG_SCSI_OMIT_FLASHPOINT
-#define BusLogic_InitializeProbeInfoListISA BusLogic_InitializeProbeInfoList
-#endif
-
-
 /*
   Define the maximum number of BusLogic Host Adapters supported by this driver.
 */
@@ -178,7 +161,7 @@ static int BusLogic_HostAdapterAddressCount[3] = { 0, BusLogic_MultiMasterAddres
   Define macros for testing the Host Adapter Type.
 */
 
-#ifndef CONFIG_SCSI_OMIT_FLASHPOINT
+#ifdef CONFIG_SCSI_FLASHPOINT
 
 #define BusLogic_MultiMasterHostAdapterP(HostAdapter) \
   (HostAdapter->HostAdapterType == BusLogic_MultiMaster)
@@ -871,7 +854,7 @@ struct BusLogic_CCB {
        void (*CallbackFunction) (struct BusLogic_CCB *);       /* Bytes 40-43 */
        u32 BaseAddress;        /* Bytes 44-47 */
        enum BusLogic_CompletionCode CompletionCode;    /* Byte 48 */
-#ifndef CONFIG_SCSI_OMIT_FLASHPOINT
+#ifdef CONFIG_SCSI_FLASHPOINT
        unsigned char:8;        /* Byte 49 */
        unsigned short OS_Flags;        /* Bytes 50-51 */
        unsigned char Private[48];      /* Bytes 52-99 */
index 1c9078191d9ecb4f76819007e4569bda09061bb4..b374e457e5e2ded4401697ce2e63e88252376f41 100644 (file)
@@ -16,7 +16,7 @@
 */
 
 
-#ifndef CONFIG_SCSI_OMIT_FLASHPOINT
+#ifdef CONFIG_SCSI_FLASHPOINT
 
 #define MAX_CARDS      8
 #undef BUSTYPE_PCI
@@ -7626,7 +7626,7 @@ FlashPoint__HandleInterrupt(FlashPoint_CardHandle_T CardHandle)
 #define FlashPoint_InterruptPending        FlashPoint__InterruptPending
 #define FlashPoint_HandleInterrupt         FlashPoint__HandleInterrupt
 
-#else                          /* CONFIG_SCSI_OMIT_FLASHPOINT */
+#else                          /* !CONFIG_SCSI_FLASHPOINT */
 
 /*
   Define prototypes for the FlashPoint SCCB Manager Functions.
@@ -7641,4 +7641,4 @@ extern bool FlashPoint_InterruptPending(FlashPoint_CardHandle_T);
 extern int FlashPoint_HandleInterrupt(FlashPoint_CardHandle_T);
 extern void FlashPoint_ReleaseHostAdapter(FlashPoint_CardHandle_T);
 
-#endif                         /* CONFIG_SCSI_OMIT_FLASHPOINT */
+#endif                         /* CONFIG_SCSI_FLASHPOINT */
index b9d374082b6572f136aff58dddf54e4b65e541fe..7f78e3ea517d7e9afa272af07d017c8ae26758bf 100644 (file)
@@ -588,18 +588,20 @@ config SCSI_BUSLOGIC
          <http://www.tldp.org/docs.html#howto>, and the files
          <file:Documentation/scsi/BusLogic.txt> and
          <file:Documentation/scsi/FlashPoint.txt> for more information.
+         Note that support for FlashPoint is only available for 32-bit
+         x86 configurations.
 
          To compile this driver as a module, choose M here: the
          module will be called BusLogic.
 
-config SCSI_OMIT_FLASHPOINT
-       bool "Omit FlashPoint support"
-       depends on SCSI_BUSLOGIC
+config SCSI_FLASHPOINT
+       bool "FlashPoint support"
+       depends on SCSI_BUSLOGIC && PCI && X86_32
        help
-         This option allows you to omit the FlashPoint support from the
+         This option allows you to add FlashPoint support to the
          BusLogic SCSI driver. The FlashPoint SCCB Manager code is
-         substantial, so users of MultiMaster Host Adapters may wish to omit
-         it.
+         substantial, so users of MultiMaster Host Adapters may not
+         wish to include it.
 
 config SCSI_DMX3191D
        tristate "DMX3191D SCSI support"