Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2ab01efd1d2a24db53b4c5d28a2e20cf2b1206c5
Commit:     2ab01efd1d2a24db53b4c5d28a2e20cf2b1206c5
Parent:     ed56047aecaddc0a45bb23b61ce933fb81f67ef9
Author:     Salyzyn, Mark <[EMAIL PROTECTED]>
AuthorDate: Tue May 15 09:14:21 2007 -0400
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Wed May 16 13:06:26 2007 -0400

    [SCSI] aacraid: Correct sa platform support. (Was: [Bug 8469] Bad EIP value 
on pentium3 SMP kernel-2.6.21.1)
    
    http://bugzilla.kernel.org/show_bug.cgi?id=8469
    
    As discussed in the bugzilla outlined below, we have an sa based
    (Mustang) RAID adapter on the system, a Dell PERC2/QC. Affected
    controllers are HP NetRAID, Adaptec AAC-364, Dell PERC2/QC or Adaptec
    5400S. This problem  coincides with the introduction of the adapter_comm
    and adapter_deliver platform functions (Message [PATCH 1/4] aacraid:
    rework communication support code, January 23 2007, which initially
    migrated to 2.6.21)
    
    The panic occurs with an uninitialized adapter_deliver platform function
    pointer. The enclosed patch, unmodified as tested by Rainer, solves the
    problem.
    
    Signed-off-by: Mark Salyzyn <[EMAIL PROTECTED]>
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/scsi/aacraid/aacraid.h |    1 +
 drivers/scsi/aacraid/rx.c      |    2 +-
 drivers/scsi/aacraid/sa.c      |    9 ++++++++-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 45ca3e8..42311a7 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -1823,6 +1823,7 @@ int aac_send_shutdown(struct aac_dev *dev);
 int aac_probe_container(struct aac_dev *dev, int cid);
 int _aac_rx_init(struct aac_dev *dev);
 int aac_rx_select_comm(struct aac_dev *dev, int comm);
+int aac_rx_deliver_producer(struct fib * fib);
 extern int numacb;
 extern int acbsize;
 extern char aac_driver_version[];
diff --git a/drivers/scsi/aacraid/rx.c b/drivers/scsi/aacraid/rx.c
index 291cd14..0d25853 100644
--- a/drivers/scsi/aacraid/rx.c
+++ b/drivers/scsi/aacraid/rx.c
@@ -378,7 +378,7 @@ static int aac_rx_check_health(struct aac_dev *dev)
  *
  *     Will send a fib, returning 0 if successful.
  */
-static int aac_rx_deliver_producer(struct fib * fib)
+int aac_rx_deliver_producer(struct fib * fib)
 {
        struct aac_dev *dev = fib->dev;
        struct aac_queue *q = &dev->queues->queue[AdapNormCmdQueue];
diff --git a/drivers/scsi/aacraid/sa.c b/drivers/scsi/aacraid/sa.c
index f4b5e97..85b91bc 100644
--- a/drivers/scsi/aacraid/sa.c
+++ b/drivers/scsi/aacraid/sa.c
@@ -5,7 +5,7 @@
  * based on the old aacraid driver that is..
  * Adaptec aacraid device driver for Linux.
  *
- * Copyright (c) 2000 Adaptec, Inc. ([EMAIL PROTECTED])
+ * Copyright (c) 2000-2007 Adaptec, Inc. ([EMAIL PROTECTED])
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -257,6 +257,11 @@ static void aac_sa_start_adapter(struct aac_dev *dev)
                        NULL, NULL, NULL, NULL, NULL);
 }
 
+static int aac_sa_restart_adapter(struct aac_dev *dev, int bled)
+{
+       return -EINVAL;
+}
+
 /**
  *     aac_sa_check_health
  *     @dev: device to check if healthy
@@ -366,7 +371,9 @@ int aac_sa_init(struct aac_dev *dev)
        dev->a_ops.adapter_notify = aac_sa_notify_adapter;
        dev->a_ops.adapter_sync_cmd = sa_sync_cmd;
        dev->a_ops.adapter_check_health = aac_sa_check_health;
+       dev->a_ops.adapter_restart = aac_sa_restart_adapter;
        dev->a_ops.adapter_intr = aac_sa_intr;
+       dev->a_ops.adapter_deliver = aac_rx_deliver_producer;
        dev->a_ops.adapter_ioremap = aac_sa_ioremap;
 
        /*
-
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