Home | History | Annotate | only in /src/sys/arch/next68k/dev
History log of /src/sys/arch/next68k/dev
RevisionDateAuthorComments
 1.4 04-Feb-2023  tsutsui Remove trailing spaces and TABs.
 1.3 23-Oct-2009  snj Remove 3rd and 4th clauses. OK cl@ (copyright holder).
 1.2 11-Sep-2002  mycroft branches: 1.2.112;
Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.1 11-Jul-2002  christos branches: 1.1.2; 1.1.4; 1.1.6;
Apply patches from Christian Limpach:

- NeXT label reading support
- SCSI dma fixes
- media support for if_xe.c

Some of these need more cleanup, but at least make SCSI support usable on
the NeXT.
 1.1.6.3 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.1.6.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.1.6.1 11-Jul-2002  jdolecek file bmapreg.h was added on branch kqueue on 2002-09-06 08:38:21 +0000
 1.1.4.3 17-Sep-2002  nathanw Catch up to -current.
 1.1.4.2 01-Aug-2002  nathanw Catch up to -current.
 1.1.4.1 11-Jul-2002  nathanw file bmapreg.h was added on branch nathanw_sa on 2002-08-01 02:42:47 +0000
 1.1.2.2 16-Jul-2002  gehenna catch up with -current.
 1.1.2.1 11-Jul-2002  gehenna file bmapreg.h was added on branch gehenna-devsw on 2002-07-16 12:58:55 +0000
 1.2.112.1 11-Mar-2010  yamt sync with head
 1.27 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.26 02-Jun-2002  drochner move initialization of the "struct pglist" returned by uvm_pglistalloc()
from the calling code into uvm_pglistalloc() itself for consistency
and easier error handling
 1.25 10-Sep-2001  chris branches: 1.25.4; 1.25.12;
Update pmap_update to now take the updated pmap as an argument.
This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.

Currently this is a no-op on most platforms, so they should see no difference.

Reviewed by Jason.
 1.24 16-Jun-2001  dbj branches: 1.24.2; 1.24.4;
allow unaligned pointers in bus_dmamap_sync
 1.23 28-May-2001  chs assert that pmap_extract() succeeds.
 1.22 26-May-2001  chs replace vm_page_t with struct vm_page *.
 1.21 13-May-2001  chs turn on printf format-string checking and -Werror. fix all warnings.
 1.20 24-Apr-2001  thorpej Sprinkle pmap_update() calls after calls to:
- pmap_enter()
- pmap_remove()
- pmap_protect()
- pmap_kenter_pa()
- pmap_kremove()
as described in pmap(9).

These calls are relatively conservative. It may be possible to
optimize these a little more.
 1.19 01-Apr-2001  dbj purge the cache on BUS_DMASYNC_PREREAD instead of BUS_DMASYNC_POSTREAD
 1.18 21-Mar-2001  soren s/vm_page_alloc_memory/uvm_pglistalloc/ in panic message.
 1.17 26-Dec-2000  dbj branches: 1.17.2;
fix logic error in bus_dmamap_sync that was preventing from flush/purging
full pages instead of only by cache lines
 1.16 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.15 26-Jun-2000  mrg remove/move more mach vm header files:

<vm/pglist.h> -> <uvm/uvm_pglist.h>
<vm/vm_inherit.h> -> <uvm/uvm_inherit.h>
<vm/vm_kern.h> -> into <uvm/uvm_extern.h>
<vm/vm_object.h> -> nothing
<vm/vm_pager.h> -> into <uvm/uvm_pager.h>

also includes a bunch of <vm/vm_page.h> include removals (due to redudancy
with <vm/vm.h>), and a scattering of other similar headers.
 1.14 26-Jun-2000  simonb Change the kernel mmap interface so that the offset to map is an
"off_t" and the return value is a "paddr_t" to allow mappings
at offsets past 2^31 bytes. Somewhat inspired by FreeBSD, which
only changed the offset to a "vm_offset_t".

Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
 1.13 13-Nov-1999  thorpej branches: 1.13.4;
Update for pmap_enter() API change. No functional difference.
 1.12 12-Sep-1999  chs branches: 1.12.2; 1.12.4; 1.12.8;
eliminate the PMAP_NEW option by making it required for all ports.
ports which previously had no support for PMAP_NEW now implement
the pmap_k* interfaces as wrappers around the non-k versions.
 1.11 17-Aug-1999  dbj implement _bus_dmamap_load_raw_direct
 1.10 03-Aug-1999  dbj resync bus_dma functions with current alpha versions.
added a field to a dma segment to return the actual length of that segment that
was successfully transferred.
 1.9 08-Jul-1999  thorpej Change the pmap_extract() interface to:
boolean_t pmap_extract(pmap_t, vaddr_t, paddr_t *);
This makes it possible for the pmap to map physical address 0.
 1.8 25-May-1999  thorpej bus_dmamem_map() maps DMA safe memory, which is usually one or more
managed pages, into KVA space. Since the pages are managed, we should
use pmap_enter(), not pmap_kenter_pa().

Also, when entering the mappings, enter with an access_type of
VM_PROT_READ | VM_PROT_WRITE. We do this for a couple of reasons:

(1) On systems that have H/W mod/ref attributes, the hardware
may not be able to track mod/ref done by a bus master.

(2) On systems that have to do mod/ref emulation, this prevents
a mod/ref page fault from potentially happening while in an
interrupt context, which can be problematic.

This latter change is fairly important if we ever want to be able to
transfer DMA-safe memory pages to anonymous memory objects; we will need
to know that the pages are modified, or else data could be lost!

Note that while the pages are unowned (i.e. "just DMA-safe memory pages"),
they won't consume any swap resources, as the mappings are wired, and
the pages aren't on the active or inactive queues.
 1.7 26-Mar-1999  mycroft branches: 1.7.4;
Changes for modified pmap_enter() API:
* Map the message buffer with access_type = VM_PROT_READ|VM_PROT_WRITE `just
because'.
* Map the file system buffers with access_type = VM_PROT_READ|VM_PROT_WRITE to
avoid possible problems with pagemove().
* Do not use VM_PROT_EXEC with either of the above.
* Map pages for /dev/mem with access_type = prot. Also, DO NOT use
pmap_kenter() for this, as we DO NOT want to lose modification information.
* Map pages in dumpsys() with VM_PROT_READ.
* Map pages in m68k mappedcopyin()/mappedcopyout() and writeback() with
access_type = prot.
* For now, bus_dma*(), pmap_map(), vmapbuf(), and similar functions still use
access_type = 0. This should probably be revisited.
 1.6 24-Mar-1999  mrg completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
 1.5 14-Nov-1998  dbj Finished changes to use UVM on next68k.
Turn on UVM by default in GENERIC kernel.
 1.4 21-Sep-1998  thorpej Make bus_dmamap_load_uio() work, from Kevin Lahey <kml@nas.nasa.gov>.
 1.3 19-Jul-1998  dbj Commented out some bus_dma code, until I can fix.
(bus_dma.c needs sync with alpha port!)
Continued progress on scsi driver.
A couple of other compiler warning level of tweaks.
 1.2 17-Jul-1998  thorpej Implement bus_dmamap_load_uio().
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.7.4.2 02-Aug-1999  thorpej Update from trunk.
 1.7.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.12.8.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.12.4.1 15-Nov-1999  fvdl Sync with -current
 1.12.2.4 21-Apr-2001  bouyer Sync with HEAD
 1.12.2.3 27-Mar-2001  bouyer Sync with HEAD.
 1.12.2.2 05-Jan-2001  bouyer Sync with HEAD
 1.12.2.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.13.4.3 16-Jun-2001  he Pull up revision 1.24 (requested by dbj):
Fix bugs related to calculation of transmit packet length and
allow unaligned pointers in bus_dmamap_sync(). Fixes problems
related to full-size ethernet packets, as reported in PR#13212.
 1.13.4.2 05-Apr-2001  he Pull up revisions 1.17,1.19 (requested by dbj):
Purge/flush by pages when possible instead of just cache lines.
Purge cache on BUS_DMASYNC_PREREAD instead of BUS_DMASYNC_POSTREAD.
 1.13.4.1 30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.17.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.17.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.24.4.1 01-Oct-2001  fvdl Catch up with -current.
 1.24.2.3 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.24.2.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.24.2.1 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.25.12.1 15-Jul-2002  gehenna catch up with -current.
 1.25.4.3 17-Sep-2002  nathanw Catch up to -current.
 1.25.4.2 20-Jun-2002  nathanw Catch up to -current.
 1.25.4.1 10-Sep-2001  nathanw file bus_dma.c was added on branch nathanw_sa on 2002-06-20 03:40:21 +0000
 1.2 18-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj branches: 1.1.1.1.32;
Initial import of NetBSD/next68k.
 1.1.1.1.32.1 18-Nov-2001  scw MD Scheduler Activation bits for Next68k.
Compile-tested only.
 1.2 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj branches: 1.1.1.1.28; 1.1.1.1.32;
Initial import of NetBSD/next68k.
 1.1.1.1.32.1 17-Sep-2002  nathanw Catch up to -current.
 1.1.1.1.28.1 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.67 03-Feb-2023  tsutsui Make local functions static.
 1.66 03-Feb-2023  tsutsui Misc cleanup.

- use C99 designated initializer
- misc KNF
- TAB/space cleanup
 1.65 27-Jan-2023  tsutsui next68k: Fix silent stall of next68k esp(4) SCSI.

next68k esp(4) driver requires nextdma(4) interrupts at ipl 6
during ncr53c9x_intr() for esp(4) at ipl 3. It worked on netbsd-5
and prior, but on netbsd-5 splbio() was changed from ipl 3 to 6
for SMP support and on netbsd-6 ncr53c9x driver was changed to
use mutex(9) instead of simple_lock(9), so nextdma interrupts
were no longer raised during ncr53c9x interrupt handler.

For now, just call mutex_exit(9) and mutex_enter(9) during
waiting nextdma(4) interrupts in MD esp_dma_intr() handler.
This could be wrong and the interrupt handler for nextdma should
be reorganized, but it just works.

Should be pulled up to netbsd-10 and netbsd-9.
 1.64 31-Mar-2017  msaitoh branches: 1.64.18; 1.64.44;
Remove extra 0x. This bug was added when replacing bitmask_snprintf(9) with
snprintb(3) (in between NetBSD 5 and 6). Old bitmask_snprint(9) didn't add
0x" automatically for hexadecimal value, so old code used it with "0x%s".
 1.63 29-Mar-2014  christos branches: 1.63.6; 1.63.10; 1.63.14;
fix misplaced line
 1.62 27-Mar-2014  christos correct/add protection against snprintf overflow.
 1.61 25-Mar-2014  christos fix sprintf debugging mess.
 1.60 27-Oct-2012  chs branches: 1.60.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.59 23-Nov-2009  rmind branches: 1.59.12; 1.59.22;
Use lwp_getpcb() on m68k ports, clean from struct user usage.
 1.58 02-Sep-2009  tsutsui Some backends may use ncr53c9x_abort(), so remove static declaration from
the function and explicitly declare it in ncr53c9xvar.h. Noticed by he@.
 1.57 16-Dec-2008  christos replace bitmask_snprintf(9) with snprintb(3)
 1.56 28-Apr-2008  martin branches: 1.56.8;
Remove clause 3 and 4 from TNF licenses
 1.55 13-Apr-2008  tsutsui branches: 1.55.2; 1.55.4;
Split device_t/softc for MI ncr53c9x and some related devices,
with various cleanup.
 1.54 05-Mar-2007  tsutsui branches: 1.54.40;
Fix caddr_t fallout. Well, this driver is too ugly to read...
 1.53 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.52 08-Mar-2006  lukem branches: 1.52.16;
Use the SI capitalization for "Hz", "kHz", and "MHz" in comments and strings.
Add a space between numbers and Hz unit.
 1.51 11-Dec-2005  christos branches: 1.51.4; 1.51.6; 1.51.8; 1.51.10;
merge ktrace-lwp.
 1.50 17-May-2005  christos branches: 1.50.2;
Yes, it was a cool trick >20 years ago to use "0123456789abcdef"[a] to
implement, xtoa(), but I think defining the samestring 50 times is a bit
too much. Defined HEXDIGITS and hexdigits in subr_prf.c and use it...
 1.49 19-Jan-2005  chs de-__P, remove register, ansify.
 1.48 24-Feb-2004  wiz branches: 1.48.8;
occured -> occurred. From Peter Postma.
 1.47 04-Dec-2003  keihan netbsd.org -> NetBSD.org

All "netbsd.org" is now gone from src/sys/arch.
 1.46 27-Sep-2003  cl make gcc3's `deprecated use of label at end of compound statement' go away
 1.45 15-Jul-2003  lukem __KERNEL_RCSID()
 1.44 03-May-2003  wiz branches: 1.44.2;
DMA, not dma nor Dma.
 1.43 02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.42 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.41 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.40 27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.39 21-Sep-2002  mycroft Force synchronous negotiation off even if the target initiates it, by setting
minsync to 0. It may be possible to make this work, but I don't know how.
 1.38 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.37 11-Jul-2002  christos Apply patches from Christian Limpach:

- NeXT label reading support
- SCSI dma fixes
- media support for if_xe.c

Some of these need more cleanup, but at least make SCSI support usable on
the NeXT.
 1.36 20-May-2002  jdolecek Adapt this to post thorpej-scsipi world.
Fix provided by Christian Limpach in port-next68k/16928.
 1.35 23-May-2001  chs branches: 1.35.2; 1.35.8; 1.35.16;
fix printf format strings and the call to ncr53c9x_attach() so that
this compiles again.
 1.34 17-Apr-2001  dbj increase maxsegs of esp main dma map by one to avoid error
tweak esp glue to read xfer_len from dma map
add some debugging checks for dma driver invariants
read DD_LIMIT instead of DD_SAVED_LIMIT on scsi dma shutdowns
 1.33 16-Apr-2001  dbj add receive ethernet bpf tap
keep receive ethernet crc and set M_HASFCS
change bus_dma MD fields to keep xfer_len for entire map
instead of per segment
turn off automatic dma restarts in preparation for changing
scsi driver to handle them.
add dma debugging routines to keep history of dma states
tweak checking for unusual dma limit register
 1.32 07-Apr-2001  dbj continue to tweak nextdma detection of xfer length
add check to esp driver for incomplete transfers, but still does not handle them.
 1.31 02-Apr-2001  dbj reenabled flushcount diagnostic check.
tweaked formatting on hex dump debugging routine
 1.30 31-Mar-2001  dbj comment out device register structure definitions, used for reference only.
remove unnecessary BUS_SPACE_MAP_LINEAR when mapping ethernet dma registers.
 1.29 29-Mar-2001  petrov use NCR_F_DMASELECT instead of ncr53c9x_dmaselect
 1.28 09-Aug-2000  tv branches: 1.28.2;
%b -> bitmask_snprintf()
 1.27 05-Jun-2000  nisimura Have MI ncr53c9x_attach() the 2nd and 3rd arguments for scsipi_adater
and scsipi_device respectively, with size reduction of ncr53c9x_softc.
Specifying NULL instructs the driver to use default adapter and default
device codes. Every target port has ncr53c9x_attach(sc, NULL, NULL) anyway.
 1.26 04-Jun-2000  cgd Implement the more flexiable `evcnt' interface as discussed (briefly) on
tech-kern and now documented in evcnt(9).
 1.25 28-Aug-1999  dbj branches: 1.25.2; 1.25.10;
discovered the purpose of another bit in the dma control register.
DMACSR_READ is now a CSR status bit which can be used to know if current transfer is
from cpu to device.
the old DMACSR_READ bit is renamed DMACSR_SETREAD. This is a control bit that tells
the dma transfer to be from cpu to device.
 1.24 23-Mar-1999  dbj more minor changes, mostly in minor tweaks to debuggin output.
tweaks to handling dmasize != dmalen correctly.
changed minimum dma segment length for tail buffer.
 1.23 14-Mar-1999  dbj changed dma start alignment from 4 to 16 so that the cache flush
functions always have cache line aligned segments.
continued experimentation with scsi driver.
 1.22 03-Mar-1999  dbj continued experimentation trying to understand why we drop
scsi write completion interrupts (the dma appears to complete ok)
Now copy read tail buffer after we bus_dma_sync it and not before.
 1.21 02-Mar-1999  dbj turn on diagnostic check in dma for controller bits at shutdown.
adjusted esp overrun to avoid diagnostic check triggering.
 1.20 14-Feb-1999  dbj Continue hacking on esp driver. Seems relatively stable in read only mode.
write operations appear to lose scsi interrupts and causes timeouts.
changes in this checkin include:
a nextdma bugfix causing a diagnostic check to erroneously trigger
Changed tail strategy to only use tail buffer for the minimal end slop
changed expected write dma overrun to 32 bytes.
turned on nextdma diagnostic check for dma end address since it
no longer gets triggerred by ethernet dma and helps debug scsi dma.
Added esp debugging printout and support.
 1.19 13-Feb-1999  dbj Continued work on esp scsi driver. Now can at least do enough i/o to create and mount
a filesystem, but is not stable enough yet for general use.
increased priority of ethernet interrupts, mostly useful to aid debugging
of scsi interrupts while using an nfs disk.
added additional debugging output in the next dma driver.
perform extranneous cache flushes/purges before dma reads/ after dma writes
to aid debugging of scsi dma.
 1.18 03-Feb-1999  dbj overhalt of scsi driver.
it still probes the disks ok, but is having trouble with 0xdeadbeef
in buffers read from the disk. Suspected problems with DMA alignment
and toggling the secret ninja dma control register
 1.17 02-Feb-1999  dbj make dma flushing more efficient and avoid stray interrupts when not using polled io.
remove check for normal chaining interrupts and add check for combined chaining interrupts
only when used with a tail chain. This allows scsi to work for short unaligned buffers
and large aligned buffers.
 1.16 02-Feb-1999  dbj Removed some already commented out test code.
added debugging printout when invoking polled dma interrupt.
 1.15 01-Feb-1999  dbj Fix return value in interrupt routine so that dma gets flushed correctly.
Turn on the esp_match since polling the scsi bus now works.
 1.14 27-Jan-1999  dbj Continue work on scsi driver. Added tail dma buffer. Still non functional.
 1.13 30-Dec-1998  dbj Continued work on esp driver. Now successfully identifies a scsi target.
Unfortunately, to get dma to work, we have to align past the end of
the buffer, which smashes other variables on the stack.
match function still disabled, as it isn't ready yet.
 1.12 27-Dec-1998  dbj After some experimentation, now allow dma start alignment to be 4.
Removed separate alignment constant for ethernet since it appears to
be unnecessary.
 1.11 26-Dec-1998  dbj Continued experimentation on SCSI driver.
Added nextdma_debug variable to control debug printouts in nextdma driver
when ND_DEBUG is defined.
 1.10 19-Dec-1998  dbj Revamped DMA interface to unify chaining and non-chaining dma sequences.
Updated ethernet driver to work with new interface.
Continue work on esp driver.
 1.9 19-Nov-1998  thorpej Adapt to the new scsipi_adapter interface.
 1.8 10-Oct-1998  thorpej Garbage-collect the open_target_lu and close_target_lu entry points from
struct scsipi_adapter; they were not used.

Add a scsipi_ioctl entry point to struct scsipi_adapter. This will be
used to issue ioctl commands to the host adapters.

Inspired by PR #6090, from Matt Jacob.
 1.7 05-Sep-1998  pk Relinquish my copyright claims on this file.
 1.6 15-Aug-1998  mycroft Minor edit.
 1.5 15-Aug-1998  mycroft Assign copyright to TNF.
 1.4 21-Jul-1998  dbj Continued work on the esp scsi driver. Not yet working, but progress continues.
 1.3 19-Jul-1998  dbj Commented out some bus_dma code, until I can fix.
(bus_dma.c needs sync with alpha port!)
Continued progress on scsi driver.
A couple of other compiler warning level of tweaks.
 1.2 13-Jul-1998  dbj worked on adding nextdma support for scsi driver.
 1.1 05-Jul-1998  dbj Started the esp scsi driver.
Fixed bus_space_handle_t in nextdma device.
Fixed scsi interrupt define.
 1.25.10.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.25.2.3 24-Apr-2001  bouyer Convert to new ncr53c9x attachement
 1.25.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.25.2.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.28.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.28.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.35.16.2 16-Jul-2002  gehenna catch up with -current.
 1.35.16.1 30-May-2002  gehenna Catch up with -current.
 1.35.8.5 18-Oct-2002  nathanw Catch up to -current.
 1.35.8.4 17-Sep-2002  nathanw Catch up to -current.
 1.35.8.3 01-Aug-2002  nathanw Catch up to -current.
 1.35.8.2 20-Jun-2002  nathanw Catch up to -current.
 1.35.8.1 23-May-2001  nathanw file esp.c was added on branch nathanw_sa on 2002-06-20 03:40:22 +0000
 1.35.2.3 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.35.2.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.35.2.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.44.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.44.2.4 24-Jan-2005  skrll Sync with HEAD.
 1.44.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.44.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.44.2.1 03-Aug-2004  skrll Sync with HEAD
 1.48.8.1 29-Apr-2005  kent sync with -current
 1.50.2.2 03-Sep-2007  yamt sync with head.
 1.50.2.1 21-Jun-2006  yamt sync with head.
 1.51.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.51.8.1 13-Mar-2006  yamt sync with head.
 1.51.6.1 22-Apr-2006  simonb Sync with head.
 1.51.4.1 09-Sep-2006  rpaulo sync with head
 1.52.16.1 12-Mar-2007  rmind Sync with HEAD.
 1.54.40.2 17-Jan-2009  mjf Sync with HEAD.
 1.54.40.1 02-Jun-2008  mjf Sync with HEAD.
 1.55.4.4 11-Mar-2010  yamt sync with head
 1.55.4.3 16-Sep-2009  yamt sync with head
 1.55.4.2 04-May-2009  yamt sync with head.
 1.55.4.1 16-May-2008  yamt sync with head.
 1.55.2.1 18-May-2008  yamt sync with head.
 1.56.8.1 19-Jan-2009  skrll Sync with HEAD.
 1.59.22.3 03-Dec-2017  jdolecek update from HEAD
 1.59.22.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.59.22.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.59.12.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.59.12.1 30-Oct-2012  yamt sync with head
 1.60.2.1 18-May-2014  rmind sync with head
 1.63.14.1 21-Apr-2017  bouyer Sync with HEAD
 1.63.10.1 26-Apr-2017  pgoyette Sync with HEAD
 1.63.6.1 28-Aug-2017  skrll Sync with HEAD
 1.64.44.1 01-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #63):

sys/arch/next68k/next68k/machdep.c: revision 1.117
sys/arch/next68k/dev/esp.c: revision 1.65
sys/arch/next68k/include/cpu.h: revision 1.51
sys/arch/next68k/include/bus_space.h: revision 1.20
sys/arch/next68k/next68k/clock.c: revision 1.13

next68k: Fix delay_divisor value for proper delay(9) on 68040.

next68k: Specify proper constraints for bus_space_read region and multi ops.

These functions write the read data into memory at a specified pointer,
but without the "memory" constraint gcc could optimize out these ops
if the memory is allocated on local stack.

With this fix nextkbd(4) works again.
Should be pulled up to netbsd-10 and netbsd-9.

next68k: Fix silent stall of next68k esp(4) SCSI.

next68k esp(4) driver requires nextdma(4) interrupts at ipl 6
during ncr53c9x_intr() for esp(4) at ipl 3. It worked on netbsd-5
and prior, but on netbsd-5 splbio() was changed from ipl 3 to 6
for SMP support and on netbsd-6 ncr53c9x driver was changed to
use mutex(9) instead of simple_lock(9), so nextdma interrupts
were no longer raised during ncr53c9x interrupt handler.

For now, just call mutex_exit(9) and mutex_enter(9) during
waiting nextdma(4) interrupts in MD esp_dma_intr() handler.

This could be wrong and the interrupt handler for nextdma should
be reorganized, but it just works.

Should be pulled up to netbsd-10 and netbsd-9.
 1.64.18.1 01-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #1581):

sys/arch/next68k/next68k/machdep.c: revision 1.117
sys/arch/next68k/dev/esp.c: revision 1.65
sys/arch/next68k/include/cpu.h: revision 1.51
sys/arch/next68k/include/bus_space.h: revision 1.20
sys/arch/next68k/next68k/clock.c: revision 1.13

next68k: Fix delay_divisor value for proper delay(9) on 68040.

next68k: Specify proper constraints for bus_space_read region and multi ops.

These functions write the read data into memory at a specified pointer,
but without the "memory" constraint gcc could optimize out these ops
if the memory is allocated on local stack.

With this fix nextkbd(4) works again.
Should be pulled up to netbsd-10 and netbsd-9.

next68k: Fix silent stall of next68k esp(4) SCSI.

next68k esp(4) driver requires nextdma(4) interrupts at ipl 6
during ncr53c9x_intr() for esp(4) at ipl 3. It worked on netbsd-5
and prior, but on netbsd-5 splbio() was changed from ipl 3 to 6
for SMP support and on netbsd-6 ncr53c9x driver was changed to
use mutex(9) instead of simple_lock(9), so nextdma interrupts
were no longer raised during ncr53c9x interrupt handler.

For now, just call mutex_exit(9) and mutex_enter(9) during
waiting nextdma(4) interrupts in MD esp_dma_intr() handler.

This could be wrong and the interrupt handler for nextdma should
be reorganized, but it just works.

Should be pulled up to netbsd-10 and netbsd-9.
 1.5 03-Feb-2023  tsutsui Misc cleanup.

- use C99 designated initializer
- misc KNF
- TAB/space cleanup
 1.4 16-Sep-2001  jdolecek branches: 1.4.4;
remove unused defines; they duplicate appropriate defines from
<dev/ic/ncr53c9xreg.h> anyway
 1.3 03-Aug-1999  dbj branches: 1.3.14; 1.3.16;
added define for %b bitfield labels
 1.2 05-Jul-1998  dbj Started the esp scsi driver.
Fixed bus_space_handle_t in nextdma device.
Fixed scsi interrupt define.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.3.16.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.3.14.1 01-Oct-2001  fvdl Catch up with -current.
 1.4.4.2 16-Sep-2001  jdolecek remove unused defines; they duplicate appropriate defines from
<dev/ic/ncr53c9xreg.h> anyway
 1.4.4.1 16-Sep-2001  jdolecek file espreg.h was added on branch nathanw_sa on 2001-09-16 10:39:11 +0000
 1.20 03-Feb-2023  tsutsui Misc cleanup.

- use C99 designated initializer
- misc KNF
- TAB/space cleanup
 1.19 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.18 13-Apr-2008  tsutsui branches: 1.18.2; 1.18.4;
Split device_t/softc for MI ncr53c9x and some related devices,
with various cleanup.
 1.17 05-Mar-2007  tsutsui branches: 1.17.40;
Fix caddr_t fallout. Well, this driver is too ugly to read...
 1.16 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.15 03-May-2003  wiz branches: 1.15.18; 1.15.56;
DMA, not dma nor Dma.
 1.14 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.13 11-Jul-2002  christos Apply patches from Christian Limpach:

- NeXT label reading support
- SCSI dma fixes
- media support for if_xe.c

Some of these need more cleanup, but at least make SCSI support usable on
the NeXT.
 1.12 14-Sep-2001  jdolecek branches: 1.12.4; 1.12.12;
fix indentation
 1.11 14-Mar-1999  dbj branches: 1.11.20; 1.11.22;
changed dma start alignment from 4 to 16 so that the cache flush
functions always have cache line aligned segments.
continued experimentation with scsi driver.
 1.10 02-Mar-1999  dbj turn on diagnostic check in dma for controller bits at shutdown.
adjusted esp overrun to avoid diagnostic check triggering.
 1.9 14-Feb-1999  dbj Continue hacking on esp driver. Seems relatively stable in read only mode.
write operations appear to lose scsi interrupts and causes timeouts.
changes in this checkin include:
a nextdma bugfix causing a diagnostic check to erroneously trigger
Changed tail strategy to only use tail buffer for the minimal end slop
changed expected write dma overrun to 32 bytes.
turned on nextdma diagnostic check for dma end address since it
no longer gets triggerred by ethernet dma and helps debug scsi dma.
Added esp debugging printout and support.
 1.8 13-Feb-1999  dbj Continued work on esp scsi driver. Now can at least do enough i/o to create and mount
a filesystem, but is not stable enough yet for general use.
increased priority of ethernet interrupts, mostly useful to aid debugging
of scsi interrupts while using an nfs disk.
added additional debugging output in the next dma driver.
perform extranneous cache flushes/purges before dma reads/ after dma writes
to aid debugging of scsi dma.
 1.7 03-Feb-1999  dbj overhalt of scsi driver.
it still probes the disks ok, but is having trouble with 0xdeadbeef
in buffers read from the disk. Suspected problems with DMA alignment
and toggling the secret ninja dma control register
 1.6 27-Jan-1999  dbj Continue work on scsi driver. Added tail dma buffer. Still non functional.
 1.5 19-Dec-1998  dbj Revamped DMA interface to unify chaining and non-chaining dma sequences.
Updated ethernet driver to work with new interface.
Continue work on esp driver.
 1.4 21-Jul-1998  dbj Continued work on the esp scsi driver. Not yet working, but progress continues.
 1.3 19-Jul-1998  dbj Commented out some bus_dma code, until I can fix.
(bus_dma.c needs sync with alpha port!)
Continued progress on scsi driver.
A couple of other compiler warning level of tweaks.
 1.2 13-Jul-1998  dbj worked on adding nextdma support for scsi driver.
 1.1 05-Jul-1998  dbj Started the esp scsi driver.
Fixed bus_space_handle_t in nextdma device.
Fixed scsi interrupt define.
 1.11.22.3 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.11.22.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.11.22.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.11.20.1 01-Oct-2001  fvdl Catch up with -current.
 1.12.12.1 16-Jul-2002  gehenna catch up with -current.
 1.12.4.3 17-Sep-2002  nathanw Catch up to -current.
 1.12.4.2 01-Aug-2002  nathanw Catch up to -current.
 1.12.4.1 14-Sep-2001  nathanw file espvar.h was added on branch nathanw_sa on 2002-08-01 02:42:48 +0000
 1.15.56.1 12-Mar-2007  rmind Sync with HEAD.
 1.15.18.1 03-Sep-2007  yamt sync with head.
 1.17.40.1 02-Jun-2008  mjf Sync with HEAD.
 1.18.4.1 16-May-2008  yamt sync with head.
 1.18.2.1 18-May-2008  yamt sync with head.
 1.29 05-Jul-2024  rin sys: Drop redundant NULL check before m_freem(9)

m_freem(9) safely has accepted NULL argument at least since 4.2BSD:
https://www.tuhs.org/cgi-bin/utree.pl?file=4.2BSD/usr/src/sys/sys/uipc_mbuf.c

Compile-tested on amd64/ALL.

Suggested by knakahara@
 1.28 03-Feb-2023  tsutsui branches: 1.28.6;
TAB/space cleanup.
 1.27 21-Nov-2020  thorpej malloc(9) -> kmem(9)
 1.26 10-Nov-2019  chs branches: 1.26.8;
in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.25 25-Apr-2019  msaitoh - KNF.
- Use __arraycount.
- Remove extra 'n' from debug printf.
 1.24 10-Jun-2016  ozaki-r branches: 1.24.18;
Introduce m_set_rcvif and m_reset_rcvif

The API is used to set (or reset) a received interface of a mbuf.
They are counterpart of m_get_rcvif, which will come in another
commit, hide internal of rcvif operation, and reduce the diff of
the upcoming change.

No functional change.
 1.23 25-Mar-2014  christos branches: 1.23.6;
fix sprintf debugging mess.
 1.22 27-Oct-2012  chs branches: 1.22.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.21 24-Apr-2010  dbj branches: 1.21.8; 1.21.18;
switch from 4 clause to 2 clause BSD license.
 1.20 19-Jan-2010  pooka branches: 1.20.2; 1.20.4;
Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client. This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached. However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff. ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
 1.19 26-Oct-2009  cegger kill extra whitespaces
reviewed by tsutsui@
 1.18 18-Mar-2009  cegger bcopy -> memcpy
 1.17 11-Dec-2005  christos branches: 1.17.78; 1.17.86; 1.17.92;
merge ktrace-lwp.
 1.16 19-Jan-2005  chs de-__P, remove register, ansify.
 1.15 11-Aug-2004  perseant branches: 1.15.4;
Allow compilation in the absence of DIAGNOSTIC and/or DEBUG options.
 1.14 15-Jul-2003  lukem __KERNEL_RCSID()
 1.13 03-May-2003  wiz branches: 1.13.2;
DMA, not dma nor Dma.
 1.12 20-Jan-2003  bouyer bzero the part of the buffer used to pad the packet to
ETHER_MIN_LEN - ETHER_CRC_LEN.
 1.11 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.10 01-Oct-2002  provos more trailing \r cleanup; pointed out by wiz
 1.9 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.8 27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.7 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.6 11-Jul-2002  christos Apply patches from Christian Limpach:

- NeXT label reading support
- SCSI dma fixes
- media support for if_xe.c

Some of these need more cleanup, but at least make SCSI support usable on
the NeXT.
 1.5 31-Mar-2001  dbj branches: 1.5.2; 1.5.8; 1.5.16;
comment out device register structure definitions, used for reference only.
remove unnecessary BUS_SPACE_MAP_LINEAR when mapping ethernet dma registers.
 1.4 01-Jun-2000  matt branches: 1.4.4;
Make booted_device global (and booted_parition for consitency).
Eliminate it from header files and other extern definitions.
 1.3 13-Feb-1999  dbj branches: 1.3.8; 1.3.16;
Continued work on esp scsi driver. Now can at least do enough i/o to create and mount
a filesystem, but is not stable enough yet for general use.
increased priority of ethernet interrupts, mostly useful to aid debugging
of scsi interrupts while using an nfs disk.
added additional debugging output in the next dma driver.
perform extranneous cache flushes/purges before dma reads/ after dma writes
to aid debugging of scsi dma.
 1.2 05-Jul-1998  jonathan defopt INET, NETATALK.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.3.16.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.3.8.2 21-Apr-2001  bouyer Sync with HEAD
 1.3.8.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.4.4.1 09-Apr-2001  nathanw Catch up with -current.
 1.5.16.1 16-Jul-2002  gehenna catch up with -current.
 1.5.8.4 18-Oct-2002  nathanw Catch up to -current.
 1.5.8.3 17-Sep-2002  nathanw Catch up to -current.
 1.5.8.2 01-Aug-2002  nathanw Catch up to -current.
 1.5.8.1 31-Mar-2001  nathanw file if_xe.c was added on branch nathanw_sa on 2002-08-01 02:42:48 +0000
 1.5.2.2 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.5.2.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.13.2.5 24-Jan-2005  skrll Sync with HEAD.
 1.13.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.13.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.13.2.2 12-Aug-2004  skrll Sync with HEAD.
 1.13.2.1 03-Aug-2004  skrll Sync with HEAD
 1.15.4.1 29-Apr-2005  kent sync with -current
 1.17.92.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.17.86.1 28-Apr-2009  skrll Sync with HEAD.
 1.17.78.3 11-Aug-2010  yamt sync with head.
 1.17.78.2 11-Mar-2010  yamt sync with head
 1.17.78.1 04-May-2009  yamt sync with head.
 1.20.4.1 30-May-2010  rmind sync with head
 1.20.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.21.18.3 03-Dec-2017  jdolecek update from HEAD
 1.21.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.21.18.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.21.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.21.8.1 30-Oct-2012  yamt sync with head
 1.22.2.1 18-May-2014  rmind sync with head
 1.23.6.1 09-Jul-2016  skrll Sync with HEAD
 1.24.18.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.24.18.1 10-Jun-2019  christos Sync with HEAD
 1.26.8.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.28.6.1 02-Aug-2025  perseant Sync with HEAD
 1.3 04-Feb-2023  tsutsui Remove trailing spaces and TABs.
 1.2 23-Oct-2009  snj Remove 3rd and 4th clauses. OK cl@ (copyright holder).
 1.1 11-Sep-2002  mycroft branches: 1.1.2; 1.1.4; 1.1.116;
Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.1.116.1 11-Mar-2010  yamt sync with head
 1.1.4.2 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.1.4.1 11-Sep-2002  jdolecek file if_xereg.h was added on branch kqueue on 2002-10-10 18:34:37 +0000
 1.1.2.2 17-Sep-2002  nathanw Catch up to -current.
 1.1.2.1 11-Sep-2002  nathanw file if_xereg.h was added on branch nathanw_sa on 2002-09-17 21:16:25 +0000
 1.5 24-Apr-2010  dbj switch from 4 clause to 2 clause BSD license.
 1.4 03-May-2003  wiz branches: 1.4.108; 1.4.128; 1.4.130;
DMA, not dma nor Dma.
 1.3 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.2 04-Mar-1999  dbj branches: 1.2.22; 1.2.26;
moved declaration of nextdma_intr into correct header file.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.2.26.1 17-Sep-2002  nathanw Catch up to -current.
 1.2.22.1 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.4.130.1 30-May-2010  rmind sync with head
 1.4.128.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.4.108.1 11-Aug-2010  yamt sync with head.
 1.19 11-Feb-2023  tsutsui Handle NeXT Turbo VRAM regions properly.

Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).
 1.18 04-Feb-2023  tsutsui Remove trailing spaces and TABs.
 1.17 03-Feb-2023  tsutsui Misc KNF and cosmetics.
 1.16 07-Aug-2021  thorpej branches: 1.16.6;
Merge thorpej-cfargs2.
 1.15 24-Apr-2021  thorpej branches: 1.15.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.14 06-Jun-2011  matt branches: 1.14.58; 1.14.68;
CFATTACH_DECL(..., sizeof(struct device), -> CFATTACH_DECL_NEW(..., 0
struct device * -> device_t
struct cfdata * -> cfdata_t
use bool when appropriate
 1.13 28-Apr-2008  martin branches: 1.13.22; 1.13.32;
Remove clause 3 and 4 from TNF licenses
 1.12 11-Dec-2005  christos branches: 1.12.74; 1.12.76; 1.12.78;
merge ktrace-lwp.
 1.11 26-Aug-2005  drochner s/locdesc_t/int/g
 1.10 30-Jun-2005  drochner branches: 1.10.2;
adaptions to config_search() change, and minor autoconf fixes, mostly from Havard Eidnes
 1.9 19-Jan-2005  chs de-__P, remove register, ansify.
 1.8 15-Jul-2003  lukem branches: 1.8.8;
__KERNEL_RCSID()
 1.7 01-Jan-2003  thorpej branches: 1.7.2;
Use aprint_normal() for cfprint routines.
 1.6 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.5 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.4 27-Sep-2002  thorpej Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.
 1.3 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.2 28-Jan-1999  dbj branches: 1.2.22; 1.2.26;
wscons based console video & keyboard support for the NeXT
from Matt DeBergalis
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.2.26.3 03-Jan-2003  thorpej Sync with HEAD.
 1.2.26.2 18-Oct-2002  nathanw Catch up to -current.
 1.2.26.1 17-Sep-2002  nathanw Catch up to -current.
 1.2.22.1 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.7.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.7.2.4 24-Jan-2005  skrll Sync with HEAD.
 1.7.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.7.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.7.2.1 03-Aug-2004  skrll Sync with HEAD
 1.8.8.1 29-Apr-2005  kent sync with -current
 1.10.2.1 21-Jun-2006  yamt sync with head.
 1.12.78.1 16-May-2008  yamt sync with head.
 1.12.76.1 18-May-2008  yamt sync with head.
 1.12.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.13.32.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.13.22.1 12-Jun-2011  rmind sync with head
 1.14.68.6 05-Apr-2021  thorpej Treat config_probe() as if it were a boolean function; don't compare
return value > 0... except for the odd balls, which are now really easy
to spot.
 1.14.68.5 05-Apr-2021  thorpej config_match() -> config_probe() for the straight-forward indirect config
cases. There are still a few odd balls using config_match() which should
be sorted out later.
 1.14.68.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.14.68.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.14.68.2 21-Mar-2021  thorpej CFARG_IATTR usage audit:

If a device carries only one interface attribute, there is no need
to specify it when calling config_search(); that specification is
meant only to disambiguate which interface attribute (which is a
proxy for "what kind of attach args are being used") is having
children attached. cfparent_match() will take care of ensuring that
any potential children can attach to one of the parent's iterface
attributes, and if the parent only carries one, no disambiguation is
necessary.
 1.14.68.1 20-Mar-2021  thorpej The proliferation if config_search_*() and config_found_*() combinations
is a little absurd, so begin to tidy this up:

- Introduce a new cfarg_t enumerated type, that defines the types of
tag-value variadic arguments that can be passed to the various
config_*() functions (CFARG_SUBMATCH, CFARG_IATTR, and CFARG_LOCATORS,
for now, plus a CFARG_EOL sentinel).
- Collapse config_search_*() into config_search() that takes these
variadic arguments.
- Convert all call sites of config_search_*() to the new signature.
Noticed several incorrect usages along the way, which will be
audited in a future commit.
 1.14.58.1 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #1598):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/include/bus_space.h: revision 1.18
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/include/bus_space.h: revision 1.19
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17 (patch)
sys/arch/next68k/dev/intio.c: revision 1.18 (patch)
sys/arch/next68k/dev/intio.c: revision 1.19 (patch)
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

s/impliment/implement/ in comment.

Remove cargo-culted '#if 0' code that was designed to produce a
compile-time error if any of the bus_space_*_8 functions was used,
but was documented that it produces a link-time error.

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.15.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.16.6.1 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #88):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17
sys/arch/next68k/dev/intio.c: revision 1.18
sys/arch/next68k/dev/intio.c: revision 1.19
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.8 11-Feb-2023  tsutsui Handle NeXT Turbo VRAM regions properly.

Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).
 1.7 02-Jan-2011  tsutsui branches: 1.7.64; 1.7.90;
Explicitly include <machine/bus.h> here for bus_space_tag_t and bus_dma_tag_t.
 1.6 28-Apr-2008  martin branches: 1.6.22;
Remove clause 3 and 4 from TNF licenses
 1.5 04-Mar-2007  christos branches: 1.5.40; 1.5.42; 1.5.44;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.4 11-Dec-2005  christos branches: 1.4.26;
merge ktrace-lwp.
 1.3 01-Oct-2003  mycroft branches: 1.3.16;
Some small cleanup -- make the base,limit values vaddr_t, not char*.
Also add some code that attempts to deal with C16_VIDEO interrupts, though it
does not seem to make my color slabs work again.
 1.2 11-Sep-2002  mycroft branches: 1.2.6;
Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj branches: 1.1.1.1.28; 1.1.1.1.32;
Initial import of NetBSD/next68k.
 1.1.1.1.32.1 17-Sep-2002  nathanw Catch up to -current.
 1.1.1.1.28.1 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.2.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.2.6.1 03-Aug-2004  skrll Sync with HEAD
 1.3.16.1 03-Sep-2007  yamt sync with head.
 1.4.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.5.44.1 16-May-2008  yamt sync with head.
 1.5.42.1 18-May-2008  yamt sync with head.
 1.5.40.1 02-Jun-2008  mjf Sync with HEAD.
 1.6.22.1 05-Mar-2011  rmind sync with head
 1.7.90.1 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #88):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17
sys/arch/next68k/dev/intio.c: revision 1.18
sys/arch/next68k/dev/intio.c: revision 1.19
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.7.64.1 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #1598):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/include/bus_space.h: revision 1.18
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/include/bus_space.h: revision 1.19
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17 (patch)
sys/arch/next68k/dev/intio.c: revision 1.18 (patch)
sys/arch/next68k/dev/intio.c: revision 1.19 (patch)
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

s/impliment/implement/ in comment.

Remove cargo-culted '#if 0' code that was designed to produce a
compile-time error if any of the bus_space_*_8 functions was used,
but was documented that it produces a link-time error.

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.71 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h> include.
 1.70 03-Feb-2023  tsutsui Add proper rnd_add_uint32(9) calls to next68k xe(4) driver.
 1.69 18-Sep-2022  thorpej Eliminate use of IFF_OACTIVE. (It was not being used correctly here in
any case.)
 1.68 17-Mar-2022  andvar revert broken to borken, it is used spelling in BSD and "tastes better that way".
 1.67 16-Mar-2022  andvar s/paniced/panicked/ and s/borken/broken/ in comments.
 1.66 29-Jan-2020  thorpej Adopt <net/if_stats.h>.
 1.65 29-May-2019  msaitoh branches: 1.65.4;
Even if we don't use MII(4), use the common path of SIOC[GS]IFMEDIA in
sys/net/if_ethersubr.c if we can.
- Add ec_ifmedia into struct ethercom.
- ec_mii in struct ethercom is kept and used as it is. It might be used in
future. Note that some Ethernet drivers which _DOESN'T_ use mii(4) use
ec_mii for keeping the if_media. Those should be changed in future.
 1.64 29-May-2019  msaitoh KNF. No functional change.
 1.63 29-May-2019  msaitoh Whitespace fix. No functional change.
 1.62 24-Apr-2019  msaitoh KNF. No functional change.
 1.61 05-Feb-2019  msaitoh Remove very old IFF_NOTRAILERS flag.
 1.60 26-Jun-2018  msaitoh branches: 1.60.2;
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward
compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same
as FreeBSD.

This change also fixes a bug that the direction is misunderstand on some
environment by passing the direction to bpf_mtap*() instead of checking
m->m_pkthdr.rcvif.
 1.59 22-Jun-2018  msaitoh It's not required to include net/bpfdesc.h. Remove it.
 1.58 31-Mar-2017  msaitoh branches: 1.58.6; 1.58.12;
Remove extra 0x. This bug was added when replacing bitmask_snprintf(9) with
snprintb(3) (in between NetBSD 5 and 6). Old bitmask_snprint(9) didn't add
0x" automatically for hexadecimal value, so old code used it with "0x%s".
 1.57 15-Dec-2016  ozaki-r branches: 1.57.2;
Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input

The benefits of the change are:
- We can reduce codes
- We can provide the same behavior between drivers
- Where/When if_ipackets is counted up
- Note that some drivers still update packet statistics in their own
way (periodical update)
- Moved bpf_mtap run in softint
- This makes it easy to MP-ify bpf

Proposed on tech-kern and tech-net
 1.56 10-Jun-2016  ozaki-r branches: 1.56.2;
Introduce m_set_rcvif and m_reset_rcvif

The API is used to set (or reset) a received interface of a mbuf.
They are counterpart of m_get_rcvif, which will come in another
commit, hide internal of rcvif operation, and reduce the diff of
the upcoming change.

No functional change.
 1.55 09-Feb-2016  ozaki-r Introduce softint-based if_input

This change intends to run the whole network stack in softint context
(or normal LWP), not hardware interrupt context. Note that the work is
still incomplete by this change; to that end, we also have to softint-ify
if_link_state_change (and bpf) which can still run in hardware interrupt.

This change softint-ifies at ifp->if_input that is called from
each device driver (and ieee80211_input) to ensure Layer 2 runs
in softint (e.g., ether_input and bridge_input). To this end,
we provide a framework (called percpuq) that utlizes softint(9)
and percpu ifqueues. With this patch, rxintr of most drivers just
queues received packets and schedules a softint, and the softint
dequeues packets and does rest packet processing.

To minimize changes to each driver, percpuq is allocated in struct
ifnet for now and that is initialized by default (in if_attach).
We probably have to move percpuq to softc of each driver, but it's
future work. At this point, only wm(4) has percpuq in its softc
as a reference implementation.

Additional information including performance numbers can be found
in the thread at tech-kern@ and tech-net@:
http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html

Acknowledgment: riastradh@ greatly helped this work.
Thank you very much!
 1.54 13-Apr-2015  riastradh MD rnd.h cleanups. Please let me know if I broke anything!
 1.53 10-Aug-2014  tls branches: 1.53.4;
Merge tls-earlyentropy branch into HEAD.
 1.52 24-Mar-2014  christos branches: 1.52.2;
- use cpu_{g,s}etmodel
- fix unused
 1.51 27-Oct-2012  chs branches: 1.51.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.50 02-Feb-2012  tls branches: 1.50.6;
Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.49 24-Apr-2010  dbj branches: 1.49.8; 1.49.12;
switch from 4 clause to 2 clause BSD license.
 1.48 05-Apr-2010  joerg Push the bpf_ops usage back into bpf.h. Push the common ifp->if_bpf
check into the inline functions as well the fourth argument for
bpf_attach.
 1.47 19-Jan-2010  pooka branches: 1.47.2; 1.47.4;
Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client. This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached. However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff. ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
 1.46 26-Oct-2009  cegger kill extra whitespaces
reviewed by tsutsui@
 1.45 18-Mar-2009  cegger bcopy -> memcpy
 1.44 16-Dec-2008  christos branches: 1.44.2;
replace bitmask_snprintf(9) with snprintb(3)
 1.43 07-Nov-2008  dyoung *** Summary ***

When a link-layer address changes (e.g., ifconfig ex0 link
02:de:ad:be:ef:02 active), send a gratuitous ARP and/or a Neighbor
Advertisement to update the network-/link-layer address bindings
on our LAN peers.

Refuse a change of ethernet address to the address 00:00:00:00:00:00
or to any multicast/broadcast address. (Thanks matt@.)

Reorder ifnet ioctl operations so that driver ioctls may inherit
the functions of their "class"---ether_ioctl(), fddi_ioctl(), et
cetera---and the class ioctls may inherit from the generic ioctl,
ifioctl_common(), but both driver- and class-ioctls may override
the generic behavior. Make network drivers share more code.

Distinguish a "factory" link-layer address from others for the
purposes of both protecting that address from deletion and computing
EUI64.

Return consistent, appropriate error codes from network drivers.

Improve readability. KNF.

*** Details ***

In if_attach(), always initialize the interface ioctl routine,
ifnet->if_ioctl, if the driver has not already initialized it.
Delete if_ioctl == NULL tests everywhere else, because it cannot
happen.

In the ioctl routines of network interfaces, inherit common ioctl
behaviors by calling either ifioctl_common() or whichever ioctl
routine is appropriate for the class of interface---e.g., ether_ioctl()
for ethernets.

Stop (ab)using SIOCSIFADDR and start to use SIOCINITIFADDR. In
the user->kernel interface, SIOCSIFADDR's argument was an ifreq,
but on the protocol->ifnet interface, SIOCSIFADDR's argument was
an ifaddr. That was confusing, and it would work against me as I
make it possible for a network interface to overload most ioctls.
On the protocol->ifnet interface, replace SIOCSIFADDR with
SIOCINITIFADDR. In ifioctl(), return EPERM if userland tries to
invoke SIOCINITIFADDR.

In ifioctl(), give the interface the first shot at handling most
interface ioctls, and give the protocol the second shot, instead
of the other way around. Finally, let compatibility code (COMPAT_OSOCK)
take a shot.

Pull device initialization out of switch statements under
SIOCINITIFADDR. For example, pull ..._init() out of any switch
statement that looks like this:

switch (...->sa_family) {
case ...:
..._init();
...
break;
...
default:
..._init();
...
break;
}

Rewrite many if-else clauses that handle all permutations of IFF_UP
and IFF_RUNNING to use a switch statement,

switch (x & (IFF_UP|IFF_RUNNING)) {
case 0:
...
break;
case IFF_RUNNING:
...
break;
case IFF_UP:
...
break;
case IFF_UP|IFF_RUNNING:
...
break;
}

unifdef lots of code containing #ifdef FreeBSD, #ifdef NetBSD, and
#ifdef SIOCSIFMTU, especially in fwip(4) and in ndis(4).

In ipw(4), remove an if_set_sadl() call that is out of place.

In nfe(4), reuse the jumbo MTU logic in ether_ioctl().

Let ethernets register a callback for setting h/w state such as
promiscuous mode and the multicast filter in accord with a change
in the if_flags: ether_set_ifflags_cb() registers a callback that
returns ENETRESET if the caller should reset the ethernet by calling
if_init(), 0 on success, != 0 on failure. Pull common code from
ex(4), gem(4), nfe(4), sip(4), tlp(4), vge(4) into ether_ioctl(),
and register if_flags callbacks for those drivers.

Return ENOTTY instead of EINVAL for inappropriate ioctls. In
zyd(4), use ENXIO instead of ENOTTY to indicate that the device is
not any longer attached.

Add to if_set_sadl() a boolean 'factory' argument that indicates
whether a link-layer address was assigned by the factory or some
other source. In a comment, recommend using the factory address
for generating an EUI64, and update in6_get_hw_ifid() to prefer a
factory address to any other link-layer address.

Add a routing message, RTM_LLINFO_UPD, that tells protocols to
update the binding of network-layer addresses to link-layer addresses.
Implement this message in IPv4 and IPv6 by sending a gratuitous
ARP or a neighbor advertisement, respectively. Generate RTM_LLINFO_UPD
messages on a change of an interface's link-layer address.

In ether_ioctl(), do not let SIOCALIFADDR set a link-layer address
that is broadcast/multicast or equal to 00:00:00:00:00:00.

Make ether_ioctl() call ifioctl_common() to handle ioctls that it
does not understand.

In gif(4), initialize if_softc and use it, instead of assuming that
the gif_softc and ifp overlap.

Let ifioctl_common() handle SIOCGIFADDR.

Sprinkle rtcache_invariants(), which checks on DIAGNOSTIC kernels
that certain invariants on a struct route are satisfied.

In agr(4), rewrite agr_ioctl_filter() to be a bit more explicit
about the ioctls that we do not allow on an agr(4) member interface.

bzero -> memset. Delete unnecessary casts to void *. Use
sockaddr_in_init() and sockaddr_in6_init(). Compare pointers with
NULL instead of "testing truth". Replace some instances of (type
*)0 with NULL. Change some K&R prototypes to ANSI C, and join
lines.
 1.42 17-Oct-2007  garbled branches: 1.42.16; 1.42.20; 1.42.26; 1.42.28;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.41 01-Sep-2007  dyoung Change a bazillion occurrences of code resembling this,

error = (cmd == SIOCADDMULTI) ?
ether_addmulti(ifr, &sc->sc_ec) :
ether_delmulti(ifr, &sc->sc_ec);

if (error == ENETRESET) {

to this,

if ((error = ether_ioctl(ifp, cmd, data)) == ENETRESET) {

which does the same thing.

(A bazillion is a very large number. This seems to make the i386
ALL kernel smaller by 3kB to 4kB.)

Use ifreq_getaddr() twice in es(4).

Whitespace nits.
 1.40 04-Mar-2007  christos branches: 1.40.2; 1.40.10; 1.40.14; 1.40.18; 1.40.20;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.39 07-Sep-2006  dogcow branches: 1.39.8;
remove more vestiges of CCITT, LLC, HDLC, NS, and NSIP.
 1.38 11-Dec-2005  christos branches: 1.38.4; 1.38.8;
merge ktrace-lwp.
 1.37 17-May-2005  christos branches: 1.37.2;
Yes, it was a cool trick >20 years ago to use "0123456789abcdef"[a] to
implement, xtoa(), but I think defining the samestring 50 times is a bit
too much. Defined HEXDIGITS and hexdigits in subr_prf.c and use it...
 1.36 30-Jan-2005  thorpej Eliminate use of M_HASFCS.
 1.35 19-Jan-2005  chs branches: 1.35.2;
de-__P, remove register, ansify.
 1.34 30-Oct-2004  thorpej branches: 1.34.4;
When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
 1.33 15-Jul-2003  lukem branches: 1.33.4;
__KERNEL_RCSID()
 1.32 03-May-2003  wiz branches: 1.32.2;
DMA, not dma nor Dma.
 1.31 27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.30 11-Sep-2002  mycroft Don't blindly receive all multicast packets just because we're on a turbo.
Pay lip service to making promiscuous mode work.
 1.29 11-Sep-2002  mycroft Remove straggling NEXT_TURBO #ifdefs.
 1.28 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.27 11-Jul-2002  christos Apply patches from Christian Limpach:

- NeXT label reading support
- SCSI dma fixes
- media support for if_xe.c

Some of these need more cleanup, but at least make SCSI support usable on
the NeXT.
 1.26 20-May-2002  jdolecek branches: 1.26.2;
Fix race condition between the DMA handler (which gets called
on spldma), and rest of driver/network code (which runs on splnet) in way
if->if_snd queue is accessed. Solve by using intermediate queue.

Problem found, and fix provided by Christian Limpach in port-next68k/16798
 1.25 18-May-2002  jdolecek Various whitespace fixes, and turn 'No packet to start' message to DPRINTF().
Mostly inspired by Christian Limpach's patch in port-next68k/16978.
 1.24 16-Jun-2001  dbj branches: 1.24.2; 1.24.8; 1.24.16;
fix handling of transmit length calculation so we now handle full length xmits
 1.23 13-May-2001  chs turn on printf format-string checking and -Werror. fix all warnings.
 1.22 16-Apr-2001  dbj add receive ethernet bpf tap
keep receive ethernet crc and set M_HASFCS
change bus_dma MD fields to keep xfer_len for entire map
instead of per segment
turn off automatic dma restarts in preparation for changing
scsi driver to handle them.
add dma debugging routines to keep history of dma states
tweak checking for unusual dma limit register
 1.21 02-Apr-2001  dbj removed unused mediachange routines
changed ethernet receive to handle unexpected dma shutdowns
 1.20 14-Jan-2001  thorpej branches: 1.20.2;
Use splnet() to block network interrupts, not splimp().
 1.19 15-Nov-2000  thorpej Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach().
 1.18 09-Aug-2000  tv %b -> bitmask_snprintf()
 1.17 29-Aug-1999  dbj branches: 1.17.2; 1.17.12;
made debugging printfs switchable at run time via the "xe_debug" variable.
 1.16 28-Aug-1999  dbj discovered the purpose of another bit in the dma control register.
DMACSR_READ is now a CSR status bit which can be used to know if current transfer is
from cpu to device.
the old DMACSR_READ bit is renamed DMACSR_SETREAD. This is a control bit that tells
the dma transfer to be from cpu to device.
 1.15 05-Aug-1999  dbj changed dma segment field "ds_read_len" to "ds_xfer_len" since it is valid for
either read or write transfers.
 1.14 03-Aug-1999  dbj resync bus_dma functions with current alpha versions.
added a field to a dma segment to return the actual length of that segment that
was successfully transferred.
 1.13 03-Aug-1999  dbj removed unused variable.
 1.12 23-Jun-1999  abs In xxx_mediachange(), if there is no callback to the front-end, just
return 0 instead of EINVAL. In this case, there will only be one media
type, and the upper-level if_media code will ensure that the user is
setting to that type.
This matches changes Jason made a while back to sys/dev/ic/lance.c
 1.11 18-May-1999  thorpej Rework layer 2 protocol input routines. Instead of calling e.g. ether_input()
directly, call the function pointer (*if_input)(ifp, m). The input routine
expects the packet header to be at the head of the packet, and will adjust
as necessary. Privatize the layer 2 input and output routines, allowing
*_ifattach() to set them up as appropriate.
 1.10 28-Feb-1999  explorer branches: 1.10.4;
Update to slightly altered rnd_attach_source() api
 1.9 27-Dec-1998  dbj After some experimentation, now allow dma start alignment to be 4.
Removed separate alignment constant for ethernet since it appears to
be unnecessary.
 1.8 19-Dec-1998  dbj Revamped DMA interface to unify chaining and non-chaining dma sequences.
Updated ethernet driver to work with new interface.
Continue work on esp driver.
 1.7 19-Jul-1998  dbj Commented out some bus_dma code, until I can fix.
(bus_dma.c needs sync with alpha port!)
Continued progress on scsi driver.
A couple of other compiler warning level of tweaks.
 1.6 11-Jul-1998  dbj Reserved 8k at top of memory for ROM. This fixes warp9c boot problems.
changed ethernet panic to a warning when out of DMA buffers. This allows
resuming if you sit in ddb too long.
 1.5 05-Jul-1998  jonathan defopt NS, NSIP.
 1.4 05-Jul-1998  jonathan defopt LLC
 1.3 05-Jul-1998  jonathan defopt CCITT.
 1.2 05-Jul-1998  jonathan defopt INET, NETATALK.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.10.4.2 01-Jul-1999  thorpej Sync w/ -current.
 1.10.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.17.12.2 16-Jun-2001  he Pull up revision 1.24 (via patch, requested by dbj):
Fix bugs related to calculation of transmit packet length and
allow unaligned pointers in bus_dmamap_sync(). Fixes problems
related to full-size ethernet packets, as reported in PR#13212.
 1.17.12.1 05-Apr-2001  he Apply patch (requested by dbj):
Truncate oversize packets caused by ethernet dma overruns.
 1.17.2.4 21-Apr-2001  bouyer Sync with HEAD
 1.17.2.3 18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.17.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.17.2.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.20.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.20.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.24.16.2 16-Jul-2002  gehenna catch up with -current.
 1.24.16.1 30-May-2002  gehenna Catch up with -current.
 1.24.8.5 18-Oct-2002  nathanw Catch up to -current.
 1.24.8.4 17-Sep-2002  nathanw Catch up to -current.
 1.24.8.3 01-Aug-2002  nathanw Catch up to -current.
 1.24.8.2 20-Jun-2002  nathanw Catch up to -current.
 1.24.8.1 16-Jun-2001  nathanw file mb8795.c was added on branch nathanw_sa on 2002-06-20 03:40:22 +0000
 1.24.2.3 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.24.2.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.24.2.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.26.2.1 28-Jan-2003  jmc Pullup revisions 1.11-1.12 of sys/arch/next68k/dev/if_xe.c via patch
(requested by bouyer in ticket #1125)
bzero the part of the buffer used to pad the packet to
ETHER_MIN_LEN - ETHER_CRC_LEN.
 1.32.2.7 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.32.2.6 04-Feb-2005  skrll Sync with HEAD.
 1.32.2.5 24-Jan-2005  skrll Sync with HEAD.
 1.32.2.4 02-Nov-2004  skrll Sync with HEAD.
 1.32.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.32.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.32.2.1 03-Aug-2004  skrll Sync with HEAD
 1.33.4.1 24-Jan-2005  he Pull up revision 1.34 (requested by thorpej in ticket #939):
When adding or deleting multicast addresses, only change
the address filter if the interface is marked RUNNING.
Fixes PR#27678.
 1.34.4.1 29-Apr-2005  kent sync with -current
 1.35.2.1 12-Feb-2005  yamt sync with head.
 1.37.2.2 03-Sep-2007  yamt sync with head.
 1.37.2.1 30-Dec-2006  yamt sync with head.
 1.38.8.1 14-Sep-2006  yamt sync with head.
 1.38.4.1 09-Sep-2006  rpaulo sync with head
 1.39.8.1 12-Mar-2007  rmind Sync with HEAD.
 1.40.20.1 06-Nov-2007  matt sync with HEAD
 1.40.18.1 03-Sep-2007  jmcneill Sync with HEAD.
 1.40.14.1 03-Sep-2007  skrll Sync with HEAD.
 1.40.10.1 03-Oct-2007  garbled Sync with HEAD
 1.40.2.1 09-Oct-2007  ad Sync with head.
 1.42.28.2 28-Apr-2009  skrll Sync with HEAD.
 1.42.28.1 19-Jan-2009  skrll Sync with HEAD.
 1.42.26.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.42.20.3 11-Aug-2010  yamt sync with head.
 1.42.20.2 11-Mar-2010  yamt sync with head
 1.42.20.1 04-May-2009  yamt sync with head.
 1.42.16.1 17-Jan-2009  mjf Sync with HEAD.
 1.44.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.47.4.1 30-May-2010  rmind sync with head
 1.47.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.49.12.1 18-Feb-2012  mrg merge to -current.
 1.49.8.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.49.8.2 30-Oct-2012  yamt sync with head
 1.49.8.1 17-Apr-2012  yamt sync with head
 1.50.6.3 03-Dec-2017  jdolecek update from HEAD
 1.50.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.50.6.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.51.2.1 18-May-2014  rmind sync with head
 1.52.2.1 07-Apr-2014  tls Be a little more clear and consistent about harvesting entropy from devices:

1) deprecate RND_FLAG_NO_ESTIMATE

2) define RND_FLAG_COLLECT_TIME, RND_FLAG_COLLECT_VALUE

3) define RND_FLAG_ESTIMATE_TIME, RND_FLAG_ESTIMATE_VALUE

4) define RND_FLAG_DEFAULT: RND_FLAG_COLLECT_TIME|
RND_FLAG_COLLECT_VALUE|RND_FLAG_ESTIMATE_TIME

5) Make entropy harvesting from environmental sensors a little more generic
and remove it from individual sensor drivers.

6) Remove individual open-coded delta-estimators for values from a few
places in the tree (uvm, environmental drivers).

7) 0 -> RND_FLAG_DEFAULT, actually gather entropy from various drivers
that had stubbed out code, other minor cleanups.
 1.53.4.5 28-Aug-2017  skrll Sync with HEAD
 1.53.4.4 05-Feb-2017  skrll Sync with HEAD
 1.53.4.3 09-Jul-2016  skrll Sync with HEAD
 1.53.4.2 19-Mar-2016  skrll Sync with HEAD
 1.53.4.1 06-Jun-2015  skrll Sync with HEAD
 1.56.2.2 26-Apr-2017  pgoyette Sync with HEAD
 1.56.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.57.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.58.12.2 28-Jul-2018  pgoyette Sync with HEAD
 1.58.12.1 25-Jun-2018  pgoyette Sync with HEAD
 1.58.6.1 26-Jul-2018  snj Pull up following revision(s) (requested by msaitoh in ticket #938):
sys/arch/acorn32/podulebus/if_ie.c: revision 1.41
sys/arch/amiga/dev/if_es.c: revision 1.58
sys/arch/amiga/dev/if_qn.c: revision 1.45
sys/arch/arm/at91/at91emac.c: revision 1.20
sys/arch/arm/ep93xx/epe.c: revision 1.37
sys/arch/emips/ebus/if_le_ebus.c: revision 1.14
sys/arch/emips/ebus/if_le_ebus.c: revision 1.15
sys/arch/mac68k/dev/if_mc.c: revision 1.46
sys/arch/macppc/dev/am79c950.c: revision 1.39
sys/arch/newsmips/apbus/if_sn.c: revision 1.40
sys/arch/next68k/dev/mb8795.c: revision 1.59
sys/arch/playstation2/dev/if_smap.c: revision 1.25
sys/arch/playstation2/dev/if_smap.c: revision 1.26
sys/arch/sun2/dev/if_ec.c: revision 1.28
sys/arch/sun3/dev/if_ie.c: revision 1.63
sys/arch/x68k/dev/if_ne_intio.c: revision 1.19
sys/arch/xen/xen/if_xennet_xenbus.c: revision 1.75
sys/arch/xen/xen/xennetback_xenbus.c: revision 1.63
sys/dev/bi/if_ni.c: revision 1.45
sys/dev/cadence/if_cemac.c: revision 1.12
sys/dev/ic/am7990.c: revision 1.78
sys/dev/ic/am79900.c: revision 1.27
sys/dev/ic/an.c: revision 1.67
sys/dev/ic/cs89x0.c: revision 1.40
sys/dev/ic/dm9000.c: revision 1.13
sys/dev/ic/dm9000.c: revision 1.14
sys/dev/ic/dp8390.c: revision 1.88
sys/dev/ic/elink3.c: revision 1.141
sys/dev/ic/elinkxl.c: revision 1.122
sys/dev/ic/hme.c: revision 1.98
sys/dev/ic/i82586.c: revision 1.77
sys/dev/ic/lance.c: revision 1.53
sys/dev/ic/mb86950.c: revision 1.27
sys/dev/ic/mb86960.c: revision 1.86
sys/dev/ic/mtd803.c: revision 1.34
sys/dev/ic/pdq_ifsubr.c: revision 1.59
sys/dev/ic/rrunner.c: revision 1.86
sys/dev/ic/seeq8005.c: revision 1.58
sys/dev/ic/sgec.c: revision 1.47
sys/dev/ic/smc90cx6.c: revision 1.72
sys/dev/ic/smc91cxx.c: revision 1.96
sys/dev/ic/tropic.c: revision 1.49
sys/dev/ic/wi.c: revision 1.245
sys/dev/isa/if_eg.c: revision 1.93
sys/dev/isa/if_el.c: revision 1.95
sys/dev/isa/if_iy.c: revision 1.101
sys/dev/ofw/ofnet.c: revision 1.58
sys/dev/pci/if_alc.c: revision 1.27
sys/dev/pci/if_de.c: revision 1.152
sys/dev/pci/if_fpa.c: revision 1.61
sys/dev/pci/if_jme.c: revision 1.34
sys/dev/pci/if_tl.c: revision 1.108
sys/dev/pci/if_vte.c: revision 1.19
sys/dev/pci/ixgbe/ixgbe.h: revision 1.50
sys/dev/pcmcia/if_cnw.c: revision 1.62
sys/dev/pcmcia/if_malo_pcmcia.c: revision 1.17
sys/dev/pcmcia/if_ray.c: revision 1.89
sys/dev/pcmcia/if_xi.c: revision 1.81
sys/dev/pcmcia/mhzc.c: revision 1.51
sys/dev/pcmcia/xirc.c: revision 1.34
sys/dev/qbus/if_de.c: revision 1.33
sys/dev/qbus/if_qe.c: revision 1.78
sys/dev/qbus/if_qt.c: revision 1.22
sys/dev/sbus/be.c: revision 1.87
sys/dev/sbus/qe.c: revision 1.68
sys/dev/scsipi/if_se.c: revision 1.96
sys/dev/usb/if_atu.c: revision 1.59
sys/net/if_l2tp.c: revision 1.28 via patch
sys/net/if_ppp.c: revision 1.160
It's not required to include net/bpfdesc.h. Remove it.
--
Simplify like other drivers. NULL check of ifp->if_bpf is done in
bpf_mtap(), so it's not required to do it here.
--
Remove duplicated inclusion of net/bpf.h.
--
Remove duplicated inclusion of net/bpf.h.
--
Simplify bpf_mtap() call. No functional change.
 1.60.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.60.2.1 10-Jun-2019  christos Sync with HEAD
 1.65.4.1 29-Feb-2020  ad Sync with head.
 1.5 10-Jun-2023  dbj gratuitous commit to fix spelling error
 1.4 24-Apr-2010  dbj switch from 4 clause to 2 clause BSD license.
 1.3 11-Sep-2002  mycroft branches: 1.3.112; 1.3.132; 1.3.134;
Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.2 31-Mar-2001  dbj branches: 1.2.2; 1.2.8;
comment out device register structure definitions, used for reference only.
remove unnecessary BUS_SPACE_MAP_LINEAR when mapping ethernet dma registers.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj branches: 1.1.1.1.14; 1.1.1.1.26;
Initial import of NetBSD/next68k.
 1.1.1.1.26.1 09-Apr-2001  nathanw Catch up with -current.
 1.1.1.1.14.1 21-Apr-2001  bouyer Sync with HEAD
 1.2.8.2 17-Sep-2002  nathanw Catch up to -current.
 1.2.8.1 31-Mar-2001  nathanw file mb8795reg.h was added on branch nathanw_sa on 2002-09-17 21:16:27 +0000
 1.2.2.1 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.3.134.1 30-May-2010  rmind sync with head
 1.3.132.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.112.1 11-Aug-2010  yamt sync with head.
 1.16 03-Feb-2023  tsutsui Use proper C99 int types.
 1.15 13-Apr-2015  riastradh MD rnd.h cleanups. Please let me know if I broke anything!
 1.14 27-Oct-2012  chs branches: 1.14.14;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.13 02-Feb-2012  tls branches: 1.13.6;
Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.12 19-Nov-2011  tls branches: 1.12.2;
First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.11 24-Apr-2010  dbj branches: 1.11.8;
switch from 4 clause to 2 clause BSD license.
 1.10 04-Mar-2007  christos branches: 1.10.44; 1.10.64; 1.10.66;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.9 11-Dec-2005  christos branches: 1.9.26;
merge ktrace-lwp.
 1.8 19-Jan-2005  chs branches: 1.8.8;
de-__P, remove register, ansify.
 1.7 11-Sep-2002  mycroft branches: 1.7.6; 1.7.14;
Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.6 11-Jul-2002  christos Apply patches from Christian Limpach:

- NeXT label reading support
- SCSI dma fixes
- media support for if_xe.c

Some of these need more cleanup, but at least make SCSI support usable on
the NeXT.
 1.5 20-May-2002  jdolecek Fix race condition between the DMA handler (which gets called
on spldma), and rest of driver/network code (which runs on splnet) in way
if->if_snd queue is accessed. Solve by using intermediate queue.

Problem found, and fix provided by Christian Limpach in port-next68k/16798
 1.4 18-May-2002  jdolecek whitespace & formatting fixes, from Christian Limpach in port-next68/16798
 1.3 02-Apr-2001  dbj branches: 1.3.2; 1.3.8; 1.3.16;
remove unused ifmedia fields
 1.2 09-Oct-2000  dbj branches: 1.2.2;
add rnd_source field to mb8796_softc
this fixes compile problems with rnd pseudo-device added to GENERIC kernel
patch submitted by greg oster
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj branches: 1.1.1.1.14; 1.1.1.1.24;
Initial import of NetBSD/next68k.
 1.1.1.1.24.1 16-Oct-2000  tv Pullup 1.2 [dbj]:
add rnd_source field to mb8796_softc
this fixes compile problems with rnd pseudo-device added to GENERIC kernel
patch submitted by greg oster
 1.1.1.1.14.2 21-Apr-2001  bouyer Sync with HEAD
 1.1.1.1.14.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.2.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.3.16.2 16-Jul-2002  gehenna catch up with -current.
 1.3.16.1 30-May-2002  gehenna Catch up with -current.
 1.3.8.4 17-Sep-2002  nathanw Catch up to -current.
 1.3.8.3 01-Aug-2002  nathanw Catch up to -current.
 1.3.8.2 20-Jun-2002  nathanw Catch up to -current.
 1.3.8.1 02-Apr-2001  nathanw file mb8795var.h was added on branch nathanw_sa on 2002-06-20 03:40:22 +0000
 1.3.2.3 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.3.2.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.3.2.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.7.14.1 29-Apr-2005  kent sync with -current
 1.7.6.1 24-Jan-2005  skrll Sync with HEAD.
 1.8.8.1 03-Sep-2007  yamt sync with head.
 1.9.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.10.66.1 30-May-2010  rmind sync with head
 1.10.64.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.10.44.1 11-Aug-2010  yamt sync with head.
 1.11.8.2 30-Oct-2012  yamt sync with head
 1.11.8.1 17-Apr-2012  yamt sync with head
 1.12.2.1 18-Feb-2012  mrg merge to -current.
 1.13.6.2 03-Dec-2017  jdolecek update from HEAD
 1.13.6.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.14.14.1 06-Jun-2015  skrll Sync with HEAD
 1.3 21-Jan-2002  jdolecek Switch to MI dev/md_root.c for archs which don't have any special
memory disk hooks (i.e. everything except atari).
 1.2 17-Mar-1999  sommerfe branches: 1.2.22; 1.2.26;
defopt MINIROOTSIZE
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.2.26.1 28-Feb-2002  nathanw Catch up to -current.
 1.2.22.1 11-Feb-2002  jdolecek Sync w/ -current.
 1.15 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h> include.
 1.14 11-Feb-2023  tsutsui Add and check machine type NeXT_CUBE_TURBO (type 8).

Info from Andreas Grabher on port-next68k@.
 1.13 04-Feb-2023  tsutsui Remove trailing spaces and TABs.
 1.12 03-Feb-2023  tsutsui Misc KNF and cosmetics.
 1.11 24-Apr-2010  dbj branches: 1.11.64; 1.11.90;
switch from 4 clause to 2 clause BSD license.
 1.10 05-Jan-2008  ad branches: 1.10.10; 1.10.30; 1.10.32;
Fix includes.
 1.9 24-Jan-2007  hubertf branches: 1.9.24; 1.9.30; 1.9.36;
Remove duplicate #includes, patch contributed in private mail
by Slava Semushin <slava.semushin@gmail.com>.

To verify that no nasty side effects of duplicate includes (or their
removal) have an effect here, I've compiled an i386/ALL kernel with
and without the patch, and the only difference in the resulting .o
files was in shifted line numbers in some assert() calls.
The comparison of the .o files was based on the output of "objdump -D".

Thanks to martin@ for the input on testing.
 1.8 11-Dec-2005  christos branches: 1.8.20;
merge ktrace-lwp.
 1.7 19-Jan-2005  chs branches: 1.7.8;
de-__P, remove register, ansify.
 1.6 15-Jul-2003  lukem branches: 1.6.8;
__KERNEL_RCSID()
 1.5 11-Sep-2002  mycroft branches: 1.5.6;
Attach nextdisplay on the mono turbo.
 1.4 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.3 29-Sep-2000  deberg branches: 1.3.4; 1.3.8;
add support for 12-bit color displays, from Timm Wetzel w/ changes by
me. closes 10741.
 1.2 29-Apr-1999  bad branches: 1.2.2; 1.2.12;
Don't use the direct console on color machines, which is currently not
supported. Use serial console instead.
From Matt Debergalis PR 7488.
 1.1 26-Mar-1999  dbj branches: 1.1.2;
Added support for using wscons as console.
Enabled wscons as default console.
Use option SERCONSOLE now to use serial console instead now.
 1.1.2.1 29-Apr-1999  perry branches: 1.1.2.1.2;
pullup 1.1->1.2 (bad)
 1.1.2.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.2.12.1 06-Oct-2000  deberg pullup 1.3, approved by thorpej

add support for 12-bit color displays, from Timm Wetzel w/ changes by
me. closes 10741.
 1.2.2.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.3.8.1 17-Sep-2002  nathanw Catch up to -current.
 1.3.4.1 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.5.6.4 24-Jan-2005  skrll Sync with HEAD.
 1.5.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.6.1 03-Aug-2004  skrll Sync with HEAD
 1.6.8.1 29-Apr-2005  kent sync with -current
 1.7.8.2 21-Jan-2008  yamt sync with head
 1.7.8.1 26-Feb-2007  yamt sync with head.
 1.8.20.1 01-Feb-2007  ad Sync with head.
 1.9.36.1 08-Jan-2008  bouyer Sync with HEAD
 1.9.30.1 18-Feb-2008  mjf Sync with HEAD.
 1.9.24.1 09-Jan-2008  matt sync with HEAD
 1.10.32.1 30-May-2010  rmind sync with head
 1.10.30.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.10.10.1 11-Aug-2010  yamt sync with head.
 1.11.90.1 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #88):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17
sys/arch/next68k/dev/intio.c: revision 1.18
sys/arch/next68k/dev/intio.c: revision 1.19
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.11.64.1 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #1598):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/include/bus_space.h: revision 1.18
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/include/bus_space.h: revision 1.19
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17 (patch)
sys/arch/next68k/dev/intio.c: revision 1.18 (patch)
sys/arch/next68k/dev/intio.c: revision 1.19 (patch)
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

s/impliment/implement/ in comment.

Remove cargo-culted '#if 0' code that was designed to produce a
compile-time error if any of the bus_space_*_8 functions was used,
but was documented that it produces a link-time error.

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.31 02-Feb-2024  tsutsui Add WSDISPLAY_GINFO, LINEBYTES, and SMODE ioctl(2)s and mmap(2) support.

mlterm-wscons partially works (no 2 bpp support) with these APIs.
XXX: Xorg server needs wsmouse support.
 1.30 11-Feb-2023  tsutsui NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.

Info from Andreas Grabher on port-next68k@.
 1.29 11-Feb-2023  tsutsui Add and check machine type NeXT_CUBE_TURBO (type 8).

Info from Andreas Grabher on port-next68k@.
 1.28 11-Feb-2023  tsutsui Handle NeXT Turbo VRAM regions properly.

Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).
 1.27 03-Feb-2023  tsutsui Use proper C99 int types.
 1.26 03-Feb-2023  tsutsui Misc KNF and cosmetics.
 1.25 07-Aug-2021  thorpej branches: 1.25.6;
Merge thorpej-cfargs2.
 1.24 24-Apr-2021  thorpej branches: 1.24.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.23 21-Nov-2020  thorpej branches: 1.23.2;
malloc(9) -> kmem(9)
 1.22 12-Nov-2019  msaitoh branches: 1.22.8;
Add missing initialization of sc_dev.
 1.21 27-Oct-2012  chs branches: 1.21.30; 1.21.38; 1.21.42;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.20 04-Mar-2007  christos branches: 1.20.78; 1.20.88;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.19 12-Apr-2006  jmmv branches: 1.19.14;
Add an extra cookie to the ioctl and mmap wsdisplay accessops that points
to the screen on which they are being called. The driver cannot guess
this by itself but it is needed to implement, at least, the getwschar and
putwschar functions in the correct place. There are no functional changes
yet.

Tested on i386 (vga, vga_raster, machfb, vesafb), macppc and sparc64.
Suggested and reviewed by macallan@.
 1.18 11-Dec-2005  christos branches: 1.18.4; 1.18.6; 1.18.8; 1.18.10; 1.18.12;
merge ktrace-lwp.
 1.17 19-Jan-2005  chs branches: 1.17.8;
de-__P, remove register, ansify.
 1.16 11-Jan-2005  chs branches: 1.16.2;
remove leftover debug printf.
 1.15 05-Oct-2003  mycroft Minor tweaks to the color framebuffer code -- still don't know what the deal
with the interrupt is.
 1.14 01-Oct-2003  mycroft Some small cleanup -- make the base,limit values vaddr_t, not char*.
Also add some code that attempts to deal with C16_VIDEO interrupts, though it
does not seem to make my color slabs work again.
 1.13 15-Jul-2003  lukem __KERNEL_RCSID()
 1.12 02-Oct-2002  thorpej branches: 1.12.6;
Use CFATTACH_DECL().
 1.11 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.10 11-Sep-2002  mycroft Attach nextdisplay on the mono turbo.
 1.9 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.8 04-Jul-2002  junyoung alloc_attr -> allocattr

Approved by Matthias Drochner.
 1.7 17-Mar-2002  atatat branches: 1.7.4;
Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command". ERESTART is -1, which can lead to
confusion. ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4. No ioctl code should now return -1 anywhere. The
ioctl() system call is now properly restartable.
 1.6 15-Jun-2001  dbj branches: 1.6.2; 1.6.8;
remove extra args from printf
 1.5 29-Sep-2000  deberg branches: 1.5.2;
add support for 12-bit color displays, from Timm Wetzel w/ changes by
me. closes 10741.
 1.4 26-Jun-2000  simonb Change the kernel mmap interface so that the offset to map is an
"off_t" and the return value is a "paddr_t" to allow mappings
at offsets past 2^31 bytes. Somewhat inspired by FreeBSD, which
only changed the offset to a "vm_offset_t".

Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
 1.3 06-Dec-1999  drochner branches: 1.3.4;
update for changed struct wsdisplay_accessops:show_screen signature.
no functional changes
 1.2 24-Mar-1999  dbj branches: 1.2.8; 1.2.14;
Applied patches from Matt Debergalis <deberg@mit.edu>.
These patches include:
Added framebuffer mapping for color framebuffer to support color wscons
which is coming soon.
Renamed wskbdmap_mfii[ch] to wskbdmap_next[ch]
Changed video to be white on black instead of black on white.
Now handles and discards mouse interrupts.
Video and keyboard is now working on mono machines.
 1.1 28-Jan-1999  dbj wscons based console video & keyboard support for the NeXT
from Matt DeBergalis
 1.2.14.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.2.8.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.3.4.2 06-Oct-2000  deberg pullup 1.5, approved by thorpej

add support for 12-bit color displays, from Timm Wetzel w/ changes by
me. closes 10741.
 1.3.4.1 30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.5.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.6.8.5 18-Oct-2002  nathanw Catch up to -current.
 1.6.8.4 17-Sep-2002  nathanw Catch up to -current.
 1.6.8.3 01-Aug-2002  nathanw Catch up to -current.
 1.6.8.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.6.8.1 15-Jun-2001  nathanw file nextdisplay.c was added on branch nathanw_sa on 2002-04-01 07:41:44 +0000
 1.6.2.3 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.6.2.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.6.2.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.7.4.1 16-Jul-2002  gehenna catch up with -current.
 1.12.6.6 31-Jan-2005  skrll Adapt to branch.
 1.12.6.5 24-Jan-2005  skrll Sync with HEAD.
 1.12.6.4 17-Jan-2005  skrll Sync with HEAD.
 1.12.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.12.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.12.6.1 03-Aug-2004  skrll Sync with HEAD
 1.16.2.1 29-Apr-2005  kent sync with -current
 1.17.8.2 03-Sep-2007  yamt sync with head.
 1.17.8.1 21-Jun-2006  yamt sync with head.
 1.18.12.1 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.18.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.18.8.1 24-May-2006  yamt sync with head.
 1.18.6.1 22-Apr-2006  simonb Sync with head.
 1.18.4.1 09-Sep-2006  rpaulo sync with head
 1.19.14.1 12-Mar-2007  rmind Sync with HEAD.
 1.20.88.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.20.78.1 30-Oct-2012  yamt sync with head
 1.21.42.2 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #1598):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/include/bus_space.h: revision 1.18
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/include/bus_space.h: revision 1.19
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17 (patch)
sys/arch/next68k/dev/intio.c: revision 1.18 (patch)
sys/arch/next68k/dev/intio.c: revision 1.19 (patch)
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

s/impliment/implement/ in comment.

Remove cargo-culted '#if 0' code that was designed to produce a
compile-time error if any of the bus_space_*_8 functions was used,
but was documented that it produces a link-time error.

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.21.42.1 14-Nov-2019  martin Pull up following revision(s) (requested by msaitoh in ticket #425):

sys/dev/sbus/sio16.c: revision 1.25
sys/dev/gpib/mt.c: revision 1.33
sys/arch/mvme68k/dev/wdsc.c: revision 1.33
sys/dev/gpib/ct.c: revision 1.31
sys/dev/isa/mcd.c: revision 1.119
sys/dev/pci/if_stge.c: revision 1.73
sys/dev/gpib/ppi.c: revision 1.25
sys/dev/pcmcia/if_tr_pcmcia.c: revision 1.29
sys/arch/amiga/dev/zssc.c: revision 1.46
sys/arch/mac68k/obio/iwm_fd.c: revision 1.57
sys/arch/amiga/dev/if_qn.c: revision 1.48
sys/dev/isa/tcic2_isa.c: revision 1.28
sys/dev/isa/uha_isa.c: revision 1.42
sys/dev/pci/neo.c: revision 1.55
sys/arch/next68k/dev/nextdisplay.c: revision 1.22
sys/dev/isa/if_iy.c: revision 1.111

Add missing initialization of sc_dev.

Initialize sc_dev correctly to avoid null pointer dereference when
bus_space_map() failed.

Add missing initialization of sc_dev.
 1.21.38.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.21.30.1 14-Nov-2019  martin Pull up following revision(s) (requested by msaitoh in ticket #1439):

sys/dev/sbus/sio16.c: revision 1.25
sys/dev/gpib/mt.c: revision 1.33
sys/arch/mvme68k/dev/wdsc.c: revision 1.33
sys/dev/gpib/ct.c: revision 1.31
sys/dev/isa/mcd.c: revision 1.119
sys/dev/pci/if_stge.c: revision 1.73
sys/dev/gpib/ppi.c: revision 1.25
sys/dev/pcmcia/if_tr_pcmcia.c: revision 1.29
sys/arch/amiga/dev/zssc.c: revision 1.46
sys/arch/mac68k/obio/iwm_fd.c: revision 1.57
sys/arch/amiga/dev/if_qn.c: revision 1.48
sys/dev/isa/tcic2_isa.c: revision 1.28
sys/dev/isa/uha_isa.c: revision 1.42
sys/dev/pci/neo.c: revision 1.55
sys/arch/next68k/dev/nextdisplay.c: revision 1.22
sys/dev/isa/if_iy.c: revision 1.111

Add missing initialization of sc_dev.


Initialize sc_dev correctly to avoid null pointer dereference when
bus_space_map() failed.


Add missing initialization of sc_dev.
 1.22.8.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.23.2.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.24.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.25.6.1 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #88):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17
sys/arch/next68k/dev/intio.c: revision 1.18
sys/arch/next68k/dev/intio.c: revision 1.19
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.7 02-Feb-2024  tsutsui Add WSDISPLAY_GINFO, LINEBYTES, and SMODE ioctl(2)s and mmap(2) support.

mlterm-wscons partially works (no 2 bpp support) with these APIs.
XXX: Xorg server needs wsmouse support.
 1.6 03-Feb-2023  tsutsui Misc KNF and cosmetics.
 1.5 27-Oct-2012  chs branches: 1.5.42; 1.5.68;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.4 11-Dec-2005  christos branches: 1.4.112; 1.4.122;
merge ktrace-lwp.
 1.3 19-Jan-2005  chs de-__P, remove register, ansify.
 1.2 24-Mar-1999  dbj branches: 1.2.42; 1.2.50;
Applied patches from Matt Debergalis <deberg@mit.edu>.
These patches include:
Added framebuffer mapping for color framebuffer to support color wscons
which is coming soon.
Renamed wskbdmap_mfii[ch] to wskbdmap_next[ch]
Changed video to be white on black instead of black on white.
Now handles and discards mouse interrupts.
Video and keyboard is now working on mono machines.
 1.1 28-Jan-1999  dbj wscons based console video & keyboard support for the NeXT
from Matt DeBergalis
 1.2.50.1 29-Apr-2005  kent sync with -current
 1.2.42.1 24-Jan-2005  skrll Sync with HEAD.
 1.4.122.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.4.112.1 30-Oct-2012  yamt sync with head
 1.5.68.1 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #88):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17
sys/arch/next68k/dev/intio.c: revision 1.18
sys/arch/next68k/dev/intio.c: revision 1.19
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.5.42.1 15-Feb-2023  martin Pull up following revision(s) (requested by tsutsui in ticket #1598):

sys/arch/next68k/next68k/nextrom.h: revision 1.13
sys/arch/next68k/dev/nextdisplayvar.h: revision 1.6
sys/arch/next68k/dev/intiovar.h: revision 1.8
sys/arch/next68k/dev/nextcons.c: revision 1.12
sys/arch/next68k/next68k/locore.s: revision 1.69
sys/arch/next68k/dev/nextcons.c: revision 1.13
sys/arch/next68k/dev/nextcons.c: revision 1.14
sys/arch/next68k/include/bus_space.h: revision 1.18
sys/arch/next68k/dev/nextdisplay.c: revision 1.30
sys/arch/next68k/include/bus_space.h: revision 1.19
sys/arch/next68k/stand/boot/boot.c: revision 1.13
sys/arch/next68k/next68k/nextrom.c: revision 1.28
sys/arch/next68k/next68k/nextrom.c: revision 1.29
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.46
sys/arch/next68k/next68k/pmap_bootstrap.c: revision 1.47
sys/arch/next68k/include/cpu.h: revision 1.52
sys/arch/next68k/dev/intio.c: revision 1.17 (patch)
sys/arch/next68k/dev/intio.c: revision 1.18 (patch)
sys/arch/next68k/dev/intio.c: revision 1.19 (patch)
sys/arch/next68k/next68k/locore.s: revision 1.72
sys/arch/next68k/stand/boot/version: revision 1.6
sys/arch/next68k/include/bus_space.h: revision 1.21
sys/arch/next68k/include/bus_space.h: revision 1.22
sys/arch/next68k/dev/nextdisplay.c: revision 1.26
sys/arch/next68k/include/bus_space.h: revision 1.23
sys/arch/next68k/dev/nextdisplay.c: revision 1.27
sys/arch/next68k/dev/nextdisplay.c: revision 1.28
sys/arch/next68k/dev/nextdisplay.c: revision 1.29

s/impliment/implement/ in comment.

Remove cargo-culted '#if 0' code that was designed to produce a
compile-time error if any of the bus_space_*_8 functions was used,
but was documented that it produces a link-time error.

Misc KNF and cosmetics.

Use proper C99 int types.

Remove trailing spaces and TABs.

Handle NeXT Turbo VRAM regions properly.
Info from Andreas Grabher on port-next68k@:
https://mail-index.netbsd.org/port-next68k/2023/02/06/msg000052.html

Also refactor bus_space_map(9) and fix (unused) bus_space_mmap(9).

Add and check machine type NeXT_CUBE_TURBO (type 8).
Info from Andreas Grabher on port-next68k@.

NeXT Turbo Color doesn't have NEXT_P_C16_CMD_REG.
Info from Andreas Grabher on port-next68k@.

Bump version again to denote NeXT_CUBE_TURBO support.
 1.52 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h> include.
 1.51 03-Feb-2023  tsutsui Misc KNF and cosmetics.
 1.50 31-Mar-2017  msaitoh Remove extra 0x. This bug was added when replacing bitmask_snprintf(9) with
snprintb(3) (in between NetBSD 5 and 6). Old bitmask_snprint(9) didn't add
0x" automatically for hexadecimal value, so old code used it with "0x%s".
 1.49 25-Mar-2014  christos branches: 1.49.6; 1.49.10; 1.49.14;
fix sprintf debugging mess.
 1.48 27-Oct-2012  chs branches: 1.48.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.47 06-Jun-2010  mrg branches: 1.47.8; 1.47.18;
fix some errors in debug code, found by henning petersen in PR#42529.
 1.46 24-Apr-2010  dbj switch from 4 clause to 2 clause BSD license.
 1.45 05-Nov-2009  dyoung branches: 1.45.2; 1.45.4;
Use deviter(9) instead of accessing alldevs directly. Untested.
 1.44 17-Dec-2008  cegger make the compile again
 1.43 16-Dec-2008  christos replace bitmask_snprintf(9) with snprintb(3)
 1.42 14-May-2006  elad branches: 1.42.62; 1.42.66; 1.42.74;
integrate kauth.
 1.41 08-Mar-2006  lukem Use the SI capitalization for "Hz", "kHz", and "MHz" in comments and strings.
Add a space between numbers and Hz unit.
 1.40 24-Dec-2005  perry branches: 1.40.4; 1.40.6; 1.40.8; 1.40.10;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.39 11-Dec-2005  christos merge ktrace-lwp.
 1.38 05-Jun-2005  he branches: 1.38.2;
Adapt to -Wcast-qual by adding a few consts.
 1.37 19-Jan-2005  chs de-__P, remove register, ansify.
 1.36 04-Dec-2003  keihan branches: 1.36.8;
netbsd.org -> NetBSD.org

All "netbsd.org" is now gone from src/sys/arch.
 1.35 15-Jul-2003  lukem __KERNEL_RCSID()
 1.34 02-Oct-2002  thorpej branches: 1.34.6;
Use CFATTACH_DECL().
 1.33 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.32 27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.31 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.30 11-Jul-2002  christos Apply patches from Christian Limpach:

- NeXT label reading support
- SCSI dma fixes
- media support for if_xe.c

Some of these need more cleanup, but at least make SCSI support usable on
the NeXT.
 1.29 16-Jun-2001  dbj branches: 1.29.2; 1.29.8; 1.29.16;
fix handling of transmit length calculation so we now handle full length xmits
 1.28 13-May-2001  chs turn on printf format-string checking and -Werror. fix all warnings.
 1.27 17-Apr-2001  dbj increase maxsegs of esp main dma map by one to avoid error
tweak esp glue to read xfer_len from dma map
add some debugging checks for dma driver invariants
read DD_LIMIT instead of DD_SAVED_LIMIT on scsi dma shutdowns
 1.26 16-Apr-2001  dbj add receive ethernet bpf tap
keep receive ethernet crc and set M_HASFCS
change bus_dma MD fields to keep xfer_len for entire map
instead of per segment
turn off automatic dma restarts in preparation for changing
scsi driver to handle them.
add dma debugging routines to keep history of dma states
tweak checking for unusual dma limit register
 1.25 07-Apr-2001  dbj automatically restart dma for unexpected shutdowns
 1.24 07-Apr-2001  dbj continue to tweak nextdma detection of xfer length
add check to esp driver for incomplete transfers, but still does not handle them.
 1.23 02-Apr-2001  dbj No longer clobber the DMACSR_SETENABLE bit in the dma interrupt
Add the ability to handle unexpected dma shutdowns
 1.22 09-Aug-2000  tv branches: 1.22.2;
%b -> bitmask_snprintf()
 1.21 12-Jan-2000  dbj branches: 1.21.4;
applied patch from "Christian Limpach" <chris@Nice.CH>:
I've fixed the problem that's been keeping me from using anything newer than
1.4.1 now. I tracked down the problem checkin, it's the big reorg of
nextdma.c between 1.19 and 1.20. It didn't introduce a new bug but it
activated a check which wasn't activated before. It's the
is-the-limit-in-the-right-window-check which was ifdeffed before because
some DMA-regs would sometimes have strange values. I think I've fixed the
DMA-reg stuff for now: at the end of nextdma_intr, when the csr is poked
to make DMA do something, I think the check for the ENABLE bit introduces a
race condition. I fixed this by unconditionally setting DMACSR_SETENABLE,
this seems to work and also makes the code more readable. I've also tried
setting DMACSR_SETSUPDATE unconditionally and this also works well, but I
don't know what it implies. Unless you have reasons to not set SUPDATE all
the time, I'd suggest making this change as well, it makes the code cleaner
and faster...
I've tested this patch and it does stop the panics, although I don't think setting
SUPDATE all the tima as he suggests is a good idea. The "SUPDATE" bit implies
a single update (i.e. the end of a dma chain.)
 1.20 29-Aug-1999  dbj branches: 1.20.2;
minor rework of dma driver
now uses the DMACSR_READ bit and no longer keeps _nd_dmadir in softc
unified transfer cleanup code, now in routine next_dma_finish_xfer()
fixed bounds checking on registers after transfer.
removed checking for bus errors since the bit is always set on some nexts
(specifically, on mourning, a 25mhz 68040 mono slab)
fixed a couple of dma bugs involving chaining dma buffers.
 1.19 28-Aug-1999  dbj discovered the purpose of another bit in the dma control register.
DMACSR_READ is now a CSR status bit which can be used to know if current transfer is
from cpu to device.
the old DMACSR_READ bit is renamed DMACSR_SETREAD. This is a control bit that tells
the dma transfer to be from cpu to device.
 1.18 17-Aug-1999  dbj remove some debugging hacks that were no longer being used.
 1.17 05-Aug-1999  dbj changed dma segment field "ds_read_len" to "ds_xfer_len" since it is valid for
either read or write transfers.
 1.16 03-Aug-1999  dbj resync bus_dma functions with current alpha versions.
added a field to a dma segment to return the actual length of that segment that
was successfully transferred.
 1.15 14-Mar-1999  dbj branches: 1.15.2;
changed dma start alignment from 4 to 16 so that the cache flush
functions always have cache line aligned segments.
continued experimentation with scsi driver.
 1.14 04-Mar-1999  dbj moved declaration of nextdma_intr into correct header file.
 1.13 02-Mar-1999  dbj turn on diagnostic check in dma for controller bits at shutdown.
adjusted esp overrun to avoid diagnostic check triggering.
 1.12 14-Feb-1999  dbj Continue hacking on esp driver. Seems relatively stable in read only mode.
write operations appear to lose scsi interrupts and causes timeouts.
changes in this checkin include:
a nextdma bugfix causing a diagnostic check to erroneously trigger
Changed tail strategy to only use tail buffer for the minimal end slop
changed expected write dma overrun to 32 bytes.
turned on nextdma diagnostic check for dma end address since it
no longer gets triggerred by ethernet dma and helps debug scsi dma.
Added esp debugging printout and support.
 1.11 13-Feb-1999  dbj Continued work on esp scsi driver. Now can at least do enough i/o to create and mount
a filesystem, but is not stable enough yet for general use.
increased priority of ethernet interrupts, mostly useful to aid debugging
of scsi interrupts while using an nfs disk.
added additional debugging output in the next dma driver.
perform extranneous cache flushes/purges before dma reads/ after dma writes
to aid debugging of scsi dma.
 1.10 27-Jan-1999  dbj Fixed dma instability introduced with nextdma.c rev 1.7
This fix removes putting 0xfeedbeef in the unused restart registers.
When that was done, the machine would panic after a short while
with 0xfeedbeef in the normal dma buffer registers. A restart
cycle is probably hapenning without an interrupt or something.
 1.9 30-Dec-1998  dbj changed register for start of dma buffer to be DD_NEXT_INITBUF instead
of DD_NEXT for regular dma transfers, and not just ethernet transmit.
Keep track of dma read/write direction and set it each time we start or
restart dma. This allows scsi to work, and doesn't appear to hinder ethernet.
 1.8 26-Dec-1998  dbj Continued experimentation on SCSI driver.
Added nextdma_debug variable to control debug printouts in nextdma driver
when ND_DEBUG is defined.
 1.7 19-Dec-1998  dbj Revamped DMA interface to unify chaining and non-chaining dma sequences.
Updated ethernet driver to work with new interface.
Continue work on esp driver.
 1.6 08-Dec-1998  dbj initialized unused dma registers to 0xdeadbeef instead of 0 to aid debugging.
 1.5 10-Nov-1998  dbj Sync'ed more files and routines with mvme port in prepartion for UVM.
Now use generic m68k cachops everywhere rather than defining them in locore.s
 1.4 21-Jul-1998  dbj Continued work on the esp scsi driver. Not yet working, but progress continues.
 1.3 19-Jul-1998  dbj Commented out some bus_dma code, until I can fix.
(bus_dma.c needs sync with alpha port!)
Continued progress on scsi driver.
A couple of other compiler warning level of tweaks.
 1.2 01-Jul-1998  dbj changed diagnostic panic into a printf since an unexpected condition appears
to happen every once in a while. (The DMA interrupt gets called w/o
the completed bit set)
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.15.2.1 21-Jan-2000  he Pull up revision 1.21 (via patch, requested by dbj):
Fix problem that causes xe0 to get frequent weird DMA Rx interrupts
and panics. Fixes PR#8847.
 1.20.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.20.2.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.21.4.1 16-Jun-2001  he Pull up revision 1.29 (via patch, requested by dbj):
Fix bugs related to calculation of transmit packet length and
allow unaligned pointers in bus_dmamap_sync(). Fixes problems
related to full-size ethernet packets, as reported in PR#13212.
 1.22.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.22.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.29.16.1 16-Jul-2002  gehenna catch up with -current.
 1.29.8.4 18-Oct-2002  nathanw Catch up to -current.
 1.29.8.3 17-Sep-2002  nathanw Catch up to -current.
 1.29.8.2 01-Aug-2002  nathanw Catch up to -current.
 1.29.8.1 16-Jun-2001  nathanw file nextdma.c was added on branch nathanw_sa on 2002-08-01 02:42:49 +0000
 1.29.2.2 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.29.2.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.34.6.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.34.6.4 24-Jan-2005  skrll Sync with HEAD.
 1.34.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.34.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.34.6.1 03-Aug-2004  skrll Sync with HEAD
 1.36.8.1 29-Apr-2005  kent sync with -current
 1.38.2.1 21-Jun-2006  yamt sync with head.
 1.40.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.40.8.1 13-Mar-2006  yamt sync with head.
 1.40.6.1 22-Apr-2006  simonb Sync with head.
 1.40.4.1 09-Sep-2006  rpaulo sync with head
 1.42.74.1 19-Jan-2009  skrll Sync with HEAD.
 1.42.66.3 11-Aug-2010  yamt sync with head.
 1.42.66.2 11-Mar-2010  yamt sync with head
 1.42.66.1 04-May-2009  yamt sync with head.
 1.42.62.1 17-Jan-2009  mjf Sync with HEAD.
 1.45.4.2 03-Jul-2010  rmind sync with head
 1.45.4.1 30-May-2010  rmind sync with head
 1.45.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.45.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.47.18.3 03-Dec-2017  jdolecek update from HEAD
 1.47.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.47.18.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.47.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.47.8.1 30-Oct-2012  yamt sync with head
 1.48.2.1 18-May-2014  rmind sync with head
 1.49.14.1 21-Apr-2017  bouyer Sync with HEAD
 1.49.10.1 26-Apr-2017  pgoyette Sync with HEAD
 1.49.6.1 28-Aug-2017  skrll Sync with HEAD
 1.10 03-Feb-2023  tsutsui Misc KNF and cosmetics.
 1.9 24-Apr-2010  dbj switch from 4 clause to 2 clause BSD license.
 1.8 11-Sep-2002  mycroft branches: 1.8.112; 1.8.132; 1.8.134;
Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.7 31-Mar-2001  dbj branches: 1.7.2; 1.7.8;
comment out device register structure definitions, used for reference only.
remove unnecessary BUS_SPACE_MAP_LINEAR when mapping ethernet dma registers.
 1.6 28-Aug-1999  dbj branches: 1.6.2; 1.6.14;
fixed DMACSR_BITS definition to reflect DMACSR_READ bit renaming
 1.5 28-Aug-1999  dbj discovered the purpose of another bit in the dma control register.
DMACSR_READ is now a CSR status bit which can be used to know if current transfer is
from cpu to device.
the old DMACSR_READ bit is renamed DMACSR_SETREAD. This is a control bit that tells
the dma transfer to be from cpu to device.
 1.4 14-Mar-1999  dbj changed dma start alignment from 4 to 16 so that the cache flush
functions always have cache line aligned segments.
continued experimentation with scsi driver.
 1.3 27-Dec-1998  dbj After some experimentation, now allow dma start alignment to be 4.
Removed separate alignment constant for ethernet since it appears to
be unnecessary.
 1.2 19-Jul-1998  dbj Commented out some bus_dma code, until I can fix.
(bus_dma.c needs sync with alpha port!)
Continued progress on scsi driver.
A couple of other compiler warning level of tweaks.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.6.14.1 09-Apr-2001  nathanw Catch up with -current.
 1.6.2.1 21-Apr-2001  bouyer Sync with HEAD
 1.7.8.2 17-Sep-2002  nathanw Catch up to -current.
 1.7.8.1 31-Mar-2001  nathanw file nextdmareg.h was added on branch nathanw_sa on 2002-09-17 21:16:30 +0000
 1.7.2.1 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.8.134.1 30-May-2010  rmind sync with head
 1.8.132.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.8.112.1 11-Aug-2010  yamt sync with head.
 1.18 03-Feb-2023  tsutsui Misc KNF and cosmetics.
 1.17 25-Mar-2014  christos fix sprintf debugging mess.
 1.16 27-Oct-2012  chs branches: 1.16.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.15 24-Apr-2010  dbj branches: 1.15.8; 1.15.18;
switch from 4 clause to 2 clause BSD license.
 1.14 11-Dec-2005  christos branches: 1.14.78; 1.14.98; 1.14.100;
merge ktrace-lwp.
 1.13 05-Jun-2005  he Adapt to -Wcast-qual by adding a few consts.
 1.12 19-Jan-2005  chs de-__P, remove register, ansify.
 1.11 11-Sep-2002  mycroft branches: 1.11.6; 1.11.14;
Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.10 11-Jul-2002  christos Apply patches from Christian Limpach:

- NeXT label reading support
- SCSI dma fixes
- media support for if_xe.c

Some of these need more cleanup, but at least make SCSI support usable on
the NeXT.
 1.9 29-Aug-1999  dbj branches: 1.9.16; 1.9.20; 1.9.28;
minor rework of dma driver
now uses the DMACSR_READ bit and no longer keeps _nd_dmadir in softc
unified transfer cleanup code, now in routine next_dma_finish_xfer()
fixed bounds checking on registers after transfer.
removed checking for bus errors since the bit is always set on some nexts
(specifically, on mourning, a 25mhz 68040 mono slab)
fixed a couple of dma bugs involving chaining dma buffers.
 1.8 28-Aug-1999  dbj discovered the purpose of another bit in the dma control register.
DMACSR_READ is now a CSR status bit which can be used to know if current transfer is
from cpu to device.
the old DMACSR_READ bit is renamed DMACSR_SETREAD. This is a control bit that tells
the dma transfer to be from cpu to device.
 1.7 03-Aug-1999  dbj resync bus_dma functions with current alpha versions.
added a field to a dma segment to return the actual length of that segment that
was successfully transferred.
 1.6 14-Mar-1999  dbj changed dma start alignment from 4 to 16 so that the cache flush
functions always have cache line aligned segments.
continued experimentation with scsi driver.
 1.5 04-Mar-1999  dbj moved declaration of nextdma_intr into correct header file.
 1.4 30-Dec-1998  dbj changed register for start of dma buffer to be DD_NEXT_INITBUF instead
of DD_NEXT for regular dma transfers, and not just ethernet transmit.
Keep track of dma read/write direction and set it each time we start or
restart dma. This allows scsi to work, and doesn't appear to hinder ethernet.
 1.3 19-Dec-1998  dbj Revamped DMA interface to unify chaining and non-chaining dma sequences.
Updated ethernet driver to work with new interface.
Continue work on esp driver.
 1.2 05-Jul-1998  dbj Started the esp scsi driver.
Fixed bus_space_handle_t in nextdma device.
Fixed scsi interrupt define.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.9.28.1 16-Jul-2002  gehenna catch up with -current.
 1.9.20.2 17-Sep-2002  nathanw Catch up to -current.
 1.9.20.1 01-Aug-2002  nathanw Catch up to -current.
 1.9.16.2 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.9.16.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.11.14.1 29-Apr-2005  kent sync with -current
 1.11.6.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.11.6.1 24-Jan-2005  skrll Sync with HEAD.
 1.14.100.1 30-May-2010  rmind sync with head
 1.14.98.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.14.78.1 11-Aug-2010  yamt sync with head.
 1.15.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.15.18.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.15.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.15.8.1 30-Oct-2012  yamt sync with head
 1.16.2.1 18-May-2014  rmind sync with head
 1.19 03-Feb-2023  tsutsui Misc KNF and cosmetics.
 1.18 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.17 24-Apr-2021  thorpej branches: 1.17.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.16 21-Nov-2020  thorpej branches: 1.16.2;
malloc(9) -> kmem(9)
 1.15 24-Mar-2014  christos branches: 1.15.42;
- use cpu_{g,s}etmodel
- fix unused
 1.14 27-Oct-2012  chs branches: 1.14.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.13 05-Jan-2008  ad branches: 1.13.44; 1.13.54;
Fix includes.
 1.12 04-Mar-2007  christos branches: 1.12.20; 1.12.26; 1.12.32;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.11 04-Aug-2006  mhitch branches: 1.11.10;
gcc4 fix: gcc3 was apparently more lax in structure declarations - change
order of including nextkbdvar.h and wskbbdmap_next.h.
 1.10 11-Dec-2005  christos branches: 1.10.4; 1.10.8;
merge ktrace-lwp.
 1.9 19-Jan-2005  chs branches: 1.9.8;
de-__P, remove register, ansify.
 1.8 15-Jul-2003  lukem branches: 1.8.8;
__KERNEL_RCSID()
 1.7 02-Oct-2002  thorpej branches: 1.7.6;
Use CFATTACH_DECL().
 1.6 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.5 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.4 17-Mar-2002  atatat Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command". ERESTART is -1, which can lead to
confusion. ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4. No ioctl code should now return -1 anywhere. The
ioctl() system call is now properly restartable.
 1.3 26-Mar-1999  dbj branches: 1.3.22; 1.3.26;
fix polled keyboard support
 1.2 24-Mar-1999  dbj Applied patches from Matt Debergalis <deberg@mit.edu>.
These patches include:
Added framebuffer mapping for color framebuffer to support color wscons
which is coming soon.
Renamed wskbdmap_mfii[ch] to wskbdmap_next[ch]
Changed video to be white on black instead of black on white.
Now handles and discards mouse interrupts.
Video and keyboard is now working on mono machines.
 1.1 28-Jan-1999  dbj wscons based console video & keyboard support for the NeXT
from Matt DeBergalis
 1.3.26.3 18-Oct-2002  nathanw Catch up to -current.
 1.3.26.2 17-Sep-2002  nathanw Catch up to -current.
 1.3.26.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.3.22.2 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.3.22.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.7.6.5 31-Jan-2005  skrll Adapt to branch.
 1.7.6.4 24-Jan-2005  skrll Sync with HEAD.
 1.7.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.7.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.7.6.1 03-Aug-2004  skrll Sync with HEAD
 1.8.8.1 29-Apr-2005  kent sync with -current
 1.9.8.4 21-Jan-2008  yamt sync with head
 1.9.8.3 03-Sep-2007  yamt sync with head.
 1.9.8.2 30-Dec-2006  yamt sync with head.
 1.9.8.1 21-Jun-2006  yamt sync with head.
 1.10.8.1 11-Aug-2006  yamt sync with head
 1.10.4.1 09-Sep-2006  rpaulo sync with head
 1.11.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.12.32.1 08-Jan-2008  bouyer Sync with HEAD
 1.12.26.1 18-Feb-2008  mjf Sync with HEAD.
 1.12.20.1 09-Jan-2008  matt sync with HEAD
 1.13.54.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.13.54.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.13.44.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.44.1 30-Oct-2012  yamt sync with head
 1.14.2.1 18-May-2014  rmind sync with head
 1.15.42.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.16.2.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.17.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.5 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.4 11-Dec-2005  christos branches: 1.4.112; 1.4.122;
merge ktrace-lwp.
 1.3 19-Jan-2005  chs de-__P, remove register, ansify.
 1.2 11-Sep-2002  mycroft branches: 1.2.6; 1.2.14;
Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.1 28-Jan-1999  dbj branches: 1.1.22; 1.1.26;
wscons based console video & keyboard support for the NeXT
from Matt DeBergalis
 1.1.26.1 17-Sep-2002  nathanw Catch up to -current.
 1.1.22.1 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.2.14.1 29-Apr-2005  kent sync with -current
 1.2.6.1 24-Jan-2005  skrll Sync with HEAD.
 1.4.122.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.4.112.1 30-Oct-2012  yamt sync with head
 1.2 24-Mar-1999  dbj Applied patches from Matt Debergalis <deberg@mit.edu>.
These patches include:
Added framebuffer mapping for color framebuffer to support color wscons
which is coming soon.
Renamed wskbdmap_mfii[ch] to wskbdmap_next[ch]
Changed video to be white on black instead of black on white.
Now handles and discards mouse interrupts.
Video and keyboard is now working on mono machines.
 1.1 28-Jan-1999  dbj wscons based console video & keyboard support for the NeXT
from Matt DeBergalis
 1.2 24-Mar-1999  dbj Applied patches from Matt Debergalis <deberg@mit.edu>.
These patches include:
Added framebuffer mapping for color framebuffer to support color wscons
which is coming soon.
Renamed wskbdmap_mfii[ch] to wskbdmap_next[ch]
Changed video to be white on black instead of black on white.
Now handles and discards mouse interrupts.
Video and keyboard is now working on mono machines.
 1.1 28-Jan-1999  dbj wscons based console video & keyboard support for the NeXT
from Matt DeBergalis
 1.6 04-Feb-2023  tsutsui Remove trailing spaces and TABs.
 1.5 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.4 11-Dec-2005  christos branches: 1.4.74; 1.4.76; 1.4.78;
merge ktrace-lwp.
 1.3 15-Jul-2003  lukem __KERNEL_RCSID()
 1.2 26-Mar-1999  dbj branches: 1.2.42;
add KS_bar and KS_backslash to default us keymap.
 1.1 24-Mar-1999  dbj Applied patches from Matt Debergalis <deberg@mit.edu>.
These patches include:
Added framebuffer mapping for color framebuffer to support color wscons
which is coming soon.
Renamed wskbdmap_mfii[ch] to wskbdmap_next[ch]
Changed video to be white on black instead of black on white.
Now handles and discards mouse interrupts.
Video and keyboard is now working on mono machines.
 1.2.42.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.42.2 18-Sep-2004  skrll Sync with HEAD.
 1.2.42.1 03-Aug-2004  skrll Sync with HEAD
 1.4.78.1 16-May-2008  yamt sync with head.
 1.4.76.1 18-May-2008  yamt sync with head.
 1.4.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.2 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.1 24-Mar-1999  dbj branches: 1.1.144; 1.1.146; 1.1.148;
Applied patches from Matt Debergalis <deberg@mit.edu>.
These patches include:
Added framebuffer mapping for color framebuffer to support color wscons
which is coming soon.
Renamed wskbdmap_mfii[ch] to wskbdmap_next[ch]
Changed video to be white on black instead of black on white.
Now handles and discards mouse interrupts.
Video and keyboard is now working on mono machines.
 1.1.148.1 16-May-2008  yamt sync with head.
 1.1.146.1 18-May-2008  yamt sync with head.
 1.1.144.1 02-Jun-2008  mjf Sync with HEAD.
 1.38 04-Feb-2023  tsutsui Remove trailing spaces and TABs.
 1.37 11-Sep-2021  andvar Add missing double p and d for stopped and overriden accordingly.
Fix few more typos along the way, mainly in copy-pasted comments.
 1.36 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.35 24-Apr-2021  thorpej branches: 1.35.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.34 01-May-2017  martin branches: 1.34.24;
PR port-next68k/52205 from Miod Vallat: cosmetic change to print the
physical address when attaching zs devices.
For the real work, zs_get_chan_addr() will still use the virtual address.
 1.33 13-Jun-2008  cegger branches: 1.33.40; 1.33.60; 1.33.74;
use device_lookup_private to get softc
 1.32 28-Apr-2008  martin branches: 1.32.2; 1.32.4;
Remove clause 3 and 4 from TNF licenses
 1.31 29-Mar-2008  tsutsui branches: 1.31.2; 1.31.4;
Split softc and device_t for zsc(4) and its children.

XXX we should restructure MI APIs and make it really machine independent.
 1.30 28-Nov-2007  ad branches: 1.30.14;
Use the softint API.
 1.29 09-Nov-2007  ad Call zs_lock_init() to set up the chanstate's lock.
 1.28 08-Mar-2007  tsutsui branches: 1.28.2; 1.28.18; 1.28.20; 1.28.24; 1.28.26;
MI softintr(9)'fy. Tested by bouyer@.
See also:
http://mail-index.netbsd.org/port-next68k/2007/03/06/0000.html
 1.27 11-Dec-2005  christos branches: 1.27.26;
merge ktrace-lwp.
 1.26 10-Jan-2005  chs branches: 1.26.10;
use a global variable to ensure that only one instance is configured
rather than requiring that its unit number be zero.
simplify by not pretending that nexts can have more than 1 zsc.
 1.25 10-Jan-2005  chs really remove register.
 1.24 10-Jan-2005  chs de-__P, remove register, ansify, other cleanup.
 1.23 15-Jul-2003  lukem __KERNEL_RCSID()
 1.22 28-Jan-2003  pk branches: 1.22.2;
Provide locking required by the interrupt handlers running at IPL_SERIAL.
 1.21 01-Jan-2003  thorpej Use aprint_normal() for cfprint routines.
 1.20 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.19 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.18 27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.17 11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.16 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.15 30-May-2001  lukem branches: 1.15.2; 1.15.4; 1.15.8; 1.15.16;
add missing #include "opt_kgdb.h"
 1.14 13-May-2001  chs turn on printf format-string checking and -Werror. fix all warnings.
 1.13 05-Apr-2001  dbj initialize zsaddr to intio address space in zs_attach
addresses pr 6770
in the future, zs should be upgraded to use NEXT68k_INTIO_BUS_SPACE
instead of using IIOV directly.
 1.12 06-Mar-2000  deberg branches: 1.12.6;
we don't have callrom(), so stop pretending otherwise. fixes PR
next68k/7257.
 1.11 03-Aug-1999  dbj branches: 1.11.2;
defopt SERCONSOLE
 1.10 27-Mar-1999  dbj added kgdb support.
 1.9 27-Mar-1999  wrstuden Add pps support. Only enable pps if CLOCAL & !MDMBUF.
 1.8 26-Mar-1999  dbj Added support for using wscons as console.
Enabled wscons as default console.
Use option SERCONSOLE now to use serial console instead now.
 1.7 11-Feb-1999  mycroft Minor cleanup.
Make the initializer for BAUDLO depend on PCLK directly; it was incorrect on
some ports where PCLK is not 4.9152MHz.
XXX Is the default value actually used?
 1.6 03-Feb-1999  mycroft Don't set DCD_IE in the frontends. KGDB doesn't even use DCD, and the tty
frontends get it from zsparam() anyway.
 1.5 02-Jan-1999  dbj applied patch from pr port-next68k/6704: next68k zs driver formatting error
zs driver needs to print a newline.
 1.4 10-Nov-1998  dbj Sync'ed more files and routines with mvme port in prepartion for UVM.
Now use generic m68k cachops everywhere rather than defining them in locore.s
 1.3 11-Jul-1998  dbj Reserved 8k at top of memory for ROM. This fixes warp9c boot problems.
changed ethernet panic to a warning when out of DMA buffers. This allows
resuming if you sit in ddb too long.
 1.2 04-Jul-1998  jonathan defopt DDB.
 1.1 09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1 09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.11.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.11.2.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.12.6.2 21-Jun-2001  nathanw Catch up to -current.
 1.12.6.1 09-Apr-2001  nathanw Catch up with -current.
 1.15.16.1 19-May-2002  gehenna Replace the access to devsw table and the hard-coded majors with devsw API.
 1.15.8.4 03-Jan-2003  thorpej Sync with HEAD.
 1.15.8.3 18-Oct-2002  nathanw Catch up to -current.
 1.15.8.2 17-Sep-2002  nathanw Catch up to -current.
 1.15.8.1 30-May-2001  nathanw file zs.c was added on branch nathanw_sa on 2002-09-17 21:16:31 +0000
 1.15.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.15.2.1 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.22.2.4 17-Jan-2005  skrll Sync with HEAD.
 1.22.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.22.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.22.2.1 03-Aug-2004  skrll Sync with HEAD
 1.26.10.3 07-Dec-2007  yamt sync with head
 1.26.10.2 15-Nov-2007  yamt sync with head.
 1.26.10.1 03-Sep-2007  yamt sync with head.
 1.27.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.28.26.2 08-Dec-2007  mjf Sync with HEAD.
 1.28.26.1 19-Nov-2007  mjf Sync with HEAD.
 1.28.24.1 13-Nov-2007  bouyer Sync with HEAD
 1.28.20.1 09-Jan-2008  matt sync with HEAD
 1.28.18.2 03-Dec-2007  joerg Sync with HEAD.
 1.28.18.1 11-Nov-2007  joerg Sync with HEAD.
 1.28.2.1 03-Dec-2007  ad Sync with HEAD.
 1.30.14.3 29-Jun-2008  mjf Sync with HEAD.
 1.30.14.2 02-Jun-2008  mjf Sync with HEAD.
 1.30.14.1 03-Apr-2008  mjf Sync with HEAD.
 1.31.4.2 04-May-2009  yamt sync with head.
 1.31.4.1 16-May-2008  yamt sync with head.
 1.31.2.2 17-Jun-2008  yamt sync with head.
 1.31.2.1 18-May-2008  yamt sync with head.
 1.32.4.1 18-Jun-2008  simonb Sync with head.
 1.32.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.33.74.1 02-May-2017  pgoyette Sync with HEAD - tag prg-localcount2-base1
 1.33.60.1 28-Aug-2017  skrll Sync with HEAD
 1.33.40.1 03-Dec-2017  jdolecek update from HEAD
 1.34.24.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.35.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.4 11-Dec-2005  christos merge ktrace-lwp.
 1.3 10-Jan-2005  chs use a global variable to ensure that only one instance is configured
rather than requiring that its unit number be zero.
simplify by not pretending that nexts can have more than 1 zsc.
 1.2 10-Jan-2005  chs de-__P, remove register, ansify.
 1.1 27-Mar-1999  dbj branches: 1.1.42;
added kgdb support.
 1.1.42.1 17-Jan-2005  skrll Sync with HEAD.
 1.13 20-Oct-2023  andvar make zs_kgdb.c build for next68k.

kgdb_dev expects llx/d format specifier.
change serial number print message to the same as sgimips.
remove rr0 definition in zs_kgdb_txint, it is unused.

Fixes also KGDB enabled build for next68k.
Similar or partial changes likely required for few other ports.
 1.12 28-Apr-2008  martin branches: 1.12.68; 1.12.78;
Remove clause 3 and 4 from TNF licenses
 1.11 29-Mar-2008  tsutsui branches: 1.11.2; 1.11.4;
Split softc and device_t for zsc(4) and its children.

XXX we should restructure MI APIs and make it really machine independent.
 1.10 17-Oct-2007  garbled branches: 1.10.16;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.9 23-Jun-2007  hauke branches: 1.9.10;
Fix a warning from gcc 4 about stripping the volatile qualifier by a cast
by doing the proper __UNVOLATILE() dance.
 1.8 11-Dec-2005  christos branches: 1.8.30; 1.8.32; 1.8.38;
merge ktrace-lwp.
 1.7 19-Jan-2005  chs branches: 1.7.8;
de-__P, remove register, ansify.
 1.6 10-Jan-2005  chs branches: 1.6.2;
use a global variable to ensure that only one instance is configured
rather than requiring that its unit number be zero.
simplify by not pretending that nexts can have more than 1 zsc.
 1.5 10-Jan-2005  chs de-__P, remove register, ansify.
 1.4 15-Jul-2003  lukem __KERNEL_RCSID()
 1.3 06-Sep-2002  gehenna branches: 1.3.6;
Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.2 17-May-2002  jdolecek make kgdb buildable again, g/c next68k/stub.c
Changes by Christian Limpach in kern/16794, with some minor adjustment
by me.
 1.1 27-Mar-1999  dbj branches: 1.1.22; 1.1.26; 1.1.34;
added kgdb support.
 1.1.34.2 30-May-2002  gehenna Catch up with -current.
 1.1.34.1 19-May-2002  gehenna Replace the access to devsw table and the hard-coded majors with devsw API.
 1.1.26.2 17-Sep-2002  nathanw Catch up to -current.
 1.1.26.1 20-Jun-2002  nathanw Catch up to -current.
 1.1.22.2 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.1.22.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.3.6.5 24-Jan-2005  skrll Sync with HEAD.
 1.3.6.4 17-Jan-2005  skrll Sync with HEAD.
 1.3.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.3.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.3.6.1 03-Aug-2004  skrll Sync with HEAD
 1.6.2.1 29-Apr-2005  kent sync with -current
 1.7.8.1 03-Sep-2007  yamt sync with head.
 1.8.38.1 26-Jun-2007  garbled Sync with HEAD.
 1.8.32.1 11-Jul-2007  mjf Sync with head.
 1.8.30.1 15-Jul-2007  ad Sync with head.
 1.9.10.1 06-Nov-2007  matt sync with HEAD
 1.10.16.2 02-Jun-2008  mjf Sync with HEAD.
 1.10.16.1 03-Apr-2008  mjf Sync with HEAD.
 1.11.4.1 16-May-2008  yamt sync with head.
 1.11.2.1 18-May-2008  yamt sync with head.
 1.12.78.1 27-Apr-2017  pgoyette Restore all work from the former pgoyette-localcount branch (which is
now abandoned doe to cvs merge botch).

The branch now builds, and installs via anita. There are still some
problems (cgd is non-functional and all atf tests time-out) but they
will get resolved soon.
 1.12.68.1 20-Jul-2016  pgoyette Adapt the machine/arch dependent code to the new {b,c}devsw reference
counting.

XXX Most of these will require testing by someone other than myself, as
I have a limited selection of hardware!

RSS XML Feed