Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Apr 1995 21:20:23 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        hackers@FreeBSD.org, julian@ref.tfs.com
Subject:   Re: [EISA] related matters
Message-ID:  <199504231120.VAA27990@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
This discussion should probaly be in freebsd-current.

>The present scheme of allocating devices to one of a number
>of spl levels and configuring them by those queues is in my opinion, broken..

The isa version of FreeBSD actually has sets of interrupts and not levels.
The sets may overlap.  Configuration is broken but it is hard to avoid
having unwanted interdependencies of the sets without changing large
amounts of "machine-independent" code.  E.g., splbio() would have to be
replaced by (*splbio[bp->splbiotab])() for minimal locking while working
on block `bp'.  These changes would probably just make things slower.

>How are PCI and EISA devices supposed to fit in with this

>if my EISA devices have different spls, should I add them to the queues
>used by the isa code, or should I some how beat up the priority masks 
>for each device?

If there is an isa `bio' device (e.g., fd) and an eisa `bio' device
(e.g. sd) then `biomask' has to contain the union of the interrupt masks
for the two devices so that the "machine-independent" code doesn't have
to care whether it is working on an fd block or an sd block, or a
mixture.

>it would seem to me that the whole situation would be simpler
>if we could simply let each device set a spl elvel individually, 
>and only have a single list of devices (one for ISA). 

This would be easy to allow at interrupt time: just mask the interrupt
that occurred and not everything in the xxx_imask for the interrupt.
This wouldn't simplify the problem of initializing the xxx_imask's,
however.

>The problem is that for PCI and EISA busses, the devices are found
>in the order they appear on the bus rather than the order they appear
>on some internal list. This breaks the way that 
>the isa probing code works and makes it very difficult to
>fit in with it..

>other OS's (e.g. mach) manage to allow the masks for each device be
>individually specified in any order..
>does anyone see why we shouldn't use their code for the job?

Is it encumbered?

NetBSD also has better code for this.  I think it recalculates all
the xxx_imasks whenever something important has changed.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199504231120.VAA27990>