Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Apr 1995 21:05:16 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, jkh@freefall.cdrom.com
Cc:        ache@astral.msk.su, freebsd-current@freefall.cdrom.com, rgrimes@gndrsh.aac.dev.com
Subject:   Re: Strange kernel printf...
Message-ID:  <199504061105.VAA18008@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>Hmmmmm.  Would it be useful to have config changed to:

>1. Generate arrays of allocated addresses, IRQs (are there any devices
>   made that more than one?), DMA channels, etc. where it currently holds
>   only a single value.

Config already seem to handle this reasonably:

device	foo0	at isa? port 1 iomem 2 iosize 3 drq 4 irq 5 vector foointr
device	foo0	at isa? port 6 iomem 7 iosize 8 drq 9 irq 10

You can repeat everything except the vector and a reasonable arrays are
built.

>2. Accept a somewhat altered config file specification:

>device <foo> at <bus>[#|?] port <port>[,<port> ..] irq <irq>[,<irq> ..] drq <drq>[, <drq> ..]
>	[conflict_ok <conflict_type>[, <conflict-type> ..]]

Although repeating the device lines is a hack, its syntax is simpler and
exactly matches the data structures that should be built, at least in
ioconf.c (you wouldn't want variable length arrays or linked lists).

>Where "conflict_ok" would take arguments like "iomem, irq, drq, etc."
>to enable bits in an "allowed conflicts" mask.  This would eliminate
>the ALLOW_CONFLICT_* horrors I inflicted upon the code many months ago.

I don't like this.  Conflicts need to be resolved at runtime.  The
static conflict checking code in isa.c should go away and be replaced
by calls such as

	register_iobase(iobase, iosize, id, flags);

There should be flags for exclusive access and for preventing exclusive
access by other drivers.

Bruce



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