Subject: Re: CVS commit: src/sys/dev/scsipi
To: Christos Zoulas <christos@NetBSD.org>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: source-changes
Date: 12/01/2006 20:06:26
On Thu, Nov 30, 2006 at 08:46:10PM -0600, khym@azeotrope.org wrote:
> On Thu, Nov 30, 2006 at 04:23:21PM +0000, Christos Zoulas wrote:
> >
> > Module Name: src
> > Committed By: christos
> > Date: Thu Nov 30 16:23:21 UTC 2006
> >
> > Modified Files:
> > src/sys/dev/scsipi: scsipi_all.h scsipi_cd.h scsipi_disk.h
> >
> > Log Message:
> > PR/34202: Dave Huang: Accessing cd device on alpha causes kernel trap
> >
> > From the PR:
> > Since struct scsipi_read_discinfo_data is an odd number of bytes long
> > (35 bytes), ti ends up being unaligned. wdc_datain_pio() uses
> > bus_space_read_multi_4() to read the response from the drive, and
> > since ti is unaligned, it causes an unaligned access fault.
> >
> > Add __aligned__(4) to all the structures.
>
> Uh oh... I wonder if maybe putting it on all the structures wasn't such
> a good idea after all... while the ATA/ATAPI devices seem OK, SCSI seems
> broken now:
>
> esiop0 at pci0 dev 6 function 0: Symbios Logic 53c875 (ultra-wide scsi)
> esiop0: using on-board RAM
> esiop0: interrupting at eb164 irq 0
> scsibus0 at esiop0: 16 targets, 8 luns per target
> [ ... ]
> scsibus0: waiting 2 seconds for devices to settle...
> esiop0: unexpected phase mismatch 1
> esiop0: unhandled scsi interrupt, sist=0xc0 sstat1=0x9 DSA=0x401ce000 DSP=0x580
I've not looked closely at the commit but I suspect some structs here are
really used unaligned, packed with some other, or a single int8.
--
Manuel Bouyer <bouyer@antioche.eu.org>
NetBSD: 26 ans d'experience feront toujours la difference
--