Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a3940da5e6fe8b833eecdbca3fac9456b4204d6e
Commit:     a3940da5e6fe8b833eecdbca3fac9456b4204d6e
Parent:     06a43d1725f59a0f5e043bd06081c44ae528098e
Author:     Salyzyn, Mark <[EMAIL PROTECTED]>
AuthorDate: Tue Jan 8 12:48:25 2008 -0800
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Wed Jan 23 11:29:19 2008 -0600

    [SCSI] aacraid: fix big endian issues
    
    Big endian systems issues discovered in the aacraid driver. Somewhat
    reverses a patch from November 7th of last year that removed swap
    operations because they formerly were being assigned to an u8 array
    when they should have been assigned to an le32 array.
    
    This patch is largely inert for any little endian processor
    architecture. It resolves a bug in delivering the BlinkLED AIF event
    to registered applications when the adapter or associated hardware was
    reset due to ill health. A rare corner case occurrence, also largely
    unnoticed by any as it was a new (untested!) feature.
    
    Signed-off-by: Mark Salyzyn <[EMAIL PROTECTED]>
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/scsi/aacraid/aachba.c   |    7 +++----
 drivers/scsi/aacraid/aacraid.h  |    6 +++---
 drivers/scsi/aacraid/comminit.c |    4 ++--
 drivers/scsi/aacraid/commsup.c  |   17 ++++++++---------
 drivers/scsi/aacraid/linit.c    |   10 +++++-----
 drivers/scsi/aacraid/rx.c       |    2 +-
 6 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 94577c0..3cddcc0 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -1325,10 +1325,9 @@ int aac_get_adapter_info(struct aac_dev* dev)
                          
(int)sizeof(dev->supplement_adapter_info.VpdInfo.Tsid),
                          dev->supplement_adapter_info.VpdInfo.Tsid);
                }
-               if (!aac_check_reset ||
-                   ((aac_check_reset != 1) &&
-                    (dev->supplement_adapter_info.SupportedOptions2 &
-                     cpu_to_le32(AAC_OPTION_IGNORE_RESET)))) {
+               if (!aac_check_reset || ((aac_check_reset != 1) &&
+                 (dev->supplement_adapter_info.SupportedOptions2 &
+                 AAC_OPTION_IGNORE_RESET))) {
                        printk(KERN_INFO "%s%d: Reset Adapter Ignored\n",
                          dev->name, dev->id);
                }
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 6d4e24c..07def72 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -869,9 +869,9 @@ struct aac_supplement_adapter_info
        __le32  SupportedOptions2;
        __le32  ReservedGrowth[1];
 };
-#define AAC_FEATURE_FALCON     0x00000010
-#define AAC_OPTION_MU_RESET    0x00000001
-#define AAC_OPTION_IGNORE_RESET        0x00000002
+#define AAC_FEATURE_FALCON     cpu_to_le32(0x00000010)
+#define AAC_OPTION_MU_RESET    cpu_to_le32(0x00000001)
+#define AAC_OPTION_IGNORE_RESET        cpu_to_le32(0x00000002)
 #define AAC_SIS_VERSION_V3     3
 #define AAC_SIS_SLOT_UNKNOWN   0xFF
 
diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c
index 8736813..89cc8b7 100644
--- a/drivers/scsi/aacraid/comminit.c
+++ b/drivers/scsi/aacraid/comminit.c
@@ -301,10 +301,10 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev)
        if ((!aac_adapter_sync_cmd(dev, GET_ADAPTER_PROPERTIES,
                0, 0, 0, 0, 0, 0, status+0, status+1, status+2, NULL, NULL)) &&
                        (status[0] == 0x00000001)) {
-               if (status[1] & AAC_OPT_NEW_COMM_64)
+               if (status[1] & le32_to_cpu(AAC_OPT_NEW_COMM_64))
                        dev->raw_io_64 = 1;
                if (dev->a_ops.adapter_comm &&
-                   (status[1] & AAC_OPT_NEW_COMM))
+                   (status[1] & le32_to_cpu(AAC_OPT_NEW_COMM)))
                        dev->comm_interface = AAC_COMM_MESSAGE;
                if ((dev->comm_interface == AAC_COMM_MESSAGE) &&
                    (status[2] > dev->base_size)) {
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
index 81cdac1..e82d89c 100644
--- a/drivers/scsi/aacraid/commsup.c
+++ b/drivers/scsi/aacraid/commsup.c
@@ -1343,11 +1343,11 @@ int aac_check_health(struct aac_dev * aac)
                        fib->data = hw_fib->data;
                        aif = (struct aac_aifcmd *)hw_fib->data;
                        aif->command = cpu_to_le32(AifCmdEventNotify);
-                       aif->seqnum = cpu_to_le32(0xFFFFFFFF);
-                       aif->data[0] = AifEnExpEvent;
-                       aif->data[1] = AifExeFirmwarePanic;
-                       aif->data[2] = AifHighPriority;
-                       aif->data[3] = BlinkLED;
+                       aif->seqnum = cpu_to_le32(0xFFFFFFFF);
+                       ((__le32 *)aif->data)[0] = cpu_to_le32(AifEnExpEvent);
+                       ((__le32 *)aif->data)[1] = 
cpu_to_le32(AifExeFirmwarePanic);
+                       ((__le32 *)aif->data)[2] = cpu_to_le32(AifHighPriority);
+                       ((__le32 *)aif->data)[3] = cpu_to_le32(BlinkLED);
 
                        /*
                         * Put the FIB onto the
@@ -1377,10 +1377,9 @@ int aac_check_health(struct aac_dev * aac)
 
        printk(KERN_ERR "%s: Host adapter BLINK LED 0x%x\n", aac->name, 
BlinkLED);
 
-       if (!aac_check_reset ||
-           ((aac_check_reset != 1) &&
-            (aac->supplement_adapter_info.SupportedOptions2 &
-             cpu_to_le32(AAC_OPTION_IGNORE_RESET))))
+       if (!aac_check_reset || ((aac_check_reset != 1) &&
+               (aac->supplement_adapter_info.SupportedOptions2 &
+                       AAC_OPTION_IGNORE_RESET)))
                goto out;
        host = aac->scsi_host_ptr;
        if (aac->thread->pid != current->pid)
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index e6bdc93..742e1a8 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -614,11 +614,11 @@ static int aac_eh_reset(struct scsi_cmnd* cmd)
         * support a register, instead of a commanded, reset.
         */
        if ((aac->supplement_adapter_info.SupportedOptions2 &
-            cpu_to_le32(AAC_OPTION_MU_RESET)) &&
-           aac_check_reset &&
-           ((aac_check_reset != 1) ||
-            (aac->supplement_adapter_info.SupportedOptions2 &
-             cpu_to_le32(AAC_OPTION_IGNORE_RESET))))
+          AAC_OPTION_MU_RESET) &&
+         aac_check_reset &&
+         ((aac_check_reset != 1) ||
+          (aac->supplement_adapter_info.SupportedOptions2 &
+           AAC_OPTION_IGNORE_RESET)))
                aac_reset_adapter(aac, 2); /* Bypass wait for command quiesce */
        return SUCCESS; /* Cause an immediate retry of the command with a ten 
second delay after successful tur */
 }
diff --git a/drivers/scsi/aacraid/rx.c b/drivers/scsi/aacraid/rx.c
index 9b83151..a08bbf1 100644
--- a/drivers/scsi/aacraid/rx.c
+++ b/drivers/scsi/aacraid/rx.c
@@ -465,7 +465,7 @@ static int aac_rx_restart_adapter(struct aac_dev *dev, int 
bled)
        u32 var;
 
        if (!(dev->supplement_adapter_info.SupportedOptions2 &
-           cpu_to_le32(AAC_OPTION_MU_RESET)) || (bled >= 0) || (bled == -2)) {
+         AAC_OPTION_MU_RESET) || (bled >= 0) || (bled == -2)) {
                if (bled)
                        printk(KERN_ERR "%s%d: adapter kernel panic'd %x.\n",
                                dev->name, dev->id, bled);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to