*BSD News Article 29451


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!msuinfo!agate!howland.reston.ans.net!pipex!starlight.datlog.co.uk!root
From: root@datlog.co.uk (Charlie Root)
Newsgroups: comp.os.386bsd.questions
Subject: Re: AHA1542 hanging with FreeBSD 1.1beta
Date: 17 Apr 1994 21:06:40 GMT
Organization: Data Logic Limited (A Raytheon Company).
Lines: 83
Message-ID: <2os8de$q35@starlight.datlog.co.uk>
References: <Co3MBA.s3@pegasus.com> <CoAsut.8K@pegasus.com>
NNTP-Posting-Host: gomi.datlog.co.uk
X-Newsreader: TIN [version 1.2 PL2]


Ok then,

Now I've got the time to do something about it:

[I'm mailing this to FreeBSD-FAQ@freefall.cdrom.com]

Richard Foulk (richard@pegasus.com) wrote:

>>I have a 486/66 with an AHA1542CF SCSI card that locks up about
>>once a day with the disk activity light on.
>>
>>Does this sound familiar to anyone?
>>
>>The system sees a lot of disk activity and the lockups don't seem
>>to be caused by any one particular program.  I've tried various
>>speed settings, etc., too no avail.
>>
>>Do I need to buy some other type of card?  A new motherboard?
>
>I got a helpful email response explaining that this controller
>allocates a buffer at the top of 16Megs which gets in the way if
>you have 16Megs of RAM, and consequently causes lockups.

You're welcome.

[FAQ ON]

Problem:  Machine hangs erratically - Adaptec 1542 SCSI controller and 16Mb RAM

Why:

The Adaptec is holding a substantial buffer in the top 16th Mb of RAM
[16Mb being the limit for ISA DMA transfers, the Adaptec being an ISA
bus mastering controller]

Basically this means that any RAM over 15Mb is in the same address space
as disk operations for the SCSI controller.

Solution 1:  Use your machine BIOS to map all RAM over 15Mb as unusable
I did this with two DELL machines (1993 Pheonix BIOS), it kills the
problem.

For the case in question the machine has a recent AMI BIOS, which does
not appear to offer this facility.

Solution 2:  Cause the 386bsd kernel to map out the offending Mb itself.

PLEASE NOTE THE FOLLOWING IS FOR 1.1BETA:  (it should be same for other
variants though)

/usr/src/sys/i386/i386/machdep.c  line 1116  in function init386

There is a quick fix already in place here commented on the basis that it
will be replaced by proper bounce buffers:

as given:
if ((pagesinext > 3840) && (pagesinext < 4096))

I have done away with the second part of the conditional expression, so
as to force the machine to allways report 15Mb or less of memory.

becomes:
if (pagesinext > 3840)

This results in a working system.

[FAQ OFF]

My appologies for not bringing this up earlier (last June), as I thought
from comp.os.386bsd.* traffic that it was specific to myself.

If there is sufficient demand I may be able to make a kernel or two available
by ftp.

Kevin.

Kevin Graham.			Data Logic Limited
Systems Engineer		CI Tower, St Georges Square, High Street,
kgraham@datlog.co.uk		New Malden, Surrey, England   KT3 4HH
Tel: +44 (0)81 715 9696 x414	Fax: +44 (0)81 715 1771

Systems, network and internet support for the Makurokurosuke...