Subject: RE: aha1542.c DMA problem
To: current-users <current-users@sun-lamp.cs.berkeley.edu>
From: Manuel Bouyer <bouyer@ensta.fr>
List: current-users
Date: 04/15/1994 15:16:18
In my previous mail, i said:
>Hi,
>i've got a problem whith the aha1542.c driver.
>I've  got a scsi driver which do the following things, from ioctl() (two 
>different ioctl):
>
>            if ((kdata=malloc(conf->packet_length,M_TEMP,M_NOWAIT))
>                        ==NULL) {
>                        printf("%s: not enouth memory\n",
>                        sworm->sc_dev.dv_xname);
>                return EIO;
>                }
>
>and then
>    return scsi_scsi_cmd(sworm->sc_link, (struct scsi_generic *) &cmd,
>        sizeof(cmd),kdata,len*WORM_BLKSIZE,CDRETRIES,
>        10000, NULL, SCSI_DATA_OUT);
>
>kdata is a global u_char*
>
>conf->packet_length = 64 k (i've also tried 32 and  16 k,
>and len*WORM_BLKSIZE is always =< conf->packet_length (A printf confirm these values)
>
>sometines, all works fine.
>
>sometimes, i get from aha0 a 'aha0: DMA beyond end of ISA' (depending on
>how the malloc was performed, i think)
>as i've only 16 Meg RAM
>
>I am doing something wrong ?
>I'm using the tar_files of Apr 10 (aha1542.c is Apr  9)
>
>Here is what i get at boot: 
>
> CPU: i486DX (486-class CPU)
> real mem  = 16646144
> avail mem = 14553088
> using 228 buffers containing 933888 bytes of memory
> pc0 at isa0 port 0x60-0x6f irq 1: color
> com0 at isa0 port 0x3f8-0x3ff irq 4: ns82450 or ns16450, no fifo
> com1 at isa0 port 0x2f8-0x2ff irq 3: ns82450 or ns16450, no fifo
> lpt1 at isa0 port 0x378-0x37f: polled
> wdc0 at isa0 port 0x1f0-0x1f7 irq 14
> wd0 at wdc0 drive 0: 327MB 665 cyl, 16 head, 63 sec <Conner Peripherals 340MB - CP30344>
> fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
> fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
> aha0: aha_cmd, cmd/data port empty 3
> aha0 at isa0 port 0x330-0x333 irq 11 drq 5
> scsibus0 at aha0
> aha0 targ 0 lun 0: <SEAGATE ST11200N SUN1.059500> SCSI2 direct fixed
> sd0 at scsibus0: 1005MB, 1872 cyl, 15 head, 73 se , 512 bytes/sec
> aha0 targ 1 lun 0: <SEAGATE ST11200N SUN1.058808> SCSI2 direct fixed
> sd1 at scsibus0: 1005MB, 1872 cyl, 15 head, 73 se , 512 bytes/sec
> aha0 targ 2 lun 0: <TEXEL   CD-ROM DM-XX24 K1.10> SCSI2 readonly removable
> cd0 at scsibus0: cd present, 400000 x 2048 byte records
> aha0 targ 3 lun 0: <SEAGATE ST11200N SUN1.059500> SCSI2 direct fixed
> sd2 at scsibus0: 1005MB, 1872 cyl, 15 head, 73 sec, 512 bytes/sec
> aha0 targ 4 lun 0: <SEAGATE ST11200N SUN1.059500> SCSI2 direct fixed
> sd3 at scsibus0: 1005MB, 1872 cyl, 15 head, 73 sec, 512 bytes/sec
> aha0 targ 5 lun 0: <RICOH   RS9200CD        0159> SCSI1 worm removable
> 
> RICOH-
> RICOH   -worm0 at scsibus0: drive empty
> aha0 targ 6 lun 0: <HP      HP35480A        1009> SCSI2 sequential removable
> st0 at scsibus0: drive empty
> ed1 at isa0 port 0x250-0x25f iomem 0xd8000-0xd9fff
> irq 9: address 02:60:8c:aa:e5:60, type 3c503 (16-bit)
> ie0: unknown AT&T board type code 0
> ie0: can't map 3C507 RAM in high memory
> npx0 at isa0 port 0xf0-0xff: using exception 16
> biomask 4840 netmask 200 ttymask 1a
>

I've got more informations about this:
the 'fsck -n' from /etc/daily gives the same DMA error message from aha0, 
followed by a 'panic: biodone already done' (or something like this).
This souds like a bug in the aha1542 driver, no ? (or perhaps in memory
management)
I've got this problem on the two 486 box running this version of
NetBSD-current, whith some different kernel and hardware configuration.

--
Manuel Bouyer, Ecole Nationale Superieure de Techniques Avancees, Paris
email: bouyer@ensta.fr
--

------------------------------------------------------------------------------