forked from luck/tmp_suning_uos_patched
[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 <aacraid@adaptec.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
ed56047aec
commit
2ab01efd1d
|
@ -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[];
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* based on the old aacraid driver that is..
|
||||
* Adaptec aacraid device driver for Linux.
|
||||
*
|
||||
* Copyright (c) 2000 Adaptec, Inc. (aacraid@adaptec.com)
|
||||
* Copyright (c) 2000-2007 Adaptec, Inc. (aacraid@adaptec.com)
|
||||
*
|
||||
* 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;
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue
Block a user