public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* aic7xxx errors with 2.4.8-ac7 on 440gx mobo
@ 2001-08-20  8:36 Yusuf Goolamabbas
  2001-08-20  8:55 ` Cliff Albert
  0 siblings, 1 reply; 75+ messages in thread
From: Yusuf Goolamabbas @ 2001-08-20  8:36 UTC (permalink / raw)
  To: linux-kernel

Hi, 2.4.8 and 2.4.9 have no problems compiling and booting on a P3 500
440GX mobo (APIC not compiled in the kernel)

With 2.4.8-ac7, I get SCSI errors and the kernel fails to boot. If I
compile with APIC enabled and APIC on UP also enabled, it boots
cleanly

booting with append="noapic", gives the same errors


SCSI subsystem driver Revision: 1.00
PCI: Assigned IRQ 11 for device 00:0c.0
PCI: Sharing IRQ 11 with 00:0c.1
PCI: Found IRQ 11 for device 00:0c.1
PCI: Sharing IRQ 11 with 00:0c.0

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

scsi1 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.1
        <Adaptec aic7896/97 Ultra2 SCSI adapter>
        aic7896/97: Ultra2 Wide Channel B, SCSI Id=7, 32/255 SCBs

scsi0:0:0:0: Attempting to queue an ABORT message
scsi0:0:0:0: Command already completed
aic7xxx_abort returns 8194
scsi0:0:0:0: Attempting to queue an ABORT message
scsi0:0:0:0: Device is active, asserting ATN
Recovery code sleeping
Recovery code awake
Timer Expired
aic7xxx_abort returns 8195
scsi0:0:0:0: Attempting to queue a TARGET RESET message
aic7xxx_dev_reset returns 8195
Recovery SCB completes
scsi0:0:0:0: Attempting to queue an ABORT message
ahc_intr: HOST_MSG_LOOP bad phase 0x0
scsi0:0:0:0: Cmd aborted from QINFIFO
aic7xxx_abort returns 8194
scsi: device set offline - not ready or command retry failed after bus reset: host 0 channel 0 id 0 lun 0
scsi0:0:1:0: Attempting to queue an ABORT message
scsi0:0:1:0: Command already completed
aic7xxx_abort returns 8194
scsi0:0:1:0: Attempting to queue an ABORT message
scsi0:0:1:0: Command already completed
aic7xxx_abort returns 8194
scsi0:0:1:0: Attempting to queue a TARGET RESET message
scsi0:0:1:0: Is not an active device
scsi0:0:1:0: Attempting to queue an ABORT message
scsi0:0:1:0: Command already completed
aic7xxx_abort returns 8194

Regards, Yusuf

^ permalink raw reply	[flat|nested] 75+ messages in thread
* Re: With Daniel Phillips Patch
@ 2001-08-23  1:06 Van Maren, Kevin
  2001-08-23  1:31 ` David S. Miller
  0 siblings, 1 reply; 75+ messages in thread
From: Van Maren, Kevin @ 2001-08-23  1:06 UTC (permalink / raw)
  To: 'gibbs@scsiguy.com'; +Cc: 'linux-kernel@vger.kernel.org'

> Can you enumerate the devices that actually issue a DAC when loaded with
> 64bit address with 0's in the most significant 32bits?

There had better not be any.  It is a violation of the PCI specification
to generate a DAC if the address fits in 32 bits.

DAC is a LOT faster and more efficient than a copy (except perhaps for the
very smallest of transfers, which are already very inefficient).

The problem is that (for most hardware) the 64-bit descriptors take up more
room (and hence more PCI cycles to transfer) than the 32-bit descriptors,
especially with a 32-bit bus.  [Apparently not the case for the 39-bit
AIC7xxx driver, but it is the case for the 64-bit Adaptec.]  So unless
there is the possibility of using 64-bit DMA, you want to use the smaller
descriptors.  So on systems with <= 32bits of memory/dma_addr_t, the driver
should be able to "know" that it should use the smaller descriptors for
efficiency.

I also believe that a dma_addr_t should be determined by the system, not the
driver: the driver should indicate constraints and the OS should ensure that
the dma_addr_t it provides meets the constraints.  Separate 32-bit and
64-bit
DMA routines adds unnecessary complication.  As far as I can tell, the only
reason to have separate APIs is so that 32bit machines with 64 bit DMA
addresses (PAE on ia32) can avoid copying around an "extra" 32bits of
address for the drivers that don't support 64-bit DMA.  I think it makes
more sense to just make the dma_addr_t 64 bits on ia32 if using PAE and
deal with the insignificant "waste" -- you have > 4GB RAM :-)

Kevin Van Maren

^ permalink raw reply	[flat|nested] 75+ messages in thread
* RE: With Daniel Phillips Patch
@ 2001-08-23  2:22 Van Maren, Kevin
  2001-08-23  2:26 ` David S. Miller
  0 siblings, 1 reply; 75+ messages in thread
From: Van Maren, Kevin @ 2001-08-23  2:22 UTC (permalink / raw)
  To: 'David S. Miller'; +Cc: linux-kernel

>    There had better not be any.  It is a violation of the PCI 
> specification
>    to generate a DAC if the address fits in 32 bits.
>    
> Then sym53c8xx with Gerard's current scripts code is in violation of
> the PCI specification when the chip is told to use DAC :-)

If you say so.  You make it sound like the driver can
compensate for the broken hardware by explicitly telling
it to use SAC for a transfer after checking if the
dma_addr < 4GB.  The HW is not in "violation" if it doesn't
generate a DAC < 4GB, and if it takes a driver check to
ensure that, it is the driver's problem: it is trivial to
check the high 32-bits of a 64-bit address for 0.

If the HW generates DAC for addresses < 4GB whenever enabling
support for 64-bit addresses, then that is very broken.

>    DAC is a LOT faster and more efficient than a copy (except 
> perhaps for the
>    very smallest of transfers, which are already very inefficient).
> 
> SAC with IOMMU is faster on some platforms.

Okay, so when the driver asks for the physical address, the arch-
specific code maps it with the iommu and returns a 32-bit address.
In that case, the dma_addr_t is 32 bits (unless it can return
64-bit addresses as well).

> There are several other reasons.  (Man, people check the archives, I
> feel like I've typed this in like 5 times in linux-kernel postings
> already)

If you send pointer to your previous message I will read it.  I am
interested in this subject (and have experience), so I threw in my
2 cents.  Please don't complain that I didn't spend hours searching
through the archives looking for a message from months? years? ago
that I didn't know existed.

> Let me list one of them, suppose you have a device for which
> some transfers can happily use DAC addresses, but some others strictly
> need to work with SAC addresses.

What does that have to do with anything?  That just means that the
DMA constraints have to be specified on a per-mapping/per-allocation
basis, not a per-device basis.  That doesn't mean you need separate
routines for 64-bit PCI addresses and 32-bit PCI addresses.  It just
means you need sane DMA constraints handling.

> I think for SAC-only devices, it is just dumb wasted space in the
> driver image.

Perhaps.  But the question is whether it is simpler/better to have
HIGHMEM x86 kernels (which by definition have memory to spare) waste
a few bytes to provide "sane" interfaces across all platforms.  And
whether the kernel bloat for all the additional functions compensates
for it ;-)

Reasonable people can have different opinions.

Kevin Van Maren

^ permalink raw reply	[flat|nested] 75+ messages in thread

end of thread, other threads:[~2001-09-03 16:25 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-08-20  8:36 aic7xxx errors with 2.4.8-ac7 on 440gx mobo Yusuf Goolamabbas
2001-08-20  8:55 ` Cliff Albert
2001-08-20 10:37   ` Alan Cox
2001-08-20 10:56     ` Yusuf Goolamabbas
2001-08-20 10:56       ` Alan Cox
2001-08-20 11:13         ` Yusuf Goolamabbas
2001-08-20 11:09           ` Alan Cox
2001-08-20 16:43             ` Doug Ledford
2001-08-20 12:46     ` Stefan Fleiter
2001-08-20 15:19       ` Ville Herva
2001-08-20 20:33         ` Justin T. Gibbs
2001-08-20 16:45       ` Doug Ledford
2001-08-20 17:23         ` Stefan Fleiter
2001-08-20 20:28       ` Justin T. Gibbs
2001-08-21 20:24         ` Stefan Fleiter
2001-08-20 16:21     ` Cliff Albert
2001-08-20 17:23       ` Peter T. Breuer
2001-08-20 17:28         ` Cliff Albert
2001-08-20 20:27   ` Justin T. Gibbs
2001-08-20 20:45     ` Cliff Albert
2001-08-20 21:04       ` Cliff Albert
2001-08-20 21:09         ` Cliff Albert
2001-08-20 21:45           ` Justin T. Gibbs
2001-08-20 22:36             ` aic7xxx with 2.4.9 on 7899P Sven Heinicke
2001-08-21 14:42               ` With Daniel Phillips Patch (was: aic7xxx with 2.4.9 on 7899P) Sven Heinicke
2001-08-21 15:08                 ` Daniel Phillips
2001-08-21 16:48                   ` Sven Heinicke
2001-08-21 17:18                     ` Justin T. Gibbs
2001-08-21 22:49                       ` Sven Heinicke
2001-08-22 13:06                         ` Gérard Roudier
2001-08-21 17:26                     ` Daniel Phillips
2001-08-21 17:55                       ` Stephan von Krawczynski
2001-08-21 18:33                         ` Justin T. Gibbs
2001-08-22  6:46                           ` Jens Axboe
2001-08-22 13:24                             ` Justin T. Gibbs
2001-08-22 15:05                               ` With Daniel Phillips Patch David S. Miller
2001-08-22 18:21                                 ` Gérard Roudier
2001-08-22 18:32                                   ` David S. Miller
2001-08-22 18:32                                 ` Justin T. Gibbs
2001-08-22 18:46                                   ` David S. Miller
2001-08-22 19:41                                     ` Justin T. Gibbs
2001-08-22 20:19                                       ` David S. Miller
2001-08-22 21:07                                     ` Gérard Roudier
2001-08-22 21:14                                       ` David S. Miller
2001-08-22 21:14                                       ` David S. Miller
2001-08-22 21:40                                       ` Justin T. Gibbs
2001-08-22 23:09                                         ` David S. Miller
2001-08-23  0:01                                           ` Justin T. Gibbs
2001-08-23  0:40                                             ` David S. Miller
2001-08-23  0:55                                               ` Justin T. Gibbs
2001-08-23  1:03                                                 ` Matthew Jacob
2001-08-23  1:08                                                 ` David S. Miller
2001-08-23  1:32                                                   ` Justin T. Gibbs
2001-08-23  1:39                                                     ` David S. Miller
2001-08-23  1:49                                                       ` Justin T. Gibbs
2001-08-21 22:44                       ` With Daniel Phillips Patch (was: aic7xxx with 2.4.9 on 7899P) Sven Heinicke
2001-08-22  0:58                         ` Daniel Phillips
2001-08-22 10:25                 ` Marcelo Tosatti
2001-08-22 16:09                   ` Sven Heinicke
2001-08-22 15:42                     ` Marcelo Tosatti
2001-08-22 20:25                       ` Sven Heinicke
2001-08-29  7:30                       ` Andrey Nekrasov
2001-09-03 14:58                         ` Marcelo Tosatti
2001-08-20 22:55             ` aic7xxx errors with 2.4.8-ac7 on 440gx mobo Cliff Albert
2001-08-21  0:36               ` Justin T. Gibbs
2001-08-21 15:34                 ` Gérard Roudier
2001-08-20 21:44         ` Justin T. Gibbs
2001-08-20 21:48           ` Cliff Albert
2001-08-25  7:15           ` Cliff Albert
  -- strict thread matches above, loose matches on Subject: below --
2001-08-23  1:06 With Daniel Phillips Patch Van Maren, Kevin
2001-08-23  1:31 ` David S. Miller
2001-08-23  1:40   ` Justin T. Gibbs
2001-08-23  1:45     ` David S. Miller
2001-08-23  2:22 Van Maren, Kevin
2001-08-23  2:26 ` David S. Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox