2001-04-07 14:29:39

by J.A. Magallon

[permalink] [raw]
Subject: aic7xxx 6.1.10 breaks 2.4.3-ac3

Hi.

Subject says it all.

With latest updates, i just deleted the kernel aic7xxx subtree, put instead
the updated (from people.freebsd.org) tree, and built. All went fine
until (and including) 6.1.9.

6.1.10 just stops after the init messages and stays there forever.

scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.1.9
<Adaptec aic7890/91 Ultra2 SCSI adapter>
aic7890/91: Wide Channel A, SCSI Id=7, 32/255 SCBs

(6.1.10 stops here)

Vendor: IBM Model: DCAS-34330W Rev: S65A
Type: Direct-Access ANSI SCSI revision: 02
scsi0:0:0:0: Tagged Queuing enabled. Depth 253
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
(scsi0:A:0): 40.000MB/s transfers (20.000MHz, offset 15, 16bit)
SCSI device sda: 8467200 512-byte hdwr sectors (4335 MB)
Partition check:
sda: sda1 sda2 < sda5 sda6 sda7 sda8 >

--
J.A. Magallon # Let the source
mailto:[email protected] # be with you, Luke...

Linux werewolf 2.4.3-ac3 #1 SMP Thu Apr 5 00:28:45 CEST 2001 i686


2001-04-07 16:02:24

by Justin T. Gibbs

[permalink] [raw]
Subject: Re: aic7xxx 6.1.10 breaks 2.4.3-ac3

>Hi.
>
>Subject says it all.
>
>With latest updates, i just deleted the kernel aic7xxx subtree, put instead
>the updated (from people.freebsd.org) tree, and built. All went fine
>until (and including) 6.1.9.

That's not a sufficient way to upgrade. The tar files are there for
people who are porting the driver to other platforms. You should always
use the patches to upgrade as they often touch other portions of the
Linux kernel that need fixes in order to work correctly with the
aic7xxx driver.

>6.1.10 just stops after the init messages and stays there forever.

To be expected as you didn't apply the patch to scsi_lib.c that makes
scsi_unblock_host() actually run the device queues to start the system
back up again.

I'm working on an html page for my site that should explain all of
the upgrade proceedures.

--
Justin

2001-04-07 18:59:02

by J.A. Magallon

[permalink] [raw]
Subject: Re: aic7xxx 6.1.10 breaks 2.4.3-ac3


On 04.07 Justin T. Gibbs wrote:
>
> That's not a sufficient way to upgrade. The tar files are there for
> people who are porting the driver to other platforms. You should always
> use the patches to upgrade as they often touch other portions of the
> Linux kernel that need fixes in order to work correctly with the
> aic7xxx driver.
>
> >6.1.10 just stops after the init messages and stays there forever.
>
> To be expected as you didn't apply the patch to scsi_lib.c that makes
> scsi_unblock_host() actually run the device queues to start the system
> back up again.
>

There is no patch for 2.4.3-ac3. You could say, well if you want 6.1.10,
use plain 2.4.3.
That is not the way to do things. It is supposed that what people can get
at your site is the aic driver. If the patch contains something different,
from the tarball, nobody knows.

If there is a bug in kernel, please mail it to lkml.
And in your site make VERY clear and independent the patch to correct
that thing in main SCSI subsystem from the patch to upgrade your drivers.

> I'm working on an html page for my site that should explain all of
> the upgrade proceedures.
>

Good idea.

--
J.A. Magallon # Let the source
mailto:[email protected] # be with you, Luke...

Linux werewolf 2.4.3-ac3 #1 SMP Thu Apr 5 00:28:45 CEST 2001 i686

2001-04-07 23:34:31

by Justin T. Gibbs

[permalink] [raw]
Subject: Re: aic7xxx 6.1.10 breaks 2.4.3-ac3

>> To be expected as you didn't apply the patch to scsi_lib.c that makes
>> scsi_unblock_host() actually run the device queues to start the system
>> back up again.
>>
>
>There is no patch for 2.4.3-ac3. You could say, well if you want 6.1.10,
>use plain 2.4.3.

Actually, I would say, "Apply the 2.4.3 patch. It will probably apply
cleanly to your kernel. If it doesn't, and you don't know enough C
to correct the problem, you shouldn't be playing around with kernel
patches."

>That is not the way to do things. It is supposed that what people can get
>at your site is the aic driver.

Ahh, now I have people telling me what the content of my
site should be. ;-)

>If the patch contains something different, from the tarball, nobody knows.

I've figured this part out.

>If there is a bug in kernel, please mail it to lkml.

This has already happened in all cases save the functionality I've added
in 6.1.10. I haven't even gotten around to announcing 6.1.10 yet, so
you can hardly fault me for not posting the SCSI layer changes yet.

Anyway, posting something to LK doesn't help people running already
released kernels. Not everyone pushes the bleading edge by updating
their kernel daily. These people should be able to get driver updates
if they need them. As for people that run on the bleading edge, kernel
"releases" occur far too often and in too many flavors for me to track
them daily. So, I work with Linus and Alan to get driver changes
into their trees and provide patches against released kernels.

>And in your site make VERY clear and independent the patch to correct
>that thing in main SCSI subsystem from the patch to upgrade your drivers.

People using the driver will have to have the other fixes. They are
not separable. Separating them will only lead to more confusion. For
instance, 6.1.10 includes patches to Makefiles to correct for a link order
issue. This is another *required* change for the driver to work well.
Does that need to be in a separate patch file too?

--
Justin

2001-04-08 00:18:39

by J.A. Magallon

[permalink] [raw]
Subject: Re: aic7xxx 6.1.10 breaks 2.4.3-ac3


On 04.08 Justin T. Gibbs wrote:
>
> Actually, I would say, "Apply the 2.4.3 patch. It will probably apply
> cleanly to your kernel. If it doesn't, and you don't know enough C
> to correct the problem, you shouldn't be playing around with kernel
> patches."
>

Below is inlined the patch that touches everything outside the aic7xxx
private subtree. The rest needed is the src.tar.gz file from your site.
Just corrected offsets.

> >That is not the way to do things. It is supposed that what people can get
> >at your site is the aic driver.
>
> Ahh, now I have people telling me what the content of my
> site should be. ;-)

Nope, you can do whatever you like.

>
> This has already happened in all cases save the functionality I've added
> in 6.1.10. I haven't even gotten around to announcing 6.1.10 yet, so
> you can hardly fault me for not posting the SCSI layer changes yet.
>

Once you said 'here is my site for this certain soft updates', you can't
excpect that people do not check it in a regular basis, did you announce
anything or not.

=============== patch-follows

diff -u -r -N linux-2.4.3.virgin/Documentation/Configure.help
linux-2.4.3/Documentation/Configure.help
--- linux-2.4.3.virgin/Documentation/Configure.help Wed Apr 4 15:41:33
2001
+++ linux-2.4.3/Documentation/Configure.help Wed Apr 4 15:41:37 2001
@@ -5687,7 +5687,7 @@
Default: 253

Initial Bus Reset Settle Delay
-CONFIG_AIC7XXX_RESET_DELAY
+CONFIG_AIC7XXX_RESET_DELAY_MS
The number of milliseconds to delay after an initial bus reset.
The bus settle delay following all error recovery actions is
dictated by the SCSI layer and is not affected by this value.
diff -u -r -N linux-2.4.3.virgin/Makefile linux-2.4.3/Makefile
--- linux-2.4.3.virgin/Makefile Thu Mar 29 21:13:15 2001
+++ linux-2.4.3/Makefile Tue Apr 3 13:04:24 2001
@@ -144,7 +144,6 @@
DRIVERS-$(CONFIG_ATM) += drivers/atm/atm.o
DRIVERS-$(CONFIG_IDE) += drivers/ide/idedriver.o
DRIVERS-$(CONFIG_SCSI) += drivers/scsi/scsidrv.o
-DRIVERS-$(CONFIG_SCSI_AIC7XXX) += drivers/scsi/aic7xxx/aic7xxx_drv.o
DRIVERS-$(CONFIG_FUSION_BOOT) += drivers/message/fusion/fusion.o
DRIVERS-$(CONFIG_IEEE1394) += drivers/ieee1394/ieee1394drv.o

diff -u -r -N linux-2.4.3.virgin/arch/alpha/defconfig
linux-2.4.3/arch/alpha/defconfig
--- linux-2.4.3.virgin/arch/alpha/defconfig Sun Mar 4 15:30:18 2001
+++ linux-2.4.3/arch/alpha/defconfig Wed Apr 4 15:49:21 2001
@@ -286,7 +286,7 @@
# CONFIG_SCSI_AHA1740 is not set
CONFIG_SCSI_AIC7XXX=y
CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
-CONFIG_AIC7XXX_RESET_DELAY=5000
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
diff -u -r -N linux-2.4.3.virgin/arch/ppc/defconfig
linux-2.4.3/arch/ppc/defconfig
--- linux-2.4.3.virgin/arch/ppc/defconfig Sun Mar 4 15:30:18 2001
+++ linux-2.4.3/arch/ppc/defconfig Wed Apr 4 15:49:38 2001
@@ -297,7 +297,7 @@
# CONFIG_SCSI_AHA1740 is not set
CONFIG_SCSI_AIC7XXX=y
CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
-CONFIG_AIC7XXX_RESET_DELAY=15000
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
diff -u -r -N linux-2.4.3.virgin/arch/sparc64/defconfig
linux-2.4.3/arch/sparc64/defconfig
--- linux-2.4.3.virgin/arch/sparc64/defconfig Sun Mar 25 19:14:21 2001
+++ linux-2.4.3/arch/sparc64/defconfig Wed Apr 4 15:49:48 2001
@@ -307,7 +307,7 @@
CONFIG_SCSI_QLOGICPTI=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
-CONFIG_AIC7XXX_RESET_DELAY=5000
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT=y
CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8
diff -u -r -N linux-2.4.3.virgin/drivers/scsi/Makefile
linux-2.4.3/drivers/scsi/Makefile
--- linux-2.4.3.virgin/drivers/scsi/Makefile Mon Mar 26 16:36:30 2001
+++ linux-2.4.3/drivers/scsi/Makefile Tue Apr 3 13:04:15 2001
@@ -6,6 +6,12 @@
#
# 20 Sep 2000, Torben Mathiasen <[email protected]>
# Changed link order to reflect new scsi initialization.
+#
+# *!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!
+# The link order must be, SCSI Core, SCSI HBA drivers, and
+# lastly SCSI peripheral drivers (disk/tape/cdrom/etc.) to
+# satisfy certain initialization assumptions in the SCSI layer.
+# *!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!

O_TARGET := scsidrv.o

@@ -64,6 +70,9 @@
obj-$(CONFIG_SCSI_AHA152X) += aha152x.o
obj-$(CONFIG_SCSI_AHA1542) += aha1542.o
obj-$(CONFIG_SCSI_AHA1740) += aha1740.o
+ifeq ($(CONFIG_SCSI_AIC7XXX),y)
+obj-$(CONFIG_SCSI_AIC7XXX) += aic7xxx/aic7xxx_drv.o
+endif
obj-$(CONFIG_SCSI_AIC7XXX_OLD) += aic7xxx_old.o
obj-$(CONFIG_SCSI_IPS) += ips.o
obj-$(CONFIG_SCSI_FD_MCS) += fd_mcs.o
diff -u -r -N linux-2.4.3.virgin/drivers/scsi/scsi_lib.c
linux-2.4.3/drivers/scsi/scsi_lib.c
--- linux-2.4.3.virgin/drivers/scsi/scsi_lib.c Fri Mar 2 19:38:39 2001
+++ linux-2.4.3/drivers/scsi/scsi_lib.c Thu Apr 5 14:28:17 2001
@@ -1111,9 +1111,13 @@
*/
void scsi_unblock_requests(struct Scsi_Host * SHpnt)
{
+ Scsi_Device *SDloop;
+
SHpnt->host_self_blocked = FALSE;
+ /* Now that we are unblocked, try to start the queues. */
+ for (SDloop = SHpnt->host_queue; SDloop; SDloop = SDloop->next)
+ scsi_queue_next_request(&SDloop->request_queue, NULL);
}
-

/*
* Function: scsi_report_bus_reset()


--
J.A. Magallon # Let the source
mailto:[email protected] # be with you, Luke...

Linux werewolf 2.4.3-ac3 #1 SMP Thu Apr 5 00:28:45 CEST 2001 i686

2001-04-08 01:46:58

by Justin T. Gibbs

[permalink] [raw]
Subject: Re: aic7xxx 6.1.10 breaks 2.4.3-ac3

>Once you said 'here is my site for this certain soft updates', you can't
>excpect that people do not check it in a regular basis, did you announce
>anything or not.

I'm not expecting anything. I just find it amusing when people grab
stuff that has no instructions, don't look at what they've grabbed to
figure out what it is or how it works, and then complain when they
can't diagnose the result of their efforts.

--
Justin