I'm having problems getting an adaptec aha1542b ISA SCSI controller to
work as a secondary controller.
I have:
A DELL Omnitech 590
Intel Pentium 90
64 MB RAM
PCI Motherboard w/ onboard NEC NCR53c8xx SCSI controller (I don't know
precisely which version because some of the docs are missing).
Internal 1GB SCSI HD.
SCSI Tape Drive and CD-ROM.
2 x Storage tower: 4 x 512MB SCSI drives each
Slackware linux 2.3 (non-ELF) w/ kernel 1.2.8
As you can see, I have a total of 11 SCSI devices and need a second bus.
I installed the aha1542b controller and attached one of the storage
towers to it.
The board is set to the default IRQ (11), and I changed the IO address
from 0x330 to 0x334 so that the system would boot (Otherwise, the built
in controller will automatically configure itself as a secondary
controller and the adaptec will try to boot).
The floppy drive controller on the adaptec card is disabled.
I have compiled the kernel with both the NCR53c7,8xx and adaptec aha1542b
drivers. On bootup, the driver displays the following message twice:
"Invalid address for shpnt with 1542."
then detects the onboard controller and boots properly (but without
making the secondary controller).
The message comes from the following location in the aha1542_detect
function in aha1542.c (line 934):
/* For now we do this - until kmalloc is more intelligent
we are resigned to stupid hacks like this */
if ((unsigned int) shpnt > 0xffffff) {
printk("Invalid address for shpnt with 1542.\n");
goto unregister;
}
if(!aha1542_test_port(bases[indx], shpnt)) goto
unregister;
I have tried removing other drivers in the kernel and moving the IO
address of the card to 0x234 (with a LILO parameter to tell the driver
where to find it). I have also tried the 1.2.13 kernel, however, the
aha1542.c files appear identical in both versions and the same problem
results.
Apparently, the SCSI host structure is being allocated outside of an
acceptable range. What causes this, and what can I do (hack, kludge, or
otherwise) to get the driver to allocate this structure properly?
What is the problem described here with kmalloc and how can it be avoided
(besides not using the driver...)?
Any help would be appreciated.