aacraid: Adaptec 2200S support broken on x86_64 by commit 94cf6ba11b068b8a8f68a1e88bffb6827e92124b

Previous thread: [GIT PULL] AMD IOMMU fixes for 2.6.27-rc6 by Joerg Roedel on Wednesday, September 17, 2008 - 7:23 am. (2 messages)

Next thread: Re: [PATCH 2/4] libata: Implement disk shock protection support by Elias Oltmanns on Wednesday, September 17, 2008 - 8:26 am. (1 message)
From: Hillier, Gernot
Date: Wednesday, September 17, 2008 - 7:03 am

Hi there!

On our AMD64 machines equipped with old Adaptec 2200S controllers, we
experienced a regression when updating to 2.6.25. The machines won't
boot anymore (in a reasonable time), but instead spit out tons of those
messages:
aac_srb: aac_fib_send failed with status: 8195

This is already reported in quite some places including LKML:
http://lkml.org/lkml/2008/5/12/365
https://bugzilla.redhat.com/show_bug.cgi?id=450444
https://bugzilla.redhat.com/show_bug.cgi?id=453472
http://www.linuxquestions.org/questions/red-hat-31/aacsrb-aacfibsend-failed-with-statu...
http://forums.gentoo.org/viewtopic-p-5077382.html?sid=a51c3a0fba6aa854c0b49b8fae5cc15a

We found that this regression seems to be introduced by the bugfix
"aacraid: fix driver failure with Dell PowerEdge
Expandable RAID Controller 3/Di":
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=94cf6ba11b...

By simply removing the quirk flag for our controller, we could boot again.

We did some quick stress tests on an AMD64bit machine with 16GB of RAM 
and saw no problems after this change:

diff -ur linux-2.6.25.11-0.1.ct1.orig/drivers/scsi/aacraid/linit.c linux-2.6.25.11-0.1.ct1/drivers/scsi/aacraid/linit.c
--- linux-2.6.25.11-0.1.ct1.orig/drivers/scsi/aacraid/linit.c	2008-09-15 16:07:14.000000000 +0100
+++ linux-2.6.25.11-0.1.ct1/drivers/scsi/aacraid/linit.c	2008-09-15 16:09:26.000000000 +0100
@@ -176,7 +176,7 @@
 	{ aac_rx_init, "aacraid",  "ADAPTEC ", "catapult        ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* catapult */
 	{ aac_rx_init, "aacraid",  "ADAPTEC ", "tomcat          ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* tomcat */
 	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2120S   ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2120S (Crusader) */
-	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2200S   ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S ...
From: Tomas Henzl
Date: Tuesday, October 7, 2008 - 6:37 am

Hi,
from what I read about this it seems to me that people are complaining also about issues with the 2120S Controller.
So if the patch is taken in this form the original patch should be extended to cover both controllers.

Signed-off-by: Tomas Henzl <thenzl@redhat.com>

---
diff -Naurp linux-2.6.18.i686b/drivers/scsi/aacraid/linit.c linux-2.6.18.i686p6/drivers/scsi/aacraid/linit.c
--- linux-2.6.18.i686b/drivers/scsi/aacraid/linit.c	2008-09-25 18:06:23.000000000 +0200
+++ linux-2.6.18.i686p6/drivers/scsi/aacraid/linit.c	2008-10-03 12:12:06.000000000 +0200
@@ -175,8 +175,8 @@ static struct aac_driver_ident aac_drive
 	{ aac_rx_init, "percraid", "DELL    ", "PERCRAID        ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* PERC 3/Di (Boxster/PERC3DiB) */
 	{ aac_rx_init, "aacraid",  "ADAPTEC ", "catapult        ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* catapult */
 	{ aac_rx_init, "aacraid",  "ADAPTEC ", "tomcat          ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* tomcat */
-	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2120S   ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2120S (Crusader) */
-	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2200S   ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan) */
+	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2120S   ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG },		      /* Adaptec 2120S (Crusader) */
+	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2200S   ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG },		      /* Adaptec 2200S (Vulcan) */
 	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2200S   ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan-2m) */
 	{ aac_rx_init, "aacraid",  "Legend  ", "Legend S220     ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S220 (Legend Crusader) */
 	{ aac_rx_init, "aacraid",  "Legend  ", "Legend S230     ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG ...
From: Hillier, Gernot
Date: Tuesday, October 7, 2008 - 8:48 am

All our tests with this patch enabled look good so far and comment #30 in
[1] also states that removing AAC_QUIRK_SCSI_32 for those controllers fixes
the problem.

As the original workaround was only intended to fix things on the DELL
PERCRAID, I'd be glad to see our patch being applied to disable the
workaround for our controllers again.

I didn't provide a description for the original patch yet (sorry), so
here's a suggestion:

--- SNIP ---
aacraid: disable Dell Percraid quirk on Adaptec 2200S and 2120S

A lot of 64bit machines with Adaptec 2200S and 2120S controllers don't
recognize SCSI disks any more with the patch "fix driver failure with Dell
PowerEdge Expandable RAID Controller 3/Di", but fail with tons of "aac_srb:
aac_fib_send failed with status: 8195" instead. This patch disables the
quirk introduced in the change cited above for those two controllers again.

Signed-off-by: Gernot Hillier <gernot.hillier@siemens.com>
--- SNAP ---

[1] https://bugzilla.redhat.com/show_bug.cgi?id=453472

-- 
Gernot Hillier, Siemens AG, CT SE 2
--

From: Andrew Morton
Date: Monday, November 10, 2008 - 4:20 pm

On Tue, 07 Oct 2008 15:37:04 +0200

I added this to my tree with Tomas's title&changelog (thanks - I was
about to whine about that).  Thanks Thomas for the reminder.  I tagged
it as backportable to 2.6.25.x, 2.6.26.x and 2.6.27.x.


This bugfix has been there for a month and this driver has been busted
since 2.6.24.  Is anyone out there?  Mark?  James?
--

From: James Bottomley
Date: Monday, November 10, 2008 - 9:20 pm

Could someone from Adaptec and Dell please verify that this is correct?
Mark Salyzyn no longer works there, but the aacraid@adaptec.com address
is supposed to still be working.

Thanks,

James


--

From: Andrew Morton
Date: Monday, November 10, 2008 - 9:54 pm

Here is the patch:



From: Tomas Henzl <thenzl@redhat.com>

A lot of 64bit machines with Adaptec 2200S and 2120S controllers don't
recognize SCSI disks any more with the patch "fix driver failure with Dell
PowerEdge Expandable RAID Controller 3/Di", but fail with tons of "aac_srb:
aac_fib_send failed with status: 8195" instead. This patch disables the
quirk introduced in the change cited above for those two controllers again.

Signed-off-by: Gernot Hillier <gernot.hillier@siemens.com>
Signed-off-by: Tomas Henzl <thenzl@redhat.com>
Cc: <aacraid@adaptec.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Tested-by: Thomas Guyot-Sionnest <dermoth@aei.ca>
Cc: <stable@kernel.org>		[2.6.27.x, 2.6.26.x, 2.6.25.x]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 drivers/scsi/aacraid/linit.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff -puN drivers/scsi/aacraid/linit.c~aacraid-disable-dell-percraid-quirk-on-adaptec-2200s-and-2120s drivers/scsi/aacraid/linit.c
--- a/drivers/scsi/aacraid/linit.c~aacraid-disable-dell-percraid-quirk-on-adaptec-2200s-and-2120s
+++ a/drivers/scsi/aacraid/linit.c
@@ -175,8 +175,8 @@ static struct aac_driver_ident aac_drive
 	{ aac_rx_init, "percraid", "DELL    ", "PERCRAID        ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* PERC 3/Di (Boxster/PERC3DiB) */
 	{ aac_rx_init, "aacraid",  "ADAPTEC ", "catapult        ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* catapult */
 	{ aac_rx_init, "aacraid",  "ADAPTEC ", "tomcat          ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* tomcat */
-	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2120S   ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2120S (Crusader) */
-	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2200S   ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan) */
+	{ aac_rx_init, "aacraid",  "ADAPTEC ", "Adaptec 2120S   ", 1, ...
From: Tomas Henzl
Date: Tuesday, November 11, 2008 - 2:56 am

Adding Achim Leubner from Adaptec to the CC:list,
he is the new person responsible for the driver.
Achim what do you think about this patch ?

Thanks,

--

Previous thread: [GIT PULL] AMD IOMMU fixes for 2.6.27-rc6 by Joerg Roedel on Wednesday, September 17, 2008 - 7:23 am. (2 messages)

Next thread: Re: [PATCH 2/4] libata: Implement disk shock protection support by Elias Oltmanns on Wednesday, September 17, 2008 - 8:26 am. (1 message)