Subject: idesc.c
To: None <port-amiga@NetBSD.ORG>
From: Dimitri Lommers <dlommers@worldonline.nl>
List: port-amiga
Date: 12/10/1997 20:06:16
Hi folks,

Shouldn't the IDE driver have a restriction on the maximum blocks transferred
at a time?

from idesc.c:
-----------------------------------------------
	case READ_BIG:
		lba = *((long *)(cbuf + 2));
		nblks = *((u_short *)(cbuf + 7));
		return (ideiread(ide, lba, buf, nblks));

	case READ_COMMAND:
		lba = *((long *)cbuf) & 0x001fffff;
		nblks = *((u_char *)(cbuf + 4));
		if (nblks == 0)
			nblks = 256;
		return (ideiread(ide, lba, buf, nblks));
-----------------------------------------------

Seems like the driver (READ_BIG) accepts a 16 bit sector-count value while
the IDE register is only 8 bits.
I assume higher levels will not take care of this (to give scsi maximum
performance).

The wd driver from the dev/isa directory seems to have such a restriction.

I'm asking this because of problems with my harddisk.

Am I wrong?