Home | History | Annotate | only in /src/sys/arch/macppc
History log of /src/sys/arch/macppc
RevisionDateAuthorComments
 1.9 07-Aug-2009  snj Update path to the atheros HAL.
 1.8 25-Oct-2008  apb branches: 1.8.4; 1.8.12;
Use ${TOOL_SED} instead if plain sed in Makefiles.
 1.7 31-Dec-2007  dyoung branches: 1.7.6; 1.7.10; 1.7.16;
Fix 'tags' target.
 1.6 11-Dec-2005  christos branches: 1.6.50; 1.6.56; 1.6.64;
merge ktrace-lwp.
 1.5 02-Mar-2005  dyoung branches: 1.5.4;
Write tab-separated records to 'tags' file. A popular vi-alike,
vim, expects for the columns in tags files to be tab-separated,
but these makefiles created space-separated records for the assembly
sources.
 1.4 13-Mar-2004  dyoung branches: 1.4.8; 1.4.10;
Add a 'tags' target to macppc.
 1.3 06-Jan-2003  lukem branches: 1.3.2;
Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.
 1.2 12-Jun-1998  cgd branches: 1.2.32;
Rework the way kernel include files are installed. In the new method,
as with user-land programs, include files are installed by each directory
in the tree that has includes to install. (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.) The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change. Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.32.1 07-Jan-2003  thorpej Sync with HEAD.
 1.3.2.4 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.3.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.3.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.3.2.1 03-Aug-2004  skrll Sync with HEAD
 1.4.10.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.4.8.1 29-Apr-2005  kent sync with -current
 1.5.4.1 21-Jan-2008  yamt sync with head
 1.6.64.1 02-Jan-2008  bouyer Sync with HEAD
 1.6.56.1 18-Feb-2008  mjf Sync with HEAD.
 1.6.50.1 09-Jan-2008  matt sync with HEAD
 1.7.16.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.7.10.2 19-Aug-2009  yamt sync with head.
 1.7.10.1 04-May-2009  yamt sync with head.
 1.7.6.1 17-Jan-2009  mjf Sync with HEAD.
 1.8.12.1 21-Apr-2010  matt sync to netbsd-5
 1.8.4.1 14-Aug-2009  snj Pull up following revision(s) (requested by sborrill in ticket #909):
sys/arch/macppc/Makefile: revision 1.9
Update path to the atheros HAL.
 1.2 06-Jan-2003  lukem Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.
 1.1 15-May-1998  tsubai branches: 1.1.32;
Initial import of macppc port.
 1.1.32.1 07-Jan-2003  thorpej Sync with HEAD.
 1.1 06-Jan-2003  lukem branches: 1.1.2;
Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.
 1.1.2.2 07-Jan-2003  thorpej Sync with HEAD.
 1.1.2.1 06-Jan-2003  thorpej file Makefile was added on branch nathanw_sa on 2003-01-07 21:12:01 +0000
 1.386 12-Aug-2025  macallan add drivebay driver
 1.385 28-Jul-2025  macallan - use xterm font instead of QVSS for more complete language support
- add siisata
- add lmenv at iic, found on Xserve G4
 1.384 20-Jul-2025  martin Enable PAX_MPROTECT
 1.383 20-Jul-2025  martin Enable PAX_ASLR
 1.382 16-Feb-2025  jakllsch Add and enable WSDISPLAY_SCROLLSUPPORT in non-INSTALLish macppc kernels

Also, fix the whitespace of this line in the GENERIC_601 kernel where it
was already enabled.
 1.381 16-Feb-2025  jakllsch Add and enable WSDISPLAY_CUSTOM_OUTPUT in macppc non-INSTALL kernels.

Indirectly addresses PR 59079 by allowing userland control of default
colors of wsemul wsdisplays.
 1.380 02-Apr-2024  charlotte branches: 1.380.2;
Mention DKWEDGE_METHOD_TOS in several kernel config files
 1.379 29-Jan-2024  christos PR/57889: Ricardo Branco: ext2fs does not have user immutable and append
file flags, only system ones. Restrict those to the superuser. Before
the behavior was controlled by EXT2FS_SYSTEM_FLAGS. Make that behavior the
default.
 1.378 17-Jan-2024  uwe macppc: enable FFS_EI in GENERIC

I'd say it should be enabled for anything with USB.

ok macallan
 1.377 09-Feb-2023  abs Adjust _all_ cinclude of *.local files

- Ensure always at end
- Use tab rather than spaces
- Add consistent comment
"Pull in optional local configuration - always at end"

The only functional change is that a local file which tried to
override an existing setting (eg with "no foo") would have failed
in some cases before, but now will work
 1.376 26-Jan-2023  macallan do some cleanup
the gm driver has been commented out for 20 years, time to remove it
while there, remove ofb and the old ADB code which have been commented out
since 2007
 1.375 07-Aug-2022  simonb branches: 1.375.4;
UFS/LFS dirhash:
- Enable UFS_DIRHASH if the architecture or kernel model specific config
file can use 128MB of RAM or more.
- Remove experimental tag from UFS_DIRHASH; it's been with RUMP kernel
and by a number of NetBSD developers for years.
- Add LFS_DIRHASH if LFS was enabled.
- Be somewhat consistent with FS options order.
 1.374 16-Feb-2022  riastradh macppc: Support *macppc* GENERIC.local, not evbarm GENERIC64.local.

Managed to fumble with a copypasta error of local commits, and
committed the one that didn't work instead of the one that did.
 1.373 16-Feb-2022  riastradh macppc: Support GENERIC.local.
 1.372 21-Jan-2021  nia add a commented out compat_ossaudio wherever there's compat_linux

requested by mrg
 1.371 27-Sep-2020  roy branches: 1.371.2;
vether: Add to kernel configurations

It's only enabled if the kernel enabled bridge AND tap.
Otherwise it's commented out.
 1.370 08-Aug-2020  macallan add commented out entries for onewire at snapper, and document what they're for
 1.369 01-Aug-2020  maxv Remove references to BRIDGE_IPF, it is now compiled in by default.
 1.368 26-Apr-2020  pgoyette Re-enable crypto and swcrypto - "generic softints" have been available
for quite some time, so no need to disable.

This is a work-around for PR kern/55155. The root problem, failure to
load modules due to missing kernel symbol table, still exists.
 1.367 24-Apr-2020  macallan add sudden motion sensor 'driver'.
 1.366 28-Mar-2020  isaki branches: 1.366.2;
Reduce default AUDIO_BLK_MS from 40msec to 10msec on all platform except m68k
(m68k uses 40msec default as before). And remove the option from GENERIC.
- It's not good idea to set such parameter in individual GENERICs.
- 4msec is (probably no problem for most modern real hardware but)
too aggressive to be default.
- 10msec is too severe for antique machines but it's hard to draw a line.
 1.365 16-Mar-2020  nia Lower blk_ms on more ports that are even slightly likely to play video
 1.364 27-Jan-2020  macallan add & enable uatp driver, now that it works on ppc-era hardware
leave pbms in but commented out for now
 1.363 25-Jan-2020  thorpej Retire "le* at pci?" from the shipped kernel configs:
- If the config had both an le@pci and a pcn, simply remove le@pci
(pcn would match at a higher priority anyway).
- If the config had le@pci enabled, but no pcn, change le@pci to pcn.
- If the config had le@pci commented out, but no pcn, change le@pci
to pcn and leave it commented out.

The pcn driver supports more chips than le@pci and does DMA directly
to/from mbufs rather than memory copies.
 1.362 22-Jan-2020  macallan enable CPU speed / voltage control via GPIOs and/or DFS
should work on most *Book G4
( notable exception - TiBooks. They use a completely different mechanism )
 1.361 20-Jan-2020  thorpej Remove FDDI support.
 1.360 10-Jan-2020  macallan add lmu driver
 1.359 08-Jan-2020  macallan add lmtemp, found in some late powerbooks
 1.358 01-Nov-2019  macallan branches: 1.358.2;
add psoc driver
 1.357 16-Sep-2019  macallan add ktm at adb driver
 1.356 27-Apr-2019  sevan Use usbdevices.config & bluetooth.config to reduce duplication.
 1.355 27-Apr-2019  sevan Use filesystems.config to reduce duplication
 1.354 26-Apr-2019  sevan Enable BUFQ_PRIOCSCAN, CARP, Veriexec by default in GENERIC kernel configs.
On ports without a GENERIC kernel config enable in individul files, e.g evbmips.
Omit on:
atari, dreamcast, emips, epoc32, evbppc/VIRTEX*, ia64, luna68x, mvme68k,
mvmeppc, playstation2, riscv, sun2, sun3, x68k, zaurus due to resource
constraints or port infancy.
 1.353 10-Apr-2019  sevan Include CARP support by default
 1.352 09-Apr-2019  sevan Add a commented out entry for CARP
 1.351 06-Feb-2019  rin Add ure(4) to kernel config files. Also add PHY drivers where necessary.
 1.350 12-Dec-2018  maxv Remove references to "lmc" in the kernel configurations.
 1.349 25-Aug-2018  rin Add (commented out) mue(4) to where appropriate.
Also add MII/PHY drivers for USB NICs if missing.
 1.348 01-Aug-2018  maxv Unreference IPF/PF from all the config files, and enable NPF instead when
wanted. This also fixes some inconsistencies I saw in several files (eg
IPF options while IPF was not compiled, IPF+PF enabled by default, etc).
 1.347 02-Jun-2018  sevan branches: 1.347.2;
Enabled IPsec & ipsecif(4) support by default.

ok macallan
 1.346 16-Mar-2018  sevan Forgot the pseudo devices in the previous commit.
 1.345 16-Mar-2018  sevan Add bluetooth support by default. most hardware G4 onwards (e.g aluminium
PowerBooks) have Bluetooth installed as standard.
 1.344 26-Feb-2018  sevan branches: 1.344.2;
Remove support for macofcons(4), it's not actually possible to build a kernel
with it enabled - See PR port-macppc/53004 and it may have further problems even
so.
From <macallan>:
"There is some early console code that uses OF output but it causes problems
when we get close to MMU setup - I think it can go, it hasn't been enabled in
any config in at least a decade as far as I know."
 1.343 24-Feb-2018  sevan Remove legacy comment regarding the instability of awacs(4)
Enable awacs(4), skipping MAMBO config as it is for an emulator.

From <macallan>
"that warning about the awacs driver making some
machines lock up can probably go. It's ancient and I've never seen it
actually happen, I have several oldish macs with different awacs
variants and it's enabled in all my configs. In fact it predates my
macppc interrupt cleanup ( I think I did that in 2005 or so ) and I
strongly suspect that fixed the problem.
( the ancient code didn't properly distinguish between edge and level
triggered interrupts on grand central / heathrow type hardware, IIRC it
always just checked the level register(s) which resulted in edge
triggered interrupts being missed or misdetected. Most of the mac-io
goop from that time uses edge triggered interrupts, which includes
awacs )

If this actually happens to anyone I'd like to know about it"
 1.342 23-Feb-2018  sevan Enable BUFQ_PRIOCSCAN by default for NetBSD/macppc.
Drop references to NEW_BUFQ_STRATEGY and replace with currently available
options BUFQ_READPRIO and BUFQ_PRIOCSCAN.

ok <macallan>
 1.341 23-Feb-2018  sevan Remove OFB_ENABLE_CACHE
from <macallan>
"it is outdated, genfb and friends don't need or use it, and it makes no sense
on accelerated drivers either. It tries to BAT-map the framebuffer cacheable,
which works on most macs but makes a few models lock up. Genfb doesn't have that
problem and is faster too."
 1.340 17-Feb-2018  sevan With the introduction of ddb.dumpstack which is enabled by default, we no longer
need to explicitly set DDB_COMMANDONENTER to run a trace.
 1.339 23-Jan-2018  sevan Alternate buffer queue strategies no longer considered experimental, update
description.

Discussed on tech-kern
http://mail-index.netbsd.org/tech-kern/2018/01/21/msg023002.html
 1.338 17-Jan-2018  sevan Enable veriexec(4) support by default on the macppc port and update the manual to mention it.

Closes PR port-powerpc/52908
 1.337 27-Dec-2017  sevan Without RADEONFB_ALWAYS_ACCEL_PUTCHAR, there are display issues on the PowerBook5,2 (G4 FW-800)
Radeon 9600, where console is garbled.
Thanks to <macallan> for the pointer.
Closes PR port-macppc/52712
 1.336 22-Sep-2017  macallan all i2c controllers support direct config now, so get rid of hard wired
i2c buses and addresses
 1.335 22-Sep-2017  macallan move i2c devices to iic, add valkyriefb and videopll
 1.334 14-Sep-2017  mrg clean up COMPAT_* options for native netbsd code:
- new series of files that are useful for saying "i want everything
since netbsd 1.4", etc.
- use the fact COMPAT_* options have future dependancies to remove
many redundant options.

removes about 3000 lines total across kernel configuration files.
tested about 30 random kernels in the changed list.
 1.333 13-Sep-2017  sevan Remove support for VERIFIED_EXEC_FP_RMD160, VERIFIED_EXEC_FP_SHA1, and VERIFIED_EXEC_FP_MD5 options.
These algorithms are either broken or on their way to being broken.

Discussed on tech-security
http://mail-index.netbsd.org/tech-security/2017/08/21/msg000936.html

ok riastradh
 1.332 01-Sep-2017  macallan add iic at pmu and admtemp
 1.331 11-Aug-2017  macallan add wsfont now that it's actually usable on at least some drivers
 1.330 29-Jul-2017  maxv Remove TCP_COMPAT_42 from the config files. Pass 3.
 1.329 24-May-2017  christos branches: 1.329.2;
rename u3ginit driver to umodeswitch
 1.328 26-Feb-2017  rin Add DKWEDGE_METHOD_RDB option, which is enabled for x86, commented out for
other platforms by default.
 1.327 02-Jan-2017  sevan branches: 1.327.2;
Enable axen, cdce, run, upgt, urtw, urtwn, uchcom, uslsa, u3ginit, u3g, ugensa in the GENERIC kernel.
Adjust some comments to match those of sys/arch/i386/conf/GENERIC
 1.326 13-Dec-2016  christos wildcard speaker attachments, now that we can handle many of them.
 1.325 10-Dec-2016  christos remove VAUDIOSPEAKER for now, will be done differently.
 1.324 08-Dec-2016  nat Add a synthesized pc beeper and keyboard bell for platforms with an audio
device.
 1.323 20-Nov-2016  macallan add driver for Permedia 3 based graphics devices
from Naruaki Etomi, via PR 49518
 1.322 28-May-2016  sevan branches: 1.322.2;
As instructed by Martin@, disable DKWEDGE_METHOD_APPLE for now as it causes a
fresh install in a dual boot scenario to fail. This is because fstab will be
referencing wd(4) and the kernel expecting dk(4).

Closes PR port-macppc/51160
 1.321 19-Mar-2016  gdt Disable uscanner in all kernel configs

As discussed on current-users@, SANE uses ugen via libusb and not
uscanner, so users are not well served by having uscanner. Consensus
is that addressing how to adjust permissions for scanners should not
block restoring basic functionionality.

(Compile-tested only, but there are multiple reports of this being the
right approach.)
 1.320 16-Nov-2014  manu branches: 1.320.2;
Remove unused extended attributes kernel options

As Masao Uebayashi pointed to me, UFS_EXTATTR_AUTOSTART, LFS_EXTATTR_AUTOSTART
and UFS_EXTATTR_AUTOCREATE are not used anywhere in the code. Remove them
as they have been obsolete for a long time:
UFS_EXTATTR_AUTOSTART was replaced by mount -o extattr
LFS_EXTATTR_AUTOSTART was created to match obsolete UFS_EXTATTR_AUTOSTART
UFS_EXTATTR_AUTOCREATE was replaced by sysctl vfs.ffs.extattr_autocreate
 1.319 12-Nov-2014  manu Support for UFS1 extended attributes in GENERIC and GENERIC-like kernels

This change just brings UFS1 extended attribute *support* in the kernel,
extended attributes are not enabled unless three conditions are met:
1) filesystem is UFS1 (newfs -O1)
2) .attribute/system and .attribute/user directories are created at fs root
3) filesystem is mounted with -o extattr

Some GENERIC kernels are obviously memory constrained, the extended
attributes options were not enabled for them, but just added commented out.
(kernel were considered memory constrained if QUOTA option was disabled)
 1.318 21-Oct-2014  macallan RADEONFB_MMAP_BARS is no more
 1.317 19-Sep-2014  christos Disable BSDLABEL and MBR DKWEDGE methods again since sysinst does not work
with wedges.
 1.316 24-Aug-2014  jnemeth Create an "options MODULAR_DEFAULT_AUTOLOAD" config option and add
it to all kernel configs that contain "options MODULAR". This
option turns on module autoloading by default (which is the current
default). This allows people who don't want module autoloading on
by default to disable it by simply removing/commentting this line.
 1.315 23-Aug-2014  dholland Systematize (and in many cases, fix) the comments on options COMPAT_NN.

There are quite a few configs that are missing some COMPAT_NN options
in ways that don't make sense; this should probably get cleaned up
too, but for the time being I've not added or removed anything.
 1.314 18-Aug-2014  christos - Enable Wedge support for MBR/BSDLABEL where it was commented out.
- Add apple partition support where it was missing
- Add comments where missing
 1.313 16-Aug-2014  apb Add "options COMPAT_70" to all kernel configuration files that
already had "options COMPAT_60".
 1.312 23-Oct-2013  macallan branches: 1.312.4;
add gffb, tweak comments
 1.311 30-Jun-2013  rmind G/C PFIL_HOOKS from the kernel configs.
 1.310 05-Jun-2013  christos branches: 1.310.2;
catch the escapees of the IPSEC_NAT_T purge.
 1.309 27-Apr-2013  christos the bogus number police
 1.308 27-Apr-2013  christos remove confusing numeric locators where they are unused.
 1.307 02-Mar-2013  christos Under FAST_IPSEC, IPSEC_ESP is mandatory; GC it.
 1.306 01-Mar-2013  joerg Retire OSI network stack. OK core@
 1.305 20-Feb-2013  macallan add WSDISPLAY_COMPAT_PCVT
 1.304 17-Oct-2012  apb Add "options COMPAT_60" to all kernel configuration files
that already had "options COMPAT_50".
 1.303 01-Sep-2012  jakllsch branches: 1.303.2;
Rename RT2500USB driver to ural(4) as it was originally in OpenBSD,
as ural(4) and ral(4) do not actually share any code.

Enable ural(4) in hpcarm WZERO3 kernel too, as it will now build.

Fixes PR#43520.
 1.302 17-Aug-2012  abs Update all kernel configs mentioning WSEMUL_* but not already including
WSDISPLAY_COMPAT_USL using the following rules:
- If WSEMUL_ is commented out, add commented out out WSDISPLAY_COMPAT_USL
- If INSTALL or obviously memory constrained, add WSDISPLAY_DEFAULTSCREENS=1
and commented out WSDISPLAY_COMPAT_USL
- Otherwise add WSDISPLAY_COMPAT_USL

Some of the INSTALL configs for larger memory machines are probably suitable
for adding WSDISPLAY_COMPAT_USL.

Now wsconscfg(8) should be able to switch VTs when expected.

Implemented after no objection from tech-kern to the following:

On 5 June 2012 09:47, David Brownlee <abs@absd.org> wrote:
> wsconscfg(8) requires WSDISPLAY_COMPAT_USL in order to switch virtual
> terminals.
>
> Except when in an exceptionally memory or space constrained
> environment (INSTALL being the obvious case), is there any reason why
> all GENERIC and GENERIC-like kernels which have wscons enabled
> shouldn't also have WSDISPLAY_COMPAT_USL?
 1.301 19-Jul-2012  rkujawa Add tdvfb (Voodoo2 driver) to GENERIC.
 1.300 17-Mar-2012  riz Add autodiscover wedge support to macppc GENERIC, to allow use of
GPT-partitioned disks in a similar way to amd64/i386.
 1.299 17-Mar-2012  riz Add drvctl to macppc GENERIC.
 1.298 10-Mar-2012  joerg P1003_1B_SEMAPHORE is no longer optional.
 1.297 23-Jan-2012  hauke branches: 1.297.2; 1.297.4;
In the light of PR kern/29702, add swwdog(4) pseudo device.
 1.296 11-Jan-2012  macallan include a small font
 1.295 18-Dec-2011  dholland WABPL is no longer considered experimental (has not been for some time)
so update its comment in config files.
 1.294 22-Nov-2011  tls branches: 1.294.2;

The rnd pseudo-device is not really optional, because it is in the same
source file as the entropy-pool code itself. Move it to std. This
will be cleaned up more when I split the sources up as they should be.

This fixes build breaks on several ports. Thanks to Havard Eidnes for
pointing them out.
 1.293 30-Jul-2011  jakllsch branches: 1.293.2;
Add uplcom(4) and uftdi(4).
 1.292 30-Jun-2011  wiz dependant -> dependent
 1.291 26-Apr-2011  joerg Remove Darwin, MACH and Mach-O support.
 1.290 15-Mar-2011  riz Add otus(4), Atheros AR9100U usb wireless driver.
 1.289 06-Mar-2011  bouyer merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.288 03-Jan-2011  tsutsui branches: 1.288.2; 1.288.4;
Xref module(7) in comments.
 1.287 24-Dec-2010  phx Establishing an UMTS connection with ubsa(4) works fine with my Pismo,
so add it to our config.
 1.286 10-Dec-2010  phx Add uthum(4), which I just verified working.
 1.285 10-Dec-2010  macallan add rum* at uhub? since it was confirmed working a while ago
 1.284 10-Dec-2010  macallan fix some typos, new ADB is no longer experimental
while there add some (S)ATA drivers from i386 which might be found on PCI cards
 1.283 23-Nov-2010  hannken Remove unused count from pseudo-device md.
 1.282 08-May-2010  mrg enable IPFILTER_COMPAT in all kernels that have ipfilter already.
canonicalise several of the ipf option segments in various files
(this mostly means adding commented out IPFILTER_DEFAULT_BLOCK,
or adding commented or uncommented IPFILTER_LOG or IPFILTER_LOOKUP
option statements.)

i built about 20 of these kernels to check, but not all of them.
 1.281 29-Apr-2010  chs add mpt.
 1.280 16-Apr-2010  pooka Remove unused count (invariably "4") from pseudo-device fss.
 1.279 07-Mar-2010  plunky branches: 1.279.2;
add uhso(4) device where appropriate
- follow the lead of other USB driver declarations wrt commented out
- (cross-)build tested all these kernels
 1.278 18-Jan-2010  jmmv branches: 1.278.2;
Enable 'options MODULAR' in macppc and shark GENERIC kernels now that the
modules work.
 1.277 05-Dec-2009  pooka Remove the portalfs kernel file system driver. Replace mount_portal(8)
with a version based on puffs. User functionality remains the same.
 1.276 24-Jan-2009  mrg add COMPAT_50 to all the configs with COMPAT_40.
 1.275 09-Jan-2009  macallan add bwi driver for Airport Extreme
This driver didn't get much testing so I'd consider it experimental for now
 1.274 07-Dec-2008  tsutsui Remove duplicated options FONT_GALLANT12x22.
 1.273 24-Nov-2008  ad Remove softdep, pass 1. We are focused on improving journalling.

Proposed on tech-kern@.
 1.272 12-Nov-2008  ad Remove LKMs and switch to the module framework, pass 1.

Proposed on tech-kern@.
 1.271 07-Oct-2008  pgoyette branches: 1.271.2; 1.271.4;
Move all platforms to new dbCool driver in preparation for removal of
chip-specific drivers
 1.270 26-Aug-2008  macallan add battery and smartbat at pmu
 1.269 26-Aug-2008  macallan throw out some obsolete PIC_ options, explain why ofb is disabled
 1.268 26-Aug-2008  macallan add spdmem(4)
 1.267 15-Aug-2008  tsutsui - remove duplicated and commented out nadb device entries
(with some tweaks on comments for them)
- enable sgsmix0 at iic0 for beige G3 machines

Suggested by macallan@ on port-macppc.
 1.266 10-Aug-2008  tls Add accept filters to GENERIC kernels where they exist.
 1.265 31-Jul-2008  simonb Add "options WAPBL" to standard GENERIC/INSTALL type configs.
 1.264 30-May-2008  tsutsui branches: 1.264.4;
Add options COMPAT_40 to files which have options COMPAT_30.
 1.263 31-Dec-2007  ad branches: 1.263.6; 1.263.8; 1.263.10; 1.263.12;
Remove systrace. Ok core@.
 1.262 07-Nov-2007  macallan branches: 1.262.6;
add r128fb at pci
 1.261 04-Nov-2007  xtraeme branches: 1.261.2;
Remove System V semaphores and share memory options to set the limits:
SEMMNI, SEMMNS, SEMUME and SHMMAXPGS.

They can be tweaked via sysctl now. Ports that were setting values on
them weren't touched, I only removed the ones that were commented out.
 1.260 17-Oct-2007  garbled 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.259 21-Aug-2007  kiyohara branches: 1.259.2; 1.259.4; 1.259.6;
Add slhci at pcmcia.
And reorder.
 1.258 11-Jun-2007  kiyohara branches: 1.258.4; 1.258.8;
zyd was known to not work on big endian systems.
 1.257 09-Jun-2007  kiyohara Add zyd(4).
 1.256 04-Jun-2007  martin Add pseudo-device agr to all GENERIC kernels where it might make sense
(commented out in some).
 1.255 14-Mar-2007  drochner branches: 1.255.6;
It doesn't make sense to specify "configuration" and "interface"
locators for uhub because a hub can't have sub-devices.
This might be sanity-checked eventually.
Same for ubt now after the change to device attachment.
 1.254 06-Mar-2007  dillo branches: 1.254.2; 1.254.4;
Complete rename of hfsp to hfs, requested by thorpej.
 1.253 05-Mar-2007  dillo Add file-system HFSP (commented out) to GENERIC kernels of ports
on which Mac OS runs.
 1.252 15-Feb-2007  macallan branches: 1.252.2;
add battery at pmu
 1.251 18-Jan-2007  macallan add commented out definitions for new ADB subsystem and G3 audio
 1.250 17-Jan-2007  macallan set FORCE_FUNCTION_KEYS since pretty much all halfway recent *Books need it
also disable COMPAT_LINUX for now, will re-enable it when it's actually useful
 1.249 12-Jan-2007  uwe Add options OFB_FAKE_VGA_FB (commented out).

XXX: Where's ofb(4)? (hi, macallan!)
 1.248 12-Jan-2007  uwe Replace long list of "audio* at foo?" attachments with single
audio* at audiobus?
 1.247 12-Jan-2007  uwe options<space><tab> police
 1.246 18-Nov-2006  tsutsui branches: 1.246.2; 1.246.4;
Add rgephy at mii for Realtek 8169S.
 1.245 17-Nov-2006  macallan add RADEONFB_MMAP_BARS
 1.244 11-Nov-2006  jmmv Enable TMPFS by default. OK'ed by core@.

I'm leaving those platforms with few users and those whose machines are
not very powerful untouched per uwe@'s suggestion. The port masters or
the real users of those ports are better suited to make the decision of
enabling it.
 1.243 11-Nov-2006  jmmv Remove tmpfs's experimental status. OK'ed by core@.
 1.242 08-Nov-2006  macallan enable accelerated wsdisplay drivers
 1.241 21-Oct-2006  bouyer Add support for the Intel 80003 Gigabit Ethernet controller (found e.g. in
newer server chipsets) to wm(4), from the FreeBSD em(4) driver.
While there, add a few other Intel Ethernet controller that should work as
is.
Properly update the RX error and TX collision counters.
Add ikphy(4), a driver for the Intel i82563 Kumeran 10/100/1000 Ethernet PHYs
 1.240 14-Oct-2006  tsutsui Add vge at pci and ciphy at mii. Working on my Apus2000.
 1.239 28-Sep-2006  dyoung Activate ath(4) in GENERIC, since it works under light testing on
my Powerbook G4.
 1.238 27-Sep-2006  manu - Document COMPAT_15 as doing nothing
- Add COMPAT_15 to all the kernel that had COMPAT_14, for the sake of coherency
- Remove the only occurences of #ifdef COMPAT_15 in the tree: for the ARM
ports, COMPAT_15 was always used in conjunction with EXEC_AOUT. Only EXEC_AOUT
matters here.

This address kern/18407
 1.237 26-Sep-2006  elad Oops! forgot "options" in previous commit. Pointed out by freza@, thanks!
 1.236 26-Sep-2006  elad Make PaX mprotect(2) restrictions more accessible.

On amd64, sparc64, i386, and alpha, they will be compiled in and disabled
by default. That means that to use them you either enable the "global"
knob with sysctl, or use paxctl(1) to enable it on a per-program basis.

On sparc and macppc just include a commentd out line in the GENERIC kernel.
 1.235 26-Aug-2006  christos branches: 1.235.2; 1.235.4;
PR/34283: Gene ENonymous: Add IPFILTER_LOOKUP to the default kernel options
Also remove CCITT,NS,NIP
 1.234 26-Aug-2006  tsutsui Remove obsolete #options VERIFIED_EXEC, found by grep(1).
 1.233 22-Aug-2006  riz Add sk(4) now that it works.
 1.232 14-Aug-2006  skrll s/adpater/adapter/

Prompted by PR/34195
 1.231 12-Aug-2006  christos Disable SYSTRACE by default on all kernels (discussed with core)
 1.230 26-Jul-2006  cube branches: 1.230.2;
Remove "atapibus* at umass?" and "scsibus* at umass?" when there is
already an attachment to the interface attribute (atapi and scsi).

Part of PR#34085, although it is the contrary to what the submitter
suggests (which shows that having both in a config file can be confusing).
 1.229 28-Mar-2006  pavel Add stf to all kernel configs which have INET6 and gif, except the INSTALL
ones and those for specific machines of developers. PR 32304.

OK'ed by rpaulo.

N.B. stf is a cloning device, so it still must be enabled by
"ifconfig stf0 create".
 1.228 16-Feb-2006  macallan branches: 1.228.2; 1.228.4; 1.228.6;
default to a black on white console, with green kernel output
 1.227 10-Feb-2006  macallan uncomment audio at snapper. doh.
noticed by tonio
 1.226 06-Feb-2006  wiz Fix typo in pbms description.
 1.225 05-Feb-2006  christos glue for powerbook mouse.
 1.224 05-Feb-2006  cube Remove 'count' argument for pseudo-devices that ignore it
(vnd, bpfilter, ppp, gif, gre, tun, sl, strip, faith, stf).
 1.223 04-Feb-2006  rpaulo bpfilter doesn't accept count anymore.
 1.222 02-Feb-2006  reinoud branches: 1.222.2;
Add commented out UDF file-system entry in all GENERIC configurations.
 1.221 31-Jan-2006  xtraeme branches: 1.221.2;
Add ral(4) at cardbus/pci/uhub and atu(4) at uhub.
 1.220 04-Jan-2006  xtraeme Enable rlphy(4).
 1.219 09-Dec-2005  elad branches: 1.219.2;
Add (commented out) Veriexec options and pseudo-device to GENERIC kernels,
and remove the i386 GENERIC_VERIEXEC config.
 1.218 07-Dec-2005  tsutsui Adjust comments for options FFS_NO_SNAPSHOT.

XXX: This option should be mentioned in options(4).
 1.217 25-Nov-2005  thorpej swcr -> swcrypto
 1.216 25-Nov-2005  thorpej "pseudo-device crypto" really refers to the /dev/crypto API to the
opencrypto framework, not the framework itself. Update the comment
accordingly.
 1.215 25-Nov-2005  thorpej Add "pseudo-device swcr" (commented out if "pseudo-device crypto" is also
commented out).
 1.214 03-Nov-2005  chs branches: 1.214.2;
turn off DEBUG and DIAGNOSTIC in GENERIC kernels so that they
are compatible with the LKMs that are part of the release.
 1.213 10-Sep-2005  jmmv Initial addition of tmpfs, an efficient memory file-system. This project
was developed as part of Google's Summer of Code 2005 program. This
change adds the kernel code, the mount_tmpfs utility, a regression test
suite and does all other related changes to integrate these.

The file-system is still *experimental*. Therefore, it is disabled by
default in all kernels. However, as typically done, a commented-out
entry is added in them to ease its setup.

Note that I haven't commited the required mountd(8) changes to be able
to export tmpfs file-systems because NFS support is still very unstable
and because, before enabling it, I'd like to do some other changes.

OK'ed by my project mentor, William Studenmund (wrstuden@).
 1.212 09-Sep-2005  drochner remove "dev" locators from cardbus device definitions, it doesn't
make sense technically and might be removed
 1.211 06-Sep-2005  dogcow after discussion with dyoung, add rtw* at cardbus
 1.210 19-Aug-2005  christos Enable ptyfs by default on the non-install and non small/tiny/ramdisk kernels
 1.209 19-Aug-2005  christos 64 bit inode changes.
 1.208 10-Aug-2005  macallan add uni_n, 2nd ki2c, iic, deq, hardware monitors.
 1.207 05-Aug-2005  skrll Add (commented out) ucycom to various kernel configs.
 1.206 31-Jul-2005  yamt revert "defflag VMSWAP" changes for now.
there seems to be far more people who don't want to edit
their kernel config files than i thought.
 1.205 30-Jul-2005  yamt add "options VMSWAP" to non INSTALL kernels.
 1.204 17-Jul-2005  hubertf Add support for reading cloop2 compressed filesystem image,
enable by putting VND_COMPRESSION into kernel config file.
Written by Cliff Wright, polished up slightly by me.
 1.203 11-Jul-2005  kiyohara ieee1394 import from FreeBSD.
 1.202 07-Jul-2005  tron Add (commented out) IPSEC_NAT_T option.
 1.201 25-Jun-2005  dyoung branches: 1.201.2;
Move the definitions in dev/pci/files.ath into dev/pci/files.pci.
Stop including dev/pci/files.ath in arch/i386/conf/files.i386,
since we get the same definitions by including dev/pci/files.pci,
now. Remove dev/pci/files.ath.

Add arch/macppc/conf/Makefile.macppc with directives for linking
the Atheros HAL for PowerPC.

In athhal-powerpc-be-eabi.opt_ah.h, #define AH_REGOPS_FUNC 1, since
otherwise the linker complains that the PowerPC HAL cannot link
with register-read/write subroutines.

Add ath(4) to the GENERIC macppc kernel configuration; comment it
out.
 1.200 25-Jun-2005  rpaulo Add file-system PTYFS (commented out) so that people know its existence.

Ok'ed by Christos Zoulas and Hubert Feyrer.
 1.199 09-Jun-2005  tsutsui - Rename options NEW_BUFQ_STRATEGY -> options BUFQ_READPRIO.
(still commented out)
- Add (also commented out) options BUFQ_PRIOCSCAN.

Suggested by perry and soda on tech-kern.
Please refer options(4) for details for these options.
 1.198 06-Jun-2005  tron RAIDframe works fine under NetBSD-macppc according to Ian Spray's testing.
Enable raid(4) by default therefore.
 1.197 31-May-2005  tron Remove attachment for the piixide(4) driver from all non-x86 kernel
configurations because Intel IDE disk controllers only exist as part
of Intel chipsets for x86 systems.
 1.196 31-May-2005  tron Remove unnecessary per-driver scsibus attachments and use
"scsibus* at scsi?" instead.
 1.195 15-Apr-2005  itohy Add ukyopon(4).
 1.194 18-Feb-2005  dsl branches: 1.194.4;
Invert FFS_SNAPSHOT to FFS_NO_SNAPSHOT
 1.193 11-Feb-2005  dsl Add 'option FFS_SNAPSHOT' to most of the config files.
Commented out for kernels that appear to hace space constraints.
 1.192 31-Jan-2005  hannken Add file system snapshots to kernel configs.

- Ffs internal snapshots get compiled in unconditionally.

- File system snapshot device fss(4) added to all kernel configs that
have a disk. Device is commented out on all non-GENERIC kernels.

Reviewed by: Jason Thorpe <thorpej@netbsd.org>
 1.191 28-Jan-2005  rumble Sprinkle options UFS_DIRHASH on GENERIC kernels. It's presently
commented out and labeled experimental pending further review and
testing.
 1.190 21-Jan-2005  matt branches: 1.190.2;
Add ochi & echi at cardbus
 1.189 20-Jan-2005  matt Add ehci
 1.188 17-Jan-2005  briggs Add option COMPAT_20. Pointed out by Chris Tribo in PR port-macppc/28988.
 1.187 17-Jan-2005  cube Add tap(4) support to a random^Wcarefully chosen set of kernel configs.
All those kernels have a line for both tun and bridge, and if either is
commented out, tap is commented out also. With the exception of i386's
GENERIC_TINY.

XXX: we _need_ some way of making this more simple.
 1.186 08-Jan-2005  briggs branches: 1.186.2;
Make obio match multiple times to allow access to devices on systems
where there might be devices under two I/O bridges (like PowerBook G3s).
Attempt to have devices under 'gatwick' share parental interrupt. This
may still need some work, but a step in the right direction.
From Tim Kelly.
 1.185 24-Nov-2004  bouyer pdcsata(4), a driver for the Promise SATA150 (aka PDC203xx) serie of
controllers. Tested with a PDC20375 (2 SATA, one PATA) controller on sparc64.
Added to all kernel config file which had pdcide(4).
 1.184 12-Nov-2004  jklos Add comments for OFB_ENABLE_CACHE (doesn't work on iMacs) and awacs
(causes lockups). OK'd by Tsubai Masanari (port maintainer).
 1.183 10-Nov-2004  christos Add COMPAT_BSDPTY to the rest of the config files.
 1.182 23-Oct-2004  augustss s/uax/axe/
 1.181 04-Sep-2004  manu IPv4 PIM support, based on a submission from Pavlin Radoslavov posted on
tech-net@
 1.180 15-Jul-2004  atatat Add "options SYSCTL_INCLUDE_DESCR" to a lot of configs, but commented
out in most of them.
 1.179 28-Jun-2004  bouyer Add options P1003_1B_SEMAPHORE
to all GENERIC-like kernel config files where SYSV* options were already
present (commented out if the SYSV* options are commented out).
Fix lib/25897 and lib/25898.
 1.178 26-Jun-2004  abs Add (commented out) ALTQ options to all GENERIC-like files
 1.177 22-Jun-2004  mrg Add re; Realtek GbE.
 1.176 22-Jun-2004  itojun have pf and pflog pseudo-device (commented out).
reviewed by matt, perry, christos
 1.175 18-Jun-2004  christos ptm is now mandatory, depends on pty, and can be disabled with -DNO_DEV_PTM
 1.174 16-Jun-2004  christos Add pseudo-device ptm on all the generic flavored kernels.
 1.173 02-Apr-2004  mrg enable "INSECURE" kernel option so that GENERIC kernels are capable of
running XF4 servers. while this isn't the best solution, it is the only
one we have for the forseeable future, and there is long-standing precedent
in the i386 port.
 1.172 29-Mar-2004  matt Add SMBFS/nsmb
 1.171 14-Jan-2004  jonathan branches: 1.171.2;
Add support for opencrypto, PCI accelerators to sys/arch/*/conf/GENERIC
files for machines I know to have genuine PCI slots. As sent to tech-kern
for feedback in December 2003. Based on feedback, opencrypto is commented
out in the macppc GENERIC (due to absense of GENERIC_SOFTINT support),
and added to the sparc64 config (sys/arch/sparc64/conf/GENERIC32).
 1.170 27-Dec-2003  grant add support for the Keywest I2C and snapper audio device, as found on
some iBook and PowerBook models.

this driver was written by Tsubai Masanari and further hacked on by
Jared D. McNeill to work on his iBook.

the driver is limited (master volume control only, and I haven't
tested recording) but has been functioning perfectly on my PowerBook
g4 DVI (ivory) for some time.

ok'd by matt.
 1.169 22-Dec-2003  dyoung Fix typo: atw(4) was listed as an Aironet card instead of ADMtek.
 1.168 14-Dec-2003  thorpej Split the Intel i31244 SATA controller ("Artisea") driver out of piixide
into its own driver (artsata).
 1.167 13-Dec-2003  thorpej Split out the Silicon Image SATALink support into its own driver,
"satalink".
 1.166 13-Nov-2003  christos we could have lpt at puc.
 1.165 18-Oct-2003  lukem Use one 'atabus* at ata?' instead of multiple 'atabus* at FOOide? channel ?'
Use 'atapibus* at atapi?' instead of 'atapibus* at atabus?'
 1.164 13-Oct-2003  dyoung Add atw(4), ADMtek ADM8211 802.11, at PCI bus and Cardbus.
 1.163 08-Oct-2003  bouyer Add new per-chip pciide drivers.
 1.162 08-Oct-2003  bouyer Add atabus.
 1.161 25-Sep-2003  matt Add COMPAT_16
 1.160 22-Aug-2003  itojun add udav*
 1.159 24-Jul-2003  nathanw Add commented-out options CAPS_IS_CONTROL and FORCE_FUNCTION_KEYS, with
descriptions.
XXX the descriptive text should probably be in options(4), but none of the
*other* mac-specific options are there, either...
 1.158 11-Jun-2003  manu branches: 1.158.2;
Add COMPAT_DARWIN, and comment out anything related to it. It is too
much experimental to be included into GENERIC kernels.
 1.157 11-Jun-2003  hamajima Support the PowerBook G4 12-inch (and maybe 17-inch).
Kauai ATA, new obio chip, and Japanese keymap for WSDISPLAY_COMPAT_RAWKBD

I tested only 12-inch Japanese model.
 1.156 26-Apr-2003  ragge Add pseudo-device ksyms.
 1.155 10-Apr-2003  christos Bye Bye UCONSOLE
 1.154 14-Mar-2003  mjacob Attach esiop to a scsibus.
 1.153 27-Feb-2003  perseant Make BRIDGE_IPF an option, and document it. Add it (commented) to GENERIC.
Let brconfig tell whether the bridge is using the ipfilter hook, or not.
 1.152 16-Feb-2003  augustss Add uax(4) (and url(4) in some cases).
 1.151 14-Jan-2003  fair Add bktr*, udsbr* and radio* at each;
allocate a major number for radio*
 1.150 12-Jan-2003  matt Add missing ethernets and phys. Update FireWire to current reality.
 1.149 22-Nov-2002  wiz Fix typo (responsiness -> responsiveness).
 1.148 30-Oct-2002  manu Added COMPAT_MACH and EXEC_MACHO
 1.147 18-Oct-2002  junyoung Add NEW_BUFQ_STRATEGY (disabled by default).
 1.146 14-Oct-2002  elric Added commented out cgd(4)s to GENERIC configs.
 1.145 06-Oct-2002  provos add SYSTRACE; approved perry.
 1.144 28-Sep-2002  dbj add options APPLE_UFS
This enables Apple UFS support added by PR #17345
 1.143 25-Sep-2002  martti Add one space between "#option" and "<tab>IPFILTER_DEFAULT_BLOCK"
 1.142 20-Sep-2002  martti Added (commented out) IPFILTER_DEFAULT_BLOCK.
 1.141 18-Sep-2002  lukem enable USERCONF by default; it's small and extremely useful to have available.
 1.140 13-Aug-2002  aymeric add (commented out) option WSDISPLAY_COMPAT_RAWKBD
 1.139 12-Jul-2002  matt Enable COMPAT_LINUX
 1.138 09-Jul-2002  hamajima comment out "options OFB_ENABLE_CACHE" again,
because this makes PowerMac 8500 + Millennium II broken.
OKed by tsubai.
 1.137 07-Jul-2002  matt Change OFB_ENABLE_CACHE to be enabled.
 1.136 07-Jul-2002  matt Make the gem driver the default now, not the macppc specific gm.
 1.135 05-Jul-2002  matt Peform a rototill over the powerpc-based ports.

Move the trap/vector initialization for MPC6xx ports to mpc6xx_machdep.c
Also move softnet, install_extintr, mapiodev, kvtop. Add common BAT
initialization code.

Add user Altivec support.

Fix calls to OF_call_method in macppc/macppc/machdep.c.

Use ci_fpuproc in cpu_info instead of separate fpuproc.

Add separate syscall.c and defined __HAVE_SYSCALL_INTERN.
 1.134 25-Jun-2002  itojun fwnode* has idhi/idlo locator
 1.133 25-Jun-2002  itojun sync firewire scsi config to the latest reality
 1.132 18-Jun-2002  itojun apm emulation, from openbsd
 1.131 17-Jun-2002  lukem Enable "pseudo-device clockctl" in all kernels, except
installation related kernels (INSTALL* and RAMDISK*).
This enables rc.conf(5) $ntpd_chroot to be used "out of the box"
 1.130 07-Jun-2002  briggs Disable awacs because on some systems--e.g., a 350MHz G4 GigE--it can
generate interrupt storms which render the machine essentially unusable.
 1.129 11-May-2002  bjh21 branches: 1.129.2; 1.129.4;
Add puc at pci and com at puc, since those seem to work under 1.5.2 (and hence
have no excuse for not working in -current).
 1.128 25-Apr-2002  wiz Replace some more options<TAB> with options<SP><TAB>.
Noted by Patrick Welche.
 1.127 25-Apr-2002  atatat Add the INCLUDE_CONFIG_FILE option to all config files. In config
files that are generic (ie, GENERIC, GENERICSBC, GENERIC32, ALL, or
ALPHA), it is uncommented.
 1.126 17-Apr-2002  mycroft Switch from de to tlp by default.
 1.125 12-Apr-2002  gmcgarry Add commented-out USERCONF option. Mainly useful for install media
and can be optionally enabled based on miniroot and ramdisk size
requirements.
 1.124 10-Apr-2002  tsutsui Add (missing) scsibus* at adw?
 1.123 07-Mar-2002  wiz Add commented out option OFB_ENABLE_CACHE (speeds up text display on
the console).
 1.122 10-Feb-2002  wiz Update description for icsphy.
 1.121 27-Jan-2002  jdolecek add options PIPE_SOCKETPAIR to individual kernel configs
the option is commented out on everything but kernels I was able
to recognize as INSTALL-like or ones for small memory machines
 1.120 19-Jan-2002  oster Add new RF_* options for RAIDframe bits that are no longer built by default.

While we're here, enable RAIDframe (and RAID_AUTOCONFIG) by default for
architectures that I'm comfortable can deal with it being on by default.

Also: bump the number of 'raid' devices from 4 to 8, since 4 seems to
be insufficient in practise.
 1.119 03-Jan-2002  mbw tv@netbsd says that the desired behavior for macppc is for de to be default
for DEC-based chips, and to have tlp available for tulip clones. The change
in GENERIC is such that TLP_MATCH options are commented out (allowing de to
attach to DEC-based chips), and change in is INSTALL such that de is present
and TLP_MATCH options are commented out.

The addition of de in INSTALL increases its compressed size by about 17 KB.

Primarily the goal is to have INSTALL and GENERIC use the same device.
This will fix PR port-macppc/10779.

It has been tested with the 1.5.3_ALPHA GENERIC and INSTALL kernels on my
PowerMacintosh 7300 with a 21140A (now de, previously tlp) and a
Lite-On 82C115 (tlp).

de0 at pci0 dev 15 function 0
de0: interrupting at irq 25
de0: Asante 21140A [10-100Mb/s] pass 2.2
de0: address 00:00:94:a4:03:35
de0: enabling 10baseT port

tlp0 at pci0 dev 14 function 0: Lite-On 82C115 Ethernet, pass 2.5
tlp0: interrupting at irq 24
tlp0: Ethernet address 00:00:94:b6:16:ef
tlp0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX
 1.118 28-Dec-2001  augustss Update for new uhidev device attachment.
 1.117 28-Dec-2001  martin Add PPPoE to all generic kernels that should be able to use it.
XXX TODO: do this for INSTALL kernels too, add sysinst support and make the
XXX needed binaries available on the ramdisk root fs.
 1.116 14-Dec-2001  gmcgarry Add a blurb to the top of all GENERIC files. This serves three purposes:
- to clarify some terminology
- to clarify the intention of the GENERIC file
- to cross-reference some useful man pages
 1.115 23-Nov-2001  atatat The bridge(4) pseudo-device no longer requires the port to
__HAVE_GENERIC_SOFT_INTERRUPTS, so add it back to all GENERIC configs.
 1.114 14-Nov-2001  matt Add brgphy
 1.113 13-Nov-2001  augustss Add wsmux (it seems to work now).
 1.112 04-Nov-2001  itohy Add mpu at cmpci and opl at cmpci attachment.
I always test it on alpha, and add cmpci entries to alpha config files.
 1.111 03-Nov-2001  tsutsui Add trm at pci.

BTW, should we also add it into INSTALL?
I guess there is no trm adapter which has Openfirmware..
 1.110 12-Sep-2001  manu branches: 1.110.2; 1.110.4;
Linux emulation is no longer experimental, removed comment
 1.109 01-Sep-2001  atatat branches: 1.109.2;
Comment out bridge pseudo devices from ports that don't
__HAVE_GENERIC_SOFT_INTERRUPTS. bridge(4) doesn't compile there.
 1.108 01-Sep-2001  atatat Add bridge pseudo devices to GENERIC configs
 1.107 29-Aug-2001  briggs Add adw
 1.106 27-Aug-2001  eeh Add the driver for the LMC WAN adapter.
 1.105 22-Aug-2001  hubertf More comment changes: 90x[B] -> 90x[BC]
 1.104 03-Aug-2001  tsubai Add bmtphy.
 1.103 08-Jul-2001  abs branches: 1.103.2;
Standardise TCP_COMPAT_42 as commented out, grouped with other COMPAT options,
and with the comment '4.2BSD TCP/IP bug compat. Not recommended'
Add commented out 'TCP_DEBUG # Record last TCP_NDEBUG packets with SO_DEBUG'
(All hail amiga and atari which make some attempt to automate the
multiplicity of config files...)
 1.102 30-Jun-2001  darcy Add System V semaphore resource limits to each GENERIC file that has an
option for System V semaphores. It appears that there are no overrides
in the code and each file has the following added.

options SYSVSEM # System V semaphores
+#options SEMMNI=10 # number of semaphore identifiers
+#options SEMMNS=60 # number of semaphores in system
+#options SEMUME=10 # max number of undo entries per process
+#options SEMMNU=30 # number of undo structures in system
options SYSVSHM # System V shared memory

If anyone thinks that this is incorrect for any of these files, please
correct it.

Note - the i386 port was not forgotten. It was done separately.
 1.101 10-Jun-2001  tsubai Remove options NMBCLUSTERS=1024 -- it's default now.
 1.100 06-Jun-2001  matt Enable tlp for 21x4x chips.
 1.99 03-Jun-2001  tsutsui Add iha at pci .
 1.98 27-May-2001  wiz Add RTC_OFFSET line (see port-macppc/10265).
 1.97 16-May-2001  tsubai Add AirMac frontend.
 1.96 04-Apr-2001  manu Cosmetic change
 1.95 03-Apr-2001  manu Added a comented out COMPAT_LINUX option in GENERIC kernels of PowerPC ports
 1.94 01-Apr-2001  tsubai Remove gpio. It's not a time to use separate gpio node yet.
 1.93 05-Mar-2001  tsubai branches: 1.93.2;
Add awi* at pcmcia.
 1.92 27-Feb-2001  matt Enable a fix so that PowerBook(FireWire) keyboards work. This
should also work on iBooks and PowerBook(WallStreet). And if
we're really lucky, on the new G4 laptops.
 1.91 16-Jan-2001  augustss Add uyap.
 1.90 08-Jan-2001  nathanw The "#auvia" line was removed from this config; remove the "#audio* at
auvia?" line as well.
 1.89 21-Dec-2000  tsutsui Add tlp at pci.

"options TLP_MATCH_21?4?" are still commented out.
 1.88 20-Dec-2000  tsutsui Add atapibus at pciide.
 1.87 19-Dec-2000  bouyer Add pseudo-device vlan
 1.86 09-Dec-2000  mjacob Finally fix this driver to be sensible about the ENDIAN dance. It's not
quite simply a question of the Qlogic being little endian and having
to have stuff swapped on big endian machines- it also has to do with the
fact that the SBus and PCI DMA layouts are wierd with respect to this.

At any rate, now finally fixed- works on Mac G4, tested it on a SS10
for sparc, checked on alpha to see if I've broken anything, and as
soon as I get another spare afternoon I'll finally install a sparc64
version which should just work (as it'll be like the Mac).
 1.85 01-Dec-2000  kei fix a typo in comment. remove a whitespace at the end of line.
 1.84 14-Nov-2000  matt Add rnd & openfirm to POWERMAC
Add openfirm and commmented-out firewire stuff to GENERIC
 1.83 14-Nov-2000  augustss Add uscanner.
 1.82 07-Nov-2000  matt Switch from the old yucky ncr to the new good siop driver for 53c8xx.
 1.81 01-Nov-2000  mycroft Enable DDB history by default.
 1.80 01-Nov-2000  mycroft Actually attach the audio device...
 1.79 01-Nov-2000  mycroft Add awacs.
 1.78 29-Sep-2000  tsutsui Add sip* at pci.
 1.77 24-Sep-2000  jdolecek don't specify number of ptys if >= 16 (current default initial number)
pty comments: normalize and g/c what is no longer relevant
 1.76 13-Aug-2000  itojun move "options PULLDOWN_TEST" into sys/sys/mbuf.h (in #ifdef _KERNEL),
as it is no wthe default setting for everyone.

the reason we still use the name "PULLDOWN_TEST" while it is now default:
kame code sharing.
 1.75 01-Aug-2000  tsubai Enable rnd.
 1.74 25-Jul-2000  wrstuden We don't need to include the # VIA VT82C686A integrated AC'97 Audio as it
is integrated into the Southbridge on a number of i386 motherboards - we
won't be seeing that in a mac. :-)
 1.73 25-Jul-2000  wrstuden Add a bunch of pci audio drivers. Most are commented out as they haven't
been tested on macppc. But I tested the eap for playback and it's fine.
 1.72 30-Jun-2000  itojun add PULLDOWN_TEST for all the platforms.
XXX should be moved to somewhere else when stabilized
 1.71 22-Jun-2000  fvdl Remove prefix construction for softdeps. Add SOFTDEP option to GENERIC.
 1.70 14-Jun-2000  veego branches: 1.70.2;
Remove the obsolete config fragments for kernel crypto, because the IPsec
crypto code is now in the kernel source tree.
 1.69 11-Jun-2000  tsubai Enable DMA transfer on obio IDE.
 1.68 09-Jun-2000  tsubai Add cy* at pci.
 1.67 09-Jun-2000  wrstuden Add commented-out entry for Cyclades-Z pci serial ports.
 1.66 26-May-2000  tsutsui branches: 1.66.2;
Add epic* at pci.
 1.65 25-May-2000  tsutsui Add fxp* at pci.
 1.64 08-May-2000  augustss Add (sometimes commented out) MIIVERBOSE option.
 1.63 25-Apr-2000  tsubai Add ex* at pci and rtk* at pci.
 1.62 19-Apr-2000  haya Changes the name of RealTek driver. The new name is `rtk'. This used
to be called `rl' and it conflict with RL vax disks, canonical and
historical unix driver name.

This changes are minimal: it only changes the name of RealTek driver.
The filename of source code and a lot of the letter `rl' in source
files should be changed shortly.
 1.61 19-Apr-2000  itojun add stf pseudo interface (commented out due to possible security risks)
 1.60 03-Apr-2000  augustss Add atapibus* at umass?
 1.59 26-Mar-2000  tsubai Enable gmac ethernet.
 1.58 22-Mar-2000  cgd add commented out option PCI_CONFIG_DUMP whever there's a PCIVERBOSE.
 1.57 29-Feb-2000  simonb Do the "<space><tab>" thing with the RAID_AUTOCONFIG option.
 1.56 27-Feb-2000  tsubai Add gmac. (commented out)
 1.55 26-Feb-2000  oster Defopt 'RAID_AUTOCONFIG'. Adding 'options RAID_AUTOCONFIG' turns on
the component auto-detection and auto-configuration of RAID sets.
Also, add "#options RAID_AUTOCONFIG" to the GENERIC config files.
 1.54 14-Feb-2000  tsubai Add uninorth. Now iMac DV and Power Macintosh G4 should run NetBSD.
 1.53 09-Feb-2000  tsubai Add wsfont options.
 1.52 08-Feb-2000  tsubai Add missing locators.
Add tlp at cardbus.
 1.51 03-Feb-2000  tsubai * Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.50 25-Jan-2000  tsubai Add PHYs.
 1.49 25-Jan-2000  augustss Update for the ucom(4) addition.
 1.48 23-Jan-2000  hubertf Add commented out "ident"-command
 1.47 20-Jan-2000  wrstuden Add overlay to kernel configs.
 1.46 17-Jan-2000  augustss Add USB-Ethernet adapters.
 1.45 26-Dec-1999  tsutsui Oops, forgot to add scsibus* at ncr?
 1.44 26-Dec-1999  tsutsui Add ncr* at pci?
 1.43 21-Nov-1999  itojun bring in content of GENERIC.v6 into GENERIC.
remove GENERIC.v6 file (as it is part of GENERIC now).

"faith" interface is commented out by default as it is not really for
general use.
IPsec items are commented out as well, though we can enable "options IPSEC"
without export-related issue ("options IPSEC" will enable authentication
portion only). We may need to think about it again.

if you have problem compiling with INET6 on archs I do not have access to,
please contact me.

XXX what to do with arch/arm32/SHARK{,.v6}?
 1.42 15-Nov-1999  fvdl Add commented out option SOFTDEP to all GENERIC kernels.
 1.41 08-Nov-1999  mycroft branches: 1.41.2;
Kill wsmux. DIE DIE DIE!
 1.40 08-Nov-1999  mycroft Disable wsmux for now.
 1.39 15-Oct-1999  tsubai branches: 1.39.2; 1.39.4;
Enable com* at pcmcia.
 1.38 15-Oct-1999  tsubai Add cardbus support.
 1.37 19-Sep-1999  matt branches: 1.37.2;
Make the DEFPA run under the macppc port (tested on a B&W G3). Add it to
the GENERIC config file.
 1.36 09-Sep-1999  augustss Add uaudio driver.
 1.35 29-Aug-1999  thorpej Add `umass'.
 1.34 16-Aug-1999  augustss Add umodem device.
 1.33 05-Aug-1999  tsubai Add mediabay.
 1.32 29-Jul-1999  augustss Make two wsmux pseudo devices and add mux locators.
 1.31 29-Jul-1999  augustss It's time to be COMPAT_14.
 1.30 20-Jul-1999  christos enable PPP_BSDCOMP, PPP_DEFLATE, PPP_FILTER, PFIL_HOOKS, IPFILTER_LOG
on the GENERIC kernels that had them commented out.
XXX: Please note, that not all the kernels have all the options defined!
 1.29 07-May-1999  wrstuden BusLogic cards seem to work in my G3. :-)
 1.28 06-May-1999  wrstuden Add pciide config info.
 1.27 01-Apr-1999  tsubai branches: 1.27.2;
Enable "de".
 1.26 22-Feb-1999  tsubai Add MESH SCSI driver.
Sort entries.
 1.25 04-Feb-1999  tsubai Uncomment PCI-PCI bridges.
 1.24 17-Jan-1999  tsubai Add bmac ethernet.
 1.23 06-Jan-1999  thorpej Add pcscp driver.
 1.22 29-Dec-1998  tsubai Add USB.
 1.21 28-Dec-1998  tsubai Configure only one wskbd/wsmouse.
 1.20 10-Dec-1998  tsubai Add wd and atapi.
 1.19 25-Nov-1998  hwr Add (commented out) 'gre' pseudo device line. Feedback is welcome.
Inspired by Klaus Klein.
 1.18 22-Nov-1998  tsubai Fix typo.
 1.17 16-Nov-1998  oster Added a (commented out) configuration line for the RAIDframe device driver.
 1.16 28-Oct-1998  dante Add support for macppc
Very special thanks to Itsumi Tsutsui for his invaluable collaboration.
 1.15 18-Oct-1998  tsubai Add wsmouse support.
 1.14 14-Oct-1998  tsubai Sync to ``POWERMAC'' config.
 1.13 13-Oct-1998  tsubai ADB change.
 1.12 29-Jul-1998  tsubai Use ite for screen console by default until wscons support.
 1.11 29-Jul-1998  thorpej Use a std options file, like other ports do.
 1.10 28-Jul-1998  thorpej Ah, we use a _different_ ofcons; rename it macofcons to avoid the
name collision.
 1.9 28-Jul-1998  thorpej ofcons attaches to ofbus, not pci! Comment it out, since we do not have
any ofbus support in these configurations.
 1.8 28-Jul-1998  thorpej Support NFS_BOOT_DHCP.
 1.7 03-Jul-1998  tsubai Add nvram device support.
 1.6 02-Jul-1998  tsubai Console support.
 1.5 26-Jun-1998  lukem remove options FIFO; it's now the default
 1.4 24-Jun-1998  tsubai Add memory disk support.
 1.3 21-Jun-1998  tsubai Stop using "options FIRMWORKSBUGS".
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.27.2.2 03-Jun-2000  he Apply patch (requested by he):
Disable the UNION file system, to avoid a repeat of the 1.4.1
and 1.4.2 LAST_MINUTE changes. It is reportedly buggy, and can
be used by ordinary users to crash the system.
 1.27.2.1 06-May-1999  perry branches: 1.27.2.1.2;
pullup 1.27->1.28 (wrstuden)
 1.27.2.1.2.2 02-Aug-1999  thorpej Update from trunk.
 1.27.2.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.37.2.2 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.37.2.1 21-Dec-1999  wrstuden Initial commit of recent changes to make DEV_BSIZE go away.

Runs on i386, needs work on other arch's. Main kernel routines should be
fine, but a number of the stand programs need help.

cd, fd, ccd, wd, and sd have been updated. sd has been tested with non-512
byte block devices. vnd, raidframe, and lfs need work.

Non 2**n block support is automatic for LKM's and conditional for kernels
on "options NON_PO2_BLOCKS".
 1.39.4.1 15-Nov-1999  fvdl Sync with -current
 1.39.2.10 21-Apr-2001  bouyer Sync with HEAD
 1.39.2.9 02-Apr-2001  bouyer ahc compiles now, and it works on sparc64 so I can't see why it wouldn't
work on something else :)
 1.39.2.8 28-Mar-2001  bouyer ahc not ready yet.
 1.39.2.7 12-Mar-2001  bouyer Sync with HEAD.
 1.39.2.6 18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.39.2.5 05-Jan-2001  bouyer Sync with HEAD
 1.39.2.4 13-Dec-2000  bouyer Sync with HEAD (for UBC fixes).
 1.39.2.3 08-Dec-2000  bouyer Sync with HEAD.
 1.39.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.39.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.41.2.2 08-Nov-1999  mycroft Kill wsmux. DIE DIE DIE!
 1.41.2.1 08-Nov-1999  mycroft file GENERIC was added on branch comdex-fall-1999 on 1999-11-08 06:17:43 +0000
 1.66.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.70.2.7 22-Apr-2002  he Apply patch (requested by briggs):
Set BUFPAGES to 1024 to be able to boot on large-memory machines,
and squeeze INSTALL so that there is enough room on the boot
floppy.
 1.70.2.6 05-Jan-2002  he Pull up revision 1.89 (requested by mbw):
Add the tlp(4) driver to GENERIC, and make the choice of the
de(4) driver vs. the tlp(4) driver consistent between the INSTALL
and GENERIC kernels. The choice is to use the de(4) driver for
the DEC-based Tulip cards, and tlp(4) for the Tulip clones
supported by that driver.
 1.70.2.5 01-May-2001  he Pull up revision 1.87 (via patch, requested by he):
Add pseudo-device vlan.
Make sure "rnd is EXPERIMENTAL" comment is removed.
 1.70.2.4 04-Feb-2001  he Pull up revisions 1.79-1.80 (requested by mycroft):
Add new driver for Apple sound chip.
 1.70.2.3 01-Nov-2000  tv Pullup 1.73-1.75 and 1.78 [mycroft]:
Fix half-committed pullup; `rnd' is no longer `experimental', so remove
the comment. Add generic PCI Ethernet and audio devices.
 1.70.2.2 04-Oct-2000  itojun pullup (approved by releng-1-5)

enable rnd device. they are now mandatory for ssh/sshd support,
so it makes more sense to enable it.
please disable them if there's any issues, but in that case, in-tree
ssh/sshd won't work.

cvs rdiff -r1.166 -r1.167 syssrc/sys/arch/alpha/conf/GENERIC
cvs rdiff -r1.149 -r1.150 syssrc/sys/arch/amiga/conf/GENERIC
cvs rdiff -r1.11 -r1.12 syssrc/sys/arch/arm26/conf/GENERIC
cvs rdiff -r1.72 -r1.73 syssrc/sys/arch/atari/conf/GENERIC
cvs rdiff -r1.60 -r1.61 syssrc/sys/arch/hp300/conf/GENERIC
cvs rdiff -r1.10 -r1.11 syssrc/sys/arch/luna68k/conf/GENERIC
cvs rdiff -r1.35 -r1.36 syssrc/sys/arch/next68k/conf/GENERIC
cvs rdiff -r1.32 -r1.33 syssrc/sys/arch/ofppc/conf/GENERIC
cvs rdiff -r1.73 -r1.74 syssrc/sys/arch/sun3/conf/GENERIC
cvs rdiff -r1.80 -r1.81 syssrc/sys/arch/vax/conf/GENERIC
cvs rdiff -r1.52 -r1.53 syssrc/sys/arch/x68k/conf/GENERIC
 1.70.2.1 23-Jun-2000  fvdl As on the trunk, update these for the move of ffs_softdep.c into the
kernel source itself. Remove prefix construction, and add the SOFTDEP
option to GENERIC kernels.
 1.93.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.93.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.103.2.8 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.103.2.7 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.103.2.6 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.103.2.5 16-Mar-2002  jdolecek Catch up with -current.
 1.103.2.4 11-Feb-2002  jdolecek Sync w/ -current.
 1.103.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.103.2.2 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.103.2.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.109.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.110.4.13 15-Jan-2003  thorpej Sync with HEAD.
 1.110.4.12 11-Dec-2002  thorpej Sync with HEAD.
 1.110.4.11 11-Nov-2002  nathanw Catch up to -current
 1.110.4.10 18-Oct-2002  nathanw Catch up to -current.
 1.110.4.9 27-Aug-2002  nathanw Catch up to -current.
 1.110.4.8 01-Aug-2002  nathanw Catch up to -current.
 1.110.4.7 20-Jun-2002  nathanw Catch up to -current.
 1.110.4.6 17-Apr-2002  nathanw Catch up to -current.
 1.110.4.5 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.110.4.4 28-Feb-2002  nathanw Catch up to -current.
 1.110.4.3 11-Jan-2002  nathanw More catchup.
 1.110.4.2 08-Jan-2002  nathanw Catch up to -current.
 1.110.4.1 12-Sep-2001  nathanw file GENERIC was added on branch nathanw_sa on 2002-01-08 00:26:09 +0000
 1.110.2.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.129.4.7 26-Oct-2005  jmc Pullup (via patch) requested in ticket #5754 by itohy

Provide a backport for ukyopon(4) and pullup umodem(4) updates.
 1.129.4.6 19-Jun-2003  grant Pull up revision 1.140 (requested by aymeric in ticket #1324):

add (commented out) option WSDISPLAY_COMPAT_RAWKBD
 1.129.4.5 19-Jun-2003  grant Pull up revision 1.157 (requested by hamajima in ticket #1323):

Support the PowerBook G4 12-inch (and maybe 17-inch).
Kauai ATA, new obio chip, and Japanese keymap for WSDISPLAY_COMPAT_RAWKBD
 1.129.4.4 24-Oct-2002  lukem Pull up upgrade to IPfilter 3.4.29 (requested by martti in ticket #905).
Affected files & revisions:

dist/ipf/HISTORY 1.14
dist/ipf/fils.c 1.17-1.21
dist/ipf/ipf.c 1.11-1.13
dist/ipf/ipfs.c 1.8-1.10
dist/ipf/ipft_ef.c 1.6-1.7
dist/ipf/ipft_td.c 1.6-1.7
dist/ipf/ipft_tx.c 1.7-1.8
dist/ipf/ipmon.c 1.12-1.17
dist/ipf/ipnat.c 1.11-1.12
dist/ipf/ipsend/ip_var.h 1.2
dist/ipf/ipsend/ipsend.c 1.8
dist/ipf/ipsend/iptests.c 1.5
dist/ipf/ipt.c 1.8-1.10
dist/ipf/kmem.c 1.8-1.10
dist/ipf/man/ipf.4 1.10
dist/ipf/man/ipf.5 1.8
dist/ipf/man/ipftest.1 1.3
dist/ipf/man/ipmon.8 1.10
dist/ipf/man/ipnat.5 1.9-1.10
dist/ipf/man/ipnat.8 1.4
dist/ipf/misc.c 1.7
dist/ipf/natparse.c 1.10
dist/ipf/parse.c 1.13
dist/ipf/printnat.c 1.8-1.10
dist/ipf/relay.c 1.5-1.6
dist/ipf/rules/example.9 1.2
etc/rc.d/ipnat 1.8
regress/sys/kern/ipf/Makefile 1.3-1.4
regress/sys/kern/ipf/dotest6 1.2
regress/sys/kern/ipf/expected/f13 1.1.1.2
regress/sys/kern/ipf/expected/i12 1.1.1.1
regress/sys/kern/ipf/expected/ni3 1.1.1.1
regress/sys/kern/ipf/expected/ni5 1.2
regress/sys/kern/ipf/input/f13 1.1.1.2
regress/sys/kern/ipf/input/ipv6.1 1.1.1.1
regress/sys/kern/ipf/input/ni3 1.1.1.1
regress/sys/kern/ipf/regress/i12 1.1.1.1
regress/sys/kern/ipf/regress/ipv6.1 1.1.1.1
regress/sys/kern/ipf/regress/ni3.ipf 1.1.1.1
regress/sys/kern/ipf/regress/ni3.nat 1.1.1.1
sys/arch/alpha/conf/ALPHA 1.169,1.171
sys/arch/amiga/conf/GENERIC 1.185-1.186
sys/arch/arc/conf/GENERIC 1.71-1.72
sys/arch/atari/conf/GENERIC.in 1.24-1.25
sys/arch/cats/conf/GENERIC 1.31-1.32
sys/arch/cobalt/conf/GENERIC 1.34-1.35
sys/arch/hp300/conf/GENERIC 1.83-1.84
sys/arch/i386/conf/CARDBUS 1.66-1.67
sys/arch/i386/conf/GENERIC 1.510,1.512
sys/arch/i386/conf/GENERIC_LAPTOP 1.58-1.59
sys/arch/i386/conf/GENERIC_PS2TINY 1.19-1.20
sys/arch/i386/conf/GENERIC_TINY 1.47-1.48
sys/arch/luna68k/conf/GENERIC 1.33-1.33
sys/arch/mac68k/conf/GENERIC 1.130-1.131
sys/arch/mac68k/conf/GENERICSBC 1.21-1.22
sys/arch/mac68k/conf/SMALLRAM 1.4-1.5
sys/arch/macppc/conf/GENERIC 1.142-1.143
sys/arch/mipsco/conf/GENERIC 1.21-1.22
sys/arch/mmeye/conf/GENERIC 1.44-1.45
sys/arch/news68k/conf/GENERIC 1.36-1.37
sys/arch/news68k/conf/GENERIC_TINY 1.18-1.19
sys/arch/newsmips/conf/GENERIC 1.50-1.51
sys/arch/ofppc/conf/GENERIC 1.56-1.57
sys/arch/pmax/conf/GENERIC 1.103-1.104
sys/arch/prep/conf/GENERIC 1.55-1.56
sys/arch/sbmips/conf/GENERIC 1.11-1.12
sys/arch/sgimips/conf/GENERIC 1.7-1.8
sys/arch/sparc/conf/GENERIC 1.138-1.139
sys/arch/sparc64/conf/GENERIC32 1.46-1.47
sys/arch/vax/conf/GENERIC 1.102-1.103
sys/arch/x68k/conf/ALL 1.55-1.56
sys/arch/x68k/conf/GENERIC 1.80-1.81
sys/lkm/netinet/if_ipl/mln_ipl.c 1.29
sys/netinet/fil.c 1.57-1.58
sys/netinet/ip_auth.c 1.29-1.30
sys/netinet/ip_compat.h 1.30-1.31
sys/netinet/ip_fil.c 1.81-1.86
sys/netinet/ip_fil.h 1.46-1.49
sys/netinet/ip_frag.c 1.33-1.34
sys/netinet/ip_frag.h 1.18
sys/netinet/ip_ftp_pxy.c 1.25-1.26
sys/netinet/ip_h323_pxy.c 1.5-1.6
sys/netinet/ip_log.c 1.22-1.23
sys/netinet/ip_nat.c 1.51-1.53
sys/netinet/ip_nat.h 1.27
sys/netinet/ip_netbios_pxy.c 1.4
sys/netinet/ip_proxy.c 1.35-1.36
sys/netinet/ip_proxy.h 1.18
sys/netinet/ip_state.c 1.41-1.42
sys/netinet/ip_state.h 1.23
sys/netinet/ipl.h 1.14
 1.129.4.3 01-Aug-2002  lukem Pull up revision 1.131 (requested by lukem in ticket #312):
Enable "pseudo-device clockctl" in all kernels, except
installation related kernels (INSTALL* and RAMDISK*).
This enables rc.conf(5) $ntpd_chroot to be used "out of the box"
 1.129.4.2 15-Jul-2002  thorpej pullup-1-6 ticket #493 (matt).

Original log message:
Make the gem driver the default now, not the macppc specific gm.
 1.129.4.1 10-Jun-2002  tv Pull up revision 1.130 (requested by 209 in ticket #0):
Disable awacs because on some systems--e.g., a 350MHz G4 GigE--it can
generate interrupt storms which render the machine essentially unusable.
 1.129.2.3 31-Aug-2002  gehenna catch up with -current.
 1.129.2.2 16-Jul-2002  gehenna catch up with -current.
 1.129.2.1 14-Jul-2002  gehenna catch up with -current.
 1.158.2.13 11-Dec-2005  christos Sync with head.
 1.158.2.12 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.158.2.11 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.158.2.10 15-Feb-2005  skrll Sync with HEAD.
 1.158.2.9 04-Feb-2005  skrll Sync with HEAD.
 1.158.2.8 24-Jan-2005  skrll Sync with HEAD.
 1.158.2.7 17-Jan-2005  skrll Sync with HEAD.
 1.158.2.6 29-Nov-2004  skrll Sync with HEAD.
 1.158.2.5 14-Nov-2004  skrll Sync with HEAD.
 1.158.2.4 02-Nov-2004  skrll Sync with HEAD.
 1.158.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.158.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.158.2.1 03-Aug-2004  skrll Sync with HEAD
 1.171.2.5 15-Jul-2004  he branches: 1.171.2.5.2;
Pull up revision 1.180 (requested by atatat in ticket #663):
Add "options SYSCTL_INCLUDE_DESCR" to a lot of configurations,
but commented out in most of them.
 1.171.2.4 02-Jul-2004  he Pull up revision 1.179 (requested by bouyer in ticket #573):
Add options P1003_1B_SEMAPHORE to all GENERIC-like kernel
config files where SYSV* options were already present
(commented out if the SYSV* options are commented out).
Fixes PR#25897 and PR#25898.
 1.171.2.3 30-Jun-2004  jdc Pull up revision 1.178 (requested by abs in ticket #567).

Add (commented out) ALTQ options to all GENERIC-like files
 1.171.2.2 24-Jun-2004  jmc Pullup rev 1.177 (requested by mrg in ticket #548)

Add re; Realtek GbE
 1.171.2.1 05-Apr-2004  tron Pull up revision 1.173 (requested by mrg in ticket #64):
enable "INSECURE" kernel option so that GENERIC kernels are capable of
running XF4 servers. while this isn't the best solution, it is the only
one we have for the forseeable future, and there is long-standing precedent
in the i386 port.
 1.171.2.5.2.2 21-Jul-2005  riz Pull up revision 1.195 (requested by itohy in ticket #1430):
Add ukyopon(4).
 1.171.2.5.2.1 02-Apr-2005  he Pull up revision 1.185 (requested by bouyer in ticket #1019):
Add pdcsata(4), a driver for the Promise SATA150 (aka PDC203xx) series of
controllers.
 1.186.2.1 29-Apr-2005  kent sync with -current
 1.190.2.2 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.190.2.1 12-Feb-2005  yamt sync with head.
 1.194.4.8 03-Mar-2007  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1673):
distrib/sets/lists/man/mi 1.844, 1.871
share/man/man4/Makefile 1.372, 1.379 via patch
share/man/man4/re.4 1.8, 1.9, 1.11, 1.12
share/man/man4/rgephy.4 1.1
share/man/man4/rlphy.4 1.1, 1.2
sys/arch/amd64/conf/GENERIC 1.79, 1.89
sys/arch/amd64/conf/INSTALL 1.45, 1.49
sys/arch/i386/conf/GENERIC 1.717, 1.747
sys/arch/i386/conf/GENERIC_LAPTOP 1.164
sys/arch/i386/conf/INSTALL 1.277, 1.283
sys/arch/i386/conf/INSTALL_LAPTOP 1.96, 1.98
sys/arch/i386/conf/XEN2_DOM0 1.22 via patch
sys/arch/macppc/conf/GENERIC 1.220, 1.246
sys/arch/macppc/conf/INSTALL 1.96, 1.100
sys/dev/cardbus/if_re_cardbus.c 1.10
sys/dev/cardbus/if_rtk_cardbus.c 1.29-1.31
sys/dev/ic/rtl8169.c 1.14, 1.20, 1.24, 1.25, 1.28-1.61, 1.63, 1.64-1.81 via patch
sys/dev/ic/rtl81x9.c 1.52, 1.54-1.63, 1.65, 1.67-1.70
sys/dev/ic/rtl81x9reg.h 1.15-1.26
sys/dev/ic/rtl81x9var.h 1.19, 1.21-1.37
sys/dev/mii/files.mii 1.38
sys/dev/mii/miidevs 1.62, 1.64
sys/dev/mii/rgephy.c 1.10, 1.13-1.16
sys/dev/mii/rlphy.c 1.1, 1.6, 1.7, 1.11 via patch
sys/dev/pci/if_re_pci.c 1.13, 1.15-1.17, 1.19-1.23
sys/dev/pci/if_rtk_pci.c 1.25, 1.28, 1.29, 1.31
sys/dev/pci/pcidevs 1.851, 1.852

on re(4):
- improve stability (I believe ;-)
- add a workaround for hardware ip4csum-tx bug
- support newer chips (8169SB/SC, PCIe based 8168 etc.)
- fix 8139C+ support
- enable hardware VLAN
- misc bus_dma(9) fix (which makes re(4) work on mips ports)

on rtk(4):
- fix kern/31348
- fix possible panic on dreamcast
 1.194.4.7 05-Nov-2005  tron Pull up following revision(s) (requested by chs in ticket #929):
sys/arch/hp300/conf/GENERIC: revision 1.124
sys/arch/acorn32/conf/GENERIC: revision 1.62
sys/arch/pdp10/conf/GENERIC: revision 1.19
sys/arch/mvme68k/conf/GENERIC: revision 1.61
sys/arch/netwinder/conf/GENERIC: revision 1.70
sys/arch/sbmips/conf/GENERIC: revision 1.46
sys/arch/macppc/conf/GENERIC: revision 1.214
sys/arch/bebox/conf/GENERIC: revision 1.89
sys/arch/cobalt/conf/GENERIC: revision 1.83
sys/arch/cats/conf/GENERIC: revision 1.92
sys/arch/shark/conf/GENERIC: revision 1.53
sys/arch/amiga/conf/GENERIC.in: revision 1.45
sys/arch/acorn26/conf/GENERIC: revision 1.37
sys/arch/cesfic/conf/GENERIC: revision 1.38
sys/arch/iyonix/conf/GENERIC: revision 1.21
sys/arch/alpha/conf/GENERIC: revision 1.277
sys/arch/vax/conf/GENERIC: revision 1.143
sys/arch/atari/conf/GENERIC.in: revision 1.56
sys/arch/mipsco/conf/GENERIC: revision 1.53
sys/arch/ofppc/conf/GENERIC: revision 1.85
sys/arch/next68k/conf/GENERIC: revision 1.96
sys/arch/arc/conf/GENERIC: revision 1.125
sys/arch/dreamcast/conf/GENERIC: revision 1.62
turn off DEBUG and DIAGNOSTIC in GENERIC kernels so that they
are compatible with the LKMs that are part of the release.
 1.194.4.6 14-Aug-2005  riz Pull up revision 1.204 (requested by hubertf in ticket #625):
Add support for reading cloop2 compressed filesystem images,
enable by putting VND_COMPRESSION into kernel config file.
Written by Cliff Wright, polished up slightly by me.
 1.194.4.5 18-Jul-2005  riz Pull up revision 1.202 (requested by tron in ticket #566):
Add (commented out) IPSEC_NAT_T option.
 1.194.4.4 09-Jun-2005  snj Pull up revision 1.196 (requested by tron in ticket #427):
Remove unnecessary per-driver scsibus attachments and use
"scsibus* at scsi?" instead.
 1.194.4.3 09-Jun-2005  snj Pull up revision 1.198 (requested by tron in ticket #426):
RAIDframe works fine under NetBSD-macppc according to Ian Spray's testing.
Enable raid(4) by default therefore.
 1.194.4.2 01-Jun-2005  riz Pull up revision 1.197 (requested by tron in ticket #362):
Remove attachment for the piixide(4) driver from all non-x86 kernel
configurations because Intel IDE disk controllers only exist as part
of Intel chipsets for x86 systems.
 1.194.4.1 17-Apr-2005  tron Pull up revision 1.195 (requested by itohy in ticket #160):
Add ukyopon(4).
 1.201.2.7 21-Jan-2008  yamt sync with head
 1.201.2.6 15-Nov-2007  yamt sync with head.
 1.201.2.5 27-Oct-2007  yamt sync with head.
 1.201.2.4 03-Sep-2007  yamt sync with head.
 1.201.2.3 26-Feb-2007  yamt sync with head.
 1.201.2.2 30-Dec-2006  yamt sync with head.
 1.201.2.1 21-Jun-2006  yamt sync with head.
 1.214.2.1 29-Nov-2005  yamt sync with head.
 1.219.2.3 18-Feb-2006  yamt sync with head.
 1.219.2.2 01-Feb-2006  yamt sync with head.
 1.219.2.1 15-Jan-2006  yamt sync with head.
 1.221.2.1 09-Sep-2006  rpaulo sync with head
 1.222.2.1 22-Apr-2006  simonb Sync with head.
 1.228.6.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.228.4.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.228.2.3 03-Sep-2006  yamt sync with head.
 1.228.2.2 11-Aug-2006  yamt sync with head
 1.228.2.1 01-Apr-2006  yamt sync with head.
 1.230.2.2 22-Sep-2006  riz Pull up following revision(s) (requested by tsutsui in ticket #170):
sys/arch/sparc64/conf/GENERIC: revision 1.63
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.55
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.54
sys/arch/next68k/conf/GENERIC: revision 1.105
sys/arch/ews4800mips/conf/GENERIC: revision 1.12
sys/arch/arc/conf/GENERIC: revision 1.142
sys/arch/sun3/conf/GENERIC3X: revision 1.91
sys/arch/amd64/conf/GENERIC: revision 1.105
sys/arch/sun2/conf/GENERIC: revision 1.58
sys/arch/amiga/conf/GENERIC.in: revision 1.55
sys/arch/mac68k/conf/GENERIC: revision 1.175
sys/arch/acorn26/conf/GENERIC: revision 1.46
sys/arch/shark/conf/GENERIC: revision 1.65
sys/arch/cesfic/conf/GENERIC: revision 1.45
sys/arch/sandpoint/conf/GENERIC: revision 1.36
sys/arch/iyonix/conf/GENERIC: revision 1.32
sys/arch/mvme68k/conf/GENERIC: revision 1.69
sys/arch/evbarm/conf/ARMADILLO210: revision 1.3
sys/arch/vax/conf/GENERIC: revision 1.154
sys/arch/mipsco/conf/GENERIC: revision 1.61
sys/arch/evbarm/conf/ARMADILLO9: revision 1.14
sys/arch/cobalt/conf/GENERIC: revision 1.103
sys/arch/ofppc/conf/GENERIC: revision 1.94
sys/arch/hp700/conf/GENERIC: revision 1.69
sys/arch/playstation2/conf/GENERIC: revision 1.8
sys/arch/dreamcast/conf/GENERIC: revision 1.73
sys/arch/news68k/conf/GENERIC: revision 1.81
sys/arch/macppc/conf/GENERIC: revision 1.234
sys/arch/hp300/conf/GENERIC: revision 1.134
sys/arch/mmeye/conf/GENERIC: revision 1.83
sys/arch/ibmnws/conf/GENERIC: revision 1.26
sys/arch/cats/conf/GENERIC: revision 1.109
sys/arch/sparc/conf/GENERIC: revision 1.191
sys/arch/pdp10/conf/GENERIC: revision 1.27
sys/arch/acorn32/conf/GENERIC: revision 1.75
sys/arch/luna68k/conf/GENERIC: revision 1.74
sys/arch/bebox/conf/GENERIC: revision 1.101
sys/arch/pmax/conf/GENERIC: revision 1.148
sys/arch/x68k/conf/GENERIC: revision 1.130
sys/arch/sun3/conf/GENERIC: revision 1.134
sys/arch/prep/conf/GENERIC: revision 1.126
sys/arch/alpha/conf/GENERIC: revision 1.293
sys/arch/newsmips/conf/GENERIC: revision 1.94
sys/arch/netwinder/conf/GENERIC: revision 1.83
sys/arch/hpcsh/conf/GENERIC: revision 1.69
sys/arch/sbmips/conf/GENERIC: revision 1.55
sys/arch/pc532/conf/GENERIC: revision 1.65
sys/arch/hpcmips/conf/GENERIC: revision 1.192
Remove obsolete #options VERIFIED_EXEC, found by grep(1).
 1.230.2.1 14-Aug-2006  tron Pull up following revision(s) (requested by elad in ticket #17):
sys/arch/sparc/conf/KRUPS: revision 1.38
sys/arch/i386/conf/XEN2_DOMU: revision 1.2
sys/arch/i386/conf/GENERIC_LAPTOP: revision 1.197
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.53
sys/arch/evbsh5/conf/SIMULATOR: revision 1.12
sys/arch/sparc/conf/MRCOFFEE: revision 1.17
sys/arch/next68k/conf/GENERIC: revision 1.104
sys/arch/i386/conf/VIRTUALPC: revision 1.44
sys/arch/ews4800mips/conf/GENERIC: revision 1.11
sys/arch/evbsh5/conf/CAYMAN: revision 1.23
sys/arch/arc/conf/GENERIC: revision 1.141
sys/arch/amd64/conf/GENERIC: revision 1.103
sys/arch/sun3/conf/GENERIC3X: revision 1.90
sys/arch/evbarm/conf/HDL_G: revision 1.3
sys/arch/sun2/conf/GENERIC: revision 1.57
sys/arch/news68k/conf/GENERIC_TINY: revision 1.51
sys/arch/evbppc/conf/EXPLORA451: revision 1.27
sys/arch/amiga/conf/GENERIC.in: revision 1.54
sys/arch/mac68k/conf/GENERIC: revision 1.174
sys/arch/acorn26/conf/GENERIC: revision 1.45
sys/arch/shark/conf/GENERIC: revision 1.64
sys/arch/cesfic/conf/GENERIC: revision 1.44
sys/arch/mvme68k/conf/GENERIC: revision 1.68
sys/arch/i386/conf/XEN2_DOM0: revision 1.4
sys/arch/atari/conf/GENERIC.in: revision 1.63
sys/arch/amiga/conf/GENERIC: revision 1.240
sys/arch/i386/conf/LAMB: revision 1.65
sys/arch/i386/conf/GENERIC: revision 1.773
sys/arch/acorn32/conf/EB7500ATX: revision 1.26
sys/arch/x68k/conf/GENERIC: revision 1.128
sys/arch/vax/conf/GENERIC: revision 1.153
sys/arch/atari/conf/ATARITT: revision 1.81
sys/arch/mipsco/conf/GENERIC: revision 1.60
sys/arch/cobalt/conf/GENERIC: revision 1.101
sys/arch/evbarm/conf/ARMADILLO9: revision 1.13
sys/arch/ofppc/conf/GENERIC: revision 1.93
sys/arch/atari/conf/MILAN-PCIIDE: revision 1.51
sys/arch/arc/conf/RPC44: revision 1.26
sys/arch/sparc64/conf/GENERIC: revision 1.59
sys/arch/i386/conf/XEN3_DOMU: revision 1.2
sys/arch/hp700/conf/GENERIC: revision 1.68
sys/arch/atari/conf/MILAN-ISAIDE: revision 1.47
sys/arch/macppc/conf/GENERIC: revision 1.231
sys/arch/dreamcast/conf/GENERIC: revision 1.72
sys/arch/news68k/conf/GENERIC: revision 1.80
sys/arch/hp300/conf/GENERIC: revision 1.133
sys/arch/mmeye/conf/GENERIC: revision 1.82
sys/arch/macppc/conf/MAMBO: revision 1.2
sys/arch/cats/conf/GENERIC: revision 1.107
sys/arch/atari/conf/FALCON: revision 1.79
sys/arch/acorn32/conf/GENERIC: revision 1.71
sys/arch/sparc/conf/GENERIC: revision 1.190
sys/arch/news68k/conf/LIBERO: revision 1.40
sys/arch/amiga/conf/DRACO: revision 1.114
sys/arch/cobalt/conf/INSTALL: revision 1.23
sys/arch/luna68k/conf/GENERIC: revision 1.73
sys/arch/bebox/conf/GENERIC: revision 1.100
sys/arch/pmax/conf/GENERIC: revision 1.147
sys/arch/amiga/conf/WSCONS: revision 1.52
sys/arch/macppc/conf/POWERMAC_G5: revision 1.2
sys/arch/alpha/conf/ALPHA: revision 1.218
sys/arch/sun3/conf/GENERIC: revision 1.133
sys/arch/prep/conf/GENERIC: revision 1.124
sys/arch/alpha/conf/GENERIC: revision 1.291
sys/arch/atari/conf/HADES: revision 1.71
sys/arch/newsmips/conf/GENERIC: revision 1.93
sys/arch/netwinder/conf/GENERIC: revision 1.82
sys/arch/hpcmips/conf/GENERIC: revision 1.190
sys/arch/amiga/conf/AMIGA: revision 1.98
sys/arch/sbmips/conf/GENERIC: revision 1.54
sys/arch/pc532/conf/GENERIC: revision 1.64
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.53
Disable SYSTRACE by default on all kernels (discussed with core)
 1.235.4.2 10-Dec-2006  yamt sync with head.
 1.235.4.1 22-Oct-2006  yamt sync with head
 1.235.2.3 01-Feb-2007  ad Sync with head.
 1.235.2.2 12-Jan-2007  ad Sync with head.
 1.235.2.1 18-Nov-2006  ad Sync with head.
 1.246.4.1 03-Sep-2007  wrstuden Sync w/ NetBSD-4-RC_1
 1.246.2.3 24-Mar-2009  bouyer Pullup the following revisions (requested by msaitoh in ticket #1284):
distrib/sets/lists/base/mi 1.706-707,1.797
distrib/sets/lists/man/mi 1.1006
etc/mtree/NetBSD.dist 1.340
share/man/man4/Makefile 1.432
sys/arch/amd64/conf/GENERIC 1.149 via patch
sys/arch/i386/conf/ALL 1.103
sys/arch/i386/conf/GENERIC 1.832
sys/arch/i386/conf/GENERIC_LAPTOP 1.237
sys/arch/macppc/conf/GENERIC 1.257
sys/arch/sparc64/conf/GENERIC 1.86
sys/dev/usb/usbdevs 1.468,1.479-480 via patch
sys/dev/usb/usbdevs.h regen
sys/dev/usb/usbdevs_data.h regen
sys/dev/microcode/Makefile 1.7
sys/dev/usb/files.usb patch
share/man/man4/zyd.4 1.1 via patch
sys/dev/microcode/zyd/Makefile 1.1-1.2
sys/dev/microcode/zyd/build.c 1.1
sys/dev/microcode/zyd/microcode.h 1.1
sys/dev/microcode/zyd/zd1211-license 1.1
sys/dev/microcode/zyd/zyd-zd1211 1.1
sys/dev/microcode/zyd/zyd-zd1211b 1.1
sys/dev/usb/if_zyd.c patch
sys/dev/usb/if_zydreg.h 1.1-1.2

Add ZyDAS ZD1211/ZD1211B USB IEEE 802.11b/g wireless network device support
 1.246.2.2 31-Aug-2007  liamjfoy Pull up following (requested by macallan in ticket #853):

Comment out the radeonfb driver since it causes trouble on some
machines. Disable until I can fix it.
 1.246.2.1 05-Jun-2007  bouyer Pull up following revision(s) (requested by martin in ticket #699):
sys/arch/hpcmips/conf/GENERIC: revision 1.196
sys/arch/hp700/conf/GENERIC: revision 1.74
sys/arch/i386/conf/GENERIC: revision 1.831
sys/arch/next68k/conf/GENERIC: revision 1.108
sys/arch/alpha/conf/GENERIC: revision 1.313
sys/arch/arc/conf/GENERIC: revision 1.146
sys/arch/cats/conf/GENERIC: revision 1.115
sys/arch/ews4800mips/conf/GENERIC: revision 1.18
sys/arch/landisk/conf/GENERIC: revision 1.8 via patch
sys/arch/sparc64/conf/GENERIC: revision 1.85
sys/arch/pmax/conf/GENERIC: revision 1.152
sys/arch/iyonix/conf/GENERIC: revision 1.38 via patch
sys/arch/amiga/conf/GENERIC: revision 1.245
sys/arch/vax/conf/GENERIC: revision 1.157
sys/arch/prep/conf/GENERIC: revision 1.135
sys/arch/pc532/conf/GENERIC: revision 1.70
sys/arch/sbmips/conf/GENERIC: revision 1.61
sys/arch/mipsco/conf/GENERIC: revision 1.65
sys/arch/cobalt/conf/GENERIC: revision 1.108
sys/arch/ofppc/conf/GENERIC: revision 1.98
sys/arch/amd64/conf/GENERIC: revision 1.148
sys/arch/acorn26/conf/GENERIC: revision 1.50
sys/arch/dreamcast/conf/GENERIC: revision 1.78
sys/arch/mac68k/conf/GENERIC: revision 1.181
sys/arch/hp300/conf/GENERIC: revision 1.139
sys/arch/mmeye/conf/GENERIC: revision 1.88
sys/arch/news68k/conf/GENERIC: revision 1.88
sys/arch/mvme68k/conf/GENERIC: revision 1.71
sys/arch/acorn32/conf/GENERIC: revision 1.79
sys/arch/sparc/conf/GENERIC: revision 1.199
sys/arch/luna68k/conf/GENERIC: revision 1.78
sys/arch/bebox/conf/GENERIC: revision 1.105
sys/arch/macppc/conf/GENERIC: revision 1.256 via patch
sys/arch/x68k/conf/GENERIC: revision 1.134
sys/arch/sun3/conf/GENERIC: revision 1.138
sys/arch/newsmips/conf/GENERIC: revision 1.98
Add pseudo-device agr to all GENERIC kernels where it might make sense
(commented out in some).
 1.252.2.2 24-Mar-2007  yamt sync with head.
 1.252.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.254.4.1 11-Jul-2007  mjf Sync with head.
 1.254.2.6 03-Dec-2007  ad Sync with HEAD.
 1.254.2.5 23-Oct-2007  ad Sync with head.
 1.254.2.4 09-Oct-2007  ad Sync with head.
 1.254.2.3 15-Jul-2007  ad Sync with head.
 1.254.2.2 09-Jun-2007  ad Sync with head.
 1.254.2.1 10-Apr-2007  ad Sync with head.
 1.255.6.8 03-Oct-2007  garbled Sync with HEAD
 1.255.6.7 07-Aug-2007  macallan switch to new ADB subsystem
 1.255.6.6 05-Aug-2007  macallan use genfb instead of ofb
 1.255.6.5 02-Aug-2007  macallan sync with HEAD
 1.255.6.4 26-Jun-2007  garbled Sync with HEAD.
 1.255.6.3 04-May-2007  macallan enable OpenPIC support
 1.255.6.2 02-May-2007  macallan enable Heathrow PIC support
 1.255.6.1 02-May-2007  macallan add options pfr various interrupt controllers, enable only PIC_OHARE
 1.258.8.4 11-Nov-2007  joerg Sync with HEAD.
 1.258.8.3 04-Nov-2007  jmcneill Sync with HEAD.
 1.258.8.2 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.258.8.1 03-Sep-2007  jmcneill Sync with HEAD.
 1.258.4.1 03-Sep-2007  skrll Sync with HEAD.
 1.259.6.2 13-Nov-2007  bouyer Sync with HEAD
 1.259.6.1 25-Oct-2007  bouyer Sync with HEAD.
 1.259.4.1 18-Oct-2007  yamt sync with head.
 1.259.2.3 09-Jan-2008  matt sync with HEAD
 1.259.2.2 08-Nov-2007  matt sync with -HEAD
 1.259.2.1 06-Nov-2007  matt sync with HEAD
 1.261.2.2 18-Feb-2008  mjf Sync with HEAD.
 1.261.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.262.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.263.12.3 10-Oct-2008  skrll Sync with HEAD.
 1.263.12.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.263.12.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.263.10.3 11-Aug-2010  yamt sync with head.
 1.263.10.2 11-Mar-2010  yamt sync with head
 1.263.10.1 04-May-2009  yamt sync with head.
 1.263.8.1 04-Jun-2008  yamt sync with head
 1.263.6.3 17-Jan-2009  mjf Sync with HEAD.
 1.263.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.263.6.1 02-Jun-2008  mjf Sync with HEAD.
 1.264.4.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.264.4.1 19-Oct-2008  haad Sync with HEAD.
 1.271.4.2 02-Mar-2009  snj Apply patch (requested by macallan in ticket #532):
radeonfb is not ready to be enabled by default.
 1.271.4.1 19-Feb-2009  snj Apply patch (requested by pooka in ticket #453):
Add puffs and putter to amd64, i386, macppc, and sparc64 GENERIC kernels.
 1.271.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.271.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.278.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.278.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.279.2.4 31-May-2011  rmind sync with head
 1.279.2.3 21-Apr-2011  rmind sync with head
 1.279.2.2 05-Mar-2011  rmind sync with head
 1.279.2.1 30-May-2010  rmind sync with head
 1.288.4.1 08-Feb-2011  bouyer Add QUOTA2 where QUOTA is enabled (and QUOTA2 commented out where QUOTA
is commented out)
 1.288.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.293.2.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.293.2.2 30-Oct-2012  yamt sync with head
 1.293.2.1 17-Apr-2012  yamt sync with head
 1.294.2.3 05-Apr-2012  mrg sync to latest -current.
 1.294.2.2 11-Mar-2012  mrg sync to latest -current
 1.294.2.1 18-Feb-2012  mrg merge to -current.
 1.297.4.1 01-Nov-2012  matt sync with netbsd-6-0-RELEASE.
 1.297.2.1 03-Sep-2012  riz Pull up following patch (requested by macallan in ticket #528):

Comment out radeonfb for the release, as it causes problems on some
hardware.
 1.303.2.5 03-Dec-2017  jdolecek update from HEAD
 1.303.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.303.2.3 23-Jun-2013  tls resync from head
 1.303.2.2 25-Feb-2013  tls resync with head
 1.303.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.310.2.2 18-May-2014  rmind sync with head
 1.310.2.1 28-Aug-2013  rmind sync with head
 1.312.4.4 03-Jan-2018  snj Pull up following revision(s) (requested by sevan in ticket #1546):
sys/arch/macppc/conf/GENERIC: revision 1.337 via patch
Without RADEONFB_ALWAYS_ACCEL_PUTCHAR, there are display issues on the
PowerBook5,2 (G4 FW-800)
Radeon 9600, where console is garbled.
Thanks to <macallan> for the pointer.
Closes PR port-macppc/52712
 1.312.4.3 15-May-2015  snj Pull up following revision(s) (requested by jnemeth in ticket #762):
share/man/man4/options.4: revision 1.442
sys/arch/amd64/conf/ALL: revision 1.18
sys/arch/amd64/conf/GENERIC: revision 1.396
sys/arch/dreamcast/conf/GENERIC: revision 1.119
sys/arch/epoc32/conf/GENERIC: revision 1.6
sys/arch/evbarm/conf/BCM5301X: revision 1.24
sys/arch/evbarm/conf/BCM56340: revision 1.9
sys/arch/evbarm/conf/IMX23_OLINUXINO: revision 1.9
sys/arch/evbarm/conf/std.beagle: revision 1.13
sys/arch/evbarm/conf/std.kobo: revision 1.2
sys/arch/evbarm/conf/std.netwalker: revision 1.10
sys/arch/evbppc/conf/P2020DS: revision 1.25
sys/arch/evbppc/conf/RB800: revision 1.30
sys/arch/evbppc/conf/TWRP1025: revision 1.18
sys/arch/hp300/conf/GENERIC: revision 1.187
sys/arch/hpcsh/conf/GENERIC: revision 1.104
sys/arch/i386/conf/GENERIC: revision 1.1111
sys/arch/i386/conf/MONOLITHIC: revision 1.17
sys/arch/landisk/conf/GENERIC: revision 1.43
sys/arch/luna68k/conf/GENERIC: revision 1.117
sys/arch/macppc/conf/GENERIC: revision 1.316
sys/arch/macppc/conf/GENERIC_601: revision 1.5
sys/arch/mmeye/conf/MMEYE_WLF: revision 1.16
sys/arch/news68k/conf/GENERIC: revision 1.123
sys/arch/sandpoint/conf/GENERIC: revision 1.85
sys/arch/shark/conf/GENERIC: revision 1.119
sys/arch/sparc/conf/GENERIC: revision 1.246
sys/arch/sparc64/conf/GENERIC: revision 1.174
sys/arch/sun3/conf/GENERIC3X: revision 1.125
sys/arch/sun3/conf/GENERIC: revision 1.169
sys/arch/x68k/conf/GENERIC: revision 1.177
sys/arch/zaurus/conf/GENERIC: revision 1.62
sys/conf/files: revision 1.1099
sys/kern/kern_module.c: revisions 1.98, 1.99
Create an "options MODULAR_DEFAULT_AUTOLOAD" config option and add
it to all kernel configs that contain "options MODULAR". This
option turns on module autoloading by default (which is the current
default). This allows people who don't want module autoloading on
by default to disable it by simply removing/commentting this line.
--
fix typo. (s/MODULE_DEFAULT_AUTOLOAD/MODULAR_DEFAULT_AUTOLOAD/)
 1.312.4.2 18-Nov-2014  snj Pull up following revision(s) (requested by manu in ticket #251):
sys/arch/acorn26/conf/GENERIC: revision 1.81
sys/arch/acorn32/conf/GENERIC: revision 1.116
sys/arch/alpha/conf/GENERIC: revision 1.362
sys/arch/amd64/conf/ALL: revision 1.23
sys/arch/amd64/conf/GENERIC: revision 1.404
sys/arch/amd64/conf/XEN3_DOM0: revision 1.112
sys/arch/amd64/conf/XEN3_DOMU: revision 1.60
sys/arch/amiga/conf/GENERIC.in: revision 1.129
sys/arch/amiga/conf/GENERIC: revision 1.311
sys/arch/amigappc/conf/GENERIC: revision 1.24
sys/arch/arc/conf/GENERIC: revision 1.184
sys/arch/bebox/conf/GENERIC: revision 1.145
sys/arch/cats/conf/GENERIC: revision 1.155
sys/arch/cesfic/conf/GENERIC: revision 1.65
sys/arch/cobalt/conf/GENERIC: revision 1.147
sys/arch/dreamcast/conf/GENERIC: revision 1.121
sys/arch/emips/conf/GENERIC: revision 1.15
sys/arch/epoc32/conf/GENERIC: revision 1.8
sys/arch/ews4800mips/conf/GENERIC: revision 1.51
sys/arch/hp300/conf/GENERIC: revision 1.190
sys/arch/hpcmips/conf/GENERIC: revision 1.229
sys/arch/hpcsh/conf/GENERIC: revision 1.106
sys/arch/hppa/conf/GENERIC: revision 1.6
sys/arch/i386/conf/ALL: revision 1.389
sys/arch/i386/conf/GENERIC: revision 1.1118
sys/arch/i386/conf/XEN3_DOM0: revision 1.93
sys/arch/i386/conf/XEN3_DOMU: revision 1.65
sys/arch/ibmnws/conf/GENERIC: revision 1.46
sys/arch/iyonix/conf/GENERIC: revision 1.88
sys/arch/landisk/conf/GENERIC: revision 1.45
sys/arch/luna68k/conf/GENERIC: revision 1.119
sys/arch/mac68k/conf/GENERIC: revision 1.220
sys/arch/macppc/conf/GENERIC: revision 1.320
sys/arch/macppc/conf/MAMBO: revision 1.24
sys/arch/macppc/conf/POWERMAC_G5: revision 1.25
sys/arch/mipsco/conf/GENERIC: revision 1.88
sys/arch/mmeye/conf/GENERIC: revision 1.120
sys/arch/mvme68k/conf/GENERIC: revision 1.94
sys/arch/mvmeppc/conf/GENERIC: revision 1.24
sys/arch/netwinder/conf/GENERIC: revision 1.126
sys/arch/news68k/conf/GENERIC: revision 1.125
sys/arch/newsmips/conf/GENERIC: revision 1.129
sys/arch/next68k/conf/GENERIC: revision 1.139
sys/arch/ofppc/conf/GENERIC: revision 1.157
sys/arch/pmax/conf/GENERIC64: revision 1.21
sys/arch/pmax/conf/GENERIC: revision 1.185
sys/arch/prep/conf/GENERIC: revision 1.174
sys/arch/rs6000/conf/GENERIC: revision 1.33
sys/arch/sandpoint/conf/GENERIC: revision 1.88
sys/arch/sbmips/conf/GENERIC: revision 1.101
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.28
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.104
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.106
sys/arch/shark/conf/GENERIC: revision 1.121
sys/arch/sparc/conf/GENERIC: revision 1.248
sys/arch/sparc/conf/TADPOLE3GX: revision 1.65
sys/arch/sparc64/conf/GENERIC: revision 1.177
sys/arch/sparc64/conf/NONPLUS64: revision 1.44
sys/arch/sun2/conf/GENERIC: revision 1.94
sys/arch/sun3/conf/GENERIC: revision 1.171
sys/arch/vax/conf/GENERIC: revision 1.193
sys/arch/vax/conf/VAX780: revision 1.19
sys/arch/x68k/conf/GENERIC: revision 1.179
sys/arch/zaurus/conf/GENERIC: revision 1.65
sys/ufs/files.ufs: revision 1.38
Remove unused extended attributes kernel options

As Masao Uebayashi pointed to me, UFS_EXTATTR_AUTOSTART, LFS_EXTATTR_AUTOSTART
and UFS_EXTATTR_AUTOCREATE are not used anywhere in the code. Remove them
as they have been obsolete for a long time:
UFS_EXTATTR_AUTOSTART was replaced by mount -o extattr
LFS_EXTATTR_AUTOSTART was created to match obsolete UFS_EXTATTR_AUTOSTART
UFS_EXTATTR_AUTOCREATE was replaced by sysctl vfs.ffs.extattr_autocreate
 1.312.4.1 14-Nov-2014  martin Pull up following revision(s) (requested by manu in ticket #232):
sys/arch/next68k/conf/GENERIC: revision 1.138
sys/arch/cobalt/conf/GENERIC: revision 1.146
sys/arch/mvme68k/conf/GENERIC: revision 1.93
sys/arch/vax/conf/VAX780: revision 1.18
sys/arch/newsmips/conf/GENERIC: revision 1.128
sys/arch/luna68k/conf/GENERIC: revision 1.118
sys/arch/sbmips/conf/GENERIC: revision 1.100
sys/arch/pmax/conf/GENERIC: revision 1.184
sys/arch/alpha/conf/GENERIC: revision 1.361
sys/arch/sparc64/conf/GENERIC: revision 1.176
sys/arch/sun3/conf/GENERIC: revision 1.170
sys/arch/shark/conf/GENERIC: revision 1.120
sys/arch/landisk/conf/GENERIC: revision 1.44
sys/arch/bebox/conf/GENERIC: revision 1.144
sys/arch/sparc64/conf/NONPLUS64: revision 1.43
sys/arch/sandpoint/conf/GENERIC: revision 1.87
sys/arch/emips/conf/GENERIC: revision 1.14
sys/arch/amd64/conf/XEN3_DOM0: revision 1.111
sys/arch/dreamcast/conf/GENERIC: revision 1.120
sys/arch/cesfic/conf/GENERIC: revision 1.64
sys/arch/mmeye/conf/GENERIC: revision 1.119
sys/arch/epoc32/conf/GENERIC: revision 1.7
sys/arch/x68k/conf/GENERIC: revision 1.178
sys/arch/iyonix/conf/GENERIC: revision 1.87
sys/arch/sun2/conf/GENERIC: revision 1.93
sys/arch/ews4800mips/conf/GENERIC: revision 1.50
sys/arch/amd64/conf/XEN3_DOMU: revision 1.59
sys/arch/acorn26/conf/GENERIC: revision 1.80
sys/arch/acorn32/conf/GENERIC: revision 1.115
sys/arch/macppc/conf/POWERMAC_G5: revision 1.24
sys/arch/i386/conf/GENERIC: revision 1.1117
sys/arch/arc/conf/GENERIC: revision 1.183
sys/arch/cats/conf/GENERIC: revision 1.154
sys/arch/amiga/conf/GENERIC.in: revision 1.128
sys/arch/zaurus/conf/GENERIC: revision 1.64
sys/arch/netwinder/conf/GENERIC: revision 1.125
sys/arch/hppa/conf/GENERIC: revision 1.5
sys/arch/mvmeppc/conf/GENERIC: revision 1.23
sys/arch/macppc/conf/GENERIC: revision 1.319
sys/arch/amiga/conf/GENERIC: revision 1.310
sys/arch/pmax/conf/GENERIC64: revision 1.20
sys/arch/macppc/conf/MAMBO: revision 1.23
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.27
sys/arch/amigappc/conf/GENERIC: revision 1.23
sys/arch/amd64/conf/GENERIC: revision 1.403
sys/arch/ofppc/conf/GENERIC: revision 1.156
sys/arch/mac68k/conf/GENERIC: revision 1.219
sys/arch/i386/conf/XEN3_DOMU: revision 1.64
sys/arch/mipsco/conf/GENERIC: revision 1.87
sys/arch/hp300/conf/GENERIC: revision 1.189
sys/arch/vax/conf/GENERIC: revision 1.192
sys/arch/news68k/conf/GENERIC: revision 1.124
sys/arch/ibmnws/conf/GENERIC: revision 1.45
sys/arch/hpcsh/conf/GENERIC: revision 1.105
sys/arch/sparc/conf/TADPOLE3GX: revision 1.64
sys/arch/i386/conf/XEN3_DOM0: revision 1.92
sys/arch/sparc/conf/GENERIC: revision 1.247
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.105
sys/arch/prep/conf/GENERIC: revision 1.173
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.103
sys/arch/rs6000/conf/GENERIC: revision 1.32
sys/arch/hpcmips/conf/GENERIC: revision 1.228
Support for UFS1 extended attributes in GENERIC and GENERIC-like kernels
This change just brings UFS1 extended attribute *support* in the kernel,
extended attributes are not enabled unless three conditions are met:
1) filesystem is UFS1 (newfs -O1)
2) .attribute/system and .attribute/user directories are created at fs root
3) filesystem is mounted with -o extattr
Some GENERIC kernels are obviously memory constrained, the extended
attributes options were not enabled for them, but just added commented out.
(kernel were considered memory constrained if QUOTA option was disabled)
 1.320.2.5 28-Aug-2017  skrll Sync with HEAD
 1.320.2.4 05-Feb-2017  skrll Sync with HEAD
 1.320.2.3 05-Dec-2016  skrll Sync with HEAD
 1.320.2.2 29-May-2016  skrll Sync with HEAD
 1.320.2.1 22-Apr-2016  skrll Sync with HEAD
 1.322.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.322.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.327.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.329.2.5 04-May-2018  martin Apply patch, reqeusted by macallan in ticket #783:

Disable radeonfb since it still fails on some hardware.
 1.329.2.4 26-Feb-2018  snj Pull up following revision(s) (requested by sevan in ticket #579):
sys/arch/macppc/conf/GENERIC: 1.342
sys/arch/macppc/conf/GENERIC_601: 1.18
sys/arch/macppc/conf/MAMBO: 1.29
sys/arch/macppc/conf/POWERMAC_G5: 1.31
Enable BUFQ_PRIOCSCAN by default for NetBSD/macppc.
Drop references to NEW_BUFQ_STRATEGY and replace with currently available
options BUFQ_READPRIO and BUFQ_PRIOCSCAN.
ok <macallan>
 1.329.2.3 26-Feb-2018  snj Pull up following revision(s) (requested by sevan in ticket #578):
sys/arch/macppc/conf/GENERIC: 1.341
sys/arch/macppc/conf/MAMBO: 1.28
sys/arch/macppc/conf/POWERMAC: 1.69
sys/arch/macppc/conf/POWERMAC_G5: 1.30
sys/arch/powerpc/oea/ofw_rascons.c: 1.10
Remove OFB_ENABLE_CACHE
from <macallan>
"it is outdated, genfb and friends don't need or use it, and it makes no
sense on accelerated drivers either. It tries to BAT-map the framebuffer
cacheable, which works on most macs but makes a few models lock up.
Genfb doesn't have that problem and is faster too."
 1.329.2.2 26-Jan-2018  martin Pull up following revision(s) (requested by sevan in ticket #510):
sys/arch/sun3/conf/GENERIC3X: revision 1.130
sys/arch/sparc64/conf/GENERIC: revision 1.203
sys/arch/news68k/conf/LIBERO: revision 1.66
sys/arch/amiga/conf/DRACO: revision 1.185
sys/arch/evbarm/conf/MV2120: revision 1.35
sys/arch/x68k/conf/GENERIC: revision 1.187
sys/arch/rs6000/conf/GENERIC: revision 1.39
sys/arch/news68k/conf/GENERIC_TINY: revision 1.86
sys/arch/i386/conf/XEN3_DOMU: revision 1.88
sys/arch/iyonix/conf/GENERIC: revision 1.97
sys/arch/evbarm64/conf/A64EMUL: revision 1.11
sys/arch/mvme68k/conf/GENERIC: revision 1.98
sys/arch/acorn32/conf/GENERIC: revision 1.124
sys/arch/i386/conf/XEN3_DOM0: revision 1.125
sys/arch/cobalt/conf/INSTALL: revision 1.65
sys/arch/macppc/conf/GENERIC_601: revision 1.16
sys/arch/hppa/conf/GENERIC: revision 1.17
sys/arch/amiga/conf/GENERIC.in: revision 1.137
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.33
sys/arch/netwinder/conf/GENERIC: revision 1.134
sys/arch/amd64/conf/XEN3_DOMU: revision 1.83
sys/arch/mac68k/conf/GENERIC: revision 1.225
sys/arch/arc/conf/RPC44: revision 1.54
sys/arch/mipsco/conf/GENERIC: revision 1.92
sys/arch/cats/conf/GENERIC: revision 1.166
sys/arch/amd64/conf/XEN3_DOM0: revision 1.145
sys/arch/amigappc/conf/GENERIC: revision 1.33
sys/arch/sun3/conf/GENERIC: revision 1.176
sys/arch/news68k/conf/GENERIC: revision 1.130
sys/arch/hpcsh/conf/GENERIC: revision 1.110
sys/arch/hp300/conf/GENERIC: revision 1.198
sys/arch/atari/conf/GENERIC.in: revision 1.115
sys/arch/sparc/conf/MRCOFFEE: revision 1.54
sys/arch/evbppc/conf/EXPLORA451: revision 1.62
sys/arch/cesfic/conf/GENERIC: revision 1.69
sys/arch/vax/conf/GENERIC: revision 1.204
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.115
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.112
sys/arch/sparc/conf/GENERIC: revision 1.258
sys/arch/next68k/conf/GENERIC: revision 1.145
sys/arch/evbarm/conf/MMNET_GENERIC: revision 1.34
sys/arch/prep/conf/GENERIC: revision 1.185
sys/arch/amiga/conf/INSTALL: revision 1.129
sys/arch/newsmips/conf/GENERIC: revision 1.133
sys/arch/cobalt/conf/GENERIC: revision 1.156
sys/arch/sun2/conf/GENERIC: revision 1.99
sys/arch/luna68k/conf/INSTALL: revision 1.25
sys/arch/amigappc/conf/NULL: revision 1.53
sys/arch/acorn26/conf/GENERIC: revision 1.85
sys/arch/vax/conf/VAX780: revision 1.25
sys/arch/luna68k/conf/GENERIC: revision 1.125
sys/arch/ews4800mips/conf/GENERIC: revision 1.56
sys/arch/macppc/conf/POWERMAC_G5: revision 1.29
sys/arch/arc/conf/GENERIC: revision 1.189
sys/arch/macppc/conf/MAMBO: revision 1.27
sys/arch/acorn32/conf/EB7500ATX: revision 1.64
sys/arch/pmax/conf/GENERIC: revision 1.196
sys/arch/pmax/conf/GENERIC64: revision 1.28
sys/arch/amiga/conf/GENERIC: revision 1.319
sys/arch/evbarm/conf/MPCSA_GENERIC: revision 1.55
sys/arch/macppc/conf/GENERIC: revision 1.339
sys/arch/emips/conf/GENERIC: revision 1.21
sys/arch/sandpoint/conf/GENERIC: revision 1.97
sys/arch/landisk/conf/GENERIC: revision 1.58
sys/arch/bebox/conf/GENERIC: revision 1.157
sys/arch/alpha/conf/GENERIC: revision 1.379
Alternate buffer queue strategies no longer considered experimental, update
description.
Discussed on tech-kern
http://mail-index.netbsd.org/tech-kern/2018/01/21/msg023002.html
 1.329.2.1 07-Jan-2018  snj Pull up following revision(s) (requested by sevan in ticket #470):
sys/arch/macppc/conf/GENERIC: revision 1.337
Without RADEONFB_ALWAYS_ACCEL_PUTCHAR, there are display issues on the
PowerBook5,2 (G4 FW-800)
Radeon 9600, where console is garbled.
Thanks to <macallan> for the pointer.
Closes PR port-macppc/52712
 1.344.2.4 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.344.2.3 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.344.2.2 25-Jun-2018  pgoyette Sync with HEAD
 1.344.2.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.347.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.347.2.1 10-Jun-2019  christos Sync with HEAD
 1.358.2.3 29-Feb-2020  ad Sync with head.
 1.358.2.2 25-Jan-2020  ad Sync with head.
 1.358.2.1 17-Jan-2020  ad Sync with head.
 1.366.2.1 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.371.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.375.4.1 02-Feb-2024  martin Pull up following revision(s) (requested by uwe in ticket #558):

sys/arch/macppc/conf/GENERIC: revision 1.378

macppc: enable FFS_EI in GENERIC

I'd say it should be enabled for anything with USB.

ok macallan
 1.380.2.1 02-Aug-2025  perseant Sync with HEAD
 1.4 31-Jul-2010  macallan send interrupts to only cpu0, otherwise we can run into trouble under very high
interrupt load - there is a chance that the same handler serves subsequent
interrupts on different CPUs at the same time
 1.3 26-Aug-2008  macallan branches: 1.3.14; 1.3.16;
add options OPENPIC_DISTRIBUTE
 1.2 17-Oct-2007  garbled branches: 1.2.16; 1.2.20; 1.2.22; 1.2.26;
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.1 28-Jul-2002  chs branches: 1.1.2; 1.1.4; 1.1.6; 1.1.28; 1.1.70; 1.1.78; 1.1.88; 1.1.90; 1.1.92; 1.1.94;
add a config for GENERIC + MP.
 1.1.94.1 25-Oct-2007  bouyer Sync with HEAD.
 1.1.92.1 18-Oct-2007  yamt sync with head.
 1.1.90.1 06-Nov-2007  matt sync with HEAD
 1.1.88.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.1.78.1 10-Oct-2007  garbled New ppcoea-MI IPI infrastructure. This is similar to the PIC
infrastructure, but simplified greatly.

Also, convert macppc (the only port currently using IPI's) over to this new
infrastructure. Still some minor work left to do here.
 1.1.70.1 23-Oct-2007  ad Sync with head.
 1.1.28.1 27-Oct-2007  yamt sync with head.
 1.1.6.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.1.6.1 28-Jul-2002  jdolecek file GENERIC.MP was added on branch kqueue on 2002-09-06 08:37:04 +0000
 1.1.4.2 31-Aug-2002  gehenna catch up with -current.
 1.1.4.1 28-Jul-2002  gehenna file GENERIC.MP was added on branch gehenna-devsw on 2002-08-31 13:45:05 +0000
 1.1.2.2 01-Aug-2002  nathanw Catch up to -current.
 1.1.2.1 28-Jul-2002  nathanw file GENERIC.MP was added on branch nathanw_sa on 2002-08-01 02:42:23 +0000
 1.2.26.1 19-Oct-2008  haad Sync with HEAD.
 1.2.22.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.2.20.2 11-Aug-2010  yamt sync with head.
 1.2.20.1 04-May-2009  yamt sync with head.
 1.2.16.1 28-Sep-2008  mjf Sync with HEAD.
 1.3.16.1 05-Mar-2011  rmind sync with head
 1.3.14.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.3 21-Nov-1999  itojun bring in content of GENERIC.v6 into GENERIC.
remove GENERIC.v6 file (as it is part of GENERIC now).

"faith" interface is commented out by default as it is not really for
general use.
IPsec items are commented out as well, though we can enable "options IPSEC"
without export-related issue ("options IPSEC" will enable authentication
portion only). We may need to think about it again.

if you have problem compiling with INET6 on archs I do not have access to,
please contact me.

XXX what to do with arch/arm32/SHARK{,.v6}?
 1.2 09-Jul-1999  thorpej branches: 1.2.2; 1.2.8;
Add examples for including the kernel crypto bits from either crypto-us
or crypto-intl, commented out, with instructions to use only one, and
adjust the prefix as necessary.
 1.1 01-Jul-1999  itojun branches: 1.1.2;
kernel configuration for IPv6/IPsec. should be in GENERIC in the future.
(source code will be committed soon)
 1.1.2.3 02-Aug-1999  thorpej Update from trunk.
 1.1.2.2 01-Jul-1999  thorpej Sync w/ -current.
 1.1.2.1 01-Jul-1999  thorpej file GENERIC.v6 was added on branch chs-ubc2 on 1999-07-01 23:12:03 +0000
 1.2.8.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.2.2.1 20-Nov-2000  bouyer Remove files that are no longer on the trunck
 1.34 16-Feb-2025  jakllsch Add and enable WSDISPLAY_SCROLLSUPPORT in non-INSTALLish macppc kernels

Also, fix the whitespace of this line in the GENERIC_601 kernel where it
was already enabled.
 1.33 16-Feb-2025  jakllsch Add and enable WSDISPLAY_CUSTOM_OUTPUT in macppc non-INSTALL kernels.

Indirectly addresses PR 59079 by allowing userland control of default
colors of wsemul wsdisplays.
 1.32 02-Apr-2024  charlotte branches: 1.32.2;
Mention DKWEDGE_METHOD_TOS in several kernel config files
 1.31 29-Jan-2024  christos PR/57889: Ricardo Branco: ext2fs does not have user immutable and append
file flags, only system ones. Restrict those to the superuser. Before
the behavior was controlled by EXT2FS_SYSTEM_FLAGS. Make that behavior the
default.
 1.30 07-Aug-2022  simonb UFS/LFS dirhash:
- Enable UFS_DIRHASH if the architecture or kernel model specific config
file can use 128MB of RAM or more.
- Remove experimental tag from UFS_DIRHASH; it's been with RUMP kernel
and by a number of NetBSD developers for years.
- Add LFS_DIRHASH if LFS was enabled.
- Be somewhat consistent with FS options order.
 1.29 21-Jan-2021  nia add a commented out compat_ossaudio wherever there's compat_linux

requested by mrg
 1.28 27-Sep-2020  roy branches: 1.28.2;
vether: Add to kernel configurations

It's only enabled if the kernel enabled bridge AND tap.
Otherwise it's commented out.
 1.27 01-Aug-2020  maxv Remove references to BRIDGE_IPF, it is now compiled in by default.
 1.26 25-Mar-2020  jdolecek remove 'file-system SMBFS' and 'pseudo-device nsmb' from all kernel configs
to prepare for their eventual removal
 1.25 11-Dec-2019  scole Synchronize htdocs, manual, comments, and code so that enabling the platinumfb is done using "platinum" in openfirmware settings. Remove "screen" option which was somewhat disingenuous.
 1.24 26-Apr-2019  sevan Use veriexec.config to reduce duplication
 1.23 07-Jan-2019  scole increase MEMORY_DISK_ROOT_SIZE slightly to avoid running out of space
when doing some sysinst options.

Add ahc and rtk options for my testing convenience. The 601 kernels
are still small enough for netbooting.
 1.22 12-Nov-2018  scole Add scroll support, wsmouse
 1.21 01-Aug-2018  maxv Unreference IPF/PF from all the config files, and enable NPF instead when
wanted. This also fixes some inconsistencies I saw in several files (eg
IPF options while IPF was not compiled, IPF+PF enabled by default, etc).
 1.20 26-Feb-2018  sevan branches: 1.20.2; 1.20.4;
Remove support for macofcons(4), it's not actually possible to build a kernel
with it enabled - See PR port-macppc/53004 and it may have further problems even
so.
From <macallan>:
"There is some early console code that uses OF output but it causes problems
when we get close to MMU setup - I think it can go, it hasn't been enabled in
any config in at least a decade as far as I know."
 1.19 24-Feb-2018  sevan Remove legacy comment regarding the instability of awacs(4)
Enable awacs(4), skipping MAMBO config as it is for an emulator.

From <macallan>
"that warning about the awacs driver making some
machines lock up can probably go. It's ancient and I've never seen it
actually happen, I have several oldish macs with different awacs
variants and it's enabled in all my configs. In fact it predates my
macppc interrupt cleanup ( I think I did that in 2005 or so ) and I
strongly suspect that fixed the problem.
( the ancient code didn't properly distinguish between edge and level
triggered interrupts on grand central / heathrow type hardware, IIRC it
always just checked the level register(s) which resulted in edge
triggered interrupts being missed or misdetected. Most of the mac-io
goop from that time uses edge triggered interrupts, which includes
awacs )

If this actually happens to anyone I'd like to know about it"
 1.18 23-Feb-2018  sevan Enable BUFQ_PRIOCSCAN by default for NetBSD/macppc.
Drop references to NEW_BUFQ_STRATEGY and replace with currently available
options BUFQ_READPRIO and BUFQ_PRIOCSCAN.

ok <macallan>
 1.17 17-Feb-2018  sevan With the introduction of ddb.dumpstack which is enabled by default, we no longer
need to explicitly set DDB_COMMANDONENTER to run a trace.
 1.16 23-Jan-2018  sevan Alternate buffer queue strategies no longer considered experimental, update
description.

Discussed on tech-kern
http://mail-index.netbsd.org/tech-kern/2018/01/21/msg023002.html
 1.15 14-Sep-2017  mrg clean up COMPAT_* options for native netbsd code:
- new series of files that are useful for saying "i want everything
since netbsd 1.4", etc.
- use the fact COMPAT_* options have future dependancies to remove
many redundant options.

removes about 3000 lines total across kernel configuration files.
tested about 30 random kernels in the changed list.
 1.14 13-Sep-2017  sevan Remove support for VERIFIED_EXEC_FP_RMD160, VERIFIED_EXEC_FP_SHA1, and VERIFIED_EXEC_FP_MD5 options.
These algorithms are either broken or on their way to being broken.

Discussed on tech-security
http://mail-index.netbsd.org/tech-security/2017/08/21/msg000936.html

ok riastradh
 1.13 29-Jul-2017  maxv Remove TCP_COMPAT_42 from the config files. Pass 3.
 1.12 26-Feb-2017  rin branches: 1.12.6;
Add DKWEDGE_METHOD_RDB option, which is enabled for x86, commented out for
other platforms by default.
 1.11 13-Dec-2016  christos branches: 1.11.2;
wildcard speaker attachments, now that we can handle many of them.
 1.10 10-Dec-2016  christos remove VAUDIOSPEAKER for now, will be done differently.
 1.9 08-Dec-2016  nat Add a synthesized pc beeper and keyboard bell for platforms with an audio
device.
 1.8 10-Jun-2016  macallan branches: 1.8.2;
add driver for 'platinum' onboard video found in Power Mac 7200 and possibly
other machines
from s_cole
 1.7 21-Oct-2014  macallan branches: 1.7.2;
RADEONFB_MMAP_BARS is no more
 1.6 19-Sep-2014  christos Disable BSDLABEL and MBR DKWEDGE methods again since sysinst does not work
with wedges.
 1.5 24-Aug-2014  jnemeth Create an "options MODULAR_DEFAULT_AUTOLOAD" config option and add
it to all kernel configs that contain "options MODULAR". This
option turns on module autoloading by default (which is the current
default). This allows people who don't want module autoloading on
by default to disable it by simply removing/commentting this line.
 1.4 23-Aug-2014  dholland Systematize (and in many cases, fix) the comments on options COMPAT_NN.

There are quite a few configs that are missing some COMPAT_NN options
in ways that don't make sense; this should probably get cleaned up
too, but for the time being I've not added or removed anything.
 1.3 18-Aug-2014  christos branches: 1.3.2;
- Enable Wedge support for MBR/BSDLABEL where it was commented out.
- Add apple partition support where it was missing
- Add comments where missing
 1.2 16-Aug-2014  apb Add "options COMPAT_70" to all kernel configuration files that
already had "options COMPAT_60".
 1.1 03-Mar-2014  macallan branches: 1.1.4; 1.1.6; 1.1.8;
config goop for ppc601 support
GENERIC_601 more or less resembles a Power Macintosh 7200 with a few drivers
thrown in for convenience while keeping the kernel itself smaller than 4MB
 1.1.8.1 15-May-2015  snj Pull up following revision(s) (requested by jnemeth in ticket #762):
share/man/man4/options.4: revision 1.442
sys/arch/amd64/conf/ALL: revision 1.18
sys/arch/amd64/conf/GENERIC: revision 1.396
sys/arch/dreamcast/conf/GENERIC: revision 1.119
sys/arch/epoc32/conf/GENERIC: revision 1.6
sys/arch/evbarm/conf/BCM5301X: revision 1.24
sys/arch/evbarm/conf/BCM56340: revision 1.9
sys/arch/evbarm/conf/IMX23_OLINUXINO: revision 1.9
sys/arch/evbarm/conf/std.beagle: revision 1.13
sys/arch/evbarm/conf/std.kobo: revision 1.2
sys/arch/evbarm/conf/std.netwalker: revision 1.10
sys/arch/evbppc/conf/P2020DS: revision 1.25
sys/arch/evbppc/conf/RB800: revision 1.30
sys/arch/evbppc/conf/TWRP1025: revision 1.18
sys/arch/hp300/conf/GENERIC: revision 1.187
sys/arch/hpcsh/conf/GENERIC: revision 1.104
sys/arch/i386/conf/GENERIC: revision 1.1111
sys/arch/i386/conf/MONOLITHIC: revision 1.17
sys/arch/landisk/conf/GENERIC: revision 1.43
sys/arch/luna68k/conf/GENERIC: revision 1.117
sys/arch/macppc/conf/GENERIC: revision 1.316
sys/arch/macppc/conf/GENERIC_601: revision 1.5
sys/arch/mmeye/conf/MMEYE_WLF: revision 1.16
sys/arch/news68k/conf/GENERIC: revision 1.123
sys/arch/sandpoint/conf/GENERIC: revision 1.85
sys/arch/shark/conf/GENERIC: revision 1.119
sys/arch/sparc/conf/GENERIC: revision 1.246
sys/arch/sparc64/conf/GENERIC: revision 1.174
sys/arch/sun3/conf/GENERIC3X: revision 1.125
sys/arch/sun3/conf/GENERIC: revision 1.169
sys/arch/x68k/conf/GENERIC: revision 1.177
sys/arch/zaurus/conf/GENERIC: revision 1.62
sys/conf/files: revision 1.1099
sys/kern/kern_module.c: revisions 1.98, 1.99
Create an "options MODULAR_DEFAULT_AUTOLOAD" config option and add
it to all kernel configs that contain "options MODULAR". This
option turns on module autoloading by default (which is the current
default). This allows people who don't want module autoloading on
by default to disable it by simply removing/commentting this line.
--
fix typo. (s/MODULE_DEFAULT_AUTOLOAD/MODULAR_DEFAULT_AUTOLOAD/)
 1.1.6.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.1.6.1 03-Mar-2014  yamt file GENERIC_601 was added on branch yamt-pagecache on 2014-05-22 11:39:56 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 03-Mar-2014  rmind file GENERIC_601 was added on branch rmind-smpnet on 2014-05-18 17:45:16 +0000
 1.3.2.3 03-Dec-2017  jdolecek update from HEAD
 1.3.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.2.1 18-Aug-2014  tls file GENERIC_601 was added on branch tls-maxphys on 2014-08-20 00:03:11 +0000
 1.7.2.3 28-Aug-2017  skrll Sync with HEAD
 1.7.2.2 05-Feb-2017  skrll Sync with HEAD
 1.7.2.1 09-Jul-2016  skrll Sync with HEAD
 1.8.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.8.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.11.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.12.6.2 26-Feb-2018  snj Pull up following revision(s) (requested by sevan in ticket #579):
sys/arch/macppc/conf/GENERIC: 1.342
sys/arch/macppc/conf/GENERIC_601: 1.18
sys/arch/macppc/conf/MAMBO: 1.29
sys/arch/macppc/conf/POWERMAC_G5: 1.31
Enable BUFQ_PRIOCSCAN by default for NetBSD/macppc.
Drop references to NEW_BUFQ_STRATEGY and replace with currently available
options BUFQ_READPRIO and BUFQ_PRIOCSCAN.
ok <macallan>
 1.12.6.1 26-Jan-2018  martin Pull up following revision(s) (requested by sevan in ticket #510):
sys/arch/sun3/conf/GENERIC3X: revision 1.130
sys/arch/sparc64/conf/GENERIC: revision 1.203
sys/arch/news68k/conf/LIBERO: revision 1.66
sys/arch/amiga/conf/DRACO: revision 1.185
sys/arch/evbarm/conf/MV2120: revision 1.35
sys/arch/x68k/conf/GENERIC: revision 1.187
sys/arch/rs6000/conf/GENERIC: revision 1.39
sys/arch/news68k/conf/GENERIC_TINY: revision 1.86
sys/arch/i386/conf/XEN3_DOMU: revision 1.88
sys/arch/iyonix/conf/GENERIC: revision 1.97
sys/arch/evbarm64/conf/A64EMUL: revision 1.11
sys/arch/mvme68k/conf/GENERIC: revision 1.98
sys/arch/acorn32/conf/GENERIC: revision 1.124
sys/arch/i386/conf/XEN3_DOM0: revision 1.125
sys/arch/cobalt/conf/INSTALL: revision 1.65
sys/arch/macppc/conf/GENERIC_601: revision 1.16
sys/arch/hppa/conf/GENERIC: revision 1.17
sys/arch/amiga/conf/GENERIC.in: revision 1.137
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.33
sys/arch/netwinder/conf/GENERIC: revision 1.134
sys/arch/amd64/conf/XEN3_DOMU: revision 1.83
sys/arch/mac68k/conf/GENERIC: revision 1.225
sys/arch/arc/conf/RPC44: revision 1.54
sys/arch/mipsco/conf/GENERIC: revision 1.92
sys/arch/cats/conf/GENERIC: revision 1.166
sys/arch/amd64/conf/XEN3_DOM0: revision 1.145
sys/arch/amigappc/conf/GENERIC: revision 1.33
sys/arch/sun3/conf/GENERIC: revision 1.176
sys/arch/news68k/conf/GENERIC: revision 1.130
sys/arch/hpcsh/conf/GENERIC: revision 1.110
sys/arch/hp300/conf/GENERIC: revision 1.198
sys/arch/atari/conf/GENERIC.in: revision 1.115
sys/arch/sparc/conf/MRCOFFEE: revision 1.54
sys/arch/evbppc/conf/EXPLORA451: revision 1.62
sys/arch/cesfic/conf/GENERIC: revision 1.69
sys/arch/vax/conf/GENERIC: revision 1.204
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.115
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.112
sys/arch/sparc/conf/GENERIC: revision 1.258
sys/arch/next68k/conf/GENERIC: revision 1.145
sys/arch/evbarm/conf/MMNET_GENERIC: revision 1.34
sys/arch/prep/conf/GENERIC: revision 1.185
sys/arch/amiga/conf/INSTALL: revision 1.129
sys/arch/newsmips/conf/GENERIC: revision 1.133
sys/arch/cobalt/conf/GENERIC: revision 1.156
sys/arch/sun2/conf/GENERIC: revision 1.99
sys/arch/luna68k/conf/INSTALL: revision 1.25
sys/arch/amigappc/conf/NULL: revision 1.53
sys/arch/acorn26/conf/GENERIC: revision 1.85
sys/arch/vax/conf/VAX780: revision 1.25
sys/arch/luna68k/conf/GENERIC: revision 1.125
sys/arch/ews4800mips/conf/GENERIC: revision 1.56
sys/arch/macppc/conf/POWERMAC_G5: revision 1.29
sys/arch/arc/conf/GENERIC: revision 1.189
sys/arch/macppc/conf/MAMBO: revision 1.27
sys/arch/acorn32/conf/EB7500ATX: revision 1.64
sys/arch/pmax/conf/GENERIC: revision 1.196
sys/arch/pmax/conf/GENERIC64: revision 1.28
sys/arch/amiga/conf/GENERIC: revision 1.319
sys/arch/evbarm/conf/MPCSA_GENERIC: revision 1.55
sys/arch/macppc/conf/GENERIC: revision 1.339
sys/arch/emips/conf/GENERIC: revision 1.21
sys/arch/sandpoint/conf/GENERIC: revision 1.97
sys/arch/landisk/conf/GENERIC: revision 1.58
sys/arch/bebox/conf/GENERIC: revision 1.157
sys/arch/alpha/conf/GENERIC: revision 1.379
Alternate buffer queue strategies no longer considered experimental, update
description.
Discussed on tech-kern
http://mail-index.netbsd.org/tech-kern/2018/01/21/msg023002.html
 1.20.4.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.20.4.1 10-Jun-2019  christos Sync with HEAD
 1.20.2.3 18-Jan-2019  pgoyette Synch with HEAD
 1.20.2.2 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.20.2.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.28.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.32.2.1 02-Aug-2025  perseant Sync with HEAD
 1.18 10-Feb-2025  christos bump for clang/llvm build
 1.17 07-Jan-2019  scole branches: 1.17.36;
increase MEMORY_DISK_ROOT_SIZE slightly to avoid running out of space
when doing some sysinst options.

Add ahc and rtk options for my testing convenience. The 601 kernels
are still small enough for netbooting.
 1.16 10-Aug-2014  joerg branches: 1.16.26; 1.16.28;
Bump the ramdisk size on macppc and sandpoint somewhat to compensate for
larger code with LLVM.
 1.15 07-Aug-2014  gdt Get macppc to build again by adjusting sizes.

In addition to the ramdisk size, it is necessary to have matching MD
sizes. Increase the MD sizes, and leave a comment near the ramdisk
size to ease future changes.
 1.14 06-Aug-2014  martin Bump all image sizes slightly again
 1.13 05-Aug-2014  martin Update all ramdisk sizes
 1.12 23-Mar-2012  he branches: 1.12.2; 1.12.12;
Bump the ramdisk size with 100KB so that the contents fits again.
 1.11 24-Dec-2010  aymeric branches: 1.11.8; 1.11.12;
Bump ramdisk size by 64K. This allows release builds to finish on macppc.
 1.10 06-Feb-2009  jym branches: 1.10.6;
Changes to MEMORY_RBFLAGS option:
- renamed to MEMORY_DISK_RBFLAGS to better fit the rest of the
MEMORY_DISK options(4)
- change default value to RB_AUTOBOOT instead of RB_SINGLE, and adapt
the config(5) files accordingly
- document this option inside options(4)

See also http://mail-index.netbsd.org/tech-kern/2008/12/25/msg003924.html

Reviewed by abs@ in private mail.
 1.9 11-Dec-2005  christos branches: 1.9.78; 1.9.86;
merge ktrace-lwp.
 1.8 21-Oct-2004  wrstuden Now that we have ofwboot load at 0xe00000, it doesn't make sense
for this kernel to load at 0x800000.
 1.7 02-Apr-2002  lukem branches: 1.7.10; 1.7.12;
Rename MEMORY_DISK_SIZE (formerly MINIROOTSIZE) to MEMORY_DISK_ROOT_SIZE,
which was suggested by Izumi Tsutsui <tsutsui@ceres.dti.ne.jp> as
being more consistent with what it's controlling...
 1.6 10-Mar-2002  lukem * rename MINIROOTSIZE to MEMORY_DISK_SIZE, so that all md(4) options
are now consistently named
* fold opt_mdsize.h into opt_md.h
 1.5 27-Nov-2000  tsubai branches: 1.5.4; 1.5.8;
Change base address to 0x800000.
 1.4 27-Nov-2000  soren Removed increased BUFCACHE/BUFPAGES.
 1.3 28-Aug-1999  tsubai branches: 1.3.2; 1.3.12;
Increase md size to 2MB.
 1.2 26-Mar-1999  tsubai branches: 1.2.2;
include GENERIC.
 1.1 26-Mar-1999  tsubai ``INSTALL'' + USB doesn't work (binutils bug?).
So use this instead.
 1.2.2.1 01-Mar-2000  he Apply patch (requested by tsubai):
Bump miniroot size to 1.6MB here too.
 1.3.12.1 22-Apr-2002  he Apply patch (requested by briggs):
Comment out BUFPAGES, now that GENERIC defines it.
 1.3.2.1 08-Dec-2000  bouyer Sync with HEAD.
 1.5.8.2 17-Apr-2002  nathanw Catch up to -current.
 1.5.8.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.5.4.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.5.4.1 16-Mar-2002  jdolecek Catch up with -current.
 1.7.12.1 12-Nov-2004  jmc Pullup rev 1.8 (requested by wrstuden in ticket #951)

Now that we have ofwboot load at 0xe00000, it doesnt make sense
for this kernel to load at 0x800000.
 1.7.10.1 02-Nov-2004  skrll Sync with HEAD.
 1.9.86.1 03-Mar-2009  skrll Sync with HEAD.
 1.9.78.1 04-May-2009  yamt sync with head.
 1.10.6.1 05-Mar-2011  rmind sync with head
 1.11.12.1 05-Apr-2012  mrg sync to latest -current.
 1.11.8.1 17-Apr-2012  yamt sync with head
 1.12.12.1 10-Aug-2014  tls Rebase.
 1.12.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.16.28.1 10-Jun-2019  christos Sync with HEAD
 1.16.26.1 18-Jan-2019  pgoyette Synch with HEAD
 1.17.36.1 02-Aug-2025  perseant Sync with HEAD
 1.132 10-Feb-2025  christos bump for clang/llvm build
 1.131 05-Apr-2020  sevan branches: 1.131.28;
Support the use of DHCP in the install environment
 1.130 08-Jan-2020  macallan add makphy, found in late(ish) PowerBooks
 1.129 07-Jan-2019  scole branches: 1.129.6;
increase MEMORY_DISK_ROOT_SIZE slightly to avoid running out of space
when doing some sysinst options.

Add ahc and rtk options for my testing convenience. The 601 kernels
are still small enough for netbooting.
 1.128 31-Aug-2018  sevan Enable USB 2.0 support so installs go a little faster on systems which support
it.
Include support for USB Ethernet adapters and relevant PHY as a fallback if
onboard Ethernet port is unavailable for some reason.
 1.127 11-May-2018  macallan branches: 1.127.2;
fix tpyo
 1.126 14-Sep-2017  mrg branches: 1.126.2;
clean up COMPAT_* options for native netbsd code:
- new series of files that are useful for saying "i want everything
since netbsd 1.4", etc.
- use the fact COMPAT_* options have future dependancies to remove
many redundant options.

removes about 3000 lines total across kernel configuration files.
tested about 30 random kernels in the changed list.
 1.125 23-Aug-2014  dholland Systematize (and in many cases, fix) the comments on options COMPAT_NN.

There are quite a few configs that are missing some COMPAT_NN options
in ways that don't make sense; this should probably get cleaned up
too, but for the time being I've not added or removed anything.
 1.124 10-Aug-2014  joerg Bump the ramdisk size on macppc and sandpoint somewhat to compensate for
larger code with LLVM.
 1.123 08-Aug-2014  joerg Don't set -mmultiple or -mno-string for PowerPC, the difference is too
small to really matter and it sometimes even increases the size.
 1.122 07-Aug-2014  gdt Get macppc to build again by adjusting sizes.

In addition to the ramdisk size, it is necessary to have matching MD
sizes. Increase the MD sizes, and leave a comment near the ramdisk
size to ease future changes.
 1.121 06-Aug-2014  martin Bump all image sizes slightly again
 1.120 05-Aug-2014  martin Adapt to bigger ramdisk image
 1.119 27-Apr-2013  christos branches: 1.119.8;
the bogus number police
 1.118 27-Apr-2013  christos remove confusing numeric locators where they are unused.
 1.117 17-Aug-2012  abs branches: 1.117.2;
Update all kernel configs mentioning WSEMUL_* but not already including
WSDISPLAY_COMPAT_USL using the following rules:
- If WSEMUL_ is commented out, add commented out out WSDISPLAY_COMPAT_USL
- If INSTALL or obviously memory constrained, add WSDISPLAY_DEFAULTSCREENS=1
and commented out WSDISPLAY_COMPAT_USL
- Otherwise add WSDISPLAY_COMPAT_USL

Some of the INSTALL configs for larger memory machines are probably suitable
for adding WSDISPLAY_COMPAT_USL.

Now wsconscfg(8) should be able to switch VTs when expected.

Implemented after no objection from tech-kern to the following:

On 5 June 2012 09:47, David Brownlee <abs@absd.org> wrote:
> wsconscfg(8) requires WSDISPLAY_COMPAT_USL in order to switch virtual
> terminals.
>
> Except when in an exceptionally memory or space constrained
> environment (INSTALL being the obvious case), is there any reason why
> all GENERIC and GENERIC-like kernels which have wscons enabled
> shouldn't also have WSDISPLAY_COMPAT_USL?
 1.116 14-Jul-2012  jmmv Add umass to the macppc INSTALL kernel so that it is easier to perform
USB-based installations by reading the release files from a USB drive.
 1.115 23-Mar-2012  he Bump the ramdisk size with 100KB so that the contents fits again.
 1.114 11-Jan-2012  macallan include a big and a small font now that rasops should pick the one more
appropriate for whatever video mode we're in
 1.113 18-Dec-2011  dholland WABPL is no longer considered experimental (has not been for some time)
so update its comment in config files.
 1.112 22-Nov-2011  tls branches: 1.112.2;

The rnd pseudo-device is not really optional, because it is in the same
source file as the entropy-pool code itself. Move it to std. This
will be cleaned up more when I split the sources up as they should be.

This fixes build breaks on several ports. Thanks to Havard Eidnes for
pointing them out.
 1.111 24-Dec-2010  aymeric branches: 1.111.8;
Bump ramdisk size by 64K. This allows release builds to finish on macppc.
 1.110 23-Nov-2010  hannken Remove unused count from pseudo-device md.
 1.109 16-Apr-2010  pooka Remove unused count (invariably "4") from pseudo-device fss.
 1.108 06-Feb-2009  jym branches: 1.108.4; 1.108.6;
Changes to MEMORY_RBFLAGS option:
- renamed to MEMORY_DISK_RBFLAGS to better fit the rest of the
MEMORY_DISK options(4)
- change default value to RB_AUTOBOOT instead of RB_SINGLE, and adapt
the config(5) files accordingly
- document this option inside options(4)

See also http://mail-index.netbsd.org/tech-kern/2008/12/25/msg003924.html

Reviewed by abs@ in private mail.
 1.107 31-Jul-2008  simonb branches: 1.107.2;
Add "options WAPBL" to standard GENERIC/INSTALL type configs.
 1.106 30-May-2008  tsutsui branches: 1.106.4;
Add options COMPAT_40 to files which have options COMPAT_30.
 1.105 17-Oct-2007  garbled branches: 1.105.16; 1.105.18; 1.105.20; 1.105.22;
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.104 14-Mar-2007  drochner branches: 1.104.6; 1.104.14; 1.104.16; 1.104.18; 1.104.20;
It doesn't make sense to specify "configuration" and "interface"
locators for uhub because a hub can't have sub-devices.
This might be sanity-checked eventually.
Same for ubt now after the change to device attachment.
 1.103 20-Jan-2007  he branches: 1.103.2; 1.103.6; 1.103.8;
Unify the declaration of OF_interpret() between sparc{,64} and macppc
by adding the "nargs" argument to the macppc version, and fix the macppc
ports uses of OF_interpret() accordingly.

Also move the declaration of OF_interpt() from macppc's autoconf.h to
ofw/openfirm.h. This fixes the build of the macppc port.

Approved by macallan@.
 1.102 12-Jan-2007  uwe options<space><tab> police
 1.101 29-Dec-2006  yamt update comments on NFS_V2_ONLY after nqnfs removal. no functional changes.
from Arnaud Lacombe.
 1.100 18-Nov-2006  tsutsui branches: 1.100.2;
Add rgephy at mii for Realtek 8169S.
 1.99 14-Oct-2006  tsutsui Add vge at pci and ciphy at mii. Working on my Apus2000.
 1.98 02-Oct-2006  chs remove MALLOC_NOINLINE, it doesn't do anything anymore.
 1.97 27-Sep-2006  manu - Document COMPAT_15 as doing nothing
- Add COMPAT_15 to all the kernel that had COMPAT_14, for the sake of coherency
- Remove the only occurences of #ifdef COMPAT_15 in the tree: for the ARM
ports, COMPAT_15 was always used in conjunction with EXEC_AOUT. Only EXEC_AOUT
matters here.

This address kern/18407
 1.96 04-Jan-2006  xtraeme branches: 1.96.18; 1.96.20;
Enable rlphy(4).
 1.95 07-Dec-2005  tsutsui branches: 1.95.2;
Remove obsolete options VNODE_OP_NOINLINE.
 1.94 07-Dec-2005  tsutsui Adjust comments for options FFS_NO_SNAPSHOT.

XXX: This option should be mentioned in options(4).
 1.93 09-Sep-2005  drochner remove "dev" locators from cardbus device definitions, it doesn't
make sense technically and might be removed
 1.92 19-Aug-2005  christos Enable ptyfs by default on the non-install and non small/tiny/ramdisk kernels
 1.91 19-Aug-2005  christos 64 bit inode changes.
 1.90 09-Jun-2005  tron branches: 1.90.2;
Enable RAIDframe support in the NetBSD-macppc installation media.
Based on patches submitted by Ian Spray in PR port-macppc/30465.
 1.89 31-May-2005  tron Remove attachment for the piixide(4) driver from all non-x86 kernel
configurations because Intel IDE disk controllers only exist as part
of Intel chipsets for x86 systems.
 1.88 31-May-2005  tron Remove unnecessary per-driver scsibus attachments and use
"scsibus* at scsi?" instead.
 1.87 18-Feb-2005  dsl branches: 1.87.4;
Invert FFS_SNAPSHOT to FFS_NO_SNAPSHOT
 1.86 11-Feb-2005  dsl Add 'option FFS_SNAPSHOT' to most of the config files.
Commented out for kernels that appear to hace space constraints.
 1.85 31-Jan-2005  hannken Add file system snapshots to kernel configs.

- Ffs internal snapshots get compiled in unconditionally.

- File system snapshot device fss(4) added to all kernel configs that
have a disk. Device is commented out on all non-GENERIC kernels.

Reviewed by: Jason Thorpe <thorpej@netbsd.org>
 1.84 17-Jan-2005  briggs branches: 1.84.2;
Add option COMPAT_20. Pointed out by Chris Tribo in PR port-macppc/28988.
 1.83 08-Jan-2005  briggs branches: 1.83.2;
Make obio match multiple times to allow access to devices on systems
where there might be devices under two I/O bridges (like PowerBook G3s).
Attempt to have devices under 'gatwick' share parental interrupt. This
may still need some work, but a step in the right direction.
From Tim Kelly.
 1.82 09-Dec-2004  briggs Add wi devices so that devices can install over wireless LAN.
Addresses part of PR port-macppc/26466 from Chris Scott.
 1.81 09-Dec-2004  briggs Add VIA Rhine to install kernel.
Addresses PR port-macppc/26459 from Daan Goedkoop.
 1.80 24-Nov-2004  bouyer pdcsata(4), a driver for the Promise SATA150 (aka PDC203xx) serie of
controllers. Tested with a PDC20375 (2 SATA, one PATA) controller on sparc64.
Added to all kernel config file which had pdcide(4).
 1.79 10-Nov-2004  christos Add COMPAT_BSDPTY to the rest of the config files.
 1.78 21-Oct-2004  wrstuden Now that we have ofwboot load at 0xe00000, it doesn't make sense for
this kernel to load at 0x800000 - move back to the default and we
have around 13 MB of space for the kernel.
 1.77 15-Jul-2004  atatat Add "options SYSCTL_INCLUDE_DESCR" to a lot of configs, but commented
out in most of them.
 1.76 22-Jun-2004  mrg Add re; Realtek GbE.
 1.75 29-Mar-2004  kristerw branches: 1.75.2;
Add the wsmux pseudo-device. This will make the adb keyboard work
even if the heuristics in the console attachment code fail to
identify the keyboard type.

This should fix PR 22317 and part of PR 24778.
 1.74 29-Mar-2004  kristerw Add "wdc* at pci? dev ? function ?".
 1.73 14-Dec-2003  thorpej Split the Intel i31244 SATA controller ("Artisea") driver out of piixide
into its own driver (artsata).
 1.72 13-Dec-2003  thorpej Split out the Silicon Image SATALink support into its own driver,
"satalink".
 1.71 18-Oct-2003  lukem Use one 'atabus* at ata?' instead of multiple 'atabus* at FOOide? channel ?'
Use 'atapibus* at atapi?' instead of 'atapibus* at atabus?'
 1.70 08-Oct-2003  bouyer Add new per-chip pciide drivers.
 1.69 08-Oct-2003  bouyer Add atabus.
 1.68 25-Sep-2003  matt Add COMPAT_16
 1.67 10-Sep-2003  grant add gem and brgphy so we have ethernet on the PowerBook G4 DVI.
 1.66 06-Sep-2003  itojun add rnd(4) device to installation media.
necessary for many purposes, including password seeding, tcp sequence number,
and more. see tech-security
 1.65 28-Sep-2002  dbj branches: 1.65.6;
add options APPLE_UFS, from PR #17345
add uninorth pci controller, from PR #18427
 1.64 18-Sep-2002  lukem enable USERCONF by default; it's small and extremely useful to have available.
 1.63 05-Jul-2002  abs Ensure all INSTALL config files consistantly include PIPE_SOCKETPAIR,
MALLOC_NOINLINE, and VNODE_OP_NOINLINE. The exceptions are when they
include another config files that already defines the options, or if
they are for an embedded board, just define a few extra options, and
do not already define PIPE_SOCKETPAIR.
 1.62 18-Jun-2002  itojun make macppc install floppy IPv6 ready
(we have two floppies anyways, and there's plenty of space in 2nd floppy)
 1.61 25-Apr-2002  atatat branches: 1.61.2; 1.61.4;
Add the INCLUDE_CONFIG_FILE option to all config files. In config
files that are generic (ie, GENERIC, GENERICSBC, GENERIC32, ALL, or
ALPHA), it is uncommented.
 1.60 17-Apr-2002  mycroft Switch from de to tlp by default.
 1.59 12-Apr-2002  gmcgarry Add commented-out USERCONF option. Mainly useful for install media
and can be optionally enabled based on miniroot and ramdisk size
requirements.
 1.58 02-Apr-2002  lukem Rename MEMORY_DISK_SIZE (formerly MINIROOTSIZE) to MEMORY_DISK_ROOT_SIZE,
which was suggested by Izumi Tsutsui <tsutsui@ceres.dti.ne.jp> as
being more consistent with what it's controlling...
 1.57 30-Mar-2002  tsutsui Add options MEMORY_DISK_SERVER=0 (to disable user-space mdconfig(8) support).
 1.56 10-Mar-2002  lukem * rename MINIROOTSIZE to MEMORY_DISK_SIZE, so that all md(4) options
are now consistently named
* fold opt_mdsize.h into opt_md.h
 1.55 10-Feb-2002  wiz Update description for icsphy.
 1.54 27-Jan-2002  jdolecek add options PIPE_SOCKETPAIR to individual kernel configs
the option is commented out on everything but kernels I was able
to recognize as INSTALL-like or ones for small memory machines
 1.53 17-Jan-2002  wiz Fix ukbd attachment. Noted by Patrick Welche on port-macppc.
 1.52 03-Jan-2002  mbw tv@netbsd says that the desired behavior for macppc is for de to be default
for DEC-based chips, and to have tlp available for tulip clones. The change
in GENERIC is such that TLP_MATCH options are commented out (allowing de to
attach to DEC-based chips), and change in is INSTALL such that de is present
and TLP_MATCH options are commented out.

The addition of de in INSTALL increases its compressed size by about 17 KB.

Primarily the goal is to have INSTALL and GENERIC use the same device.
This will fix PR port-macppc/10779.

It has been tested with the 1.5.3_ALPHA GENERIC and INSTALL kernels on my
PowerMacintosh 7300 with a 21140A (now de, previously tlp) and a
Lite-On 82C115 (tlp).

de0 at pci0 dev 15 function 0
de0: interrupting at irq 25
de0: Asante 21140A [10-100Mb/s] pass 2.2
de0: address 00:00:94:a4:03:35
de0: enabling 10baseT port

tlp0 at pci0 dev 14 function 0: Lite-On 82C115 Ethernet, pass 2.5
tlp0: interrupting at irq 24
tlp0: Ethernet address 00:00:94:b6:16:ef
tlp0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX
 1.51 20-Nov-2001  lukem cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""
 1.50 29-Aug-2001  briggs branches: 1.50.6;
Add adw
 1.49 22-Aug-2001  hubertf More comment changes: 90x[B] -> 90x[BC]
 1.48 03-Aug-2001  tsubai Add bmtphy.
 1.47 10-Jun-2001  tsubai branches: 1.47.2;
Remove options NMBCLUSTERS=1024 -- it's default now.
 1.46 03-Jun-2001  tsutsui Add iha at pci .
 1.45 27-May-2001  wiz Add RTC_OFFSET=0 line.
 1.44 23-Mar-2001  tsubai Remove devices which don't exist on floppy based models.
Now boot floppy fits 1.4MB again.
 1.43 27-Feb-2001  matt branches: 1.43.2;
Add gpio hook.
 1.42 24-Jan-2001  jmc Turn on NFS_V2_ONLY as the kernel has gotten too big for the ramdisk otherwise.
 1.41 20-Dec-2000  matt Add pciide
 1.40 07-Nov-2000  matt Reduce maxusers to 12 (this is a single user kernel after all).
Remove COMPAT_13 since it's not needed.
 1.39 07-Nov-2000  matt Switch from the old yucky ncr to the new good siop driver for 53c8xx.
 1.38 14-Oct-2000  tsubai Use VNODE_OP_NOINLINE.
 1.37 02-Oct-2000  abs Ensure all INSTALL* kernels have two ptys, and a note explaining why:
pseudo-device pty 2 # pseudo-terminals (Sysinst needs two)
(Some installers may not be using sysinst, in which case this just reduces
the number of ptys from 16 that are not used to 2 that are not used)
For i386 conf files, no change other than comments.
 1.36 29-Sep-2000  tsutsui Add sip* at pci.
 1.35 25-Sep-2000  abs Use "options<SPACE><TAB>" not "options<TAB>" - noted by simonb.
Move VNODE_OP_NOINLINE and NFS_V2_ONLY into '# Filesystem options' section.
Consistently label '# Filesystem options' and '#File systems' sections.
 1.34 25-Sep-2000  abs Ensure all INSTALL config files have (at least) COPTS="-Os", cincluding bebox
based on it working already for macppc.
Also add commented out:
#options VNODE_OP_NOINLINE # Don't inline vnode op calls
#options NFS_V2_ONLY # Exclude NFS3 and NQNFS code
as suggestions for additional savings
 1.33 24-Sep-2000  jdolecek don't specify number of ptys if >= 16 (current default initial number)
pty comments: normalize and g/c what is no longer relevant
 1.32 24-Jul-2000  tsubai Delete kernfs.
 1.31 17-Jun-2000  tsubai branches: 1.31.2;
Remove "options NFS_BOOT_BOOTPARAM" to fit 1.4M floppy.
(still have NFS_BOOT_DHCP)
 1.30 11-Jun-2000  matt Add TLP_MATCH_*. Remove gm*.
 1.29 11-Jun-2000  tsubai Enable DMA transfer on obio IDE.
 1.28 08-Jun-2000  matt Squeeze a few more bytes so the INSTALL kernel will fit on a floppy.
Use tlp instead of de. Add in gm[ac]. Remove slip and Gallant 22x12 font.
Compile ofwboot.elf -Os.
 1.27 26-May-2000  tsutsui branches: 1.27.2;
Add epic* at pci.
 1.26 25-May-2000  tsutsui Add fxp* at pci.
 1.25 25-Apr-2000  tsubai Add ex* at pci and rtk* at pci.
 1.24 27-Feb-2000  tsubai Add gmac. (commented out)
 1.23 14-Feb-2000  tsubai Add uninorth. Now iMac DV and Power Macintosh G4 should run NetBSD.
 1.22 09-Feb-2000  tsubai Add wsfont options.
 1.21 08-Feb-2000  tsubai Use -Os -mmultiple to reduce size.
Add cbb and pcmcia/cardbus devices.
Nuke BUFPAGES=800 kludge.
 1.20 03-Feb-2000  tsubai * Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.19 25-Jan-2000  tsubai Add PHYs.
 1.18 26-Dec-1999  tsutsui Oops, forgot to add scsibus* at ncr?
 1.17 26-Dec-1999  tsutsui Add ncr* at pci?
 1.16 10-Nov-1999  mycroft branches: 1.16.2;
Add USB support.
 1.15 28-Aug-1999  tsubai branches: 1.15.2; 1.15.4; 1.15.6;
Increase md size to 2MB.
 1.14 27-Aug-1999  tsubai Change the start address of INSTALL kernel to 0x800000 to use larger
contiguous space for memory disk.
 1.13 05-Aug-1999  tsubai Add mediabay.
 1.12 29-Jul-1999  augustss It's time to be COMPAT_14.
 1.11 01-Apr-1999  tsubai branches: 1.11.2; 1.11.4;
Enable "de".
 1.10 22-Feb-1999  tsubai Add MESH SCSI driver.
Sort entries.
 1.9 04-Feb-1999  tsubai Uncomment PCI-PCI bridges.
 1.8 27-Jan-1999  tsubai Add file-system MFS.
 1.7 17-Jan-1999  tsubai Add bmac ethernet.
 1.6 28-Dec-1998  tsubai Configure only one wskbd/wsmouse.
 1.5 10-Dec-1998  tsubai Add wd and atapi.
 1.4 28-Oct-1998  dante Add support for macppc
Very special thanks to Itsumi Tsutsui for his invaluable collaboration.
 1.3 18-Oct-1998  tsubai Make compilable without aed.
 1.2 14-Oct-1998  tsubai Sync to ``POWERMAC'' config.
 1.1 29-Jul-1998  tsubai Add ``install floppy'' config file.
 1.11.4.1 02-Aug-1999  thorpej Update from trunk.
 1.11.2.1 23-Feb-2000  he Apply patch (requested by he):
Increase miniroot size and permit a DNS resolver in on the install
floppy.
 1.15.6.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.15.4.1 15-Nov-1999  fvdl Sync with -current
 1.15.2.6 27-Mar-2001  bouyer Sync with HEAD.
 1.15.2.5 12-Mar-2001  bouyer Sync with HEAD.
 1.15.2.4 11-Feb-2001  bouyer Sync with HEAD.
 1.15.2.3 05-Jan-2001  bouyer Sync with HEAD
 1.15.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.15.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.16.2.2 10-Nov-1999  mycroft Add USB support.
 1.16.2.1 10-Nov-1999  mycroft file INSTALL was added on branch comdex-fall-1999 on 1999-11-10 05:57:53 +0000
 1.27.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.31.2.5 22-Apr-2002  he Apply patch (requested by briggs):
Set BUFPAGES to 1024 to be able to boot on large-memory machines,
and squeeze INSTALL so that there is enough room on the boot
floppy.
 1.31.2.4 05-Jan-2002  he Pull up revision 1.52 (via patch, requested by mbw):
Add the tlp(4) driver to GENERIC, and make the choice of the
de(4) driver vs. the tlp(4) driver consistent between the INSTALL
and GENERIC kernels. The choice is to use the de(4) driver for
the DEC-based Tulip cards, and tlp(4) for the Tulip clones
supported by that driver.
 1.31.2.3 26-May-2001  he Apply patch (requested by mbw):
Enable the gmac ethernet driver in this kernel. Fixes PR#12892.
 1.31.2.2 10-Nov-2000  tv Pullup 1.39 and 1.40 by patch [matt]:
Reduce maxusers to 12 (this is a single user kernel after all).
Remove COMPAT_13 since it's not needed.
Switch from the old yucky ncr to the new good siop driver for 53c8xx.
[releng: used to reduce size to fit on install floppy]
 1.31.2.1 01-Nov-2000  tv Pullup 1.36 [tsutsui, mycroft]:
Add sip* at pci.
 1.43.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.43.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.47.2.8 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.47.2.7 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.47.2.6 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.47.2.5 16-Mar-2002  jdolecek Catch up with -current.
 1.47.2.4 11-Feb-2002  jdolecek Sync w/ -current.
 1.47.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.47.2.2 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.47.2.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.50.6.9 18-Oct-2002  nathanw Catch up to -current.
 1.50.6.8 01-Aug-2002  nathanw Catch up to -current.
 1.50.6.7 20-Jun-2002  nathanw Catch up to -current.
 1.50.6.6 17-Apr-2002  nathanw Catch up to -current.
 1.50.6.5 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.50.6.4 28-Feb-2002  nathanw Catch up to -current.
 1.50.6.3 11-Jan-2002  nathanw More catchup.
 1.50.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.50.6.1 29-Aug-2001  nathanw file INSTALL was added on branch nathanw_sa on 2002-01-08 00:26:09 +0000
 1.61.4.5 24-Apr-2004  tron Pull up revision 1.74 (requested by kristerw in ticket #1675):
Add "wdc* at pci? dev ? function ?".
 1.61.4.4 20-Apr-2004  tron Pull up revision 1.75 (requested by kristerw in ticket #1676):
Add the wsmux pseudo-device. This will make the adb keyboard work
even if the heuristics in the console attachment code fail to
identify the keyboard type.
This should fix PR 22317 and part of PR 24778.
 1.61.4.3 20-Apr-2004  tron Pull up revision 1.67 (requested by kristerw in ticket #1674):
add gem and brgphy so we have ethernet on the PowerBook G4 DVI.
 1.61.4.2 03-Nov-2002  he Pull up revision 1.62 (requested by itojun in ticket #347):
Make macppc install floppy IPv6-ready.
 1.61.4.1 30-Sep-2002  lukem Apply patch, as we don't want all of rev 1.65 (requested by lukem):
Add uninorth* back in, so that this kernel can boot on various newer systems.
 1.61.2.1 16-Jul-2002  gehenna catch up with -current.
 1.65.6.14 11-Dec-2005  christos Sync with head.
 1.65.6.13 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.65.6.12 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.65.6.11 15-Feb-2005  skrll Sync with HEAD.
 1.65.6.10 04-Feb-2005  skrll Sync with HEAD.
 1.65.6.9 24-Jan-2005  skrll Sync with HEAD.
 1.65.6.8 17-Jan-2005  skrll Sync with HEAD.
 1.65.6.7 18-Dec-2004  skrll Sync with HEAD.
 1.65.6.6 29-Nov-2004  skrll Sync with HEAD.
 1.65.6.5 14-Nov-2004  skrll Sync with HEAD.
 1.65.6.4 02-Nov-2004  skrll Sync with HEAD.
 1.65.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.65.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.65.6.1 03-Aug-2004  skrll Sync with HEAD
 1.75.2.4 07-Jan-2005  jdc Pull up revision 1.78 (requested by wrstuden in ticket #951).

Now that we have ofwboot load at 0xe00000, it doesn't make sense for
this kernel to load at 0x800000 - move back to the default and we
have around 13 MB of space for the kernel.
 1.75.2.3 15-Jul-2004  he branches: 1.75.2.3.2;
Pull up revision 1.77 (requested by atatat in ticket #663):
Add "options SYSCTL_INCLUDE_DESCR" to a lot of configurations,
but commented out in most of them.
 1.75.2.2 24-Jun-2004  jmc Pullup rev 1.76 (requested by mrg in ticket #548)

Add re; Realtek GbE
 1.75.2.1 29-Mar-2004  jmc file INSTALL was added on branch netbsd-2-0 on 2004-06-24 17:26:13 +0000
 1.75.2.3.2.2 02-Apr-2005  he Pull up revision 1.80 (requested by bouyer in ticket #1019):
Add pdcsata(4), a driver for the Promise SATA150 (aka PDC203xx) series of
controllers.
 1.75.2.3.2.1 07-Jan-2005  jdc Pull up revision 1.78 (requested by wrstuden in ticket #951).

Now that we have ofwboot load at 0xe00000, it doesn't make sense for
this kernel to load at 0x800000 - move back to the default and we
have around 13 MB of space for the kernel.
 1.83.2.1 29-Apr-2005  kent sync with -current
 1.84.2.2 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.84.2.1 12-Feb-2005  yamt sync with head.
 1.87.4.4 03-Mar-2007  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1673):
distrib/sets/lists/man/mi 1.844, 1.871
share/man/man4/Makefile 1.372, 1.379 via patch
share/man/man4/re.4 1.8, 1.9, 1.11, 1.12
share/man/man4/rgephy.4 1.1
share/man/man4/rlphy.4 1.1, 1.2
sys/arch/amd64/conf/GENERIC 1.79, 1.89
sys/arch/amd64/conf/INSTALL 1.45, 1.49
sys/arch/i386/conf/GENERIC 1.717, 1.747
sys/arch/i386/conf/GENERIC_LAPTOP 1.164
sys/arch/i386/conf/INSTALL 1.277, 1.283
sys/arch/i386/conf/INSTALL_LAPTOP 1.96, 1.98
sys/arch/i386/conf/XEN2_DOM0 1.22 via patch
sys/arch/macppc/conf/GENERIC 1.220, 1.246
sys/arch/macppc/conf/INSTALL 1.96, 1.100
sys/dev/cardbus/if_re_cardbus.c 1.10
sys/dev/cardbus/if_rtk_cardbus.c 1.29-1.31
sys/dev/ic/rtl8169.c 1.14, 1.20, 1.24, 1.25, 1.28-1.61, 1.63, 1.64-1.81 via patch
sys/dev/ic/rtl81x9.c 1.52, 1.54-1.63, 1.65, 1.67-1.70
sys/dev/ic/rtl81x9reg.h 1.15-1.26
sys/dev/ic/rtl81x9var.h 1.19, 1.21-1.37
sys/dev/mii/files.mii 1.38
sys/dev/mii/miidevs 1.62, 1.64
sys/dev/mii/rgephy.c 1.10, 1.13-1.16
sys/dev/mii/rlphy.c 1.1, 1.6, 1.7, 1.11 via patch
sys/dev/pci/if_re_pci.c 1.13, 1.15-1.17, 1.19-1.23
sys/dev/pci/if_rtk_pci.c 1.25, 1.28, 1.29, 1.31
sys/dev/pci/pcidevs 1.851, 1.852

on re(4):
- improve stability (I believe ;-)
- add a workaround for hardware ip4csum-tx bug
- support newer chips (8169SB/SC, PCIe based 8168 etc.)
- fix 8139C+ support
- enable hardware VLAN
- misc bus_dma(9) fix (which makes re(4) work on mips ports)

on rtk(4):
- fix kern/31348
- fix possible panic on dreamcast
 1.87.4.3 18-Jun-2005  riz Pull up revision 1.90 (requested by tron in ticket #437):
Enable RAIDframe support in the NetBSD-macppc installation media.
Based on patches submitted by Ian Spray in PR port-macppc/30465.
 1.87.4.2 09-Jun-2005  snj Pull up revision 1.88 (requested by tron in ticket #427):
Remove unnecessary per-driver scsibus attachments and use
"scsibus* at scsi?" instead.
 1.87.4.1 01-Jun-2005  riz Pull up revision 1.89 (requested by tron in ticket #362):
Remove attachment for the piixide(4) driver from all non-x86 kernel
configurations because Intel IDE disk controllers only exist as part
of Intel chipsets for x86 systems.
 1.90.2.5 27-Oct-2007  yamt sync with head.
 1.90.2.4 03-Sep-2007  yamt sync with head.
 1.90.2.3 26-Feb-2007  yamt sync with head.
 1.90.2.2 30-Dec-2006  yamt sync with head.
 1.90.2.1 21-Jun-2006  yamt sync with head.
 1.95.2.1 15-Jan-2006  yamt sync with head.
 1.96.20.2 10-Dec-2006  yamt sync with head.
 1.96.20.1 22-Oct-2006  yamt sync with head
 1.96.18.3 01-Feb-2007  ad Sync with head.
 1.96.18.2 12-Jan-2007  ad Sync with head.
 1.96.18.1 18-Nov-2006  ad Sync with head.
 1.100.2.1 08-Mar-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #496):
sys/arch/macppc/conf/INSTALL: revision 1.103
Add "pseudo-device openfirm", required to build this kernel.
 1.103.8.1 11-Jul-2007  mjf Sync with head.
 1.103.6.2 23-Oct-2007  ad Sync with head.
 1.103.6.1 10-Apr-2007  ad Sync with head.
 1.103.2.1 24-Mar-2007  yamt sync with head.
 1.104.20.1 25-Oct-2007  bouyer Sync with HEAD.
 1.104.18.1 18-Oct-2007  yamt sync with head.
 1.104.16.1 06-Nov-2007  matt sync with HEAD
 1.104.14.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.104.6.2 07-Aug-2007  macallan switch to new ADB subsystem
 1.104.6.1 05-Aug-2007  macallan use genfb instead of ofb
 1.105.22.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.105.22.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.105.20.2 11-Aug-2010  yamt sync with head.
 1.105.20.1 04-May-2009  yamt sync with head.
 1.105.18.1 04-Jun-2008  yamt sync with head
 1.105.16.2 28-Sep-2008  mjf Sync with HEAD.
 1.105.16.1 02-Jun-2008  mjf Sync with HEAD.
 1.106.4.1 19-Oct-2008  haad Sync with HEAD.
 1.107.2.1 03-Mar-2009  skrll Sync with HEAD.
 1.108.6.2 05-Mar-2011  rmind sync with head
 1.108.6.1 30-May-2010  rmind sync with head
 1.108.4.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.111.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.111.8.2 30-Oct-2012  yamt sync with head
 1.111.8.1 17-Apr-2012  yamt sync with head
 1.112.2.2 05-Apr-2012  mrg sync to latest -current.
 1.112.2.1 18-Feb-2012  mrg merge to -current.
 1.117.2.3 03-Dec-2017  jdolecek update from HEAD
 1.117.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.117.2.1 23-Jun-2013  tls resync from head
 1.119.8.1 10-Aug-2014  tls Rebase.
 1.126.2.3 18-Jan-2019  pgoyette Synch with HEAD
 1.126.2.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.126.2.1 21-May-2018  pgoyette Sync with HEAD
 1.127.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.127.2.1 10-Jun-2019  christos Sync with HEAD
 1.129.6.1 17-Jan-2020  ad Sync with head.
 1.131.28.1 02-Aug-2025  perseant Sync with HEAD
 1.5 10-Feb-2025  christos bump for clang/llvm build
 1.4 11-Dec-2019  scole branches: 1.4.32;
Synchronize htdocs, manual, comments, and code so that enabling the platinumfb is done using "platinum" in openfirmware settings. Remove "screen" option which was somewhat disingenuous.
 1.3 08-Dec-2019  scole add platinumfb
 1.2 07-Jan-2019  scole branches: 1.2.4; 1.2.6;
increase MEMORY_DISK_ROOT_SIZE slightly to avoid running out of space
when doing some sysinst options.

Add ahc and rtk options for my testing convenience. The 601 kernels
are still small enough for netbooting.
 1.1 12-Nov-2018  scole branches: 1.1.2;
install kernel for ppc601 floppies and iso
 1.1.2.3 18-Jan-2019  pgoyette Synch with HEAD
 1.1.2.2 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.1.2.1 12-Nov-2018  pgoyette file INSTALL_601 was added on branch pgoyette-compat on 2018-11-26 01:52:26 +0000
 1.2.6.1 09-Dec-2019  martin Pull up following revision(s) (requested by scole in ticket #533):

sys/arch/macppc/conf/INSTALL_601: revision 1.3

add platinumfb
 1.2.4.3 08-Apr-2020  martin Merge changes from current as of 20200406
 1.2.4.2 10-Jun-2019  christos Sync with HEAD
 1.2.4.1 07-Jan-2019  christos file INSTALL_601 was added on branch phil-wifi on 2019-06-10 22:06:27 +0000
 1.4.32.1 02-Aug-2025  perseant Sync with HEAD
 1.38 16-Feb-2025  jakllsch Add and enable WSDISPLAY_SCROLLSUPPORT in non-INSTALLish macppc kernels

Also, fix the whitespace of this line in the GENERIC_601 kernel where it
was already enabled.
 1.37 16-Feb-2025  jakllsch Add and enable WSDISPLAY_CUSTOM_OUTPUT in macppc non-INSTALL kernels.

Indirectly addresses PR 59079 by allowing userland control of default
colors of wsemul wsdisplays.
 1.36 29-Jan-2024  christos branches: 1.36.2;
PR/57889: Ricardo Branco: ext2fs does not have user immutable and append
file flags, only system ones. Restrict those to the superuser. Before
the behavior was controlled by EXT2FS_SYSTEM_FLAGS. Make that behavior the
default.
 1.35 07-Aug-2022  simonb UFS/LFS dirhash:
- Enable UFS_DIRHASH if the architecture or kernel model specific config
file can use 128MB of RAM or more.
- Remove experimental tag from UFS_DIRHASH; it's been with RUMP kernel
and by a number of NetBSD developers for years.
- Add LFS_DIRHASH if LFS was enabled.
- Be somewhat consistent with FS options order.
 1.34 04-Apr-2020  jdolecek remove some leftover nsmb(4) references from kernel configs
 1.33 13-Apr-2019  isaki Add drvctl to kernel which has audio device.
audiocfg(1) requires drvctl(4).
 1.32 01-Aug-2018  maxv Unreference IPF/PF from all the config files, and enable NPF instead when
wanted. This also fixes some inconsistencies I saw in several files (eg
IPF options while IPF was not compiled, IPF+PF enabled by default, etc).
 1.31 26-Feb-2018  sevan branches: 1.31.2; 1.31.4;
Remove support for macofcons(4), it's not actually possible to build a kernel
with it enabled - See PR port-macppc/53004 and it may have further problems even
so.
From <macallan>:
"There is some early console code that uses OF output but it causes problems
when we get close to MMU setup - I think it can go, it hasn't been enabled in
any config in at least a decade as far as I know."
 1.30 24-Feb-2018  sevan Remove legacy comment regarding the instability of awacs(4)
Enable awacs(4), skipping MAMBO config as it is for an emulator.

From <macallan>
"that warning about the awacs driver making some
machines lock up can probably go. It's ancient and I've never seen it
actually happen, I have several oldish macs with different awacs
variants and it's enabled in all my configs. In fact it predates my
macppc interrupt cleanup ( I think I did that in 2005 or so ) and I
strongly suspect that fixed the problem.
( the ancient code didn't properly distinguish between edge and level
triggered interrupts on grand central / heathrow type hardware, IIRC it
always just checked the level register(s) which resulted in edge
triggered interrupts being missed or misdetected. Most of the mac-io
goop from that time uses edge triggered interrupts, which includes
awacs )

If this actually happens to anyone I'd like to know about it"
 1.29 23-Feb-2018  sevan Enable BUFQ_PRIOCSCAN by default for NetBSD/macppc.
Drop references to NEW_BUFQ_STRATEGY and replace with currently available
options BUFQ_READPRIO and BUFQ_PRIOCSCAN.

ok <macallan>
 1.28 23-Feb-2018  sevan Remove OFB_ENABLE_CACHE
from <macallan>
"it is outdated, genfb and friends don't need or use it, and it makes no sense
on accelerated drivers either. It tries to BAT-map the framebuffer cacheable,
which works on most macs but makes a few models lock up. Genfb doesn't have that
problem and is faster too."
 1.27 23-Jan-2018  sevan Alternate buffer queue strategies no longer considered experimental, update
description.

Discussed on tech-kern
http://mail-index.netbsd.org/tech-kern/2018/01/21/msg023002.html
 1.26 14-Sep-2017  mrg clean up COMPAT_* options for native netbsd code:
- new series of files that are useful for saying "i want everything
since netbsd 1.4", etc.
- use the fact COMPAT_* options have future dependancies to remove
many redundant options.

removes about 3000 lines total across kernel configuration files.
tested about 30 random kernels in the changed list.
 1.25 29-Jul-2017  maxv Remove TCP_COMPAT_42 from the config files. Pass 3.
 1.24 16-Nov-2014  manu branches: 1.24.2; 1.24.12;
Remove unused extended attributes kernel options

As Masao Uebayashi pointed to me, UFS_EXTATTR_AUTOSTART, LFS_EXTATTR_AUTOSTART
and UFS_EXTATTR_AUTOCREATE are not used anywhere in the code. Remove them
as they have been obsolete for a long time:
UFS_EXTATTR_AUTOSTART was replaced by mount -o extattr
LFS_EXTATTR_AUTOSTART was created to match obsolete UFS_EXTATTR_AUTOSTART
UFS_EXTATTR_AUTOCREATE was replaced by sysctl vfs.ffs.extattr_autocreate
 1.23 12-Nov-2014  manu Support for UFS1 extended attributes in GENERIC and GENERIC-like kernels

This change just brings UFS1 extended attribute *support* in the kernel,
extended attributes are not enabled unless three conditions are met:
1) filesystem is UFS1 (newfs -O1)
2) .attribute/system and .attribute/user directories are created at fs root
3) filesystem is mounted with -o extattr

Some GENERIC kernels are obviously memory constrained, the extended
attributes options were not enabled for them, but just added commented out.
(kernel were considered memory constrained if QUOTA option was disabled)
 1.22 23-Aug-2014  dholland Systematize (and in many cases, fix) the comments on options COMPAT_NN.

There are quite a few configs that are missing some COMPAT_NN options
in ways that don't make sense; this should probably get cleaned up
too, but for the time being I've not added or removed anything.
 1.21 08-Aug-2014  martin branches: 1.21.2;
Make all ramdisk root sizes equal again
 1.20 06-Aug-2014  martin Bump all image sizes slightly again
 1.19 05-Aug-2014  martin Update all ramdisk sizes
 1.18 27-Apr-2013  christos branches: 1.18.8;
the bogus number police
 1.17 17-Aug-2012  abs branches: 1.17.2;
Update all kernel configs mentioning WSEMUL_* but not already including
WSDISPLAY_COMPAT_USL using the following rules:
- If WSEMUL_ is commented out, add commented out out WSDISPLAY_COMPAT_USL
- If INSTALL or obviously memory constrained, add WSDISPLAY_DEFAULTSCREENS=1
and commented out WSDISPLAY_COMPAT_USL
- Otherwise add WSDISPLAY_COMPAT_USL

Some of the INSTALL configs for larger memory machines are probably suitable
for adding WSDISPLAY_COMPAT_USL.

Now wsconscfg(8) should be able to switch VTs when expected.

Implemented after no objection from tech-kern to the following:

On 5 June 2012 09:47, David Brownlee <abs@absd.org> wrote:
> wsconscfg(8) requires WSDISPLAY_COMPAT_USL in order to switch virtual
> terminals.
>
> Except when in an exceptionally memory or space constrained
> environment (INSTALL being the obvious case), is there any reason why
> all GENERIC and GENERIC-like kernels which have wscons enabled
> shouldn't also have WSDISPLAY_COMPAT_USL?
 1.16 10-Mar-2012  joerg P1003_1B_SEMAPHORE is no longer optional.
 1.15 22-Nov-2011  tls branches: 1.15.2;

The rnd pseudo-device is not really optional, because it is in the same
source file as the entropy-pool code itself. Move it to std. This
will be cleaned up more when I split the sources up as they should be.

This fixes build breaks on several ports. Thanks to Havard Eidnes for
pointing them out.
 1.14 30-Jun-2011  wiz branches: 1.14.2;
dependant -> dependent
 1.13 26-Apr-2011  joerg Remove Darwin, MACH and Mach-O support.
 1.12 06-Mar-2011  bouyer merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.11 24-Dec-2010  aymeric branches: 1.11.2; 1.11.4;
Bump ramdisk size by 64K. This allows release builds to finish on macppc.
 1.10 23-Nov-2010  hannken Remove unused count from pseudo-device md.
 1.9 06-Mar-2009  joerg branches: 1.9.4;
Remove SHMMAXPGS from all kernel configs. Dynamically compute the
initial limit as 1/4 of the physical memory. Ensure the limit is at
least 1024 pages, the old default on most platforms.
 1.8 06-Feb-2009  jym branches: 1.8.2;
Changes to MEMORY_RBFLAGS option:
- renamed to MEMORY_DISK_RBFLAGS to better fit the rest of the
MEMORY_DISK options(4)
- change default value to RB_AUTOBOOT instead of RB_SINGLE, and adapt
the config(5) files accordingly
- document this option inside options(4)

See also http://mail-index.netbsd.org/tech-kern/2008/12/25/msg003924.html

Reviewed by abs@ in private mail.
 1.7 24-Nov-2008  ad Remove softdep, pass 1. We are focused on improving journalling.

Proposed on tech-kern@.
 1.6 12-Nov-2008  ad Remove LKMs and switch to the module framework, pass 1.

Proposed on tech-kern@.
 1.5 31-Dec-2007  ad branches: 1.5.6; 1.5.10; 1.5.16; 1.5.18;
Remove systrace. Ok core@.
 1.4 12-Jan-2007  uwe branches: 1.4.24; 1.4.30; 1.4.36;
options<space><tab> police
 1.3 27-Sep-2006  manu branches: 1.3.4;
- Document COMPAT_15 as doing nothing
- Add COMPAT_15 to all the kernel that had COMPAT_14, for the sake of coherency
- Remove the only occurences of #ifdef COMPAT_15 in the tree: for the ARM
ports, COMPAT_15 was always used in conjunction with EXEC_AOUT. Only EXEC_AOUT
matters here.

This address kern/18407
 1.2 12-Aug-2006  christos branches: 1.2.2; 1.2.4; 1.2.6;
Disable SYSTRACE by default on all kernels (discussed with core)
 1.1 05-Aug-2006  sanjayl branches: 1.1.2; 1.1.4;
1st cut of Powermac G5 support (uses bridge mode).
 1.1.4.3 03-Sep-2006  yamt sync with head.
 1.1.4.2 11-Aug-2006  yamt sync with head
 1.1.4.1 05-Aug-2006  yamt file MAMBO was added on branch yamt-pdpolicy on 2006-08-11 15:42:13 +0000
 1.1.2.1 14-Aug-2006  tron Pull up following revision(s) (requested by elad in ticket #17):
sys/arch/sparc/conf/KRUPS: revision 1.38
sys/arch/i386/conf/XEN2_DOMU: revision 1.2
sys/arch/i386/conf/GENERIC_LAPTOP: revision 1.197
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.53
sys/arch/evbsh5/conf/SIMULATOR: revision 1.12
sys/arch/sparc/conf/MRCOFFEE: revision 1.17
sys/arch/next68k/conf/GENERIC: revision 1.104
sys/arch/i386/conf/VIRTUALPC: revision 1.44
sys/arch/ews4800mips/conf/GENERIC: revision 1.11
sys/arch/evbsh5/conf/CAYMAN: revision 1.23
sys/arch/arc/conf/GENERIC: revision 1.141
sys/arch/amd64/conf/GENERIC: revision 1.103
sys/arch/sun3/conf/GENERIC3X: revision 1.90
sys/arch/evbarm/conf/HDL_G: revision 1.3
sys/arch/sun2/conf/GENERIC: revision 1.57
sys/arch/news68k/conf/GENERIC_TINY: revision 1.51
sys/arch/evbppc/conf/EXPLORA451: revision 1.27
sys/arch/amiga/conf/GENERIC.in: revision 1.54
sys/arch/mac68k/conf/GENERIC: revision 1.174
sys/arch/acorn26/conf/GENERIC: revision 1.45
sys/arch/shark/conf/GENERIC: revision 1.64
sys/arch/cesfic/conf/GENERIC: revision 1.44
sys/arch/mvme68k/conf/GENERIC: revision 1.68
sys/arch/i386/conf/XEN2_DOM0: revision 1.4
sys/arch/atari/conf/GENERIC.in: revision 1.63
sys/arch/amiga/conf/GENERIC: revision 1.240
sys/arch/i386/conf/LAMB: revision 1.65
sys/arch/i386/conf/GENERIC: revision 1.773
sys/arch/acorn32/conf/EB7500ATX: revision 1.26
sys/arch/x68k/conf/GENERIC: revision 1.128
sys/arch/vax/conf/GENERIC: revision 1.153
sys/arch/atari/conf/ATARITT: revision 1.81
sys/arch/mipsco/conf/GENERIC: revision 1.60
sys/arch/cobalt/conf/GENERIC: revision 1.101
sys/arch/evbarm/conf/ARMADILLO9: revision 1.13
sys/arch/ofppc/conf/GENERIC: revision 1.93
sys/arch/atari/conf/MILAN-PCIIDE: revision 1.51
sys/arch/arc/conf/RPC44: revision 1.26
sys/arch/sparc64/conf/GENERIC: revision 1.59
sys/arch/i386/conf/XEN3_DOMU: revision 1.2
sys/arch/hp700/conf/GENERIC: revision 1.68
sys/arch/atari/conf/MILAN-ISAIDE: revision 1.47
sys/arch/macppc/conf/GENERIC: revision 1.231
sys/arch/dreamcast/conf/GENERIC: revision 1.72
sys/arch/news68k/conf/GENERIC: revision 1.80
sys/arch/hp300/conf/GENERIC: revision 1.133
sys/arch/mmeye/conf/GENERIC: revision 1.82
sys/arch/macppc/conf/MAMBO: revision 1.2
sys/arch/cats/conf/GENERIC: revision 1.107
sys/arch/atari/conf/FALCON: revision 1.79
sys/arch/acorn32/conf/GENERIC: revision 1.71
sys/arch/sparc/conf/GENERIC: revision 1.190
sys/arch/news68k/conf/LIBERO: revision 1.40
sys/arch/amiga/conf/DRACO: revision 1.114
sys/arch/cobalt/conf/INSTALL: revision 1.23
sys/arch/luna68k/conf/GENERIC: revision 1.73
sys/arch/bebox/conf/GENERIC: revision 1.100
sys/arch/pmax/conf/GENERIC: revision 1.147
sys/arch/amiga/conf/WSCONS: revision 1.52
sys/arch/macppc/conf/POWERMAC_G5: revision 1.2
sys/arch/alpha/conf/ALPHA: revision 1.218
sys/arch/sun3/conf/GENERIC: revision 1.133
sys/arch/prep/conf/GENERIC: revision 1.124
sys/arch/alpha/conf/GENERIC: revision 1.291
sys/arch/atari/conf/HADES: revision 1.71
sys/arch/newsmips/conf/GENERIC: revision 1.93
sys/arch/netwinder/conf/GENERIC: revision 1.82
sys/arch/hpcmips/conf/GENERIC: revision 1.190
sys/arch/amiga/conf/AMIGA: revision 1.98
sys/arch/sbmips/conf/GENERIC: revision 1.54
sys/arch/pc532/conf/GENERIC: revision 1.64
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.53
Disable SYSTRACE by default on all kernels (discussed with core)
 1.2.6.1 22-Oct-2006  yamt sync with head
 1.2.4.2 09-Sep-2006  rpaulo sync with head
 1.2.4.1 12-Aug-2006  rpaulo file MAMBO was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:41:05 +0000
 1.2.2.2 01-Feb-2007  ad Sync with head.
 1.2.2.1 18-Nov-2006  ad Sync with head.
 1.3.4.4 21-Jan-2008  yamt sync with head
 1.3.4.3 26-Feb-2007  yamt sync with head.
 1.3.4.2 30-Dec-2006  yamt sync with head.
 1.3.4.1 27-Sep-2006  yamt file MAMBO was added on branch yamt-lazymbuf on 2006-12-30 20:46:26 +0000
 1.4.36.1 02-Jan-2008  bouyer Sync with HEAD
 1.4.30.1 18-Feb-2008  mjf Sync with HEAD.
 1.4.24.1 09-Jan-2008  matt sync with HEAD
 1.5.18.3 28-Apr-2009  skrll Sync with HEAD.
 1.5.18.2 03-Mar-2009  skrll Sync with HEAD.
 1.5.18.1 19-Jan-2009  skrll Sync with HEAD.
 1.5.16.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.5.10.1 04-May-2009  yamt sync with head.
 1.5.6.1 17-Jan-2009  mjf Sync with HEAD.
 1.8.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.9.4.3 31-May-2011  rmind sync with head
 1.9.4.2 21-Apr-2011  rmind sync with head
 1.9.4.1 05-Mar-2011  rmind sync with head
 1.11.4.1 08-Feb-2011  bouyer Add QUOTA2 where QUOTA is enabled (and QUOTA2 commented out where QUOTA
is commented out)
 1.11.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.14.2.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.14.2.2 30-Oct-2012  yamt sync with head
 1.14.2.1 17-Apr-2012  yamt sync with head
 1.15.2.1 11-Mar-2012  mrg sync to latest -current
 1.17.2.3 03-Dec-2017  jdolecek update from HEAD
 1.17.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.17.2.1 23-Jun-2013  tls resync from head
 1.18.8.1 10-Aug-2014  tls Rebase.
 1.21.2.2 18-Nov-2014  snj Pull up following revision(s) (requested by manu in ticket #251):
sys/arch/acorn26/conf/GENERIC: revision 1.81
sys/arch/acorn32/conf/GENERIC: revision 1.116
sys/arch/alpha/conf/GENERIC: revision 1.362
sys/arch/amd64/conf/ALL: revision 1.23
sys/arch/amd64/conf/GENERIC: revision 1.404
sys/arch/amd64/conf/XEN3_DOM0: revision 1.112
sys/arch/amd64/conf/XEN3_DOMU: revision 1.60
sys/arch/amiga/conf/GENERIC.in: revision 1.129
sys/arch/amiga/conf/GENERIC: revision 1.311
sys/arch/amigappc/conf/GENERIC: revision 1.24
sys/arch/arc/conf/GENERIC: revision 1.184
sys/arch/bebox/conf/GENERIC: revision 1.145
sys/arch/cats/conf/GENERIC: revision 1.155
sys/arch/cesfic/conf/GENERIC: revision 1.65
sys/arch/cobalt/conf/GENERIC: revision 1.147
sys/arch/dreamcast/conf/GENERIC: revision 1.121
sys/arch/emips/conf/GENERIC: revision 1.15
sys/arch/epoc32/conf/GENERIC: revision 1.8
sys/arch/ews4800mips/conf/GENERIC: revision 1.51
sys/arch/hp300/conf/GENERIC: revision 1.190
sys/arch/hpcmips/conf/GENERIC: revision 1.229
sys/arch/hpcsh/conf/GENERIC: revision 1.106
sys/arch/hppa/conf/GENERIC: revision 1.6
sys/arch/i386/conf/ALL: revision 1.389
sys/arch/i386/conf/GENERIC: revision 1.1118
sys/arch/i386/conf/XEN3_DOM0: revision 1.93
sys/arch/i386/conf/XEN3_DOMU: revision 1.65
sys/arch/ibmnws/conf/GENERIC: revision 1.46
sys/arch/iyonix/conf/GENERIC: revision 1.88
sys/arch/landisk/conf/GENERIC: revision 1.45
sys/arch/luna68k/conf/GENERIC: revision 1.119
sys/arch/mac68k/conf/GENERIC: revision 1.220
sys/arch/macppc/conf/GENERIC: revision 1.320
sys/arch/macppc/conf/MAMBO: revision 1.24
sys/arch/macppc/conf/POWERMAC_G5: revision 1.25
sys/arch/mipsco/conf/GENERIC: revision 1.88
sys/arch/mmeye/conf/GENERIC: revision 1.120
sys/arch/mvme68k/conf/GENERIC: revision 1.94
sys/arch/mvmeppc/conf/GENERIC: revision 1.24
sys/arch/netwinder/conf/GENERIC: revision 1.126
sys/arch/news68k/conf/GENERIC: revision 1.125
sys/arch/newsmips/conf/GENERIC: revision 1.129
sys/arch/next68k/conf/GENERIC: revision 1.139
sys/arch/ofppc/conf/GENERIC: revision 1.157
sys/arch/pmax/conf/GENERIC64: revision 1.21
sys/arch/pmax/conf/GENERIC: revision 1.185
sys/arch/prep/conf/GENERIC: revision 1.174
sys/arch/rs6000/conf/GENERIC: revision 1.33
sys/arch/sandpoint/conf/GENERIC: revision 1.88
sys/arch/sbmips/conf/GENERIC: revision 1.101
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.28
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.104
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.106
sys/arch/shark/conf/GENERIC: revision 1.121
sys/arch/sparc/conf/GENERIC: revision 1.248
sys/arch/sparc/conf/TADPOLE3GX: revision 1.65
sys/arch/sparc64/conf/GENERIC: revision 1.177
sys/arch/sparc64/conf/NONPLUS64: revision 1.44
sys/arch/sun2/conf/GENERIC: revision 1.94
sys/arch/sun3/conf/GENERIC: revision 1.171
sys/arch/vax/conf/GENERIC: revision 1.193
sys/arch/vax/conf/VAX780: revision 1.19
sys/arch/x68k/conf/GENERIC: revision 1.179
sys/arch/zaurus/conf/GENERIC: revision 1.65
sys/ufs/files.ufs: revision 1.38
Remove unused extended attributes kernel options

As Masao Uebayashi pointed to me, UFS_EXTATTR_AUTOSTART, LFS_EXTATTR_AUTOSTART
and UFS_EXTATTR_AUTOCREATE are not used anywhere in the code. Remove them
as they have been obsolete for a long time:
UFS_EXTATTR_AUTOSTART was replaced by mount -o extattr
LFS_EXTATTR_AUTOSTART was created to match obsolete UFS_EXTATTR_AUTOSTART
UFS_EXTATTR_AUTOCREATE was replaced by sysctl vfs.ffs.extattr_autocreate
 1.21.2.1 14-Nov-2014  martin Pull up following revision(s) (requested by manu in ticket #232):
sys/arch/next68k/conf/GENERIC: revision 1.138
sys/arch/cobalt/conf/GENERIC: revision 1.146
sys/arch/mvme68k/conf/GENERIC: revision 1.93
sys/arch/vax/conf/VAX780: revision 1.18
sys/arch/newsmips/conf/GENERIC: revision 1.128
sys/arch/luna68k/conf/GENERIC: revision 1.118
sys/arch/sbmips/conf/GENERIC: revision 1.100
sys/arch/pmax/conf/GENERIC: revision 1.184
sys/arch/alpha/conf/GENERIC: revision 1.361
sys/arch/sparc64/conf/GENERIC: revision 1.176
sys/arch/sun3/conf/GENERIC: revision 1.170
sys/arch/shark/conf/GENERIC: revision 1.120
sys/arch/landisk/conf/GENERIC: revision 1.44
sys/arch/bebox/conf/GENERIC: revision 1.144
sys/arch/sparc64/conf/NONPLUS64: revision 1.43
sys/arch/sandpoint/conf/GENERIC: revision 1.87
sys/arch/emips/conf/GENERIC: revision 1.14
sys/arch/amd64/conf/XEN3_DOM0: revision 1.111
sys/arch/dreamcast/conf/GENERIC: revision 1.120
sys/arch/cesfic/conf/GENERIC: revision 1.64
sys/arch/mmeye/conf/GENERIC: revision 1.119
sys/arch/epoc32/conf/GENERIC: revision 1.7
sys/arch/x68k/conf/GENERIC: revision 1.178
sys/arch/iyonix/conf/GENERIC: revision 1.87
sys/arch/sun2/conf/GENERIC: revision 1.93
sys/arch/ews4800mips/conf/GENERIC: revision 1.50
sys/arch/amd64/conf/XEN3_DOMU: revision 1.59
sys/arch/acorn26/conf/GENERIC: revision 1.80
sys/arch/acorn32/conf/GENERIC: revision 1.115
sys/arch/macppc/conf/POWERMAC_G5: revision 1.24
sys/arch/i386/conf/GENERIC: revision 1.1117
sys/arch/arc/conf/GENERIC: revision 1.183
sys/arch/cats/conf/GENERIC: revision 1.154
sys/arch/amiga/conf/GENERIC.in: revision 1.128
sys/arch/zaurus/conf/GENERIC: revision 1.64
sys/arch/netwinder/conf/GENERIC: revision 1.125
sys/arch/hppa/conf/GENERIC: revision 1.5
sys/arch/mvmeppc/conf/GENERIC: revision 1.23
sys/arch/macppc/conf/GENERIC: revision 1.319
sys/arch/amiga/conf/GENERIC: revision 1.310
sys/arch/pmax/conf/GENERIC64: revision 1.20
sys/arch/macppc/conf/MAMBO: revision 1.23
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.27
sys/arch/amigappc/conf/GENERIC: revision 1.23
sys/arch/amd64/conf/GENERIC: revision 1.403
sys/arch/ofppc/conf/GENERIC: revision 1.156
sys/arch/mac68k/conf/GENERIC: revision 1.219
sys/arch/i386/conf/XEN3_DOMU: revision 1.64
sys/arch/mipsco/conf/GENERIC: revision 1.87
sys/arch/hp300/conf/GENERIC: revision 1.189
sys/arch/vax/conf/GENERIC: revision 1.192
sys/arch/news68k/conf/GENERIC: revision 1.124
sys/arch/ibmnws/conf/GENERIC: revision 1.45
sys/arch/hpcsh/conf/GENERIC: revision 1.105
sys/arch/sparc/conf/TADPOLE3GX: revision 1.64
sys/arch/i386/conf/XEN3_DOM0: revision 1.92
sys/arch/sparc/conf/GENERIC: revision 1.247
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.105
sys/arch/prep/conf/GENERIC: revision 1.173
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.103
sys/arch/rs6000/conf/GENERIC: revision 1.32
sys/arch/hpcmips/conf/GENERIC: revision 1.228
Support for UFS1 extended attributes in GENERIC and GENERIC-like kernels
This change just brings UFS1 extended attribute *support* in the kernel,
extended attributes are not enabled unless three conditions are met:
1) filesystem is UFS1 (newfs -O1)
2) .attribute/system and .attribute/user directories are created at fs root
3) filesystem is mounted with -o extattr
Some GENERIC kernels are obviously memory constrained, the extended
attributes options were not enabled for them, but just added commented out.
(kernel were considered memory constrained if QUOTA option was disabled)
 1.24.12.3 26-Feb-2018  snj Pull up following revision(s) (requested by sevan in ticket #579):
sys/arch/macppc/conf/GENERIC: 1.342
sys/arch/macppc/conf/GENERIC_601: 1.18
sys/arch/macppc/conf/MAMBO: 1.29
sys/arch/macppc/conf/POWERMAC_G5: 1.31
Enable BUFQ_PRIOCSCAN by default for NetBSD/macppc.
Drop references to NEW_BUFQ_STRATEGY and replace with currently available
options BUFQ_READPRIO and BUFQ_PRIOCSCAN.
ok <macallan>
 1.24.12.2 26-Feb-2018  snj Pull up following revision(s) (requested by sevan in ticket #578):
sys/arch/macppc/conf/GENERIC: 1.341
sys/arch/macppc/conf/MAMBO: 1.28
sys/arch/macppc/conf/POWERMAC: 1.69
sys/arch/macppc/conf/POWERMAC_G5: 1.30
sys/arch/powerpc/oea/ofw_rascons.c: 1.10
Remove OFB_ENABLE_CACHE
from <macallan>
"it is outdated, genfb and friends don't need or use it, and it makes no
sense on accelerated drivers either. It tries to BAT-map the framebuffer
cacheable, which works on most macs but makes a few models lock up.
Genfb doesn't have that problem and is faster too."
 1.24.12.1 26-Jan-2018  martin Pull up following revision(s) (requested by sevan in ticket #510):
sys/arch/sun3/conf/GENERIC3X: revision 1.130
sys/arch/sparc64/conf/GENERIC: revision 1.203
sys/arch/news68k/conf/LIBERO: revision 1.66
sys/arch/amiga/conf/DRACO: revision 1.185
sys/arch/evbarm/conf/MV2120: revision 1.35
sys/arch/x68k/conf/GENERIC: revision 1.187
sys/arch/rs6000/conf/GENERIC: revision 1.39
sys/arch/news68k/conf/GENERIC_TINY: revision 1.86
sys/arch/i386/conf/XEN3_DOMU: revision 1.88
sys/arch/iyonix/conf/GENERIC: revision 1.97
sys/arch/evbarm64/conf/A64EMUL: revision 1.11
sys/arch/mvme68k/conf/GENERIC: revision 1.98
sys/arch/acorn32/conf/GENERIC: revision 1.124
sys/arch/i386/conf/XEN3_DOM0: revision 1.125
sys/arch/cobalt/conf/INSTALL: revision 1.65
sys/arch/macppc/conf/GENERIC_601: revision 1.16
sys/arch/hppa/conf/GENERIC: revision 1.17
sys/arch/amiga/conf/GENERIC.in: revision 1.137
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.33
sys/arch/netwinder/conf/GENERIC: revision 1.134
sys/arch/amd64/conf/XEN3_DOMU: revision 1.83
sys/arch/mac68k/conf/GENERIC: revision 1.225
sys/arch/arc/conf/RPC44: revision 1.54
sys/arch/mipsco/conf/GENERIC: revision 1.92
sys/arch/cats/conf/GENERIC: revision 1.166
sys/arch/amd64/conf/XEN3_DOM0: revision 1.145
sys/arch/amigappc/conf/GENERIC: revision 1.33
sys/arch/sun3/conf/GENERIC: revision 1.176
sys/arch/news68k/conf/GENERIC: revision 1.130
sys/arch/hpcsh/conf/GENERIC: revision 1.110
sys/arch/hp300/conf/GENERIC: revision 1.198
sys/arch/atari/conf/GENERIC.in: revision 1.115
sys/arch/sparc/conf/MRCOFFEE: revision 1.54
sys/arch/evbppc/conf/EXPLORA451: revision 1.62
sys/arch/cesfic/conf/GENERIC: revision 1.69
sys/arch/vax/conf/GENERIC: revision 1.204
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.115
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.112
sys/arch/sparc/conf/GENERIC: revision 1.258
sys/arch/next68k/conf/GENERIC: revision 1.145
sys/arch/evbarm/conf/MMNET_GENERIC: revision 1.34
sys/arch/prep/conf/GENERIC: revision 1.185
sys/arch/amiga/conf/INSTALL: revision 1.129
sys/arch/newsmips/conf/GENERIC: revision 1.133
sys/arch/cobalt/conf/GENERIC: revision 1.156
sys/arch/sun2/conf/GENERIC: revision 1.99
sys/arch/luna68k/conf/INSTALL: revision 1.25
sys/arch/amigappc/conf/NULL: revision 1.53
sys/arch/acorn26/conf/GENERIC: revision 1.85
sys/arch/vax/conf/VAX780: revision 1.25
sys/arch/luna68k/conf/GENERIC: revision 1.125
sys/arch/ews4800mips/conf/GENERIC: revision 1.56
sys/arch/macppc/conf/POWERMAC_G5: revision 1.29
sys/arch/arc/conf/GENERIC: revision 1.189
sys/arch/macppc/conf/MAMBO: revision 1.27
sys/arch/acorn32/conf/EB7500ATX: revision 1.64
sys/arch/pmax/conf/GENERIC: revision 1.196
sys/arch/pmax/conf/GENERIC64: revision 1.28
sys/arch/amiga/conf/GENERIC: revision 1.319
sys/arch/evbarm/conf/MPCSA_GENERIC: revision 1.55
sys/arch/macppc/conf/GENERIC: revision 1.339
sys/arch/emips/conf/GENERIC: revision 1.21
sys/arch/sandpoint/conf/GENERIC: revision 1.97
sys/arch/landisk/conf/GENERIC: revision 1.58
sys/arch/bebox/conf/GENERIC: revision 1.157
sys/arch/alpha/conf/GENERIC: revision 1.379
Alternate buffer queue strategies no longer considered experimental, update
description.
Discussed on tech-kern
http://mail-index.netbsd.org/tech-kern/2018/01/21/msg023002.html
 1.24.2.1 28-Aug-2017  skrll Sync with HEAD
 1.31.4.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.31.4.1 10-Jun-2019  christos Sync with HEAD
 1.31.2.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.36.2.1 02-Aug-2025  perseant Sync with HEAD
 1.34 17-Jun-2011  matt Switch to use Makefile.powerpc by default. Include the macppc specific
stuff in Makefile.macppc.inc which Makefile.powerpc will include.
 1.33 15-Feb-2009  cube branches: 1.33.10;
Convert the recently introduced awk command to retrieve the value of the
option MODULAR to using %MODULAR%. While it is now possible to only
request the new version in the affected Makefiles, it is made mandatory for
everybody because I just fixed a bug in config(1) that would not make it
fail in the case of a syntax error in the Makefile template.
 1.32 14-Feb-2009  apb Now that "options MODULAR" is handled via defflag, the Makefile
generated by config(1) in the kernel compile directory no longer
contains IDENT=-DMODULAR. Instead, there's an opt_modular.h file that
might or might not contain "#define MODULAR 1".

Adapt to this by adding an OPT_MODULAR variable to relevant Makefiles,
set via an awk script that parses opt_modular.h.
 1.31 11-Dec-2008  alc branches: 1.31.2;
Clean-up makefile stub used to include in the build the binary HAL object
 1.30 13-Nov-2008  ad LKM -> MODULAR
 1.29 01-Mar-2008  joerg branches: 1.29.4; 1.29.10; 1.29.12; 1.29.14; 1.29.18;
Missing assym.h dependency.
 1.28 05-Aug-2006  sanjayl branches: 1.28.34; 1.28.54; 1.28.58;
1st cut of Powermac G5 support (uses bridge mode).
 1.27 04-Apr-2006  gdamore Convert existing ath users to new Makefile, except for amd64, which needs
the rules due to needing to conditionally postprocess the HAL object file.

Macppc needs a a non-ELF HAL (EABI) object, so take care of that by default
in the atheros include file.
 1.26 02-Apr-2006  gdamore Reorganize ath layout as requested by sam@ and suggested by dyoung@ in
http://mail-index.netbsd.org/tech-net/2006/03/15/0000.html.

The new layout almost precisely matches FreeBSD, and should make
future imports much easier.

At the same time, import the current 0.9.16.16 HAL from FreeBSD. According
to sam@, this is the proper version we should be using.
 1.25 02-Mar-2006  dyoung branches: 1.25.2; 1.25.4; 1.25.6;
Build the right HAL for NetBSD/macppc.
 1.24 24-Nov-2005  dbj branches: 1.24.4; 1.24.6;
. Have dbsym explicitly suggest increasing SYMTAB_SPACE when
an overflow occurs.
. Make this error a fatal build time error
. Move the support for dbsym into the MI Makefile.kern.inc,
conditional upon the SYMTAB_SPACE option being defined in
the kernel config file.
 1.23 19-Oct-2005  dyoung branches: 1.23.4;
No need to create opt_ah.h in these makefiles, config(8) takes care
of it.
 1.22 25-Jun-2005  dyoung branches: 1.22.2; 1.22.4;
Move the definitions in dev/pci/files.ath into dev/pci/files.pci.
Stop including dev/pci/files.ath in arch/i386/conf/files.i386,
since we get the same definitions by including dev/pci/files.pci,
now. Remove dev/pci/files.ath.

Add arch/macppc/conf/Makefile.macppc with directives for linking
the Atheros HAL for PowerPC.

In athhal-powerpc-be-eabi.opt_ah.h, #define AH_REGOPS_FUNC 1, since
otherwise the linker complains that the PowerPC HAL cannot link
with register-read/write subroutines.

Add ath(4) to the GENERIC macppc kernel configuration; comment it
out.
 1.21 26-Aug-2001  matt branches: 1.21.18;
Make all powerpc ports use a common Makefile.powerpc (except walnut)
Enforce -Wmissing-prototypes -Wstrict-prototypes for all ppc ports.
Split out macppc cpu support and make common to mpc6xx ports. Make
other mpc6xx ports use it. Add evcnts for mpc6xx traps.
 1.20 19-Jun-2001  simonb branches: 1.20.2;
Add -Wstrict-prototypes.
 1.19 10-Jun-2001  tsubai -Wreturn-type is included in -Wall.
 1.18 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.17 29-May-2001  mrg define _KERNEL_OPT as well as _KERNEL. we will use this in the future to
get kernel "opt_foo.h" headers, rather than _KERNEL && !_LKM.
 1.16 17-May-2001  matt Add ${AOPTS} to AFLAGS
 1.15 17-Dec-2000  jdolecek branches: 1.15.2;
delete obsolete comment
 1.14 09-May-2000  hubertf Add "install" target, so "make install" after building the kernel
does something useful. The target can be redefined by putting a
install-kernel-${MACHINE_NAME} target that fits your needs into
/etc/mk.conf.
 1.13 09-May-2000  thorpej HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9 as well. Also,
make the use of -Wno-uninitialized explicit, don't rely on a compiler
hack to do it for us.
 1.12 01-Feb-2000  tsutsui Revert STRIPPROG -> STRIP
 1.11 24-Jan-2000  tron Add "dependall" target for comfort.
 1.10 19-Jan-2000  tsutsui STRIP -> STRIPPROG
 1.9 27-Aug-1999  tsubai branches: 1.9.2;
Change the start address of INSTALL kernel to 0x800000 to use larger
contiguous space for memory disk.
 1.8 26-Jul-1999  cgd be more efficient when doing the SYSTEM_LD_TAIL for -g kernels: don't
copy them just to strip them, use strip -o.
 1.7 09-Jul-1999  mrg clean up a bit after jason :)

- fix emitrules() like emitfiles() to deal with the prefix (otherwise it
would attempt to find the file in the normal base for the NORMAL_C rule).
- add emitincludes() which adds include directives for each prefix to the
$INCLUDES variable in the makefile.
- add %INCLUDES to each Makefile.arch to deal with the above.

this makes "prefix" actually work in a usable manner, and now i can move
on to fixing compiler warnings (errors) in the ESP code. :)
 1.6 15-Jan-1999  thorpej branches: 1.6.4;
Some minor, mostly costmetic, changes to CPPFLAGS/CFLAGS.
 1.5 08-Jan-1999  augustss Add -Wpointer-arith warning since `void *' arithmetic is not ANSI C.
 1.4 15-Oct-1998  drochner change handling of libkern:
-sys/lib/libkern builds as library per default (as it was documented all
the time)
-ports able to LKM set "KERN_AS=obj" explicitely in their Makefiles
(for now; should depend on actual "option LKM" or -better- functions
included for LKM use should be pulled in by a stub)
-always link libcompat before libkern - libkern stuff can be referred to
by libcompat, but not the other way
 1.3 05-Sep-1998  lukem distclean is a synonym for cleandir
 1.2 31-May-1998  thorpej Specify a non-profiling C rule.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.6.4.1 02-Aug-1999  thorpej Update from trunk.
 1.9.2.2 05-Jan-2001  bouyer Sync with HEAD
 1.9.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.15.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.20.2.1 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.21.18.2 11-Dec-2005  christos Sync with head.
 1.21.18.1 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.22.4.1 26-Oct-2005  yamt sync with head
 1.22.2.3 17-Mar-2008  yamt sync with head.
 1.22.2.2 30-Dec-2006  yamt sync with head.
 1.22.2.1 21-Jun-2006  yamt sync with head.
 1.23.4.1 29-Nov-2005  yamt sync with head.
 1.24.6.1 22-Apr-2006  simonb Sync with head.
 1.24.4.1 09-Sep-2006  rpaulo sync with head
 1.25.6.1 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.25.4.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.25.2.2 11-Aug-2006  yamt sync with head
 1.25.2.1 11-Apr-2006  yamt sync with head
 1.28.58.2 17-Jan-2009  mjf Sync with HEAD.
 1.28.58.1 03-Apr-2008  mjf Sync with HEAD.
 1.28.54.1 24-Mar-2008  keiichi sync with head.
 1.28.34.1 23-Mar-2008  matt sync with HEAD
 1.29.18.1 21-Apr-2010  matt sync to netbsd-5
 1.29.14.1 07-Aug-2009  snj Pull up following revision(s) (requested by sborrill in ticket #905):
sys/arch/alpha/conf/Makefile.alpha: revision 1.81
sys/arch/amd64/conf/Makefile.amd64: revision 1.26
sys/arch/i386/conf/Makefile.i386: revision 1.162
sys/arch/macppc/conf/Makefile.macppc: revision 1.31
sys/arch/mips/conf/Makefile.mips: revision 1.52
sys/arch/sparc64/conf/Makefile.sparc64: revision 1.68
sys/arch/xen/conf/Makefile.xen: revision 1.28
Clean-up makefile stub used to include in the build the binary HAL object
 1.29.12.2 03-Mar-2009  skrll Sync with HEAD.
 1.29.12.1 19-Jan-2009  skrll Sync with HEAD.
 1.29.10.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.29.4.1 04-May-2009  yamt sync with head.
 1.31.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.33.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.2 10-Aug-2014  joerg Put GCC/GAS specific options under ACTIVE_CC == "gcc".
 1.1 17-Jun-2011  matt branches: 1.1.2; 1.1.14;
Switch to use Makefile.powerpc by default. Include the macppc specific
stuff in Makefile.macppc.inc which Makefile.powerpc will include.
 1.1.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.2 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.1.2.1 17-Jun-2011  cherry file Makefile.macppc.inc was added on branch cherry-xenmp on 2011-06-23 14:19:19 +0000
 1.73 16-Feb-2025  jakllsch Add and enable WSDISPLAY_SCROLLSUPPORT in non-INSTALLish macppc kernels

Also, fix the whitespace of this line in the GENERIC_601 kernel where it
was already enabled.
 1.72 16-Feb-2025  jakllsch Add and enable WSDISPLAY_CUSTOM_OUTPUT in macppc non-INSTALL kernels.

Indirectly addresses PR 59079 by allowing userland control of default
colors of wsemul wsdisplays.
 1.71 16-Sep-2019  macallan branches: 1.71.32;
add ktm at adb driver
 1.70 01-Aug-2018  maxv Unreference IPF/PF from all the config files, and enable NPF instead when
wanted. This also fixes some inconsistencies I saw in several files (eg
IPF options while IPF was not compiled, IPF+PF enabled by default, etc).
 1.69 23-Feb-2018  sevan branches: 1.69.2; 1.69.4;
Remove OFB_ENABLE_CACHE
from <macallan>
"it is outdated, genfb and friends don't need or use it, and it makes no sense
on accelerated drivers either. It tries to BAT-map the framebuffer cacheable,
which works on most macs but makes a few models lock up. Genfb doesn't have that
problem and is faster too."
 1.68 22-Sep-2017  macallan remove sgsmix since it can't occur on bandit-based hardware, add valkyriefb
and videopll instead
 1.67 14-Sep-2017  mrg clean up COMPAT_* options for native netbsd code:
- new series of files that are useful for saying "i want everything
since netbsd 1.4", etc.
- use the fact COMPAT_* options have future dependancies to remove
many redundant options.

removes about 3000 lines total across kernel configuration files.
tested about 30 random kernels in the changed list.
 1.66 21-Aug-2015  uebayasi branches: 1.66.10;
Add `pseudo-device ksyms' where `options DDB' is used, because
config(1)/config(5) can't handle module dependency correctly at this
moment.

(This is another proof that shared file definition (`file xxx.c a|b')
is a bad idea.)
 1.65 23-Aug-2014  dholland branches: 1.65.2;
Systematize (and in many cases, fix) the comments on options COMPAT_NN.

There are quite a few configs that are missing some COMPAT_NN options
in ways that don't make sense; this should probably get cleaned up
too, but for the time being I've not added or removed anything.
 1.64 27-Apr-2013  christos remove confusing numeric locators where they are unused.
 1.63 17-Aug-2012  abs branches: 1.63.2;
Update all kernel configs mentioning WSEMUL_* but not already including
WSDISPLAY_COMPAT_USL using the following rules:
- If WSEMUL_ is commented out, add commented out out WSDISPLAY_COMPAT_USL
- If INSTALL or obviously memory constrained, add WSDISPLAY_DEFAULTSCREENS=1
and commented out WSDISPLAY_COMPAT_USL
- Otherwise add WSDISPLAY_COMPAT_USL

Some of the INSTALL configs for larger memory machines are probably suitable
for adding WSDISPLAY_COMPAT_USL.

Now wsconscfg(8) should be able to switch VTs when expected.

Implemented after no objection from tech-kern to the following:

On 5 June 2012 09:47, David Brownlee <abs@absd.org> wrote:
> wsconscfg(8) requires WSDISPLAY_COMPAT_USL in order to switch virtual
> terminals.
>
> Except when in an exceptionally memory or space constrained
> environment (INSTALL being the obvious case), is there any reason why
> all GENERIC and GENERIC-like kernels which have wscons enabled
> shouldn't also have WSDISPLAY_COMPAT_USL?
 1.62 22-Nov-2011  tls The rnd pseudo-device is not really optional, because it is in the same
source file as the entropy-pool code itself. Move it to std. This
will be cleaned up more when I split the sources up as they should be.

This fixes build breaks on several ports. Thanks to Havard Eidnes for
pointing them out.
 1.61 08-May-2010  mrg branches: 1.61.8;
enable IPFILTER_COMPAT in all kernels that have ipfilter already.
canonicalise several of the ipf option segments in various files
(this mostly means adding commented out IPFILTER_DEFAULT_BLOCK,
or adding commented or uncommented IPFILTER_LOG or IPFILTER_LOOKUP
option statements.)

i built about 20 of these kernels to check, but not all of them.
 1.60 16-Apr-2010  pooka Remove unused count (invariably "4") from pseudo-device fss.
 1.59 30-May-2008  tsutsui branches: 1.59.18; 1.59.20;
Add options COMPAT_40 to files which have options COMPAT_30.
 1.58 17-Oct-2007  garbled branches: 1.58.16; 1.58.18; 1.58.20; 1.58.22;
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.57 12-Jan-2007  uwe branches: 1.57.6; 1.57.14; 1.57.22; 1.57.24; 1.57.26; 1.57.28;
options<space><tab> police
 1.56 27-Sep-2006  manu - Document COMPAT_15 as doing nothing
- Add COMPAT_15 to all the kernel that had COMPAT_14, for the sake of coherency
- Remove the only occurences of #ifdef COMPAT_15 in the tree: for the ARM
ports, COMPAT_15 was always used in conjunction with EXEC_AOUT. Only EXEC_AOUT
matters here.

This address kern/18407
 1.55 26-Aug-2006  christos branches: 1.55.2; 1.55.4;
PR/34283: Gene ENonymous: Add IPFILTER_LOOKUP to the default kernel options
Also remove CCITT,NS,NIP
 1.54 05-Feb-2006  cube branches: 1.54.2;
Remove 'count' argument for pseudo-devices that ignore it
(vnd, bpfilter, ppp, gif, gre, tun, sl, strip, faith, stf).
 1.53 04-Feb-2006  rpaulo bpfilter doesn't accept count anymore.
 1.52 07-Dec-2005  tsutsui branches: 1.52.2; 1.52.4; 1.52.6;
Adjust comments for options FFS_NO_SNAPSHOT.

XXX: This option should be mentioned in options(4).
 1.51 19-Aug-2005  christos Enable ptyfs by default on the non-install and non small/tiny/ramdisk kernels
 1.50 19-Aug-2005  christos 64 bit inode changes.
 1.49 31-Jul-2005  yamt revert "defflag VMSWAP" changes for now.
there seems to be far more people who don't want to edit
their kernel config files than i thought.
 1.48 30-Jul-2005  yamt add "options VMSWAP" to non INSTALL kernels.
 1.47 31-May-2005  tron branches: 1.47.2;
Remove unnecessary per-driver scsibus attachments and use
"scsibus* at scsi?" instead.
 1.46 25-Feb-2005  simonb branches: 1.46.2;
Add COMPAT_20 (and COMPAT_16 in some cases) to kernel config files
that didn't have those options but had other earlier compat options.
 1.45 18-Feb-2005  dsl Invert FFS_SNAPSHOT to FFS_NO_SNAPSHOT
 1.44 11-Feb-2005  dsl Add 'option FFS_SNAPSHOT' to most of the config files.
Commented out for kernels that appear to hace space constraints.
 1.43 31-Jan-2005  hannken Add file system snapshots to kernel configs.

- Ffs internal snapshots get compiled in unconditionally.

- File system snapshot device fss(4) added to all kernel configs that
have a disk. Device is commented out on all non-GENERIC kernels.

Reviewed by: Jason Thorpe <thorpej@netbsd.org>
 1.42 08-Jan-2005  briggs branches: 1.42.2; 1.42.4;
Make obio match multiple times to allow access to devices on systems
where there might be devices under two I/O bridges (like PowerBook G3s).
Attempt to have devices under 'gatwick' share parental interrupt. This
may still need some work, but a step in the right direction.
From Tim Kelly.
 1.41 10-Nov-2004  christos Add COMPAT_BSDPTY to the rest of the config files.
 1.40 15-Jul-2004  atatat Add "options SYSCTL_INCLUDE_DESCR" to a lot of configs, but commented
out in most of them.
 1.39 28-Sep-2002  dbj branches: 1.39.6; 1.39.8;
add options APPLE_UFS
This enables Apple UFS support added by PR #17345
 1.38 18-Sep-2002  lukem enable USERCONF by default; it's small and extremely useful to have available.
 1.37 17-Jun-2002  lukem Enable "pseudo-device clockctl" in all kernels, except
installation related kernels (INSTALL* and RAMDISK*).
This enables rc.conf(5) $ntpd_chroot to be used "out of the box"
 1.36 25-Apr-2002  atatat branches: 1.36.2; 1.36.4;
Add the INCLUDE_CONFIG_FILE option to all config files. In config
files that are generic (ie, GENERIC, GENERICSBC, GENERIC32, ALL, or
ALPHA), it is uncommented.
 1.35 17-Apr-2002  mycroft Switch from de to tlp by default.
 1.34 12-Apr-2002  gmcgarry Add commented-out USERCONF option. Mainly useful for install media
and can be optionally enabled based on miniroot and ramdisk size
requirements.
 1.33 07-Mar-2002  wiz Add commented out option OFB_ENABLE_CACHE (speeds up text display on
the console).
 1.32 27-Jan-2002  jdolecek add options PIPE_SOCKETPAIR to individual kernel configs
the option is commented out on everything but kernels I was able
to recognize as INSTALL-like or ones for small memory machines
 1.31 20-Nov-2001  lukem cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""
 1.30 10-Jun-2001  tsubai branches: 1.30.2; 1.30.8;
Remove options NMBCLUSTERS=1024 -- it's default now.
 1.29 27-May-2001  wiz Add RTC_OFFSET=0 line.
 1.28 27-Nov-2000  soren branches: 1.28.2;
Removed increased BUFCACHE/BUFPAGES.
 1.27 14-Nov-2000  matt Add rnd & openfirm to POWERMAC
Add openfirm and commmented-out firewire stuff to GENERIC
 1.26 01-Nov-2000  mycroft Enable DDB history by default.
 1.25 01-Nov-2000  mycroft (Oops. There's no other audio support in this config.)
 1.24 01-Nov-2000  mycroft Add awacs.
 1.23 24-Sep-2000  jdolecek don't specify number of ptys if >= 16 (current default initial number)
pty comments: normalize and g/c what is no longer relevant
 1.22 22-Mar-2000  cgd add commented out option PCI_CONFIG_DUMP whever there's a PCIVERBOSE.
 1.21 09-Feb-2000  tsubai Add wsfont options.
 1.20 03-Feb-2000  tsubai * Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.19 29-Jul-1999  augustss branches: 1.19.2;
It's time to be COMPAT_14.
 1.18 22-Feb-1999  tsubai branches: 1.18.4;
Add MESH SCSI driver.
Sort entries.
 1.17 28-Dec-1998  tsubai Configure only one wskbd/wsmouse.
 1.16 18-Oct-1998  tsubai Make compilable without aed.
 1.15 14-Oct-1998  tsubai Oops, remove ite/grf.
 1.14 14-Oct-1998  tsubai Add wsdisplay.
 1.13 13-Oct-1998  tsubai ADB change.
 1.12 03-Sep-1998  tsubai Switch to UVM on macppc.
 1.11 29-Jul-1998  tsubai Use ite for screen console by default until wscons support.
 1.10 29-Jul-1998  thorpej Use a std options file, like other ports do.
 1.9 28-Jul-1998  thorpej Ah, we use a _different_ ofcons; rename it macofcons to avoid the
name collision.
 1.8 28-Jul-1998  thorpej ofcons attaches to ofbus, not pci! Comment it out, since we do not have
any ofbus support in these configurations.
 1.7 28-Jul-1998  thorpej Support NFS_BOOT_DHCP.
 1.6 03-Jul-1998  tsubai Add nvram device support.
 1.5 26-Jun-1998  lukem remove options FIFO; it's now the default
 1.4 21-Jun-1998  tsubai Stop using "options FIRMWORKSBUGS".
 1.3 05-Jun-1998  tsubai Add support for UVM and MACHINE_NEW_NONCONTIG.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.18.4.1 02-Aug-1999  thorpej Update from trunk.
 1.19.2.3 08-Dec-2000  bouyer Sync with HEAD.
 1.19.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.19.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.1 21-Jun-2001  nathanw Catch up to -current.
 1.30.8.7 18-Oct-2002  nathanw Catch up to -current.
 1.30.8.6 20-Jun-2002  nathanw Catch up to -current.
 1.30.8.5 17-Apr-2002  nathanw Catch up to -current.
 1.30.8.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.30.8.3 28-Feb-2002  nathanw Catch up to -current.
 1.30.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.30.8.1 10-Jun-2001  nathanw file POWERMAC was added on branch nathanw_sa on 2002-01-08 00:26:10 +0000
 1.30.2.6 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.30.2.5 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.30.2.4 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.30.2.3 16-Mar-2002  jdolecek Catch up with -current.
 1.30.2.2 11-Feb-2002  jdolecek Sync w/ -current.
 1.30.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.36.4.1 01-Aug-2002  lukem Pull up revision 1.37 (requested by lukem in ticket #312):
Enable "pseudo-device clockctl" in all kernels, except
installation related kernels (INSTALL* and RAMDISK*).
This enables rc.conf(5) $ntpd_chroot to be used "out of the box"
 1.36.2.1 14-Jul-2002  gehenna catch up with -current.
 1.39.8.1 15-Jul-2004  he Pull up revision 1.40 (requested by atatat in ticket #663):
Add "options SYSCTL_INCLUDE_DESCR" to a lot of configurations,
but commented out in most of them.
 1.39.6.10 11-Dec-2005  christos Sync with head.
 1.39.6.9 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.39.6.8 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.39.6.7 15-Feb-2005  skrll Sync with HEAD.
 1.39.6.6 04-Feb-2005  skrll Sync with HEAD.
 1.39.6.5 17-Jan-2005  skrll Sync with HEAD.
 1.39.6.4 14-Nov-2004  skrll Sync with HEAD.
 1.39.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.39.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.39.6.1 03-Aug-2004  skrll Sync with HEAD
 1.42.4.2 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.42.4.1 12-Feb-2005  yamt sync with head.
 1.42.2.1 29-Apr-2005  kent sync with -current
 1.46.2.1 09-Jun-2005  snj Pull up revision 1.47 (requested by tron in ticket #427):
Remove unnecessary per-driver scsibus attachments and use
"scsibus* at scsi?" instead.
 1.47.2.4 27-Oct-2007  yamt sync with head.
 1.47.2.3 26-Feb-2007  yamt sync with head.
 1.47.2.2 30-Dec-2006  yamt sync with head.
 1.47.2.1 21-Jun-2006  yamt sync with head.
 1.52.6.1 22-Apr-2006  simonb Sync with head.
 1.52.4.1 09-Sep-2006  rpaulo sync with head
 1.52.2.1 18-Feb-2006  yamt sync with head.
 1.54.2.1 03-Sep-2006  yamt sync with head.
 1.55.4.1 22-Oct-2006  yamt sync with head
 1.55.2.2 01-Feb-2007  ad Sync with head.
 1.55.2.1 18-Nov-2006  ad Sync with head.
 1.57.28.1 25-Oct-2007  bouyer Sync with HEAD.
 1.57.26.1 18-Oct-2007  yamt sync with head.
 1.57.24.1 06-Nov-2007  matt sync with HEAD
 1.57.22.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.57.14.2 07-Aug-2007  macallan switch to new ADB subsystem
 1.57.14.1 05-Aug-2007  macallan use genfb instead of ofb
 1.57.6.1 23-Oct-2007  ad Sync with head.
 1.58.22.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.58.20.2 11-Aug-2010  yamt sync with head.
 1.58.20.1 04-May-2009  yamt sync with head.
 1.58.18.1 04-Jun-2008  yamt sync with head
 1.58.16.1 02-Jun-2008  mjf Sync with HEAD.
 1.59.20.1 30-May-2010  rmind sync with head
 1.59.18.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.59.18.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.61.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.61.8.2 30-Oct-2012  yamt sync with head
 1.61.8.1 17-Apr-2012  yamt sync with head
 1.63.2.2 03-Dec-2017  jdolecek update from HEAD
 1.63.2.1 23-Jun-2013  tls resync from head
 1.65.2.1 22-Sep-2015  skrll Sync with HEAD
 1.66.10.1 26-Feb-2018  snj Pull up following revision(s) (requested by sevan in ticket #578):
sys/arch/macppc/conf/GENERIC: 1.341
sys/arch/macppc/conf/MAMBO: 1.28
sys/arch/macppc/conf/POWERMAC: 1.69
sys/arch/macppc/conf/POWERMAC_G5: 1.30
sys/arch/powerpc/oea/ofw_rascons.c: 1.10
Remove OFB_ENABLE_CACHE
from <macallan>
"it is outdated, genfb and friends don't need or use it, and it makes no
sense on accelerated drivers either. It tries to BAT-map the framebuffer
cacheable, which works on most macs but makes a few models lock up.
Genfb doesn't have that problem and is faster too."
 1.69.4.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.69.4.1 10-Jun-2019  christos Sync with HEAD
 1.69.2.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.71.32.1 02-Aug-2025  perseant Sync with HEAD
 1.61 25-Jul-2025  martin Enable PaX mprotect and ASLR here too (just like in GENERIC)
 1.60 16-Feb-2025  jakllsch Add and enable WSDISPLAY_SCROLLSUPPORT in non-INSTALLish macppc kernels

Also, fix the whitespace of this line in the GENERIC_601 kernel where it
was already enabled.
 1.59 16-Feb-2025  jakllsch Add and enable WSDISPLAY_CUSTOM_OUTPUT in macppc non-INSTALL kernels.

Indirectly addresses PR 59079 by allowing userland control of default
colors of wsemul wsdisplays.
 1.58 02-Apr-2024  charlotte branches: 1.58.2;
Mention DKWEDGE_METHOD_TOS in several kernel config files
 1.57 29-Jan-2024  christos PR/57889: Ricardo Branco: ext2fs does not have user immutable and append
file flags, only system ones. Restrict those to the superuser. Before
the behavior was controlled by EXT2FS_SYSTEM_FLAGS. Make that behavior the
default.
 1.56 09-Feb-2023  abs Adjust _all_ cinclude of *.local files

- Ensure always at end
- Use tab rather than spaces
- Add consistent comment
"Pull in optional local configuration - always at end"

The only functional change is that a local file which tried to
override an existing setting (eg with "no foo") would have failed
in some cases before, but now will work
 1.55 07-Aug-2022  simonb UFS/LFS dirhash:
- Enable UFS_DIRHASH if the architecture or kernel model specific config
file can use 128MB of RAM or more.
- Remove experimental tag from UFS_DIRHASH; it's been with RUMP kernel
and by a number of NetBSD developers for years.
- Add LFS_DIRHASH if LFS was enabled.
- Be somewhat consistent with FS options order.
 1.54 19-Jun-2022  macallan we also need WSDISPLAY_COMPAT_PCVT and _SYSCONS
 1.53 15-Jun-2022  macallan uncomment WSDISPLAY_COMPAT_USL
while there, add obiofan
 1.52 22-May-2022  martin Sync pseudo devs crypto and swcrypto with GENERIC
 1.51 22-Feb-2022  martin Incllude POWERMAC_G5.local if it exists
 1.50 26-Dec-2021  andvar fix various typos, mainly in comments.
 1.49 02-Apr-2021  martin branches: 1.49.2; 1.49.12;
Add gpt wedge support
 1.48 02-Apr-2021  martin Add bpf
 1.47 28-Mar-2021  martin Enable a few more filesystems
 1.46 28-Mar-2021  martin Remove makeoptions DEBUG="-g" - we have better ways to achieve the same
(build.sh kernel.gdb= or MKKDEBUG=yes)
 1.45 28-Mar-2021  martin Add siisata
 1.44 02-Mar-2021  macallan branches: 1.44.2;
add gffb
tested on 20" 1.8GHz iMac G5
 1.43 04-Apr-2020  jdolecek branches: 1.43.4;
remove some leftover nsmb(4) references from kernel configs
 1.42 17-Mar-2020  macallan remove OFWOEA_WSCONS_NO_ROM_FONT
 1.41 13-Apr-2019  isaki Add drvctl to kernel which has audio device.
audiocfg(1) requires drvctl(4).
 1.40 01-Aug-2018  maxv Unreference IPF/PF from all the config files, and enable NPF instead when
wanted. This also fixes some inconsistencies I saw in several files (eg
IPF options while IPF was not compiled, IPF+PF enabled by default, etc).
 1.39 28-May-2018  macallan branches: 1.39.2;
add config for SMP G5 kernels
 1.38 28-May-2018  macallan smusat attaches to iic now
 1.37 29-Mar-2018  macallan audio works now, so enable it
 1.36 09-Mar-2018  macallan add adadc driver
 1.35 08-Mar-2018  macallan add fcu at iic
 1.34 04-Mar-2018  macallan branches: 1.34.2;
no more need to hardwire the boot device
 1.33 03-Mar-2018  sevan Return recent changes to configuration file.
Remove legacy options previously removed e.g MACHO & softdep support
Remove bogus numbers
Add or update descriptions
Keep items removed in previous commit commented out
 1.32 02-Mar-2018  macallan add everything currently known to work
 1.31 23-Feb-2018  sevan Enable BUFQ_PRIOCSCAN by default for NetBSD/macppc.
Drop references to NEW_BUFQ_STRATEGY and replace with currently available
options BUFQ_READPRIO and BUFQ_PRIOCSCAN.

ok <macallan>
 1.30 23-Feb-2018  sevan Remove OFB_ENABLE_CACHE
from <macallan>
"it is outdated, genfb and friends don't need or use it, and it makes no sense
on accelerated drivers either. It tries to BAT-map the framebuffer cacheable,
which works on most macs but makes a few models lock up. Genfb doesn't have that
problem and is faster too."
 1.29 23-Jan-2018  sevan Alternate buffer queue strategies no longer considered experimental, update
description.

Discussed on tech-kern
http://mail-index.netbsd.org/tech-kern/2018/01/21/msg023002.html
 1.28 14-Sep-2017  mrg clean up COMPAT_* options for native netbsd code:
- new series of files that are useful for saying "i want everything
since netbsd 1.4", etc.
- use the fact COMPAT_* options have future dependancies to remove
many redundant options.

removes about 3000 lines total across kernel configuration files.
tested about 30 random kernels in the changed list.
 1.27 29-Jul-2017  maxv Remove TCP_COMPAT_42 from the config files. Pass 3.
 1.26 08-Dec-2016  nat branches: 1.26.8;
Add a synthesized pc beeper and keyboard bell for platforms with an audio
device.
 1.25 16-Nov-2014  manu branches: 1.25.2; 1.25.4;
Remove unused extended attributes kernel options

As Masao Uebayashi pointed to me, UFS_EXTATTR_AUTOSTART, LFS_EXTATTR_AUTOSTART
and UFS_EXTATTR_AUTOCREATE are not used anywhere in the code. Remove them
as they have been obsolete for a long time:
UFS_EXTATTR_AUTOSTART was replaced by mount -o extattr
LFS_EXTATTR_AUTOSTART was created to match obsolete UFS_EXTATTR_AUTOSTART
UFS_EXTATTR_AUTOCREATE was replaced by sysctl vfs.ffs.extattr_autocreate
 1.24 12-Nov-2014  manu Support for UFS1 extended attributes in GENERIC and GENERIC-like kernels

This change just brings UFS1 extended attribute *support* in the kernel,
extended attributes are not enabled unless three conditions are met:
1) filesystem is UFS1 (newfs -O1)
2) .attribute/system and .attribute/user directories are created at fs root
3) filesystem is mounted with -o extattr

Some GENERIC kernels are obviously memory constrained, the extended
attributes options were not enabled for them, but just added commented out.
(kernel were considered memory constrained if QUOTA option was disabled)
 1.23 23-Aug-2014  dholland Systematize (and in many cases, fix) the comments on options COMPAT_NN.

There are quite a few configs that are missing some COMPAT_NN options
in ways that don't make sense; this should probably get cleaned up
too, but for the time being I've not added or removed anything.
 1.22 08-Aug-2014  martin branches: 1.22.2;
Make all ramdisk root sizes equal again
 1.21 06-Aug-2014  martin Bump all image sizes slightly again
 1.20 05-Aug-2014  martin Update all ramdisk sizes
 1.19 27-Apr-2013  christos branches: 1.19.8;
the bogus number police
 1.18 17-Aug-2012  abs branches: 1.18.2;
Update all kernel configs mentioning WSEMUL_* but not already including
WSDISPLAY_COMPAT_USL using the following rules:
- If WSEMUL_ is commented out, add commented out out WSDISPLAY_COMPAT_USL
- If INSTALL or obviously memory constrained, add WSDISPLAY_DEFAULTSCREENS=1
and commented out WSDISPLAY_COMPAT_USL
- Otherwise add WSDISPLAY_COMPAT_USL

Some of the INSTALL configs for larger memory machines are probably suitable
for adding WSDISPLAY_COMPAT_USL.

Now wsconscfg(8) should be able to switch VTs when expected.

Implemented after no objection from tech-kern to the following:

On 5 June 2012 09:47, David Brownlee <abs@absd.org> wrote:
> wsconscfg(8) requires WSDISPLAY_COMPAT_USL in order to switch virtual
> terminals.
>
> Except when in an exceptionally memory or space constrained
> environment (INSTALL being the obvious case), is there any reason why
> all GENERIC and GENERIC-like kernels which have wscons enabled
> shouldn't also have WSDISPLAY_COMPAT_USL?
 1.17 10-Mar-2012  joerg P1003_1B_SEMAPHORE is no longer optional.
 1.16 22-Nov-2011  tls branches: 1.16.2;

The rnd pseudo-device is not really optional, because it is in the same
source file as the entropy-pool code itself. Move it to std. This
will be cleaned up more when I split the sources up as they should be.

This fixes build breaks on several ports. Thanks to Havard Eidnes for
pointing them out.
 1.15 30-Jun-2011  wiz branches: 1.15.2;
dependant -> dependent
 1.14 26-Apr-2011  joerg Remove Darwin, MACH and Mach-O support.
 1.13 06-Mar-2011  bouyer merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.12 24-Dec-2010  aymeric branches: 1.12.2; 1.12.4;
Bump ramdisk size by 64K. This allows release builds to finish on macppc.
 1.11 23-Nov-2010  hannken Remove unused count from pseudo-device md.
 1.10 06-Mar-2009  joerg branches: 1.10.4;
Remove SHMMAXPGS from all kernel configs. Dynamically compute the
initial limit as 1/4 of the physical memory. Ensure the limit is at
least 1024 pages, the old default on most platforms.
 1.9 06-Feb-2009  jym branches: 1.9.2;
Changes to MEMORY_RBFLAGS option:
- renamed to MEMORY_DISK_RBFLAGS to better fit the rest of the
MEMORY_DISK options(4)
- change default value to RB_AUTOBOOT instead of RB_SINGLE, and adapt
the config(5) files accordingly
- document this option inside options(4)

See also http://mail-index.netbsd.org/tech-kern/2008/12/25/msg003924.html

Reviewed by abs@ in private mail.
 1.8 24-Nov-2008  ad Remove softdep, pass 1. We are focused on improving journalling.

Proposed on tech-kern@.
 1.7 12-Nov-2008  ad Remove LKMs and switch to the module framework, pass 1.

Proposed on tech-kern@.
 1.6 30-May-2008  tsutsui branches: 1.6.4; 1.6.6;
Add options COMPAT_40 to files which have options COMPAT_30.
 1.5 31-Dec-2007  ad branches: 1.5.6; 1.5.8; 1.5.10; 1.5.12;
Remove systrace. Ok core@.
 1.4 14-Mar-2007  drochner branches: 1.4.16; 1.4.22; 1.4.28;
It doesn't make sense to specify "configuration" and "interface"
locators for uhub because a hub can't have sub-devices.
This might be sanity-checked eventually.
Same for ubt now after the change to device attachment.
 1.3 12-Jan-2007  uwe branches: 1.3.2; 1.3.6; 1.3.8;
options<space><tab> police
 1.2 12-Aug-2006  christos branches: 1.2.2; 1.2.4; 1.2.10;
Disable SYSTRACE by default on all kernels (discussed with core)
 1.1 05-Aug-2006  sanjayl branches: 1.1.2; 1.1.4;
1st cut of Powermac G5 support (uses bridge mode).
 1.1.4.3 03-Sep-2006  yamt sync with head.
 1.1.4.2 11-Aug-2006  yamt sync with head
 1.1.4.1 05-Aug-2006  yamt file POWERMAC_G5 was added on branch yamt-pdpolicy on 2006-08-11 15:42:13 +0000
 1.1.2.1 14-Aug-2006  tron Pull up following revision(s) (requested by elad in ticket #17):
sys/arch/sparc/conf/KRUPS: revision 1.38
sys/arch/i386/conf/XEN2_DOMU: revision 1.2
sys/arch/i386/conf/GENERIC_LAPTOP: revision 1.197
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.53
sys/arch/evbsh5/conf/SIMULATOR: revision 1.12
sys/arch/sparc/conf/MRCOFFEE: revision 1.17
sys/arch/next68k/conf/GENERIC: revision 1.104
sys/arch/i386/conf/VIRTUALPC: revision 1.44
sys/arch/ews4800mips/conf/GENERIC: revision 1.11
sys/arch/evbsh5/conf/CAYMAN: revision 1.23
sys/arch/arc/conf/GENERIC: revision 1.141
sys/arch/amd64/conf/GENERIC: revision 1.103
sys/arch/sun3/conf/GENERIC3X: revision 1.90
sys/arch/evbarm/conf/HDL_G: revision 1.3
sys/arch/sun2/conf/GENERIC: revision 1.57
sys/arch/news68k/conf/GENERIC_TINY: revision 1.51
sys/arch/evbppc/conf/EXPLORA451: revision 1.27
sys/arch/amiga/conf/GENERIC.in: revision 1.54
sys/arch/mac68k/conf/GENERIC: revision 1.174
sys/arch/acorn26/conf/GENERIC: revision 1.45
sys/arch/shark/conf/GENERIC: revision 1.64
sys/arch/cesfic/conf/GENERIC: revision 1.44
sys/arch/mvme68k/conf/GENERIC: revision 1.68
sys/arch/i386/conf/XEN2_DOM0: revision 1.4
sys/arch/atari/conf/GENERIC.in: revision 1.63
sys/arch/amiga/conf/GENERIC: revision 1.240
sys/arch/i386/conf/LAMB: revision 1.65
sys/arch/i386/conf/GENERIC: revision 1.773
sys/arch/acorn32/conf/EB7500ATX: revision 1.26
sys/arch/x68k/conf/GENERIC: revision 1.128
sys/arch/vax/conf/GENERIC: revision 1.153
sys/arch/atari/conf/ATARITT: revision 1.81
sys/arch/mipsco/conf/GENERIC: revision 1.60
sys/arch/cobalt/conf/GENERIC: revision 1.101
sys/arch/evbarm/conf/ARMADILLO9: revision 1.13
sys/arch/ofppc/conf/GENERIC: revision 1.93
sys/arch/atari/conf/MILAN-PCIIDE: revision 1.51
sys/arch/arc/conf/RPC44: revision 1.26
sys/arch/sparc64/conf/GENERIC: revision 1.59
sys/arch/i386/conf/XEN3_DOMU: revision 1.2
sys/arch/hp700/conf/GENERIC: revision 1.68
sys/arch/atari/conf/MILAN-ISAIDE: revision 1.47
sys/arch/macppc/conf/GENERIC: revision 1.231
sys/arch/dreamcast/conf/GENERIC: revision 1.72
sys/arch/news68k/conf/GENERIC: revision 1.80
sys/arch/hp300/conf/GENERIC: revision 1.133
sys/arch/mmeye/conf/GENERIC: revision 1.82
sys/arch/macppc/conf/MAMBO: revision 1.2
sys/arch/cats/conf/GENERIC: revision 1.107
sys/arch/atari/conf/FALCON: revision 1.79
sys/arch/acorn32/conf/GENERIC: revision 1.71
sys/arch/sparc/conf/GENERIC: revision 1.190
sys/arch/news68k/conf/LIBERO: revision 1.40
sys/arch/amiga/conf/DRACO: revision 1.114
sys/arch/cobalt/conf/INSTALL: revision 1.23
sys/arch/luna68k/conf/GENERIC: revision 1.73
sys/arch/bebox/conf/GENERIC: revision 1.100
sys/arch/pmax/conf/GENERIC: revision 1.147
sys/arch/amiga/conf/WSCONS: revision 1.52
sys/arch/macppc/conf/POWERMAC_G5: revision 1.2
sys/arch/alpha/conf/ALPHA: revision 1.218
sys/arch/sun3/conf/GENERIC: revision 1.133
sys/arch/prep/conf/GENERIC: revision 1.124
sys/arch/alpha/conf/GENERIC: revision 1.291
sys/arch/atari/conf/HADES: revision 1.71
sys/arch/newsmips/conf/GENERIC: revision 1.93
sys/arch/netwinder/conf/GENERIC: revision 1.82
sys/arch/hpcmips/conf/GENERIC: revision 1.190
sys/arch/amiga/conf/AMIGA: revision 1.98
sys/arch/sbmips/conf/GENERIC: revision 1.54
sys/arch/pc532/conf/GENERIC: revision 1.64
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.53
Disable SYSTRACE by default on all kernels (discussed with core)
 1.2.10.5 21-Jan-2008  yamt sync with head
 1.2.10.4 03-Sep-2007  yamt sync with head.
 1.2.10.3 26-Feb-2007  yamt sync with head.
 1.2.10.2 30-Dec-2006  yamt sync with head.
 1.2.10.1 12-Aug-2006  yamt file POWERMAC_G5 was added on branch yamt-lazymbuf on 2006-12-30 20:46:26 +0000
 1.2.4.2 09-Sep-2006  rpaulo sync with head
 1.2.4.1 12-Aug-2006  rpaulo file POWERMAC_G5 was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:41:05 +0000
 1.2.2.1 01-Feb-2007  ad Sync with head.
 1.3.8.1 11-Jul-2007  mjf Sync with head.
 1.3.6.1 10-Apr-2007  ad Sync with head.
 1.3.2.1 24-Mar-2007  yamt sync with head.
 1.4.28.1 02-Jan-2008  bouyer Sync with HEAD
 1.4.22.1 18-Feb-2008  mjf Sync with HEAD.
 1.4.16.1 09-Jan-2008  matt sync with HEAD
 1.5.12.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.5.10.1 04-May-2009  yamt sync with head.
 1.5.8.1 04-Jun-2008  yamt sync with head
 1.5.6.2 17-Jan-2009  mjf Sync with HEAD.
 1.5.6.1 02-Jun-2008  mjf Sync with HEAD.
 1.6.6.3 28-Apr-2009  skrll Sync with HEAD.
 1.6.6.2 03-Mar-2009  skrll Sync with HEAD.
 1.6.6.1 19-Jan-2009  skrll Sync with HEAD.
 1.6.4.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.9.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.10.4.3 31-May-2011  rmind sync with head
 1.10.4.2 21-Apr-2011  rmind sync with head
 1.10.4.1 05-Mar-2011  rmind sync with head
 1.12.4.1 08-Feb-2011  bouyer Add QUOTA2 where QUOTA is enabled (and QUOTA2 commented out where QUOTA
is commented out)
 1.12.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.15.2.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.15.2.2 30-Oct-2012  yamt sync with head
 1.15.2.1 17-Apr-2012  yamt sync with head
 1.16.2.1 11-Mar-2012  mrg sync to latest -current
 1.18.2.3 03-Dec-2017  jdolecek update from HEAD
 1.18.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.18.2.1 23-Jun-2013  tls resync from head
 1.19.8.1 10-Aug-2014  tls Rebase.
 1.22.2.2 18-Nov-2014  snj Pull up following revision(s) (requested by manu in ticket #251):
sys/arch/acorn26/conf/GENERIC: revision 1.81
sys/arch/acorn32/conf/GENERIC: revision 1.116
sys/arch/alpha/conf/GENERIC: revision 1.362
sys/arch/amd64/conf/ALL: revision 1.23
sys/arch/amd64/conf/GENERIC: revision 1.404
sys/arch/amd64/conf/XEN3_DOM0: revision 1.112
sys/arch/amd64/conf/XEN3_DOMU: revision 1.60
sys/arch/amiga/conf/GENERIC.in: revision 1.129
sys/arch/amiga/conf/GENERIC: revision 1.311
sys/arch/amigappc/conf/GENERIC: revision 1.24
sys/arch/arc/conf/GENERIC: revision 1.184
sys/arch/bebox/conf/GENERIC: revision 1.145
sys/arch/cats/conf/GENERIC: revision 1.155
sys/arch/cesfic/conf/GENERIC: revision 1.65
sys/arch/cobalt/conf/GENERIC: revision 1.147
sys/arch/dreamcast/conf/GENERIC: revision 1.121
sys/arch/emips/conf/GENERIC: revision 1.15
sys/arch/epoc32/conf/GENERIC: revision 1.8
sys/arch/ews4800mips/conf/GENERIC: revision 1.51
sys/arch/hp300/conf/GENERIC: revision 1.190
sys/arch/hpcmips/conf/GENERIC: revision 1.229
sys/arch/hpcsh/conf/GENERIC: revision 1.106
sys/arch/hppa/conf/GENERIC: revision 1.6
sys/arch/i386/conf/ALL: revision 1.389
sys/arch/i386/conf/GENERIC: revision 1.1118
sys/arch/i386/conf/XEN3_DOM0: revision 1.93
sys/arch/i386/conf/XEN3_DOMU: revision 1.65
sys/arch/ibmnws/conf/GENERIC: revision 1.46
sys/arch/iyonix/conf/GENERIC: revision 1.88
sys/arch/landisk/conf/GENERIC: revision 1.45
sys/arch/luna68k/conf/GENERIC: revision 1.119
sys/arch/mac68k/conf/GENERIC: revision 1.220
sys/arch/macppc/conf/GENERIC: revision 1.320
sys/arch/macppc/conf/MAMBO: revision 1.24
sys/arch/macppc/conf/POWERMAC_G5: revision 1.25
sys/arch/mipsco/conf/GENERIC: revision 1.88
sys/arch/mmeye/conf/GENERIC: revision 1.120
sys/arch/mvme68k/conf/GENERIC: revision 1.94
sys/arch/mvmeppc/conf/GENERIC: revision 1.24
sys/arch/netwinder/conf/GENERIC: revision 1.126
sys/arch/news68k/conf/GENERIC: revision 1.125
sys/arch/newsmips/conf/GENERIC: revision 1.129
sys/arch/next68k/conf/GENERIC: revision 1.139
sys/arch/ofppc/conf/GENERIC: revision 1.157
sys/arch/pmax/conf/GENERIC64: revision 1.21
sys/arch/pmax/conf/GENERIC: revision 1.185
sys/arch/prep/conf/GENERIC: revision 1.174
sys/arch/rs6000/conf/GENERIC: revision 1.33
sys/arch/sandpoint/conf/GENERIC: revision 1.88
sys/arch/sbmips/conf/GENERIC: revision 1.101
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.28
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.104
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.106
sys/arch/shark/conf/GENERIC: revision 1.121
sys/arch/sparc/conf/GENERIC: revision 1.248
sys/arch/sparc/conf/TADPOLE3GX: revision 1.65
sys/arch/sparc64/conf/GENERIC: revision 1.177
sys/arch/sparc64/conf/NONPLUS64: revision 1.44
sys/arch/sun2/conf/GENERIC: revision 1.94
sys/arch/sun3/conf/GENERIC: revision 1.171
sys/arch/vax/conf/GENERIC: revision 1.193
sys/arch/vax/conf/VAX780: revision 1.19
sys/arch/x68k/conf/GENERIC: revision 1.179
sys/arch/zaurus/conf/GENERIC: revision 1.65
sys/ufs/files.ufs: revision 1.38
Remove unused extended attributes kernel options

As Masao Uebayashi pointed to me, UFS_EXTATTR_AUTOSTART, LFS_EXTATTR_AUTOSTART
and UFS_EXTATTR_AUTOCREATE are not used anywhere in the code. Remove them
as they have been obsolete for a long time:
UFS_EXTATTR_AUTOSTART was replaced by mount -o extattr
LFS_EXTATTR_AUTOSTART was created to match obsolete UFS_EXTATTR_AUTOSTART
UFS_EXTATTR_AUTOCREATE was replaced by sysctl vfs.ffs.extattr_autocreate
 1.22.2.1 14-Nov-2014  martin Pull up following revision(s) (requested by manu in ticket #232):
sys/arch/next68k/conf/GENERIC: revision 1.138
sys/arch/cobalt/conf/GENERIC: revision 1.146
sys/arch/mvme68k/conf/GENERIC: revision 1.93
sys/arch/vax/conf/VAX780: revision 1.18
sys/arch/newsmips/conf/GENERIC: revision 1.128
sys/arch/luna68k/conf/GENERIC: revision 1.118
sys/arch/sbmips/conf/GENERIC: revision 1.100
sys/arch/pmax/conf/GENERIC: revision 1.184
sys/arch/alpha/conf/GENERIC: revision 1.361
sys/arch/sparc64/conf/GENERIC: revision 1.176
sys/arch/sun3/conf/GENERIC: revision 1.170
sys/arch/shark/conf/GENERIC: revision 1.120
sys/arch/landisk/conf/GENERIC: revision 1.44
sys/arch/bebox/conf/GENERIC: revision 1.144
sys/arch/sparc64/conf/NONPLUS64: revision 1.43
sys/arch/sandpoint/conf/GENERIC: revision 1.87
sys/arch/emips/conf/GENERIC: revision 1.14
sys/arch/amd64/conf/XEN3_DOM0: revision 1.111
sys/arch/dreamcast/conf/GENERIC: revision 1.120
sys/arch/cesfic/conf/GENERIC: revision 1.64
sys/arch/mmeye/conf/GENERIC: revision 1.119
sys/arch/epoc32/conf/GENERIC: revision 1.7
sys/arch/x68k/conf/GENERIC: revision 1.178
sys/arch/iyonix/conf/GENERIC: revision 1.87
sys/arch/sun2/conf/GENERIC: revision 1.93
sys/arch/ews4800mips/conf/GENERIC: revision 1.50
sys/arch/amd64/conf/XEN3_DOMU: revision 1.59
sys/arch/acorn26/conf/GENERIC: revision 1.80
sys/arch/acorn32/conf/GENERIC: revision 1.115
sys/arch/macppc/conf/POWERMAC_G5: revision 1.24
sys/arch/i386/conf/GENERIC: revision 1.1117
sys/arch/arc/conf/GENERIC: revision 1.183
sys/arch/cats/conf/GENERIC: revision 1.154
sys/arch/amiga/conf/GENERIC.in: revision 1.128
sys/arch/zaurus/conf/GENERIC: revision 1.64
sys/arch/netwinder/conf/GENERIC: revision 1.125
sys/arch/hppa/conf/GENERIC: revision 1.5
sys/arch/mvmeppc/conf/GENERIC: revision 1.23
sys/arch/macppc/conf/GENERIC: revision 1.319
sys/arch/amiga/conf/GENERIC: revision 1.310
sys/arch/pmax/conf/GENERIC64: revision 1.20
sys/arch/macppc/conf/MAMBO: revision 1.23
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.27
sys/arch/amigappc/conf/GENERIC: revision 1.23
sys/arch/amd64/conf/GENERIC: revision 1.403
sys/arch/ofppc/conf/GENERIC: revision 1.156
sys/arch/mac68k/conf/GENERIC: revision 1.219
sys/arch/i386/conf/XEN3_DOMU: revision 1.64
sys/arch/mipsco/conf/GENERIC: revision 1.87
sys/arch/hp300/conf/GENERIC: revision 1.189
sys/arch/vax/conf/GENERIC: revision 1.192
sys/arch/news68k/conf/GENERIC: revision 1.124
sys/arch/ibmnws/conf/GENERIC: revision 1.45
sys/arch/hpcsh/conf/GENERIC: revision 1.105
sys/arch/sparc/conf/TADPOLE3GX: revision 1.64
sys/arch/i386/conf/XEN3_DOM0: revision 1.92
sys/arch/sparc/conf/GENERIC: revision 1.247
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.105
sys/arch/prep/conf/GENERIC: revision 1.173
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.103
sys/arch/rs6000/conf/GENERIC: revision 1.32
sys/arch/hpcmips/conf/GENERIC: revision 1.228
Support for UFS1 extended attributes in GENERIC and GENERIC-like kernels
This change just brings UFS1 extended attribute *support* in the kernel,
extended attributes are not enabled unless three conditions are met:
1) filesystem is UFS1 (newfs -O1)
2) .attribute/system and .attribute/user directories are created at fs root
3) filesystem is mounted with -o extattr
Some GENERIC kernels are obviously memory constrained, the extended
attributes options were not enabled for them, but just added commented out.
(kernel were considered memory constrained if QUOTA option was disabled)
 1.25.4.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.25.2.2 28-Aug-2017  skrll Sync with HEAD
 1.25.2.1 05-Feb-2017  skrll Sync with HEAD
 1.26.8.3 26-Feb-2018  snj Pull up following revision(s) (requested by sevan in ticket #579):
sys/arch/macppc/conf/GENERIC: 1.342
sys/arch/macppc/conf/GENERIC_601: 1.18
sys/arch/macppc/conf/MAMBO: 1.29
sys/arch/macppc/conf/POWERMAC_G5: 1.31
Enable BUFQ_PRIOCSCAN by default for NetBSD/macppc.
Drop references to NEW_BUFQ_STRATEGY and replace with currently available
options BUFQ_READPRIO and BUFQ_PRIOCSCAN.
ok <macallan>
 1.26.8.2 26-Feb-2018  snj Pull up following revision(s) (requested by sevan in ticket #578):
sys/arch/macppc/conf/GENERIC: 1.341
sys/arch/macppc/conf/MAMBO: 1.28
sys/arch/macppc/conf/POWERMAC: 1.69
sys/arch/macppc/conf/POWERMAC_G5: 1.30
sys/arch/powerpc/oea/ofw_rascons.c: 1.10
Remove OFB_ENABLE_CACHE
from <macallan>
"it is outdated, genfb and friends don't need or use it, and it makes no
sense on accelerated drivers either. It tries to BAT-map the framebuffer
cacheable, which works on most macs but makes a few models lock up.
Genfb doesn't have that problem and is faster too."
 1.26.8.1 26-Jan-2018  martin Pull up following revision(s) (requested by sevan in ticket #510):
sys/arch/sun3/conf/GENERIC3X: revision 1.130
sys/arch/sparc64/conf/GENERIC: revision 1.203
sys/arch/news68k/conf/LIBERO: revision 1.66
sys/arch/amiga/conf/DRACO: revision 1.185
sys/arch/evbarm/conf/MV2120: revision 1.35
sys/arch/x68k/conf/GENERIC: revision 1.187
sys/arch/rs6000/conf/GENERIC: revision 1.39
sys/arch/news68k/conf/GENERIC_TINY: revision 1.86
sys/arch/i386/conf/XEN3_DOMU: revision 1.88
sys/arch/iyonix/conf/GENERIC: revision 1.97
sys/arch/evbarm64/conf/A64EMUL: revision 1.11
sys/arch/mvme68k/conf/GENERIC: revision 1.98
sys/arch/acorn32/conf/GENERIC: revision 1.124
sys/arch/i386/conf/XEN3_DOM0: revision 1.125
sys/arch/cobalt/conf/INSTALL: revision 1.65
sys/arch/macppc/conf/GENERIC_601: revision 1.16
sys/arch/hppa/conf/GENERIC: revision 1.17
sys/arch/amiga/conf/GENERIC.in: revision 1.137
sys/arch/sgimips/conf/GENERIC32_IP12: revision 1.33
sys/arch/netwinder/conf/GENERIC: revision 1.134
sys/arch/amd64/conf/XEN3_DOMU: revision 1.83
sys/arch/mac68k/conf/GENERIC: revision 1.225
sys/arch/arc/conf/RPC44: revision 1.54
sys/arch/mipsco/conf/GENERIC: revision 1.92
sys/arch/cats/conf/GENERIC: revision 1.166
sys/arch/amd64/conf/XEN3_DOM0: revision 1.145
sys/arch/amigappc/conf/GENERIC: revision 1.33
sys/arch/sun3/conf/GENERIC: revision 1.176
sys/arch/news68k/conf/GENERIC: revision 1.130
sys/arch/hpcsh/conf/GENERIC: revision 1.110
sys/arch/hp300/conf/GENERIC: revision 1.198
sys/arch/atari/conf/GENERIC.in: revision 1.115
sys/arch/sparc/conf/MRCOFFEE: revision 1.54
sys/arch/evbppc/conf/EXPLORA451: revision 1.62
sys/arch/cesfic/conf/GENERIC: revision 1.69
sys/arch/vax/conf/GENERIC: revision 1.204
sys/arch/sgimips/conf/GENERIC32_IP3x: revision 1.115
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.112
sys/arch/sparc/conf/GENERIC: revision 1.258
sys/arch/next68k/conf/GENERIC: revision 1.145
sys/arch/evbarm/conf/MMNET_GENERIC: revision 1.34
sys/arch/prep/conf/GENERIC: revision 1.185
sys/arch/amiga/conf/INSTALL: revision 1.129
sys/arch/newsmips/conf/GENERIC: revision 1.133
sys/arch/cobalt/conf/GENERIC: revision 1.156
sys/arch/sun2/conf/GENERIC: revision 1.99
sys/arch/luna68k/conf/INSTALL: revision 1.25
sys/arch/amigappc/conf/NULL: revision 1.53
sys/arch/acorn26/conf/GENERIC: revision 1.85
sys/arch/vax/conf/VAX780: revision 1.25
sys/arch/luna68k/conf/GENERIC: revision 1.125
sys/arch/ews4800mips/conf/GENERIC: revision 1.56
sys/arch/macppc/conf/POWERMAC_G5: revision 1.29
sys/arch/arc/conf/GENERIC: revision 1.189
sys/arch/macppc/conf/MAMBO: revision 1.27
sys/arch/acorn32/conf/EB7500ATX: revision 1.64
sys/arch/pmax/conf/GENERIC: revision 1.196
sys/arch/pmax/conf/GENERIC64: revision 1.28
sys/arch/amiga/conf/GENERIC: revision 1.319
sys/arch/evbarm/conf/MPCSA_GENERIC: revision 1.55
sys/arch/macppc/conf/GENERIC: revision 1.339
sys/arch/emips/conf/GENERIC: revision 1.21
sys/arch/sandpoint/conf/GENERIC: revision 1.97
sys/arch/landisk/conf/GENERIC: revision 1.58
sys/arch/bebox/conf/GENERIC: revision 1.157
sys/arch/alpha/conf/GENERIC: revision 1.379
Alternate buffer queue strategies no longer considered experimental, update
description.
Discussed on tech-kern
http://mail-index.netbsd.org/tech-kern/2018/01/21/msg023002.html
 1.34.2.4 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.34.2.3 25-Jun-2018  pgoyette Sync with HEAD
 1.34.2.2 30-Mar-2018  pgoyette Resolve conflicts between branch and HEAD
 1.34.2.1 15-Mar-2018  pgoyette Synch with HEAD
 1.39.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.39.2.1 10-Jun-2019  christos Sync with HEAD
 1.43.4.1 03-Apr-2021  thorpej Sync with HEAD.
 1.44.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.49.12.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.49.2.1 09-May-2021  thorpej Adapt the smu driver to the new i2c device enumeration method. While
here, collapse the "smuiic" driver into the base "smu" driver; it was
superfluous given how the rest of the "smu" driver is structured.
 1.58.2.1 02-Aug-2025  perseant Sync with HEAD
 1.1 28-May-2018  macallan branches: 1.1.2;
add config for SMP G5 kernels
 1.1.2.2 25-Jun-2018  pgoyette Sync with HEAD
 1.1.2.1 28-May-2018  pgoyette file POWERMAC_G5.MP was added on branch pgoyette-compat on 2018-06-25 07:25:43 +0000
 1.27 16-Feb-2025  jakllsch Add and enable WSDISPLAY_SCROLLSUPPORT in non-INSTALLish macppc kernels

Also, fix the whitespace of this line in the GENERIC_601 kernel where it
was already enabled.
 1.26 16-Feb-2025  jakllsch Add and enable WSDISPLAY_CUSTOM_OUTPUT in macppc non-INSTALL kernels.

Indirectly addresses PR 59079 by allowing userland control of default
colors of wsemul wsdisplays.
 1.25 10-Jun-2024  rin branches: 1.25.2;
POWERMAC_G5_11_2: Add options required for full ATF runs

- Enable MODULAR{,_DEFAULT_AUTOLOAD}.
- Switch to filesystems.config.
 1.24 29-Jan-2024  christos PR/57889: Ricardo Branco: ext2fs does not have user immutable and append
file flags, only system ones. Restrict those to the superuser. Before
the behavior was controlled by EXT2FS_SYSTEM_FLAGS. Make that behavior the
default.
 1.23 03-Oct-2023  macallan add xhci
 1.22 07-Aug-2022  simonb UFS/LFS dirhash:
- Enable UFS_DIRHASH if the architecture or kernel model specific config
file can use 128MB of RAM or more.
- Remove experimental tag from UFS_DIRHASH; it's been with RUMP kernel
and by a number of NetBSD developers for years.
- Add LFS_DIRHASH if LFS was enabled.
- Be somewhat consistent with FS options order.
 1.21 22-May-2022  martin Sync pseudo devs crypto and swcrypto with GENERIC
 1.20 07-Jul-2020  rin branches: 1.20.6; 1.20.16;
Enable COPY_SYMTAB in case of directly booted from Open Firmware
with ofwboot being skipped.
 1.19 07-Jul-2020  rin Sync wscons colors with GENERIC; now it works fine!
 1.18 04-Jul-2020  rin Add missing TMPFS, PTYFS, WAPBL, INET6, and NFS_BOOT_DHCP.

XXX
Sync options with GENERIC. It should be better to introduce
GENERIC.common in a similar manner to evbarm.
 1.17 04-Jul-2020  rin Enable snapper(4) and friends. It works just fine.
 1.16 04-Apr-2020  jdolecek remove some leftover nsmb(4) references from kernel configs
 1.15 17-Mar-2020  macallan remove OFWOEA_WSCONS_NO_ROM_FONT
 1.14 12-Nov-2019  macallan add missing usb at ehci
thanks Romain Dolbeau for noticing
 1.13 01-Aug-2018  maxv Unreference IPF/PF from all the config files, and enable NPF instead when
wanted. This also fixes some inconsistencies I saw in several files (eg
IPF options while IPF was not compiled, IPF+PF enabled by default, etc).
 1.12 01-Jun-2018  macallan branches: 1.12.2;
enable svwsata now that it works properly
 1.11 28-May-2018  macallan enable SMP, remove some ADB-only comments
 1.10 20-Apr-2018  macallan smusat attaches to iic now
 1.9 23-Feb-2018  sevan branches: 1.9.2;
Enable BUFQ_PRIOCSCAN by default for NetBSD/macppc.
Drop references to NEW_BUFQ_STRATEGY and replace with currently available
options BUFQ_READPRIO and BUFQ_PRIOCSCAN.

ok <macallan>
 1.8 01-Feb-2018  macallan add dstemp at iic
 1.7 23-Jan-2018  sevan Alternate buffer queue strategies no longer considered experimental, update
description.

Discussed on tech-kern
http://mail-index.netbsd.org/tech-kern/2018/01/21/msg023002.html
 1.6 01-Oct-2017  macallan branches: 1.6.2;
add lmtemp
 1.5 27-Sep-2017  macallan add obio and some child devices
 1.4 22-Sep-2017  macallan add uni_n, ki2c etc., commented out svwsata, wdc, smu
should be somewhat more useful now
 1.3 14-Sep-2017  mrg clean up COMPAT_* options for native netbsd code:
- new series of files that are useful for saying "i want everything
since netbsd 1.4", etc.
- use the fact COMPAT_* options have future dependancies to remove
many redundant options.

removes about 3000 lines total across kernel configuration files.
tested about 30 random kernels in the changed list.
 1.2 29-Jul-2017  maxv branches: 1.2.2;
Remove TCP_COMPAT_42 from the config files. Pass 3.
 1.1 05-Jun-2017  macallan a config for PCIe PowerMac G5 models
should have been committed years ago...
 1.2.2.2 28-Aug-2017  skrll Sync with HEAD
 1.2.2.1 29-Jul-2017  skrll file POWERMAC_G5_11_2 was added on branch nick-nhusb on 2017-08-28 17:51:44 +0000
 1.6.2.2 03-Dec-2017  jdolecek update from HEAD
 1.6.2.1 01-Oct-2017  jdolecek file POWERMAC_G5_11_2 was added on branch tls-maxphys on 2017-12-03 11:36:24 +0000
 1.9.2.3 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.9.2.2 25-Jun-2018  pgoyette Sync with HEAD
 1.9.2.1 22-Apr-2018  pgoyette Sync with HEAD
 1.12.2.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.12.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.12.2.1 10-Jun-2019  christos Sync with HEAD
 1.20.16.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.20.6.1 09-May-2021  thorpej Adapt the smu driver to the new i2c device enumeration method. While
here, collapse the "smuiic" driver into the base "smu" driver; it was
superfluous given how the rest of the "smu" driver is structured.
 1.25.2.1 02-Aug-2025  perseant Sync with HEAD
 1.129 21-Sep-2025  thorpej Add support for direct i2c device enumeration using the OpenFirmware
device tree.
 1.128 21-Sep-2025  thorpej Give each PowerPC OFW platform its own device_register(), which calls
into the common ofw_device_register(). ofppc's is a simple wrapper.

macppc's, on the other hand, takes care of looking up environmental
sensor descriptive information in the OFW device tree and adds those
properties directly to the sensor device property dictionaries. This
single implementation will replace the duplicated code that's scattered
across multiple macppc i2c controller drivers.
 1.127 08-Sep-2025  macallan a driver for the LED bar found on Xserve G4
needs testing on SMP
 1.126 22-Aug-2025  macallan obio needs led and fancontrol now
 1.125 12-Aug-2025  macallan a driver to control the Xserve G4's drive bays, it will:
- tell you if a drive module is present
- let you control LEDs and drive power
via sysctl machdep.drivebay*
 1.124 01-Jul-2025  macallan defflag FCU_DEBUG
 1.123 10-Sep-2021  macallan branches: 1.123.10;
this driver allows to read the speeds of fans controlled via mac-io/fans/*
found in some G5, for example my 7,3
based on guesswork and observation
 1.122 03-Sep-2021  macallan switch smu to common fan control code
 1.121 27-Jul-2021  macallan branches: 1.121.6;
first step towards abstracting thermal zone management out of the fcu driver
( and eventually, the smu driver )
todo:
- add sysctl()s to set zone parameters
- handle envsys
- adapt smu
 1.120 27-Jul-2021  macallan move the fcu driver into arch/macppc where it belongs
 1.119 18-Jun-2021  macallan defflag LMU_DEBUG and PSOC_DEBUG
 1.118 12-May-2021  thorpej - Define a device call for PCI bus instances to fetch a direct child's
device handle given the device's device/function #s (extracted from
a pcitag_t). Use it to associate the handle with the child device
at config_found() time.
- Implement this device call for ACPI and OpenFirmware.
- Enable the OpenFirmware variant for evbarm FDT, macppc, ofppc, sparc64.
- Obsolete acpi_device_register(); it is no longer needed.
- Obsolete setting the OpenFirmware handle in PCI devices in the
sparc64 device_register(); it is no longer needed.
 1.117 01-May-2021  thorpej branches: 1.117.2;
Remove unnecessary interface attributes from "smu".
 1.116 24-Apr-2021  thorpej branches: 1.116.2;
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.115 08-Aug-2020  macallan branches: 1.115.4;
add support for the onewire bus found in some macs, namely Quicksilver.
This can be used to read the EEPROM content from Apple Pro speakers, or to
hook up other onewire devices.
 1.114 10-Jan-2020  macallan add driver for the ambient light sensor / keyboard light controller found in
PowerBook5,6 and probably others
 1.113 09-Jan-2020  macallan defflag KI2C_DEBUG
 1.112 01-Nov-2019  macallan branches: 1.112.2;
the beginning of a driver for the 'Psoc' fan controller found in my 1GHz
TiBook. So far it does:
- initialize the fan controller via OF
- report temperatures to envsys
there is no documentation, only guesswork from looking at OF methods

With this my TiBook doesn't seem to overheat anymore.
 1.111 08-May-2019  isaki Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.110 02-May-2018  macallan branches: 1.110.2; 1.110.4;
don't pull in pic_u3_ht with uninorth - it's part of ibmcpc
 1.109 20-Apr-2018  macallan overhaul SMU i2c handling:
- get rid of the special smuiicbus, use generic i2cbus
- use shifted i2c addresses like everyone else
- use direct config
with this generic i2c drivers should work on the smu's i2c bus.
 1.108 04-Mar-2018  christos branches: 1.108.2;
remove 'define foo {}' for non-bus-like devices
 1.107 26-Feb-2018  sevan Remove support for macofcons(4), it's not actually possible to build a kernel
with it enabled - See PR port-macppc/53004 and it may have further problems even
so.
From <macallan>:
"There is some early console code that uses OF output but it causes problems
when we get close to MMU setup - I think it can go, it hasn't been enabled in
any config in at least a decade as far as I know."
 1.106 18-Dec-2017  skrll Generalise FDT and OFW
 1.105 22-Sep-2017  macallan no more special attachment for dbcool, deq attaches to iic now
 1.104 06-Jun-2017  macallan SMU config goo
 1.103 16-Jun-2016  macallan make platinumfb.c conditional on platinumfb
somehow that fell through the cracks too...
 1.102 10-Jun-2016  macallan add driver for 'platinum' onboard video found in Power Mac 7200 and possibly
other machines
from s_cole
 1.101 11-Oct-2014  uebayasi branches: 1.101.2;
Probably agp_apple is never used.
 1.100 18-Apr-2013  macallan support OpenPIC variant found in PowerMac G5s
from Phileas Fogg
 1.99 24-Jan-2012  macallan branches: 1.99.6;
drivers to support the onboard video circuitry found in for example the
Performa 6360
 1.98 13-Jul-2011  macallan branches: 1.98.2; 1.98.6;
provide EDID blocks for hardware where we know the parameters but neither the
firmware nor DDC provide any. So far there's only a parameter block for the
PowerBook Pismo's built-in TFT, now Xorg works out of the box without config.
The same parameter block will probably do the right thing on Lombard, PDQ and
TFT-equipped Wallstreet PowerBooks.
 1.97 22-Jun-2011  matt Add support pci_intr_setattr.
Export non-inline version of pci api for modules (_MODULE is defined).
Fix definition of pc_conf_hook and pc_conf_interrupt.
Switch to using inlines instead of macros.
Switch ibm4xx to use <powerpc/pci_machdep.h>
 1.96 07-Oct-2008  pgoyette Remove chip-specific drivers for ADT7463, ADT7467, and ADM1030; these
have been superseded by the dbcool(4) driver.
 1.95 02-Oct-2008  pgoyette Add dbcool ki2c attachment for macppc
 1.94 26-Aug-2008  macallan let ibmcpc pull in openpic stuff
 1.93 26-Aug-2008  macallan add memory at mainbus, for spdmem
 1.92 20-Feb-2008  drochner branches: 1.92.6; 1.92.10; 1.92.12; 1.92.16;
Since files.wscons et al. are included by ~all ports anyway, include
them in the mi "files" file, and remove include statements from md files.
These shouldn't pull in additional kernel code when not in use, so it
shouldn't do any harm except a risk of namespace collisions which
should be easy to fix.
 1.91 11-Dec-2007  macallan switch to majors.powerpc
 1.90 03-Dec-2007  ad branches: 1.90.2; 1.90.4; 1.90.6;
Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
 1.89 26-Nov-2007  garbled Apply a set of patches from Frank Wille to make the genfb attachment work
better on ofppc. In doing so, we also move a few functions around in
macppc and the generic ofw powerpc stuff to allow better sharing of code.
Also, introduce a model_init function.

move ofb_cons.c from macppc/dev to powerpc/oea and rename it to rascons.
This gets rid of some naming confusion, and makes it OFW-MI rather than
macppc specific.
 1.88 17-Nov-2007  macallan have uninorth and bandit pull in their resp. IPI support stuff
 1.87 07-Nov-2007  garbled Convert macppc to shared ofw_autoconf.c. Compile tested only.
 1.86 25-Oct-2007  aymeric branches: 1.86.2;
include bluetooth conf file
 1.85 17-Oct-2007  garbled 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.84 12-Apr-2007  dogcow branches: 1.84.2; 1.84.10; 1.84.12; 1.84.14; 1.84.16;
unb0rk config(1) of GENERIC and friends.
 1.83 26-Mar-2007  dogcow fix build, after the moving around of the agp stuff
 1.82 25-Mar-2007  macallan remove some accidentially committed stuff :/
 1.81 25-Mar-2007  macallan add smartbat driver, defflag some debug stuff
 1.80 15-Feb-2007  macallan branches: 1.80.2; 1.80.6; 1.80.8; 1.80.10;
gah, fix botched merge in previous commit
 1.79 15-Feb-2007  macallan add battery at pmu
 1.78 10-Feb-2007  macallan add missing defflags from previous commits
 1.77 17-Jan-2007  macallan add pmu and cuda at obio
 1.76 08-Nov-2006  macallan split ofb into one part that attaches right on kernel startup and one that
attaches to pci so we can build kernels with - say - machfb but without
ofb at pci.
 1.75 07-Sep-2006  itohy branches: 1.75.2; 1.75.4;
Add PIOBM (busmastering transfer using ATA PIO mode) support.
The PIOBM is used by only one driver (will be added later,
stay tuned) and intruduce an attribute "ata_piobm" so that
it will be conditionally compiled in.
The "ata_dma" (busmastering transfer using ATA DMA mode) and
"ata_udma" (busmastering transfer using ATA Ultra DMA mode)
attributes are also added for consistency, but unused for now.
 1.74 05-Aug-2006  sanjayl 1st cut of Powermac G5 support (uses bridge mode).
 1.73 04-Apr-2006  gdamore Convert existing ath users to new Makefile, except for amd64, which needs
the rules due to needing to conditionally postprocess the HAL object file.

Macppc needs a a non-ELF HAL (EABI) object, so take care of that by default
in the atheros include file.
 1.72 12-Feb-2006  macallan branches: 1.72.2; 1.72.4; 1.72.6;
Add support for colour and virtual consoles
 1.71 06-Feb-2006  jmmv Include files.usb earlier so that "pbms at uhidbus" works.
 1.70 05-Feb-2006  christos glue for powerbook mouse.
 1.69 27-Dec-2005  chs branches: 1.69.2; 1.69.4; 1.69.6;
switch macppc to use the MI zstty driver.
add macppc's ZS_TXDMA hooks there.
 1.68 11-Dec-2005  christos merge ktrace-lwp.
 1.67 27-Sep-2005  macallan fix a typo
 1.66 27-Sep-2005  macallan rename gpio -> macgpio to avoid conflicts with gpio framework
 1.65 10-Aug-2005  macallan added uni_n, deq, attachments for adt7467c and adm1030c, additional attachment for ki2c
 1.64 25-Jun-2005  dyoung branches: 1.64.2;
Move the definitions in dev/pci/files.ath into dev/pci/files.pci.
Stop including dev/pci/files.ath in arch/i386/conf/files.i386,
since we get the same definitions by including dev/pci/files.pci,
now. Remove dev/pci/files.ath.

Add arch/macppc/conf/Makefile.macppc with directives for linking
the Atheros HAL for PowerPC.

In athhal-powerpc-be-eabi.opt_ah.h, #define AH_REGOPS_FUNC 1, since
otherwise the linker complains that the PowerPC HAL cannot link
with register-read/write subroutines.

Add ath(4) to the GENERIC macppc kernel configuration; comment it
out.
 1.63 25-Mar-2004  matt Enable generic software interrupts on macppc.
 1.62 20-Jan-2004  jdolecek cleanup old lpt(4) attachment, and glue ppbus in so that they can coexist:
* lpt device is defined in MI place (dev/ppbus/files.ppbus), dev/ic/lpt.c
is included there too; dev/ic/lpt.c is not included if ppbus is
configured or if there is alternative platform lpt (like for pc532)
* g/c MD lpt definitions and custom puc/upc attachments,
glue moved to conf/files and dev/pci/files.pci respectively; remove
device lpt definition from dev/isa/files.isa
* add ppbus parport attribute, atppc device attachments, adjust plip and lpt
glue
 1.61 27-Dec-2003  grant add support for the Keywest I2C and snapper audio device, as found on
some iBook and PowerBook models.

this driver was written by Tsubai Masanari and further hacked on by
Jared D. McNeill to work on his iBook.

the driver is limited (master volume control only, and I haven't
tested recording) but has been functioning perfectly on my PowerBook
g4 DVI (ivory) for some time.

ok'd by matt.
 1.60 19-Nov-2003  matt Add missing lpt entries.
 1.59 13-Nov-2003  christos we could have lpt at puc.
 1.58 11-Jun-2003  hamajima branches: 1.58.2;
Support the PowerBook G4 12-inch (and maybe 17-inch).
Kauai ATA, new obio chip, and Japanese keymap for WSDISPLAY_COMPAT_RAWKBD

I tested only 12-inch Japanese model.
 1.57 05-Mar-2003  matt Remove port-specific procfs_machdep.c (since they are all identical and
a better one resides in powerpc/powerpc/).
 1.56 04-Mar-2003  soren G/c old macppc grf entries.
 1.55 30-Oct-2002  manu Moved binary compatibility options from arch directory to cpu directory
 1.54 26-Oct-2002  jdolecek now that mem_no is emitted by config(8), there is no reason to keep
copy of more or less identical iskmemdev() for every arch; move the function
to spec_vnop.c, and g/c machine-dependant copies
 1.53 13-Oct-2002  wiz Support 48kHz by using aurateconv.
Based on a patch by TAMURA Kent -- thanks!
 1.52 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.51 18-Jun-2002  itojun apm emulation, from openbsd
 1.50 22-Apr-2002  augustss branches: 1.50.2; 1.50.4;
Rename the audio "bus" attribute audiobus to avoid confusion with audio
device.
 1.49 16-Apr-2002  thorpej * Move the mii_bitbang attribute into dev/mii/files.mii
* Pull in dev/mii/files.mii from conf/files, rather than playing
the magic "files include order" dance in N machine-dependent
configuration definitions.
 1.48 03-Mar-2002  nathanw The cpu device now requires sysmon_envsys.
 1.47 06-Jan-2002  dbj add support for kgdb over zs
 1.46 26-Aug-2001  matt branches: 1.46.6;
Make all powerpc ports use a common Makefile.powerpc (except walnut)
Enforce -Wmissing-prototypes -Wstrict-prototypes for all ppc ports.
Split out macppc cpu support and make common to mpc6xx ports. Make
other mpc6xx ports use it. Add evcnts for mpc6xx traps.
 1.45 03-Aug-2001  tsubai Cosmetics.
 1.44 24-Jun-2001  wiz branches: 1.44.2;
Adapt to linux emul trap change.
 1.43 08-Jun-2001  simonb For ports that wire up pciide in compatibility mode, have
them define __HAVE_PCIIDE_MACHDEP_COMPAT_INTR_ESTABLISH
in pci_machdep.h and pciide_map_compat_intr() only calls
pciide_machdep_compat_intr_establish() if that preprocessor
define exists.

Ports that don't need to do this no longer need to supply a
dummy function.
 1.42 16-May-2001  tsubai Add AirMac frontend.
 1.41 27-Feb-2001  matt branches: 1.41.2;
Add a gpio device to handle the gpio device & extint-gpio1
interrupt. (think ibook/powerbook)
 1.40 18-Feb-2001  matt Add devsw entries for "ld" (logical disks).
 1.39 19-Jan-2001  manu Added previously created files for powerpc Linux compatibility to the kernel
config system
 1.38 17-Jan-2001  fvdl Add machdep file for procfs. Currently only used for linux-style
/proc/cpuinfo (only active when procfs is mounted with -o linux).
For ports other than the i386 this currently produces an empty
string.
 1.37 15-Nov-2000  matt back out my change powerpc/conf/files.ofw. Enable the inclusion of
dev/ofw/files.ofw on macppc. Add openfirm to ofppc/conf.c
 1.36 10-Nov-2000  hannken Pull in dev/i2o/files.i2o.
 1.35 08-Nov-2000  tsubai defopt L2CR_CONFIG.
 1.34 05-Nov-2000  matt Add files.ieee1394
 1.33 29-Oct-2000  tsutsui Switch to sys/dev/md_root.c. Tested on an INSTALL kernel.
 1.32 25-Aug-2000  tsubai Add (experimental) awacs audio driver. Output (play) only.
 1.31 26-Mar-2000  tsubai branches: 1.31.4;
esp declaration was moved to conf/files.
 1.30 14-Mar-2000  oster Add the RAIDframe device major to the machine-dependent config files
so that the right entries get added to dev_name2blk[]. Needed for / on RAID.
(Whoops! I missed checking these in when adding the RAID_AUTOCONFIG stuff.)
 1.29 27-Feb-2000  tsubai Add gmac. (commented out)
 1.28 09-Feb-2000  tsubai Use dev/rasops instead of dev/rcons.
 1.27 03-Feb-2000  tsubai * Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.26 25-Jan-2000  tsubai Use MII device layer.
XXX still 100Mbps receive side is very slow...
 1.25 15-Oct-1999  tsubai branches: 1.25.2;
Fix typo.
 1.24 15-Oct-1999  tsubai Define fdc, because dev/pcmcia needs it.
 1.23 15-Oct-1999  haya This is the first check-in of CardBus driver. CardBus driver contains
CardBus bus stub, YENTA PCI-CardBus bridge (cbb), 3Com 3C575TX driver
(ex) and Intel fxp driver.

TODO:
o Conform to the KNF more strictly.
o Be unified with pcmcia code as much as possible.
o Add more drivers for CardBus card, such as APA-1480 or USB card.

The affected files are listed below.

sys/arch/i386/conf/files.i386
sys/arch/macppc/conf/files.macppc
sys/conf/files
sys/dev/ic/elinkxl.c
sys/dev/ic/elinkxlvar.h
sys/dev/ic/i82365.c
sys/dev/ic/i82365var.h
sys/dev/isa/i82365_isasubr.c
sys/dev/pci/files.pci
sys/dev/pcmcia/pcmcia.c
sys/dev/pcmcia/pcmciachip.h

The added files are listed below.

sys/arch/i386/conf/CARDBUS
sys/arch/i386/include/rbus_machdep.h
sys/arch/i386/i386/rbus_machdep.c
sys/arch/macppc/include/rbus_machdep.h
sys/arch/macppc/macppc/rbus_machdep.c
sys/dev/cardbus/if_ex_cardbus.c
sys/dev/cardbus/Makefile.cardbusdevs
sys/dev/cardbus/cardbus.c
sys/dev/cardbus/cardbus_map.c
sys/dev/cardbus/cardbusdevs
sys/dev/cardbus/cardbusdevs.h
sys/dev/cardbus/cardbusdevs_data.h
sys/dev/cardbus/cardbusvar.h
sys/dev/cardbus/cardslot.c
sys/dev/cardbus/cardslotvar.h
sys/dev/cardbus/devlist2h.awk
sys/dev/cardbus/files.cardbus
sys/dev/cardbus/if_fxp_cardbus.c
sys/dev/cardbus/pccardcis.h
sys/dev/cardbus/rbus.c
sys/dev/cardbus/rbus.h
sys/dev/pci/pccbb.c
sys/dev/pci/pccbbreg.h
sys/dev/pci/pccbbvar.h
 1.22 21-Jul-1999  tsubai branches: 1.22.2;
media-bay CD support.
 1.21 12-Jul-1999  tsubai Add PowerBook LCD brightness and speaker volume button device.
Only brightness works for now.
 1.20 07-Jun-1999  thorpej Only declare block major numbers for devices which can be the root device.
 1.19 16-Apr-1999  thorpej Add a stub pciide_machdep_compat_intr_establish() for Power Macintosh.
Power Macintoshes with PCI IDE (e.g. the new Blue G3) don't have them
wired to compatibility mode, so just return a NULL cookie. We still have
to have this routine for the PCI IDE driver to link.
 1.18 29-Dec-1998  tsubai branches: 1.18.2;
Add USB.
 1.17 10-Dec-1998  tsubai Add ata/atapi disk support.
 1.16 28-Nov-1998  thorpej Add an RCS ID.
 1.15 20-Oct-1998  tsubai Add via-pmu support.
 1.14 18-Oct-1998  tsubai Add wsmouse support.
 1.13 14-Oct-1998  tsubai Add wsdisplay.
 1.12 13-Oct-1998  tsubai Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.11 16-Aug-1998  wrstuden We claim to support some mii-equiped pci ethernet drivers, so we
need to include dev/mii/files.mii. :-)
 1.10 28-Jul-1998  thorpej Ah, we use a _different_ ofcons; rename it macofcons to avoid the
name collision.
 1.9 17-Jul-1998  tsubai Add bus_dma support.
 1.8 13-Jul-1998  tsubai Add support for G3 Mac.
 1.7 03-Jul-1998  tsubai Add nvram device support.
 1.6 02-Jul-1998  tsubai Console support.
 1.5 24-Jun-1998  tsubai Add memory disk support.
 1.4 05-Jun-1998  tsubai Add support for UVM and MACHINE_NEW_NONCONTIG.
 1.3 29-May-1998  tsubai Use arch/powerpc/.
 1.2 20-May-1998  is Fix tyop.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.18.2.1 06-May-1999  perry branches: 1.18.2.1.2;
pullup 1.18->1.19 (thorpej)
 1.18.2.1.2.2 02-Aug-1999  thorpej Update from trunk.
 1.18.2.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.22.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.25.2.5 12-Mar-2001  bouyer Sync with HEAD.
 1.25.2.4 11-Feb-2001  bouyer Sync with HEAD.
 1.25.2.3 18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.25.2.2 22-Nov-2000  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.31.4.2 25-Oct-2001  he Pull up revision 1.36 (requested by ad):
Add Mylex DACC960, CAC-EISA, and I2O block/SCSI drivers.
 1.31.4.1 04-Feb-2001  he Pull up revision 1.32 (requested by mycroft):
Add new driver for Apple sound chip.
 1.41.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.44.2.7 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.44.2.6 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.44.2.5 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.44.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.44.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.44.2.2 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.44.2.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.46.6.8 11-Nov-2002  nathanw Catch up to -current
 1.46.6.7 18-Oct-2002  nathanw Catch up to -current.
 1.46.6.6 17-Sep-2002  nathanw Catch up to -current.
 1.46.6.5 20-Jun-2002  nathanw Catch up to -current.
 1.46.6.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.46.6.3 28-Feb-2002  nathanw Catch up to -current.
 1.46.6.2 11-Jan-2002  nathanw More catchup.
 1.46.6.1 26-Aug-2001  nathanw file files.macppc was added on branch nathanw_sa on 2002-01-11 23:38:34 +0000
 1.50.4.1 19-Jun-2003  grant Pull up revision 1.58 (requested by hamajima in ticket #1323):

Support the PowerBook G4 12-inch (and maybe 17-inch).
Kauai ATA, new obio chip, and Japanese keymap for WSDISPLAY_COMPAT_RAWKBD
 1.50.2.3 16-Jul-2002  gehenna catch up with -current.
 1.50.2.2 17-May-2002  gehenna Remove old block majors list.
 1.50.2.1 16-May-2002  gehenna Include the list of block/character major numbers.
 1.58.2.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.58.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.58.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.58.2.1 03-Aug-2004  skrll Sync with HEAD
 1.64.2.9 27-Feb-2008  yamt sync with head.
 1.64.2.8 21-Jan-2008  yamt sync with head
 1.64.2.7 07-Dec-2007  yamt sync with head
 1.64.2.6 15-Nov-2007  yamt sync with head.
 1.64.2.5 27-Oct-2007  yamt sync with head.
 1.64.2.4 03-Sep-2007  yamt sync with head.
 1.64.2.3 26-Feb-2007  yamt sync with head.
 1.64.2.2 30-Dec-2006  yamt sync with head.
 1.64.2.1 21-Jun-2006  yamt sync with head.
 1.69.6.1 22-Apr-2006  simonb Sync with head.
 1.69.4.1 09-Sep-2006  rpaulo sync with head
 1.69.2.1 18-Feb-2006  yamt sync with head.
 1.72.6.1 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.72.4.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.72.2.3 14-Sep-2006  yamt sync with head.
 1.72.2.2 11-Aug-2006  yamt sync with head
 1.72.2.1 11-Apr-2006  yamt sync with head
 1.75.4.1 10-Dec-2006  yamt sync with head.
 1.75.2.2 01-Feb-2007  ad Sync with head.
 1.75.2.1 18-Nov-2006  ad Sync with head.
 1.80.10.1 29-Mar-2007  reinoud Pullup to -current
 1.80.8.1 11-Jul-2007  mjf Sync with head.
 1.80.6.4 03-Dec-2007  ad Sync with HEAD.
 1.80.6.3 23-Oct-2007  ad Sync with head.
 1.80.6.2 27-May-2007  ad Sync with head.
 1.80.6.1 10-Apr-2007  ad Sync with head.
 1.80.2.1 15-Apr-2007  yamt sync with head.
 1.84.16.3 18-Nov-2007  bouyer Sync with HEAD
 1.84.16.2 13-Nov-2007  bouyer Sync with HEAD
 1.84.16.1 25-Oct-2007  bouyer Sync with HEAD.
 1.84.14.1 18-Oct-2007  yamt sync with head.
 1.84.12.4 23-Mar-2008  matt sync with HEAD
 1.84.12.3 09-Jan-2008  matt sync with HEAD
 1.84.12.2 08-Nov-2007  matt sync with -HEAD
 1.84.12.1 06-Nov-2007  matt sync with HEAD
 1.84.10.6 09-Dec-2007  jmcneill Sync with HEAD.
 1.84.10.5 27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.84.10.4 21-Nov-2007  joerg Sync with HEAD.
 1.84.10.3 11-Nov-2007  joerg Sync with HEAD.
 1.84.10.2 28-Oct-2007  joerg Sync with HEAD.
 1.84.10.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.84.2.13 10-Oct-2007  garbled New ppcoea-MI IPI infrastructure. This is similar to the PIC
infrastructure, but simplified greatly.

Also, convert macppc (the only port currently using IPI's) over to this new
infrastructure. Still some minor work left to do here.
 1.84.2.12 14-Aug-2007  macallan add support for bus speed control found in some Intrepid-based *Books,
like the 800MHz iBook G4
 1.84.2.11 12-Jul-2007  macallan make sure there's an isa.h file so the shared bus code builds
 1.84.2.10 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.84.2.9 05-Jun-2007  matt Make macppc use the common powerpc bus_dma.c
 1.84.2.8 11-May-2007  macallan add experimental interrupt priority handling for ohare
 1.84.2.7 06-May-2007  macallan switch macppc over to generic PCI code from arch/powerpc/pci
 1.84.2.6 05-May-2007  macallan switch to the shared clock.c in arch/powerpc
 1.84.2.5 04-May-2007  macallan sprinkle needs-flag to pic_* and make the host bridges pull in their appropriate
interrupt controllers.
Not sure if all grackle-based machines use Heathrow though.
 1.84.2.4 04-May-2007  macallan config voodoo to select PIC support via options PIC_*
 1.84.2.3 03-May-2007  macallan PIC_OPENPIC moved over to powerpc
 1.84.2.2 02-May-2007  macallan use generic pchb.c from arch/powerpc
add heathrow PIC support
 1.84.2.1 02-May-2007  macallan use generic interrupt handling, so far only ohare-based machines are supported
 1.86.2.3 27-Dec-2007  mjf Sync with HEAD.
 1.86.2.2 08-Dec-2007  mjf Sync with HEAD.
 1.86.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.90.6.1 13-Dec-2007  bouyer Sync with HEAD
 1.90.4.1 13-Dec-2007  yamt sync with head.
 1.90.2.1 26-Dec-2007  ad Sync with head.
 1.92.16.1 19-Oct-2008  haad Sync with HEAD.
 1.92.12.2 10-Oct-2008  skrll Sync with HEAD.
 1.92.12.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.92.10.1 04-May-2009  yamt sync with head.
 1.92.6.3 17-Jan-2009  mjf Sync with HEAD.
 1.92.6.2 05-Oct-2008  mjf Sync with HEAD.
 1.92.6.1 28-Sep-2008  mjf Sync with HEAD.
 1.98.6.1 18-Feb-2012  mrg merge to -current.
 1.98.2.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.98.2.1 17-Apr-2012  yamt sync with head
 1.99.6.2 03-Dec-2017  jdolecek update from HEAD
 1.99.6.1 23-Jun-2013  tls resync from head
 1.101.2.2 28-Aug-2017  skrll Sync with HEAD
 1.101.2.1 09-Jul-2016  skrll Sync with HEAD
 1.108.2.2 21-May-2018  pgoyette Sync with HEAD
 1.108.2.1 22-Apr-2018  pgoyette Sync with HEAD
 1.110.4.1 05-May-2019  isaki Remove obsoleted au{,rate,vol}conv and mulaw attributes.
audio provides the equivalent of them inseparably.
 1.110.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.110.2.1 10-Jun-2019  christos Sync with HEAD
 1.112.2.1 17-Jan-2020  ad Sync with head.
 1.115.4.1 22-Mar-2021  thorpej Remove meningless "ki2c" attribute on the ki2c device declaration line.
 1.116.2.3 01-Aug-2021  thorpej Sync with HEAD.
 1.116.2.2 13-May-2021  thorpej Sync with HEAD.
 1.116.2.1 09-May-2021  thorpej Adapt the smu driver to the new i2c device enumeration method. While
here, collapse the "smuiic" driver into the base "smu" driver; it was
superfluous given how the rest of the "smu" driver is structured.
 1.117.2.1 31-May-2021  cjep sync with head
 1.121.6.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.123.10.1 02-Aug-2025  perseant Sync with HEAD
 1.28 11-Dec-2007  macallan switch to majors.powerpc
 1.27 24-Nov-2006  wiz branches: 1.27.28; 1.27.34; 1.27.38; 1.27.40; 1.27.42;
s/independant/independent/, from Zafer.
 1.26 19-Jun-2006  rpaulo branches: 1.26.4; 1.26.6;
Enable altq for macppc.
 1.25 11-Dec-2005  christos branches: 1.25.4; 1.25.8; 1.25.16;
merge ktrace-lwp.
 1.24 17-Sep-2005  yamt make VMSWAP optional again.
 1.23 31-Jul-2005  yamt revert "defflag VMSWAP" changes for now.
there seems to be far more people who don't want to edit
their kernel config files than i thought.
 1.22 30-Jul-2005  yamt defflag VMSWAP.
 1.21 11-Jul-2005  kiyohara ieee1394 import from FreeBSD.
 1.20 10-May-2005  jdolecek branches: 1.20.2;
assign major for nsmb(4)
 1.19 10-Dec-2003  jmc Change reference at bottom from sys/dev/majors to sys/conf/majors to match
reality
 1.18 13-Nov-2003  christos we could have lpt at puc.
 1.17 24-Oct-2003  jdolecek add major for 'ses' for archs which have the other scsi devices
 1.16 10-Oct-2003  jdolecek reassing majors for crypto and pf to use the newly defined MI major
range
 1.15 10-Oct-2003  jdolecek update the comment - the space for machine-dependant majors
is reduced to 0-143
follows discussion on tech-kern
 1.14 05-Oct-2003  jdolecek Add some framework for MI assignment of device majors - add sys/dev/majors
which is automatically included during kernel config, and add comments
to individual machine-dependant majors.* files to assign new MI majors
in MI file.

Range 0-191 is reserved for machine-specific assignments, range
192+ are MI assignments.

Follows recent discussion on tech-kern@
 1.13 22-Aug-2003  itojun create /dev/crypto
 1.12 17-Aug-2003  hannken Add a placeholder for lpt, char 20.

Requested by: Matt Thomas
 1.11 27-Jul-2003  itojun reserve cdev major # for PF. ok'ed by technical-exec
 1.10 25-Apr-2003  ragge branches: 1.10.2;
Add ksyms device major.
 1.9 13-Mar-2003  matt Synchronize macppc and evbppc majors when possible. Add a lot of missing
devices to evbppc.
 1.8 14-Jan-2003  fair Add bktr*, udsbr* and radio* at each;
allocate a major number for radio*
 1.7 10-Jan-2003  mjl Add major for bktr.
 1.6 05-Jan-2003  briggs Add mlx. Pointed out by Daniel Eggert in PR 18487.
 1.5 31-Dec-2002  thorpej Fix sysmon entry.
 1.4 04-Dec-2002  haya New Feature: add pseudo device for IEEE 1394 isochronous stream and
isochronous reception routine for IEEE 1394 OHCI (fwohci). The
transmission part is under construction.

The minimum configuration options for this feature are:

# IEEE 1394 (i.LINK)
fwohci* at pci? dev ? function ?
pseudo-device fwiso 1
 1.3 04-Oct-2002  elric branches: 1.3.2;
assign majors for raw and cooked cgd's.
 1.2 06-Sep-2002  gehenna branches: 1.2.2;
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.1 16-May-2002  gehenna branches: 1.1.2;
file majors.macppc was initially added on branch gehenna-devsw.
 1.1.2.4 16-Jul-2002  gehenna catch up with -current.
 1.1.2.3 14-Jul-2002  gehenna catch up with -current.
 1.1.2.2 30-May-2002  gehenna Add $NetBSD$
 1.1.2.1 16-May-2002  gehenna Add the list of block/character majors.
 1.2.2.7 15-Jan-2003  thorpej Sync with HEAD.
 1.2.2.6 07-Jan-2003  thorpej Sync with HEAD.
 1.2.2.5 03-Jan-2003  thorpej Sync with HEAD.
 1.2.2.4 11-Dec-2002  thorpej Sync with HEAD.
 1.2.2.3 18-Oct-2002  nathanw Catch up to -current.
 1.2.2.2 17-Sep-2002  nathanw Catch up to -current.
 1.2.2.1 06-Sep-2002  nathanw file majors.macppc was added on branch nathanw_sa on 2002-09-17 21:15:35 +0000
 1.3.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.3.2.1 04-Oct-2002  jdolecek file majors.macppc was added on branch kqueue on 2002-10-10 18:33:56 +0000
 1.10.2.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.10.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.10.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.10.2.1 03-Aug-2004  skrll Sync with HEAD
 1.20.2.3 21-Jan-2008  yamt sync with head
 1.20.2.2 30-Dec-2006  yamt sync with head.
 1.20.2.1 21-Jun-2006  yamt sync with head.
 1.25.16.1 13-Jul-2006  gdamore Merge from HEAD.
 1.25.8.1 26-Jun-2006  yamt sync with head.
 1.25.4.1 09-Sep-2006  rpaulo sync with head
 1.26.6.1 10-Dec-2006  yamt sync with head.
 1.26.4.1 12-Jan-2007  ad Sync with head.
 1.27.42.1 13-Dec-2007  bouyer Sync with HEAD
 1.27.40.1 13-Dec-2007  yamt sync with head.
 1.27.38.1 26-Dec-2007  ad Sync with head.
 1.27.34.1 27-Dec-2007  mjf Sync with HEAD.
 1.27.28.1 23-Mar-2008  matt sync with HEAD
 1.27 17-Jul-2022  riastradh std.macppc: Nix trailing whitespace.
 1.26 14-Jul-2022  macallan default to apple layout for both adb and usb keyboards
 1.25 29-Aug-2020  macallan make us.apple the default USB keyboard layout
 1.24 09-Jun-2018  macallan set options ADBKBD_EMUL_USB by default
With this ADB and USB keyboards can coexist on the same mux, as needed by
built-in Bluetooth modules on some *Books
should fix PR53351
 1.23 11-Dec-2008  alc branches: 1.23.58; 1.23.64;
Import config(9) file and register HAL's files in the build machinery.
 1.22 17-Oct-2007  garbled branches: 1.22.16; 1.22.20; 1.22.26; 1.22.28; 1.22.30; 1.22.36;
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.21 05-Aug-2006  sanjayl branches: 1.21.14; 1.21.22; 1.21.32; 1.21.34; 1.21.36; 1.21.38;
1st cut of Powermac G5 support (uses bridge mode).
 1.20 05-Apr-2006  gdamore Rename AH_DEBUG, AH_ASSERT, and AH_DEBUG_ALQ to ATH_XXX.
Use the opt_ah.h for the provided HAL to get options like AH_REGOPS_FUNC.
Add AH_REGOPS_FUNC to a few opt_ah.h that don't have it in this version
of the HAL but need it. (The next version from Sam should have this fixed
in it. If it doesn't, then we'll have to take care at import time.)

Ultimately, this should make future imports even easier, and individual ports
should not have to worry about whether AH_REGOPS_FUNC is properly defined or
not, since the opt_ah.h will just take care of it automatically.

Ok'd by dyoung@.
 1.19 11-Dec-2005  christos branches: 1.19.4; 1.19.6; 1.19.8; 1.19.10; 1.19.12;
merge ktrace-lwp.
 1.18 19-Oct-2005  dyoung Define AH_REGOPS_FUNC because the macppc HAL uses the register
read/write functions to access the hardware.
 1.17 17-Sep-2005  yamt branches: 1.17.2;
include "conf/std".
 1.16 12-Aug-2003  matt branches: 1.16.16;
Remove SPILLSTK leftovers.
 1.15 03-Feb-2003  matt branches: 1.15.2;
Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea).
 1.14 02-Feb-2003  matt Perform a rototill of the powerpc code. Mandate use of SPRG0 to store
a pointer to current cpu's cpu_info structure. Use cpu_info for
intstk,intr_depth,still_stk,idle_pcb,curpcb,curlwp,etal even on
non-MULTIPROCESSOR machines. Add common macros GET_CPUINFO and
INIT_CPUINFO to get and initialize the cpu_info struct on startup. Make
ibm4xx use the standard <powerpc/frame.h>. Use IFRAME_xx in ibm4xx
trap_subr.S instead of explicit magic offsets. Move INTSTK and SPILLSTK
to std.<platform>. Change faultbuf to a struct instead of an array.

On MPC6XX cpus, stop using the vector page for temporary space and use
reserved space in cpu_info.
 1.13 18-Apr-2002  matt Use a common genassym.cf for all the PPC_MPC6XX ports. Add a makeoptions to
std.foo to indicate the directory to get genassym.cf from. Add an intrframe
to <powerpc/frame.h> and make trap_subr.S use symbolic offsets into it.
 1.12 12-Jun-2001  tsubai branches: 1.12.2; 1.12.8;
Change comment.
 1.11 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.10 04-Feb-2001  briggs branches: 1.10.2;
For now, all macppc will get OpenPIC
 1.9 22-Jun-2000  fvdl Remove prefix construction for softdeps. Add SOFTDEP option to GENERIC.
 1.8 15-Nov-1999  fvdl branches: 1.8.4;
Add

prefix ../gnu/sys
cinclude "conf/files.softdep"
prefix

to all std.* files, so that soft dependencies can be activated using
"options SOFTDEP".
 1.7 12-Sep-1999  chs branches: 1.7.2; 1.7.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.6 24-Mar-1999  mrg clean up kernel/config files files for machVM lossage.
 1.5 15-Mar-1999  tsubai Remove bogus comment.
 1.4 03-Sep-1998  tsubai Switch to UVM on macppc.
 1.3 03-Sep-1998  tsubai Remove HTABENTS definition. (calculated automatically)
 1.2 29-Jul-1998  thorpej fic typi
 1.1 29-Jul-1998  thorpej Use a std options file, like other ports do.
 1.7.8.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.7.2.2 11-Feb-2001  bouyer Sync with HEAD.
 1.7.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.8.4.1 23-Jun-2000  fvdl As on the trunk, update these for the move of ffs_softdep.c into the
kernel source itself. Remove prefix construction, and add the SOFTDEP
option to GENERIC kernels.
 1.10.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.12.8.2 20-Jun-2002  nathanw Catch up to -current.
 1.12.8.1 12-Jun-2001  nathanw file std.macppc was added on branch nathanw_sa on 2002-06-20 03:39:32 +0000
 1.12.2.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.15.2.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.15.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.15.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.15.2.1 03-Aug-2004  skrll Sync with HEAD
 1.16.16.3 27-Oct-2007  yamt sync with head.
 1.16.16.2 30-Dec-2006  yamt sync with head.
 1.16.16.1 21-Jun-2006  yamt sync with head.
 1.17.2.1 26-Oct-2005  yamt sync with head
 1.19.12.1 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.19.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.19.8.2 11-Aug-2006  yamt sync with head
 1.19.8.1 11-Apr-2006  yamt sync with head
 1.19.6.1 22-Apr-2006  simonb Sync with head.
 1.19.4.1 09-Sep-2006  rpaulo sync with head
 1.21.38.1 25-Oct-2007  bouyer Sync with HEAD.
 1.21.36.1 18-Oct-2007  yamt sync with head.
 1.21.34.1 06-Nov-2007  matt sync with HEAD
 1.21.32.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.21.22.1 04-May-2007  macallan nuke options OPENPIC
 1.21.14.1 23-Oct-2007  ad Sync with head.
 1.22.36.1 21-Apr-2010  matt sync to netbsd-5
 1.22.30.1 07-Aug-2009  snj Apply patch (requested by jmcneill in ticket 775):
Update to the open source atheros HAL.
 1.22.28.1 19-Jan-2009  skrll Sync with HEAD.
 1.22.26.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.22.20.1 04-May-2009  yamt sync with head.
 1.22.16.1 17-Jan-2009  mjf Sync with HEAD.
 1.23.64.1 25-Jun-2018  pgoyette Sync with HEAD
 1.23.58.1 14-Jun-2018  martin Pull up following revision(s) (requested by macallan in ticket #880):

sys/arch/macppc/conf/std.macppc: revision 1.24

set options ADBKBD_EMUL_USB by default

With this ADB and USB keyboards can coexist on the same mux, as needed by
built-in Bluetooth modules on some *Books

should fix PR53351
 1.1 03-Mar-2014  macallan branches: 1.1.4; 1.1.6; 1.1.10;
config goop for ppc601 support
GENERIC_601 more or less resembles a Power Macintosh 7200 with a few drivers
thrown in for convenience while keeping the kernel itself smaller than 4MB
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 03-Mar-2014  tls file std.macppc.601 was added on branch tls-maxphys on 2014-08-20 00:03:11 +0000
 1.1.6.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.1.6.1 03-Mar-2014  yamt file std.macppc.601 was added on branch yamt-pagecache on 2014-05-22 11:39:56 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 03-Mar-2014  rmind file std.macppc.601 was added on branch rmind-smpnet on 2014-05-18 17:45:16 +0000
 1.4 14-Jul-2022  macallan default to apple layout for both adb and usb keyboards
 1.3 11-Dec-2008  alc Import config(9) file and register HAL's files in the build machinery.
 1.2 26-Aug-2008  macallan branches: 1.2.2; 1.2.4; 1.2.10;
throw out options OPENPIC
Now the G5 kernel builds again with new style PIC code enabled
 1.1 05-Aug-2006  sanjayl branches: 1.1.4; 1.1.8; 1.1.14; 1.1.64; 1.1.68; 1.1.70; 1.1.74;
1st cut of Powermac G5 support (uses bridge mode).
 1.1.74.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.74.1 19-Oct-2008  haad Sync with HEAD.
 1.1.70.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.68.1 04-May-2009  yamt sync with head.
 1.1.64.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.64.1 28-Sep-2008  mjf Sync with HEAD.
 1.1.14.2 30-Dec-2006  yamt sync with head.
 1.1.14.1 05-Aug-2006  yamt file std.macppc.g5 was added on branch yamt-lazymbuf on 2006-12-30 20:46:26 +0000
 1.1.8.2 09-Sep-2006  rpaulo sync with head
 1.1.8.1 05-Aug-2006  rpaulo file std.macppc.g5 was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:41:05 +0000
 1.1.4.2 11-Aug-2006  yamt sync with head
 1.1.4.1 05-Aug-2006  yamt file std.macppc.g5 was added on branch yamt-pdpolicy on 2006-08-11 15:42:13 +0000
 1.2.10.1 21-Apr-2010  matt sync to netbsd-5
 1.2.4.1 07-Aug-2009  snj Apply patch (requested by jmcneill in ticket 775):
Update to the open source atheros HAL.
 1.2.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.20 17-Aug-2014  wiz Add missing parameter in printf. From Henning Petersen in PR 49122.
 1.19 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.18 18-Jun-2011  matt branches: 1.18.2; 1.18.12;
struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.17 14-Mar-2009  dsl branches: 1.17.10;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.16 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.15 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.14 13-Jun-2008  cegger branches: 1.14.4; 1.14.10;
use device_lookup_private to get softc
 1.13 05-Mar-2007  tsutsui branches: 1.13.40; 1.13.42; 1.13.44; 1.13.46; 1.13.48;
- use (uint8_t *) for buffer args on *_adbcomplete() functions
- remove kbd_adbcomplete() decl from akbd.c since it's in akbdvar.h
 1.12 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.11 11-Dec-2005  christos branches: 1.11.26;
merge ktrace-lwp.
 1.10 28-Jul-2003  nathanw branches: 1.10.16;
Correct comment in FORCE_FUNCTION_KEYS code; the 0x0b (eject) button is
on the f12 key, not f7 (the keycode value was correct for f12 already).
 1.9 24-Jul-2003  nathanw Add an option, enabled with the FORCE_FUNCTION_KEYS macro, that converts
"hotkey" abtn events into the function-key akbd events for the keys
that they're actually on (though the eject/f12 mapping is probably wrong for
the 12" PowerBook G4).
 1.8 15-Jul-2003  lukem __KERNEL_RCSID()
 1.7 05-Mar-2003  soren branches: 1.7.2;
Forgot dummy printf.
 1.6 05-Mar-2003  soren Be more verbose about unsupported keys.
 1.5 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.4 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.3 08-Jun-2001  matt branches: 1.3.2; 1.3.8;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.2 29-Mar-2001  tsubai When attached, do not change brightness if the value is zero.
 1.1 12-Jul-1999  tsubai branches: 1.1.2; 1.1.4; 1.1.16;
Add PowerBook LCD brightness and speaker volume button device.
Only brightness works for now.
 1.1.16.2 21-Jun-2001  nathanw Catch up to -current.
 1.1.16.1 09-Apr-2001  nathanw Catch up with -current.
 1.1.4.1 21-Apr-2001  bouyer Sync with HEAD
 1.1.2.2 02-Aug-1999  thorpej Update from trunk.
 1.1.2.1 12-Jul-1999  thorpej file abtn.c was added on branch chs-ubc2 on 1999-08-02 19:55:12 +0000
 1.3.8.2 18-Oct-2002  nathanw Catch up to -current.
 1.3.8.1 08-Jun-2001  nathanw file abtn.c was added on branch nathanw_sa on 2002-10-18 02:38:33 +0000
 1.3.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.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.10.16.1 03-Sep-2007  yamt sync with head.
 1.11.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.13.48.1 18-Jun-2008  simonb Sync with head.
 1.13.46.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.13.44.1 04-May-2009  yamt sync with head.
 1.13.42.1 17-Jun-2008  yamt sync with head.
 1.13.40.1 29-Jun-2008  mjf Sync with HEAD.
 1.14.10.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.14.4.1 28-Apr-2009  skrll Sync with HEAD.
 1.17.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.18.12.2 03-Dec-2017  jdolecek update from HEAD
 1.18.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.18.2.1 30-Oct-2012  yamt sync with head
 1.37 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.36 24-Apr-2021  thorpej branches: 1.36.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.35 05-Mar-2021  rin branches: 1.35.2;
Convert to intr_establish_xname().
 1.34 27-Oct-2012  chs branches: 1.34.50;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.33 01-Feb-2012  matt branches: 1.33.6;
Use C89 function prototypes.
 1.32 01-Jul-2011  dyoung branches: 1.32.2; 1.32.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.31 30-Jun-2011  matt Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.30 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.29 12-Dec-2009  tsutsui branches: 1.29.10;
Remove `volatile' qualifier from argument types of
struct timeval passed to todr_gettime(9) and todr_settime(9).
We no longer have an ancient and volatile struct timeval `time'
global since we have switched to MI timercounter(9) on all port.

XXX1: some of these RTC drivers still assume 32bit time_t
XXX2: some of these should be rewritten to use todr_[gs]ettime_ymdhms()
XXX3: todr(9) man page doesn't mention todr_[gs]ettime_ymdhms()
 1.28 01-Nov-2009  snj Drop 3rd and 4th clauses. Approved by Brad Grantham (copyright holder).
 1.27 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.26 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.25 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.24 07-Nov-2007  garbled branches: 1.24.18; 1.24.26; 1.24.32;
Convert macppc to shared ofw_autoconf.c. Compile tested only.
 1.23 17-Oct-2007  garbled branches: 1.23.2;
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.22 15-Feb-2007  macallan branches: 1.22.6; 1.22.14; 1.22.22; 1.22.24; 1.22.26; 1.22.28;
don't use IPL_HIGH
 1.21 10-Dec-2006  macallan don't issue ADB commands if there's no adb node.
This should fix spontaneous poweroffs seen on PowerBooks that have no ADB
(last generation PBG4 which have only USB)
needs testing on more machines
 1.20 13-Sep-2006  gdamore branches: 1.20.2;
Convert macppc to generic todr. ok macallan@.
 1.19 11-Dec-2005  christos branches: 1.19.8; 1.19.20;
merge ktrace-lwp.
 1.18 01-Feb-2005  briggs branches: 1.18.6;
Remove one level of interrupt redirection by switching on the ADB
hardware type and registering a Cuda or PMU interrupt handler
specifically instead of an intermediate interrupt handler.
 1.17 01-Feb-2005  briggs Add a PMU initialization call at ADB init time. This probes the machine
type for PMU / battery information, then uses that when getting battery
information for APM. Allows older PowerBooks (pre-smart batteries) to
function with apm enabled in the kernel. Thanks to Linux code for battery
information for these old batteries. Something is still odd, though,
because a charging battery can show > 100% when it's near to full charge.

Enable more interrupts from PMU and handle PB3400 card eject buttons
properly, too.

Also use #defines for commands instead of raw hex codes.
 1.16 01-Feb-2005  briggs ADB_HW_PB is really ADB_HW_PMU.
 1.15 15-Jul-2003  lukem branches: 1.15.8; 1.15.10;
__KERNEL_RCSID()
 1.14 01-Jan-2003  thorpej branches: 1.14.2;
Use aprint_normal() in cfprint routines.
 1.13 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.12 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.11 18-Jun-2002  itojun apm emulation, from openbsd
 1.10 18-Jun-2002  itojun extern decl for adbHardware
 1.9 08-Jun-2001  matt branches: 1.9.2; 1.9.8; 1.9.16;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.8 01-Apr-2001  tsubai Adjust timing for pmu99. Internal keyboard of recent PowerBooks
should work now.
 1.7 19-Dec-2000  tsubai branches: 1.7.2;
Sync with mac68k.
 1.6 16-Aug-1999  tsubai branches: 1.6.2; 1.6.12;
Make configurable without ams.
 1.5 20-Oct-1998  tsubai Add via-pmu support (only PowerBook 2400c/180 is tested).
 1.4 18-Oct-1998  tsubai Make compilable without aed.
 1.3 13-Oct-1998  tsubai Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.2 02-Jul-1998  tsubai Console support.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.6.12.1 01-Apr-2001  he Pull up revision 1.8 (requested by tsubai):
Fix Keyboard problem of recent PowerBooks (Pismo, PowerBook G4,
etc.).
 1.6.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.6.2.1 05-Jan-2001  bouyer Sync with HEAD
 1.7.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.7.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.9.16.1 16-Jul-2002  gehenna catch up with -current.
 1.9.8.4 03-Jan-2003  thorpej Sync with HEAD.
 1.9.8.3 18-Oct-2002  nathanw Catch up to -current.
 1.9.8.2 20-Jun-2002  nathanw Catch up to -current.
 1.9.8.1 08-Jun-2001  nathanw file adb.c was added on branch nathanw_sa on 2002-06-20 03:39:32 +0000
 1.9.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.9.2.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.14.2.4 04-Feb-2005  skrll Sync with HEAD.
 1.14.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.14.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.14.2.1 03-Aug-2004  skrll Sync with HEAD
 1.15.10.1 12-Feb-2005  yamt sync with head.
 1.15.8.1 29-Apr-2005  kent sync with -current
 1.18.6.4 15-Nov-2007  yamt sync with head.
 1.18.6.3 27-Oct-2007  yamt sync with head.
 1.18.6.2 26-Feb-2007  yamt sync with head.
 1.18.6.1 30-Dec-2006  yamt sync with head.
 1.19.20.2 12-Jan-2007  ad Sync with head.
 1.19.20.1 18-Nov-2006  ad Sync with head.
 1.19.8.1 14-Sep-2006  yamt sync with head.
 1.20.2.1 18-Dec-2006  yamt sync with head.
 1.22.28.2 13-Nov-2007  bouyer Sync with HEAD
 1.22.28.1 25-Oct-2007  bouyer Sync with HEAD.
 1.22.26.1 18-Oct-2007  yamt sync with head.
 1.22.24.2 08-Nov-2007  matt sync with -HEAD
 1.22.24.1 06-Nov-2007  matt sync with HEAD
 1.22.22.2 11-Nov-2007  joerg Sync with HEAD.
 1.22.22.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.22.14.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.22.6.2 03-Dec-2007  ad Sync with HEAD.
 1.22.6.1 23-Oct-2007  ad Sync with head.
 1.23.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.24.32.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.24.26.1 28-Apr-2009  skrll Sync with HEAD.
 1.24.18.2 11-Mar-2010  yamt sync with head
 1.24.18.1 04-May-2009  yamt sync with head.
 1.29.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.32.6.1 18-Feb-2012  mrg merge to -current.
 1.32.2.2 30-Oct-2012  yamt sync with head
 1.32.2.1 17-Apr-2012  yamt sync with head
 1.33.6.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.34.50.1 03-Apr-2021  thorpej Sync with HEAD.
 1.35.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.36.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.47 07-Sep-2025  andvar Fix various typos, mainly in comments.
 1.46 05-Mar-2024  andvar Remove duplicate "when" word in comments.
 1.45 21-Sep-2023  msaitoh s/ for for / for / in comment.
 1.44 18-Oct-2014  snj src is too big these days to tolerate superfluous apostrophes. It's
"its", people!
 1.43 01-Feb-2012  matt branches: 1.43.6;
Use C89 function prototypes.
 1.42 18-Mar-2009  cegger branches: 1.42.12; 1.42.16;
Ansify function definitions w/o arguments. Generated with sed.
 1.41 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.40 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.39 17-Oct-2007  garbled branches: 1.39.20; 1.39.28; 1.39.34;
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.38 09-Jul-2007  ad branches: 1.38.8; 1.38.10; 1.38.12; 1.38.14;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.37 04-Mar-2007  christos branches: 1.37.2; 1.37.4; 1.37.10;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.36 24-Jan-2007  hubertf branches: 1.36.2;
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.35 24-Nov-2006  wiz s/independant/independent/, from Zafer.
 1.34 07-Jun-2006  kardel branches: 1.34.6; 1.34.8;
avoid shadowing time while it still exists
 1.33 11-Dec-2005  christos branches: 1.33.4; 1.33.6; 1.33.8; 1.33.14;
merge ktrace-lwp.
 1.32 05-Jun-2005  nathanw branches: 1.32.2;
Rearrange some of the ADB types and void * abuse to make -Wcast-qual
happy in the presence of the "volatile int flag" construct. Fix up a variety
of calls to pass NULL instead of (Ptr)0 to maintain function-pointer safety.
 1.31 05-Jun-2005  nathanw Nuke the II and IIsi code from this file; it's never used on a
macppc. Remove variables and macros no longer used as a result.

This driver *still* needs an enema.
 1.30 01-Feb-2005  briggs Remove one level of interrupt redirection by switching on the ADB
hardware type and registering a Cuda or PMU interrupt handler
specifically instead of an intermediate interrupt handler.
 1.29 01-Feb-2005  briggs Clear all interrupts set by cuda. From Michael Lorenz.
 1.28 01-Feb-2005  briggs ADB_HW_PB is really ADB_HW_PMU.
 1.27 27-Oct-2003  dyoung branches: 1.27.8; 1.27.10;
Stop false uninitialized variable warning.
 1.26 26-Oct-2003  mycroft Remove optimization hack.
 1.25 15-Jul-2003  lukem __KERNEL_RCSID()
 1.24 05-May-2002  tsutsui branches: 1.24.10;
Add a null asm statement in adb_read_date_time()
to avoid wrong reordering by gcc-2.95.3 with -fgcse.

XXX Should we disable -fgcse everywhere?
 1.23 05-May-2002  tsutsui Backout previous. It is not timing problem, but gcc optimization bug.
 1.22 29-Apr-2002  tsutsui Add a delay() in adb_read_date_time() so that my Apus2000 can get
correct date in inittodr().
 1.21 23-Feb-2002  dbj In adb_soft_intr, remove the packet from the queue before calling the
completion routine so that the completion routine can reentrantly
process the queue. This happens, for example. when polling is turned
on by entering the debugger by keystroke.
 1.20 02-Jan-2002  dbj add some error checks in adb_reinit, enabled with ADB_DEBUG and adb_debug
 1.19 03-Aug-2001  tsubai branches: 1.19.6;
Remove (#if 0'ed) m68k asm codes.
 1.18 19-Jun-2001  simonb branches: 1.18.2;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.17 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.16 01-Apr-2001  tsubai Adjust timing for pmu99. Internal keyboard of recent PowerBooks
should work now.
 1.15 19-Dec-2000  tsubai branches: 1.15.2;
Sync with mac68k.
 1.14 08-Jun-2000  tsubai branches: 1.14.2;
Sync with mac68k.
 1.13 23-Mar-2000  thorpej branches: 1.13.2;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.12 27-Jan-2000  tsubai Make this work on the G4 too.
 1.11 11-Jul-1999  tsubai branches: 1.11.2;
Enable soft poweroff on PowerBook.
 1.10 22-Jun-1999  tsubai Use RTC on PB.
 1.9 12-Jan-1999  tsubai branches: 1.9.4;
Always use polling when poweroff/restart.
 1.8 24-Nov-1998  tsubai Add more delay in adb_reinit().
 1.7 15-Nov-1998  tsubai RTC support for pmu (read only).
 1.6 05-Nov-1998  tsubai Sync to mac68k.
 1.5 04-Nov-1998  tsubai Move conversion of PRAM-time to UNIX-time to clock.c (like mac68k).
 1.4 20-Oct-1998  tsubai Add via-pmu support (only PowerBook 2400c/180 is tested).
 1.3 13-Oct-1998  tsubai Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.2 26-Jun-1998  tsubai Powerdown support.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.9.4.2 02-Aug-1999  thorpej Update from trunk.
 1.9.4.1 01-Jul-1999  thorpej Sync w/ -current.
 1.11.2.3 21-Apr-2001  bouyer Sync with HEAD
 1.11.2.2 05-Jan-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.13.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.14.2.1 01-Apr-2001  he Pull up revision 1.16 (requested by tsubai):
Fix Keyboard problem of recent PowerBooks (Pismo, PowerBook G4,
etc.).
 1.15.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.15.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.18.2.4 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.18.2.3 16-Mar-2002  jdolecek Catch up with -current.
 1.18.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.18.2.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.19.6.4 20-Jun-2002  nathanw Catch up to -current.
 1.19.6.3 28-Feb-2002  nathanw Catch up to -current.
 1.19.6.2 11-Jan-2002  nathanw More catchup.
 1.19.6.1 03-Aug-2001  nathanw file adb_direct.c was added on branch nathanw_sa on 2002-01-11 23:38:34 +0000
 1.24.10.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.24.10.4 04-Feb-2005  skrll Sync with HEAD.
 1.24.10.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.24.10.2 18-Sep-2004  skrll Sync with HEAD.
 1.24.10.1 03-Aug-2004  skrll Sync with HEAD
 1.27.10.1 12-Feb-2005  yamt sync with head.
 1.27.8.1 29-Apr-2005  kent sync with -current
 1.32.2.5 27-Oct-2007  yamt sync with head.
 1.32.2.4 03-Sep-2007  yamt sync with head.
 1.32.2.3 26-Feb-2007  yamt sync with head.
 1.32.2.2 30-Dec-2006  yamt sync with head.
 1.32.2.1 21-Jun-2006  yamt sync with head.
 1.33.14.1 19-Jun-2006  chap Sync with head.
 1.33.8.1 26-Jun-2006  yamt sync with head.
 1.33.6.1 22-Apr-2006  simonb Fix some shadowed variable warnings.
 1.33.4.1 09-Sep-2006  rpaulo sync with head
 1.34.8.1 10-Dec-2006  yamt sync with head.
 1.34.6.2 01-Feb-2007  ad Sync with head.
 1.34.6.1 12-Jan-2007  ad Sync with head.
 1.36.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.37.10.3 03-Oct-2007  garbled Sync with HEAD
 1.37.10.2 02-Aug-2007  macallan sync with HEAD
 1.37.10.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.37.4.1 11-Jul-2007  mjf Sync with head.
 1.37.2.2 23-Oct-2007  ad Sync with head.
 1.37.2.1 15-Jul-2007  ad Sync with head.
 1.38.14.1 25-Oct-2007  bouyer Sync with HEAD.
 1.38.12.1 18-Oct-2007  yamt sync with head.
 1.38.10.1 06-Nov-2007  matt sync with HEAD
 1.38.8.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.39.34.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.39.28.1 28-Apr-2009  skrll Sync with HEAD.
 1.39.20.1 04-May-2009  yamt sync with head.
 1.42.16.1 18-Feb-2012  mrg merge to -current.
 1.42.12.1 17-Apr-2012  yamt sync with head
 1.43.6.1 03-Dec-2017  jdolecek update from HEAD
 1.2 01-Feb-2005  briggs adb_direct.h contents are in adbvar.h. No need for duplication.
 1.1 15-May-1998  tsubai branches: 1.1.48; 1.1.56; 1.1.58;
Initial import of macppc port.
 1.1.58.1 12-Feb-2005  yamt sync with head.
 1.1.56.1 29-Apr-2005  kent sync with -current
 1.1.48.1 04-Feb-2005  skrll Sync with HEAD.
 1.2 28-Mar-1999  tsubai Remove unused files.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.15 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.14 01-Nov-2009  snj branches: 1.14.12; 1.14.22;
Drop 3rd and 4th clauses. Approved by Brad Grantham (copyright holder).
 1.13 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.12 04-Mar-2007  christos branches: 1.12.44; 1.12.52; 1.12.58;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.11 11-Dec-2005  christos branches: 1.11.26;
merge ktrace-lwp.
 1.10 05-Jun-2005  nathanw branches: 1.10.2;
Rearrange some of the ADB types and void * abuse to make -Wcast-qual
happy in the presence of the "volatile int flag" construct. Fix up a variety
of calls to pass NULL instead of (Ptr)0 to maintain function-pointer safety.
 1.9 01-Feb-2005  briggs Remove one level of interrupt redirection by switching on the ADB
hardware type and registering a Cuda or PMU interrupt handler
specifically instead of an intermediate interrupt handler.
 1.8 01-Feb-2005  briggs ADB_HW_PB is really ADB_HW_PMU.
 1.7 09-Apr-2003  thorpej branches: 1.7.2; 1.7.10; 1.7.12;
G/c the traceq; nothing uses it.
 1.6 18-Jun-2002  itojun extern decl for adbHardware
 1.5 08-Jun-2001  matt branches: 1.5.2; 1.5.8; 1.5.16;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.4 19-Dec-2000  tsubai branches: 1.4.2;
Sync with mac68k.
 1.3 08-Jun-2000  tsubai Sync with mac68k.
 1.2 13-Oct-1998  tsubai branches: 1.2.12; 1.2.20;
Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.20.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.2.12.2 05-Jan-2001  bouyer Sync with HEAD
 1.2.12.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.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.5.16.1 16-Jul-2002  gehenna catch up with -current.
 1.5.8.2 20-Jun-2002  nathanw Catch up to -current.
 1.5.8.1 08-Jun-2001  nathanw file adbvar.h was added on branch nathanw_sa on 2002-06-20 03:39:33 +0000
 1.5.2.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.7.12.1 12-Feb-2005  yamt sync with head.
 1.7.10.1 29-Apr-2005  kent sync with -current
 1.7.2.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.7.2.1 04-Feb-2005  skrll Sync with HEAD.
 1.10.2.1 03-Sep-2007  yamt sync with head.
 1.11.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.12.58.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.12.52.1 28-Apr-2009  skrll Sync with HEAD.
 1.12.44.2 11-Mar-2010  yamt sync with head
 1.12.44.1 04-May-2009  yamt sync with head.
 1.14.22.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.14.12.1 30-Oct-2012  yamt sync with head
 1.5 07-Oct-2008  pgoyette Remove chip-specific drivers for ADT7463, ADT7467, and ADM1030; these
have been superseded by the dbcool(4) driver.
 1.4 08-May-2008  macallan branches: 1.4.4;
nuke license clause 3
 1.3 04-May-2008  xtraeme branches: 1.3.2;
device_t/softc split for adt7467c(4) and adm1030, and other related
cosmetic changes.
 1.2 11-Dec-2005  christos branches: 1.2.18; 1.2.76; 1.2.78; 1.2.80;
merge ktrace-lwp.
 1.1 10-Aug-2005  macallan branches: 1.1.6;
glue to attach thermal monitor chips directly to ki2c
 1.1.6.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.6.1 10-Aug-2005  skrll file adm1030_ki2c.c was added on branch ktrace-lwp on 2005-11-10 13:57:27 +0000
 1.2.80.2 04-May-2009  yamt sync with head.
 1.2.80.1 16-May-2008  yamt sync with head.
 1.2.78.1 18-May-2008  yamt sync with head.
 1.2.76.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.76.1 02-Jun-2008  mjf Sync with HEAD.
 1.2.18.2 21-Jun-2006  yamt sync with head.
 1.2.18.1 11-Dec-2005  yamt file adm1030_ki2c.c was added on branch yamt-lazymbuf on 2006-06-21 14:53:13 +0000
 1.3.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.3.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.4.4.1 19-Oct-2008  haad Sync with HEAD.
 1.6 07-Oct-2008  pgoyette Remove chip-specific drivers for ADT7463, ADT7467, and ADM1030; these
have been superseded by the dbcool(4) driver.
 1.5 08-May-2008  macallan branches: 1.5.4;
nuke license clause 3
 1.4 08-May-2008  macallan report chip revision
 1.3 04-May-2008  xtraeme branches: 1.3.2;
device_t/softc split for adt7467c(4) and adm1030, and other related
cosmetic changes.
 1.2 11-Dec-2005  christos branches: 1.2.18; 1.2.76; 1.2.78; 1.2.80;
merge ktrace-lwp.
 1.1 10-Aug-2005  macallan branches: 1.1.6;
glue to attach thermal monitor chips directly to ki2c
 1.1.6.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.6.1 10-Aug-2005  skrll file adt7467_ki2c.c was added on branch ktrace-lwp on 2005-11-10 13:57:27 +0000
 1.2.80.2 04-May-2009  yamt sync with head.
 1.2.80.1 16-May-2008  yamt sync with head.
 1.2.78.1 18-May-2008  yamt sync with head.
 1.2.76.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.76.1 02-Jun-2008  mjf Sync with HEAD.
 1.2.18.2 21-Jun-2006  yamt sync with head.
 1.2.18.1 11-Dec-2005  yamt file adt7467_ki2c.c was added on branch yamt-lazymbuf on 2006-06-21 14:53:13 +0000
 1.3.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.3.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.5.4.1 19-Oct-2008  haad Sync with HEAD.
 1.37 13-Jan-2025  riastradh macppc/aed, akbd: Nix trailing whitespace.

No functional change intended.
 1.36 12-Jan-2025  nat Catch up macppc to the same as mac68k.

Unfortunately these files could not be tested fully as aed/akbd/ams and
adb_direct have suffered from bit rot and there corresponding attachments
are commented out in all macppc kernels.
 1.35 05-Jun-2024  nat branches: 1.35.2;
Pass event up to adb device.

While here do the same for macppc.

Addresses PR/58303
 1.34 26-Sep-2021  thorpej branches: 1.34.4;
Driver "kqfilter" entry points return an error code, so if an invalid
filter is requested, return EINVAL rather than 1.
 1.33 26-Sep-2021  thorpej Use seltrue_filtops rather than rolling our own with filt_seltrue.
 1.32 26-Sep-2021  thorpej Change the kqueue filterops::f_isfd field to filterops::f_flags, and
define a flag FILTEROP_ISFD that has the meaning of the prior f_isfd.
Field and flag name aligned with OpenBSD.

This does not constitute a functional or ABI change, as the field location
and size, and the value placed in that field, are the same as the previous
code, but we're bumping __NetBSD_Version__ so 3rd-party module source code
can adapt, as needed.

NetBSD 9.99.89
 1.31 19-Dec-2020  thorpej Use sel{record,remove}_knote().
 1.30 25-Oct-2017  maya branches: 1.30.8; 1.30.16;
Use C99 initializer for filterops

Mostly done with spatch with touchups for indentation

@@
expression a;
identifier b,c,d;
identifier p;
@@
const struct filterops p =
- { a, b, c, d
+ {
+ .f_isfd = a,
+ .f_attach = b,
+ .f_detach = c,
+ .f_event = d,
};
 1.29 25-Jul-2014  dholland Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.28 16-Mar-2014  dholland branches: 1.28.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.27 27-Oct-2012  chs branches: 1.27.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.26 18-Jun-2011  matt branches: 1.26.2; 1.26.12;
struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.25 01-Nov-2009  snj branches: 1.25.10;
Drop 3rd and 4th clauses. Approved by Brad Grantham (copyright holder).
 1.24 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.23 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.22 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.21 01-Mar-2008  rmind branches: 1.21.4; 1.21.12; 1.21.18;
Welcome to 4.99.55:

- Add a lot of missing selinit() and seldestroy() calls.

- Merge selwakeup() and selnotify() calls into a single selnotify().

- Add an additional 'events' argument to selnotify() call. It will
indicate which event (POLL_IN, POLL_OUT, etc) happen. If unknown,
zero may be used.

Note: please pass appropriate value of 'events' where possible.
Proposed on: <tech-kern>
 1.20 17-Oct-2007  garbled branches: 1.20.12; 1.20.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.19 09-Jul-2007  ad branches: 1.19.10;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.18 04-Mar-2007  christos branches: 1.18.2; 1.18.4; 1.18.10;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.17 29-Mar-2006  thorpej branches: 1.17.14;
Use device_cfdata().
 1.16 11-Dec-2005  christos branches: 1.16.4; 1.16.6; 1.16.8; 1.16.10; 1.16.12;
merge ktrace-lwp.
 1.15 05-Jun-2005  nathanw branches: 1.15.2;
Don't shadow global aed_sc with local aed_sc.
XXX there shouldn't be a global aed_sc in the first place; the interface
among ADB devices is terrible.
 1.14 15-Jul-2003  lukem __KERNEL_RCSID()
 1.13 29-Jun-2003  fvdl branches: 1.13.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.12 29-Jun-2003  darrenr 'struct proc *' -> 'struct lwp *' as required to get GENERIC for macppc built
 1.11 26-Nov-2002  christos si_ -> sel_
 1.10 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.9 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.8 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.7 27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.6 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.5 23-Mar-2000  thorpej branches: 1.5.6; 1.5.8; 1.5.12; 1.5.20;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.4 17-Feb-1999  tsubai branches: 1.4.8;
Sync with mac68k.
 1.3 18-Oct-1998  tsubai Add wsmouse support.
 1.2 13-Oct-1998  tsubai Fix cut-and-paste miss...
 1.1 13-Oct-1998  tsubai Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.4.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.5.20.1 17-May-2002  gehenna Add device switch.
 1.5.12.4 11-Dec-2002  thorpej Sync with HEAD.
 1.5.12.3 11-Nov-2002  nathanw Catch up to -current
 1.5.12.2 18-Oct-2002  nathanw Catch up to -current.
 1.5.12.1 17-Sep-2002  nathanw Catch up to -current.
 1.5.8.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.5.8.2 18-Jun-2002  jdolecek make compile - use cdev_decl() and couple minor fixes
 1.5.8.1 09-Sep-2001  thorpej Add kqueue support (not yet compiled).
 1.5.6.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.13.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.13.2.4 18-Nov-2004  skrll Adapt to branch. macppc release builds.
 1.13.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.13.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.13.2.1 03-Aug-2004  skrll Sync with HEAD
 1.15.2.3 17-Mar-2008  yamt sync with head.
 1.15.2.2 03-Sep-2007  yamt sync with head.
 1.15.2.1 21-Jun-2006  yamt sync with head.
 1.16.12.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.16.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.16.8.1 01-Apr-2006  yamt sync with head.
 1.16.6.1 22-Apr-2006  simonb Sync with head.
 1.16.4.1 09-Sep-2006  rpaulo sync with head
 1.17.14.1 12-Mar-2007  rmind Sync with HEAD.
 1.18.10.2 03-Oct-2007  garbled Sync with HEAD
 1.18.10.1 02-Aug-2007  macallan sync with HEAD
 1.18.4.1 11-Jul-2007  mjf Sync with head.
 1.18.2.1 15-Jul-2007  ad Sync with head.
 1.19.10.2 23-Mar-2008  matt sync with HEAD
 1.19.10.1 06-Nov-2007  matt sync with HEAD
 1.20.16.1 03-Apr-2008  mjf Sync with HEAD.
 1.20.12.1 24-Mar-2008  keiichi sync with head.
 1.21.18.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.21.12.1 28-Apr-2009  skrll Sync with HEAD.
 1.21.4.2 11-Mar-2010  yamt sync with head
 1.21.4.1 04-May-2009  yamt sync with head.
 1.25.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.26.12.3 03-Dec-2017  jdolecek update from HEAD
 1.26.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.26.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.26.2.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.26.2.1 30-Oct-2012  yamt sync with head
 1.27.2.1 18-May-2014  rmind sync with head
 1.28.2.1 10-Aug-2014  tls Rebase.
 1.30.16.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.30.8.1 20-Jun-2024  martin Pull up following revision(s) (requested by nat in ticket #1847):

sys/arch/macppc/dev/aed.c: revision 1.35
sys/arch/mac68k/dev/aed.c: revision 1.39

Pass event up to adb device.

While here do the same for macppc.

Addresses PR/58303
 1.34.4.1 20-Jun-2024  martin Pull up following revision(s) (requested by nat in ticket #708):

sys/arch/macppc/dev/aed.c: revision 1.35
sys/arch/mac68k/dev/aed.c: revision 1.39

Pass event up to adb device.

While here do the same for macppc.

Addresses PR/58303
 1.35.2.1 02-Aug-2025  perseant Sync with HEAD
 1.6 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.5 01-Nov-2009  snj branches: 1.5.12; 1.5.22;
Drop 3rd and 4th clauses. Approved by Brad Grantham (copyright holder).
 1.4 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.3 06-Sep-2002  gehenna branches: 1.3.112; 1.3.120; 1.3.126;
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 23-Mar-2000  thorpej branches: 1.2.6; 1.2.8; 1.2.12; 1.2.20;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.1 13-Oct-1998  tsubai branches: 1.1.12;
Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.1.12.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.20.1 19-May-2002  gehenna Remove unnecessary prototype.
 1.2.12.1 17-Sep-2002  nathanw Catch up to -current.
 1.2.8.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.2.8.1 18-Jun-2002  jdolecek don't define aed driver hooks here
 1.2.6.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.3.126.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.3.120.1 28-Apr-2009  skrll Sync with HEAD.
 1.3.112.2 11-Mar-2010  yamt sync with head
 1.3.112.1 04-May-2009  yamt sync with head.
 1.5.22.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.5.12.1 30-Oct-2012  yamt sync with head
 1.49 13-Jan-2025  riastradh macppc/aed, akbd: Nix trailing whitespace.

No functional change intended.
 1.48 12-Jan-2025  nat Catch up macppc to the same as mac68k.

Unfortunately these files could not be tested fully as aed/akbd/ams and
adb_direct have suffered from bit rot and there corresponding attachments
are commented out in all macppc kernels.
 1.47 07-Aug-2021  thorpej branches: 1.47.12;
Merge thorpej-cfargs2.
 1.46 24-Apr-2021  thorpej branches: 1.46.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.45 27-Oct-2012  chs branches: 1.45.52;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.44 18-Jun-2011  matt branches: 1.44.2; 1.44.12;
struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.43 18-Mar-2009  cegger branches: 1.43.10;
Ansify function definitions w/o arguments. Generated with sed.
 1.42 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.41 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.40 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.39 13-Jun-2008  cegger branches: 1.39.4; 1.39.10;
use device_lookup_private to get softc
 1.38 17-Oct-2007  garbled branches: 1.38.16; 1.38.18; 1.38.20; 1.38.22; 1.38.24;
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.37 08-Aug-2007  macallan branches: 1.37.2;
use the ADB keymap in dev/adb/
 1.36 05-Mar-2007  tsutsui branches: 1.36.2; 1.36.10; 1.36.14; 1.36.18;
- use (uint8_t *) for buffer args on *_adbcomplete() functions
- remove kbd_adbcomplete() decl from akbd.c since it's in akbdvar.h
 1.35 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.34 11-Dec-2005  christos branches: 1.34.26;
merge ktrace-lwp.
 1.33 05-Jun-2005  nathanw branches: 1.33.2;
Pass NULL instead of (Ptr)0 to maintain function-pointer safety.
 1.32 01-Feb-2005  briggs Remove one level of interrupt redirection by switching on the ADB
hardware type and registering a Cuda or PMU interrupt handler
specifically instead of an intermediate interrupt handler.
 1.31 24-Jul-2003  nathanw branches: 1.31.8; 1.31.10;
Make kbd_passup() an exposed function.
 1.30 15-Jul-2003  lukem __KERNEL_RCSID()
 1.29 02-Oct-2002  thorpej branches: 1.29.6;
Use CFATTACH_DECL().
 1.28 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.27 14-Aug-2002  aymeric Remove the key repeating feature.
It is asking for trouble and is useless for the X server.
We can add it back later if need be.
 1.26 13-Aug-2002  aymeric akbd's now have a raw mode, and implement the WSKBDIO_SETMODE ioctl.
Adapted from OpenBSD.
 1.25 14-Jun-2002  itojun whitespace
 1.24 14-Jun-2002  itojun #define CAPS_IS_CONTROL will make caps key a control key (with weird
LCD indicator). From: "Nathan J. Williams" <nathanw@wasabisystems.com>
(#define name taken from arch/i386/isa/pccons.c)
 1.23 17-Mar-2002  atatat branches: 1.23.4; 1.23.6;
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.22 12-Mar-2002  wrstuden Only attach the first adb keyboard as the console kbd. Don't try for
the others. It is perfectly reasonable to have multiple adb keyboards,
and a number of multi-button mice have a fake kbd for the second and
third mouse buttons. Now my machine doesn't panic during boot when it
is trying to add a second ws console kbd.
 1.21 24-Feb-2002  dbj solve polled adb keyboard problems with dropped keys and unsynced caps lock
by queueing polled keys.
 1.20 23-Feb-2002  dbj turn on polling using cnpollc
 1.19 02-Jan-2002  dbj defer attaching akbd as console until after it has
been initialized in akbdattach
 1.18 02-Oct-2001  mycroft branches: 1.18.4;
Use WSKBD_TYPE_ADB.
 1.17 26-Jul-2001  tsubai branches: 1.17.2;
Change description of handler-ID == 195.
 1.16 17-Jul-2001  tsubai Eject PCMCIA card on ohare based models only.
 1.15 12-Jul-2001  nathanw Add the keyboard ID found on the American versions of the PowerBook G4 and
iBook (dual USB).
 1.14 08-Jun-2001  matt branches: 1.14.2;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.13 25-Jan-2001  tsubai branches: 1.13.2;
Generate key press event and key release event when capslock is pressed.
Now capslock key works correctly on X11.
 1.12 19-Dec-2000  tsubai Remove unnecessary casts.
 1.11 19-Dec-2000  tsubai Sync with mac68k.
 1.10 01-Sep-2000  tsubai Add fr key layout. (From Manuel Bouyer, modified by me)
 1.9 05-Sep-1999  tsubai branches: 1.9.2;
Recognize PCMCIA eject button. (Tested on only PowerBook 2400.)
 1.8 16-Jun-1999  tsubai Define PowerBook G3 Japanese keyboard.
 1.7 06-May-1999  thorpej Take all of the OpenFirmware "stdin" grovelling out of the ADB keyboard
driver, as the smarts for this all live somewhere else now.
 1.6 17-Feb-1999  tsubai branches: 1.6.2;
Sync with mac68k.
 1.5 10-Jan-1999  tsubai Add sanity checks in akbd_cnattach().
 1.4 20-Oct-1998  tsubai Add via-pmu support (only PowerBook 2400c/180 is tested).
 1.3 18-Oct-1998  tsubai Make compilable without aed.
 1.2 14-Oct-1998  tsubai akbd: wskbd support.
ofb: OpenFirmware generic framebuffer.
 1.1 13-Oct-1998  tsubai Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.6.2.1 06-May-1999  perry branches: 1.6.2.1.2;
pullup 1.6->1.7 (thorpej)
 1.6.2.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.9.2.3 11-Feb-2001  bouyer Sync with HEAD.
 1.9.2.2 05-Jan-2001  bouyer Sync with HEAD
 1.9.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.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.14.2.6 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.14.2.5 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.14.2.4 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.14.2.3 16-Mar-2002  jdolecek Catch up with -current.
 1.14.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.14.2.1 03-Aug-2001  lukem update to -current
 1.17.2.1 11-Oct-2001  fvdl Catch up with -current. Fix some bogons in the sparc64 kbd/ms
attach code. cd18xx conversion provided by mrg.
 1.18.4.7 18-Oct-2002  nathanw Catch up to -current.
 1.18.4.6 27-Aug-2002  nathanw Catch up to -current.
 1.18.4.5 20-Jun-2002  nathanw Catch up to -current.
 1.18.4.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.18.4.3 28-Feb-2002  nathanw Catch up to -current.
 1.18.4.2 11-Jan-2002  nathanw More catchup.
 1.18.4.1 02-Oct-2001  nathanw file akbd.c was added on branch nathanw_sa on 2002-01-11 23:38:35 +0000
 1.23.6.1 19-Jun-2003  grant Pull up revisions 1.26-1.27 (requested by aymeric in ticket #1324):

akbd's now have a raw mode, and implement the WSKBDIO_SETMODE ioctl.
Adapted from OpenBSD.

Remove the key repeating feature.
It is asking for trouble and is useless for the X server.
We can add it back later if need be.
 1.23.4.2 31-Aug-2002  gehenna catch up with -current.
 1.23.4.1 14-Jul-2002  gehenna catch up with -current.
 1.29.6.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.29.6.5 04-Feb-2005  skrll Sync with HEAD.
 1.29.6.4 13-Jan-2005  skrll Adapt to branch
 1.29.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.29.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.29.6.1 03-Aug-2004  skrll Sync with HEAD
 1.31.10.1 12-Feb-2005  yamt sync with head.
 1.31.8.1 29-Apr-2005  kent sync with -current
 1.33.2.2 03-Sep-2007  yamt sync with head.
 1.33.2.1 21-Jun-2006  yamt sync with head.
 1.34.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.36.18.1 09-Aug-2007  jmcneill Sync with HEAD.
 1.36.14.1 15-Aug-2007  skrll Sync with HEAD.
 1.36.10.1 03-Oct-2007  garbled Sync with HEAD
 1.36.2.1 20-Aug-2007  ad Sync with HEAD.
 1.37.2.1 06-Nov-2007  matt sync with HEAD
 1.38.24.1 18-Jun-2008  simonb Sync with head.
 1.38.22.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.38.20.1 04-May-2009  yamt sync with head.
 1.38.18.1 17-Jun-2008  yamt sync with head.
 1.38.16.1 29-Jun-2008  mjf Sync with HEAD.
 1.39.10.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.39.4.1 28-Apr-2009  skrll Sync with HEAD.
 1.43.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.44.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.44.2.1 30-Oct-2012  yamt sync with head
 1.45.52.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.46.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.47.12.1 02-Aug-2025  perseant Sync with HEAD
 1.5 23-Feb-2003  manu Merged mac68k and macppc keayboards, since they are the same. The file
could move to <arch/mac> if one day we create it.

Fixed french keymap: option was not mapped correctly, thus making
impossible to use |{}[] (tested).
Added jp keymap from PR/15438, and sf, sv, de and uk keymaps from OpenBSD.
(all untested).
 1.4 04-Mar-2002  dbj branches: 1.4.8;
add a few missing keys, including f1-f12,home,end,next,prior
 1.3 01-Sep-2000  tsubai branches: 1.3.4; 1.3.8;
Add fr key layout. (From Manuel Bouyer, modified by me)
 1.2 13-Jan-1999  tsubai branches: 1.2.8;
Use KS_KEYCODE macro.
 1.1 14-Oct-1998  tsubai akbd: wskbd support.
ofb: OpenFirmware generic framebuffer.
 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.8.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.3.4.1 16-Mar-2002  jdolecek Catch up with -current.
 1.4.8.1 02-Jun-2003  tron Pull up revision 1.5 (requested by manu in ticket #1183):
Merged mac68k and macppc keayboards, since they are the same. The file
could move to <arch/mac> if one day we create it.
Fixed french keymap: option was not mapped correctly, thus making
impossible to use |{}[] (tested).
Added jp keymap from PR/15438, and sf, sv, de and uk keymaps from
OpenBSD.
(all untested).
 1.14 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.13 14-Mar-2009  dsl branches: 1.13.12; 1.13.22;
Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.12 05-Mar-2007  tsutsui branches: 1.12.44; 1.12.52; 1.12.58;
- use (uint8_t *) for buffer args on *_adbcomplete() functions
- remove kbd_adbcomplete() decl from akbd.c since it's in akbdvar.h
 1.11 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.10 11-Dec-2005  christos branches: 1.10.26;
merge ktrace-lwp.
 1.9 24-Jul-2003  nathanw branches: 1.9.16;
Make kbd_passup() an exposed function.
 1.8 05-Sep-2002  jdolecek branches: 1.8.6;
put back NetBSD RCS Id removed in rev 1.6
 1.7 14-Aug-2002  aymeric Remove the key repeating feature.
It is asking for trouble and is useless for the X server.
We can add it back later if need be.
 1.6 13-Aug-2002  aymeric akbd's now have a raw mode, and implement the WSKBDIO_SETMODE ioctl.
Adapted from OpenBSD.
 1.5 24-Feb-2002  dbj branches: 1.5.8; 1.5.10;
solve polled adb keyboard problems with dropped keys and unsynced caps lock
by queueing polled keys.
 1.4 17-Feb-1999  tsubai branches: 1.4.22; 1.4.26;
Sync with mac68k.
 1.3 14-Oct-1998  tsubai Fix typo.
 1.2 14-Oct-1998  tsubai wskbd support.
 1.1 13-Oct-1998  tsubai Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.4.26.3 17-Sep-2002  nathanw Catch up to -current.
 1.4.26.2 27-Aug-2002  nathanw Catch up to -current.
 1.4.26.1 28-Feb-2002  nathanw Catch up to -current.
 1.4.22.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.4.22.1 16-Mar-2002  jdolecek Catch up with -current.
 1.5.10.1 19-Jun-2003  grant Pull up revisions 1.6-1.7 (requested by aymeric in ticket #1324):

akbd's now have a raw mode, and implement the WSKBDIO_SETMODE ioctl.
Adapted from OpenBSD.

Remove the key repeating feature.
It is asking for trouble and is useless for the X server.
We can add it back later if need be.
 1.5.8.1 31-Aug-2002  gehenna catch up with -current.
 1.8.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.8.6.1 03-Aug-2004  skrll Sync with HEAD
 1.9.16.1 03-Sep-2007  yamt sync with head.
 1.10.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.12.58.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.12.52.1 28-Apr-2009  skrll Sync with HEAD.
 1.12.44.1 04-May-2009  yamt sync with head.
 1.13.22.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.13.12.1 30-Oct-2012  yamt sync with head
 1.52 29-Jun-2024  riastradh if_stats(9): Add ifp argument to if_stat..._ref.

This will enable us to pass the ifp through to a dtrace probe inside.

No functional change intended in this change, but this is an API
change visible to modules so it shouldn't be pulled up.

PR kern/58377
 1.51 18-Sep-2022  thorpej Eliminate use of IFF_OACTIVE.
 1.50 20-Oct-2020  roy le(4): add link status change reporting to drivers which support it

Reviewed by thorpej@
Tested by martin@
 1.49 04-Feb-2020  martin Convert a few more drivers to the if_stats interface
 1.48 04-Feb-2020  skrll Adopt <net/if_stats.h>
 1.47 27-Dec-2019  msaitoh branches: 1.47.2;
s/expresion/expression/ in comment.
 1.46 29-May-2019  msaitoh 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.45 28-May-2019  msaitoh Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
 1.44 23-May-2019  msaitoh No functional change:
- Change ac(was arpcom) to ec(ethercom)
- Simplify MII structure initialization.
- u_int*_t -> uint*_t.
- KNF
 1.43 26-Apr-2019  msaitoh No functional change:
- u_int_{8,16,32}_t -> uint_{8,16,32}_t
- KNF.
- Tabify.
- Remove extra space.
 1.42 05-Feb-2019  msaitoh Remove very old IFF_NOTRAILERS flag.
 1.41 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.40 26-Jun-2018  msaitoh branches: 1.40.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.39 22-Jun-2018  msaitoh It's not required to include net/bpfdesc.h. Remove it.
 1.38 22-Feb-2017  nonaka branches: 1.38.6; 1.38.12;
Apply deferred if_start to more MD drivers.
 1.37 15-Dec-2016  ozaki-r branches: 1.37.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.36 02-Oct-2016  christos MFREE -> m_free
 1.35 10-Jun-2016  ozaki-r branches: 1.35.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.34 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.33 14-Mar-2014  mrg branches: 1.33.6;
remove various set-but-unused variables.
 1.32 26-Jul-2011  macallan branches: 1.32.2; 1.32.12; 1.32.16;
finish device_t-ification
 1.31 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.30 20-Dec-2010  matt Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.29 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.28 19-Jan-2010  pooka branches: 1.28.2; 1.28.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.27 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.26 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.25 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.24 07-Nov-2008  dyoung branches: 1.24.4;
*** 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.23 17-Oct-2007  garbled branches: 1.23.16; 1.23.20; 1.23.26; 1.23.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.22 01-Sep-2007  dyoung branches: 1.22.2; 1.22.4;
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.21 05-Mar-2007  tsutsui branches: 1.21.2; 1.21.10; 1.21.14; 1.21.18; 1.21.20;
Use (uint8_t *) for RX buffer.
 1.20 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.19 24-Jan-2007  hubertf branches: 1.19.2;
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.18 07-Sep-2006  dogcow branches: 1.18.2;
remove more vestiges of CCITT, LLC, HDLC, NS, and NSIP.
 1.17 11-Dec-2005  christos branches: 1.17.4; 1.17.8;
merge ktrace-lwp.
 1.16 30-Oct-2004  thorpej branches: 1.16.12;
When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
 1.15 15-Jul-2003  lukem branches: 1.15.4;
__KERNEL_RCSID()
 1.14 04-Jun-2003  bjh21 branches: 1.14.2;
In mcstop(), don't clear IFF_UP. Other drivers don't mess with IFF_UP
internally, other than to set it when they gain their first address.
Every caller of mcstop() bar one was either preserving the state of IFF_UP
itself or was conditional on its already being clear, so the only effect of
this is to simplify the code and to change that one case, thereby curing
PR port-macppc/12088 (underflows on "mc" cause it to be taken down).
 1.13 02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.12 16-Jan-2002  thorpej branches: 1.12.10;
Use bpf_mtap().
 1.11 22-Jul-2001  wiz branches: 1.11.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.10 15-Nov-2000  thorpej branches: 1.10.4;
Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach().
 1.9 01-Oct-2000  thorpej Move the check for "promisc + unicast + not for us" into ether_input(),
and change Ethernet drivers to always pass all received frames to
ether_input() (with a few exceptions, which are documented in the
code).
 1.8 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.7 18-May-1999  thorpej branches: 1.7.2; 1.7.12;
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.6 03-Sep-1998  tsubai branches: 1.6.8;
Change void mcintr() to int mcintr().
 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 15-May-1998  tsubai Initial import of macppc port.
 1.6.8.1 21-Jun-1999  thorpej Sync w/ -current.
 1.7.12.1 17-Jun-2003  msaitoh Pull up revisions 1.14 (requested by Ben Harris in ticket #46):
Don't bring down mc(4) interfaces when they underflow.
Fixes PR#12088.
 1.7.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.7.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.10.4.2 11-Feb-2002  jdolecek Sync w/ -current.
 1.10.4.1 03-Aug-2001  lukem update to -current
 1.11.6.2 28-Feb-2002  nathanw Catch up to -current.
 1.11.6.1 22-Jul-2001  nathanw file am79c950.c was added on branch nathanw_sa on 2002-02-28 04:10:39 +0000
 1.12.10.1 17-Jun-2003  msaitoh Pull up revisions 1.14 (requested by Ben Harris in ticket #1314):
Don't bring down mc(4) interfaces when they underflow.
Fixes PR#12088.
 1.14.2.4 02-Nov-2004  skrll Sync with HEAD.
 1.14.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.14.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.14.2.1 03-Aug-2004  skrll Sync with HEAD
 1.15.4.1 24-Jan-2005  he Pull up revision 1.16 (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.16.12.4 27-Oct-2007  yamt sync with head.
 1.16.12.3 03-Sep-2007  yamt sync with head.
 1.16.12.2 26-Feb-2007  yamt sync with head.
 1.16.12.1 30-Dec-2006  yamt sync with head.
 1.17.8.1 14-Sep-2006  yamt sync with head.
 1.17.4.1 09-Sep-2006  rpaulo sync with head
 1.18.2.1 01-Feb-2007  ad Sync with head.
 1.19.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.21.20.1 06-Nov-2007  matt sync with HEAD
 1.21.18.2 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.21.18.1 03-Sep-2007  jmcneill Sync with HEAD.
 1.21.14.1 03-Sep-2007  skrll Sync with HEAD.
 1.21.10.3 03-Oct-2007  garbled Sync with HEAD
 1.21.10.2 27-Sep-2007  macallan use ether_ioctl()
 1.21.10.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.21.2.2 23-Oct-2007  ad Sync with head.
 1.21.2.1 09-Oct-2007  ad Sync with head.
 1.22.4.1 25-Oct-2007  bouyer Sync with HEAD.
 1.22.2.1 18-Oct-2007  yamt sync with head.
 1.23.28.2 28-Apr-2009  skrll Sync with HEAD.
 1.23.28.1 19-Jan-2009  skrll Sync with HEAD.
 1.23.26.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.23.20.3 11-Aug-2010  yamt sync with head.
 1.23.20.2 11-Mar-2010  yamt sync with head
 1.23.20.1 04-May-2009  yamt sync with head.
 1.23.16.1 17-Jan-2009  mjf Sync with HEAD.
 1.24.4.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.28.4.2 05-Mar-2011  rmind sync with head
 1.28.4.1 30-May-2010  rmind sync with head
 1.28.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.32.16.1 18-May-2014  rmind sync with head
 1.32.12.2 03-Dec-2017  jdolecek update from HEAD
 1.32.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.32.2.1 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.33.6.5 28-Aug-2017  skrll Sync with HEAD
 1.33.6.4 05-Feb-2017  skrll Sync with HEAD
 1.33.6.3 05-Oct-2016  skrll Sync with HEAD
 1.33.6.2 09-Jul-2016  skrll Sync with HEAD
 1.33.6.1 19-Mar-2016  skrll Sync with HEAD
 1.35.2.3 20-Mar-2017  pgoyette Sync with HEAD
 1.35.2.2 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.35.2.1 04-Nov-2016  pgoyette Sync with HEAD
 1.37.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.38.12.3 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.38.12.2 28-Jul-2018  pgoyette Sync with HEAD
 1.38.12.1 25-Jun-2018  pgoyette Sync with HEAD
 1.38.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.40.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.40.2.1 10-Jun-2019  christos Sync with HEAD
 1.47.2.1 29-Feb-2020  ad Sync with head.
 1.3 25-Jun-2025  andvar s/Confiuration/Configuration/ in comments.
 1.2 31-Oct-2022  andvar branches: 1.2.8;
s/interrut/interrupt/ and s/accelelerator/accelerator/ in comments.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.8.1 02-Aug-2025  perseant Sync with HEAD
 1.31 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.30 24-Apr-2021  thorpej branches: 1.30.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.29 27-Oct-2012  chs branches: 1.29.52;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.28 01-Aug-2011  mbalmer branches: 1.28.2; 1.28.12;
According to the Oxford Dictionary of Etymology, a wether is a male sheep
or ram.
 1.27 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.26 10-Dec-2010  macallan branches: 1.26.6;
return the right values for ioctl(WSKBDIO_GTYPE) and ioctl(WSMOUSEIO_GTYPE)
fixes PR 23991
 1.25 05-Mar-2007  tsutsui branches: 1.25.66;
- use (uint8_t *) for buffer args on *_adbcomplete() functions
- remove kbd_adbcomplete() decl from akbd.c since it's in akbdvar.h
 1.24 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.23 14-Jan-2007  macallan branches: 1.23.2;
for trackpads add a sysctl to control wether tapping causes button events
 1.22 13-Nov-2006  he branches: 1.22.2;
Adapt to the wsmouse_input() change where we now require the 'w' axis.
 1.21 12-Nov-2006  plunky Tidy away wsmouse_input() abstractions and update
documentation to include the W direction.
 1.20 15-Oct-2006  macallan ansify
 1.19 15-Oct-2006  macallan report button clicks when tapping a trackpad
Tested on a PB3400c and an iBook G4
 1.18 11-Dec-2005  christos branches: 1.18.20; 1.18.22;
merge ktrace-lwp.
 1.17 05-Jun-2005  nathanw branches: 1.17.2;
Rearrange some of the ADB types and void * abuse to make -Wcast-qual
happy in the presence of the "volatile int flag" construct. Fix up a variety
of calls to pass NULL instead of (Ptr)0 to maintain function-pointer safety.
 1.16 15-Jul-2003  lukem __KERNEL_RCSID()
 1.15 02-Oct-2002  thorpej branches: 1.15.6;
Use CFATTACH_DECL().
 1.14 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.13 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.12 22-Jul-2001  wiz branches: 1.12.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.11 19-Dec-2000  tsubai branches: 1.11.4;
Remove unnecessary casts.
 1.10 19-Dec-2000  tsubai Add support for Kensington Turbo Mouse.
 1.9 19-Dec-2000  tsubai Sync with mac68k.
 1.8 08-Jan-2000  takemura Absolute pointing device support.
- Wsmouse_input() get new argument 'flag', which indicates whether x/y/z are
relative or absolute.
- Wsmouse get new io controls, WSMOUSEIO_SCALIBCOORDS and
WSMOUSEIO_GCALIBCOORDS.
 1.7 16-Aug-1999  tsubai branches: 1.7.2;
Make configurable without ams.
 1.6 17-Jun-1999  tsubai Add "trackpad" definition.
 1.5 17-Feb-1999  tsubai branches: 1.5.4;
Sync with mac68k.
 1.4 18-Jan-1999  tsubai Invert Y axis (like ums, pms, ...).
 1.3 18-Nov-1998  tsubai Don't send mouse events to wsmouse layer if wsmouse isn't configured.
 1.2 18-Oct-1998  tsubai Add wsmouse support.
 1.1 13-Oct-1998  tsubai Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.5.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.7.2.2 05-Jan-2001  bouyer Sync with HEAD
 1.7.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.11.4.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.4.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.11.4.1 03-Aug-2001  lukem update to -current
 1.12.6.3 18-Oct-2002  nathanw Catch up to -current.
 1.12.6.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.12.6.1 22-Jul-2001  nathanw file ams.c was added on branch nathanw_sa on 2002-04-01 07:40:53 +0000
 1.15.6.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.15.6.4 13-Jan-2005  skrll Adapt to branch
 1.15.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.15.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.15.6.1 03-Aug-2004  skrll Sync with HEAD
 1.17.2.4 03-Sep-2007  yamt sync with head.
 1.17.2.3 26-Feb-2007  yamt sync with head.
 1.17.2.2 30-Dec-2006  yamt sync with head.
 1.17.2.1 21-Jun-2006  yamt sync with head.
 1.18.22.2 10-Dec-2006  yamt sync with head.
 1.18.22.1 22-Oct-2006  yamt sync with head
 1.18.20.2 01-Feb-2007  ad Sync with head.
 1.18.20.1 18-Nov-2006  ad Sync with head.
 1.22.2.1 19-Jan-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #373):
sys/arch/macppc/dev/amsvar.h: revision 1.6
sys/arch/macppc/dev/ams.c: revision 1.23
for trackpads add a sysctl to control wether tapping causes button
events
 1.23.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.25.66.1 05-Mar-2011  rmind sync with head
 1.26.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.28.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.28.2.1 30-Oct-2012  yamt sync with head
 1.29.52.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.30.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.11 27-Jun-2025  andvar Grammar and spelling fixes, mainly in comments. A few in documentation,
logging, test description, and SCSI ASC/ASCQ assignment descriptions.
 1.10 27-Oct-2012  chs branches: 1.10.74;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.9 14-Mar-2009  dsl branches: 1.9.12; 1.9.22;
Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.8 05-Mar-2007  tsutsui branches: 1.8.44; 1.8.52; 1.8.58;
- use (uint8_t *) for buffer args on *_adbcomplete() functions
- remove kbd_adbcomplete() decl from akbd.c since it's in akbdvar.h
 1.7 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.6 14-Jan-2007  macallan branches: 1.6.2;
for trackpads add a sysctl to control wether tapping causes button events
 1.5 15-Oct-2006  macallan branches: 1.5.2;
report button clicks when tapping a trackpad
Tested on a PB3400c and an iBook G4
 1.4 17-Jun-1999  tsubai branches: 1.4.52; 1.4.82; 1.4.84;
Add "trackpad" definition.
 1.3 17-Feb-1999  tsubai branches: 1.3.4;
Sync with mac68k.
 1.2 18-Oct-1998  tsubai Add wsmouse support.
 1.1 13-Oct-1998  tsubai Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.3.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.4.84.1 22-Oct-2006  yamt sync with head
 1.4.82.2 01-Feb-2007  ad Sync with head.
 1.4.82.1 18-Nov-2006  ad Sync with head.
 1.4.52.3 03-Sep-2007  yamt sync with head.
 1.4.52.2 26-Feb-2007  yamt sync with head.
 1.4.52.1 30-Dec-2006  yamt sync with head.
 1.5.2.1 19-Jan-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #373):
sys/arch/macppc/dev/amsvar.h: revision 1.6
sys/arch/macppc/dev/ams.c: revision 1.23
for trackpads add a sysctl to control wether tapping causes button
events
 1.6.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.8.58.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.8.52.1 28-Apr-2009  skrll Sync with HEAD.
 1.8.44.1 04-May-2009  yamt sync with head.
 1.9.22.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.9.12.1 30-Oct-2012  yamt sync with head
 1.10.74.1 02-Aug-2025  perseant Sync with HEAD
 1.32 11-Feb-2022  thorpej Remove some #ifdef __OpenBSD__ code that's not complete and thus doesn't
serve much point in existing here.
 1.31 26-Sep-2021  thorpej Driver "kqfilter" entry points return an error code, so if an invalid
filter is requested, return EINVAL rather than 1.
 1.30 26-Sep-2021  thorpej Change the kqueue filterops::f_isfd field to filterops::f_flags, and
define a flag FILTEROP_ISFD that has the meaning of the prior f_isfd.
Field and flag name aligned with OpenBSD.

This does not constitute a functional or ABI change, as the field location
and size, and the value placed in that field, are the same as the previous
code, but we're bumping __NetBSD_Version__ so 3rd-party module source code
can adapt, as needed.

NetBSD 9.99.89
 1.29 19-Dec-2020  thorpej Use sel{record,remove}_knote().
 1.28 30-Oct-2020  christos branches: 1.28.2;
c99 struct initializers
 1.27 25-Jul-2014  dholland Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.26 16-Mar-2014  dholland branches: 1.26.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.25 27-Oct-2012  chs branches: 1.25.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.24 18-Jun-2011  matt branches: 1.24.2; 1.24.12;
struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.23 14-Mar-2009  dsl branches: 1.23.10;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.22 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.21 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.20 13-Jun-2008  cegger branches: 1.20.4; 1.20.10;
use device_lookup_private to get softc
 1.19 01-Mar-2008  rmind branches: 1.19.2; 1.19.4; 1.19.6; 1.19.8;
Welcome to 4.99.55:

- Add a lot of missing selinit() and seldestroy() calls.

- Merge selwakeup() and selnotify() calls into a single selnotify().

- Add an additional 'events' argument to selnotify() call. It will
indicate which event (POLL_IN, POLL_OUT, etc) happen. If unknown,
zero may be used.

Note: please pass appropriate value of 'events' where possible.
Proposed on: <tech-kern>
 1.18 11-Dec-2007  david branches: 1.18.2; 1.18.6;
Wrong copyright template used on import. Referenced Regents, but
Berkeley wasn't in on this one.

closes port-macppc/37520, filed by Ted Unangst.
 1.17 06-Dec-2007  ad branches: 1.17.2; 1.17.4;
lockmgr -> mutex
 1.16 04-Mar-2007  christos branches: 1.16.6; 1.16.18; 1.16.20; 1.16.26; 1.16.28;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.15 11-Dec-2005  christos branches: 1.15.26;
merge ktrace-lwp.
 1.14 05-Jun-2005  nathanw branches: 1.14.2;
Fix shadowing of parameter with local variable.
 1.13 01-Feb-2005  briggs Calculate and use seconds of power remaining for smart battery types.
 1.12 01-Feb-2005  briggs ADB_HW_PB is really ADB_HW_PMU.
 1.11 01-Feb-2005  briggs adb_direct.h contents are in adbvar.h. No need for duplication.
 1.10 15-Apr-2004  aymeric branches: 1.10.4; 1.10.6;
. add a missing call to lockinit() in apmattach()
. while here, explicitly initialize three softc variables to 0
 1.9 15-Jul-2003  lukem __KERNEL_RCSID()
 1.8 29-Jun-2003  fvdl branches: 1.8.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.7 29-Jun-2003  darrenr 'struct proc *' -> 'struct lwp *' as required to get GENERIC for macppc built
 1.6 26-Nov-2002  christos si_ -> sel_
 1.5 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.4 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.3 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.2 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.1 18-Jun-2002  itojun branches: 1.1.2; 1.1.4; 1.1.6;
apm emulation, from openbsd
 1.1.6.4 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.3 02-Oct-2002  jdolecek do not need the (void *) cast for kn_hook anymore
 1.1.6.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.1.6.1 18-Jun-2002  jdolecek file apm.c was added on branch kqueue on 2002-09-06 08:37:06 +0000
 1.1.4.2 16-Jul-2002  gehenna catch up with -current.
 1.1.4.1 18-Jun-2002  gehenna file apm.c was added on branch gehenna-devsw on 2002-07-16 08:48:16 +0000
 1.1.2.6 11-Dec-2002  thorpej Sync with HEAD.
 1.1.2.5 11-Nov-2002  nathanw Catch up to -current
 1.1.2.4 18-Oct-2002  nathanw Catch up to -current.
 1.1.2.3 17-Sep-2002  nathanw Catch up to -current.
 1.1.2.2 20-Jun-2002  nathanw Catch up to -current.
 1.1.2.1 18-Jun-2002  nathanw file apm.c was added on branch nathanw_sa on 2002-06-20 03:39:33 +0000
 1.8.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.8.2.5 04-Feb-2005  skrll Sync with HEAD.
 1.8.2.4 18-Nov-2004  skrll Adapt to branch. macppc release builds.
 1.8.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.8.2.1 03-Aug-2004  skrll Sync with HEAD
 1.10.6.1 12-Feb-2005  yamt sync with head.
 1.10.4.1 29-Apr-2005  kent sync with -current
 1.14.2.5 17-Mar-2008  yamt sync with head.
 1.14.2.4 21-Jan-2008  yamt sync with head
 1.14.2.3 07-Dec-2007  yamt sync with head
 1.14.2.2 03-Sep-2007  yamt sync with head.
 1.14.2.1 21-Jun-2006  yamt sync with head.
 1.15.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.16.28.2 26-Dec-2007  ad Sync with head.
 1.16.28.1 08-Dec-2007  ad Sync with head.
 1.16.26.2 27-Dec-2007  mjf Sync with HEAD.
 1.16.26.1 08-Dec-2007  mjf Sync with HEAD.
 1.16.20.2 23-Mar-2008  matt sync with HEAD
 1.16.20.1 09-Jan-2008  matt sync with HEAD
 1.16.18.1 09-Dec-2007  jmcneill Sync with HEAD.
 1.16.6.1 09-Dec-2007  reinoud Pullup to HEAD
 1.17.4.1 13-Dec-2007  bouyer Sync with HEAD
 1.17.2.1 13-Dec-2007  yamt sync with head.
 1.18.6.2 29-Jun-2008  mjf Sync with HEAD.
 1.18.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.18.2.1 24-Mar-2008  keiichi sync with head.
 1.19.8.1 18-Jun-2008  simonb Sync with head.
 1.19.6.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.19.4.1 04-May-2009  yamt sync with head.
 1.19.2.1 17-Jun-2008  yamt sync with head.
 1.20.10.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.20.4.1 28-Apr-2009  skrll Sync with HEAD.
 1.23.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.24.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.24.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.24.2.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.24.2.1 30-Oct-2012  yamt sync with head
 1.25.2.1 18-May-2014  rmind sync with head
 1.26.2.1 10-Aug-2014  tls Rebase.
 1.28.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.52 30-Aug-2023  macallan don't abuse the interrupt lock for waits in the event thread
 1.51 05-Mar-2021  rin Convert to intr_establish_xname().
 1.50 06-Feb-2021  isaki Calling halt_{input,output} is done by the MI audio layer if necessary.
 1.49 26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.48 08-Jun-2019  isaki branches: 1.48.10;
Clean get_props().
- Make get_props() return AUDIO_PROP_{PLAYBACK,CAPTURE} properly.
This eliminates need for audio.c to take care of such (old)
drivers which don't return both of PLAYBACK and CAPTURE.
- All get_props() doesn't need to return AUDIO_PROP_MMAP.
It is handled in the audio layer now.
 1.47 08-May-2019  isaki Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.46 16-Mar-2019  isaki branches: 1.46.2;
Use C99 style struct initializer to audio_hw_if.
 1.45 24-Aug-2016  macallan branches: 1.45.16;
don't grab the interrupt lock around mixer operations
 1.44 15-Jul-2016  macallan adjust to dbdma changes
 1.43 02-Nov-2012  phx branches: 1.43.14; 1.43.18;
My PowerMac3,1 is using gpio4 to detect a connected headphone, and I would bet
that the same is true for PowerMac3,2.
 1.42 24-Nov-2011  mrg branches: 1.42.4; 1.42.8;
put back IPL_AUDIO and splaudio(), at the request of rmind. they are
aliases and now we can easily revert audio to IPL_VM if necessary,
without having to revert the whole branch.
 1.41 23-Nov-2011  jmcneill Merge jmcneill-audiomp3 branch, which is derived from ad-audiomp2. From
the original ad-audiomp branch notes:

Add MP locking to the audio drivers.

Making the audio drivers MP safe is necessary before efforts
can be made to make the VM system MP safe.

The are two locks per device instance, an ISR lock and
a character device lock. The ISR lock replaces calls to
splaudio()/splx(), and will be held across calls to device
methods which were called at splaudio() before (e.g.
trigger_output). The character device lock is held across
calls to nearly all of the methods, excluding some only
used for initialization, e.g. get_locks.

Welcome to 5.99.57.
 1.40 20-Feb-2011  macallan branches: 1.40.4; 1.40.6;
bus_spacify, while there explicitly un-mute the headphone output when using
the beige G3's external mixer
 1.39 22-Dec-2010  macallan branches: 1.39.2; 1.39.4;
we need uvm_extern.h now
 1.38 20-Dec-2010  matt Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.37 07-Sep-2010  macallan make this work with PMF hotkey events
Now the volume control buttons work on my Pismo
 1.36 05-Nov-2009  dyoung branches: 1.36.2; 1.36.4;
In awacs(4) and snapper(4), use deviter(9) instead of accessing
alldevs directly.

In pbms(4), delete some unused debugging macros, expand USB
compatibility macros, and add a child-detachment routine. Simplify
pbms(4) deactivation and detachment.

These changes are compile-tested, only.
 1.35 27-Aug-2008  jmcneill branches: 1.35.4;
PR#39414: No audio from awacs on PowerBook G3 (Firewire/Pismo)

Don't enable parallel output on PowerBook3,1 models.
 1.34 16-May-2008  macallan branches: 1.34.4;
struct device * -> device_t
 1.33 04-Nov-2007  macallan branches: 1.33.16; 1.33.18; 1.33.20; 1.33.22;
add a mixer control for the loopthrough channel that some awacs have - it
controls the volume of input data looped through to the output ( for
listening to what you record, it has no influence on recording level )
- defaults to zero.
 1.32 18-Oct-2007  macallan - make match() return 100 for awacs and only 1 for i2s
- correct gpio wiring for PowerMac3,3 / Gigabit G4
 1.31 17-Oct-2007  garbled 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.30 14-Aug-2007  macallan branches: 1.30.2; 1.30.4; 1.30.6;
fix a logic botch in the headphone wiring setup - what was thought to be
'screamer' specific is actually beige G3 specific.
 1.29 09-Jul-2007  ad branches: 1.29.4; 1.29.8;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.28 25-Mar-2007  macallan branches: 1.28.4;
automatically switch between speaker and headphone output, simplify mixer
controls to match snapper
XXX - the gpios to monitor audio jacks are wired differently on different
Macs, this is known to work right on beige G3, PowerBook 3400 and Performa
63xx, it should do The Right Thing on others as well but needs more testing
 1.27 25-Mar-2007  jmcneill Handle the input change interrupt, and automatically switch between
headphone and speaker as appropriate.
 1.26 28-Feb-2007  thorpej branches: 1.26.2; 1.26.4; 1.26.6;
TRUE -> true, FALSE -> false
 1.25 17-Jan-2007  macallan branches: 1.25.2;
use sgsmix if present and appropriate
 1.24 11-Dec-2005  christos branches: 1.24.20;
merge ktrace-lwp.
 1.23 15-Jan-2005  kent branches: 1.23.10;
ansify and KNF
 1.22 10-Jan-2005  kent merge kent-audio1 branch, which introduces audio filter pipeline to the MI
audio framework


Summary of changes:

* struct audio_params
- remove sw_code, factor, factor_denom, hw_sample_rate,
hw_encoding ,hw_precision, and hw_channels. Conversion information
is conveyed by stream_filter_list_t.
- change the type of sample_rate: u_long -> u_int
- add `validbits,' which represents the valid data size in
precision bits. It is required in order to distinguish 24/32bit
from 24/24bit or 32/32bit.

* audio_hw_if
- add two parameters to set_params()
stream_filter_list_t *pfil, stream_filter_list *rfil
A HW driver should set filter recipes for requested formats
- constify audio_params parameters of trigger_output() and
trigger_input(). They represent audio formats for the hardware.
- make open() and close() optional
- add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
to round_blocksize()

* sw_code is replaced with stream_filter_t.
stream_filer_t converts audio data in an input buffer and writes
into another output buffer unlike sw_code, which converts data in
single buffer.
converters in dev/auconv.c, dev/mulaw.c, dev/aurateconv.c,
dev/tc/bba.c, dev/ic/msm6258.c, and arch/arm/iomd/vidcaudio.c are
reimplemented as stream_filter_t

* MI audio
- audiosetinfo() builds filter pipelines from stream_filter_list_t
filled by audio_hw_if::set_params()
- audiosetinfo() returns with EINVAL if mmapped and set_params()
requests filters
- audio_write(), audio_pint(), and audio_rint() invoke a filter
pipeline.
- ioctl() for FIONREAD, AUDIO_WSEEK, AUDIO_GETIOFFS,
AUDIO_GETOOFFS, and audio_prinfo::{seek,samples} for
AUDIO_GETINFO handle values for a buffer nearest to userland.

* add `struct device *' parameter to ac97_attach()

* all of audio HW drivers follow audio_hw_if and ac97 changes
 1.21 29-Oct-2004  yamt branches: 1.21.2;
constify audio_hw_if, midi_hw_if, and radio_hw_if.
 1.20 02-Nov-2003  thorpej Squish some recent compiler warnings.
 1.19 15-Jul-2003  lukem __KERNEL_RCSID()
 1.18 03-May-2003  wiz branches: 1.18.2;
DMA, not dma nor Dma.
 1.17 02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.16 04-Mar-2003  soren Attach on recent TiBooks.
XXX The mixer doesn't work yet.
 1.15 13-Oct-2002  wiz Support 48kHz by using aurateconv.
Based on a patch by TAMURA Kent -- thanks!
 1.14 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.13 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.12 03-Oct-2001  augustss branches: 1.12.4;
Add a new optional method, dev_ioctl, to the audio hardware driver interface.
It is called when an unrecognized ioctl() is performed on a device,
thus allowing ioctl()s that frob the hardware driver (like loading
microcode).
 1.11 19-Jun-2001  simonb branches: 1.11.2; 1.11.4;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.10 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.9 05-Apr-2001  tsubai Support uni-north based models. (XXX not complete)
 1.8 05-Apr-2001  tsubai Correct input volume settings.
 1.7 15-Mar-2001  tsubai Accept 8000Hz (XXX).
 1.6 15-Mar-2001  tsubai Add ulinear16 support.
Return EINVAL if specified rate is not available.
 1.5 12-Mar-2001  tsubai Round up block size to at least NBPG bytes.
 1.4 26-Feb-2001  wiz branches: 1.4.2;
add handling for the input channel selection/volume (no recording yet,
just the mixer interface)
 1.3 25-Jan-2001  wiz branches: 1.3.2;
Make output selection work -- you can use lineout now instead of the
internal loudspeakers.
 1.2 03-Nov-2000  tsubai branches: 1.2.2;
Don't match if nintr > 12 (more than 3 cells).
 1.1 25-Aug-2000  tsubai Add (experimental) awacs audio driver. Output (play) only.
 1.2.2.7 21-Apr-2001  bouyer Sync with HEAD
 1.2.2.6 27-Mar-2001  bouyer Sync with HEAD.
 1.2.2.5 12-Mar-2001  bouyer Sync with HEAD.
 1.2.2.4 11-Feb-2001  bouyer Sync with HEAD.
 1.2.2.3 22-Nov-2000  bouyer Sync with HEAD.
 1.2.2.2 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 03-Nov-2000  bouyer file awacs.c was added on branch thorpej_scsipi on 2000-11-20 20:12:56 +0000
 1.3.2.4 22-Mar-2001  he Pull up revisions 1.5-1.7 (requested by tsubai):
Round up block size to at least NBPG bytes.
Return EINVAL if specified sample rate is not available.
Fix 16bit ulinear bug, and enable ulinear.
 1.3.2.3 26-Feb-2001  he Apply patch (requested by wrstuden):
Make this compile on this release branch.
 1.3.2.2 04-Feb-2001  he Pull up revision 1.1 (new, requested by mycroft):
Add new driver for Apple sound chip.
 1.3.2.1 25-Jan-2001  he file awacs.c was added on branch netbsd-1-5 on 2001-02-04 20:22:48 +0000
 1.4.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.4.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.11.4.1 11-Oct-2001  fvdl Catch up with -current. Fix some bogons in the sparc64 kbd/ms
attach code. cd18xx conversion provided by mrg.
 1.11.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.11.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.12.4.2 18-Oct-2002  nathanw Catch up to -current.
 1.12.4.1 03-Oct-2001  nathanw file awacs.c was added on branch nathanw_sa on 2002-10-18 02:38:34 +0000
 1.18.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.18.2.4 02-Nov-2004  skrll Sync with HEAD.
 1.18.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.18.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.18.2.1 03-Aug-2004  skrll Sync with HEAD
 1.21.2.2 09-Jan-2005  kent audio_hw_if change
* make open() and close() optional
* add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
to round_blocksize()
 1.21.2.1 03-Jan-2005  kent adopt the filter pipeline framework
 1.23.10.4 15-Nov-2007  yamt sync with head.
 1.23.10.3 27-Oct-2007  yamt sync with head.
 1.23.10.2 03-Sep-2007  yamt sync with head.
 1.23.10.1 26-Feb-2007  yamt sync with head.
 1.24.20.1 01-Feb-2007  ad Sync with head.
 1.25.2.2 15-Apr-2007  yamt sync with head.
 1.25.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.26.6.1 29-Mar-2007  reinoud Pullup to -current
 1.26.4.1 11-Jul-2007  mjf Sync with head.
 1.26.2.6 03-Dec-2007  ad Sync with HEAD.
 1.26.2.5 03-Dec-2007  ad Sync with HEAD.
 1.26.2.4 23-Oct-2007  ad Sync with head.
 1.26.2.3 20-Aug-2007  ad Sync with HEAD.
 1.26.2.2 15-Jul-2007  ad Sync with head.
 1.26.2.1 10-Apr-2007  ad Sync with head.
 1.28.4.5 03-Oct-2007  garbled Sync with HEAD
 1.28.4.4 14-Aug-2007  macallan sync with HEAD
 1.28.4.3 02-Aug-2007  macallan sync with HEAD
 1.28.4.2 14-Jun-2007  macallan fix some bus_spacification fallout
 1.28.4.1 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.29.8.3 04-Nov-2007  jmcneill Sync with HEAD.
 1.29.8.2 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.29.8.1 16-Aug-2007  jmcneill Sync with HEAD.
 1.29.4.1 15-Aug-2007  skrll Sync with HEAD.
 1.30.6.2 13-Nov-2007  bouyer Sync with HEAD
 1.30.6.1 25-Oct-2007  bouyer Sync with HEAD.
 1.30.4.1 18-Oct-2007  yamt sync with head.
 1.30.2.1 06-Nov-2007  matt sync with HEAD
 1.33.22.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.33.22.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.33.20.3 09-Oct-2010  yamt sync with head
 1.33.20.2 11-Mar-2010  yamt sync with head
 1.33.20.1 04-May-2009  yamt sync with head.
 1.33.18.1 18-May-2008  yamt sync with head.
 1.33.16.2 28-Sep-2008  mjf Sync with HEAD.
 1.33.16.1 02-Jun-2008  mjf Sync with HEAD.
 1.34.4.1 19-Oct-2008  haad Sync with HEAD.
 1.35.4.1 06-Nov-2012  riz Pull up following revision(s) (requested by phx in ticket #1816):
sys/arch/macppc/dev/awacs.c: revision 1.43
My PowerMac3,1 is using gpio4 to detect a connected headphone, and I would bet
that the same is true for PowerMac3,2.
 1.36.4.1 05-Mar-2011  rmind sync with head
 1.36.2.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.39.4.1 05-Mar-2011  bouyer Sync with HEAD
 1.39.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.40.6.2 22-Nov-2011  jmcneill get rid of unused 'powerstate' callback in audio_hw_if
 1.40.6.1 22-Nov-2011  macallan adapt to jmcneill-audiomp3
from mrg@, minor fixes and testing by me
 1.40.4.2 16-Jan-2013  yamt sync with (a bit old) head
 1.40.4.1 17-Apr-2012  yamt sync with head
 1.42.8.2 03-Dec-2017  jdolecek update from HEAD
 1.42.8.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.42.4.1 19-Nov-2012  riz Pull up following revision(s) (requested by phx in ticket #666):
sys/arch/macppc/dev/awacs.c: revision 1.43
My PowerMac3,1 is using gpio4 to detect a connected headphone, and I would bet
that the same is true for PowerMac3,2.
 1.43.18.1 26-Jul-2016  pgoyette Sync with HEAD
 1.43.14.1 05-Oct-2016  skrll Sync with HEAD
 1.45.16.1 10-Jun-2019  christos Sync with HEAD
 1.46.2.3 04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.46.2.2 24-Apr-2019  isaki Adapt to audio2.
- Some models don't have SLINEAR_LE but only SLINEAR_BE is enough.
 1.46.2.1 21-Apr-2019  isaki Use C99 style struct initializer to audio_format.
 1.48.10.1 03-Apr-2021  thorpej Sync with HEAD.
 1.15 26-Jul-2011  macallan finish device_t-ification
 1.14 10-Jul-2011  pgoyette Initialize sensor state. (Missed the commit for this in my last
roto-till.)
 1.13 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.12 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.11 23-Oct-2008  aymeric branches: 1.11.26;
pass the right sensor types so that the kernel doesn't panic() on my
iBook G3
 1.10 29-Apr-2008  martin branches: 1.10.6;
Convert to new 2 clause license
 1.9 30-Mar-2008  macallan branches: 1.9.2; 1.9.4;
actually update the 'battery present' sensor. Doh.
 1.8 12-Dec-2007  macallan branches: 1.8.6;
fix sensor attachment
 1.7 16-Nov-2007  xtraeme branches: 1.7.2; 1.7.4; 1.7.6;
Extend the envsys2 API (one more time, sorry) as defined in:

http://mail-index.netbsd.org/tech-kern/2007/11/09/0001.html

sysmon_envsys_create() and sysmon_envsys_destroy() were added to
create/destroy sysmon_envsys objects (and its TAILQ/LIST for sensors/events).

sysmon_envsys_sensor_attach() and sysmon_envsys_sensor_detach() were
added to attach/detach sensors to a specified sysmon_envsys device.

The events framework is now per device and configurable via the
ENVSYS_SETDICTIONARY ioctl or /etc/envsys.conf and envstat(8).

Update all users and documentation to reflect these changes.
 1.6 17-Oct-2007  garbled branches: 1.6.2;
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.5 16-Jul-2007  xtraeme branches: 1.5.8; 1.5.10; 1.5.12; 1.5.14;
battery_gtredata: there's no need to set ENVSYS_SVALID on each case,
just set it after the switch.
 1.4 05-Jul-2007  xtraeme - Adapt to envsys2.
- Use one Indicator sensor for battery charge and set it to 1 or 0
accordingly.
 1.3 09-May-2007  macallan add an optional callback from pmu's worker thread, use it to poll AC power
status on legacy batteries where we don't get environment interrupts. Also
report AC status changes to powerd.
 1.2 03-Apr-2007  macallan branches: 1.2.4;
adapt to pmu changes
 1.1 15-Feb-2007  macallan branches: 1.1.2; 1.1.4; 1.1.8; 1.1.10;
not quite complete yet driver for batteries found in ohare-based PowerBooks
no APM emulation or sysmon integration yet but some stuff is exposed via
envsys
 1.1.10.1 11-Jul-2007  mjf Sync with head.
 1.1.8.6 03-Dec-2007  ad Sync with HEAD.
 1.1.8.5 23-Oct-2007  ad Sync with head.
 1.1.8.4 20-Aug-2007  ad Sync with HEAD.
 1.1.8.3 15-Jul-2007  ad Sync with head.
 1.1.8.2 27-May-2007  ad Sync with head.
 1.1.8.1 10-Apr-2007  ad Sync with head.
 1.1.4.6 21-Jan-2008  yamt sync with head
 1.1.4.5 07-Dec-2007  yamt sync with head
 1.1.4.4 27-Oct-2007  yamt sync with head.
 1.1.4.3 03-Sep-2007  yamt sync with head.
 1.1.4.2 26-Feb-2007  yamt sync with head.
 1.1.4.1 15-Feb-2007  yamt file battery.c was added on branch yamt-lazymbuf on 2007-02-26 09:07:20 +0000
 1.1.2.2 17-May-2007  yamt sync with head.
 1.1.2.1 15-Apr-2007  yamt sync with head.
 1.2.4.5 03-Oct-2007  garbled Sync with HEAD
 1.2.4.4 02-Aug-2007  macallan sync with HEAD
 1.2.4.3 14-Jun-2007  macallan fix some bus_spacification fallout
 1.2.4.2 22-May-2007  matt Update to HEAD.
 1.2.4.1 09-May-2007  macallan sync with HEAD
 1.5.14.2 18-Nov-2007  bouyer Sync with HEAD
 1.5.14.1 25-Oct-2007  bouyer Sync with HEAD.
 1.5.12.1 18-Oct-2007  yamt sync with head.
 1.5.10.2 09-Jan-2008  matt sync with HEAD
 1.5.10.1 06-Nov-2007  matt sync with HEAD
 1.5.8.2 21-Nov-2007  joerg Sync with HEAD.
 1.5.8.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.6.2.2 27-Dec-2007  mjf Sync with HEAD.
 1.6.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.7.6.1 13-Dec-2007  bouyer Sync with HEAD
 1.7.4.1 13-Dec-2007  yamt sync with head.
 1.7.2.1 26-Dec-2007  ad Sync with head.
 1.8.6.3 17-Jan-2009  mjf Sync with HEAD.
 1.8.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.8.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.9.4.2 04-May-2009  yamt sync with head.
 1.9.4.1 16-May-2008  yamt sync with head.
 1.9.2.1 18-May-2008  yamt sync with head.
 1.10.6.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.11.26.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.4 16-Apr-2020  rin Revert previous for now:
http://mail-index.netbsd.org/source-changes/2020/04/16/msg116278.html

The reasoning turned out to be wrong; __KERNEL_RCSID() in header files
does *not* overwrite RCSID in main source files. The real problem is that
it inserts its RCSID into *every* object files. However, it can be still
useful even if heavily duplicated.
 1.3 16-Apr-2020  rin Stop using __KERNEL_RCSID() in header files; it confuses ident(1) by
overwriting RCSID in main source files.

XXX
The first argument of __KERNEL_RCSID() is neglected for ELF. If we wish
to have RCSID of header files in kernel binary, we need something like
__FBSDID() macro in FreeBSD.
 1.2 29-Apr-2008  martin branches: 1.2.98;
Convert to new 2 clause license
 1.1 15-Feb-2007  macallan branches: 1.1.4; 1.1.46; 1.1.48; 1.1.50;
not quite complete yet driver for batteries found in ohare-based PowerBooks
no APM emulation or sysmon integration yet but some stuff is exposed via
envsys
 1.1.50.1 16-May-2008  yamt sync with head.
 1.1.48.1 18-May-2008  yamt sync with head.
 1.1.46.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.4.2 26-Feb-2007  yamt sync with head.
 1.1.4.1 15-Feb-2007  yamt file batteryvar.h was added on branch yamt-lazymbuf on 2007-02-26 09:07:20 +0000
 1.2.98.1 20-Apr-2020  bouyer Sync with HEAD
 1.7 05-Mar-2021  rin Convert to intr_establish_xname().
 1.6 08-Dec-2018  thorpej branches: 1.6.12;
Clean up initialization of com_regs structure, in preparation for
some additional changers.
 1.5 27-Oct-2012  chs branches: 1.5.36; 1.5.38;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.4 01-Jul-2011  dyoung branches: 1.4.2; 1.4.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.3 14-Mar-2008  cube Split device_t and softc for all com(4) devices (well, everything that
uses a com_softc backend). Use proper types and ansify where appropriate.
 1.2 01-Sep-2006  matt branches: 1.2.4; 1.2.10; 1.2.36; 1.2.56; 1.2.60;
Make this compile. The "fixed" bus_space_tag_t is horrible.
 1.1 05-Aug-2006  sanjayl branches: 1.1.4;
1st cut of Powermac G5 support (uses bridge mode).
 1.1.4.3 03-Sep-2006  yamt sync with head.
 1.1.4.2 11-Aug-2006  yamt sync with head
 1.1.4.1 05-Aug-2006  yamt file com_mainbus.c was added on branch yamt-pdpolicy on 2006-08-11 15:42:13 +0000
 1.2.60.1 03-Apr-2008  mjf Sync with HEAD.
 1.2.56.1 24-Mar-2008  keiichi sync with head.
 1.2.36.1 23-Mar-2008  matt sync with HEAD
 1.2.10.3 17-Mar-2008  yamt sync with head.
 1.2.10.2 30-Dec-2006  yamt sync with head.
 1.2.10.1 01-Sep-2006  yamt file com_mainbus.c was added on branch yamt-lazymbuf on 2006-12-30 20:46:26 +0000
 1.2.4.2 09-Sep-2006  rpaulo sync with head
 1.2.4.1 01-Sep-2006  rpaulo file com_mainbus.c was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:41:05 +0000
 1.4.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.4.2.1 30-Oct-2012  yamt sync with head
 1.5.38.1 10-Jun-2019  christos Sync with HEAD
 1.5.36.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.6.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.34 23-Sep-2025  thorpej Make the i2c_enumerate_deventries() callback a bit more generic so
it can also be used for the filtering function that macppc::cuda
and sandpoint need.
 1.33 22-Sep-2025  thorpej cuda's i2c children are not in the OF device tree. Rather than using
an i2c-child-devices array, provide a private i2c device enumeration
method by subclassing our devhandle and providing that to the iic
instance.
 1.32 15-Sep-2025  thorpej Encapsulate what's needed to attach an I2C bus into a iicbus_attach()
inline.
 1.31 07-Sep-2025  thorpej Change todr_chip_handle::cookie -> todr_chip_handle::todr_dev, and
make it a device_t. Upcoming functional changes will require the
device_t associated with a TODR device.

Change todr_chip_handle::bus_cookie -> todr_chip_handle::todr_devaux.
Nothing was using the old field, but I decided to keep it around just
in cause something needs it in the future.

And with these largely mechanical yet semantically meaningful changes,
thus spake the Oracle: "Welcome to NetBSD 11.99.2."
 1.30 06-Sep-2023  macallan yet another tsleep/wakeup -> cv_*
 1.29 07-Aug-2021  thorpej branches: 1.29.2;
Merge thorpej-cfargs2.
 1.28 24-Apr-2021  thorpej branches: 1.28.2; 1.28.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.27 05-Mar-2021  rin branches: 1.27.2;
Convert to intr_establish_xname().
 1.26 14-Jul-2020  martin branches: 1.26.2;
Adapt to new proplib API
 1.25 14-Jul-2020  martin Adapt to new proplib API
 1.24 22-Dec-2019  thorpej Cleanup i2c bus acquire / release, centralizing all of the logic into
iic_acquire_bus() / iic_release_bus(). "acquire" and "release" hooks
no longer need to be provided by back-end controller drivers (only if
they need special handling, e.g. powering on the i2c controller).
This results in the removal of a bunch of rendundant code from each
back-end controller driver.

Assert that we are not in hard interrupt context in iic_acquire_bus(),
iic_exec(), and iic_release_bus().
 1.23 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.22 22-Sep-2017  macallan branches: 1.22.2; 1.22.4;
direct configure i2c devices
 1.21 14-Feb-2016  chs zero the i2c_attach_args structure before filling it in.
fixes occasional crashes in iic_attach().
 1.20 13-Aug-2014  macallan branches: 1.20.2;
if we get garbage from the RTC try again a couple times
this seems to happen more frequently when the PRAM battery goes bad
 1.19 14-Mar-2014  mrg remove various set-but-unused variables.
 1.18 30-Jul-2013  joerg Strip redundant parenthesis.
 1.17 01-Jul-2011  dyoung branches: 1.17.2; 1.17.12; 1.17.16;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.16 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.15 12-Dec-2009  tsutsui branches: 1.15.10;
Remove `volatile' qualifier from argument types of
struct timeval passed to todr_gettime(9) and todr_settime(9).
We no longer have an ancient and volatile struct timeval `time'
global since we have switched to MI timercounter(9) on all port.

XXX1: some of these RTC drivers still assume 32bit time_t
XXX2: some of these should be rewritten to use todr_[gs]ettime_ymdhms()
XXX3: todr(9) man page doesn't mention todr_[gs]ettime_ymdhms()
 1.14 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.13 04-Feb-2009  pgoyette branches: 1.13.2;
Return error status if an attempt is made to use the quick_{read,write}
i2c protocols, since we don't (yet) know how to make the controller do it.
 1.12 11-Jan-2009  macallan fix format instead of casting wildly
 1.11 11-Jan-2009  christos don't truncate the print.
 1.10 11-Jan-2009  macallan deal with 64bit time_t
Noticed by Wojciech Galazka
 1.9 07-Dec-2008  tsutsui Fix attach messages. (extra colons, misplaced newline etc.)
 1.8 16-May-2008  macallan branches: 1.8.4; 1.8.6; 1.8.8;
struct device * -> device_t
 1.7 29-Apr-2008  martin branches: 1.7.2;
Convert to new 2 clause license
 1.6 06-Dec-2007  ad branches: 1.6.12; 1.6.14; 1.6.16;
lockmgr -> mutex
 1.5 07-Nov-2007  garbled branches: 1.5.2;
Convert macppc to shared ofw_autoconf.c. Compile tested only.
 1.4 17-Oct-2007  garbled branches: 1.4.2;
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.3 15-Feb-2007  macallan branches: 1.3.4; 1.3.8; 1.3.12; 1.3.16; 1.3.24; 1.3.26; 1.3.28; 1.3.30;
don't use IPL_HIGH
 1.2 05-Feb-2007  macallan - don't go CUDA_IDLE before calling message handlers, that way we force all
writes they might issue to be delayed which keeps us from deadlocking
- don't splhigh() in cuda_intr() - usually we're there already. Instead do
the splhigh()/splx() dance when we're polling
- remove some leftover debugging gunk
 1.1 17-Jan-2007  macallan branches: 1.1.2;
new drivers for pmu and cuda
 1.1.2.3 09-Feb-2007  ad Sync with HEAD.
 1.1.2.2 01-Feb-2007  ad Sync with head.
 1.1.2.1 17-Jan-2007  ad file cuda.c was added on branch newlock2 on 2007-02-01 08:48:07 +0000
 1.3.30.2 13-Nov-2007  bouyer Sync with HEAD
 1.3.30.1 25-Oct-2007  bouyer Sync with HEAD.
 1.3.28.1 18-Oct-2007  yamt sync with head.
 1.3.26.3 09-Jan-2008  matt sync with HEAD
 1.3.26.2 08-Nov-2007  matt sync with -HEAD
 1.3.26.1 06-Nov-2007  matt sync with HEAD
 1.3.24.3 09-Dec-2007  jmcneill Sync with HEAD.
 1.3.24.2 11-Nov-2007  joerg Sync with HEAD.
 1.3.24.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.3.16.2 02-Aug-2007  macallan these days we need to include pio.h for io macros
 1.3.16.1 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.3.12.1 09-Dec-2007  reinoud Pullup to HEAD
 1.3.8.2 03-Dec-2007  ad Sync with HEAD.
 1.3.8.1 23-Oct-2007  ad Sync with head.
 1.3.4.5 07-Dec-2007  yamt sync with head
 1.3.4.4 15-Nov-2007  yamt sync with head.
 1.3.4.3 27-Oct-2007  yamt sync with head.
 1.3.4.2 26-Feb-2007  yamt sync with head.
 1.3.4.1 15-Feb-2007  yamt file cuda.c was added on branch yamt-lazymbuf on 2007-02-26 09:07:20 +0000
 1.4.2.2 08-Dec-2007  mjf Sync with HEAD.
 1.4.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.5.2.1 08-Dec-2007  ad Sync with head.
 1.6.16.3 11-Mar-2010  yamt sync with head
 1.6.16.2 04-May-2009  yamt sync with head.
 1.6.16.1 16-May-2008  yamt sync with head.
 1.6.14.1 18-May-2008  yamt sync with head.
 1.6.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.6.12.1 02-Jun-2008  mjf Sync with HEAD.
 1.7.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.8.8.1 13-Dec-2008  bouyer Pull up following revision(s) (requested by tsutsui in ticket #182):
sys/arch/macppc/dev/cuda.c: revision 1.9
sys/arch/macppc/macppc/memory.c: revision 1.2
sys/arch/macppc/dev/zs.c: revision 1.48
Fix attach messages. (extra colons, misplaced newline etc.)
 1.8.6.3 28-Apr-2009  skrll Sync with HEAD.
 1.8.6.2 03-Mar-2009  skrll Sync with HEAD.
 1.8.6.1 19-Jan-2009  skrll Sync with HEAD.
 1.8.4.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.13.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.15.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.17.16.2 18-May-2014  rmind sync with head
 1.17.16.1 28-Aug-2013  rmind sync with head
 1.17.12.2 03-Dec-2017  jdolecek update from HEAD
 1.17.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.17.2.1 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.20.2.1 19-Mar-2016  skrll Sync with HEAD
 1.22.4.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.22.4.1 10-Jun-2019  christos Sync with HEAD
 1.22.2.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.26.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.27.2.2 02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.27.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.28.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.28.2.2 08-May-2021  thorpej There are no more consumers of i2c attach args "cookie" and "cookietype",
so garbage-collect them.
 1.28.2.1 08-May-2021  thorpej Children of the "cuda" i2c controller don't appear in the OF device tree,
so we need to supply our own "i2c-enumerate-devices" method.
 1.29.2.6 13-Sep-2021  thorpej Move the i2c enumeration helpers to their own header file to detangle
it from reliance on "iic" being configured into the kernel.
 1.29.2.5 11-Sep-2021  thorpej Add a devhandle_subclass() helper function to simplify the common case
and use it. Improve some comments.
 1.29.2.4 11-Sep-2021  thorpej Remove some useless comments.
 1.29.2.3 11-Sep-2021  thorpej Use i2c_enumerate_deventries().
 1.29.2.2 10-Sep-2021  thorpej Remove unnecessary references to i2c_attach_args::ia_prop and mark the ones
that remain as XXX.
 1.29.2.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.5 16-Apr-2020  rin Revert previous for now:
http://mail-index.netbsd.org/source-changes/2020/04/16/msg116278.html

The reasoning turned out to be wrong; __KERNEL_RCSID() in header files
does *not* overwrite RCSID in main source files. The real problem is that
it inserts its RCSID into *every* object files. However, it can be still
useful even if heavily duplicated.
 1.4 16-Apr-2020  rin Stop using __KERNEL_RCSID() in header files; it confuses ident(1) by
overwriting RCSID in main source files.

XXX
The first argument of __KERNEL_RCSID() is neglected for ELF. If we wish
to have RCSID of header files in kernel binary, we need something like
__FBSDID() macro in FreeBSD.
 1.3 13-Aug-2014  macallan branches: 1.3.30;
add PRAM access commands
 1.2 29-Apr-2008  martin branches: 1.2.44;
Convert to new 2 clause license
 1.1 17-Jan-2007  macallan branches: 1.1.2; 1.1.6; 1.1.48; 1.1.50; 1.1.52;
new drivers for pmu and cuda
 1.1.52.1 16-May-2008  yamt sync with head.
 1.1.50.1 18-May-2008  yamt sync with head.
 1.1.48.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.6.2 26-Feb-2007  yamt sync with head.
 1.1.6.1 17-Jan-2007  yamt file cudavar.h was added on branch yamt-lazymbuf on 2007-02-26 09:07:20 +0000
 1.1.2.2 01-Feb-2007  ad Sync with head.
 1.1.2.1 17-Jan-2007  ad file cudavar.h was added on branch newlock2 on 2007-02-01 08:48:07 +0000
 1.2.44.1 03-Dec-2017  jdolecek update from HEAD
 1.3.30.1 20-Apr-2020  bouyer Sync with HEAD
 1.10 22-Sep-2017  macallan no more special treatment for dbcool
 1.9 15-Sep-2017  macallan ki2c uses i2c addresses with the direction bit shifted out now, adjust
masking accordingly
 1.8 13-Dec-2011  riastradh branches: 1.8.6;
Match adm1030 too in dbcool_ki2c_match.

PR port-macppc/41916: dbcool at ki2c should support adm1030

ok macallan
 1.7 20-Dec-2010  matt branches: 1.7.8; 1.7.12;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.6 05-Nov-2009  dyoung branches: 1.6.4;
Bring this up-to-date with the changes to dbcool_softc.
 1.5 02-Nov-2009  christos adjust to dbcool_chipset.
 1.4 14-Jan-2009  ahoka branches: 1.4.4;
The following patch makes dbcool(4) recognize the ADT7460 hardware in
the aluminium PowerBook G4 12". The hardware is very similar to
several other models, to the point that it cannot be distinguished by
its advertised device id and revision id, which are the same as the
ADT7463.

Patch from Taylor R Campbell.
 1.3 12-Oct-2008  pgoyette branches: 1.3.2; 1.3.4; 1.3.6;
Move the {read,write}reg() routine addresses into the dbcool_softc so
that we can use different routines for macppc's ki2c attachment. Fixes
problems reported by Robert Fritzsche on current-users@ list.
 1.2 09-Oct-2008  pgoyette branches: 1.2.2;
sc->sc_parent was removed because it was never used, so don't bother
trying to set it.
 1.1 02-Oct-2008  pgoyette branches: 1.1.2;
Add dbcool ki2c attachment for macppc
 1.1.2.3 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.2 05-Oct-2008  mjf Sync with HEAD.
 1.1.2.1 02-Oct-2008  mjf file dbcool_ki2c.c was added on branch mjf-devfs2 on 2008-10-05 20:11:26 +0000
 1.2.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.2.2.1 09-Oct-2008  skrll file dbcool_ki2c.c was added on branch wrstuden-revivesa on 2008-10-10 22:29:05 +0000
 1.3.6.1 16-Jan-2009  bouyer Pull up following revision(s) (requested by ahoka in ticket #264):
sys/arch/macppc/dev/dbcool_ki2c.c: revision 1.4
The following patch makes dbcool(4) recognize the ADT7460 hardware in
the aluminium PowerBook G4 12". The hardware is very similar to
several other models, to the point that it cannot be distinguished by
its advertised device id and revision id, which are the same as the
ADT7463.
Patch from Taylor R Campbell.
 1.3.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.3.2.2 19-Oct-2008  haad Sync with HEAD.
 1.3.2.1 12-Oct-2008  haad file dbcool_ki2c.c was added on branch haad-dm on 2008-10-19 22:15:51 +0000
 1.4.4.3 11-Mar-2010  yamt sync with head
 1.4.4.2 04-May-2009  yamt sync with head.
 1.4.4.1 14-Jan-2009  yamt file dbcool_ki2c.c was added on branch yamt-nfs-mp on 2009-05-04 08:11:28 +0000
 1.6.4.1 05-Mar-2011  rmind sync with head
 1.7.12.1 18-Feb-2012  mrg merge to -current.
 1.7.8.1 17-Apr-2012  yamt sync with head
 1.8.6.1 03-Dec-2017  jdolecek update from HEAD
 1.12 15-Jul-2016  macallan first step to make dbdma less hackish
- dbdma_alloc gets a new parameter to return the actual address of the
buffer before being alignment-mangled so we can properly free it
- add dbdma_free which takes the pointer mentioned above
dbdma should really use bus_dma
 1.11 23-May-2012  macallan branches: 1.11.2; 1.11.16; 1.11.20;
malloc -> kmem_alloc
 1.10 14-Nov-2010  uebayasi branches: 1.10.8; 1.10.12;
Direct/indirect uses of sys/device.h and prop/proplib.h.
 1.9 14-Mar-2009  dsl branches: 1.9.4;
Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.8 17-Oct-2007  garbled branches: 1.8.20; 1.8.28; 1.8.34;
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.7 24-Dec-2005  perry branches: 1.7.30; 1.7.38; 1.7.48; 1.7.50; 1.7.52; 1.7.54;
__asm__ -> __asm
__const__ -> const
__inline__ -> inline
__volatile__ -> volatile
 1.6 11-Dec-2005  christos merge ktrace-lwp.
 1.5 15-Jul-2003  lukem branches: 1.5.16;
__KERNEL_RCSID()
 1.4 08-Jun-2001  matt branches: 1.4.8; 1.4.24;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.3 29-Jun-2000  mrg branches: 1.3.2;
remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.2 21-Aug-1998  tsubai branches: 1.2.12;
vm_offset_t --> [pv]addr_t.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.12.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.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.4.24.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.24.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.24.1 03-Aug-2004  skrll Sync with HEAD
 1.4.8.2 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.4.8.1 08-Jun-2001  matt file dbdma.c was added on branch nathanw_sa on 2001-06-08 00:32:03 +0000
 1.5.16.2 27-Oct-2007  yamt sync with head.
 1.5.16.1 21-Jun-2006  yamt sync with head.
 1.7.54.1 25-Oct-2007  bouyer Sync with HEAD.
 1.7.52.1 18-Oct-2007  yamt sync with head.
 1.7.50.1 06-Nov-2007  matt sync with HEAD
 1.7.48.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.7.38.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.7.30.1 23-Oct-2007  ad Sync with head.
 1.8.34.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.8.28.1 28-Apr-2009  skrll Sync with HEAD.
 1.8.20.1 04-May-2009  yamt sync with head.
 1.9.4.1 05-Mar-2011  rmind sync with head
 1.10.12.1 02-Jun-2012  mrg sync to latest -current.
 1.10.8.1 30-Oct-2012  yamt sync with head
 1.11.20.1 26-Jul-2016  pgoyette Sync with HEAD
 1.11.16.1 05-Oct-2016  skrll Sync with HEAD
 1.11.2.1 03-Dec-2017  jdolecek update from HEAD
 1.6 15-Jul-2016  macallan first step to make dbdma less hackish
- dbdma_alloc gets a new parameter to return the actual address of the
buffer before being alignment-mangled so we can properly free it
- add dbdma_free which takes the pointer mentioned above
dbdma should really use bus_dma
 1.5 17-Oct-2007  garbled branches: 1.5.64; 1.5.84; 1.5.88;
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.4 24-Dec-2005  perry branches: 1.4.30; 1.4.38; 1.4.48; 1.4.50; 1.4.52; 1.4.54;
__asm__ -> __asm
__const__ -> const
__inline__ -> inline
__volatile__ -> volatile
 1.3 19-Jun-2001  simonb branches: 1.3.8; 1.3.40;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.2 21-Aug-1998  tsubai branches: 1.2.24;
vm_offset_t --> [pv]addr_t.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.24.1 21-Jun-2001  nathanw Catch up to -current.
 1.3.40.2 27-Oct-2007  yamt sync with head.
 1.3.40.1 21-Jun-2006  yamt sync with head.
 1.3.8.2 19-Jun-2001  simonb Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.3.8.1 19-Jun-2001  simonb file dbdma.h was added on branch nathanw_sa on 2001-06-19 12:02:57 +0000
 1.4.54.1 25-Oct-2007  bouyer Sync with HEAD.
 1.4.52.1 18-Oct-2007  yamt sync with head.
 1.4.50.1 06-Nov-2007  matt sync with HEAD
 1.4.48.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.4.38.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.4.30.1 23-Oct-2007  ad Sync with head.
 1.5.88.1 26-Jul-2016  pgoyette Sync with HEAD
 1.5.84.1 05-Oct-2016  skrll Sync with HEAD
 1.5.64.1 03-Dec-2017  jdolecek update from HEAD
 1.22 17-Sep-2025  thorpej Don't get the OF phandle from i2c_attach_args::ia_cookie; get it from
self's devhandle.
 1.21 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.20 27-Jan-2021  thorpej branches: 1.20.4; 1.20.14;
Use DEVICE_COMPAT_EOL.
 1.19 25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.18 17-Jan-2021  thorpej Use designated initializers and a consistent termination style in
compat_data[].
 1.17 20-Sep-2019  macallan branches: 1.17.8;
identify TAS3001 from i2c address if there is no 'compatible' property
 1.16 26-Jun-2018  thorpej branches: 1.16.2;
In my quest to make device_compatible_entry (and associated goo)
super-general, it turns out I also made it a little to cumbersome
to use (if my tired fingers are any indication). So, this is a
course-correction -- one string per entry (like of_compat_data,
which it will soon replace), and remove the over-verbose macros.
 1.15 18-Jun-2018  thorpej - Rename iic_compat_match() to iic_compatible_match() and change it
to use the new device_compatible_match() routine. A pointer to
the matching device_compatible_entry is returned if a match is
found.
- Adjust iic_use_direct_match() accordingly.
- i2c drivers now provide device_compatible_entry tables when performing
direct-config matching.
- In the dsrtc driver, take advantage of this new capability to greatly
simplify model selection.

(I'm coming for you next, of_compat_data...)
 1.14 16-Jun-2018  thorpej More cleanup to i2c autoconfiguration:

- Get all of the drivers onto the new match quality constants.
- Introduce a new helper function, iic_use_direct_match(), that has
all of the logic for direct-config matching. If it returns true,
the driver returns the match result (which may be 0). If it returns
false, the driver does indirect-config matching.
- iic_compat_match() now returns a weighted match quality; matches to
lower-indexed "compatible" device property are more-specific matches,
and return a better match quality accordingly.
 1.13 04-May-2018  macallan don't cut off upper bits in the i2c address, ki2c knows how to deal with
them now
 1.12 27-Sep-2017  macallan branches: 1.12.2;
if there is no 'compatible' property try to guess the codec from the i2c
address
 1.11 27-Sep-2017  macallan identify as 'Audio Codec' and print out which codec we found
 1.10 22-Sep-2017  macallan attach to iic, use direct config
 1.9 15-Sep-2017  macallan ki2c uses i2c addresses with the direction bit shifted out now, adjust
masking accordingly
 1.8 20-Dec-2010  matt branches: 1.8.18;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.7 15-Oct-2010  phx Make it match the TAS3004 "codec" node, which is found on newer PowerBook G4s
(PowerBook5,6).
 1.6 14-Mar-2009  dsl branches: 1.6.2; 1.6.4;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.5 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.4 16-May-2008  macallan branches: 1.4.6; 1.4.12;
struct device * -> device_t
 1.3 17-Jan-2007  macallan branches: 1.3.44; 1.3.46; 1.3.48; 1.3.50;
prefix a hexadecimal address with 0x
 1.2 11-Dec-2005  christos branches: 1.2.18; 1.2.22;
merge ktrace-lwp.
 1.1 10-Aug-2005  macallan branches: 1.1.6;
dummy driver to represent the deq node in OF, marks the equalizer/mixer chip used by snapper
 1.1.6.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.6.1 10-Aug-2005  skrll file deq.c was added on branch ktrace-lwp on 2005-11-10 13:57:27 +0000
 1.2.22.1 01-Feb-2007  ad Sync with head.
 1.2.18.3 26-Feb-2007  yamt sync with head.
 1.2.18.2 21-Jun-2006  yamt sync with head.
 1.2.18.1 11-Dec-2005  yamt file deq.c was added on branch yamt-lazymbuf on 2006-06-21 14:53:13 +0000
 1.3.50.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.3.48.1 04-May-2009  yamt sync with head.
 1.3.46.1 18-May-2008  yamt sync with head.
 1.3.44.1 02-Jun-2008  mjf Sync with HEAD.
 1.4.12.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.4.6.1 28-Apr-2009  skrll Sync with HEAD.
 1.6.4.1 05-Mar-2011  rmind sync with head
 1.6.2.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.8.18.1 03-Dec-2017  jdolecek update from HEAD
 1.12.2.3 28-Jul-2018  pgoyette Sync with HEAD
 1.12.2.2 25-Jun-2018  pgoyette Sync with HEAD
 1.12.2.1 21-May-2018  pgoyette Sync with HEAD
 1.16.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.17.8.1 03-Apr-2021  thorpej Sync with HEAD.
 1.20.14.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.20.4.1 09-May-2021  thorpej ia->ia_cookie -> devhandle_to_of(device_handle(self))
 1.5 16-Apr-2020  rin Revert previous for now:
http://mail-index.netbsd.org/source-changes/2020/04/16/msg116278.html

The reasoning turned out to be wrong; __KERNEL_RCSID() in header files
does *not* overwrite RCSID in main source files. The real problem is that
it inserts its RCSID into *every* object files. However, it can be still
useful even if heavily duplicated.
 1.4 16-Apr-2020  rin Stop using __KERNEL_RCSID() in header files; it confuses ident(1) by
overwriting RCSID in main source files.

XXX
The first argument of __KERNEL_RCSID() is neglected for ELF. If we wish
to have RCSID of header files in kernel binary, we need something like
__FBSDID() macro in FreeBSD.
 1.3 16-May-2008  macallan branches: 1.3.96;
struct device * -> device_t
 1.2 11-Dec-2005  christos branches: 1.2.18; 1.2.76; 1.2.78; 1.2.80; 1.2.82;
merge ktrace-lwp.
 1.1 10-Aug-2005  macallan branches: 1.1.6;
dummy driver to represent the deq node in OF, marks the equalizer/mixer chip used by snapper
 1.1.6.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.6.1 10-Aug-2005  skrll file deqvar.h was added on branch ktrace-lwp on 2005-11-10 13:57:27 +0000
 1.2.82.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.2.80.1 04-May-2009  yamt sync with head.
 1.2.78.1 18-May-2008  yamt sync with head.
 1.2.76.1 02-Jun-2008  mjf Sync with HEAD.
 1.2.18.2 21-Jun-2006  yamt sync with head.
 1.2.18.1 11-Dec-2005  yamt file deqvar.h was added on branch yamt-lazymbuf on 2006-06-21 14:53:13 +0000
 1.3.96.1 20-Apr-2020  bouyer Sync with HEAD
 1.4 18-Aug-2025  macallan mave sysctl tree to hw.
 1.3 13-Aug-2025  macallan try not to read the input register more than once er second - they're not
expected to change very fast and it avoids excessive, slow reads triggered by
sysctl machdep
 1.2 12-Aug-2025  macallan add sysctl to show the status of the drive module's handle switch - 1 indicates
that the handle is pushed in
while there mark switch and present as read only
 1.1 12-Aug-2025  macallan a driver to control the Xserve G4's drive bays, it will:
- tell you if a drive module is present
- let you control LEDs and drive power
via sysctl machdep.drivebay*
 1.35 02-Jun-2024  andvar s/interuppts/interrupts/ and s/intruppts/interrupts/ in comment and log message.
 1.34 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.33 05-Mar-2021  rin Convert to intr_establish_xname().
 1.32 15-Jul-2016  macallan branches: 1.32.28;
adjust to dbdma changes
 1.31 30-Jun-2011  matt branches: 1.31.12; 1.31.30; 1.31.34;
Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.30 20-Dec-2010  matt Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.29 27-Nov-2009  rmind branches: 1.29.4;
- Use uvm_lwp_setuarea() instead of directly setting address to lwp_t::l_addr.
- Replace most remaining uses of l_addr with uvm_lwp_getuarea() or lwp_getpcb().
- Amend assembly in ports where it accesses PCB via struct user.
- Rename L_ADDR to L_PCB in few places. Reduce sys/user.h inclusions.
 1.28 26-Sep-2009  tsutsui Make local functions static.
 1.27 26-Sep-2009  tsutsui Replace shutdownhook_establish(9) with pmf_device_register1(9).
Compile test only, but similar to mesh.c.
 1.26 16-Dec-2008  christos replace bitmask_snprintf(9) with snprintb(3)
 1.25 28-Apr-2008  martin branches: 1.25.8;
Remove clause 3 and 4 from TNF licenses
 1.24 13-Apr-2008  tsutsui branches: 1.24.2; 1.24.4;
Split device_t/softc for MI ncr53c9x and some related devices,
with various cleanup.
 1.23 17-Oct-2007  garbled branches: 1.23.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.22 05-Mar-2007  tsutsui branches: 1.22.2; 1.22.10; 1.22.18; 1.22.20; 1.22.22; 1.22.24;
Use (char *) cast on pointer arith.
 1.21 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.20 08-Mar-2006  lukem branches: 1.20.16;
Use the SI capitalization for "Hz", "kHz", and "MHz" in comments and strings.
Add a space between numbers and Hz unit.
 1.19 11-Dec-2005  christos branches: 1.19.4; 1.19.6; 1.19.8; 1.19.10;
merge ktrace-lwp.
 1.18 15-Jul-2003  lukem branches: 1.18.16;
__KERNEL_RCSID()
 1.17 03-May-2003  wiz branches: 1.17.2;
DMA, not dma nor Dma.
 1.16 02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.15 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.14 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.13 25-Apr-2001  bouyer branches: 1.13.2; 1.13.8;
Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
(no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
 1.12 29-Mar-2001  petrov use NCR_F_DMASELECT instead of ncr53c9x_dmaselect
 1.11 26-Jun-2000  mrg branches: 1.11.2;
<vm/vm_param.h> -> <uvm/uvm_param.h>
 1.10 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.9 19-Nov-1998  thorpej branches: 1.9.10; 1.9.18;
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 19-Jun-1998  tsubai Move shutdownhook_establish before the attachment of common parts.
 1.3 05-Jun-1998  tsubai Add support for UVM and MACHINE_NEW_NONCONTIG.
 1.2 30-May-1998  tsubai Remove unnecessary cache flush.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.9.18.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.9.10.3 21-Apr-2001  bouyer Sync with HEAD
 1.9.10.2 29-Mar-2001  bouyer Pass compile-test on i386
 1.9.10.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.11.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.11.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.13.8.2 18-Oct-2002  nathanw Catch up to -current.
 1.13.8.1 25-Apr-2001  nathanw file esp.c was added on branch nathanw_sa on 2002-10-18 02:38:34 +0000
 1.13.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.17.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.17.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.17.2.1 03-Aug-2004  skrll Sync with HEAD
 1.18.16.3 27-Oct-2007  yamt sync with head.
 1.18.16.2 03-Sep-2007  yamt sync with head.
 1.18.16.1 21-Jun-2006  yamt sync with head.
 1.19.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.19.8.1 13-Mar-2006  yamt sync with head.
 1.19.6.1 22-Apr-2006  simonb Sync with head.
 1.19.4.1 09-Sep-2006  rpaulo sync with head
 1.20.16.1 12-Mar-2007  rmind Sync with HEAD.
 1.22.24.1 25-Oct-2007  bouyer Sync with HEAD.
 1.22.22.1 18-Oct-2007  yamt sync with head.
 1.22.20.1 06-Nov-2007  matt sync with HEAD
 1.22.18.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.22.10.1 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.22.2.1 23-Oct-2007  ad Sync with head.
 1.23.16.2 17-Jan-2009  mjf Sync with HEAD.
 1.23.16.1 02-Jun-2008  mjf Sync with HEAD.
 1.24.4.3 11-Mar-2010  yamt sync with head
 1.24.4.2 04-May-2009  yamt sync with head.
 1.24.4.1 16-May-2008  yamt sync with head.
 1.24.2.1 18-May-2008  yamt sync with head.
 1.25.8.1 19-Jan-2009  skrll Sync with HEAD.
 1.29.4.1 05-Mar-2011  rmind sync with head
 1.31.34.1 26-Jul-2016  pgoyette Sync with HEAD
 1.31.30.1 05-Oct-2016  skrll Sync with HEAD
 1.31.12.1 03-Dec-2017  jdolecek update from HEAD
 1.32.28.1 03-Apr-2021  thorpej Sync with HEAD.
 1.4 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.3 13-Apr-2008  tsutsui branches: 1.3.2; 1.3.4;
Split device_t/softc for MI ncr53c9x and some related devices,
with various cleanup.
 1.2 04-Mar-2007  christos branches: 1.2.40;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.1 15-May-1998  tsubai branches: 1.1.64; 1.1.102;
Initial import of macppc port.
 1.1.102.1 12-Mar-2007  rmind Sync with HEAD.
 1.1.64.1 03-Sep-2007  yamt sync with head.
 1.2.40.1 02-Jun-2008  mjf Sync with HEAD.
 1.3.4.1 16-May-2008  yamt sync with head.
 1.3.2.1 18-May-2008  yamt sync with head.
 1.3 30-Jul-2021  macallan branches: 1.3.4;
make thermal zone parameters configurable by sysctl
 1.2 28-Jul-2021  macallan adjust comments, break a long line
NFC
 1.1 27-Jul-2021  macallan first step towards abstracting thermal zone management out of the fcu driver
( and eventually, the smu driver )
todo:
- add sysctl()s to set zone parameters
- handle envsys
- adapt smu
 1.3.4.2 01-Aug-2021  thorpej Sync with HEAD.
 1.3.4.1 30-Jul-2021  thorpej file fancontrol.c was added on branch thorpej-i2c-spi-conf on 2021-08-01 22:42:12 +0000
 1.2 30-Jul-2021  macallan branches: 1.2.4;
make thermal zone parameters configurable by sysctl
 1.1 27-Jul-2021  macallan first step towards abstracting thermal zone management out of the fcu driver
( and eventually, the smu driver )
todo:
- add sysctl()s to set zone parameters
- handle envsys
- adapt smu
 1.2.4.2 01-Aug-2021  thorpej Sync with HEAD.
 1.2.4.1 30-Jul-2021  thorpej file fancontrolvar.h was added on branch thorpej-i2c-spi-conf on 2021-08-01 22:42:12 +0000
 1.7 17-Sep-2025  thorpej Don't get the OF phandle from i2c_attach_args::ia_cookie; get it from
self's devhandle.
 1.6 01-Jul-2025  macallan deal with sensor encoding on older G5
now we have working fan control on PowerMac7,2
 1.5 08-Apr-2022  andvar branches: 1.5.10;
fix various typos, mainly in comments, but also log messages, docs, game text.
 1.4 30-Jul-2021  macallan branches: 1.4.4; 1.4.8;
make thermal zone parameters configurable by sysctl
 1.3 28-Jul-2021  macallan check temperatures a bit more often
while there, explain why the delay is variable
 1.2 27-Jul-2021  macallan first step towards abstracting thermal zone management out of the fcu driver
( and eventually, the smu driver )
todo:
- add sysctl()s to set zone parameters
- handle envsys
- adapt smu
 1.1 27-Jul-2021  macallan move the fcu driver into arch/macppc where it belongs
 1.4.8.1 09-Aug-2021  thorpej Adapt to thorpej-i2c-spi-conf2: ia->ia_cookie is gone.
 1.4.4.2 01-Aug-2021  thorpej Sync with HEAD.
 1.4.4.1 30-Jul-2021  thorpej file fcu.c was added on branch thorpej-i2c-spi-conf on 2021-08-01 22:42:12 +0000
 1.5.10.1 02-Aug-2025  perseant Sync with HEAD
 1.2 28-Mar-1999  tsubai Remove unused files.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.17 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.16 22-Jan-2022  thorpej Change the devhandle_from_*() functions to also take a "super handle",
from which the newly created handle will inherit it's implementation.
The root implementation for a new handle type is used if an invalid
"super handle" is passed.
 1.15 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.14 24-Apr-2021  thorpej branches: 1.14.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.13 05-Mar-2021  rin branches: 1.13.2;
Convert to intr_establish_xname().
 1.12 27-Oct-2012  chs branches: 1.12.50;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.11 30-Jun-2011  matt branches: 1.11.2; 1.11.12;
Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.10 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.9 13-Jun-2008  cegger branches: 1.9.28;
use device_lookup_private to get softc
 1.8 11-Dec-2005  christos branches: 1.8.74; 1.8.76; 1.8.78; 1.8.80; 1.8.82;
merge ktrace-lwp.
 1.7 15-Jul-2003  lukem __KERNEL_RCSID()
 1.6 01-Jan-2003  thorpej branches: 1.6.2;
Use aprint_normal() for cfprint routines.
 1.5 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.4 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.3 19-Jun-2001  simonb branches: 1.3.2; 1.3.8;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.2 27-Feb-2001  matt branches: 1.2.2; 1.2.4;
Be a bit more defensive.
 1.1 27-Feb-2001  matt Add a gpio device to handle the gpio device & extint-gpio1
interrupt. (think ibook/powerbook)
 1.2.4.2 12-Mar-2001  bouyer Sync with HEAD.
 1.2.4.1 27-Feb-2001  bouyer file gpio.c was added on branch thorpej_scsipi on 2001-03-12 13:29:00 +0000
 1.2.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.3.8.3 03-Jan-2003  thorpej Sync with HEAD.
 1.3.8.2 18-Oct-2002  nathanw Catch up to -current.
 1.3.8.1 19-Jun-2001  nathanw file gpio.c was added on branch nathanw_sa on 2002-10-18 02:38:34 +0000
 1.3.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.6.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.6.2.1 03-Aug-2004  skrll Sync with HEAD
 1.8.82.1 18-Jun-2008  simonb Sync with head.
 1.8.80.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.8.78.1 04-May-2009  yamt sync with head.
 1.8.76.1 17-Jun-2008  yamt sync with head.
 1.8.74.1 29-Jun-2008  mjf Sync with HEAD.
 1.9.28.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.11.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.11.2.1 30-Oct-2012  yamt sync with head
 1.12.50.1 03-Apr-2021  thorpej Sync with HEAD.
 1.13.2.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.13.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.14.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 28-Mar-1999  tsubai Remove unused files.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3 28-Mar-1999  tsubai Remove unused files.
 1.2 13-Jul-1998  tsubai Get framebuffer address from Openfirmware.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 28-Mar-1999  tsubai Remove unused files.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 28-Mar-1999  tsubai Remove unused files.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 08-Sep-2025  macallan more registers, add include guard
 1.1 08-Sep-2025  macallan move register definitions into the headers they belong
 1.66 04-Oct-2025  thorpej Add a shared function to query the common properties used for configuring
an Ethernet address.
 1.65 18-Sep-2022  thorpej Eliminate use of IFF_OACTIVE.
 1.64 05-Mar-2021  rin Convert to intr_establish_xname().
 1.63 04-Feb-2020  martin branches: 1.63.6;
Convert a few more drivers to the if_stats interface
 1.62 04-Feb-2020  skrll Adopt <net/if_stats.h>
 1.61 10-Nov-2019  chs branches: 1.61.2;
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.60 28-May-2019  msaitoh Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
 1.59 23-May-2019  msaitoh -No functional change:
- KNF
- u_int*_t -> uint*_t.
 1.58 22-Apr-2019  msaitoh These drivers do ether_ioctl() on SIOC{ADD,DEL}MULTI, SIOC{G,S}IFMEDIA and
default case in the switch statement. Only the default case didn't check the
return value with ENETRESET. Integrate them to one ether_ioctl() with
ENETRESET test. This change might improve SIOCSIFMTU or some other ioctl()s
which return ENETRESET by calling if_init().
 1.57 05-Feb-2019  msaitoh Remove very old IFF_NOTRAILERS flag.
 1.56 22-Jan-2019  msaitoh Change MII PHY read/write API from:

int (*mii_readreg_t)(device_t, int, int);
void (*mii_writereg_t)(device_t, int, int, int);
to:

int (*mii_readreg_t)(device_t, int, int, uint16_t *);
int (*mii_writereg_t)(device_t, int, int, uint16_t);

Now we can test if a read/write operation failed or not by the return value.

In 802.3 spec says that the PHY shall not respond to read/write transaction
to the unimplemented register(22.2.4.3). Detecting timeout can be used to
check whether a register is implemented or not (if the register conforms to
the spec). ukphy(4) can be used this for MII_MMDACR and MII_MMDAADR.

Note that I noticed that the following code do infinite loop in the
read/wirte function. If it accesses unimplemented PHY register, it will hang.
It should be fixed:

arm/at91/at91emac.c
arm/ep93xx/epe.c
arm/omap/omapl1x_emac.c
mips/ralink/ralink_eth.c
arch/powerpc/booke/dev/pq3etsec.c(read)
dev/cadence/if_cemac.c <- hkenken
dev/ic/lan9118.c


Tested with the following device:

axe+ukphy
axe+rgephy
axen+rgephy (tested by Andrius V)
wm+atphy
wm+ukphy
wm+igphy
wm+ihphy
wm+makphy
sk+makphy
sk+brgphy
sk+gentbi
msk+makphy
sip+icsphy
sip+ukphy
re+rgephy
bge+brgphy
bnx+brgphy
gsip+gphyter
rtk+rlphy
fxp+inphy (tested by Andrius V)
tlp+acphy
ex+exphy
epic+qsphy
vge+ciphy (tested by Andrius V)
vr+ukphy (tested by Andrius V)
vte+ukphy (tested by Andrius V)

Not tested (MAC):
arm:at91emac
arm:cemac
arm:epe
arm:geminigmac
arm:enet
arm:cpsw
arm:emac(omac)
arm:emac(sunxi)
arm:npe
evbppc:temac
macppc:bm
macppc:gm
mips:aumac
mips:ae
mips:cnmac
mips:reth
mips:sbmac
playstation2:smap
powerpc:tsec
powerpc:emac(ibm4xx)
sgimips:mec
sparc:be
sf
ne(ax88190, dl10019)
awge
ep
gem
hme
smsh
mtd
sm
age
alc
ale
bce
cas
et
jme
lii
nfe
pcn
ste
stge
tl
xi
aue
mue
smsc
udav
url

Not tested (PHY):
amhphy
bmtphy
dmphy
etphy
glxtphy
ikphy
iophy
lxtphy
nsphyter
pnaphy
rdcphy
sqphy
tlphy
tqphy
urlphy
 1.55 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.54 26-Jun-2018  msaitoh branches: 1.54.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.53 15-Dec-2016  ozaki-r branches: 1.53.14;
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.52 08-Dec-2016  ozaki-r Apply deferred if_start framework

if_schedule_deferred_start checks if the if_snd queue contains packets,
so drivers don't need to check it by themselves.
 1.51 03-Oct-2016  ozaki-r Fix typo
 1.50 02-Oct-2016  christos MFREE -> m_free
 1.49 15-Jul-2016  macallan adjust to dbdma changes
 1.48 10-Jun-2016  ozaki-r branches: 1.48.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.47 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.46 22-Jul-2012  matt branches: 1.46.2; 1.46.16;
Fix mii_statchg to take a 'struct ifnet *' instead of device_t. This fixes
problem with a common MDIO bus used for multiple interfaces.
Some drivers converted to CFATTACL_DECL_NEW.
 1.45 30-Jun-2011  matt branches: 1.45.2;
Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.44 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.43 05-Apr-2010  joerg branches: 1.43.6;
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.42 25-Feb-2010  matt branches: 1.42.2;
Adapt to <spr.h> breakup.
 1.41 19-Jan-2010  pooka branches: 1.41.2;
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.40 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.39 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.38 07-Nov-2008  dyoung branches: 1.38.4;
*** 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.37 26-Sep-2008  macallan branches: 1.37.2; 1.37.12;
use access functions to mess with obio's registers
 1.36 19-Jan-2008  dyoung branches: 1.36.6; 1.36.10; 1.36.12; 1.36.16;
Make many ethernet drivers share the common code for MII media
handling, ether_mediastatus() and ether_mediachange(). Check for
a non-ENXIO error return from mii_mediachg(). (ENXIO indicates
that a PHY is suspended.)

This patch shrinks the source code size by 979 lines. There was
a 5100-byte savings on the NetBSD/i386 kernel configuration, ALL.

I have made a few miscellaneous changes, too:

gem(4): use LIST_EMPTY(), LIST_FOREACH().
mtd(4): handle media ioctls, for a change!
axe(4): do not track link status in sc->axe_link any longer
nfe(4), aue(4), axe(4), udav(4), url(4): do not reset all PHYs
on a change of media

Except for the change to mtd(4), no functional changes are intended.

XXX This patch affects more architectures than I can feasibly
XXX compile and run. I have compiled macppc, sparc64, i386. I
XXX have run the patches on i386 boxen with bnx(4) and sip(4).
XXX Compiling and running on evbmips (MERAKI, ADM5120) is in
XXX progress.
 1.35 29-Dec-2007  dyoung De-__P().
 1.34 17-Oct-2007  garbled branches: 1.34.2; 1.34.8;
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.33 01-Sep-2007  dyoung branches: 1.33.2; 1.33.4;
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.32 09-Jul-2007  ad branches: 1.32.4; 1.32.8; 1.32.10;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.31 04-Mar-2007  macallan branches: 1.31.2; 1.31.4; 1.31.10;
make this compile again
 1.30 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.29 18-Oct-2006  jklos branches: 1.29.4;
Fix for PR 33667. Note that putting bmac_mediachange where thorpej
suggested doesn't fix this issue. Not a perfect fix, but much better than
leaving it as it was. Tested on several iMacs and a blue & white G3.
 1.28 07-Sep-2006  dogcow branches: 1.28.2; 1.28.4;
remove more vestiges of CCITT, LLC, HDLC, NS, and NSIP.
 1.27 24-Dec-2005  perry branches: 1.27.4; 1.27.8;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.26 11-Dec-2005  christos merge ktrace-lwp.
 1.25 30-Jan-2005  thorpej branches: 1.25.4; 1.25.6;
Eliminate use of M_HASFCS.
 1.24 26-Jan-2005  kleink MPC601: Use RTC instead of TB. (While I'm here, update these to use
the inline versions from <powerpc/cpu.h>).
 1.23 30-Oct-2004  thorpej branches: 1.23.4; 1.23.6;
When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
 1.22 18-Apr-2004  matt Make this compile with XNS enabled
 1.21 15-Jul-2003  lukem branches: 1.21.4;
__KERNEL_RCSID()
 1.20 02-Apr-2003  thorpej branches: 1.20.2;
Use PAGE_SIZE rather than NBPG.
 1.19 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.18 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.17 05-Mar-2002  itojun bring in latest ALTQ from kjc. ALTQify some of the drivers.
 1.16 22-Jul-2001  wiz branches: 1.16.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.15 15-Nov-2000  thorpej branches: 1.15.4;
Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach().
 1.14 01-Nov-2000  tsubai Don't set M_HASFCS flag twice.
 1.13 18-Oct-2000  matt Packets have the FCS append so set M_HASFCS.
 1.12 17-Oct-2000  tsubai Pass correct packet length to the upper layer.
 1.11 28-Aug-2000  tsubai Enable hash filter mode.
 1.10 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.9 16-Jun-2000  tsubai branches: 1.9.2;
Use ether_crc32_le().
 1.8 07-Apr-2000  tsubai branches: 1.8.2;
Make this compile again.
 1.7 23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.6 02-Feb-2000  thorpej Don't dry to diving MIIF_NOISOLATE in the PHY drivers. Instead, pass
flags down from the parent to child vi mii_attach().
 1.5 02-Feb-2000  thorpej Bring some order to the chaos which was the MII code function naming
"conventions".
 1.4 25-Jan-2000  tsubai Use MII device layer.
XXX still 100Mbps receive side is very slow...
 1.3 20-Jun-1999  tsubai branches: 1.3.2;
More initialization by calling Open Firmware.
 1.2 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.1 01-Jan-1999  tsubai branches: 1.1.2; 1.1.4;
bmac ethernet driver. (tested on iMac. only 10Base-T works.)
 1.1.4.2 01-Jul-1999  thorpej Sync w/ -current.
 1.1.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.1.2.1 20-Jan-2000  he Pull up revision 1.3 (requested by danw):
Work around a problem where the 'bm' (iMac and Blue G3 built-in
ethernet) driver only works if initialized from Open Firmware.
 1.3.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.3.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.8.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.9.2.1 01-Nov-2000  tv Pullup 1.11-1.13 [tsubai, matt, mycroft]:
Packets have the FCS append so set M_HASFCS.
Pass correct packet length to the upper layer.
Enable hash filter mode.
 1.15.4.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.15.4.2 16-Mar-2002  jdolecek Catch up with -current.
 1.15.4.1 03-Aug-2001  lukem update to -current
 1.16.6.3 18-Oct-2002  nathanw Catch up to -current.
 1.16.6.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.16.6.1 22-Jul-2001  nathanw file if_bm.c was added on branch nathanw_sa on 2002-04-01 07:40:53 +0000
 1.20.2.5 04-Feb-2005  skrll Sync with HEAD.
 1.20.2.4 02-Nov-2004  skrll Sync with HEAD.
 1.20.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.20.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.20.2.1 03-Aug-2004  skrll Sync with HEAD
 1.21.4.1 24-Jan-2005  he Pull up revision 1.23 (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.23.6.1 12-Feb-2005  yamt sync with head.
 1.23.4.1 29-Apr-2005  kent sync with -current
 1.25.6.5 21-Jan-2008  yamt sync with head
 1.25.6.4 27-Oct-2007  yamt sync with head.
 1.25.6.3 03-Sep-2007  yamt sync with head.
 1.25.6.2 30-Dec-2006  yamt sync with head.
 1.25.6.1 21-Jun-2006  yamt sync with head.
 1.25.4.1 31-Mar-2007  bouyer Pull up following revision(s) (requested by sborrill in ticket #1685):
sys/arch/macppc/dev/if_bm.c: revision 1.29
Fix for PR 33667. Note that putting bmac_mediachange where thorpej
suggested doesn't fix this issue. Not a perfect fix, but much better than
leaving it as it was. Tested on several iMacs and a blue & white G3.
 1.27.8.1 14-Sep-2006  yamt sync with head.
 1.27.4.1 09-Sep-2006  rpaulo sync with head
 1.28.4.1 22-Oct-2006  yamt sync with head
 1.28.2.1 18-Nov-2006  ad Sync with head.
 1.29.4.1 12-Mar-2007  rmind Sync with HEAD.
 1.31.10.6 03-Oct-2007  garbled Sync with HEAD
 1.31.10.5 27-Sep-2007  macallan adapt to changed ether_addmulti() signature
 1.31.10.4 02-Aug-2007  macallan fix typo - bus_space_map() returns 0 on success, not the other way around
also map what OF reports, not a whole page
 1.31.10.3 02-Aug-2007  macallan sync with HEAD
 1.31.10.2 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.31.10.1 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.31.4.1 11-Jul-2007  mjf Sync with head.
 1.31.2.3 23-Oct-2007  ad Sync with head.
 1.31.2.2 09-Oct-2007  ad Sync with head.
 1.31.2.1 15-Jul-2007  ad Sync with head.
 1.32.10.3 23-Mar-2008  matt sync with HEAD
 1.32.10.2 09-Jan-2008  matt sync with HEAD
 1.32.10.1 06-Nov-2007  matt sync with HEAD
 1.32.8.2 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.32.8.1 03-Sep-2007  jmcneill Sync with HEAD.
 1.32.4.1 03-Sep-2007  skrll Sync with HEAD.
 1.33.4.1 25-Oct-2007  bouyer Sync with HEAD.
 1.33.2.1 18-Oct-2007  yamt sync with head.
 1.34.8.2 20-Jan-2008  bouyer Sync with HEAD
 1.34.8.1 02-Jan-2008  bouyer Sync with HEAD
 1.34.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.36.16.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.36.16.1 19-Oct-2008  haad Sync with HEAD.
 1.36.12.1 10-Oct-2008  skrll Sync with HEAD.
 1.36.10.3 11-Aug-2010  yamt sync with head.
 1.36.10.2 11-Mar-2010  yamt sync with head
 1.36.10.1 04-May-2009  yamt sync with head.
 1.36.6.2 17-Jan-2009  mjf Sync with HEAD.
 1.36.6.1 28-Sep-2008  mjf Sync with HEAD.
 1.37.12.1 07-Jan-2011  matt Deal with split <spr.h> (and a few other misc fixes).
 1.37.2.2 28-Apr-2009  skrll Sync with HEAD.
 1.37.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.38.4.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.41.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.42.2.1 30-May-2010  rmind sync with head
 1.43.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.45.2.1 30-Oct-2012  yamt sync with head
 1.46.16.4 05-Feb-2017  skrll Sync with HEAD
 1.46.16.3 05-Oct-2016  skrll Sync with HEAD
 1.46.16.2 09-Jul-2016  skrll Sync with HEAD
 1.46.16.1 19-Mar-2016  skrll Sync with HEAD
 1.46.2.1 03-Dec-2017  jdolecek update from HEAD
 1.48.2.3 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.48.2.2 04-Nov-2016  pgoyette Sync with HEAD
 1.48.2.1 26-Jul-2016  pgoyette Sync with HEAD
 1.53.14.3 26-Jan-2019  pgoyette Sync with HEAD
 1.53.14.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.53.14.1 28-Jul-2018  pgoyette Sync with HEAD
 1.54.2.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.54.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.54.2.1 10-Jun-2019  christos Sync with HEAD
 1.61.2.1 29-Feb-2020  ad Sync with head.
 1.63.6.1 03-Apr-2021  thorpej Sync with HEAD.
 1.2 25-Jan-2000  tsubai Use MII device layer.
XXX still 100Mbps receive side is very slow...
 1.1 01-Jan-1999  tsubai branches: 1.1.8;
bmac ethernet driver. (tested on iMac. only 10Base-T works.)
 1.1.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.60 04-Oct-2025  thorpej Add a shared function to query the common properties used for configuring
an Ethernet address.
 1.59 18-Sep-2022  thorpej Eliminate use of IFF_OACTIVE.
 1.58 05-Mar-2021  rin Convert to intr_establish_xname().
 1.57 04-Feb-2020  skrll branches: 1.57.6;
Adopt <net/if_stats.h>
 1.56 10-Nov-2019  chs branches: 1.56.2;
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.55 28-May-2019  msaitoh Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
 1.54 23-May-2019  msaitoh -No functional change:
- KNF
- u_int*_t -> uint*_t.
 1.53 22-Apr-2019  msaitoh These drivers do ether_ioctl() on SIOC{ADD,DEL}MULTI, SIOC{G,S}IFMEDIA and
default case in the switch statement. Only the default case didn't check the
return value with ENETRESET. Integrate them to one ether_ioctl() with
ENETRESET test. This change might improve SIOCSIFMTU or some other ioctl()s
which return ENETRESET by calling if_init().
 1.52 05-Feb-2019  msaitoh Remove very old IFF_NOTRAILERS flag.
 1.51 22-Jan-2019  msaitoh Change MII PHY read/write API from:

int (*mii_readreg_t)(device_t, int, int);
void (*mii_writereg_t)(device_t, int, int, int);
to:

int (*mii_readreg_t)(device_t, int, int, uint16_t *);
int (*mii_writereg_t)(device_t, int, int, uint16_t);

Now we can test if a read/write operation failed or not by the return value.

In 802.3 spec says that the PHY shall not respond to read/write transaction
to the unimplemented register(22.2.4.3). Detecting timeout can be used to
check whether a register is implemented or not (if the register conforms to
the spec). ukphy(4) can be used this for MII_MMDACR and MII_MMDAADR.

Note that I noticed that the following code do infinite loop in the
read/wirte function. If it accesses unimplemented PHY register, it will hang.
It should be fixed:

arm/at91/at91emac.c
arm/ep93xx/epe.c
arm/omap/omapl1x_emac.c
mips/ralink/ralink_eth.c
arch/powerpc/booke/dev/pq3etsec.c(read)
dev/cadence/if_cemac.c <- hkenken
dev/ic/lan9118.c


Tested with the following device:

axe+ukphy
axe+rgephy
axen+rgephy (tested by Andrius V)
wm+atphy
wm+ukphy
wm+igphy
wm+ihphy
wm+makphy
sk+makphy
sk+brgphy
sk+gentbi
msk+makphy
sip+icsphy
sip+ukphy
re+rgephy
bge+brgphy
bnx+brgphy
gsip+gphyter
rtk+rlphy
fxp+inphy (tested by Andrius V)
tlp+acphy
ex+exphy
epic+qsphy
vge+ciphy (tested by Andrius V)
vr+ukphy (tested by Andrius V)
vte+ukphy (tested by Andrius V)

Not tested (MAC):
arm:at91emac
arm:cemac
arm:epe
arm:geminigmac
arm:enet
arm:cpsw
arm:emac(omac)
arm:emac(sunxi)
arm:npe
evbppc:temac
macppc:bm
macppc:gm
mips:aumac
mips:ae
mips:cnmac
mips:reth
mips:sbmac
playstation2:smap
powerpc:tsec
powerpc:emac(ibm4xx)
sgimips:mec
sparc:be
sf
ne(ax88190, dl10019)
awge
ep
gem
hme
smsh
mtd
sm
age
alc
ale
bce
cas
et
jme
lii
nfe
pcn
ste
stge
tl
xi
aue
mue
smsc
udav
url

Not tested (PHY):
amhphy
bmtphy
dmphy
etphy
glxtphy
ikphy
iophy
lxtphy
nsphyter
pnaphy
rdcphy
sqphy
tlphy
tqphy
urlphy
 1.50 26-Jun-2018  msaitoh branches: 1.50.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.49 15-Dec-2016  ozaki-r branches: 1.49.14;
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.48 08-Dec-2016  ozaki-r Apply deferred if_start framework

if_schedule_deferred_start checks if the if_snd queue contains packets,
so drivers don't need to check it by themselves.
 1.47 10-Jun-2016  ozaki-r branches: 1.47.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.46 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.45 13-Apr-2015  riastradh MD rnd.h cleanups. Please let me know if I broke anything!
 1.44 10-Aug-2014  tls branches: 1.44.4;
Merge tls-earlyentropy branch into HEAD.
 1.43 29-Mar-2014  christos branches: 1.43.2;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.
 1.42 22-Jul-2012  matt branches: 1.42.2; 1.42.4;
Fix mii_statchg to take a 'struct ifnet *' instead of device_t. This fixes
problem with a common MDIO bus used for multiple interfaces.
Some drivers converted to CFATTACL_DECL_NEW.
 1.41 02-Feb-2012  tls 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.40 19-Nov-2011  tls branches: 1.40.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.39 18-Jun-2011  matt branches: 1.39.2;
struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.38 05-Apr-2010  joerg branches: 1.38.6;
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.37 19-Jan-2010  pooka branches: 1.37.2; 1.37.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.36 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.35 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.34 07-Nov-2008  dyoung branches: 1.34.4;
*** 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.33 19-Jan-2008  dyoung branches: 1.33.6; 1.33.10; 1.33.16; 1.33.18;
Make many ethernet drivers share the common code for MII media
handling, ether_mediastatus() and ether_mediachange(). Check for
a non-ENXIO error return from mii_mediachg(). (ENXIO indicates
that a PHY is suspended.)

This patch shrinks the source code size by 979 lines. There was
a 5100-byte savings on the NetBSD/i386 kernel configuration, ALL.

I have made a few miscellaneous changes, too:

gem(4): use LIST_EMPTY(), LIST_FOREACH().
mtd(4): handle media ioctls, for a change!
axe(4): do not track link status in sc->axe_link any longer
nfe(4), aue(4), axe(4), udav(4), url(4): do not reset all PHYs
on a change of media

Except for the change to mtd(4), no functional changes are intended.

XXX This patch affects more architectures than I can feasibly
XXX compile and run. I have compiled macppc, sparc64, i386. I
XXX have run the patches on i386 boxen with bnx(4) and sip(4).
XXX Compiling and running on evbmips (MERAKI, ADM5120) is in
XXX progress.
 1.32 29-Dec-2007  dyoung De-__P().
 1.31 17-Oct-2007  garbled branches: 1.31.2; 1.31.8;
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.30 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.29 09-Jul-2007  ad branches: 1.29.4; 1.29.8; 1.29.10;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.28 04-Mar-2007  christos branches: 1.28.2; 1.28.4; 1.28.10;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.27 07-Sep-2006  dogcow branches: 1.27.8;
remove more vestiges of CCITT, LLC, HDLC, NS, and NSIP.
 1.26 24-Dec-2005  perry branches: 1.26.4; 1.26.8;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.25 11-Dec-2005  christos merge ktrace-lwp.
 1.24 26-Jan-2005  kleink branches: 1.24.6;
MPC601: Use RTC instead of TB. (While I'm here, update these to use
the inline versions from <powerpc/cpu.h>).
 1.23 30-Oct-2004  thorpej branches: 1.23.4; 1.23.6;
When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
 1.22 24-Aug-2003  chs branches: 1.22.4;
recognize the latest version of the GMAC.
 1.21 15-Jul-2003  lukem __KERNEL_RCSID()
 1.20 03-May-2003  wiz branches: 1.20.2;
DMA, not dma nor Dma.
 1.19 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.18 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.17 05-Mar-2002  itojun bring in latest ALTQ from kjc. ALTQify some of the drivers.
 1.16 16-Jan-2002  thorpej Use bpf_mtap().
 1.15 26-Jul-2001  mjl branches: 1.15.6;
Add rnd entropy gathering.
 1.14 22-Jul-2001  wiz bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.13 17-Jun-2001  tsubai branches: 1.13.2;
Support the new iBook.
 1.12 24-Apr-2001  tsubai Make sure free rx buffers have GMAC_OWN set.
 1.11 20-Apr-2001  matt After finishing with the received descriptor, make sure to "eieio" to make
sure the OWN gets back to the gmac in the proper order. This reduces (and
maybe even fixes) the gm0 out-of-order problem.
 1.10 28-Dec-2000  sommerfeld branches: 1.10.2;
Change pci_intr_map to get interrupt source information from a "struct
pci_attach_args *" instead of from four separate parameters which in
all cases were extracted from the same "struct pci_attach_args".

This both simplifies the driver api, and allows for alternate PCI
interrupt mapping schemes, such as one using the tables described in
the Intel Multiprocessor Spec which describe interrupt wirings for
devices behind pci-pci bridges based on the device's location rather
the bridge's location.

Tested on alpha and i386; welcome to 1.5Q
 1.9 15-Nov-2000  thorpej branches: 1.9.2;
Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach().
 1.8 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.7 16-Jun-2000  tsubai branches: 1.7.2;
Use ether_crc32_le().
 1.6 15-Jun-2000  tsubai Implement multicast address filter. (Stolen from hme.c)
 1.5 02-Apr-2000  tsubai branches: 1.5.2;
Make this compile again.
 1.4 26-Mar-2000  tsubai Use ring buffer on tx side, too.
 1.3 23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.2 04-Mar-2000  tsubai Use ring buffer on tx side, too.
 1.1 27-Feb-2000  tsubai Initial version of gmac ethernet driver.
XXX doesn't work well yet.
 1.5.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.7.2.1 18-Jun-2001  jhawk Pull up revision 1.13 (requested by tsubai):
Support the new dual USB iBook.
 1.9.2.5 23-Apr-2001  bouyer Sync with HEAD.
 1.9.2.4 05-Jan-2001  bouyer Sync with HEAD
 1.9.2.3 22-Nov-2000  bouyer Sync with HEAD.
 1.9.2.2 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.9.2.1 15-Nov-2000  bouyer file if_gm.c was added on branch thorpej_scsipi on 2000-11-20 20:12:56 +0000
 1.10.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.13.2.4 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.13.2.3 16-Mar-2002  jdolecek Catch up with -current.
 1.13.2.2 11-Feb-2002  jdolecek Sync w/ -current.
 1.13.2.1 03-Aug-2001  lukem update to -current
 1.15.6.4 18-Oct-2002  nathanw Catch up to -current.
 1.15.6.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.15.6.2 28-Feb-2002  nathanw Catch up to -current.
 1.15.6.1 26-Jul-2001  nathanw file if_gm.c was added on branch nathanw_sa on 2002-02-28 04:10:39 +0000
 1.20.2.5 04-Feb-2005  skrll Sync with HEAD.
 1.20.2.4 02-Nov-2004  skrll Sync with HEAD.
 1.20.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.20.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.20.2.1 03-Aug-2004  skrll Sync with HEAD
 1.22.4.1 24-Jan-2005  he Pull up revision 1.23 (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.23.6.1 12-Feb-2005  yamt sync with head.
 1.23.4.1 29-Apr-2005  kent sync with -current
 1.24.6.4 21-Jan-2008  yamt sync with head
 1.24.6.3 03-Sep-2007  yamt sync with head.
 1.24.6.2 30-Dec-2006  yamt sync with head.
 1.24.6.1 21-Jun-2006  yamt sync with head.
 1.26.8.1 14-Sep-2006  yamt sync with head.
 1.26.4.1 09-Sep-2006  rpaulo sync with head
 1.27.8.1 12-Mar-2007  rmind Sync with HEAD.
 1.28.10.2 03-Oct-2007  garbled Sync with HEAD
 1.28.10.1 02-Aug-2007  macallan sync with HEAD
 1.28.4.1 11-Jul-2007  mjf Sync with head.
 1.28.2.2 09-Oct-2007  ad Sync with head.
 1.28.2.1 15-Jul-2007  ad Sync with head.
 1.29.10.3 23-Mar-2008  matt sync with HEAD
 1.29.10.2 09-Jan-2008  matt sync with HEAD
 1.29.10.1 06-Nov-2007  matt sync with HEAD
 1.29.8.1 03-Sep-2007  jmcneill Sync with HEAD.
 1.29.4.1 03-Sep-2007  skrll Sync with HEAD.
 1.31.8.2 20-Jan-2008  bouyer Sync with HEAD
 1.31.8.1 02-Jan-2008  bouyer Sync with HEAD
 1.31.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.33.18.2 28-Apr-2009  skrll Sync with HEAD.
 1.33.18.1 19-Jan-2009  skrll Sync with HEAD.
 1.33.16.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.33.10.3 11-Aug-2010  yamt sync with head.
 1.33.10.2 11-Mar-2010  yamt sync with head
 1.33.10.1 04-May-2009  yamt sync with head.
 1.33.6.1 17-Jan-2009  mjf Sync with HEAD.
 1.34.4.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.37.4.1 30-May-2010  rmind sync with head
 1.37.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.38.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.39.2.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.39.2.2 30-Oct-2012  yamt sync with head
 1.39.2.1 17-Apr-2012  yamt sync with head
 1.40.2.1 18-Feb-2012  mrg merge to -current.
 1.42.4.1 18-May-2014  rmind sync with head
 1.42.2.2 03-Dec-2017  jdolecek update from HEAD
 1.42.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.43.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.44.4.4 05-Feb-2017  skrll Sync with HEAD
 1.44.4.3 09-Jul-2016  skrll Sync with HEAD
 1.44.4.2 19-Mar-2016  skrll Sync with HEAD
 1.44.4.1 06-Jun-2015  skrll Sync with HEAD
 1.47.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.49.14.2 26-Jan-2019  pgoyette Sync with HEAD
 1.49.14.1 28-Jul-2018  pgoyette Sync with HEAD
 1.50.2.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.50.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.50.2.1 10-Jun-2019  christos Sync with HEAD
 1.56.2.1 29-Feb-2020  ad Sync with head.
 1.57.6.1 03-Apr-2021  thorpej Sync with HEAD.
 1.3 15-Jun-2000  tsubai branches: 1.3.4;
Forgot to commit this.
 1.2 26-Mar-2000  tsubai branches: 1.2.2;
Use ring buffer on tx side, too.
 1.1 27-Feb-2000  tsubai Initial version of gmac ethernet driver.
XXX doesn't work well yet.
 1.2.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.3.4.2 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.1 15-Jun-2000  bouyer file if_gmreg.h was added on branch thorpej_scsipi on 2000-11-20 20:12:57 +0000
 1.29 04-Oct-2025  thorpej Add a shared function to query the common properties used for configuring
an Ethernet address.
 1.28 16-Feb-2022  riastradh powerpc: Sprinkle "memory" clobbers on eieio and nearby asm blocks.

Otherwise the compiler may reorder these around loads and stores,
which mostly defeats the purpose. `asm volatile' just ensures the
instruction isn't _deleted_; it may still move around.
 1.27 05-Mar-2021  rin Convert to intr_establish_xname().
 1.26 05-Dec-2019  msaitoh branches: 1.26.8;
Revert if_mc.c rev. 1.25. It's not required to check ifm->ifm_cur->ifm_media
instead of ifm->ifm_media.
 1.25 04-Dec-2019  msaitoh Fix macppc/dev/if_mc.c::mc_mediachange(). Not tested.

ifmedia_change() is used to change the device's media setting from
user-selected media. The user-selected media is not sc->sc_media.ifm_media but
sc->sc_media.ifm_cur->ifm_media. Note that mc_mediachange() is not called from
anywhere because it's disabled with #ifdef NOTYET.
 1.24 25-Apr-2019  msaitoh No functional change:
- Use __arraycount().
- u_int_{8,16,32}_t -> uint_{8,16,32}_t
- KNF.
- Tabify.
- Remove extra space.
 1.23 15-Jul-2016  macallan branches: 1.23.16;
adjust to dbdma changes
 1.22 26-Jul-2011  macallan branches: 1.22.12; 1.22.30; 1.22.34;
finish device_t-ification
 1.21 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.20 30-Jun-2011  matt Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.19 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.18 20-Dec-2010  matt branches: 1.18.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.17 14-Mar-2009  dsl branches: 1.17.4;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.16 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.15 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.14 05-Oct-2008  macallan branches: 1.14.2; 1.14.8;
fix bus_spacification botch
from Marco Trillo in PR39696
 1.13 17-Oct-2007  garbled branches: 1.13.16; 1.13.20; 1.13.22; 1.13.26;
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.12 04-Mar-2007  christos branches: 1.12.2; 1.12.10; 1.12.18; 1.12.20; 1.12.22; 1.12.24;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.11 24-Dec-2005  perry branches: 1.11.26;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.10 11-Dec-2005  christos merge ktrace-lwp.
 1.9 15-Jul-2003  lukem branches: 1.9.16;
__KERNEL_RCSID()
 1.8 02-Apr-2003  thorpej branches: 1.8.2;
Use PAGE_SIZE rather than NBPG.
 1.7 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.6 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.5 22-Jul-2001  wiz branches: 1.5.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.4 08-Jun-2001  matt branches: 1.4.2;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.3 29-Jun-2000  mrg branches: 1.3.2;
remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.2 30-May-1998  tsubai branches: 1.2.14;
Remove unnecessary cache flush.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.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.3.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.4.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.4.2.1 03-Aug-2001  lukem update to -current
 1.5.6.2 18-Oct-2002  nathanw Catch up to -current.
 1.5.6.1 22-Jul-2001  nathanw file if_mc.c was added on branch nathanw_sa on 2002-10-18 02:38:35 +0000
 1.8.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.8.2.1 03-Aug-2004  skrll Sync with HEAD
 1.9.16.3 27-Oct-2007  yamt sync with head.
 1.9.16.2 03-Sep-2007  yamt sync with head.
 1.9.16.1 21-Jun-2006  yamt sync with head.
 1.11.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.12.24.1 25-Oct-2007  bouyer Sync with HEAD.
 1.12.22.1 18-Oct-2007  yamt sync with head.
 1.12.20.1 06-Nov-2007  matt sync with HEAD
 1.12.18.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.12.10.2 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.12.10.1 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.12.2.1 23-Oct-2007  ad Sync with head.
 1.13.26.1 19-Oct-2008  haad Sync with HEAD.
 1.13.22.1 10-Oct-2008  skrll Sync with HEAD.
 1.13.20.1 04-May-2009  yamt sync with head.
 1.13.16.1 05-Oct-2008  mjf Sync with HEAD.
 1.14.8.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.14.2.1 28-Apr-2009  skrll Sync with HEAD.
 1.17.4.1 05-Mar-2011  rmind sync with head
 1.18.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.22.34.1 26-Jul-2016  pgoyette Sync with HEAD
 1.22.30.1 05-Oct-2016  skrll Sync with HEAD
 1.22.12.1 03-Dec-2017  jdolecek update from HEAD
 1.23.16.1 10-Jun-2019  christos Sync with HEAD
 1.26.8.1 03-Apr-2021  thorpej Sync with HEAD.
 1.14 18-Sep-2022  thorpej Eliminate use of IFF_OACTIVE.
 1.13 26-Jul-2011  macallan finish device_t-ification
 1.12 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.11 05-Mar-2007  tsutsui branches: 1.11.44; 1.11.52; 1.11.58;
Use (uint8_t *) for RX buffer.
 1.10 24-Dec-2005  perry branches: 1.10.26;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.9 11-Dec-2005  christos merge ktrace-lwp.
 1.8 15-Jan-2005  briggs branches: 1.8.10;
Drop default RX bufs to 2 so that they fit in one page of RAM.
Located by Tim Kelly. Also discussed on port-macppc with Dave Huang.
XXX -- This driver really needs to be introduced to bus_dma(9).
 1.7 09-Apr-2003  thorpej branches: 1.7.2;
Use PAGE_SIZE rather than NBPG.
 1.6 26-Jul-2001  tsubai branches: 1.6.6;
Fix a warning when compiled w/o DDB.
 1.5 11-Jul-2001  briggs Allow build with KGDB defined.
 1.4 30-May-2001  mrg branches: 1.4.2;
use _KERNEL_OPT
 1.3 03-Sep-1998  tsubai branches: 1.3.24;
Change void mcintr() to int mcintr().
 1.2 04-Jul-1998  jonathan defopt DDB.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3.24.1 21-Jun-2001  nathanw Catch up to -current.
 1.4.2.1 03-Aug-2001  lukem update to -current
 1.6.6.2 26-Jul-2001  tsubai Fix a warning when compiled w/o DDB.
 1.6.6.1 26-Jul-2001  tsubai file if_mcvar.h was added on branch nathanw_sa on 2001-07-26 11:23:38 +0000
 1.7.2.1 17-Jan-2005  skrll Sync with HEAD.
 1.8.10.2 03-Sep-2007  yamt sync with head.
 1.8.10.1 21-Jun-2006  yamt sync with head.
 1.10.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.11.58.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.11.52.1 28-Apr-2009  skrll Sync with HEAD.
 1.11.44.1 04-May-2009  yamt sync with head.
 1.25 05-Mar-2021  rin Convert to intr_establish_xname().
 1.24 27-Oct-2012  chs branches: 1.24.50;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.23 01-Jul-2011  dyoung branches: 1.23.2; 1.23.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.22 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.21 16-Dec-2010  macallan branches: 1.21.6;
finish device_t-ification, now it works again
 1.20 01-Dec-2010  he Follow up the changes done to wivar.h -- the consequence here is that
instead of a _disable and _enable routine, we have a single _enable which
takes a flag, and has a slightly different function signature.
Macppc kernels should build again.
 1.19 26-Sep-2008  macallan branches: 1.19.16;
Use access functions to mess with FCRs, GPIOs etc. in order to avoid
multiple mappings of obio's register space.
This needs testing.
 1.18 10-Sep-2008  macallan get rid if some mistyped magic number, spotted by Marco Trillo
While there map only the space we actually need.
Needs to be tested on actual hardware.
 1.17 11-Dec-2007  macallan branches: 1.17.6; 1.17.10; 1.17.12; 1.17.16;
make this compile again
 1.16 09-Dec-2007  jmcneill branches: 1.16.2;
Merge jmcneill-pm branch.
 1.15 22-Oct-2007  macallan branches: 1.15.4; 1.15.6;
fix bus_spacification fallout
from KIYOHARA Takashi
 1.14 17-Oct-2007  garbled 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.13 24-Sep-2006  jmcneill branches: 1.13.8; 1.13.16; 1.13.26; 1.13.28; 1.13.30; 1.13.32;
Add "name" parameter to powerhook_establish, to aid debugging. No objections
on tech-kern@
 1.12 11-Dec-2005  christos branches: 1.12.20; 1.12.22;
merge ktrace-lwp.
 1.11 23-Jun-2005  jmmv branches: 1.11.2;
Let this build again by removing ieee80211_compat.h's inclusion (which does
not exist any more).
 1.10 07-Aug-2004  mycroft Don't pass in a MAC address -- yet.
 1.9 07-Dec-2003  dyoung Enable RSSI-based rate-adaptation for wi(4). This enables wi(4)-based
APs to run at "full speed" where before they ran at just 1 or 2Mb/s.
The AP will adapt the data rate for each client based on packet
losses and the received signal strength.

I have also enabled rate adaptation for STA mode and for IBSS mode,
but the hardware gives us less control over the data rate in those
modes.
 1.8 16-Nov-2003  dyoung Add data-link type DLT_IEEE802_11_RADIO to wi and atw. DLT_IEEE802_11_RADIO
lets you monitor radio stats like received signal strength, which
diversity antenna was used, channel/frequency, modulation, and data
rate.
 1.7 13-Oct-2003  dyoung Switch wi(4) to the new 802.11 layer.
 1.6 15-Jul-2003  lukem __KERNEL_RCSID()
 1.5 09-Jul-2003  he After the recent changes to if_ieee80211.h, we need to include
if_media.h earlier.
 1.4 02-Oct-2002  jdolecek branches: 1.4.6;
adapt to latest dev/ic/wi* changes
 1.3 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.2 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.1 16-May-2001  tsubai branches: 1.1.2; 1.1.4; 1.1.10;
Add AirMac frontend.
 1.1.10.2 18-Oct-2002  nathanw Catch up to -current.
 1.1.10.1 16-May-2001  nathanw file if_wi_obio.c was added on branch nathanw_sa on 2002-10-18 02:38:35 +0000
 1.1.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.1.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.4.6.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.4.6.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.6.3 18-Sep-2004  skrll Sync with HEAD.
 1.4.6.2 12-Aug-2004  skrll Sync with HEAD.
 1.4.6.1 03-Aug-2004  skrll Sync with HEAD
 1.11.2.3 21-Jan-2008  yamt sync with head
 1.11.2.2 27-Oct-2007  yamt sync with head.
 1.11.2.1 30-Dec-2006  yamt sync with head.
 1.12.22.1 22-Oct-2006  yamt sync with head
 1.12.20.1 18-Nov-2006  ad Sync with head.
 1.13.32.2 13-Nov-2007  bouyer Sync with HEAD
 1.13.32.1 25-Oct-2007  bouyer Sync with HEAD.
 1.13.30.1 18-Oct-2007  yamt sync with head.
 1.13.28.2 09-Jan-2008  matt sync with HEAD
 1.13.28.1 06-Nov-2007  matt sync with HEAD
 1.13.26.4 08-Dec-2007  jmcneill Rename pnp(9) -> pmf(9), as requested by many.
 1.13.26.3 06-Nov-2007  joerg Refactor PNP API:
- Make suspend/resume directly a device functionality. It consists of
three layers (class logic, device logic, bus logic), all of them being
optional. This replaces D0/D3 transitions.
- device_is_active returns true if the device was not disabled and was
not suspended (even partially), device_is_enabled returns true if the
device was enabled.
- Change pnp_global_transition into pnp_system_suspend and
pnp_system_resume. Before running any suspend/resume handlers, check
that all currently attached devices support power management and bail
out otherwise. The latter is not done for the shutdown/panic case.
- Make the former bus-specific generic network handlers a class handler.
- Make PNP message like volume up/down/toogle PNP events. Each device
can register what events they are interested in and whether the handler
should be global or not.
- Introduce device_active API for devices to mark themselve in use from
either the system or the device. Use this to implement the idle handling
for audio and input devices. This is intended to replace most ad-hoc
watchdogs as well.
- Fix somes situations in which audio resume would lose mixer settings.
- Make USB host controllers better deal with suspend in the light of
shared interrupts.
- Flush filesystem cache on suspend.
- Flush disk caches on suspend. Put ATA disks into standby on suspend as
well.
- Adopt drivers to use the new PNP API.
- Fix a critical bug in the generic cardbus layer that made D0->D3
break.
- Fix ral(4) to set if_stop.
- Convert cbb(4) to the new PNP API.
- Apply the PCI Express SCI fix on resume again.
 1.13.26.2 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.13.26.1 04-Sep-2007  joerg Convert wi(4) to jmcneill-pm style power management.
 1.13.16.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.13.8.2 03-Dec-2007  ad Sync with HEAD.
 1.13.8.1 23-Oct-2007  ad Sync with head.
 1.15.6.2 13-Dec-2007  yamt sync with head.
 1.15.6.1 11-Dec-2007  yamt sync with head.
 1.15.4.1 26-Dec-2007  ad Sync with head.
 1.16.2.1 13-Dec-2007  bouyer Sync with HEAD
 1.17.16.1 19-Oct-2008  haad Sync with HEAD.
 1.17.12.2 10-Oct-2008  skrll Sync with HEAD.
 1.17.12.1 24-Sep-2008  wrstuden Merge in changes between wrstuden-revivesa-base-2 and
wrstuden-revivesa-base-3.
 1.17.10.1 04-May-2009  yamt sync with head.
 1.17.6.1 28-Sep-2008  mjf Sync with HEAD.
 1.19.16.1 05-Mar-2011  rmind sync with head
 1.21.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.23.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.23.2.1 30-Oct-2012  yamt sync with head
 1.24.50.1 03-Apr-2021  thorpej Sync with HEAD.
 1.5 28-Mar-1999  tsubai Remove unused files.
 1.4 12-Mar-1999  perry exterminate ovbcopy. patches provided by Erik Bertelsen, pr-7145
 1.3 13-Jul-1998  tsubai Revert to previous version.
Use ROM font.
 1.2 02-Jul-1998  tsubai Console support.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 28-Mar-1999  tsubai Remove unused files.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.42 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.41 05-Mar-2021  rin Convert to intr_establish_xname().
 1.40 03-Sep-2018  riastradh branches: 1.40.12;
Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.39 01-Mar-2018  macallan branches: 1.39.2; 1.39.4;
match K2 UATA, found in some G5
 1.38 20-Oct-2017  jdolecek move ata_queue_alloc(1) and ata_queue_free() calls to ata_channel_init()
and ata_channel_destroy() respectively, to make attachment code simpler,
and to make it easier to spot special queue manipulation like cmdide(4)

on topic of PR kern/52606
 1.37 07-Oct-2017  jdolecek Merge support for SATA NCQ (Native Command Queueing) from jdolecek-ncq branch

ATA subsystem was changed to support several outstanding commands, and use
NCQ xfers if supported by both the controller and the disk, including NCQ
error recovery. Set NCQ high priority for BPRIO_TIMECRITICAL xfers
if supported. Added FUA support.

Done some work towards MP-safe, all ATA code tsleep()/wakeup() replaced
by condvars, and switched most code from spl* to mutexes (separate
wd(4) and ata channel lock).

Introduced new option WD_CHAOS_MONKEY to facilitate testing of error
handling, fixed several uncovered issues. Also fixed several problems
with kernel dump to wd(4) disk.

Tested with ahcisata(4), mvsata(4), siisata(4), piixide(4) on amd64,
with and without port multiplier, both disk and ATAPI devices; other
drivers and archs mechanically adjusted and compile-tested. NCQ is
supported for ahcisata(4) and siisata(4) for any controller, for
mvsata(4) only Gen IIe ones for now. Also enabled ATAPI support in
mvsata(4).

Thanks to Matt Thomas for initial ATA infrastructure patch, and
Jonathan A.Kollasch for siisata(4) NCQ changes and general testing.

Also fixes PR kern/43169 (wd(4)); and PR kern/11811, PR kern/47041,
PR kern/51979 (kernel dump)
 1.36 15-Jul-2016  macallan branches: 1.36.4;
adjust to dbdma changes
 1.35 29-Mar-2014  christos branches: 1.35.6; 1.35.10;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.
 1.34 28-Apr-2013  macallan branches: 1.34.4;
make this work on G5
from Phileas Fogg, interrupt fixup from me
 1.33 31-Jul-2012  bouyer branches: 1.33.2;
Apply back changes that were reverted on Jul 24 and Jul 26 (general ata/wdc
cleanup and SATA PMP support), now that I'm back to fix the fallouts.
 1.32 26-Jul-2012  jakllsch Revert, with intention of restoring in a less invasive way, the SATA Port
Multiplier code.

ok christos@
 1.31 24-Jul-2012  jakllsch Revert dsl@'s changes of Sun, 15 Jul 2012 10:55:35 +0000 and
Sun, 15 Jul 2012 10:56:50 +0000, excepting the kernel version bump.
First step in reverting regressions to ata(4) subsystem during the addition of
port multiplier support.
 1.30 15-Jul-2012  dsl Some namespace protection (and add greppablity).
Prefix the DRIVE_ and DRIVET_ constants from atavar.h with ATA_.
Don't use an enum for drive_type - you don't know how big it will be.
Move driver_type to avoid implicit structure padding (esp on arm).
This change is purely lexical and mechanical.

Update to 6.99.9 - this wasn't done when the SATA PMP changes
were made - I'm sure they warranted a bump.
 1.29 02-Jul-2012  bouyer Add sata Port MultiPlier (PMP) support to the ata bus layer,
as described in
http://mail-index.netbsd.org/tech-kern/2012/06/23/msg013442.html
PMP support in integrated to the atabus layer.
struct ata_channel's ch_drive[] is not dynamically allocated, and ch_ndrive
(renamed to ch_ndrives) closely reflects the size of the ch_drive[] array.
Add helper functions atabus_alloc_drives() and atabus_free_drives()
to manage ch_drive[]/ch_ndrives.
Add wdc_maxdrives to struct wdc_softc so that bus front-end can specify
how much drive they really support (master/slave or single).
ata_reset_drive() callback gains a uint32_t *sigp argument which,
when not NULL, will contain the signature of the device being reset.
While there, some cosmetic changes:
- added a drive_type enum to ata_drive_datas, and stop encoding the
probed drive type in drive_flags (we were out of drive flags anyway).
- rename DRIVE_ATAPIST to DRIVE_ATAPIDSCW to better reflect what this
really is
- remove ata_channel->ata_drives, it's redundant with the pointer in
ata_drive_datas
- factor out the interpretation of SATA signatures in sata_interpet_sig()

propagate these changes to the ATA HBA drivers, and add support for PMP
to ahcisata(4) and siisata(4).

Thanks to:
- Protocase (http://www.protocase.com/) which provided a system
with lots of controllers, SATA PMP and drive slots
- Conservation Genomics Laboratory, Department of Biology, New Mexico State
University for hosting the above system
- Brook Milligan, who set up remote access and has been very responsive
when SATA cable move was needed
 1.28 01-Jul-2011  dyoung branches: 1.28.2;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.27 18-Nov-2009  dyoung wdcactivate() is gone, don't use it.
 1.26 28-Jul-2008  macallan Fix remaining register offset shifting left over from proper bus_space-ification
done a while ago. From Marco Trillo.
This should fix PR 39176.
 1.25 02-Jul-2008  macallan branches: 1.25.2;
actually initialize sc_dmacmd and get rid of getnodebypci() - use
pcidev_to_ofdev() instead
noticed by Marco Trillo, tested on my iBook G4
 1.24 25-May-2008  chs branches: 1.24.2;
recognize the variant found in the last model of powermac G5.
 1.23 18-Mar-2008  cube branches: 1.23.2; 1.23.4; 1.23.6;
Split device_t and softc for ATA devices, as well as wd(4). Other
cosmetic changes where appropriate.
 1.22 25-Feb-2008  matt Convert to prototypes, de'__P, use device_private, switch to aprint_*,
make things static, and some minor constification.
 1.21 17-Oct-2007  garbled branches: 1.21.12; 1.21.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.20 25-Jun-2007  aymeric branches: 1.20.8; 1.20.10; 1.20.12; 1.20.14;
Recognize the Intrepid2 ATA controller. Needed at least for the last PB G4
 1.19 16-Jan-2006  bouyer branches: 1.19.28; 1.19.30; 1.19.36;
properly use ata_channel->ch_ndrive:
- initialize it properly in the bus front-ends (all 2, exept in wdc_pcmcia.c
for the "Sandisk CompactFlash Card" where it's set to 1)
- remplace hardcoded '2' by ata_channel->ch_ndrive in MI IDE drivers.

From Christos Zoulas in kern/32501.
 1.18 11-Dec-2005  christos branches: 1.18.2;
merge ktrace-lwp.
 1.17 25-Nov-2004  manu branches: 1.17.12;
For and from bouyer@: call wdc_init_shadow_reg(chp) only after chp has
been initialized. Cause the hard disk to be detected again on the iBook G4,
and probably other machines.

Weee, I can run -current again!
 1.16 20-Aug-2004  thorpej Move most of wdc_softc into a new atac_softc structure that contains
info common to all types of ATA controllers.
 1.15 14-Aug-2004  thorpej - Split the register handles out of struct wdc_channel into a separate
wdc_regs structure, and array of which (indexed per channel) is pointed
to by struct wdc_softc.
- Move the resulting wdc_channel structure to atavar.h and rename it to
ata_channel. Rename the corresponding flags.
- Add a "ch_ndrive" member to struct ata_channel, which indicates the
maximum number of drives that can be present on the channel. For now,
this is always 2. Add an ATA_MAXDRIVES constant that places an upper
limit on this value, also currently 2.
 1.14 13-Aug-2004  thorpej Don't bother with bits that tell of the presence of optional callbacks;
just check the function pointers for NULL.
 1.13 25-May-2004  thorpej Add the notion of "shadow registers" to the wdc driver. These shadow
registers are registers that overlap with others on many controllers, but
which may actually be distinct on some controllers. Right now, the two
shadows are:

- wd_status (usually overlaps wd_command)
- wd_features (usually overlaps wd_error)

Add a new helper function, wdc_init_shadow_regs(), used to initialize
the shadow register handles on controllers where they do actually overlap.

Partially from Jordan Rhody @ Wasabi Systems, Inc.
 1.12 04-Jan-2004  dbj attempt to make these compile again after recent wdc changes.
 1.11 03-Jan-2004  thorpej More wdc_channel structure member namespace cleanup:
- channel -> ch_channel
- wdc -> ch_wdc
 1.10 03-Jan-2004  thorpej Rename "struct channel_softc" to "struct wdc_channel".
 1.9 01-Jan-2004  thorpej Rename:
- wdc_xfer to ata_xfer
- channel_queue to ata_queue
and move them to <dev/ata/atavar.h> so they can be used by non-wdc ATA
controllers. Clean up the member names of these structures while at it.
 1.8 31-Dec-2003  thorpej Simplify allocation of the channel queue.
 1.7 03-Dec-2003  bouyer Adapt for new wdc regiosters array. Should fix port-macppc/23604.
 1.6 08-Oct-2003  bouyer Adapt for wdcattach() prototype change, and deal with atabus in
device_register().
 1.5 25-Sep-2003  mycroft Hide the use of config_interrupts() in one place.
 1.4 19-Sep-2003  mycroft 1) Use config_interrupts() to attach IDE and ATAPI drives. This eliminates
most polling.
2) Clean up some goofiness in pciide -- get rid of the whole "candisable" path
(it's gratuitous) and simplify the code by calling pciide_map_compat_intr(),
*_set_modes() and wdc_print_modes() from central locations.
3) Add a register writability and register ghost test to eliminate phantom
drives more quickly.
 1.3 17-Aug-2003  chs recognize the product ID used on the latest G4s.
 1.2 15-Jul-2003  lukem __KERNEL_RCSID()
 1.1 11-Jun-2003  hamajima branches: 1.1.2; 1.1.4;
Support the PowerBook G4 12-inch (and maybe 17-inch).
Kauai ATA, new obio chip, and Japanese keymap for WSDISPLAY_COMPAT_RAWKBD

I tested only 12-inch Japanese model.
 1.1.4.5 29-Nov-2004  skrll Sync with HEAD.
 1.1.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.2 25-Aug-2004  skrll Sync with HEAD.
 1.1.4.1 03-Aug-2004  skrll Sync with HEAD
 1.1.2.3 19-Jun-2003  grant Apply patch (requested by hamajima in ticket #1323):

patch for before devsw.
 1.1.2.2 19-Jun-2003  grant Create new file from rev 1.1 (requested by hamajima in ticket #1323):

Support the PowerBook G4 12-inch (and maybe 17-inch).
Kauai ATA, new obio chip, and Japanese keymap for WSDISPLAY_COMPAT_RAWKBD
 1.1.2.1 11-Jun-2003  grant file kauai.c was added on branch netbsd-1-6 on 2003-06-19 11:18:28 +0000
 1.17.12.5 24-Mar-2008  yamt sync with head.
 1.17.12.4 27-Feb-2008  yamt sync with head.
 1.17.12.3 27-Oct-2007  yamt sync with head.
 1.17.12.2 03-Sep-2007  yamt sync with head.
 1.17.12.1 21-Jun-2006  yamt sync with head.
 1.18.2.1 01-Feb-2006  yamt sync with head.
 1.19.36.5 08-Aug-2007  macallan don't make our own bus_space_tag_t anymore
 1.19.36.4 02-Aug-2007  macallan fix some more typos - now this one works on my iBook again
 1.19.36.3 02-Aug-2007  macallan sync with HEAD
 1.19.36.2 26-Jun-2007  garbled Sync with HEAD.
 1.19.36.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.19.30.1 11-Jul-2007  mjf Sync with head.
 1.19.28.2 23-Oct-2007  ad Sync with head.
 1.19.28.1 15-Jul-2007  ad Sync with head.
 1.20.14.1 25-Oct-2007  bouyer Sync with HEAD.
 1.20.12.1 18-Oct-2007  yamt sync with head.
 1.20.10.2 23-Mar-2008  matt sync with HEAD
 1.20.10.1 06-Nov-2007  matt sync with HEAD
 1.20.8.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.21.16.4 28-Sep-2008  mjf Sync with HEAD.
 1.21.16.3 02-Jul-2008  mjf Sync with HEAD.
 1.21.16.2 02-Jun-2008  mjf Sync with HEAD.
 1.21.16.1 03-Apr-2008  mjf Sync with HEAD.
 1.21.12.1 24-Mar-2008  keiichi sync with head.
 1.23.6.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.23.6.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.23.4.2 11-Mar-2010  yamt sync with head
 1.23.4.1 04-May-2009  yamt sync with head.
 1.23.2.1 04-Jun-2008  yamt sync with head
 1.24.2.2 31-Jul-2008  simonb Sync with head.
 1.24.2.1 03-Jul-2008  simonb Sync with head.
 1.25.2.1 19-Oct-2008  haad Sync with HEAD.
 1.28.2.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.28.2.1 30-Oct-2012  yamt sync with head
 1.33.2.3 03-Dec-2017  jdolecek update from HEAD
 1.33.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.33.2.1 23-Jun-2013  tls resync from head
 1.34.4.1 18-May-2014  rmind sync with head
 1.35.10.1 26-Jul-2016  pgoyette Sync with HEAD
 1.35.6.1 05-Oct-2016  skrll Sync with HEAD
 1.36.4.2 27-Sep-2017  jdolecek change wdc_init_shadow_regs() to accept only struct wdc_regs, it doesn't
touch anything else

factor out the probe-only struct ata_channel initialization to wdcprobe(), to
reduce duplication of logic in individual drivers, and to actually work now
that more init is needed beyond the memset()
 1.36.4.1 24-Apr-2017  jdolecek use ata_queue_alloc() to dynamically allocate ata_queue for ata channel
 1.39.4.1 10-Jun-2019  christos Sync with HEAD
 1.39.2.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.40.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.44 28-Sep-2025  thorpej There are PowerMac G5 11.2 units in the wild with an OFW device tree containing
2 "i2c-bus@0" nodes on the mac-io ki2c, each containing audio codec ICs.
Work around this apparent error in the OFW device tree by skipping the channel
if it's already been initialized.

Patch provided by rin@, tweaked slightly to add a debug log breadcrumb.

PR port-macppc/59673.
 1.43 21-Sep-2025  thorpej Use direct device tree enumeration support for ki2c. Cleanly separate
the two ki2c channels rather than mixing them all together and using an
artificial i2c address bit to distinguish the channels.
 1.42 21-Sep-2025  thorpej It's no longer necessary to scan for sensor descriptive information
in the macppc i2c controller drivers; device_register() does it for
us.
 1.41 18-Sep-2025  thorpej In the "i2c-child-devices" array, don't pass in a "cookie" and "cookietype".
Instead, just create the appropriate devhandle and pass that along as a
data object.
 1.40 15-Sep-2025  thorpej Encapsulate what's needed to attach an I2C bus into a iicbus_attach()
inline.
 1.39 20-Aug-2025  macallan my Xserve G4's firmware doesn't provide sensor names, so we add them ourselves
since the fan control code needs them
 1.38 07-Jul-2025  macallan do a better job finding out openpic's base address on G4s
 1.37 05-Jul-2025  macallan deal with G5s that have two openpics by:
- checking interrupt-parent, trying to find the corresponding PIC, and adjusting
our IRQ number accordingly
- fall back to polling if we have interrupt-parent but no matching PIC
- if there is no interrupt-parent, assume we have only one PIC
... this should probably be handled by intr_establish*
 1.36 05-Jul-2025  macallan - don't enable I2C_INT_START, we don't do anything with it
- don't cv_signal() unless we are done
 1.35 05-Jul-2025  macallan use interrupts so we can sleep instead of busy waiting on i2c transfers
 1.34 30-Jun-2025  macallan deal with PowerMac7,2 sensor name encoding
 1.33 29-Jun-2022  mlelstv branches: 1.33.10;
Use old limit of 32 + 32 bytes to keep combining buffer on stack.
There are no devices on this platform that need more and for larger
values, the driver should be better rewritten.
 1.32 07-Aug-2021  thorpej branches: 1.32.2;
Merge thorpej-cfargs2.
 1.31 24-Apr-2021  thorpej branches: 1.31.2; 1.31.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.30 12-Jun-2020  macallan branches: 1.30.4;
more proplib API catchup
 1.29 09-Jan-2020  macallan defflag KI2C_DEBUG
 1.28 09-Jan-2020  macallan if we have more than one i2c-bus node, look for children on both
now we find the light sensor in my shiny new toy
 1.27 22-Dec-2019  thorpej branches: 1.27.2;
Cleanup i2c bus acquire / release, centralizing all of the logic into
iic_acquire_bus() / iic_release_bus(). "acquire" and "release" hooks
no longer need to be provided by back-end controller drivers (only if
they need special handling, e.g. powering on the i2c controller).
This results in the removal of a bunch of rendundant code from each
back-end controller driver.

Assert that we are not in hard interrupt context in iic_acquire_bus(),
iic_exec(), and iic_release_bus().
 1.26 15-Aug-2019  macallan pass sensor location info to drivers if we can find it
 1.25 08-Mar-2018  macallan branches: 1.25.2;
use channel info and set MODE bits accordingly instead of hoping OF set them
for us
now iic devices on different channels work properly
 1.24 24-Jan-2018  macallan branches: 1.24.2;
note to self: OF_getprop() returns -1 on error
now this works properly on sevan's iMac G4
 1.23 27-Sep-2017  macallan pass the right OF node to i2c devices
 1.22 22-Sep-2017  macallan follow sparc64 and do direct config for i2c-devices
while there, make sure we play nice with smbus single byte reads
 1.21 15-Sep-2017  macallan bus_space-ify
 1.20 05-Sep-2017  macallan first step to clean up & bus-spacification:
- use i2c addresses with the direction bit shifted out in iic_exec and when
attaching drivers so things attaching to iic* have a chance of working
- add an empty i2c-devices prop_array_t to keep drivers we don't want from
attaching to iic*
- printf -> DPRINTF / aprint_*
- usa mapiodev() for now to make this work on G5
 1.19 14-Feb-2016  chs zero the i2c_attach_args structure before filling it in.
fixes occasional crashes in iic_attach().
 1.18 26-Jul-2011  macallan branches: 1.18.12; 1.18.30;
finish device_t-ification
 1.17 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.16 20-Dec-2010  matt branches: 1.16.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.15 14-Mar-2009  dsl branches: 1.15.4;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.14 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.13 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.12 08-Feb-2009  pgoyette branches: 1.12.2;
Avoid asking the controller to transfer zero bytes of data, since we have
no clue if this works or not. This prevents the i2c quick_{read,write}
protocols from working, but the only place those protocols are used is in
the code that enumerates the i2c bus and that just doesn't make sense for
ki2c anyway.

While here, make sure that i2c send_{byte,word} operations will work even
if the caller provides the cmd (ie, register to modify) and the data in
separate args. This is the normal calling sequence for iic_exec() routines
and will enable dbcool (4) driver to update device registers.

OK'd macallan@
 1.11 06-Dec-2007  ad branches: 1.11.16; 1.11.24;
lockmgr -> mutex
 1.10 17-Oct-2007  garbled branches: 1.10.2; 1.10.4;
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 27-Sep-2007  dogcow branches: 1.9.2;
struct cfattach -> CFATTACH_DECL; compiles again.
 1.8 26-Jun-2006  drochner branches: 1.8.14; 1.8.18; 1.8.22; 1.8.32; 1.8.34; 1.8.36;
Better explicitely specify the "ki2c" interface attribute,
so that the "config_found" can't hit "i2cbus".
Up to now, this relied on the fact that the i2cbus and ki2c
attach args both had a string as first element which was used
to distinguish. Now, interface attributes should take care
that attach arguments are not misinterpreted.
 1.7 26-Jun-2006  drochner use the "i2cbus" interface attribute rather than putting a string name
into the i2cbus attach args
 1.6 24-Dec-2005  perry branches: 1.6.4; 1.6.8; 1.6.16;
bare asm -> __asm
 1.5 11-Dec-2005  christos merge ktrace-lwp.
 1.4 07-Oct-2005  macallan Check for 'i2c-bus' child and if found look for i2c devices there instead of
directly under the ki2c node.
Needed for newer ( 2005? ) OpenFirmware.
 1.3 10-Aug-2005  macallan allow to attach a normal iic bus, implements only iic_exec() and locking functions so far.
 1.2 05-Jun-2005  nathanw branches: 1.2.2;
In ki2c_write() Apply __UNCONST() to the data parameter passed to
ki2c_start(). The same back-end routine does reads and writes, so
there's no real type-safety to be had here.
 1.1 27-Dec-2003  grant branches: 1.1.4;
add support for the Keywest I2C and snapper audio device, as found on
some iBook and PowerBook models.

this driver was written by Tsubai Masanari and further hacked on by
Jared D. McNeill to work on his iBook.

the driver is limited (master volume control only, and I haven't
tested recording) but has been functioning perfectly on my PowerBook
g4 DVI (ivory) for some time.

ok'd by matt.
 1.1.4.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 27-Dec-2003  skrll file ki2c.c was added on branch ktrace-lwp on 2004-08-03 10:37:21 +0000
 1.2.2.4 07-Dec-2007  yamt sync with head
 1.2.2.3 27-Oct-2007  yamt sync with head.
 1.2.2.2 30-Dec-2006  yamt sync with head.
 1.2.2.1 21-Jun-2006  yamt sync with head.
 1.6.16.1 13-Jul-2006  gdamore Merge from HEAD.
 1.6.8.1 11-Aug-2006  yamt sync with head
 1.6.4.1 09-Sep-2006  rpaulo sync with head
 1.8.36.2 18-Oct-2007  yamt sync with head.
 1.8.36.1 06-Oct-2007  yamt sync with head.
 1.8.34.2 09-Jan-2008  matt sync with HEAD
 1.8.34.1 06-Nov-2007  matt sync with HEAD
 1.8.32.3 09-Dec-2007  jmcneill Sync with HEAD.
 1.8.32.2 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.8.32.1 02-Oct-2007  joerg Sync with HEAD.
 1.8.22.2 03-Oct-2007  garbled Sync with HEAD
 1.8.22.1 27-Sep-2007  macallan use CFATTACH_DECL()
 1.8.18.1 09-Dec-2007  reinoud Pullup to HEAD
 1.8.14.2 23-Oct-2007  ad Sync with head.
 1.8.14.1 09-Oct-2007  ad Sync with head.
 1.9.2.1 25-Oct-2007  bouyer Sync with HEAD.
 1.10.4.1 08-Dec-2007  ad Sync with head.
 1.10.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.11.24.2 28-Apr-2009  skrll Sync with HEAD.
 1.11.24.1 03-Mar-2009  skrll Sync with HEAD.
 1.11.16.1 04-May-2009  yamt sync with head.
 1.12.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.15.4.1 05-Mar-2011  rmind sync with head
 1.16.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.18.30.1 19-Mar-2016  skrll Sync with HEAD
 1.18.12.1 03-Dec-2017  jdolecek update from HEAD
 1.24.2.1 15-Mar-2018  pgoyette Synch with HEAD
 1.25.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.27.2.1 17-Jan-2020  ad Sync with head.
 1.30.4.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.31.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.31.2.2 14-May-2021  thorpej Move the bus/channel number for multi-channel / mux controllers out of
i2cbus_attach_args and stash it in the i2c_tag_t instead. This makes it
accessible to platform device tree code when enumerating devices.
 1.31.2.1 08-May-2021  thorpej Adapt the Keywest i2c controller driver to the new i2c device enumeration
mechanism. We need to provide our own enumeration callback because these
controllers do not use the standard OpenFirmware bindings.

The Keywest controller supports 2 physical i2c busses on a single controller,
so we logically split it up that way now, rather than encoding the channel in
in the i2c address as was done previously.

Different systems have different I2C device tree topologies.

Some systems use a scheme like this:

/u3@0,f8000000/i2c@f8001000/temp-monitor@98
/u3@0,f8000000/i2c@f8001000/fan@15e

Here, we see the channel encoded in bit #8 of the address.

Other systems use a scheme like this:

/ht@0,f2000000/pci@4000,0,0/mac-io@7/i2c@18000/i2c-bus@0
/ht@0,f2000000/pci@4000,0,0/mac-io@7/i2c@18000/i2c-bus@0/codec@8c

/u4@0,f8000000/i2c@f8001000/i2c-bus@1
/u4@0,f8000000/i2c@f8001000/i2c-bus@1/temp-monitor@94

Here, a separate device tree node represents the channel.
Note that in BOTH cases, the I2C address of the devices are
shifted left by 1 (as it would be on the wire to leave room
for the read/write bit).
 1.32.2.4 11-Sep-2021  thorpej Add a devhandle_subclass() helper function to simplify the common case
and use it. Improve some comments.
 1.32.2.3 11-Sep-2021  thorpej Fix a memory leak if the "compatible" property is > 32 bytes.
 1.32.2.2 10-Sep-2021  thorpej Remove unnecessary references to i2c_attach_args::ia_prop and mark the ones
that remain as XXX.
 1.32.2.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.33.10.1 02-Aug-2025  perseant Sync with HEAD
 1.8 21-Sep-2025  thorpej Use direct device tree enumeration support for ki2c. Cleanly separate
the two ki2c channels rather than mixing them all together and using an
artificial i2c address bit to distinguish the channels.
 1.7 05-Jul-2025  macallan deal with G5s that have two openpics by:
- checking interrupt-parent, trying to find the corresponding PIC, and adjusting
our IRQ number accordingly
- fall back to polling if we have interrupt-parent but no matching PIC
- if there is no interrupt-parent, assume we have only one PIC
... this should probably be handled by intr_establish*
 1.6 05-Jul-2025  macallan use interrupts so we can sleep instead of busy waiting on i2c transfers
 1.5 15-Sep-2017  macallan branches: 1.5.20; 1.5.30; 1.5.40;
bus_space-ify
 1.4 26-Jul-2011  macallan branches: 1.4.12;
finish device_t-ification
 1.3 07-Dec-2007  macallan finish mutexification, now ki2c compiles again
 1.2 11-Dec-2005  christos branches: 1.2.18; 1.2.36; 1.2.50; 1.2.52; 1.2.58; 1.2.62;
merge ktrace-lwp.
 1.1 10-Aug-2005  macallan branches: 1.1.6;
split from ki2c.c
 1.1.6.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.6.1 10-Aug-2005  skrll file ki2cvar.h was added on branch ktrace-lwp on 2005-11-10 13:57:27 +0000
 1.2.62.1 08-Dec-2007  ad Sync with head.
 1.2.58.1 08-Dec-2007  mjf Sync with HEAD.
 1.2.52.1 09-Jan-2008  matt sync with HEAD
 1.2.50.1 09-Dec-2007  jmcneill Sync with HEAD.
 1.2.36.1 09-Dec-2007  reinoud Pullup to HEAD
 1.2.18.3 21-Jan-2008  yamt sync with head
 1.2.18.2 21-Jun-2006  yamt sync with head.
 1.2.18.1 11-Dec-2005  yamt file ki2cvar.h was added on branch yamt-lazymbuf on 2006-06-21 14:53:13 +0000
 1.4.12.1 03-Dec-2017  jdolecek update from HEAD
 1.5.40.1 02-Aug-2025  perseant Sync with HEAD
 1.5.30.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.5.20.1 08-May-2021  thorpej Adapt the Keywest i2c controller driver to the new i2c device enumeration
mechanism. We need to provide our own enumeration callback because these
controllers do not use the standard OpenFirmware bindings.

The Keywest controller supports 2 physical i2c busses on a single controller,
so we logically split it up that way now, rather than encoding the channel in
in the i2c address as was done previously.

Different systems have different I2C device tree topologies.

Some systems use a scheme like this:

/u3@0,f8000000/i2c@f8001000/temp-monitor@98
/u3@0,f8000000/i2c@f8001000/fan@15e

Here, we see the channel encoded in bit #8 of the address.

Other systems use a scheme like this:

/ht@0,f2000000/pci@4000,0,0/mac-io@7/i2c@18000/i2c-bus@0
/ht@0,f2000000/pci@4000,0,0/mac-io@7/i2c@18000/i2c-bus@0/codec@8c

/u4@0,f8000000/i2c@f8001000/i2c-bus@1
/u4@0,f8000000/i2c@f8001000/i2c-bus@1/temp-monitor@94

Here, a separate device tree node represents the channel.
Note that in BOTH cases, the I2C address of the devices are
shifted left by 1 (as it would be on the wire to leave room
for the read/write bit).
 1.2 15-Sep-2025  macallan make things configurable via sysctl
 1.1 08-Sep-2025  macallan a driver for the LED bar found on Xserve G4
needs testing on SMP
 1.11 17-Sep-2025  thorpej This driver doesn't use the OF phandle anywhere, so don't bother
storing it in the softc.
 1.10 06-Jul-2025  macallan callout -> kthread since we can't i2c_exec from interrupt context anymore
 1.9 18-Jun-2021  macallan branches: 1.9.6; 1.9.16;
use opt_lmu.h
while there, remove an obsolete comment
 1.8 27-Jan-2021  thorpej branches: 1.8.4;
Use DEVICE_COMPAT_EOL.
 1.7 25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.6 17-Jan-2021  thorpej Use designated initializers and a consistent termination style in
compat_data[].
 1.5 12-Sep-2020  macallan branches: 1.5.2;
respond to keyboard brightness control PMF events
 1.4 23-Apr-2020  macallan make this work properly:
- get rid of cargo-culted register assignments, I found the right ones by
experiment, now both light sensors report sane values
- keyboard brightness seems to max out at 16, act like it
- do what MacOS does and fade keyboard brightness instead of just switching
- add sysctls to configure keyboard brightness and environmental light
thresholds
- don't poll the chip more often than once a second
 1.3 23-Apr-2020  macallan drop openfirm.h include
 1.2 06-Feb-2020  macallan branches: 1.2.4; 1.2.6;
listen to PMF events in order to turn off keyboard lights when the lid is
closed or the screen is blanked
 1.1 10-Jan-2020  macallan branches: 1.1.2;
add driver for the ambient light sensor / keyboard light controller found in
PowerBook5,6 and probably others
 1.1.2.3 29-Feb-2020  ad Sync with head.
 1.1.2.2 17-Jan-2020  ad Sync with head.
 1.1.2.1 10-Jan-2020  ad file lmu.c was added on branch ad-namecache on 2020-01-17 21:47:26 +0000
 1.2.6.1 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.2.4.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.2.4.1 06-Feb-2020  martin file lmu.c was added on branch phil-wifi on 2020-04-08 14:07:44 +0000
 1.5.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.8.4.3 01-Aug-2021  thorpej Sync with HEAD.
 1.8.4.2 13-May-2021  thorpej Don't use the OF phandle here.
 1.8.4.1 09-May-2021  thorpej ia->ia_cookie -> devhandle_to_of(device_handle(self))
 1.9.16.1 02-Aug-2025  perseant Sync with HEAD
 1.9.6.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.28 16-Feb-2022  riastradh powerpc: Sprinkle "memory" clobbers on eieio and nearby asm blocks.

Otherwise the compiler may reorder these around loads and stores,
which mostly defeats the purpose. `asm volatile' just ensures the
instruction isn't _deleted_; it may still move around.
 1.27 22-Jan-2022  thorpej Change the devhandle_from_*() functions to also take a "super handle",
from which the newly created handle will inherit it's implementation.
The root implementation for a new handle type is used if an invalid
"super handle" is passed.
 1.26 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.25 24-Apr-2021  thorpej branches: 1.25.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.24 05-Mar-2021  rin branches: 1.24.2;
Convert to intr_establish_xname().
 1.23 26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.22 26-Jul-2011  macallan branches: 1.22.66;
finish device_t-ification
 1.21 30-Jun-2011  matt Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.20 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.19 20-Dec-2010  matt branches: 1.19.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.18 14-Mar-2009  dsl branches: 1.18.4;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.17 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.16 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.15 28-Aug-2008  jmcneill branches: 1.15.2; 1.15.8;
Add support for keylargo-style mediabays, as found in eg. PowerBook3,1
 1.14 17-Oct-2007  garbled branches: 1.14.16; 1.14.20; 1.14.22; 1.14.26;
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.13 09-Jul-2007  ad branches: 1.13.8; 1.13.10; 1.13.12; 1.13.14;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.12 10-Dec-2006  macallan branches: 1.12.6; 1.12.8; 1.12.14;
when powering up the mediabay wait two seconds before looking for devices
Without this CDROM drives wouldn't be found when hotplugged.
 1.11 11-Dec-2005  christos branches: 1.11.20; 1.11.22; 1.11.24;
merge ktrace-lwp.
 1.10 08-Jan-2005  briggs branches: 1.10.10;
cosmetic changes.
 1.9 15-Jul-2003  lukem __KERNEL_RCSID()
 1.8 02-Apr-2003  thorpej branches: 1.8.2;
Use PAGE_SIZE rather than NBPG.
 1.7 01-Jan-2003  thorpej 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 22-Jul-2001  wiz branches: 1.4.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.3 23-Aug-2000  tsubai branches: 1.3.4;
New PowerBook (firewire) seems to use edge-triggered interrupt.
XXX cannot hot-plug yet
 1.2 04-Oct-1999  tsubai branches: 1.2.2; 1.2.12;
Make media-bay CD detachable.
 1.1 21-Jul-1999  tsubai branches: 1.1.2;
media-bay CD support.
 1.1.2.2 02-Aug-1999  thorpej Update from trunk.
 1.1.2.1 21-Jul-1999  thorpej file mediabay.c was added on branch chs-ubc2 on 1999-08-02 19:55:12 +0000
 1.2.12.1 01-Nov-2000  tv Pullup 1.3 [tsubai, mycroft]:
New PowerBook (firewire) seems to use edge-triggered interrupt.
XXX cannot hot-plug yet
 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.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.3.4.1 03-Aug-2001  lukem update to -current
 1.4.6.3 03-Jan-2003  thorpej Sync with HEAD.
 1.4.6.2 18-Oct-2002  nathanw Catch up to -current.
 1.4.6.1 22-Jul-2001  nathanw file mediabay.c was added on branch nathanw_sa on 2002-10-18 02:38:35 +0000
 1.8.2.4 17-Jan-2005  skrll Sync with HEAD.
 1.8.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.8.2.1 03-Aug-2004  skrll Sync with HEAD
 1.10.10.3 27-Oct-2007  yamt sync with head.
 1.10.10.2 03-Sep-2007  yamt sync with head.
 1.10.10.1 30-Dec-2006  yamt sync with head.
 1.11.24.1 12-Jan-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #352):
sys/arch/macppc/dev/mediabay.c: revision 1.12
when powering up the mediabay wait two seconds before looking for
devices
Without this CDROM drives wouldn't be found when hotplugged.
 1.11.22.1 10-Dec-2006  yamt sync with head.
 1.11.20.1 12-Jan-2007  ad Sync with head.
 1.12.14.4 03-Oct-2007  garbled Sync with HEAD
 1.12.14.3 02-Aug-2007  macallan sync with HEAD
 1.12.14.2 20-Jun-2007  macallan pass ca_tag to child devices
 1.12.14.1 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.12.8.1 11-Jul-2007  mjf Sync with head.
 1.12.6.2 23-Oct-2007  ad Sync with head.
 1.12.6.1 15-Jul-2007  ad Sync with head.
 1.13.14.1 25-Oct-2007  bouyer Sync with HEAD.
 1.13.12.1 18-Oct-2007  yamt sync with head.
 1.13.10.1 06-Nov-2007  matt sync with HEAD
 1.13.8.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.14.26.1 19-Oct-2008  haad Sync with HEAD.
 1.14.22.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.14.20.1 04-May-2009  yamt sync with head.
 1.14.16.1 28-Sep-2008  mjf Sync with HEAD.
 1.15.8.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.15.2.1 28-Apr-2009  skrll Sync with HEAD.
 1.18.4.1 05-Mar-2011  rmind sync with head
 1.19.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.22.66.1 03-Apr-2021  thorpej Sync with HEAD.
 1.24.2.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.24.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.25.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.44 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.43 24-Sep-2023  andvar define i variable in for loop.
mesh_msgin() doesn't have one defined in the function scope.

fixes MESH_DEBUG enabled build for macppc.
 1.42 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.41 24-Apr-2021  thorpej branches: 1.41.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.40 05-Mar-2021  rin branches: 1.40.2;
Convert to intr_establish_xname().
 1.39 31-Mar-2017  msaitoh branches: 1.39.26;
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.38 15-Feb-2017  tsutsui Fix an inverted logic.
 1.37 15-Jul-2016  macallan branches: 1.37.2;
adjust to dbdma changes
 1.36 14-Mar-2014  mrg branches: 1.36.6; 1.36.10;
remove various set-but-unused variables.
 1.35 30-Jun-2011  matt branches: 1.35.2; 1.35.12; 1.35.16;
Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.34 26-Sep-2009  tsutsui Make local functions static.
 1.33 26-Sep-2009  tsutsui Replace shutdownhook_establish(9) with pmf_device_register1(9).
Tested on Apus2000.
 1.32 26-Sep-2009  tsutsui Fix a botch on device_t/softc split:
Don't forget to set sc->sc_dev.
 1.31 15-May-2009  tsutsui Split device_t/softc. Tested on Apus2000.
 1.30 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.29 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.28 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.27 16-Dec-2008  christos branches: 1.27.2;
replace bitmask_snprintf(9) with snprintb(3)
 1.26 17-Oct-2007  garbled branches: 1.26.16; 1.26.20; 1.26.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.25 29-Mar-2006  thorpej branches: 1.25.18; 1.25.26; 1.25.36; 1.25.38; 1.25.40; 1.25.42;
Use device_cfdata().
 1.24 24-Dec-2005  perry branches: 1.24.4; 1.24.6; 1.24.8; 1.24.10; 1.24.12;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.23 17-Dec-2005  macallan return SCSI_CHECK in xs->status instead of xs->xs_status
This fixes a whole bunch of weird errors that plague(d) mesh forever, like
- failure to spin up drives automatically
- occasional bogus 'drive offline' messages
- LONG delays when trying to use a ZIP drive

It will probably expose more problems, we'll see.
 1.22 11-Dec-2005  christos merge ktrace-lwp.
 1.21 09-Dec-2004  briggs branches: 1.21.8; 1.21.10;
Several changes from Michael Lorenz. Adapted from PR port-macppc/27680.
1. Reset SCSI bus & MESH on reboot to keep OF happy.
2. Tweak interrupt handler to clear interrupt register again if we get a
CMDDONE interrupt with DMA active and a 0 fifocnt. It's not clear why
this is necessary, but is well documented in some other open source
drivers. This enables synchronous mode to work.
3. Dump a little more information if we do get a timeout.
 1.20 07-Dec-2004  thorpej Use "struct scsipi_command" in internal command structures so that
we have enough space for 16-byte CDBs.
 1.19 15-Jul-2003  lukem __KERNEL_RCSID()
 1.18 03-May-2003  wiz branches: 1.18.2;
DMA, not dma nor Dma.
 1.17 02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.16 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.15 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.14 05-Apr-2002  bouyer Implement mstohz() as discussed on tech-kern, and use it in SCSI drivers
to convert xs->timeout to callout() parameter.
 1.13 04-Nov-2001  tsutsui Use common macro to check message length.
 1.12 22-Jul-2001  wiz branches: 1.12.4; 1.12.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.11 08-Jun-2001  matt branches: 1.11.2;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.10 26-Apr-2001  tsubai Remove spaces at EOL.
 1.9 25-Apr-2001  bouyer Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
(no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
 1.8 24-Dec-2000  wiz branches: 1.8.2;
Honour SCSI command timeout -- fixes problems with SCSI commands that take
longer than 10s and were falling into a timeout, e.g. fixating.
 1.7 31-Oct-2000  tsubai Match "chrp,mesh0".
 1.6 23-Oct-2000  tsubai Fix Conner CFP1080 problem (pr 7612) and add debugging messages.
 1.5 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.4 23-Mar-2000  thorpej branches: 1.4.4;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.3 28-Dec-1999  tsubai Remove two panic conditions.
XXX untested.
 1.2 30-Sep-1999  thorpej branches: 1.2.2;
Update for SCSIPI changes.
 1.1 19-Feb-1999  tsubai branches: 1.1.2;
First step of MESH SCSI support.
XXX no disconnect/reselect.
XXX sync transfer is very unstable.
 1.1.2.3 23-Feb-2000  he Pull up revision 1.3 (via patch, requested by tsubai):
Fix the ``panic: mesh: FIFO != 0'' on some models.
 1.1.2.2 23-Feb-2000  he Revert pull-up of revision 1.3 (requested by he):
Causes compile error. Awaiting patch.
 1.1.2.1 22-Feb-2000  he Pull up revision 1.3 (requested by tsubai):
Fix the ``panic: mesh: FIFO != 0'' on some models.
 1.2.2.6 29-Mar-2001  bouyer Ops, don't use uninitialised pointer.
mesh now works, thanks to Emmanuel Dreyfus for testing !
 1.2.2.5 29-Mar-2001  bouyer Pass compile-test on i386
 1.2.2.4 27-Mar-2001  bouyer Convert to thorpej_scsipi (untested).
 1.2.2.3 05-Jan-2001  bouyer Sync with HEAD
 1.2.2.2 22-Nov-2000  bouyer Sync with HEAD.
 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.4.4.2 24-Jan-2002  he Pull up revision 1.8 (requested by briggs):
Honour SCSI command timeout. This fixes a problem with some SCSI
commands which take longer than 10s to complete, and were falling
into a timeout, e.g. CD-R fixating.
 1.4.4.1 26-Feb-2001  he Pull up revisions 1.6-1.7 (requested by briggs):
Match "chrp,mesh0", and fix Conner CFP1080 problem (PR#7612),
and add debugging messages.
 1.8.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.11.2.4 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.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.11.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.11.2.1 03-Aug-2001  lukem update to -current
 1.12.6.3 18-Oct-2002  nathanw Catch up to -current.
 1.12.6.2 17-Apr-2002  nathanw Catch up to -current.
 1.12.6.1 22-Jul-2001  nathanw file mesh.c was added on branch nathanw_sa on 2002-04-17 00:03:42 +0000
 1.12.4.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.18.2.4 18-Dec-2004  skrll Sync with HEAD.
 1.18.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.18.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.18.2.1 03-Aug-2004  skrll Sync with HEAD
 1.21.10.2 27-Oct-2007  yamt sync with head.
 1.21.10.1 21-Jun-2006  yamt sync with head.
 1.21.8.1 18-Dec-2005  tron Pull up following revision(s) (requested by macallan in ticket #1064):
sys/arch/macppc/dev/mesh.c: revision 1.23
return SCSI_CHECK in xs->status instead of xs->xs_status
This fixes a whole bunch of weird errors that plague(d) mesh forever,
like
- failure to spin up drives automatically
- occasional bogus 'drive offline' messages
- LONG delays when trying to use a ZIP drive
It will probably expose more problems, we'll see.
 1.24.12.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.24.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.24.8.1 01-Apr-2006  yamt sync with head.
 1.24.6.1 22-Apr-2006  simonb Sync with head.
 1.24.4.1 09-Sep-2006  rpaulo sync with head
 1.25.42.1 25-Oct-2007  bouyer Sync with HEAD.
 1.25.40.1 18-Oct-2007  yamt sync with head.
 1.25.38.1 06-Nov-2007  matt sync with HEAD
 1.25.36.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.25.26.1 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.25.18.1 23-Oct-2007  ad Sync with head.
 1.26.28.2 28-Apr-2009  skrll Sync with HEAD.
 1.26.28.1 19-Jan-2009  skrll Sync with HEAD.
 1.26.20.3 11-Mar-2010  yamt sync with head
 1.26.20.2 16-May-2009  yamt sync with head
 1.26.20.1 04-May-2009  yamt sync with head.
 1.26.16.1 17-Jan-2009  mjf Sync with HEAD.
 1.27.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.35.16.1 18-May-2014  rmind sync with head
 1.35.12.2 03-Dec-2017  jdolecek update from HEAD
 1.35.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.35.2.1 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.36.10.3 26-Apr-2017  pgoyette Sync with HEAD
 1.36.10.2 20-Mar-2017  pgoyette Sync with HEAD
 1.36.10.1 26-Jul-2016  pgoyette Sync with HEAD
 1.36.6.2 28-Aug-2017  skrll Sync with HEAD
 1.36.6.1 05-Oct-2016  skrll Sync with HEAD
 1.37.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.39.26.1 03-Apr-2021  thorpej Sync with HEAD.
 1.40.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.41.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 23-Oct-2000  tsubai Fix Conner CFP1080 problem (pr 7612) and add debugging messages.
 1.1 19-Feb-1999  tsubai branches: 1.1.8;
First step of MESH SCSI support.
XXX no disconnect/reselect.
XXX sync transfer is very unstable.
 1.1.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.20 25-Jul-2014  dholland Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.19 16-Mar-2014  dholland branches: 1.19.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.18 27-Oct-2012  chs branches: 1.18.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.17 30-Jun-2011  matt branches: 1.17.2; 1.17.12;
Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.16 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.15 14-Mar-2009  dsl branches: 1.15.10;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.14 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.13 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.12 13-Jun-2008  cegger branches: 1.12.4; 1.12.10;
use device_lookup_private to get softc
 1.11 24-Jan-2007  hubertf branches: 1.11.44; 1.11.46; 1.11.48; 1.11.50; 1.11.52;
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.10 11-Dec-2005  christos branches: 1.10.20;
merge ktrace-lwp.
 1.9 15-Jul-2003  lukem branches: 1.9.16;
__KERNEL_RCSID()
 1.8 23-Oct-2002  jdolecek branches: 1.8.6;
merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.7 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.6 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.5 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.4 08-Jun-2001  matt branches: 1.4.2; 1.4.4; 1.4.8; 1.4.16;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.3 26-Jun-2000  simonb branches: 1.3.2;
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.2 19-Nov-1998  mrg branches: 1.2.10; 1.2.20;
fix problems in many d_mmap routines:
- returned EOPNOTSUPP rather than -1.
- no check for negative offset.
many of these fix potential security problems in these drivers.


XXX XXX XXX
the d_mmap cdev routine should be changed to have a prototype like:
paddr_t (*d_mmap) __P((dev_t, off_t, int));

by someone!
 1.1 03-Jul-1998  tsubai Add nvram device support.
 1.2.20.1 30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.2.10.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.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.4.16.1 17-May-2002  gehenna Add device switch.
 1.4.8.4 11-Nov-2002  nathanw Catch up to -current
 1.4.8.3 18-Oct-2002  nathanw Catch up to -current.
 1.4.8.2 17-Sep-2002  nathanw Catch up to -current.
 1.4.8.1 08-Jun-2001  nathanw file nvram.c was added on branch nathanw_sa on 2002-09-17 21:15:37 +0000
 1.4.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.4.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.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.8.6.1 03-Aug-2004  skrll Sync with HEAD
 1.9.16.1 26-Feb-2007  yamt sync with head.
 1.10.20.1 01-Feb-2007  ad Sync with head.
 1.11.52.1 18-Jun-2008  simonb Sync with head.
 1.11.50.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.11.48.1 04-May-2009  yamt sync with head.
 1.11.46.1 17-Jun-2008  yamt sync with head.
 1.11.44.1 29-Jun-2008  mjf Sync with HEAD.
 1.12.10.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.12.4.1 28-Apr-2009  skrll Sync with HEAD.
 1.15.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.17.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.17.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.17.2.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.17.2.1 30-Oct-2012  yamt sync with head
 1.18.2.1 18-May-2014  rmind sync with head
 1.19.2.1 10-Aug-2014  tls Rebase.
 1.54 20-Aug-2025  macallan add support for Xserve G4:
- fan control via pwm, works the same way as fcu and smu, zones can be
controlled via sysctl machdep.obio0
- add sysctls for pwms ( can be set ) and gpios ( read only )
- control indicator LED via sysctl hw.led
 1.53 28-Dec-2022  macallan one more skiplist entry...
 1.52 28-Dec-2022  macallan suppress 'not configured' message for mpic on G5s
 1.51 22-Jan-2022  thorpej Change the devhandle_from_*() functions to also take a "super handle",
from which the newly created handle will inherit it's implementation.
The root implementation for a new handle type is used if an invalid
"super handle" is passed.
 1.50 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.49 24-Apr-2021  thorpej branches: 1.49.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.48 26-Jan-2021  thorpej branches: 1.48.2;
There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.47 25-Oct-2020  nia branches: 1.47.2;
Normalize some machine dependent CPU frequenct sysctl variables.

This moves machdep.*.frequency.* to machdep.cpu.frequency.*.

This was proposed on tech-kern some time ago. The intention is to allow
third-party tools such as estd and conky to more easily and reliably
fetch or modify the current CPU frequency without iterating through
various machine-dependent variables to check their presence.
 1.46 08-Jun-2018  macallan fix low CPU speed reporting when using DFS
 1.45 04-May-2018  macallan map 64KB register space on G5, provide function to bus_space_subregion()
from this area so we don't run into mapping conflicts on G5
Not really relevant on 32bit where we BAT-map everything
 1.44 29-Mar-2018  macallan don't map more PCI space than needed, avoid overlap with snapper so this has
a chance of working on G5
 1.43 04-Mar-2018  mrg branches: 1.43.2;
avoid indentation issues. re-do previous in obio.c to avoid the
does-nothing change, by fixing the intended indentation.
 1.42 04-Mar-2018  christos add braces.
 1.41 11-Nov-2014  macallan appease gcc 4.8
 1.40 25-Apr-2013  macallan map more register space on Shasta/K2, needed for SMU mailbox registers
 1.39 17-Apr-2013  macallan support Shasta
from Phileas Fogg
 1.38 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.37 02-Jun-2012  dsl branches: 1.37.2;
Add some pre-processor magic to verify that the type of the data item
passed to sysctl_createv() actually matches the declared type for
the item itself.
In the places where the caller specifies a function and a structure
address (typically the 'softc') an explicit (void *) cast is now needed.
Fixes bugs in sys/dev/acpi/asus_acpi.c sys/dev/bluetooth/bcsp.c
sys/kern/vfs_bio.c sys/miscfs/syncfs/sync_subr.c and setting
AcpiGbl_EnableAmlDebugObject.
(mostly passing the address of a uint64_t when typed as CTLTYPE_INT).
I've test built quite a few kernels, but there may be some unfixed MD
fallout. Most likely passing &char[] to char *.
Also add CTLFLAG_UNSIGNED for unsiged decimals - not set yet.
 1.36 19-Oct-2011  macallan branches: 1.36.2;
add cpufreq support
 1.35 01-Aug-2011  macallan sanitize sysctl interface in order to appease gcc 4.5
 1.34 26-Jul-2011  macallan finish device_t-ification
 1.33 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.32 16-Mar-2011  macallan branches: 1.32.2;
change the CPU speed sysctl to look more like the ACPI ones, as in
machdep.<name>.frequency.available etc. so estd can work with minimal changes
 1.31 05-Dec-2010  phx branches: 1.31.2;
The gpio children have either register offsets based on gpio or on obio.
Implemented a workaround to deal with this uncertainty.
This fixes the machdep.cpu_speed control for 7447A-based iBookG4s.
 1.30 20-Oct-2010  phx Support sysctl machdep.cpu_speed for 7447A and 7448 based Macs. On those
machines the CPU's DFS (Dynamic Frequency Switching) feature is used instead
of a GPIO to control the speed.
Two new functions in powerpc/oea/cpu_subr.c were introduced to support
reading and writing of DFS: cpu_get_dfs() and cpu_set_dfs(). Also works
for multiple CPUs, but not before interrupts are enabled.
 1.29 14-Mar-2009  dsl branches: 1.29.2; 1.29.4;
Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.28 26-Sep-2008  macallan branches: 1.28.2; 1.28.8;
Provide access functions for mac-io registers in order to get rid of
private mappings some drivers use which won't work anymore in the new
post-ppcoea-renovation world order.
 1.27 17-Oct-2007  garbled branches: 1.27.16; 1.27.20; 1.27.22; 1.27.26;
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.26 18-Jan-2007  macallan branches: 1.26.6; 1.26.14; 1.26.22; 1.26.24; 1.26.26; 1.26.28;
fix accidential commit, this time really only add the bus_space_tag
 1.25 18-Jan-2007  macallan pass a bus_space_tag to children
 1.24 05-Aug-2006  sanjayl branches: 1.24.4;
1st cut of Powermac G5 support (uses bridge mode).
 1.23 11-Dec-2005  christos branches: 1.23.4; 1.23.8;
merge ktrace-lwp.
 1.22 05-Jun-2005  nathanw branches: 1.22.2;
constify skiplist.
 1.21 08-Jan-2005  briggs Make obio match multiple times to allow access to devices on systems
where there might be devices under two I/O bridges (like PowerBook G3s).
Attempt to have devices under 'gatwick' share parental interrupt. This
may still need some work, but a step in the right direction.
From Tim Kelly.
 1.20 09-Dec-2004  briggs Apply patch from Makoto Fujiwara (and Timm Wetzel) in PR port-macppc/15505
to enable internal modem for KeyLargo and Pangea.
 1.19 15-Jul-2003  lukem __KERNEL_RCSID()
 1.18 11-Jun-2003  hamajima branches: 1.18.2;
Support the PowerBook G4 12-inch (and maybe 17-inch).
Kauai ATA, new obio chip, and Japanese keymap for WSDISPLAY_COMPAT_RAWKBD

I tested only 12-inch Japanese model.
 1.17 01-Jan-2003  thorpej Use aprint_normal() for cfprint routines.
 1.16 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.15 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.14 17-Jun-2001  tsubai branches: 1.14.2; 1.14.8; 1.14.18;
Support the new iBook.
 1.13 02-Mar-2001  tsubai branches: 1.13.2;
Enable CD and microphone sound input on paddington based systems.
 1.12 27-Feb-2001  matt Back out change to print irq.
 1.11 27-Feb-2001  matt print out irq on unconf devices.
 1.10 03-Nov-2000  tsubai Get 6 interrupt cells from OF.
 1.9 08-Feb-2000  tsubai branches: 1.9.4;
Fix typo.
 1.8 07-Feb-2000  tsubai Don't print "... not configured" message for non real devices
like escc-legacy.
 1.7 23-Jan-2000  tsubai Match "keylargo".
 1.6 01-May-1999  tsubai branches: 1.6.2;
Find "mac-io" and "/pci/mac-io".
 1.5 22-Dec-1998  tsubai branches: 1.5.2;
Search "interrupts" property if "AAPL,interrupts" is not found.
 1.4 03-Nov-1998  tsubai Add "Paddington" ID.
 1.3 13-Jul-1998  tsubai Add support for G3 Mac.
 1.2 21-Jun-1998  tsubai Add support for "ohare" I/O controller.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.5.2.1 06-May-1999  perry branches: 1.5.2.1.2;
pullup 1.5->1.6 (thorpej)
 1.5.2.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.6.2.3 12-Mar-2001  bouyer Sync with HEAD.
 1.6.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.6.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.9.4.1 18-Jun-2001  jhawk Pull up revision 1.14 (requested by tsubai):
Support the new dual USB iBook.
 1.13.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.14.18.1 19-Jun-2003  grant Pull up revision 1.18 (requested by hamajima in ticket #1323):

Support the PowerBook G4 12-inch (and maybe 17-inch).
Kauai ATA, new obio chip, and Japanese keymap for WSDISPLAY_COMPAT_RAWKBD
 1.14.8.3 03-Jan-2003  thorpej Sync with HEAD.
 1.14.8.2 18-Oct-2002  nathanw Catch up to -current.
 1.14.8.1 17-Jun-2001  nathanw file obio.c was added on branch nathanw_sa on 2002-10-18 02:38:36 +0000
 1.14.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.18.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.18.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.18.2.4 18-Dec-2004  skrll Sync with HEAD.
 1.18.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.18.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.18.2.1 03-Aug-2004  skrll Sync with HEAD
 1.22.2.3 27-Oct-2007  yamt sync with head.
 1.22.2.2 26-Feb-2007  yamt sync with head.
 1.22.2.1 30-Dec-2006  yamt sync with head.
 1.23.8.1 11-Aug-2006  yamt sync with head
 1.23.4.1 09-Sep-2006  rpaulo sync with head
 1.24.4.1 01-Feb-2007  ad Sync with head.
 1.26.28.1 25-Oct-2007  bouyer Sync with HEAD.
 1.26.26.1 18-Oct-2007  yamt sync with head.
 1.26.24.1 06-Nov-2007  matt sync with HEAD
 1.26.22.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.26.14.3 14-Aug-2007  macallan add support for bus speed control found in some Intrepid-based *Books,
like the 800MHz iBook G4
 1.26.14.2 18-Jun-2007  macallan fix a couple typos and don't forget to initialize ca_tag before using it
 1.26.14.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.26.6.1 23-Oct-2007  ad Sync with head.
 1.27.26.1 19-Oct-2008  haad Sync with HEAD.
 1.27.22.1 10-Oct-2008  skrll Sync with HEAD.
 1.27.20.1 04-May-2009  yamt sync with head.
 1.27.16.1 28-Sep-2008  mjf Sync with HEAD.
 1.28.8.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.28.2.1 28-Apr-2009  skrll Sync with HEAD.
 1.29.4.2 21-Apr-2011  rmind sync with head
 1.29.4.1 05-Mar-2011  rmind sync with head
 1.29.2.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.31.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.32.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.36.2.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.36.2.1 30-Oct-2012  yamt sync with head
 1.37.2.3 03-Dec-2017  jdolecek update from HEAD
 1.37.2.2 23-Jun-2013  tls resync from head
 1.37.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.43.2.3 25-Jun-2018  pgoyette Sync with HEAD
 1.43.2.2 21-May-2018  pgoyette Sync with HEAD
 1.43.2.1 30-Mar-2018  pgoyette Resolve conflicts between branch and HEAD
 1.47.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.48.2.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.48.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.49.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.3 01-Jul-2025  macallan keylargo can have up to 4 pwm fans, act like it.
Also, do a better job finding which fans are actually in use.
 1.2 11-Sep-2021  macallan branches: 1.2.10;
fix license copypasta
NFC
 1.1 10-Sep-2021  macallan this driver allows to read the speeds of fans controlled via mac-io/fans/*
found in some G5, for example my 7,3
based on guesswork and observation
 1.2.10.1 02-Aug-2025  perseant Sync with HEAD
 1.7 08-Sep-2025  macallan move register definitions into the headers they belong
 1.6 20-Aug-2025  macallan move GPIO definitions to obiovar.h
 1.5 16-Apr-2020  rin Revert previous for now:
http://mail-index.netbsd.org/source-changes/2020/04/16/msg116278.html

The reasoning turned out to be wrong; __KERNEL_RCSID() in header files
does *not* overwrite RCSID in main source files. The real problem is that
it inserts its RCSID into *every* object files. However, it can be still
useful even if heavily duplicated.
 1.4 16-Apr-2020  rin Stop using __KERNEL_RCSID() in header files; it confuses ident(1) by
overwriting RCSID in main source files.

XXX
The first argument of __KERNEL_RCSID() is neglected for ELF. If we wish
to have RCSID of header files in kernel binary, we need something like
__FBSDID() macro in FreeBSD.
 1.3 04-May-2018  macallan branches: 1.3.12;
map 64KB register space on G5, provide function to bus_space_subregion()
from this area so we don't run into mapping conflicts on G5
Not really relevant on 32bit where we BAT-map everything
 1.2 26-Sep-2008  macallan branches: 1.2.2; 1.2.4; 1.2.6; 1.2.18; 1.2.88;
add some register definitions
 1.1 26-Sep-2008  macallan Provide access functions for mac-io registers in order to get rid of
private mappings some drivers use which won't work anymore in the new
post-ppcoea-renovation world order.
 1.2.88.1 21-May-2018  pgoyette Sync with HEAD
 1.2.18.2 04-May-2009  yamt sync with head.
 1.2.18.1 26-Sep-2008  yamt file obiovar.h was added on branch yamt-nfs-mp on 2009-05-04 08:11:29 +0000
 1.2.6.2 19-Oct-2008  haad Sync with HEAD.
 1.2.6.1 26-Sep-2008  haad file obiovar.h was added on branch haad-dm on 2008-10-19 22:15:52 +0000
 1.2.4.2 10-Oct-2008  skrll Sync with HEAD.
 1.2.4.1 26-Sep-2008  skrll file obiovar.h was added on branch wrstuden-revivesa on 2008-10-10 22:29:05 +0000
 1.2.2.2 28-Sep-2008  mjf Sync with HEAD.
 1.2.2.1 26-Sep-2008  mjf file obiovar.h was added on branch mjf-devfs2 on 2008-09-28 10:40:03 +0000
 1.3.12.1 20-Apr-2020  bouyer Sync with HEAD
 1.73 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.72 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.71 24-Apr-2021  thorpej branches: 1.71.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.70 23-May-2016  chs branches: 1.70.32;
remove unused variables.
 1.69 27-Oct-2012  chs branches: 1.69.14;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.68 13-Mar-2012  elad branches: 1.68.2;
Replace the remaining KAUTH_GENERIC_ISSUSER authorization calls with
something meaningful. All relevant documentation has been updated or
written.

Most of these changes were brought up in the following messages:

http://mail-index.netbsd.org/tech-kern/2012/01/18/msg012490.html
http://mail-index.netbsd.org/tech-kern/2012/01/19/msg012502.html
http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012728.html

Thanks to christos, manu, njoly, and jmmv for input.

Huge thanks to pgoyette for spinning these changes through some build
cycles and ATF.
 1.67 01-Jul-2011  dyoung branches: 1.67.2; 1.67.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.66 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.65 20-Dec-2010  matt branches: 1.65.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.64 06-May-2009  elad branches: 1.64.4;
Replace curlwp->l_cred with kauth_cred_get().

Mailing list reference:

http://mail-index.netbsd.org/tech-kern/2009/05/05/msg005038.html
 1.63 26-Nov-2007  garbled branches: 1.63.18; 1.63.32;
Apply a set of patches from Frank Wille to make the genfb attachment work
better on ofppc. In doing so, we also move a few functions around in
macppc and the generic ofw powerpc stuff to allow better sharing of code.
Also, introduce a model_init function.

move ofb_cons.c from macppc/dev to powerpc/oea and rename it to rascons.
This gets rid of some naming confusion, and makes it OFW-MI rather than
macppc specific.
 1.62 17-Oct-2007  garbled branches: 1.62.2;
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.61 05-Aug-2007  macallan branches: 1.61.2;
fix another typo, now wsfb on ofb should work properly
 1.60 24-Jul-2007  macallan branches: 1.60.4;
add support for ioctl(WSDISPLAYIO_LINEBYTES) so XFree86/wsfb should work now.
Doh.
 1.59 21-Jul-2007  ad Don't depend on uvm_extern.h pulling in proc.h.
 1.58 16-Jul-2007  macallan branches: 1.58.2; 1.58.4;
fix a typo - if we pass no parameters to OF_interpret we better don't say
we do...
 1.57 25-Mar-2007  macallan branches: 1.57.4;
attach a drm
 1.56 04-Mar-2007  christos branches: 1.56.2; 1.56.4; 1.56.6;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.55 28-Feb-2007  thorpej TRUE -> true, FALSE -> false
 1.54 20-Jan-2007  he branches: 1.54.2;
Unify the declaration of OF_interpret() between sparc{,64} and macppc
by adding the "nargs" argument to the macppc version, and fix the macppc
ports uses of OF_interpret() accordingly.

Also move the declaration of OF_interpt() from macppc's autoconf.h to
ofw/openfirm.h. This fixes the build of the macppc port.

Approved by macallan@.
 1.53 16-Dec-2006  macallan (hopefully) fix a panic when ofb attaches without being console
 1.52 08-Nov-2006  macallan branches: 1.52.2;
split ofb into one part that attaches right on kernel startup and one that
attaches to pci so we can build kernels with - say - machfb but without
ofb at pci.
 1.51 05-Aug-2006  sanjayl branches: 1.51.4; 1.51.6;
1st cut of Powermac G5 support (uses bridge mode).
 1.50 23-Jul-2006  ad Use the LWP cached credentials where sane.
 1.49 14-May-2006  elad integrate kauth.
 1.48 12-Apr-2006  jmmv 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.47 16-Feb-2006  macallan branches: 1.47.2; 1.47.4; 1.47.6;
also check child nodes when checking if we attach to what OF thinks is the
console since some Radeons ( and probably others ) can have more than one
display - in this case /chosen and ofb's node would mismatch.
 1.46 16-Feb-2006  macallan bail out when trying to attach to something that's not the console.
Fixes problems with more than one graphics card. Since OF doesn't set up
any secondary graphics devices anyway we don't lose anything.
 1.45 12-Feb-2006  macallan Add support for colour and virtual consoles
 1.44 07-Feb-2006  macallan ansify, de-__P(), sprinkle static
 1.43 11-Dec-2005  christos branches: 1.43.2; 1.43.4; 1.43.6;
merge ktrace-lwp.
 1.42 22-Sep-2005  macallan - center output to match firmware settings when using the ROM font
- allow the super user to mmap() the PCI IO area corresponding to ofb at offset
0xf2000000 - needed by some XFree drivers ( approved by Bill Studenmund )
- add a hack to allow mmap()ing offset 0xa0000 - 0xbffff if not covered by the
regular framebuffer mapping at offset 0 ( disabled by default, use options
OFB_FAKE_VGA_FB ) - this allows buggy XFree drivers which expect the VGA
framebuffer at this address to work.
 1.41 17-Dec-2004  briggs branches: 1.41.10;
Back out part of previous. OF_open() works fine with /chaos/control, but
is a bit picky about interrupts.
 1.40 15-Dec-2004  briggs * Don't try to clear the screen if we failed to map it.
* Don't try to call OF_open for /chaos@F0000000/control@B -- it hangs.
 1.39 24-Apr-2004  kleink Update for new pci_devinfo(9) signature.
 1.38 13-Nov-2003  chs eliminate uvm_useracc() in favor of checking the return value of
copyin() or copyout().

uvm_useracc() tells us whether the mapping permissions allow access to
the desired part of an address space, and many callers assume that
this is the same as knowing whether an attempt to access that part of
the address space will succeed. however, access to user space can
fail for reasons other than insufficient permission, most notably that
paging in any non-resident data can fail due to i/o errors. most of
the callers of uvm_useracc() make the above incorrect assumption. the
rest are all misguided optimizations, which optimize for the case
where an operation will fail. we'd rather optimize for operations
succeeding, in which case we should just attempt the access and handle
failures due to insufficient permissions the same way we handle i/o
errors. since there appear to be no good uses of uvm_useracc(), we'll
just remove it.
 1.37 20-Oct-2003  matt Reorganize the way powerpc port install machine specific headers.
Use <powerpc/oea/bat.h> exclusively and remove <machine/bat.h> and
<powerpc/bat.h>. Remove unneeded <machine/cpufunc.h>. To insure
1:1 correspondence of <powerpc/FOO.h> to <machine/FOO.h> include
"../../powerpc/include/Makefile" in "arch/FOO/include/Makefile".
Incororpate <byte_swap.h> into <bswap.h> and then byte_swap.h
 1.36 15-Jul-2003  lukem __KERNEL_RCSID()
 1.35 29-Jun-2003  fvdl branches: 1.35.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.34 29-Jun-2003  darrenr 'struct proc *' -> 'struct lwp *' as required to get GENERIC for macppc built
 1.33 15-Feb-2003  briggs Initialize the framebuffer BAT with BAT_G, too. This marks the region
as (G)uarded, protecting it from the processor being too aggressive in
reordering and prefetching. This allows OFB_ENABLE_CACHE to work on my
Powerbook G4.

Thanks to matt@ for suggesting this fix. "It's the right thing to do."
 1.32 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.31 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.30 07-Aug-2002  chs for ofb_enable_cache, turn on the BAT_M bit as well to prevent
the framebuffer from getting scrambled on MP systems.
 1.29 07-Jul-2002  matt Update OFB_ENABLE_CACHE to search for a empty bat that does not
conflict the USER_SR or one of the kernel SRs.
 1.28 04-Jul-2002  junyoung alloc_attr -> allocattr

Approved by Matthias Drochner.
 1.27 24-Jun-2002  nathanw Pass through the PCI configuration ioctls, like vga_pci.c does.
 1.26 17-Mar-2002  atatat branches: 1.26.4; 1.26.6;
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.25 05-Aug-2001  jdolecek branches: 1.25.6;
use unsigned variable types as appropriate
 1.24 22-Jul-2001  wiz bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.23 10-Jun-2001  tsubai branches: 1.23.2;
Use machine/bat.h rather than powerpc/mpc6xx/bat.h.
 1.22 10-Jun-2001  tsubai Use ofb_softc again.
 1.21 10-Jun-2001  tsubai Enable color! call in ofb_putcmap again.
Matt, please don't remove codes silently without confirmation.
(At least, leave a log message!)
 1.20 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.19 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.18 15-Mar-2001  tsubai Use write-through caching for video ram. (Disabled by default, for now.)
 1.17 02-Nov-2000  tsubai branches: 1.17.2;
Don't assume 12x22 font.
 1.16 01-Oct-2000  tsubai Get the correct OF node of the screen because PowerBooks have two screens
in one PCI device.
 1.15 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 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 19-Jun-2000  tsubai branches: 1.13.2;
Allow mmap of frame buffer registers.
 1.12 02-Apr-2000  tsubai branches: 1.12.2;
Make sure color rgb:0/0/0 is black.
 1.11 09-Feb-2000  tsubai Use dev/rasops instead of dev/rcons.
 1.10 06-Dec-1999  drochner update for changed struct wsdisplay_accessops:show_screen signature.
no functional changes
 1.9 24-Mar-1999  mrg branches: 1.9.8; 1.9.14;
completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
 1.8 19-Feb-1999  tsubai Use 6x11 font if screen size is smaller than 1024x768.
(Open Firmware ROM has 6x11 font.)
 1.7 02-Feb-1999  tsubai Don't use BAT register. (not needed now.)
 1.6 11-Jan-1999  drochner remove dummy "load_font" entries
 1.5 22-Dec-1998  tsubai Display frame buffer type when attached.
 1.4 19-Nov-1998  mrg fix problems in many d_mmap routines:
- returned EOPNOTSUPP rather than -1.
- no check for negative offset.
many of these fix potential security problems in these drivers.


XXX XXX XXX
the d_mmap cdev routine should be changed to have a prototype like:
paddr_t (*d_mmap) __P((dev_t, off_t, int));

by someone!
 1.3 15-Oct-1998  tsubai /chaos/control support. (tested 640x480 mode only)
 1.2 14-Oct-1998  tsubai Fix typo.
 1.1 14-Oct-1998  tsubai akbd: wskbd support.
ofb: OpenFirmware generic framebuffer.
 1.9.14.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.9.8.3 27-Mar-2001  bouyer Sync with HEAD.
 1.9.8.2 22-Nov-2000  bouyer Sync with HEAD.
 1.9.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.12.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.13.2.3 16-Aug-2001  tv Pullup [jdolecek]:

sys/arch/amiga/dev/grf_cl.c 1.26
sys/arch/amiga/dev/grfioctl.h 1.14
sys/arch/hpcmips/dev/plumvideo.c 1.20
sys/arch/macppc/dev/ofb.c 1.25
sys/arch/sparc/dev/cgtwo.c 1.35
sys/arch/sparc/include/fbio.h patch
sys/arch/sparc64/include/fbio.h patch
sys/arch/sun3/dev/cg2.c 1.14
sys/arch/sun3/include/fbio.h patch
sys/dev/pci/tga.c 1.35
sys/dev/tc/cfb.c 1.28
sys/dev/tc/mfb.c 1.27
sys/dev/tc/sfb.c 1.46
sys/dev/tc/sfbplus.c 1.10 via patch
sys/dev/tc/tfb.c 1.30
sys/dev/tc/xcfb.c 1.23
sys/net/if_ppp.c 1.71

Use unsigned variable types to make bounds checking more correct.
 1.13.2.2 01-Nov-2000  tv Pullup 1.16 [tsubai, mycroft]:
Get the correct OF node of the screen because PowerBooks have two screens
in one PCI device.
 1.13.2.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.23.2.5 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.23.2.4 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.23.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.23.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.23.2.1 03-Aug-2001  lukem update to -current
 1.25.6.5 18-Oct-2002  nathanw Catch up to -current.
 1.25.6.4 13-Aug-2002  nathanw Catch up to -current.
 1.25.6.3 01-Aug-2002  nathanw Catch up to -current.
 1.25.6.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.25.6.1 05-Aug-2001  nathanw file ofb.c was added on branch nathanw_sa on 2002-04-01 07:40:53 +0000
 1.26.6.1 24-Jun-2003  grant Pull up revisions 1.29-1.30, 1.33 (requested by briggs in ticket #1274):

Update OFB_ENABLE_CACHE to search for a empty bat that does not
conflict the USER_SR or one of the kernel SRs.

for ofb_enable_cache, turn on the BAT_M bit as well to prevent
the framebuffer from getting scrambled on MP systems.

Initialize the framebuffer BAT with BAT_G, too. This marks the region
as (G)uarded, protecting it from the processor being too aggressive in
reordering and prefetching. This allows OFB_ENABLE_CACHE to work on my
Powerbook G4.
 1.26.4.2 31-Aug-2002  gehenna catch up with -current.
 1.26.4.1 16-Jul-2002  gehenna catch up with -current.
 1.35.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.35.2.5 18-Dec-2004  skrll Sync with HEAD.
 1.35.2.4 18-Nov-2004  skrll Adapt to branch. macppc release builds.
 1.35.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.35.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.35.2.1 03-Aug-2004  skrll Sync with HEAD
 1.41.10.5 07-Dec-2007  yamt sync with head
 1.41.10.4 03-Sep-2007  yamt sync with head.
 1.41.10.3 26-Feb-2007  yamt sync with head.
 1.41.10.2 30-Dec-2006  yamt sync with head.
 1.41.10.1 21-Jun-2006  yamt sync with head.
 1.43.6.2 01-Jun-2006  kardel Sync with head.
 1.43.6.1 22-Apr-2006  simonb Sync with head.
 1.43.4.1 09-Sep-2006  rpaulo sync with head
 1.43.2.1 18-Feb-2006  yamt sync with head.
 1.47.6.1 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.47.4.4 13-May-2006  elad sprinkle some #include <sys/kauth.h> in files that use kauth kpi but
don't include it yet. hopefully this will prevent some fallout.
 1.47.4.3 19-Apr-2006  elad sync with head - hopefully this will work
 1.47.4.2 10-Mar-2006  elad generic_authorize() -> kauth_authorize_generic().
 1.47.4.1 08-Mar-2006  elad Adapt to kernel authorization KPI.

I expect *some* lossage here...
 1.47.2.2 11-Aug-2006  yamt sync with head
 1.47.2.1 24-May-2006  yamt sync with head.
 1.51.6.2 18-Dec-2006  yamt sync with head.
 1.51.6.1 10-Dec-2006  yamt sync with head.
 1.51.4.3 01-Feb-2007  ad Sync with head.
 1.51.4.2 12-Jan-2007  ad Sync with head.
 1.51.4.1 18-Nov-2006  ad Sync with head.
 1.52.2.2 20-Aug-2008  bouyer Pull up following revision(s) (requested by macallan in ticket #1178):
sys/arch/macppc/dev/ofb.c: revision 1.61
fix another typo, now wsfb on ofb should work properly
 1.52.2.1 12-Jan-2007  bouyer branches: 1.52.2.1.2;
Pull up following revision(s) (requested by macallan in ticket #349):
sys/arch/macppc/dev/ofb.c: revision 1.53
sys/arch/macppc/dev/ofb_cons.c: revision 1.2
(hopefully) fix a panic when ofb attaches without being console
 1.52.2.1.2.1 04-Sep-2008  skrll Sync with netbsd-4.
 1.54.2.2 15-Apr-2007  yamt sync with head.
 1.54.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.56.6.1 29-Mar-2007  reinoud Pullup to -current
 1.56.4.1 11-Jul-2007  mjf Sync with head.
 1.56.2.3 03-Dec-2007  ad Sync with HEAD.
 1.56.2.2 20-Aug-2007  ad Sync with HEAD.
 1.56.2.1 10-Apr-2007  ad Sync with head.
 1.57.4.3 03-Oct-2007  garbled Sync with HEAD
 1.57.4.2 07-Aug-2007  macallan sync with HEAD
 1.57.4.1 02-Aug-2007  macallan sync with HEAD
 1.58.4.1 15-Aug-2007  skrll Sync with HEAD.
 1.58.2.1 07-Aug-2007  matt Sync with HEAD.
 1.60.4.2 27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.60.4.1 09-Aug-2007  jmcneill Sync with HEAD.
 1.61.2.2 09-Jan-2008  matt sync with HEAD
 1.61.2.1 06-Nov-2007  matt sync with HEAD
 1.62.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.63.32.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.63.18.1 16-May-2009  yamt sync with head
 1.64.4.1 05-Mar-2011  rmind sync with head
 1.65.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.67.6.1 05-Apr-2012  mrg sync to latest -current.
 1.67.2.2 30-Oct-2012  yamt sync with head
 1.67.2.1 17-Apr-2012  yamt sync with head
 1.68.2.2 03-Dec-2017  jdolecek update from HEAD
 1.68.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.69.14.1 29-May-2016  skrll Sync with HEAD
 1.70.32.3 24-Apr-2021  thorpej Make sure to explcitly specify the "wsemuldisplaydev" interface attribute
when attaching the wscons display instance, because these devices can
also attach children using the "drm" interface attribute.
 1.70.32.2 02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.70.32.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.71.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.9 26-Nov-2007  garbled Apply a set of patches from Frank Wille to make the genfb attachment work
better on ofppc. In doing so, we also move a few functions around in
macppc and the generic ofw powerpc stuff to allow better sharing of code.
Also, introduce a model_init function.

move ofb_cons.c from macppc/dev to powerpc/oea and rename it to rascons.
This gets rid of some naming confusion, and makes it OFW-MI rather than
macppc specific.
 1.8 17-Oct-2007  garbled branches: 1.8.2;
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.7 28-Feb-2007  thorpej branches: 1.7.2; 1.7.10; 1.7.18; 1.7.20; 1.7.22; 1.7.24;
TRUE -> true, FALSE -> false
 1.6 05-Feb-2007  macallan branches: 1.6.2;
fix fallout from making OF_interpret compatible with the other OF platforms
noticed by Leon Zadorin
 1.5 20-Jan-2007  he Unify the declaration of OF_interpret() between sparc{,64} and macppc
by adding the "nargs" argument to the macppc version, and fix the macppc
ports uses of OF_interpret() accordingly.

Also move the declaration of OF_interpt() from macppc's autoconf.h to
ofw/openfirm.h. This fixes the build of the macppc port.

Approved by macallan@.
 1.4 17-Jan-2007  macallan finding the console node / instance handle moved into machdep.c
 1.3 16-Dec-2006  macallan branches: 1.3.2;
make this compile without wsdisplay
 1.2 16-Dec-2006  macallan (hopefully) fix a panic when ofb attaches without being console
 1.1 08-Nov-2006  macallan branches: 1.1.2; 1.1.4; 1.1.6;
split ofb into one part that attaches right on kernel startup and one that
attaches to pci so we can build kernels with - say - machfb but without
ofb at pci.
 1.1.6.3 18-Dec-2006  yamt sync with head.
 1.1.6.2 10-Dec-2006  yamt sync with head.
 1.1.6.1 08-Nov-2006  yamt file ofb_cons.c was added on branch yamt-splraiseipl on 2006-12-10 07:16:26 +0000
 1.1.4.3 04-Mar-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #475):
sys/arch/macppc/dev/ofb_cons.c: revision 1.4
finding the console node / instance handle moved into machdep.c
 1.1.4.2 12-Jan-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #353):
sys/arch/macppc/dev/ofb_cons.c: revision 1.3
sys/arch/macppc/macppc/machdep.c: revision 1.143
make this compile without wsdisplay
 1.1.4.1 12-Jan-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #349):
sys/arch/macppc/dev/ofb.c: revision 1.53
sys/arch/macppc/dev/ofb_cons.c: revision 1.2
(hopefully) fix a panic when ofb attaches without being console
 1.1.2.5 09-Feb-2007  ad Sync with HEAD.
 1.1.2.4 01-Feb-2007  ad Sync with head.
 1.1.2.3 12-Jan-2007  ad Sync with head.
 1.1.2.2 18-Nov-2006  ad Sync with head.
 1.1.2.1 08-Nov-2006  ad file ofb_cons.c was added on branch newlock2 on 2006-11-18 21:29:24 +0000
 1.3.2.6 07-Dec-2007  yamt sync with head
 1.3.2.5 27-Oct-2007  yamt sync with head.
 1.3.2.4 03-Sep-2007  yamt sync with head.
 1.3.2.3 26-Feb-2007  yamt sync with head.
 1.3.2.2 30-Dec-2006  yamt sync with head.
 1.3.2.1 16-Dec-2006  yamt file ofb_cons.c was added on branch yamt-lazymbuf on 2006-12-30 20:46:26 +0000
 1.6.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.7.24.1 25-Oct-2007  bouyer Sync with HEAD.
 1.7.22.1 18-Oct-2007  yamt sync with head.
 1.7.20.2 23-Mar-2008  matt sync with HEAD
 1.7.20.1 06-Nov-2007  matt sync with HEAD
 1.7.18.2 27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.7.18.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.7.10.1 06-May-2007  macallan initially mimic firmware output whenever possible
 1.7.2.1 23-Oct-2007  ad Sync with head.
 1.8.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.11 26-Nov-2007  garbled Apply a set of patches from Frank Wille to make the genfb attachment work
better on ofppc. In doing so, we also move a few functions around in
macppc and the generic ofw powerpc stuff to allow better sharing of code.
Also, introduce a model_init function.

move ofb_cons.c from macppc/dev to powerpc/oea and rename it to rascons.
This gets rid of some naming confusion, and makes it OFW-MI rather than
macppc specific.
 1.10 08-Nov-2006  macallan branches: 1.10.8; 1.10.26; 1.10.28; 1.10.34;
split ofb into one part that attaches right on kernel startup and one that
attaches to pci so we can build kernels with - say - machfb but without
ofb at pci.
 1.9 12-Feb-2006  macallan branches: 1.9.14; 1.9.16;
Add support for colour and virtual consoles
 1.8 11-Dec-2005  christos branches: 1.8.2; 1.8.4; 1.8.6;
merge ktrace-lwp.
 1.7 23-Sep-2005  macallan forgot to commit this along with ofb.c
 1.6 24-Jun-2002  nathanw branches: 1.6.6; 1.6.22;
Pass through the PCI configuration ioctls, like vga_pci.c does.
 1.5 10-Jun-2001  tsubai branches: 1.5.2; 1.5.8; 1.5.16;
Forgot to commit this; s/offb/ofb/.
 1.4 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.3 19-Jun-2000  tsubai branches: 1.3.4;
Allow mmap of frame buffer registers.
 1.2 09-Feb-2000  tsubai branches: 1.2.2;
Use dev/rasops instead of dev/rcons.
 1.1 14-Oct-1998  tsubai branches: 1.1.12;
akbd: wskbd support.
ofb: OpenFirmware generic framebuffer.
 1.1.12.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 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.3.4.1 21-Jun-2001  nathanw Catch up to -current.
 1.5.16.1 16-Jul-2002  gehenna catch up with -current.
 1.5.8.2 01-Aug-2002  nathanw Catch up to -current.
 1.5.8.1 10-Jun-2001  nathanw file ofbvar.h was added on branch nathanw_sa on 2002-08-01 02:42:24 +0000
 1.5.2.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.6.22.3 07-Dec-2007  yamt sync with head
 1.6.22.2 30-Dec-2006  yamt sync with head.
 1.6.22.1 21-Jun-2006  yamt sync with head.
 1.6.6.1 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.8.6.1 22-Apr-2006  simonb Sync with head.
 1.8.4.1 09-Sep-2006  rpaulo sync with head
 1.8.2.1 18-Feb-2006  yamt sync with head.
 1.9.16.1 10-Dec-2006  yamt sync with head.
 1.9.14.1 18-Nov-2006  ad Sync with head.
 1.10.34.1 08-Dec-2007  mjf Sync with HEAD.
 1.10.28.1 23-Mar-2008  matt sync with HEAD
 1.10.26.1 27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.10.8.1 03-Dec-2007  ad Sync with HEAD.
 1.30 26-Feb-2018  sevan Remove support for macofcons(4), it's not actually possible to build a kernel
with it enabled - See PR port-macppc/53004 and it may have further problems even
so.
From <macallan>:
"There is some early console code that uses OF output but it causes problems
when we get close to MMU setup - I think it can go, it hasn't been enabled in
any config in at least a decade as far as I know."
 1.29 25-Jul-2014  dholland Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.28 16-Mar-2014  dholland branches: 1.28.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.27 27-Oct-2012  chs branches: 1.27.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.26 18-Jun-2011  matt branches: 1.26.2; 1.26.12;
struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.25 24-Apr-2011  rmind branches: 1.25.2;
Rename ttymalloc() to tty_alloc(), and ttyfree() to tty_free() for
consistency. Remove some unnecessary malloc.h inclusions as well.
 1.24 14-Mar-2009  dsl branches: 1.24.4; 1.24.6;
Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.23 13-Jun-2008  cegger branches: 1.23.4; 1.23.10;
use device_lookup_private to get softc
 1.22 19-Nov-2007  ad branches: 1.22.14; 1.22.16; 1.22.18; 1.22.20; 1.22.22;
- Factor out too many copies of the same bit of tty code.
- Fix another tty signalling/wakeup problem.
 1.21 18-Oct-2007  joerg branches: 1.21.2;
Initialise the callbacks for tty.t_rstrt_ch in ttymalloc
as all drivers but Sun/SPARC's kd.c use the same arguments.
Separate callout_reset into callout_schedule and the initial
callout_setfunc using that.
 1.20 04-Mar-2007  christos branches: 1.20.2; 1.20.18; 1.20.20; 1.20.24;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.19 01-Oct-2006  elad branches: 1.19.4;
Adapt MD code to KAUTH_DEVICE_TTY_OPEN. Patch from Matt Fleming, thanks!
 1.18 23-Jul-2006  ad branches: 1.18.4; 1.18.6;
Use the LWP cached credentials where sane.
 1.17 14-May-2006  elad integrate kauth.
 1.16 20-Jan-2006  xtraeme branches: 1.16.2; 1.16.4; 1.16.6; 1.16.8; 1.16.10;
ktrace-lwp fallout. ok'ed by skrll.
 1.15 11-Dec-2005  christos branches: 1.15.2;
merge ktrace-lwp.
 1.14 04-Nov-2003  aymeric branches: 1.14.16;
. ANSIfy, make compile
. get rid of kbd_intr() and low-level keyboard handling
 1.13 15-Jul-2003  lukem __KERNEL_RCSID()
 1.12 23-Oct-2002  jdolecek branches: 1.12.6;
merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.11 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.10 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.9 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.8 17-Mar-2002  atatat branches: 1.8.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.7 02-May-2001  scw branches: 1.7.2; 1.7.4; 1.7.8;
Add `l_poll' to `struct linesw' and provide an xxxpoll() entry point
in each tty driver to indirect through it.

This allows tty line-disciplines to handle poll(2) system calls.
 1.6 03-Nov-2000  wrstuden branches: 1.6.2;
Adjust to change in tty line discipline handling.
 1.5 02-Nov-2000  eeh Adapt to new line discipline scheme.
 1.4 23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.3 06-Mar-2000  thorpej - Implement cnbell() -- ring the console bell. The cn_bell entrypoint
is optional.
- Add cn_bell to statically allocated consdevs as appropriate.
 1.2 28-Jul-1998  thorpej branches: 1.2.14;
Ah, we use a _different_ ofcons; rename it macofcons to avoid the
name collision.
 1.1 02-Jul-1998  tsubai Display/Keyboard console support (by calling Openfirmware)
 1.2.14.2 22-Nov-2000  bouyer Sync with HEAD.
 1.2.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.6.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.7.8.5 11-Nov-2002  nathanw Catch up to -current
 1.7.8.4 18-Oct-2002  nathanw Catch up to -current.
 1.7.8.3 17-Sep-2002  nathanw Catch up to -current.
 1.7.8.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.7.8.1 02-May-2001  nathanw file ofcons.c was added on branch nathanw_sa on 2002-04-01 07:40:53 +0000
 1.7.4.2 13-Oct-2001  fvdl Revert the t_dev -> t_devvp change in struct tty. The way that tty
structs are currently used (especially by console ttys) aren't
ready for it, and this will require quite a few changes.
 1.7.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.7.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.7.2.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.8.4.1 19-May-2002  gehenna Add device switch.
Replace the access to devsw table and the hard-coded majors with devsw API.
 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.14.16.5 07-Dec-2007  yamt sync with head
 1.14.16.4 27-Oct-2007  yamt sync with head.
 1.14.16.3 03-Sep-2007  yamt sync with head.
 1.14.16.2 30-Dec-2006  yamt sync with head.
 1.14.16.1 21-Jun-2006  yamt sync with head.
 1.15.2.1 01-Feb-2006  yamt sync with head.
 1.16.10.1 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.16.8.3 13-May-2006  elad sprinkle some #include <sys/kauth.h> in files that use kauth kpi but
don't include it yet. hopefully this will prevent some fallout.
 1.16.8.2 10-Mar-2006  elad generic_authorize() -> kauth_authorize_generic().
 1.16.8.1 08-Mar-2006  elad Adapt to kernel authorization KPI.

I expect *some* lossage here...
 1.16.6.2 11-Aug-2006  yamt sync with head
 1.16.6.1 24-May-2006  yamt sync with head.
 1.16.4.1 01-Jun-2006  kardel Sync with head.
 1.16.2.1 09-Sep-2006  rpaulo sync with head
 1.18.6.1 22-Oct-2006  yamt sync with head
 1.18.4.1 18-Nov-2006  ad Sync with head.
 1.19.4.1 12-Mar-2007  rmind Sync with HEAD.
 1.20.24.2 21-Nov-2007  bouyer Sync with HEAD
 1.20.24.1 25-Oct-2007  bouyer Sync with HEAD.
 1.20.20.2 09-Jan-2008  matt sync with HEAD
 1.20.20.1 06-Nov-2007  matt sync with HEAD
 1.20.18.2 21-Nov-2007  joerg Sync with HEAD.
 1.20.18.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.20.2.2 03-Dec-2007  ad Sync with HEAD.
 1.20.2.1 23-Oct-2007  ad Sync with head.
 1.21.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.22.22.1 18-Jun-2008  simonb Sync with head.
 1.22.20.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.22.18.1 04-May-2009  yamt sync with head.
 1.22.16.1 17-Jun-2008  yamt sync with head.
 1.22.14.1 29-Jun-2008  mjf Sync with HEAD.
 1.23.10.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.23.4.1 28-Apr-2009  skrll Sync with HEAD.
 1.24.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.24.4.1 31-May-2011  rmind sync with head
 1.25.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.26.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.26.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.26.2.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.26.2.1 30-Oct-2012  yamt sync with head
 1.27.2.1 18-May-2014  rmind sync with head
 1.28.2.1 10-Aug-2014  tls Rebase.
 1.2 21-Sep-2025  thorpej Add some conditional debug messages.
 1.1 21-Sep-2025  thorpej Add support for direct i2c device enumeration using the OpenFirmware
device tree.
 1.20 28-Mar-2022  riastradh uhidev(9): Get the device and interface through attach args.

This way uhidev drivers don't need access to uhidev_softc itself for
it.
 1.19 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.18 24-Jul-2021  andvar branches: 1.18.2;
Fix all remaining typos, mainly in comments but also in few definitions and log messages, reported by me in PR kern/54889.
Also fixed some additional typos in comments, found on review of same files or typos.
 1.17 24-Apr-2021  thorpej branches: 1.17.2;
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 03-Sep-2018  riastradh branches: 1.16.14;
Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.15 13-Dec-2017  maya branches: 1.15.2; 1.15.4;
Catch up with hid.h header location change

Fixes macppc kernels build
 1.14 28-Apr-2016  skrll Fix build
 1.13 27-Oct-2012  chs branches: 1.13.12; 1.13.14;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.12 20-Dec-2010  phx branches: 1.12.8; 1.12.18;
The driver didn't work, because it expects the whole data packet in a
single interrupt. Reality shows that with current kernels a 81 bytes packet
is split into 3 interrupts with 32 + 32 + 17 bytes. I have added a workaround
to deal with it. The Geyser2 devices with 64 byte packets are unsupported
at the moment. Somebody needs to test it.

New: Added support for the iBook 12-inch trackpad.
 1.11 19-Nov-2010  phx Make sure the interface protocol is UIPROTO_MOUSE, before we attach.
 1.10 08-Nov-2010  pooka usb port stuff is a goner
 1.9 05-Nov-2009  dyoung branches: 1.9.2; 1.9.4;
In awacs(4) and snapper(4), use deviter(9) instead of accessing
alldevs directly.

In pbms(4), delete some unused debugging macros, expand USB
compatibility macros, and add a child-detachment routine. Simplify
pbms(4) deactivation and detachment.

These changes are compile-tested, only.
 1.8 01-Mar-2009  aymeric . use device_private() (led to immediate crash during attach)
. while there, fix the aspect ratio of the trackpad on the geyser2 model
 1.7 17-Oct-2007  garbled branches: 1.7.20; 1.7.28; 1.7.30; 1.7.34; 1.7.36; 1.7.38;
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.6 14-Sep-2007  aymeric add support for the "newer" trackpads found at least in the last generation
G4 powerbooks (powerbook5,8). Information found in the Linux driver.
 1.5 04-Mar-2007  christos branches: 1.5.2; 1.5.10; 1.5.18; 1.5.20;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.4 12-Nov-2006  plunky branches: 1.4.4;
Tidy away wsmouse_input() abstractions and update
documentation to include the W direction.
 1.3 06-Feb-2006  jmmv branches: 1.3.2; 1.3.10; 1.3.16; 1.3.20; 1.3.22; 1.3.24;
Fix build by correcting pbms_ioctl's prototype.
 1.2 05-Feb-2006  xtraeme Add a pbms(4) manpage. Remove it from the source code and update TODO.
 1.1 05-Feb-2006  christos powerbook 15" mouse driver from Johan Wallen.
 1.3.24.1 10-Dec-2006  yamt sync with head.
 1.3.22.2 09-Sep-2006  rpaulo sync with head
 1.3.22.1 06-Feb-2006  rpaulo file pbms.c was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:41:05 +0000
 1.3.20.1 18-Nov-2006  ad Sync with head.
 1.3.16.5 27-Oct-2007  yamt sync with head.
 1.3.16.4 03-Sep-2007  yamt sync with head.
 1.3.16.3 30-Dec-2006  yamt sync with head.
 1.3.16.2 21-Jun-2006  yamt sync with head.
 1.3.16.1 06-Feb-2006  yamt file pbms.c was added on branch yamt-lazymbuf on 2006-06-21 14:53:13 +0000
 1.3.10.2 22-Apr-2006  simonb Sync with head.
 1.3.10.1 06-Feb-2006  simonb file pbms.c was added on branch simonb-timecounters on 2006-04-22 11:37:41 +0000
 1.3.2.2 18-Feb-2006  yamt sync with head.
 1.3.2.1 06-Feb-2006  yamt file pbms.c was added on branch yamt-uio_vmspace on 2006-02-18 15:38:41 +0000
 1.4.4.1 12-Mar-2007  rmind Sync with HEAD.
 1.5.20.1 06-Nov-2007  matt sync with HEAD
 1.5.18.1 02-Oct-2007  joerg Sync with HEAD.
 1.5.10.2 03-Oct-2007  garbled Sync with HEAD
 1.5.10.1 14-Sep-2007  macallan sync with HEAD
 1.5.2.1 09-Oct-2007  ad Sync with head.
 1.7.38.1 21-Apr-2010  matt sync to netbsd-5
 1.7.36.1 25-Aug-2009  snj Pull up following revision(s) (requested by aymeric in ticket #916):
sys/arch/macppc/dev/pbms.c: revision 1.8
. use device_private() (led to immediate crash during attach)
. while there, fix the aspect ratio of the trackpad on the geyser2 model
 1.7.34.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.7.30.2 11-Jan-2010  snj Apply patch (requested by tsutsui in ticket #916):
Fix crash on detach.
 1.7.30.1 25-Aug-2009  snj Pull up following revision(s) (requested by aymeric in ticket #916):
sys/arch/macppc/dev/pbms.c: revision 1.8
. use device_private() (led to immediate crash during attach)
. while there, fix the aspect ratio of the trackpad on the geyser2 model
 1.7.28.1 03-Mar-2009  skrll Sync with HEAD.
 1.7.20.2 11-Mar-2010  yamt sync with head
 1.7.20.1 04-May-2009  yamt sync with head.
 1.9.4.1 05-Mar-2011  rmind sync with head
 1.9.2.1 09-Nov-2010  uebayasi Sync with HEAD.
 1.12.18.2 03-Dec-2017  jdolecek update from HEAD
 1.12.18.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.12.8.1 30-Oct-2012  yamt sync with head
 1.13.14.1 29-May-2016  skrll Sync with HEAD
 1.13.12.1 08-Apr-2017  snj Pull up following revision(s) (requested by skrll in ticket #1398):
sys/arch/macppc/dev/pbms.c: revision 1.14
Fix build
 1.15.4.1 10-Jun-2019  christos Sync with HEAD
 1.15.2.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.16.14.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.2.1 01-Aug-2021  thorpej Sync with HEAD.
 1.18.2.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.6 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.5 24-Apr-2021  thorpej branches: 1.5.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.4 11-Dec-2019  scole branches: 1.4.10;
Synchronize htdocs, manual, comments, and code so that enabling the platinumfb is done using "platinum" in openfirmware settings. Remove "screen" option which was somewhat disingenuous.
 1.3 16-Sep-2016  scole branches: 1.3.14; 1.3.18;
Add note about 16 bit console brokenness
 1.2 06-Jul-2016  macallan branches: 1.2.2; 1.2.4;
shut up unused function warning
 1.1 10-Jun-2016  macallan add driver for 'platinum' onboard video found in Power Mac 7200 and possibly
other machines
from s_cole
 1.2.4.1 04-Nov-2016  pgoyette Sync with HEAD
 1.2.2.3 05-Oct-2016  skrll Sync with HEAD
 1.2.2.2 09-Jul-2016  skrll Sync with HEAD
 1.2.2.1 06-Jul-2016  skrll file platinumfb.c was added on branch nick-nhusb on 2016-07-09 20:24:53 +0000
 1.3.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.3.14.2 03-Dec-2017  jdolecek update from HEAD
 1.3.14.1 16-Sep-2016  jdolecek file platinumfb.c was added on branch tls-maxphys on 2017-12-03 11:36:25 +0000
 1.4.10.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.5.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.3 16-Apr-2020  rin Revert previous for now:
http://mail-index.netbsd.org/source-changes/2020/04/16/msg116278.html

The reasoning turned out to be wrong; __KERNEL_RCSID() in header files
does *not* overwrite RCSID in main source files. The real problem is that
it inserts its RCSID into *every* object files. However, it can be still
useful even if heavily duplicated.
 1.2 16-Apr-2020  rin Stop using __KERNEL_RCSID() in header files; it confuses ident(1) by
overwriting RCSID in main source files.

XXX
The first argument of __KERNEL_RCSID() is neglected for ELF. If we wish
to have RCSID of header files in kernel binary, we need something like
__FBSDID() macro in FreeBSD.
 1.1 16-Jun-2016  macallan branches: 1.1.2; 1.1.18; 1.1.32;
somehow this fell through the cracks when I committed platinumfb.c
thanks chuq for noticing
 1.1.32.1 20-Apr-2020  bouyer Sync with HEAD
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 16-Jun-2016  jdolecek file platinumfbreg.h was added on branch tls-maxphys on 2017-12-03 11:36:25 +0000
 1.1.2.2 09-Jul-2016  skrll Sync with HEAD
 1.1.2.1 16-Jun-2016  skrll file platinumfbreg.h was added on branch nick-nhusb on 2016-07-09 20:24:53 +0000
 1.39 02-Jun-2024  andvar fix various typos in word `interrupt', mainly in comments.
 1.38 09-Feb-2022  andvar fix various typos in comments.
 1.37 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.36 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.35 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.34 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.33 07-Nov-2007  garbled branches: 1.33.18; 1.33.26; 1.33.32;
Convert macppc to shared ofw_autoconf.c. Compile tested only.
 1.32 17-Oct-2007  garbled branches: 1.32.2;
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.31 24-Jan-2007  hubertf branches: 1.31.6; 1.31.14; 1.31.22; 1.31.24; 1.31.26; 1.31.28;
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.30 07-Jun-2006  kardel branches: 1.30.6;
avoid shadowing time while it still exists
 1.29 11-Dec-2005  christos branches: 1.29.4; 1.29.6; 1.29.8; 1.29.14;
merge ktrace-lwp.
 1.28 07-Jun-2005  jmmv branches: 1.28.2;
Constify char* arguments to pm_printerr. Fixes the build when ADB_DEBUG
is set.

Note that only the first argument needed to be constified to solve the issue,
but given the usage of the arguments in the function, it's worth to constify
all of them.
 1.27 05-Jun-2005  nathanw Rearrange some of the ADB types and void * abuse to make -Wcast-qual
happy in the presence of the "volatile int flag" construct. Fix up a variety
of calls to pass NULL instead of (Ptr)0 to maintain function-pointer safety.
 1.26 27-Apr-2005  briggs Correctly match battery types. Old function would end up matching a
zero-length string. Noted in PR port-macppc/30034 by Magnus Henoch.
Patched as in the PR.
 1.25 01-Feb-2005  briggs Strip old "pm1" code. All PPC PMUs are "pm2" style. Two benefits:
* Cleans code up a bit, and
* Reduces the call stack for PMU interrupts.
 1.24 01-Feb-2005  briggs Remove one level of interrupt redirection by switching on the ADB
hardware type and registering a Cuda or PMU interrupt handler
specifically instead of an intermediate interrupt handler.
 1.23 01-Feb-2005  briggs Add a PMU initialization call at ADB init time. This probes the machine
type for PMU / battery information, then uses that when getting battery
information for APM. Allows older PowerBooks (pre-smart batteries) to
function with apm enabled in the kernel. Thanks to Linux code for battery
information for these old batteries. Something is still odd, though,
because a charging battery can show > 100% when it's near to full charge.

Enable more interrupts from PMU and handle PB3400 card eject buttons
properly, too.

Also use #defines for commands instead of raw hex codes.
 1.22 01-Feb-2005  briggs Calculate and use seconds of power remaining for smart battery types.
 1.21 07-Jan-2005  briggs branches: 1.21.2; 1.21.4;
- If pm_pmgrop_pm2() fails, return after splx() -- there's no sense in
continuing.
- Note that there really needs to be bounds-checking on PMData.
 1.20 15-Jul-2003  lukem __KERNEL_RCSID()
 1.19 18-Jun-2002  itojun branches: 1.19.6;
apm emulation, from openbsd
 1.18 18-Jun-2002  itojun KNF (whitespace)
 1.17 02-Jan-2002  dbj branches: 1.17.8;
if pm_adb_op times out waiting for an interrupt, attempt to take
an interrupt anyway, just in case. Otherwise, report the timout condition.
This works around a problem in my ibook if a key is pressed after boot
and before adb is configured, such as when booting with -d.
 1.16 16-Sep-2001  wiz branches: 1.16.4;
Grammar improvements in comments.
 1.15 16-Sep-2001  wiz Spell 'occurred' with two 'r's.
 1.14 03-Aug-2001  tsubai branches: 1.14.2;
Remove (#if 0'ed) m68k asm codes.
 1.13 22-Jul-2001  wiz bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.12 01-Apr-2001  tsubai branches: 1.12.2;
Adjust timing for pmu99. Internal keyboard of recent PowerBooks
should work now.
 1.11 28-Feb-2001  tsubai branches: 1.11.2;
Back out previous change. It was harmful on my PowerBook G3.
 1.10 27-Feb-2001  matt Enable a fix so that PowerBook(FireWire) keyboards work. This
should also work on iBooks and PowerBook(WallStreet). And if
we're really lucky, on the new G4 laptops.
 1.9 08-Jun-2000  tsubai branches: 1.9.2;
Sync with mac68k.
 1.8 05-Sep-1999  tsubai branches: 1.8.2; 1.8.10;
Recognize PCMCIA eject button. (Tested on only PowerBook 2400.)
 1.7 12-Jul-1999  tsubai Add read/set LCD brightness and eject PCMCIA card function.
 1.6 11-Jul-1999  tsubai Enable soft poweroff on PowerBook.
 1.5 22-Jun-1999  tsubai NVRAM read/write functions.
 1.4 22-Jun-1999  tsubai Use RTC on PB.
 1.3 07-Dec-1998  tsubai branches: 1.3.6;
Fix a typo.
 1.2 15-Nov-1998  tsubai RTC support for pmu (read only).
 1.1 20-Oct-1998  tsubai Oops, forgot to add them.
 1.3.6.2 02-Aug-1999  thorpej Update from trunk.
 1.3.6.1 01-Jul-1999  thorpej Sync w/ -current.
 1.8.10.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.8.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.8.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.9.2.1 01-Apr-2001  he Pull up revision 1.12 (requested by tsubai):
Fix Keyboard problem of recent PowerBooks (Pismo, PowerBook G4,
etc.).
 1.11.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.12.2.4 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.12.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.12.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.12.2.1 03-Aug-2001  lukem update to -current
 1.14.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.16.4.4 20-Jun-2002  nathanw Catch up to -current.
 1.16.4.3 28-Feb-2002  nathanw Catch up to -current.
 1.16.4.2 11-Jan-2002  nathanw More catchup.
 1.16.4.1 16-Sep-2001  nathanw file pm_direct.c was added on branch nathanw_sa on 2002-01-11 23:38:35 +0000
 1.17.8.1 16-Jul-2002  gehenna catch up with -current.
 1.19.6.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.19.6.5 04-Feb-2005  skrll Sync with HEAD.
 1.19.6.4 17-Jan-2005  skrll Sync with HEAD.
 1.19.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.19.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.19.6.1 03-Aug-2004  skrll Sync with HEAD
 1.21.4.1 12-Feb-2005  yamt sync with head.
 1.21.2.1 29-Apr-2005  kent sync with -current
 1.28.2.4 15-Nov-2007  yamt sync with head.
 1.28.2.3 27-Oct-2007  yamt sync with head.
 1.28.2.2 26-Feb-2007  yamt sync with head.
 1.28.2.1 21-Jun-2006  yamt sync with head.
 1.29.14.1 19-Jun-2006  chap Sync with head.
 1.29.8.1 26-Jun-2006  yamt sync with head.
 1.29.6.1 22-Apr-2006  simonb Fix some shadowed variable warnings.
 1.29.4.1 09-Sep-2006  rpaulo sync with head
 1.30.6.1 01-Feb-2007  ad Sync with head.
 1.31.28.2 13-Nov-2007  bouyer Sync with HEAD
 1.31.28.1 25-Oct-2007  bouyer Sync with HEAD.
 1.31.26.1 18-Oct-2007  yamt sync with head.
 1.31.24.2 08-Nov-2007  matt sync with -HEAD
 1.31.24.1 06-Nov-2007  matt sync with HEAD
 1.31.22.2 11-Nov-2007  joerg Sync with HEAD.
 1.31.22.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.31.14.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.31.6.2 03-Dec-2007  ad Sync with HEAD.
 1.31.6.1 23-Oct-2007  ad Sync with head.
 1.32.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.33.32.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.33.26.1 28-Apr-2009  skrll Sync with HEAD.
 1.33.18.1 04-May-2009  yamt sync with head.
 1.12 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.11 11-Dec-2005  christos branches: 1.11.78; 1.11.86; 1.11.92;
merge ktrace-lwp.
 1.10 01-Feb-2005  briggs Remove one level of interrupt redirection by switching on the ADB
hardware type and registering a Cuda or PMU interrupt handler
specifically instead of an intermediate interrupt handler.
 1.9 01-Feb-2005  briggs Add a PMU initialization call at ADB init time. This probes the machine
type for PMU / battery information, then uses that when getting battery
information for APM. Allows older PowerBooks (pre-smart batteries) to
function with apm enabled in the kernel. Thanks to Linux code for battery
information for these old batteries. Something is still odd, though,
because a charging battery can show > 100% when it's near to full charge.

Enable more interrupts from PMU and handle PB3400 card eject buttons
properly, too.

Also use #defines for commands instead of raw hex codes.
 1.8 01-Feb-2005  briggs Add some command definitions gleaned from Linux.
Add a field to pmu_battery_info to contain est. seconds of power remaining.
 1.7 07-Jan-2005  briggs branches: 1.7.2; 1.7.4;
Increase buffer from 32 bytes to 128 bytes in PMData. I have observed a
response from the device that had 120 bytes of data. The lack of any
bounds-checking in pm_direct.c allowed that data to smash the stack in
the interrupt handler.
 1.6 18-Jun-2002  itojun branches: 1.6.6;
apm emulation, from openbsd
 1.5 12-Jul-1999  tsubai branches: 1.5.16; 1.5.20; 1.5.28;
Add read/set LCD brightness and eject PCMCIA card function.
 1.4 11-Jul-1999  tsubai Enable soft poweroff on PowerBook.
 1.3 22-Jun-1999  tsubai NVRAM read/write functions.
 1.2 16-Jun-1999  tsubai Define symbolic name of PMU commands.
 1.1 20-Oct-1998  tsubai branches: 1.1.8;
Oops, forgot to add them.
 1.1.8.3 02-Aug-1999  thorpej Update from trunk.
 1.1.8.2 01-Jul-1999  thorpej Sync w/ -current.
 1.1.8.1 21-Jun-1999  thorpej Sync w/ -current.
 1.5.28.1 16-Jul-2002  gehenna catch up with -current.
 1.5.20.1 20-Jun-2002  nathanw Catch up to -current.
 1.5.16.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.6.6.2 04-Feb-2005  skrll Sync with HEAD.
 1.6.6.1 17-Jan-2005  skrll Sync with HEAD.
 1.7.4.1 12-Feb-2005  yamt sync with head.
 1.7.2.1 29-Apr-2005  kent sync with -current
 1.11.92.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.11.86.1 28-Apr-2009  skrll Sync with HEAD.
 1.11.78.1 04-May-2009  yamt sync with head.
 1.47 21-Sep-2025  thorpej Support enumeration of i2c devices directly from the device tree.
 1.46 21-Sep-2025  thorpej It's no longer necessary to scan for sensor descriptive information
in the macppc i2c controller drivers; device_register() does it for
us.
 1.45 18-Sep-2025  thorpej In the "i2c-child-devices" array, don't pass in a "cookie" and "cookietype".
Instead, just create the appropriate devhandle and pass that along as a
data object.
 1.44 15-Sep-2025  thorpej Encapsulate what's needed to attach an I2C bus into a iicbus_attach()
inline.
 1.43 07-Sep-2025  thorpej Change todr_chip_handle::cookie -> todr_chip_handle::todr_dev, and
make it a device_t. Upcoming functional changes will require the
device_t associated with a TODR device.

Change todr_chip_handle::bus_cookie -> todr_chip_handle::todr_devaux.
Nothing was using the old field, but I decided to keep it around just
in cause something needs it in the future.

And with these largely mechanical yet semantically meaningful changes,
thus spake the Oracle: "Welcome to NetBSD 11.99.2."
 1.42 12-Aug-2025  macallan some updates and fixes:
- sprinkle volatile, mostly for clang
- on Xserve we need extra delays around i2c ops
- use combined mode for i2c reads - 2 ops instead of 3
- make sure we pass the whole compatible property to iic, not just the first
entry
 1.41 30-Aug-2023  macallan remove ancient #if 0 block
NFC
 1.40 22-Aug-2023  macallan tsleep()/wakeup() -> cv_*
 1.39 07-Aug-2021  thorpej branches: 1.39.2;
Merge thorpej-cfargs2.
 1.38 07-Aug-2021  macallan pass sensor locations to i2c devices if we can find them
tested on 2nd gen Mini
 1.37 24-Apr-2021  thorpej branches: 1.37.2; 1.37.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.36 05-Mar-2021  rin branches: 1.36.2;
Convert to intr_establish_xname().
 1.35 26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.34 14-Jul-2020  martin branches: 1.34.2;
Adapt to new proplib API
 1.33 22-Dec-2019  thorpej Cleanup i2c bus acquire / release, centralizing all of the logic into
iic_acquire_bus() / iic_release_bus(). "acquire" and "release" hooks
no longer need to be provided by back-end controller drivers (only if
they need special handling, e.g. powering on the i2c controller).
This results in the removal of a bunch of rendundant code from each
back-end controller driver.

Assert that we are not in hard interrupt context in iic_acquire_bus(),
iic_exec(), and iic_release_bus().
 1.32 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.31 28-Mar-2018  macallan branches: 1.31.2;
be less spammy on i2c errors
 1.30 16-Feb-2018  macallan branches: 1.30.2;
OF_getprop() retuns -1 on failure, not 0...
 1.29 29-Sep-2017  macallan pass the right device node to i2c devices
 1.28 01-Sep-2017  macallan support I2C bus and direct config of slave devices
 1.27 01-Jun-2016  macallan report the power button to sysmon when possible
 1.26 31-May-2016  macallan fix stupid tpyo
thanks chuq
 1.25 31-May-2016  macallan make sure we call sysmon_pswitch_event() from thread context
 1.24 14-Feb-2016  chs zero the i2c_attach_args structure before filling it in.
fixes occasional crashes in iic_attach().
 1.23 14-Mar-2014  mrg branches: 1.23.6;
remove various set-but-unused variables.
 1.22 05-Nov-2013  macallan do what cuda does - if we read garbage from the RTC try a few more times
 1.21 01-Jul-2011  dyoung branches: 1.21.2; 1.21.12; 1.21.16;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.20 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.19 09-Nov-2010  macallan branches: 1.19.6;
add support for controlling power to the modem in some PowerBooks
works at least with my Pismo, probably others
 1.18 14-Sep-2010  macallan report lid open/close events to sysmon
 1.17 12-Dec-2009  tsutsui branches: 1.17.2; 1.17.4;
Remove `volatile' qualifier from argument types of
struct timeval passed to todr_gettime(9) and todr_settime(9).
We no longer have an ancient and volatile struct timeval `time'
global since we have switched to MI timercounter(9) on all port.

XXX1: some of these RTC drivers still assume 32bit time_t
XXX2: some of these should be rewritten to use todr_[gs]ettime_ymdhms()
XXX3: todr(9) man page doesn't mention todr_[gs]ettime_ymdhms()
 1.16 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.15 11-Jan-2009  macallan branches: 1.15.2;
fix format instead of casting wildly
 1.14 11-Jan-2009  macallan deal with 64bit time_t
Noticed by Wojciech Galazka
 1.13 29-Apr-2008  martin branches: 1.13.8;
Convert to new 2 clause license
 1.12 30-Mar-2008  macallan branches: 1.12.2; 1.12.4;
don't splhigh() in the interrupt handler, instead spltty() in adb_poll()
 1.11 06-Dec-2007  ad branches: 1.11.12;
lockmgr -> mutex
 1.10 07-Nov-2007  garbled branches: 1.10.2;
Convert macppc to shared ofw_autoconf.c. Compile tested only.
 1.9 17-Oct-2007  garbled branches: 1.9.2;
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.8 08-Aug-2007  macallan branches: 1.8.2; 1.8.4; 1.8.6;
sync with ppcoea-renovation
 1.7 09-Jul-2007  ad branches: 1.7.4; 1.7.8;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.6 09-May-2007  macallan add an optional callback from pmu's worker thread, use it to poll AC power
status on legacy batteries where we don't get environment interrupts. Also
report AC status changes to powerd.
 1.5 03-Apr-2007  macallan branches: 1.5.4;
cleanup a bit, fix some stupid pasto
thanks to jmcneill for finding the problem
 1.4 25-Mar-2007  macallan attach smartbat* when appropriate
 1.3 15-Feb-2007  macallan branches: 1.3.2; 1.3.4; 1.3.8; 1.3.10; 1.3.12;
- don't use IPL_HIGH
- attach batteries when present
- some cleanup
 1.2 18-Jan-2007  macallan branches: 1.2.2;
make some tables static to avoid collisions
 1.1 17-Jan-2007  macallan new drivers for pmu and cuda
 1.2.2.2 01-Feb-2007  ad Sync with head.
 1.2.2.1 18-Jan-2007  ad file pmu.c was added on branch newlock2 on 2007-02-01 08:48:08 +0000
 1.3.12.2 09-Dec-2007  reinoud Pullup to HEAD
 1.3.12.1 29-Mar-2007  reinoud Pullup to -current
 1.3.10.1 11-Jul-2007  mjf Sync with head.
 1.3.8.6 03-Dec-2007  ad Sync with HEAD.
 1.3.8.5 23-Oct-2007  ad Sync with head.
 1.3.8.4 20-Aug-2007  ad Sync with HEAD.
 1.3.8.3 15-Jul-2007  ad Sync with head.
 1.3.8.2 27-May-2007  ad Sync with head.
 1.3.8.1 10-Apr-2007  ad Sync with head.
 1.3.4.6 07-Dec-2007  yamt sync with head
 1.3.4.5 15-Nov-2007  yamt sync with head.
 1.3.4.4 27-Oct-2007  yamt sync with head.
 1.3.4.3 03-Sep-2007  yamt sync with head.
 1.3.4.2 26-Feb-2007  yamt sync with head.
 1.3.4.1 15-Feb-2007  yamt file pmu.c was added on branch yamt-lazymbuf on 2007-02-26 09:07:21 +0000
 1.3.2.2 17-May-2007  yamt sync with head.
 1.3.2.1 15-Apr-2007  yamt sync with head.
 1.5.4.7 03-Oct-2007  garbled Sync with HEAD
 1.5.4.6 08-Aug-2007  macallan set display brightness on attach
 1.5.4.5 02-Aug-2007  macallan sync with HEAD
 1.5.4.4 14-Jun-2007  macallan fix some bus_spacification fallout
 1.5.4.3 22-May-2007  matt Update to HEAD.
 1.5.4.2 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.5.4.1 09-May-2007  macallan sync with HEAD
 1.7.8.4 09-Dec-2007  jmcneill Sync with HEAD.
 1.7.8.3 11-Nov-2007  joerg Sync with HEAD.
 1.7.8.2 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.7.8.1 09-Aug-2007  jmcneill Sync with HEAD.
 1.7.4.1 15-Aug-2007  skrll Sync with HEAD.
 1.8.6.2 13-Nov-2007  bouyer Sync with HEAD
 1.8.6.1 25-Oct-2007  bouyer Sync with HEAD.
 1.8.4.1 18-Oct-2007  yamt sync with head.
 1.8.2.3 09-Jan-2008  matt sync with HEAD
 1.8.2.2 08-Nov-2007  matt sync with -HEAD
 1.8.2.1 06-Nov-2007  matt sync with HEAD
 1.9.2.2 08-Dec-2007  mjf Sync with HEAD.
 1.9.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.10.2.1 08-Dec-2007  ad Sync with head.
 1.11.12.3 17-Jan-2009  mjf Sync with HEAD.
 1.11.12.2 02-Jun-2008  mjf Sync with HEAD.
 1.11.12.1 03-Apr-2008  mjf Sync with HEAD.
 1.12.4.4 09-Oct-2010  yamt sync with head
 1.12.4.3 11-Mar-2010  yamt sync with head
 1.12.4.2 04-May-2009  yamt sync with head.
 1.12.4.1 16-May-2008  yamt sync with head.
 1.12.2.1 18-May-2008  yamt sync with head.
 1.13.8.2 28-Apr-2009  skrll Sync with HEAD.
 1.13.8.1 19-Jan-2009  skrll Sync with HEAD.
 1.15.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.17.4.1 05-Mar-2011  rmind sync with head
 1.17.2.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.19.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.21.16.1 18-May-2014  rmind sync with head
 1.21.12.2 03-Dec-2017  jdolecek update from HEAD
 1.21.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.21.2.1 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.23.6.2 09-Jul-2016  skrll Sync with HEAD
 1.23.6.1 19-Mar-2016  skrll Sync with HEAD
 1.30.2.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.30.2.1 30-Mar-2018  pgoyette Resolve conflicts between branch and HEAD
 1.31.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.31.2.1 10-Jun-2019  christos Sync with HEAD
 1.34.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.36.2.1 02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.37.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.37.2.2 14-May-2021  thorpej Deal with quirks / differences in OpenFirmware implementations'
interpreation of the i2c "reg" property by embedding knowledge
of those quicks directly, rather than forcing lots of drivers
to provide their own devhandle implementations. We default to
assuming the Device Tree bindings, and tweak based on platform-
specific #ifdefs.

Start with __HAVE_OPENFIRMWARE_VARIANT_AAPL (all i2c "reg" properties
encode an address that's shifted left 1 bit to account for the R/W bit
that appears on the wire).
 1.37.2.1 08-May-2021  thorpej Adapt the pmu driver to the new i2c device enumeration mechanism. This
follows the OpenFirmware bindings for the most part, but has the i2c
addresses of children shifted left one bit as it would appear on the
wire (for the r/w bit).
 1.39.2.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.11 16-Apr-2020  rin Revert previous for now:
http://mail-index.netbsd.org/source-changes/2020/04/16/msg116278.html

The reasoning turned out to be wrong; __KERNEL_RCSID() in header files
does *not* overwrite RCSID in main source files. The real problem is that
it inserts its RCSID into *every* object files. However, it can be still
useful even if heavily duplicated.
 1.10 16-Apr-2020  rin Stop using __KERNEL_RCSID() in header files; it confuses ident(1) by
overwriting RCSID in main source files.

XXX
The first argument of __KERNEL_RCSID() is neglected for ELF. If we wish
to have RCSID of header files in kernel binary, we need something like
__FBSDID() macro in FreeBSD.
 1.9 01-Jun-2016  macallan branches: 1.9.28;
report the power button to sysmon when possible
 1.8 09-Nov-2010  macallan branches: 1.8.18; 1.8.36;
add support for controlling power to the modem in some PowerBooks
works at least with my Pismo, probably others
 1.7 29-Apr-2008  martin branches: 1.7.22;
Convert to new 2 clause license
 1.6 17-Oct-2007  garbled branches: 1.6.16; 1.6.18; 1.6.20;
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.5 08-Aug-2007  macallan branches: 1.5.2;
sync with ppcoea-renovation
 1.4 09-May-2007  macallan branches: 1.4.4; 1.4.8;
add an optional callback from pmu's worker thread, use it to poll AC power
status on legacy batteries where we don't get environment interrupts. Also
report AC status changes to powerd.
 1.3 03-Apr-2007  macallan branches: 1.3.4;
cleanup a bit, fix some stupid pasto
thanks to jmcneill for finding the problem
 1.2 15-Feb-2007  macallan branches: 1.2.2; 1.2.4; 1.2.8; 1.2.10;
- don't use IPL_HIGH
- attach batteries when present
- some cleanup
 1.1 17-Jan-2007  macallan branches: 1.1.2;
new drivers for pmu and cuda
 1.1.2.2 01-Feb-2007  ad Sync with head.
 1.1.2.1 17-Jan-2007  ad file pmuvar.h was added on branch newlock2 on 2007-02-01 08:48:08 +0000
 1.2.10.1 11-Jul-2007  mjf Sync with head.
 1.2.8.3 20-Aug-2007  ad Sync with HEAD.
 1.2.8.2 27-May-2007  ad Sync with head.
 1.2.8.1 10-Apr-2007  ad Sync with head.
 1.2.4.3 03-Sep-2007  yamt sync with head.
 1.2.4.2 26-Feb-2007  yamt sync with head.
 1.2.4.1 15-Feb-2007  yamt file pmuvar.h was added on branch yamt-lazymbuf on 2007-02-26 09:07:21 +0000
 1.2.2.2 17-May-2007  yamt sync with head.
 1.2.2.1 15-Apr-2007  yamt sync with head.
 1.3.4.4 03-Oct-2007  garbled Sync with HEAD
 1.3.4.3 02-Aug-2007  macallan sync with HEAD
 1.3.4.2 22-May-2007  matt Update to HEAD.
 1.3.4.1 09-May-2007  macallan sync with HEAD
 1.4.8.1 09-Aug-2007  jmcneill Sync with HEAD.
 1.4.4.1 15-Aug-2007  skrll Sync with HEAD.
 1.5.2.1 06-Nov-2007  matt sync with HEAD
 1.6.20.1 16-May-2008  yamt sync with head.
 1.6.18.1 18-May-2008  yamt sync with head.
 1.6.16.1 02-Jun-2008  mjf Sync with HEAD.
 1.7.22.1 05-Mar-2011  rmind sync with head
 1.8.36.1 09-Jul-2016  skrll Sync with HEAD
 1.8.18.1 03-Dec-2017  jdolecek update from HEAD
 1.9.28.1 20-Apr-2020  bouyer Sync with HEAD
 1.9 17-Sep-2025  thorpej Don't get the OF phandle from i2c_attach_args::ia_cookie; get it from
self's devhandle.
 1.8 18-Jun-2021  macallan branches: 1.8.6;
do ii2 locking dance in psoc_dump()
 1.7 18-Jun-2021  macallan use opt_psoc.h, suppress some debug output in !PSOC_DEBUG
 1.6 27-Jan-2021  thorpej branches: 1.6.4;
Use DEVICE_COMPAT_EOL.
 1.5 25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.4 17-Jan-2021  thorpej Use designated initializers and a consistent termination style in
compat_data[].
 1.3 23-Nov-2019  macallan branches: 1.3.8; 1.3.10;
don't invalidate sensors every time we fail to read fan speeds
 1.2 22-Nov-2019  macallan report fan speeds
disclaimer:
this is guesswork obtained from watching temperatures, listening to fan noise
and staring at register dumps. Use with caution.
 1.1 01-Nov-2019  macallan the beginning of a driver for the 'Psoc' fan controller found in my 1GHz
TiBook. So far it does:
- initialize the fan controller via OF
- report temperatures to envsys
there is no documentation, only guesswork from looking at OF methods

With this my TiBook doesn't seem to overheat anymore.
 1.3.10.1 03-Apr-2021  thorpej Sync with HEAD.
 1.3.8.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.3.8.1 23-Nov-2019  martin file psoc.c was added on branch phil-wifi on 2020-04-13 08:03:58 +0000
 1.6.4.2 01-Aug-2021  thorpej Sync with HEAD.
 1.6.4.1 09-May-2021  thorpej ia->ia_cookie -> devhandle_to_of(device_handle(self))
 1.8.6.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.14 01-Nov-2012  macallan - apply limits consistently
- remove suspect pointer fudgery when interpreting PMU battery data
now if we had any idea what units these data are in...
 1.13 31-Oct-2012  macallan implement limits and support event monitoring
now emergency shutdown on low battery works
 1.12 18-Sep-2012  macallan fix typo
 1.11 06-Sep-2012  macallan branches: 1.11.2;
- make the charge state sensor actually do something
- work around a bug in envsys which expects a valid value for sensors with
states that have text descriptions even if the sensor is invalid
 1.10 06-Sep-2012  macallan only register a PMU callback when we're actually monitoring and reporting
AC power
fixes spontaneous power down with two smartbat instances present
 1.9 05-Sep-2012  macallan split the envsys sensors into two devices - one SME_CLASS_ACADAPTER and one
SME_CLASS_BATTERY, register the former only on unit 0 so we don't end up
with two of them on powerbooks that have two battery slots. Now userland has
a fighting chance to find the AC status.
TODO: make the battery sensors look more like acpibat's
 1.8 26-Jul-2011  macallan branches: 1.8.2;
finish device_t-ification
 1.7 10-Jul-2011  pgoyette Initialize sensor state. (Missed the commit for this in my last
roto-till.)
 1.6 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.5 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.4 14-Sep-2010  macallan branches: 1.4.6;
only mark battery status sensors valid if the battery is actually present
 1.3 12-Aug-2008  macallan branches: 1.3.14; 1.3.16;
actually implement smart battery support
From Magnus Henoch.
This needs more testing, especially on older PowerBooks which may have more thanone battery.
 1.2 29-Apr-2008  martin branches: 1.2.2; 1.2.6;
Convert to new 2 clause license
 1.1 25-Mar-2007  macallan branches: 1.1.2; 1.1.6; 1.1.10; 1.1.22; 1.1.42; 1.1.44; 1.1.46;
skeleton smart battery driver. Doesn't do much yet.
 1.1.46.3 09-Oct-2010  yamt sync with head
 1.1.46.2 04-May-2009  yamt sync with head.
 1.1.46.1 16-May-2008  yamt sync with head.
 1.1.44.1 18-May-2008  yamt sync with head.
 1.1.42.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.42.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.22.2 03-Sep-2007  yamt sync with head.
 1.1.22.1 25-Mar-2007  yamt file smartbat.c was added on branch yamt-lazymbuf on 2007-09-03 14:27:37 +0000
 1.1.10.2 11-Jul-2007  mjf Sync with head.
 1.1.10.1 25-Mar-2007  mjf file smartbat.c was added on branch mjf-ufs-trans on 2007-07-11 20:00:40 +0000
 1.1.6.2 15-Apr-2007  yamt sync with head.
 1.1.6.1 25-Mar-2007  yamt file smartbat.c was added on branch yamt-idlelwp on 2007-04-15 16:02:50 +0000
 1.1.2.2 10-Apr-2007  ad Sync with head.
 1.1.2.1 25-Mar-2007  ad file smartbat.c was added on branch vmlocking on 2007-04-10 13:22:43 +0000
 1.2.6.1 19-Oct-2008  haad Sync with HEAD.
 1.2.2.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.3.16.1 05-Mar-2011  rmind sync with head
 1.3.14.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.4.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.8.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.8.2.1 30-Oct-2012  yamt sync with head
 1.11.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.17 07-Sep-2025  thorpej Change todr_chip_handle::cookie -> todr_chip_handle::todr_dev, and
make it a device_t. Upcoming functional changes will require the
device_t associated with a TODR device.

Change todr_chip_handle::bus_cookie -> todr_chip_handle::todr_devaux.
Nothing was using the old field, but I decided to keep it around just
in cause something needs it in the future.

And with these largely mechanical yet semantically meaningful changes,
thus spake the Oracle: "Welcome to NetBSD 11.99.2."
 1.16 22-Jan-2022  thorpej Change the devhandle_from_*() functions to also take a "super handle",
from which the newly created handle will inherit it's implementation.
The root implementation for a new handle type is used if an invalid
"super handle" is passed.
 1.15 03-Sep-2021  macallan switch smu to common fan control code
 1.14 07-Aug-2021  thorpej branches: 1.14.2;
Merge thorpej-cfargs2.
 1.13 24-Apr-2021  thorpej branches: 1.13.2; 1.13.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.12 09-Mar-2021  macallan branches: 1.12.2;
add support for the CPU temperature sensor found in iMac G5s
 1.11 05-Mar-2021  rin Convert to intr_establish_xname().
 1.10 25-Feb-2021  macallan deal with node name inconsistencies between PowerMac10,x and 8,x
Now we find fans and iic devices on iMac G5
 1.9 04-Jul-2020  rin branches: 1.9.2;
- Adjust location of \n in attach message.
- Convert to aprint_*(9).
 1.8 22-Dec-2019  thorpej Cleanup i2c bus acquire / release, centralizing all of the logic into
iic_acquire_bus() / iic_release_bus(). "acquire" and "release" hooks
no longer need to be provided by back-end controller drivers (only if
they need special handling, e.g. powering on the i2c controller).
This results in the removal of a bunch of rendundant code from each
back-end controller driver.

Assert that we are not in hard interrupt context in iic_acquire_bus(),
iic_exec(), and iic_release_bus().
 1.7 10-Nov-2019  chs 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.6 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.5 20-Apr-2018  macallan branches: 1.5.2;
overhaul SMU i2c handling:
- get rid of the special smuiicbus, use generic i2cbus
- use shifted i2c addresses like everyone else
- use direct config
with this generic i2c drivers should work on the smu's i2c bus.
 1.4 09-Mar-2018  sevan Initialise ret to avoid returning uninitialised value if the if statement is
false. Found when building the POWERMAC_G5 kernel with clang.
 1.3 01-Oct-2017  macallan branches: 1.3.2; 1.3.4;
we support the drive bay sensor now
 1.2 29-Sep-2017  macallan provide crude but working fan control based on sensor readings
 1.1 06-Jun-2017  macallan branches: 1.1.4;
SMU support, from Phileas Fogg
 1.1.4.2 28-Aug-2017  skrll Sync with HEAD
 1.1.4.1 06-Jun-2017  skrll file smu.c was added on branch nick-nhusb on 2017-08-28 17:51:44 +0000
 1.3.4.3 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.3.4.2 22-Apr-2018  pgoyette Sync with HEAD
 1.3.4.1 15-Mar-2018  pgoyette Synch with HEAD
 1.3.2.2 03-Dec-2017  jdolecek update from HEAD
 1.3.2.1 01-Oct-2017  jdolecek file smu.c was added on branch tls-maxphys on 2017-12-03 11:36:25 +0000
 1.5.2.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.5.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.5.2.1 10-Jun-2019  christos Sync with HEAD
 1.9.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.12.2.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.12.2.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.13.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.13.2.3 14-May-2021  thorpej Move the bus/channel number for multi-channel / mux controllers out of
i2cbus_attach_args and stash it in the i2c_tag_t instead. This makes it
accessible to platform device tree code when enumerating devices.
 1.13.2.2 14-May-2021  thorpej Deal with quirks / differences in OpenFirmware implementations'
interpreation of the i2c "reg" property by embedding knowledge
of those quicks directly, rather than forcing lots of drivers
to provide their own devhandle implementations. We default to
assuming the Device Tree bindings, and tweak based on platform-
specific #ifdefs.

Start with __HAVE_OPENFIRMWARE_VARIANT_AAPL (all i2c "reg" properties
encode an address that's shifted left 1 bit to account for the R/W bit
that appears on the wire).
 1.13.2.1 09-May-2021  thorpej Adapt the smu driver to the new i2c device enumeration method. While
here, collapse the "smuiic" driver into the base "smu" driver; it was
superfluous given how the rest of the "smu" driver is structured.
 1.14.2.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.14 21-Sep-2025  thorpej It's no longer necessary to scan for sensor descriptive information
in the macppc i2c controller drivers; device_register() does it for
us.
 1.13 18-Sep-2025  thorpej In the "i2c-child-devices" array, don't pass in a "cookie" and "cookietype".
Instead, just create the appropriate devhandle and pass that along as a
data object.
 1.12 15-Sep-2025  thorpej Encapsulate what's needed to attach an I2C bus into a iicbus_attach()
inline.
 1.11 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.10 09-Aug-2021  thorpej Fix CVS eff-up.
 1.9 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.8 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.7 24-Apr-2021  thorpej branches: 1.7.2; 1.7.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.6 25-Feb-2021  macallan branches: 1.6.2;
more node name adjustments
also, pass sensor names if we can find them
now we find and currectly use the hard drive temperature sensor on my iMac G5
 1.5 02-Jul-2020  macallan branches: 1.5.2;
add $NetBSD:
 1.4 02-Jul-2020  macallan proplib API catchup
 1.3 20-Apr-2018  macallan overhaul SMU i2c handling:
- get rid of the special smuiicbus, use generic i2cbus
- use shifted i2c addresses like everyone else
- use direct config
with this generic i2c drivers should work on the smu's i2c bus.
 1.2 07-Jul-2017  macallan branches: 1.2.4; 1.2.6; 1.2.8;
tidy up output by moving linebreak to before we attach children
 1.1 06-Jun-2017  macallan SMU support, from Phileas Fogg
 1.2.8.1 22-Apr-2018  pgoyette Sync with HEAD
 1.2.6.2 03-Dec-2017  jdolecek update from HEAD
 1.2.6.1 07-Jul-2017  jdolecek file smuiic.c was added on branch tls-maxphys on 2017-12-03 11:36:25 +0000
 1.2.4.2 28-Aug-2017  skrll Sync with HEAD
 1.2.4.1 07-Jul-2017  skrll file smuiic.c was added on branch nick-nhusb on 2017-08-28 17:51:44 +0000
 1.5.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.6.2.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.7.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.7.2.1 09-May-2021  thorpej Adapt the smu driver to the new i2c device enumeration method. While
here, collapse the "smuiic" driver into the base "smu" driver; it was
superfluous given how the rest of the "smu" driver is structured.
 1.3 09-Aug-2021  thorpej Fix CVS eff-up.
 1.2 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.1 06-Jun-2017  macallan branches: 1.1.4; 1.1.6; 1.1.26;
SMU support, from Phileas Fogg
 1.1.26.1 09-May-2021  thorpej Adapt the smu driver to the new i2c device enumeration method. While
here, collapse the "smuiic" driver into the base "smu" driver; it was
superfluous given how the rest of the "smu" driver is structured.
 1.1.6.2 03-Dec-2017  jdolecek update from HEAD
 1.1.6.1 06-Jun-2017  jdolecek file smuiicvar.h was added on branch tls-maxphys on 2017-12-03 11:36:25 +0000
 1.1.4.2 28-Aug-2017  skrll Sync with HEAD
 1.1.4.1 06-Jun-2017  skrll file smuiicvar.h was added on branch nick-nhusb on 2017-08-28 17:51:44 +0000
 1.11 17-Sep-2025  thorpej Don't get the OF phandle from i2c_attach_args::ia_cookie; get it from
self's devhandle.
 1.10 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.9 27-Jan-2021  thorpej branches: 1.9.4; 1.9.14;
Use DEVICE_COMPAT_EOL.
 1.8 25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.7 17-Jan-2021  thorpej Use designated initializers and a consistent termination style in
compat_data[].
 1.6 26-Jun-2018  thorpej branches: 1.6.14;
In my quest to make device_compatible_entry (and associated goo)
super-general, it turns out I also made it a little to cumbersome
to use (if my tired fingers are any indication). So, this is a
course-correction -- one string per entry (like of_compat_data,
which it will soon replace), and remove the over-verbose macros.
 1.5 18-Jun-2018  thorpej - Rename iic_compat_match() to iic_compatible_match() and change it
to use the new device_compatible_match() routine. A pointer to
the matching device_compatible_entry is returned if a match is
found.
- Adjust iic_use_direct_match() accordingly.
- i2c drivers now provide device_compatible_entry tables when performing
direct-config matching.
- In the dsrtc driver, take advantage of this new capability to greatly
simplify model selection.

(I'm coming for you next, of_compat_data...)
 1.4 16-Jun-2018  thorpej More cleanup to i2c autoconfiguration:

- Get all of the drivers onto the new match quality constants.
- Introduce a new helper function, iic_use_direct_match(), that has
all of the logic for direct-config matching. If it returns true,
the driver returns the match result (which may be 0). If it returns
false, the driver does indirect-config matching.
- iic_compat_match() now returns a weighted match quality; matches to
lower-indexed "compatible" device property are more-specific matches,
and return a better match quality accordingly.
 1.3 20-Apr-2018  macallan overhaul SMU i2c handling:
- get rid of the special smuiicbus, use generic i2cbus
- use shifted i2c addresses like everyone else
- use direct config
with this generic i2c drivers should work on the smu's i2c bus.
 1.2 05-Oct-2017  macallan branches: 1.2.2; 1.2.4;
do what linux and freebsd do here:
- ignore the raw 'adc' sensors
- update all sensors in a single transaction instead of one by one
now we're getting relatively sane readings
 1.1 06-Jun-2017  macallan branches: 1.1.4;
SMU support, from Phileas Fogg
 1.1.4.2 28-Aug-2017  skrll Sync with HEAD
 1.1.4.1 06-Jun-2017  skrll file smusat.c was added on branch nick-nhusb on 2017-08-28 17:51:44 +0000
 1.2.4.3 28-Jul-2018  pgoyette Sync with HEAD
 1.2.4.2 25-Jun-2018  pgoyette Sync with HEAD
 1.2.4.1 22-Apr-2018  pgoyette Sync with HEAD
 1.2.2.2 03-Dec-2017  jdolecek update from HEAD
 1.2.2.1 05-Oct-2017  jdolecek file smusat.c was added on branch tls-maxphys on 2017-12-03 11:36:25 +0000
 1.6.14.1 03-Apr-2021  thorpej Sync with HEAD.
 1.9.14.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.9.4.2 09-May-2021  thorpej ia->ia_cookie -> devhandle_to_of(device_handle(self))
 1.9.4.1 09-May-2021  thorpej No need to include smuiicvar.h.
 1.1 06-Jun-2017  macallan branches: 1.1.4; 1.1.6;
SMU support, from Phileas Fogg
 1.1.6.2 03-Dec-2017  jdolecek update from HEAD
 1.1.6.1 06-Jun-2017  jdolecek file smuvar.h was added on branch tls-maxphys on 2017-12-03 11:36:25 +0000
 1.1.4.2 28-Aug-2017  skrll Sync with HEAD
 1.1.4.1 06-Jun-2017  skrll file smuvar.h was added on branch nick-nhusb on 2017-08-28 17:51:44 +0000
 1.70 08-Sep-2025  macallan more registers, add include guard
 1.69 08-Sep-2025  macallan move register definitions into the headers they belong
 1.68 20-Aug-2025  macallan move GPIO definitions to obiovar.h
 1.67 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.66 11-Dec-2023  mlelstv Output is always 16bit, the internal audio data type may differ.
 1.65 02-Jun-2022  macallan check platform-do-*-mute properties to find out the resp. GPIO's polarity
now this works properly on pmac7,3
 1.64 01-Jun-2022  martin Revert previous, the mask is intented to be like sc_output_mask, a bitmask
of active ports.
 1.63 01-Jun-2022  martin In SNAPPER_OUTPUT_SELECT the "mask" is a bitmap of muted outputs, not
active outputs.
 1.62 01-Jun-2022  martin Recognize the OF labels used for line output and headphone output on a
G5 powermac 7,3.
 1.61 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.60 02-Jul-2021  jmcneill branches: 1.60.2;
port-macppc/56289: kernel spinout on macppc when runing ATF tests with LOCKDEBUG

Move call to snapper_set_rate from trigger_output to commit_settings,
since the intr lock is not held when calling the latter.
 1.59 26-Apr-2021  thorpej snapper carries multiple interface attributes, so be explicit about
"onewirebus" when attaching to it.
 1.58 24-Apr-2021  thorpej branches: 1.58.2;
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.57 11-Mar-2021  macallan branches: 1.57.2;
add basic support for iMac G5 audio:
- match AOAShasta
- deal with headphone gpios labeled as lineout in OF
- set sc_mode to SNAPPER_IS_PCM3052 - OF makes it look like an unlabeled
TAS3004
TODO:
- actually support pcm3052 instead of treating it like a sw codec
 1.56 05-Mar-2021  rin Convert to intr_establish_xname().
 1.55 08-Aug-2020  macallan branches: 1.55.2;
add support for the onewire bus found in some macs, namely Quicksilver.
This can be used to read the EEPROM content from Apple Pro speakers, or to
hook up other onewire devices.
 1.54 11-Apr-2020  macallan don't try to read a 32bit property into a uint8_t.
Now headphone detection works properly on machines which have the gpio's
polarity reversed, like Quicksilver and TiBook.
 1.53 20-Sep-2019  macallan branches: 1.53.6;
various minor fixes and updates:
- add (very) basic ONYX support. Treat as 16bit codec with software volume
control. Makes basic audio work on PCIe G5
- correctly detect TAS3001 without 'compatible' property, now this works on
Quicksilver
- mute line input on TAS3001 - it's unconnected on Quicksilver and causes noise
- make more of an effort to match codecs to i2sbus instances, needed on G5 and
some other models with software 'modems'
 1.52 08-Jun-2019  isaki Clean get_props().
- Make get_props() return AUDIO_PROP_{PLAYBACK,CAPTURE} properly.
This eliminates need for audio.c to take care of such (old)
drivers which don't return both of PLAYBACK and CAPTURE.
- All get_props() doesn't need to return AUDIO_PROP_MMAP.
It is handled in the audio layer now.
 1.51 16-May-2019  macallan switch the default input to line in, to avoid feedback noise on laptops
should probably just mute the input, I need to read the datasheet again...
 1.50 08-May-2019  isaki Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.49 16-Mar-2019  isaki branches: 1.49.2;
Use C99 style struct initializer to audio_hw_if.
 1.48 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.47 04-May-2018  macallan branches: 1.47.2;
use obio_space_map() to map DMA registers, now this works on both G5 and
32bit hardware
 1.46 29-Mar-2018  macallan explicitly enable the i2s part in the keylargo FCR
now this works on my PCI-X G5
 1.45 29-Mar-2018  macallan deal with PowerMac7,* mac-io/i2s/sound reg properties
now we map the right registers on G5 and get DMA interrupts. Still no sound
but - well - progress
 1.44 24-Mar-2018  macallan don't poke GPIOs directly, use obio_*() access functions, now this
has a chance of working on G5 where we can't just BAT-map everything with
paddr == busaddr.
Doesn't play audio yet but things like headphone detection work.
 1.43 29-Jan-2018  macallan branches: 1.43.2;
remove some leftover references to ki2c in comments
no functional change
 1.42 27-Jan-2018  sevan Fix issue with audio being downpitched, thanks to <nat>

"it seems that snapper_init should be called before audio_attach_mi, as snapper
init is setting the rate to 44100 after the hardware format has been configured
by audio_attach_mi.

audio_attach_mi should be the last thing called during an attach of an audio
device so the audio device is ready to be configured when audio_attach_mi is
called."

Resolves PR port-macppc/52949
 1.41 31-Mar-2017  msaitoh branches: 1.41.6;
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.40 15-Jul-2016  macallan branches: 1.40.2;
adjust to dbdma changes
 1.39 14-Mar-2014  mrg branches: 1.39.4; 1.39.6; 1.39.10;
remove various set-but-unused variables.
 1.38 24-Nov-2011  mrg branches: 1.38.4; 1.38.8; 1.38.12;
put back IPL_AUDIO and splaudio(), at the request of rmind. they are
aliases and now we can easily revert audio to IPL_VM if necessary,
without having to revert the whole branch.
 1.37 23-Nov-2011  jmcneill Merge jmcneill-audiomp3 branch, which is derived from ad-audiomp2. From
the original ad-audiomp branch notes:

Add MP locking to the audio drivers.

Making the audio drivers MP safe is necessary before efforts
can be made to make the VM system MP safe.

The are two locks per device instance, an ISR lock and
a character device lock. The ISR lock replaces calls to
splaudio()/splx(), and will be held across calls to device
methods which were called at splaudio() before (e.g.
trigger_output). The character device lock is held across
calls to nearly all of the methods, excluding some only
used for initialization, e.g. get_locks.

Welcome to 5.99.57.
 1.36 12-Nov-2010  phx branches: 1.36.8; 1.36.10;
Get the dma registers from the soundbus property. This should work with all
snapper-compatible hardware.
Tested on PowerBook G4, MacMini and iBook G4. Failed on the PowerBook before.
 1.35 16-Oct-2010  phx Find all GPIOs in OF also on newer PowerBooks.
Do not use a GPIO or establish an interrupt when it was not found.
To be done: We should use bus_space(9) for reading/writing GPIOs.
 1.34 09-Sep-2010  macallan get rid of custom PMF event handlers, instead do what the upper layer expects
so volume control via PMF still works
 1.33 05-Nov-2009  dyoung branches: 1.33.2; 1.33.4;
In awacs(4) and snapper(4), use deviter(9) instead of accessing
alldevs directly.

In pbms(4), delete some unused debugging macros, expand USB
compatibility macros, and add a child-detachment routine. Simplify
pbms(4) deactivation and detachment.

These changes are compile-tested, only.
 1.32 18-Mar-2009  cegger bzero -> memset
 1.31 16-Dec-2008  christos branches: 1.31.2;
replace bitmask_snprintf(9) with snprintb(3)
 1.30 26-Sep-2008  macallan branches: 1.30.2;
use access functions to mess with obio's registers
 1.29 26-Sep-2008  macallan use min(255, blah) to cap volume instead of masking the upper bits out
 1.28 16-May-2008  macallan branches: 1.28.4;
sprinkle static
 1.27 15-May-2008  macallan listen to PMF volume control events
With this volume vontrol via keyboard works on my iBook G4.
 1.26 15-May-2008  macallan struct device -> device_t
 1.25 07-Nov-2007  garbled branches: 1.25.14; 1.25.16; 1.25.18; 1.25.20;
Convert macppc to shared ofw_autoconf.c. Compile tested only.
 1.24 18-Oct-2007  macallan branches: 1.24.2;
cleanup, various fixes and TAS3001 / Tumbler support
from Marco Trillo in PR37076
 1.23 17-Oct-2007  garbled 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.22 27-Sep-2007  dogcow branches: 1.22.2;
struct cfattach -> CFATTACH_DECL; compiles again.
 1.21 17-Sep-2007  aymeric branches: 1.21.2;
add support for the "tumbler" as found at least on iBook G3/600.
quick OK macallan@
 1.20 04-Apr-2007  jmcneill branches: 1.20.4; 1.20.12; 1.20.14;
Simplify sw volume control, attach to AOAK2 as well, make mono work as
well as stereo, and print a friendlier message when we don't find a
hardware mixer.
 1.19 03-Apr-2007  jmcneill In the AOAKeylargo case, there is no hardware volume control. Instead,
implement volume control in software via audio filter framework.

XXX: audio filter framework doesn't let me pass parameters from the hw
softc to the filter, so the volume variables are globals for now.
 1.18 03-Apr-2007  jmcneill Match AOAKeylargo, and don't make finding deq a requirement. Sound now
comes out of my last gen G4 Mac Mini, minus mixer controls. ok macallan@
 1.17 25-Mar-2007  macallan fix typo
 1.16 28-Feb-2007  thorpej branches: 1.16.2; 1.16.4; 1.16.6;
TRUE -> true, FALSE -> false
 1.15 17-Dec-2006  macallan branches: 1.15.2;
don't pretend to support 8kHz since the chip really doesn't
noticed by Marco Trillo
 1.14 11-Dec-2006  macallan actually change the sample rate when asked to.
Fix provided by Marco Trillo in PR35204
While there also enable 24bit I/O.
 1.13 24-Sep-2006  jmcneill branches: 1.13.2;
Don't use // for comments.
 1.12 23-Aug-2006  macallan branches: 1.12.2; 1.12.4;
use gain table for master volume as well
 1.11 23-Aug-2006  macallan fix some KNF nits
 1.10 11-Aug-2006  macallan Add audio input support. From Magnus Henoch, fixes PR 32664
 1.9 23-Feb-2006  thorpej branches: 1.9.2;
Use device_parent().
 1.8 24-Dec-2005  perry branches: 1.8.2; 1.8.4; 1.8.6;
bare asm -> __asm
 1.7 11-Dec-2005  christos merge ktrace-lwp.
 1.6 10-Aug-2005  macallan - don't call ki2c private functions anymore, use iic_exec() to be a good i2c citizen
- use the deq driver to find the mixer device
- add controls for bass and treble
 1.5 25-Jan-2005  briggs branches: 1.5.6;
Ensure i/o commands are allocated on 16-byte boundary by allocating 15
extra bytes and adjusting array starts.
Issue pointed out on port-macppc by Michael Lorenz.

Also remove extra print of the device name on attach().
 1.4 15-Jan-2005  kent branches: 1.4.2; 1.4.4;
ansify and KNF
 1.3 10-Jan-2005  kent merge kent-audio1 branch, which introduces audio filter pipeline to the MI
audio framework


Summary of changes:

* struct audio_params
- remove sw_code, factor, factor_denom, hw_sample_rate,
hw_encoding ,hw_precision, and hw_channels. Conversion information
is conveyed by stream_filter_list_t.
- change the type of sample_rate: u_long -> u_int
- add `validbits,' which represents the valid data size in
precision bits. It is required in order to distinguish 24/32bit
from 24/24bit or 32/32bit.

* audio_hw_if
- add two parameters to set_params()
stream_filter_list_t *pfil, stream_filter_list *rfil
A HW driver should set filter recipes for requested formats
- constify audio_params parameters of trigger_output() and
trigger_input(). They represent audio formats for the hardware.
- make open() and close() optional
- add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
to round_blocksize()

* sw_code is replaced with stream_filter_t.
stream_filer_t converts audio data in an input buffer and writes
into another output buffer unlike sw_code, which converts data in
single buffer.
converters in dev/auconv.c, dev/mulaw.c, dev/aurateconv.c,
dev/tc/bba.c, dev/ic/msm6258.c, and arch/arm/iomd/vidcaudio.c are
reimplemented as stream_filter_t

* MI audio
- audiosetinfo() builds filter pipelines from stream_filter_list_t
filled by audio_hw_if::set_params()
- audiosetinfo() returns with EINVAL if mmapped and set_params()
requests filters
- audio_write(), audio_pint(), and audio_rint() invoke a filter
pipeline.
- ioctl() for FIONREAD, AUDIO_WSEEK, AUDIO_GETIOFFS,
AUDIO_GETOOFFS, and audio_prinfo::{seek,samples} for
AUDIO_GETINFO handle values for a buffer nearest to userland.

* add `struct device *' parameter to ac97_attach()

* all of audio HW drivers follow audio_hw_if and ac97 changes
 1.2 29-Oct-2004  yamt branches: 1.2.2;
constify audio_hw_if, midi_hw_if, and radio_hw_if.
 1.1 27-Dec-2003  grant branches: 1.1.4;
add support for the Keywest I2C and snapper audio device, as found on
some iBook and PowerBook models.

this driver was written by Tsubai Masanari and further hacked on by
Jared D. McNeill to work on his iBook.

the driver is limited (master volume control only, and I haven't
tested recording) but has been functioning perfectly on my PowerBook
g4 DVI (ivory) for some time.

ok'd by matt.
 1.1.4.8 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.4.7 04-Feb-2005  skrll Sync with HEAD.
 1.1.4.6 17-Jan-2005  skrll Sync with HEAD.
 1.1.4.5 02-Nov-2004  skrll Sync with HEAD.
 1.1.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 27-Dec-2003  skrll file snapper.c was added on branch ktrace-lwp on 2004-08-03 10:37:21 +0000
 1.2.2.2 09-Jan-2005  kent audio_hw_if change
* make open() and close() optional
* add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
to round_blocksize()
 1.2.2.1 03-Jan-2005  kent adopt the filter pipeline framework
 1.4.4.1 12-Feb-2005  yamt sync with head.
 1.4.2.1 29-Apr-2005  kent sync with -current
 1.5.6.5 15-Nov-2007  yamt sync with head.
 1.5.6.4 27-Oct-2007  yamt sync with head.
 1.5.6.3 03-Sep-2007  yamt sync with head.
 1.5.6.2 30-Dec-2006  yamt sync with head.
 1.5.6.1 21-Jun-2006  yamt sync with head.
 1.8.6.1 22-Apr-2006  simonb Sync with head.
 1.8.4.1 09-Sep-2006  rpaulo sync with head
 1.8.2.1 01-Mar-2006  yamt sync with head.
 1.9.2.1 03-Sep-2006  yamt sync with head.
 1.12.4.2 18-Dec-2006  yamt sync with head.
 1.12.4.1 22-Oct-2006  yamt sync with head
 1.12.2.2 12-Jan-2007  ad Sync with head.
 1.12.2.1 18-Nov-2006  ad Sync with head.
 1.13.2.1 25-Sep-2008  bouyer pullup the following revisions, requested my macallan in ticket 616:
sys/arch/macppc/dev/snapper.c 1.14-1.21
- proper support for 24bit audio on TAS3004 / snapper codecs
- fix sample rate setup bugs ( otherwise the chip would always stay in
44.1kHz )
- add support for the codecs found in G4 Mac Minis ( AOAKeylargo and
AOAK2 ), which don't have hardware volume control
- add support for 'tumbler' codecs found in some iBook G3 models
 1.15.2.2 15-Apr-2007  yamt sync with head.
 1.15.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.16.6.1 29-Mar-2007  reinoud Pullup to -current
 1.16.4.1 11-Jul-2007  mjf Sync with head.
 1.16.2.4 03-Dec-2007  ad Sync with HEAD.
 1.16.2.3 23-Oct-2007  ad Sync with head.
 1.16.2.2 09-Oct-2007  ad Sync with head.
 1.16.2.1 10-Apr-2007  ad Sync with head.
 1.20.14.2 08-Nov-2007  matt sync with -HEAD
 1.20.14.1 06-Nov-2007  matt sync with HEAD
 1.20.12.3 11-Nov-2007  joerg Sync with HEAD.
 1.20.12.2 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.20.12.1 02-Oct-2007  joerg Sync with HEAD.
 1.20.4.5 03-Oct-2007  garbled Sync with HEAD
 1.20.4.4 27-Sep-2007  macallan use CFATTACH_DECL()
 1.20.4.3 19-Sep-2007  macallan sync with HEAD
 1.20.4.2 08-Aug-2007  macallan don't bus_space_map(PAGE_SIZE) - use the actual length OF tells us instead
We need this since the new, shared bus_space_* stuff actually keeps track of
what ranges are mapped
 1.20.4.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.21.2.2 18-Oct-2007  yamt sync with head.
 1.21.2.1 06-Oct-2007  yamt sync with head.
 1.22.2.2 13-Nov-2007  bouyer Sync with HEAD
 1.22.2.1 25-Oct-2007  bouyer Sync with HEAD.
 1.24.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.25.20.2 10-Oct-2008  skrll Sync with HEAD.
 1.25.20.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.25.18.3 09-Oct-2010  yamt sync with head
 1.25.18.2 11-Mar-2010  yamt sync with head
 1.25.18.1 04-May-2009  yamt sync with head.
 1.25.16.1 18-May-2008  yamt sync with head.
 1.25.14.3 17-Jan-2009  mjf Sync with HEAD.
 1.25.14.2 28-Sep-2008  mjf Sync with HEAD.
 1.25.14.1 02-Jun-2008  mjf Sync with HEAD.
 1.28.4.1 19-Oct-2008  haad Sync with HEAD.
 1.30.2.2 28-Apr-2009  skrll Sync with HEAD.
 1.30.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.31.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.33.4.1 05-Mar-2011  rmind sync with head
 1.33.2.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.36.10.2 22-Nov-2011  jmcneill get rid of unused 'powerstate' callback in audio_hw_if
 1.36.10.1 22-Nov-2011  macallan convert snapper
code from mrg, tested on my iBook G4
 1.36.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.36.8.1 17-Apr-2012  yamt sync with head
 1.38.12.1 18-May-2014  rmind sync with head
 1.38.8.2 03-Dec-2017  jdolecek update from HEAD
 1.38.8.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.38.4.1 13-Mar-2018  snj Pull up following revision(s) (requested by sevan in ticket #1522):
sys/arch/macppc/dev/snapper.c: 1.42
Fix issue with audio being downpitched, thanks to <nat>
"it seems that snapper_init should be called before audio_attach_mi, as
snapper
init is setting the rate to 44100 after the hardware format has been
configured
by audio_attach_mi.
audio_attach_mi should be the last thing called during an attach of an audio
device so the audio device is ready to be configured when audio_attach_mi is
called."
Resolves PR port-macppc/52949
 1.39.10.2 26-Apr-2017  pgoyette Sync with HEAD
 1.39.10.1 26-Jul-2016  pgoyette Sync with HEAD
 1.39.6.2 28-Aug-2017  skrll Sync with HEAD
 1.39.6.1 05-Oct-2016  skrll Sync with HEAD
 1.39.4.1 19-Feb-2018  snj Pull up following revision(s) (requested by sevan in ticket #1559):
sys/arch/macppc/dev/snapper.c: 1.42
Fix issue with audio being downpitched, thanks to <nat>
"it seems that snapper_init should be called before audio_attach_mi, as
snapper
init is setting the rate to 44100 after the hardware format has been
configured
by audio_attach_mi.
audio_attach_mi should be the last thing called during an attach of an audio
device so the audio device is ready to be configured when audio_attach_mi is
called."
Resolves PR port-macppc/52949
 1.40.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.41.6.1 04-Feb-2018  martin Pull up following revision(s) (requested by sevan in ticket #520):
sys/arch/macppc/dev/snapper.c: revision 1.42
Fix issue with audio being downpitched, thanks to <nat>
"it seems that snapper_init should be called before audio_attach_mi, as
snapper
init is setting the rate to 44100 after the hardware format has been
configured
by audio_attach_mi.
audio_attach_mi should be the last thing called during an attach of an audio
device so the audio device is ready to be configured when audio_attach_mi is
called."
Resolves PR port-macppc/52949
 1.43.2.3 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.43.2.2 21-May-2018  pgoyette Sync with HEAD
 1.43.2.1 30-Mar-2018  pgoyette Resolve conflicts between branch and HEAD
 1.47.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.47.2.1 10-Jun-2019  christos Sync with HEAD
 1.49.2.3 04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.49.2.2 22-Apr-2019  isaki Adapt to audio2.
- New audio filter can access softc so it's simple.
- Clear rval of fixphase on halt.
 1.49.2.1 21-Apr-2019  isaki Use C99 style struct initializer to audio_format.
 1.53.6.1 20-Apr-2020  bouyer Sync with HEAD
 1.55.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.57.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.58.2.2 01-Aug-2021  thorpej Sync with HEAD.
 1.58.2.1 13-May-2021  thorpej Sync with HEAD.
 1.60.2.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.13 28-Dec-2022  macallan don't complain about mpic and dart not being configured
mpic is handled elsewhere, dart is an iommu we don't use yet
 1.12 22-Jan-2022  thorpej Change the devhandle_from_*() functions to also take a "super handle",
from which the newly created handle will inherit it's implementation.
The root implementation for a new handle type is used if an invalid
"super handle" is passed.
 1.11 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.10 24-Apr-2021  thorpej branches: 1.10.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.9 16-Mar-2018  macallan branches: 1.9.16;
gather per-CPU EEPROM contents if we have them
 1.8 01-Mar-2018  macallan branches: 1.8.2;
match /u3, found in some G5
 1.7 15-Sep-2017  macallan provide a bus_space to child devices
 1.6 26-Oct-2011  macallan branches: 1.6.12;
more device/softc splitting
 1.5 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.4 14-Mar-2009  dsl branches: 1.4.10;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.3 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.2 11-Dec-2005  christos branches: 1.2.18; 1.2.80; 1.2.88; 1.2.94;
merge ktrace-lwp.
 1.1 10-Aug-2005  macallan branches: 1.1.6;
dummy driver to represent the uni-n node in OF and attach its children
 1.1.6.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.6.1 10-Aug-2005  skrll file uni-n.c was added on branch ktrace-lwp on 2005-11-10 13:57:27 +0000
 1.2.94.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.2.88.1 28-Apr-2009  skrll Sync with HEAD.
 1.2.80.1 04-May-2009  yamt sync with head.
 1.2.18.2 21-Jun-2006  yamt sync with head.
 1.2.18.1 11-Dec-2005  yamt file uni-n.c was added on branch yamt-lazymbuf on 2006-06-21 14:53:13 +0000
 1.4.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.6.12.1 03-Dec-2017  jdolecek update from HEAD
 1.8.2.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.9.16.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.9.16.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.10.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.10 04-Oct-2025  thorpej Use device_{get,set}prop_bool() for "is_console".
 1.9 24-Sep-2023  andvar define i variable in for loop.
valkyriefb_attach() doesn't have one defined in the function scope.

fixes VALKYRIEFB_DEBUG enabled build for macppc.
 1.8 16-Feb-2022  riastradh powerpc: Sprinkle "memory" clobbers on eieio and nearby asm blocks.

Otherwise the compiler may reorder these around loads and stores,
which mostly defeats the purpose. `asm volatile' just ensures the
instruction isn't _deleted_; it may still move around.
 1.7 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.6 24-Apr-2021  thorpej branches: 1.6.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.5 16-Feb-2018  macallan branches: 1.5.18;
use _PREFETCHABLE
 1.4 06-Jul-2016  macallan shut up another unused function warning
 1.3 19-Feb-2014  macallan branches: 1.3.6;
- don't read beyond array bounds
- break a bunch of long lines
- remove an outdated comment
 1.2 23-May-2012  macallan branches: 1.2.2; 1.2.4;
cleanup, remove debug goo
 1.1 24-Jan-2012  macallan branches: 1.1.4; 1.1.6;
drivers to support the onboard video circuitry found in for example the
Performa 6360
 1.1.6.4 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.1.6.3 30-Oct-2012  yamt sync with head
 1.1.6.2 17-Apr-2012  yamt sync with head
 1.1.6.1 24-Jan-2012  yamt file valkyriefb.c was added on branch yamt-pagecache on 2012-04-17 00:06:37 +0000
 1.1.4.3 02-Jun-2012  mrg sync to latest -current.
 1.1.4.2 18-Feb-2012  mrg merge to -current.
 1.1.4.1 24-Jan-2012  mrg file valkyriefb.c was added on branch jmcneill-usbmp on 2012-02-18 07:32:35 +0000
 1.2.4.1 18-May-2014  rmind sync with head
 1.2.2.2 03-Dec-2017  jdolecek update from HEAD
 1.2.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.6.1 09-Jul-2016  skrll Sync with HEAD
 1.5.18.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.6.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.5 16-Apr-2020  rin Revert previous for now:
http://mail-index.netbsd.org/source-changes/2020/04/16/msg116278.html

The reasoning turned out to be wrong; __KERNEL_RCSID() in header files
does *not* overwrite RCSID in main source files. The real problem is that
it inserts its RCSID into *every* object files. However, it can be still
useful even if heavily duplicated.
 1.4 16-Apr-2020  rin Stop using __KERNEL_RCSID() in header files; it confuses ident(1) by
overwriting RCSID in main source files.

XXX
The first argument of __KERNEL_RCSID() is neglected for ELF. If we wish
to have RCSID of header files in kernel binary, we need something like
__FBSDID() macro in FreeBSD.
 1.3 16-Feb-2018  macallan branches: 1.3.14;
remove accidential garbage
 1.2 16-Feb-2018  macallan add $NetBSD:
 1.1 24-Jan-2012  macallan branches: 1.1.4; 1.1.6;
drivers to support the onboard video circuitry found in for example the
Performa 6360
 1.1.6.2 17-Apr-2012  yamt sync with head
 1.1.6.1 24-Jan-2012  yamt file valkyriefbreg.h was added on branch yamt-pagecache on 2012-04-17 00:06:37 +0000
 1.1.4.2 18-Feb-2012  mrg merge to -current.
 1.1.4.1 24-Jan-2012  mrg file valkyriefbreg.h was added on branch jmcneill-usbmp on 2012-02-18 07:32:35 +0000
 1.3.14.1 20-Apr-2020  bouyer Sync with HEAD
 1.9 01-Feb-2012  matt Use C89 function prototypes.
 1.8 14-Mar-2009  dsl branches: 1.8.12; 1.8.16;
Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.7 17-Oct-2007  garbled branches: 1.7.20; 1.7.28; 1.7.34;
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.6 17-Jan-2007  macallan branches: 1.6.6; 1.6.14; 1.6.22; 1.6.24; 1.6.26; 1.6.28;
new drivers for pmu and cuda
 1.5 24-Dec-2005  perry branches: 1.5.20;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.4 19-Jun-2001  simonb branches: 1.4.8; 1.4.40;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.3 01-Apr-2001  tsubai Correct vBufA offset. (currenly not used)
 1.2 20-Oct-1998  tsubai branches: 1.2.12; 1.2.24;
Add via-pmu support (only PowerBook 2400c/180 is tested).
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.24.2 21-Jun-2001  nathanw Catch up to -current.
 1.2.24.1 09-Apr-2001  nathanw Catch up with -current.
 1.2.12.1 21-Apr-2001  bouyer Sync with HEAD
 1.4.40.3 27-Oct-2007  yamt sync with head.
 1.4.40.2 26-Feb-2007  yamt sync with head.
 1.4.40.1 21-Jun-2006  yamt sync with head.
 1.4.8.2 19-Jun-2001  simonb Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.4.8.1 19-Jun-2001  simonb file viareg.h was added on branch nathanw_sa on 2001-06-19 12:02:57 +0000
 1.5.20.1 01-Feb-2007  ad Sync with head.
 1.6.28.1 25-Oct-2007  bouyer Sync with HEAD.
 1.6.26.1 18-Oct-2007  yamt sync with head.
 1.6.24.1 06-Nov-2007  matt sync with HEAD
 1.6.22.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.6.14.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.6.6.1 23-Oct-2007  ad Sync with head.
 1.7.34.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.7.28.1 28-Apr-2009  skrll Sync with HEAD.
 1.7.20.1 04-May-2009  yamt sync with head.
 1.8.16.1 18-Feb-2012  mrg merge to -current.
 1.8.12.1 17-Apr-2012  yamt sync with head
 1.4 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.3 16-Jun-2018  thorpej branches: 1.3.18; 1.3.28;
More cleanup to i2c autoconfiguration:

- Get all of the drivers onto the new match quality constants.
- Introduce a new helper function, iic_use_direct_match(), that has
all of the logic for direct-config matching. If it returns true,
the driver returns the match result (which may be 0). If it returns
false, the driver does indirect-config matching.
- iic_compat_match() now returns a weighted match quality; matches to
lower-indexed "compatible" device property are more-specific matches,
and return a better match quality accordingly.
 1.2 22-Sep-2017  macallan branches: 1.2.2;
switch to direct configuration
 1.1 24-Jan-2012  macallan branches: 1.1.4; 1.1.6; 1.1.10;
drivers to support the onboard video circuitry found in for example the
Performa 6360
 1.1.10.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 17-Apr-2012  yamt sync with head
 1.1.6.1 24-Jan-2012  yamt file videopll.c was added on branch yamt-pagecache on 2012-04-17 00:06:37 +0000
 1.1.4.2 18-Feb-2012  mrg merge to -current.
 1.1.4.1 24-Jan-2012  mrg file videopll.c was added on branch jmcneill-usbmp on 2012-02-18 07:32:36 +0000
 1.2.2.1 25-Jun-2018  pgoyette Sync with HEAD
 1.3.28.2 11-Sep-2021  thorpej Remove some useless comments.
 1.3.28.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.3.18.1 08-May-2021  thorpej Children of the "cuda" i2c controller don't appear in the OF device tree,
so we need to supply our own "i2c-enumerate-devices" method.
 1.5 16-Apr-2020  rin Revert previous for now:
http://mail-index.netbsd.org/source-changes/2020/04/16/msg116278.html

The reasoning turned out to be wrong; __KERNEL_RCSID() in header files
does *not* overwrite RCSID in main source files. The real problem is that
it inserts its RCSID into *every* object files. However, it can be still
useful even if heavily duplicated.
 1.4 16-Apr-2020  rin Stop using __KERNEL_RCSID() in header files; it confuses ident(1) by
overwriting RCSID in main source files.

XXX
The first argument of __KERNEL_RCSID() is neglected for ELF. If we wish
to have RCSID of header files in kernel binary, we need something like
__FBSDID() macro in FreeBSD.
 1.3 16-Feb-2018  macallan branches: 1.3.14;
remove accidential garbage
 1.2 16-Feb-2018  macallan add $NetBSD:
 1.1 24-Jan-2012  macallan branches: 1.1.4; 1.1.6;
drivers to support the onboard video circuitry found in for example the
Performa 6360
 1.1.6.2 17-Apr-2012  yamt sync with head
 1.1.6.1 24-Jan-2012  yamt file videopllvar.h was added on branch yamt-pagecache on 2012-04-17 00:06:37 +0000
 1.1.4.2 18-Feb-2012  mrg merge to -current.
 1.1.4.1 24-Jan-2012  mrg file videopllvar.h was added on branch jmcneill-usbmp on 2012-02-18 07:32:36 +0000
 1.3.14.1 20-Apr-2020  bouyer Sync with HEAD
 1.63 05-Mar-2021  rin Convert to intr_establish_xname().
 1.62 26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.61 20-Oct-2017  jdolecek branches: 1.61.16;
move ata_queue_alloc(1) and ata_queue_free() calls to ata_channel_init()
and ata_channel_destroy() respectively, to make attachment code simpler,
and to make it easier to spot special queue manipulation like cmdide(4)

on topic of PR kern/52606
 1.60 07-Oct-2017  jdolecek Merge support for SATA NCQ (Native Command Queueing) from jdolecek-ncq branch

ATA subsystem was changed to support several outstanding commands, and use
NCQ xfers if supported by both the controller and the disk, including NCQ
error recovery. Set NCQ high priority for BPRIO_TIMECRITICAL xfers
if supported. Added FUA support.

Done some work towards MP-safe, all ATA code tsleep()/wakeup() replaced
by condvars, and switched most code from spl* to mutexes (separate
wd(4) and ata channel lock).

Introduced new option WD_CHAOS_MONKEY to facilitate testing of error
handling, fixed several uncovered issues. Also fixed several problems
with kernel dump to wd(4) disk.

Tested with ahcisata(4), mvsata(4), siisata(4), piixide(4) on amd64,
with and without port multiplier, both disk and ATAPI devices; other
drivers and archs mechanically adjusted and compile-tested. NCQ is
supported for ahcisata(4) and siisata(4) for any controller, for
mvsata(4) only Gen IIe ones for now. Also enabled ATAPI support in
mvsata(4).

Thanks to Matt Thomas for initial ATA infrastructure patch, and
Jonathan A.Kollasch for siisata(4) NCQ changes and general testing.

Also fixes PR kern/43169 (wd(4)); and PR kern/11811, PR kern/47041,
PR kern/51979 (kernel dump)
 1.59 15-Jul-2016  macallan branches: 1.59.4;
- only unmap / free dbdma stuff when we actually mapped / allocated it
- use dbdma_free
now wdc_obio_detach() actually works without crashing
 1.58 31-Jul-2012  bouyer branches: 1.58.2; 1.58.16; 1.58.20;
Apply back changes that were reverted on Jul 24 and Jul 26 (general ata/wdc
cleanup and SATA PMP support), now that I'm back to fix the fallouts.
 1.57 26-Jul-2012  jakllsch Revert, with intention of restoring in a less invasive way, the SATA Port
Multiplier code.

ok christos@
 1.56 24-Jul-2012  jakllsch Revert dsl@'s changes of Sun, 15 Jul 2012 10:55:35 +0000 and
Sun, 15 Jul 2012 10:56:50 +0000, excepting the kernel version bump.
First step in reverting regressions to ata(4) subsystem during the addition of
port multiplier support.
 1.55 15-Jul-2012  dsl Some namespace protection (and add greppablity).
Prefix the DRIVE_ and DRIVET_ constants from atavar.h with ATA_.
Don't use an enum for drive_type - you don't know how big it will be.
Move driver_type to avoid implicit structure padding (esp on arm).
This change is purely lexical and mechanical.

Update to 6.99.9 - this wasn't done when the SATA PMP changes
were made - I'm sure they warranted a bump.
 1.54 02-Jul-2012  bouyer Add sata Port MultiPlier (PMP) support to the ata bus layer,
as described in
http://mail-index.netbsd.org/tech-kern/2012/06/23/msg013442.html
PMP support in integrated to the atabus layer.
struct ata_channel's ch_drive[] is not dynamically allocated, and ch_ndrive
(renamed to ch_ndrives) closely reflects the size of the ch_drive[] array.
Add helper functions atabus_alloc_drives() and atabus_free_drives()
to manage ch_drive[]/ch_ndrives.
Add wdc_maxdrives to struct wdc_softc so that bus front-end can specify
how much drive they really support (master/slave or single).
ata_reset_drive() callback gains a uint32_t *sigp argument which,
when not NULL, will contain the signature of the device being reset.
While there, some cosmetic changes:
- added a drive_type enum to ata_drive_datas, and stop encoding the
probed drive type in drive_flags (we were out of drive flags anyway).
- rename DRIVE_ATAPIST to DRIVE_ATAPIDSCW to better reflect what this
really is
- remove ata_channel->ata_drives, it's redundant with the pointer in
ata_drive_datas
- factor out the interpretation of SATA signatures in sata_interpet_sig()

propagate these changes to the ATA HBA drivers, and add support for PMP
to ahcisata(4) and siisata(4).

Thanks to:
- Protocase (http://www.protocase.com/) which provided a system
with lots of controllers, SATA PMP and drive slots
- Conservation Genomics Laboratory, Department of Biology, New Mexico State
University for hosting the above system
- Brook Milligan, who set up remote access and has been very responsive
when SATA cable move was needed
 1.53 01-Jul-2011  dyoung branches: 1.53.2;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.52 18-Nov-2009  dyoung wdcactivate() is gone, don't use it.
 1.51 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.50 30-Mar-2008  macallan branches: 1.50.2; 1.50.4;
free & unmap DMA memory and registers on detach()
Now removing and re-attaching a mediabay works again.
 1.49 18-Mar-2008  cube Split device_t and softc for ATA devices, as well as wd(4). Other
cosmetic changes where appropriate.
 1.48 25-Feb-2008  matt Convert to prototypes, de'__P, use device_private, switch to aprint_*,
make things static, and some minor constification.
 1.47 17-Oct-2007  garbled branches: 1.47.12; 1.47.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.46 07-Nov-2006  macallan branches: 1.46.8; 1.46.16; 1.46.26; 1.46.28; 1.46.30; 1.46.32;
allow IDE DMA on Heathrow again
 1.45 04-Sep-2006  macallan branches: 1.45.2; 1.45.4;
trying to use IDE DMA on a Heathrow macio is busted so disable it for now.
 1.44 29-Mar-2006  thorpej Use device_cfdata().
 1.43 16-Jan-2006  bouyer branches: 1.43.2; 1.43.4; 1.43.6; 1.43.8; 1.43.10;
properly use ata_channel->ch_ndrive:
- initialize it properly in the bus front-ends (all 2, exept in wdc_pcmcia.c
for the "Sandisk CompactFlash Card" where it's set to 1)
- remplace hardcoded '2' by ata_channel->ch_ndrive in MI IDE drivers.

From Christos Zoulas in kern/32501.
 1.42 11-Dec-2005  christos branches: 1.42.2;
merge ktrace-lwp.
 1.41 23-Aug-2004  aymeric branches: 1.41.12;
postpone the calling of wdc_init_shadow_regs(), to follow MI changes.
Thanks to Jukka Andberg for finding that bug.
 1.40 20-Aug-2004  thorpej Move most of wdc_softc into a new atac_softc structure that contains
info common to all types of ATA controllers.
 1.39 14-Aug-2004  thorpej - Split the register handles out of struct wdc_channel into a separate
wdc_regs structure, and array of which (indexed per channel) is pointed
to by struct wdc_softc.
- Move the resulting wdc_channel structure to atavar.h and rename it to
ata_channel. Rename the corresponding flags.
- Add a "ch_ndrive" member to struct ata_channel, which indicates the
maximum number of drives that can be present on the channel. For now,
this is always 2. Add an ATA_MAXDRIVES constant that places an upper
limit on this value, also currently 2.
 1.38 13-Aug-2004  thorpej Don't bother with bits that tell of the presence of optional callbacks;
just check the function pointers for NULL.
 1.37 25-May-2004  thorpej Add the notion of "shadow registers" to the wdc driver. These shadow
registers are registers that overlap with others on many controllers, but
which may actually be distinct on some controllers. Right now, the two
shadows are:

- wd_status (usually overlaps wd_command)
- wd_features (usually overlaps wd_error)

Add a new helper function, wdc_init_shadow_regs(), used to initialize
the shadow register handles on controllers where they do actually overlap.

Partially from Jordan Rhody @ Wasabi Systems, Inc.
 1.36 04-Jan-2004  dbj attempt to make these compile again after recent wdc changes.
 1.35 03-Jan-2004  thorpej More wdc_channel structure member namespace cleanup:
- channel -> ch_channel
- wdc -> ch_wdc
 1.34 03-Jan-2004  thorpej Rename "struct channel_softc" to "struct wdc_channel".
 1.33 01-Jan-2004  thorpej Rename:
- wdc_xfer to ata_xfer
- channel_queue to ata_queue
and move them to <dev/ata/atavar.h> so they can be used by non-wdc ATA
controllers. Clean up the member names of these structures while at it.
 1.32 31-Dec-2003  thorpej Simplify allocation of the channel queue.
 1.31 27-Dec-2003  mjl Initialize some auto vars to appaise gcc3.
 1.30 03-Dec-2003  bouyer Adapt for new wdc regiosters array. Should fix port-macppc/23604.
 1.29 08-Oct-2003  bouyer Adapt for wdcattach() prototype change, and deal with atabus in
device_register().
 1.28 25-Sep-2003  mycroft Hide the use of config_interrupts() in one place.
 1.27 19-Sep-2003  mycroft 1) Use config_interrupts() to attach IDE and ATAPI drives. This eliminates
most polling.
2) Clean up some goofiness in pciide -- get rid of the whole "candisable" path
(it's gratuitous) and simplify the code by calling pciide_map_compat_intr(),
*_set_modes() and wdc_print_modes() from central locations.
3) Add a register writability and register ghost test to eliminate phantom
drives more quickly.
 1.26 15-Jul-2003  lukem __KERNEL_RCSID()
 1.25 19-Jun-2003  hamajima branches: 1.25.2;
Fix wdc_obio_dma_init() confused WDC_DMA_LBA48 with WDC_DMA_READ.
This was tested by jtb@netbsd.org.
 1.24 03-May-2003  wiz DMA, not dma nor Dma.
 1.23 02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.22 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.21 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.20 18-Jul-2002  bouyer Wrap debug printf in #ifdef DEBUG/#endif
 1.19 09-Jan-2002  dbj branches: 1.19.8; 1.19.10;
tweak timings
 1.18 07-Jan-2002  dbj Changes to the wdc(4) mi driver that add the WDC_CAPABILITY_SELECT
flag and a callback function which gets called whenever a target is
selected on a channel.

The macppc wdc driver needs to reprogram its timing register
differently for each target on a channel each time that target is
selected. I also changed the ATA4_TIME_TO_TICK to use a divisor of
15, which brings our timing calculations consistent with darwin.

These patches fix problems on my dual usb ibook with combo dvd/cdrw
drive because the hard drive supports udma and the combo drive does
not. Without turning off the udma timings in the configuration
register, I cannot access the non-udma combo drive.
 1.17 09-Sep-2001  bouyer branches: 1.17.4;
Properly initiatize sc->sc_wdcdev.set_modes for non-DMA controllers.
 1.16 02-Aug-2001  bouyer branches: 1.16.2;
Properly setup timings for ata-4 controllers, including UDMA modes.
Tested on a brand new ("dual USB ?") ibook.
 1.15 25-Jul-2001  bouyer Return() if piomode == -1 (i.e. we have no drives), avoid reading an array with
a negative offset.
Thanks to Andrew Cagney for pointing this out.
 1.14 22-Jul-2001  wiz bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.13 15-Jun-2001  bouyer branches: 1.13.2;
Pass WDC_CAPABILITY_MODE to the wdc core, so that it will set timings
on the drive side too.
Deal properly with the case where master and slave don't have the same timings,
and set PIO timings too.
 1.12 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.11 08-Nov-2000  wrstuden branches: 1.11.2;
Use wdc_print_modes() so that we get to see what DMA modes
are used with a drive.
 1.10 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.9 23-May-2000  tsubai branches: 1.9.4;
Modify DMA access timings.
 1.8 14-Apr-2000  tsubai Make this compile.
 1.7 02-Apr-2000  tsubai Enable wdc1 (needed on StarMax).
 1.6 21-Jan-2000  tsubai Match "keylargo-ata".
 1.5 04-Oct-1999  tsubai branches: 1.5.2;
Make media-bay CD detachable.
 1.4 14-Jun-1999  tsubai * Don't use DMA interrupt.
* Stop DMA explicitly in finish routine.
 1.3 01-May-1999  tsubai Use "compatible" property to match.
 1.2 22-Jan-1999  tsubai branches: 1.2.2;
Match "ata0".
 1.1 10-Dec-1998  tsubai Add ata/atapi disk support.
 1.2.2.2 07-Jul-2000  he Apply patch (requested by bouyer):
Add support for the following PCIIDE controllers:
o AMD 756
o CMD PCI0648 and PCI0649
o Hightpoint HPT366
o OPTi 82c621 (and a few of its derivatives)
o Promise Ultra/33 and Ultra/66
o Intel 82801 (ICH/ICH0)
Also fix PR#10437 (detect more ATAPI devices).
 1.2.2.1 06-May-1999  perry branches: 1.2.2.1.2;
pullup 1.2->1.3 (thorpej)
 1.2.2.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.5.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.5.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.9.4.1 16-Jan-2002  he Pull up revisions 1.13,1.15-1.19 (via patch, requested by dbj):
Add UDMA support and allow separate DMA timings to be programmed
for two different devices on the same wdc channel on the macppc.
The machine-independent driver is updated to optionally use the
WDC_CAPABILITY_SELECT callback whenever a target is selected on
a channel.
 1.11.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.13.2.5 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.13.2.4 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.13.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.13.2.2 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.13.2.1 03-Aug-2001  lukem update to -current
 1.16.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.17.4.5 18-Oct-2002  nathanw Catch up to -current.
 1.17.4.4 01-Aug-2002  nathanw Catch up to -current.
 1.17.4.3 28-Feb-2002  nathanw Catch up to -current.
 1.17.4.2 11-Jan-2002  nathanw More catchup.
 1.17.4.1 09-Sep-2001  nathanw file wdc_obio.c was added on branch nathanw_sa on 2002-01-11 23:38:35 +0000
 1.19.10.2 24-Jun-2003  grant Pull up revision 1.25 (requested by hamajima in ticket #1328):

Fix wdc_obio_dma_init() confused WDC_DMA_LBA48 with WDC_DMA_READ.
This was tested by jtb@netbsd.org.
 1.19.10.1 19-Jul-2002  lukem Pull up revision 1.20 (requested by bouyer in ticket #519):
Wrap debug printf in #ifdef DEBUG/#endif
 1.19.8.1 21-Jul-2002  gehenna catch up with -current.
 1.25.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.25.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.25.2.2 25-Aug-2004  skrll Sync with HEAD.
 1.25.2.1 03-Aug-2004  skrll Sync with HEAD
 1.41.12.5 24-Mar-2008  yamt sync with head.
 1.41.12.4 27-Feb-2008  yamt sync with head.
 1.41.12.3 27-Oct-2007  yamt sync with head.
 1.41.12.2 30-Dec-2006  yamt sync with head.
 1.41.12.1 21-Jun-2006  yamt sync with head.
 1.42.2.1 01-Feb-2006  yamt sync with head.
 1.43.10.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.43.8.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.43.6.2 14-Sep-2006  yamt sync with head.
 1.43.6.1 01-Apr-2006  yamt sync with head.
 1.43.4.1 22-Apr-2006  simonb Sync with head.
 1.43.2.1 09-Sep-2006  rpaulo sync with head
 1.45.4.1 10-Dec-2006  yamt sync with head.
 1.45.2.1 18-Nov-2006  ad Sync with head.
 1.46.32.1 25-Oct-2007  bouyer Sync with HEAD.
 1.46.30.1 18-Oct-2007  yamt sync with head.
 1.46.28.2 23-Mar-2008  matt sync with HEAD
 1.46.28.1 06-Nov-2007  matt sync with HEAD
 1.46.26.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.46.16.8 12-Sep-2007  macallan remove some unused cargo-cult leftover, finish bus_space-ification, fix
some typos. Now UDMA66 with keylargo-ata should work again.
 1.46.16.7 08-Aug-2007  macallan use a level triggered interrupt if the firmware asks us to
 1.46.16.6 08-Aug-2007  macallan get rid of our own bus_space_tag - we provide a bus_space_handle_t for every
single WDC register anyway. Also request an edge-triggered IRQ since some
PIC drivers now actually honour the IRQ type.
 1.46.16.5 02-Aug-2007  macallan set pbs_limit to something sane
 1.46.16.4 02-Aug-2007  macallan adapt to new bus_space, now it works at least on my pb3400c
 1.46.16.3 19-Jun-2007  matt Simplify and don't allocate a separate bus space.
 1.46.16.2 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.46.16.1 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.46.8.1 23-Oct-2007  ad Sync with head.
 1.47.16.2 02-Jun-2008  mjf Sync with HEAD.
 1.47.16.1 03-Apr-2008  mjf Sync with HEAD.
 1.47.12.1 24-Mar-2008  keiichi sync with head.
 1.50.4.2 11-Mar-2010  yamt sync with head
 1.50.4.1 16-May-2008  yamt sync with head.
 1.50.2.1 18-May-2008  yamt sync with head.
 1.53.2.1 30-Oct-2012  yamt sync with head
 1.58.20.1 26-Jul-2016  pgoyette Sync with HEAD
 1.58.16.1 05-Oct-2016  skrll Sync with HEAD
 1.58.2.1 03-Dec-2017  jdolecek update from HEAD
 1.59.4.2 27-Sep-2017  jdolecek change wdc_init_shadow_regs() to accept only struct wdc_regs, it doesn't
touch anything else

factor out the probe-only struct ata_channel initialization to wdcprobe(), to
reduce duplication of logic in individual drivers, and to actually work now
that more init is needed beyond the memset()
 1.59.4.1 24-Apr-2017  jdolecek use ata_queue_alloc() to dynamically allocate ata_queue for ata channel
 1.61.16.1 03-Apr-2021  thorpej Sync with HEAD.
 1.25 27-Dec-2005  chs switch macppc to use the MI zstty driver.
add macppc's ZS_TXDMA hooks there.
 1.24 11-Dec-2005  christos merge ktrace-lwp.
 1.23 06-Sep-2005  kleink Change the driver open function's conditional for overriding exclusive tty
use from checking the proc's uid to suser(9), and account for the use of
privileges. Noted by David Holland in PR kern/31126.
 1.22 03-Jun-2005  matt branches: 1.22.2;
cleanup const/volatile/shadowing
 1.21 04-Dec-2003  keihan netbsd.org -> NetBSD.org

All "netbsd.org" is now gone from src/sys/arch.
 1.20 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.19 15-Jul-2003  lukem __KERNEL_RCSID()
 1.18 29-Jun-2003  fvdl branches: 1.18.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.17 29-Jun-2003  darrenr 'struct proc *' -> 'struct lwp *' as required to get GENERIC for macppc built
 1.16 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.15 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.14 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.13 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.12 17-Mar-2002  atatat branches: 1.12.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.11 06-Jan-2002  dbj add support for kgdb over zs
 1.10 20-Jun-2001  briggs branches: 1.10.2; 1.10.4; 1.10.8;
There is no other support for KGDB in this driver yet, so ifdef out the
call to a non-existent (on macppc) zs_check_kgdb() for now.
 1.9 30-May-2001  lukem add missing #include "opt_kgdb.h"
 1.8 02-May-2001  scw Add `l_poll' to `struct linesw' and provide an xxxpoll() entry point
in each tty driver to indirect through it.

This allows tty line-disciplines to handle poll(2) system calls.
 1.7 02-Nov-2000  eeh branches: 1.7.2;
Adapt to new line discipline scheme.
 1.6 26-Mar-2000  tsubai Fix typo.
 1.5 23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.4 06-Feb-1999  tsubai branches: 1.4.8;
Make this compile. (and sync with dev/ic completely)
 1.3 03-Feb-1999  mycroft Clone changes from the version in dev/ic. (These should be merged!)
Note: NOT tested on this port yet.
 1.2 31-Aug-1998  cgd kill the last remnants of __BROKEN_INDIRECT_CONFIG. (only the pica port
used it, and it's non-working and apparently slated for replacement.)
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.4.8.2 22-Nov-2000  bouyer Sync with HEAD.
 1.4.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.7.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.10.8.7 11-Nov-2002  nathanw Catch up to -current
 1.10.8.6 18-Oct-2002  nathanw Catch up to -current.
 1.10.8.5 17-Sep-2002  nathanw Catch up to -current.
 1.10.8.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.10.8.3 28-Feb-2002  nathanw Catch up to -current.
 1.10.8.2 11-Jan-2002  nathanw More catchup.
 1.10.8.1 20-Jun-2001  nathanw file z8530tty.c was added on branch nathanw_sa on 2002-01-11 23:38:35 +0000
 1.10.4.2 13-Oct-2001  fvdl Revert the t_dev -> t_devvp change in struct tty. The way that tty
structs are currently used (especially by console ttys) aren't
ready for it, and this will require quite a few changes.
 1.10.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.10.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.10.2.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.10.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.12.4.1 19-May-2002  gehenna Add device switch.
Replace the access to devsw table and the hard-coded majors with devsw API.
 1.18.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.18.2.4 18-Nov-2004  skrll Adapt to branch. macppc release builds.
 1.18.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.18.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.18.2.1 03-Aug-2004  skrll Sync with HEAD
 1.22.2.1 21-Jun-2006  yamt sync with head.
 1.59 24-Sep-2023  andvar pass NULL to the second dbdma_alloc() expected argement.
it was not adjusted after it acquired one 7 years ago.

fixes ZS_TXDMA enabled build for macppc.
 1.58 23-Sep-2023  andvar some whitespace cleanup for debug printf calls.
 1.57 23-Sep-2023  andvar change zsprintf to printf. It was defined as printf in include/z8530var.h
up to rev 1.4, then removed with conversion to MI 8530 SCC driver back in 1997.

Fixes build with ZSMACDEBUG option enabled for mac68k and macppc.
 1.56 16-Feb-2022  riastradh powerpc: Sprinkle "memory" clobbers on eieio and nearby asm blocks.

Otherwise the compiler may reorder these around loads and stores,
which mostly defeats the purpose. `asm volatile' just ensures the
instruction isn't _deleted_; it may still move around.
 1.55 13-Feb-2022  martin PR port-macppc/56091: on G5 macs we currently can not easily make
early serial console work, so keep the OF based "failsafe" console
but note that we would like to switch over.
Once zs attaches, use the new device mapping and do a belated init
of the zs console globals, and then switch over to real zs based
serial console.
 1.54 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.53 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.52 24-Apr-2021  thorpej branches: 1.52.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.51 05-Mar-2021  rin branches: 1.51.2;
Convert to intr_establish_xname().
 1.50 30-Jun-2011  matt branches: 1.50.66;
Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.49 27-Oct-2009  snj Drop 3rd and 4th clauses. Approved by gwr@ and wrstuden@ (copyright
holders).
 1.48 07-Dec-2008  tsutsui Fix attach messages. (extra colons, misplaced newline etc.)
 1.47 13-Jun-2008  cegger branches: 1.47.2; 1.47.4; 1.47.6;
use device_lookup_private to get softc
 1.46 29-Mar-2008  tsutsui branches: 1.46.2; 1.46.4; 1.46.6; 1.46.8;
Split softc and device_t for zsc(4) and its children.

XXX we should restructure MI APIs and make it really machine independent.
 1.45 19-Nov-2007  ad branches: 1.45.14;
Use the softint API.
 1.44 09-Nov-2007  ad Call zs_lock_init() to set up the chanstate's lock.
 1.43 17-Oct-2007  garbled branches: 1.43.2;
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.42 04-Mar-2007  christos branches: 1.42.2; 1.42.10; 1.42.18; 1.42.20; 1.42.22; 1.42.24;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.41 24-Nov-2006  wiz branches: 1.41.4;
s/independant/independent/, from Zafer.
 1.40 02-Nov-2006  tsutsui Remove a function declaration of zssoft() which was
inside #ifndef __HAVE_GENERIC_SOFT_INTERRUPTS.
 1.39 02-Nov-2006  tsutsui Pass zsc_softc to zshard() directly rather than searching it in zshard().

Checking all zsc units in zshard() is efficient only on ports
which share one interrupt among all zsc units, like sparc or sun3.
On such ports, zshard() is established as a handler only once.

XXX1: more other MD zs drivers should be fixed similarly.
XXX2: zsc on macppc has independent interrupts for channel A and B,
but MI z8530sc can't handle such configuration.
 1.38 02-Nov-2006  tsutsui macppc always defines __HAVE_GENERIC_SOFT_INTERRUPTS,
so remove #ifdef/#ifndefs against it.
 1.37 15-Aug-2006  macallan branches: 1.37.2; 1.37.4;
back out previous commit since it breaks console output when not using a
serial console
 1.36 05-Aug-2006  sanjayl branches: 1.36.2;
1st cut of Powermac G5 support (uses bridge mode).
 1.35 24-Dec-2005  perry branches: 1.35.4; 1.35.8;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.34 11-Dec-2005  christos merge ktrace-lwp.
 1.33 03-Jun-2005  matt branches: 1.33.2;
cleanup const/volatile/shadowing
 1.32 24-Jan-2005  matt Initialize zsconschannel to -1 so that it can't matched unless zscninit
is explicitly called to set it up.
 1.31 10-Jan-2005  chs branches: 1.31.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 powermacs can have more than 1 zsc.
 1.30 10-Jan-2005  chs de-__P, remove register, ansify.
 1.29 24-Mar-2004  matt Add latent generic soft interrupt support.
 1.28 04-Dec-2003  keihan netbsd.org -> NetBSD.org

All "netbsd.org" is now gone from src/sys/arch.
 1.27 15-Jul-2003  lukem __KERNEL_RCSID()
 1.26 15-Feb-2003  tsutsui branches: 1.26.2;
Add prototypes for ZS_TXDMA functions.
XXX Maybe we should have DMA hooks in MI z8530tty.
 1.25 28-Jan-2003  pk Provide locking required by the interrupt handlers running at IPL_SERIAL.
 1.24 01-Jan-2003  thorpej Use aprint_normal() for cfprint routines.
 1.23 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.22 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.21 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.20 17-Mar-2002  atatat branches: 1.20.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.19 06-Jan-2002  dbj add support for kgdb over zs
 1.18 22-Jul-2001  wiz branches: 1.18.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.17 19-Jun-2001  wiz branches: 1.17.2;
`existent', not `existant'
 1.16 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.15 07-Jun-2000  tsubai branches: 1.15.4;
* Access hardware directly in zscn* instead of calling OF.
* Clean up.
 1.14 06-Mar-2000  thorpej branches: 1.14.2;
- Implement cnbell() -- ring the console bell. The cn_bell entrypoint
is optional.
- Add cn_bell to statically allocated consdevs as appropriate.
 1.13 27-Feb-2000  tsubai Don't use hardcoded speed value when this is a console. Instead, read
from zs. (because OF-3.x uses 57600 bps)
 1.12 23-Mar-1999  wrstuden branches: 1.12.8;
Oops. macppc doesn't use PCLK as a baud rate source.
 1.11 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.10 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.9 29-Dec-1998  tsubai Fix a bug of last change.
 1.8 28-Dec-1998  tsubai Use "interrupt" property if "AAPL,interrupt" is not found.
 1.7 09-Sep-1998  wrstuden Turn on support for 115,200 and 230,400 baud. Should work, but might
generate lots of interupts (one per char or so) if we don't have
DMA set up.
 1.6 26-Aug-1998  tsubai Back out previous change.
 1.5 16-Aug-1998  tsubai Enable 115200 and (untested)230400 bps.
 1.4 13-Jul-1998  tsubai Add support for G3 Mac.
 1.3 04-Jul-1998  jonathan defopt DDB.
 1.2 02-Jul-1998  tsubai Console support.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.12.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.14.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.15.4.1 21-Jun-2001  nathanw Catch up to -current.
 1.17.2.4 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.17.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.17.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.17.2.1 03-Aug-2001  lukem update to -current
 1.18.6.7 03-Jan-2003  thorpej Sync with HEAD.
 1.18.6.6 18-Oct-2002  nathanw Catch up to -current.
 1.18.6.5 17-Sep-2002  nathanw Catch up to -current.
 1.18.6.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.18.6.3 28-Feb-2002  nathanw Catch up to -current.
 1.18.6.2 11-Jan-2002  nathanw More catchup.
 1.18.6.1 22-Jul-2001  nathanw file zs.c was added on branch nathanw_sa on 2002-01-11 23:38:36 +0000
 1.20.4.1 19-May-2002  gehenna Replace the access to devsw table and the hard-coded majors with devsw API.
 1.26.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.26.2.5 04-Feb-2005  skrll Sync with HEAD.
 1.26.2.4 17-Jan-2005  skrll Sync with HEAD.
 1.26.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.26.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.26.2.1 03-Aug-2004  skrll Sync with HEAD
 1.31.2.1 29-Apr-2005  kent sync with -current
 1.33.2.6 07-Dec-2007  yamt sync with head
 1.33.2.5 15-Nov-2007  yamt sync with head.
 1.33.2.4 27-Oct-2007  yamt sync with head.
 1.33.2.3 03-Sep-2007  yamt sync with head.
 1.33.2.2 30-Dec-2006  yamt sync with head.
 1.33.2.1 21-Jun-2006  yamt sync with head.
 1.35.8.2 03-Sep-2006  yamt sync with head.
 1.35.8.1 11-Aug-2006  yamt sync with head
 1.35.4.1 09-Sep-2006  rpaulo sync with head
 1.36.2.1 21-Aug-2006  tron Pull up following revision(s) (requested by macallan in ticket #31):
sys/arch/macppc/dev/zs.c: revision 1.37
back out previous commit since it breaks console output when not using a
serial console
 1.37.4.1 10-Dec-2006  yamt sync with head.
 1.37.2.2 12-Jan-2007  ad Sync with head.
 1.37.2.1 18-Nov-2006  ad Sync with head.
 1.41.4.1 12-Mar-2007  rmind Sync with HEAD.
 1.42.24.3 21-Nov-2007  bouyer Sync with HEAD
 1.42.24.2 13-Nov-2007  bouyer Sync with HEAD
 1.42.24.1 25-Oct-2007  bouyer Sync with HEAD.
 1.42.22.1 18-Oct-2007  yamt sync with head.
 1.42.20.2 09-Jan-2008  matt sync with HEAD
 1.42.20.1 06-Nov-2007  matt sync with HEAD
 1.42.18.3 21-Nov-2007  joerg Sync with HEAD.
 1.42.18.2 11-Nov-2007  joerg Sync with HEAD.
 1.42.18.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.42.10.1 11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.42.2.2 03-Dec-2007  ad Sync with HEAD.
 1.42.2.1 23-Oct-2007  ad Sync with head.
 1.43.2.2 08-Dec-2007  mjf Sync with HEAD.
 1.43.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.45.14.3 17-Jan-2009  mjf Sync with HEAD.
 1.45.14.2 29-Jun-2008  mjf Sync with HEAD.
 1.45.14.1 03-Apr-2008  mjf Sync with HEAD.
 1.46.8.1 18-Jun-2008  simonb Sync with head.
 1.46.6.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.46.4.2 11-Mar-2010  yamt sync with head
 1.46.4.1 04-May-2009  yamt sync with head.
 1.46.2.1 17-Jun-2008  yamt sync with head.
 1.47.6.1 13-Dec-2008  bouyer Pull up following revision(s) (requested by tsutsui in ticket #182):
sys/arch/macppc/dev/cuda.c: revision 1.9
sys/arch/macppc/macppc/memory.c: revision 1.2
sys/arch/macppc/dev/zs.c: revision 1.48
Fix attach messages. (extra colons, misplaced newline etc.)
 1.47.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.47.2.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.50.66.1 03-Apr-2021  thorpej Sync with HEAD.
 1.51.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.52.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.15 24-Oct-2023  andvar apply similar changes between different archs/machines for zs_kgdb.c:
1) adjust zs_kgdb_init tty attachment message for kgdb_dev type change.
(one arch uses cast to int instead, but kept one approach for consistency)
2) remove unused rr0 declaration and assignment in zs_kgdb_txint()
3) adjust kgdb_dev format specifier to %llx/d if needed.
4) add const for zs_kgdb_devname declaration (macppc only).
should fix zs_kgdb.c build for all these ports.
 1.14 26-Oct-2009  cegger kill extra whitespaces
reviewed by tsutsui@
 1.13 18-Mar-2009  cegger bcopy -> memcpy
 1.12 18-Mar-2009  cegger bzero -> memset
 1.11 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.10 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.9 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.8 28-Apr-2008  martin branches: 1.8.8; 1.8.14;
Remove clause 3 and 4 from TNF licenses
 1.7 17-Oct-2007  garbled branches: 1.7.16; 1.7.18; 1.7.20;
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.6 23-Jun-2007  hauke branches: 1.6.10;
Fix a warning from gcc 4 about stripping the volatile qualifier by a cast
by doing the proper __UNVOLATILE() dance.
 1.5 04-Mar-2007  christos branches: 1.5.2; 1.5.4; 1.5.10;
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 15-Jul-2003  lukem branches: 1.3.16;
__KERNEL_RCSID()
 1.2 06-Sep-2002  gehenna branches: 1.2.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.1 06-Jan-2002  dbj branches: 1.1.2; 1.1.4; 1.1.12;
add support for kgdb over zs
 1.1.12.1 19-May-2002  gehenna Replace the access to devsw table and the hard-coded majors with devsw API.
 1.1.4.3 17-Sep-2002  nathanw Catch up to -current.
 1.1.4.2 11-Jan-2002  nathanw More catchup.
 1.1.4.1 06-Jan-2002  nathanw file zs_kgdb.c was added on branch nathanw_sa on 2002-01-11 23:38:36 +0000
 1.1.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.1.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.1 06-Jan-2002  thorpej file zs_kgdb.c was added on branch kqueue on 2002-01-10 19:45:49 +0000
 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.10.2 02-Aug-2007  macallan sync with HEAD
 1.5.10.1 26-Jun-2007  garbled Sync with HEAD.
 1.5.4.1 11-Jul-2007  mjf Sync with head.
 1.5.2.1 15-Jul-2007  ad Sync with head.
 1.6.10.1 06-Nov-2007  matt sync with HEAD
 1.7.20.3 11-Mar-2010  yamt sync with head
 1.7.20.2 04-May-2009  yamt sync with head.
 1.7.20.1 16-May-2008  yamt sync with head.
 1.7.18.1 18-May-2008  yamt sync with head.
 1.7.16.1 02-Jun-2008  mjf Sync with HEAD.
 1.8.14.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.8.8.1 28-Apr-2009  skrll Sync with HEAD.
 1.22 21-Dec-2015  christos Add mips fenv.h (From FreeBSD)
 1.21 23-Jul-2014  alnsn branches: 1.21.4;
Rename sljitarch.h to sljit_machdep.h.
 1.20 17-Nov-2013  alnsn branches: 1.20.2;
Enable sljit and bpfjit on powerpc.
 1.19 11-Dec-2005  christos branches: 1.19.112; 1.19.122; 1.19.128;
merge ktrace-lwp.
 1.18 20-Oct-2003  matt Reorganize the way powerpc port install machine specific headers.
Use <powerpc/oea/bat.h> exclusively and remove <machine/bat.h> and
<powerpc/bat.h>. Remove unneeded <machine/cpufunc.h>. To insure
1:1 correspondence of <powerpc/FOO.h> to <machine/FOO.h> include
"../../powerpc/include/Makefile" in "arch/FOO/include/Makefile".
Incororpate <byte_swap.h> into <bswap.h> and then byte_swap.h
 1.17 17-Jan-2003  thorpej branches: 1.17.2;
Merge the nathanw_sa branch.
 1.16 26-Nov-2002  lukem Remove KDIR=, since SYS_INCLUDE=symlinks and KDIR are not supported any more.
 1.15 07-Aug-2002  briggs Implement pmc(9) -- An interface to hardware performance monitoring
counters. These counters do not exist on all CPUs, but where they
do exist, can be used for counting events such as dcache misses that
would otherwise be difficult or impossible to instrument by code
inspection or hardware simulation.

pmc(9) is meant to be a general interface. Initially, the Intel XScale
counters are the only ones supported.
 1.14 18-Jun-2002  itojun apm emulation, from openbsd
 1.13 03-May-2001  soren branches: 1.13.2; 1.13.8; 1.13.16;
PPC machine type tags haven't been used for a while.
 1.12 15-Apr-2001  kleink Add definitions of C99 integer format conversion macros.
XXX Fastest minimum-width integer types haven't been decided upon yet.
 1.11 15-Apr-2001  kleink Add definitions of C99 specified-width integer type limits.
XXX Fastest minimum-width integer types haven't been decided upon yet.
 1.10 14-Apr-2001  kleink Add definitions of C99 integer constant macros.
Tidy Makefiles up a little.
 1.9 14-Apr-2001  kleink Add definitions of C99 minimum-width and greatest-width integer types.
XXX Fastest minimum-width integer types haven't been decided upon yet.
 1.8 26-Jun-2000  kleink branches: 1.8.2;
Add <machine/int_types.h>, which provides namespace-pure definitions
of exact-width integer types.
 1.7 29-Apr-2000  thorpej Require that each each MACHINE/MACHINE_ARCH supply a lock.h. This file
contains the values __SIMPLELOCK_LOCKED and __SIMPLELOCK_UNLOCKED, which
replace the old SIMPLELOCK_LOCKED and SIMPLELOCK_UNLOCKED. These files
are also required to supply inline functions __cpu_simple_lock(),
__cpu_simple_lock_try(), and __cpu_simple_unlock() if locking is to be
supported on that platform (i.e. if MULTIPROCESSOR is defined in the
_KERNEL case). Change these functions to take an int * (&alp->lock_data)
rather than the struct simplelock * itself.

These changes make it possible for userland to use the locking primitives
by including <machine/lock.h>.
 1.6 17-Mar-2000  tron Install "machineendian_machdep.h".
 1.5 23-Dec-1999  kleink C99: Define a NAN macro in <math.h> which evaulates to a constant expression of
a single-precision quiet NaN; only to be defined on platforms that do support
this value.
 1.4 28-Mar-1999  tsubai branches: 1.4.8;
Remove unused file.
 1.3 15-Jan-1999  bouyer Move the bswap functions from libutil to libc (this bups the
minor of libc and the major of libutil). For little-endian architectures
merge the bnswap() assembly versions with nto* and hton* using symbols
aliasing. Use symbol renaming for the bswap function in this case to avoid
namespace pollution.
Declare bswap* in machine/bswap.h, not machine/endian.h. For little-endian
machines, common code for inline macros go in machine/byte_swap.h
Sync libkern with libc.
Adjust #include in kernel sources for machine/bswap.h.
 1.2 03-Dec-1998  tsubai Not used.
 1.1 12-Jun-1998  cgd Rework the way kernel include files are installed. In the new method,
as with user-land programs, include files are installed by each directory
in the tree that has includes to install. (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.) The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change. Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
 1.4.8.2 21-Apr-2001  bouyer Sync with HEAD
 1.4.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.8.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.13.16.2 31-Aug-2002  gehenna catch up with -current.
 1.13.16.1 16-Jul-2002  gehenna catch up with -current.
 1.13.8.5 11-Dec-2002  thorpej Sync with HEAD.
 1.13.8.4 13-Aug-2002  nathanw Catch up to -current.
 1.13.8.3 20-Jun-2002  nathanw Catch up to -current.
 1.13.8.2 05-Nov-2001  briggs Initial SA support for ppc. Test-booted on sandpoint, macppc, & walnut.
mcontext and cpu_getmcontext()/cpu_setmcontext() from Klaus Klein
<kleink@netbsd.org>.
 1.13.8.1 03-May-2001  briggs file Makefile was added on branch nathanw_sa on 2001-11-05 19:46:14 +0000
 1.13.2.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.17.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.17.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.17.2.1 03-Aug-2004  skrll Sync with HEAD
 1.19.128.1 18-May-2014  rmind sync with head
 1.19.122.2 03-Dec-2017  jdolecek update from HEAD
 1.19.122.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.19.112.1 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.20.2.1 10-Aug-2014  tls Rebase.
 1.21.4.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.9 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.8 17-Jan-2007  macallan branches: 1.8.48; 1.8.56; 1.8.62;
add iBook keyboard type
 1.7 18-Jun-2002  itojun branches: 1.7.22; 1.7.52;
apm emulation, from openbsd
 1.6 26-Jul-2001  tsubai branches: 1.6.6; 1.6.14;
Change description of handler-ID == 195.
 1.5 12-Jul-2001  nathanw Add the keyboard ID found on the American versions of the PowerBook G4 and
iBook (dual USB).
 1.4 19-Dec-2000  tsubai branches: 1.4.4;
Add support for Kensington Turbo Mouse.
 1.3 16-Jun-1999  tsubai branches: 1.3.2;
Define PowerBook G3 Japanese keyboard.
 1.2 20-Oct-1998  tsubai branches: 1.2.8;
Add via-pmu support (only PowerBook 2400c/180 is tested).
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.8.1 21-Jun-1999  thorpej Sync w/ -current.
 1.3.2.1 05-Jan-2001  bouyer Sync with HEAD
 1.4.4.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.4.4.1 03-Aug-2001  lukem update to -current
 1.6.14.1 16-Jul-2002  gehenna catch up with -current.
 1.6.6.2 20-Jun-2002  nathanw Catch up to -current.
 1.6.6.1 26-Jul-2001  nathanw file adbsys.h was added on branch nathanw_sa on 2002-06-20 03:39:34 +0000
 1.7.52.1 01-Feb-2007  ad Sync with head.
 1.7.22.1 26-Feb-2007  yamt sync with head.
 1.8.62.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.8.56.1 28-Apr-2009  skrll Sync with HEAD.
 1.8.48.1 04-May-2009  yamt sync with head.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3 01-Oct-2012  dsl Remove 'struct apm_connect_info' - part of the i386 APM bios interface.
There are no references to it anywhere in all of $SRC.
 1.2 29-Aug-2006  he branches: 1.2.94; 1.2.104;
Use the common <dev/apm/apmio.h> file instead of replicating struct and
ioctl definitions in a local copy. What remains is local additions.
Makes usr.bin/kdump build for macppc again.
 1.1 18-Jun-2002  itojun branches: 1.1.2; 1.1.4; 1.1.6; 1.1.28; 1.1.42; 1.1.46;
apm emulation, from openbsd
 1.1.46.1 03-Sep-2006  yamt sync with head.
 1.1.42.1 09-Sep-2006  rpaulo sync with head
 1.1.28.1 30-Dec-2006  yamt sync with head.
 1.1.6.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.1.6.1 18-Jun-2002  jdolecek file apmvar.h was added on branch kqueue on 2002-09-06 08:37:09 +0000
 1.1.4.2 16-Jul-2002  gehenna catch up with -current.
 1.1.4.1 18-Jun-2002  gehenna file apmvar.h was added on branch gehenna-devsw on 2002-07-16 08:48:19 +0000
 1.1.2.2 20-Jun-2002  nathanw Catch up to -current.
 1.1.2.1 18-Jun-2002  nathanw file apmvar.h was added on branch nathanw_sa on 2002-06-20 03:39:35 +0000
 1.2.104.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.2.94.1 30-Oct-2012  yamt sync with head
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3 05-Jun-2011  matt Remove <machine/atomic.h>; use <sys/atomic.h> instead.
Add <powerpc/cpuset.h> (for mpc85xx pmap).
Add some initial MP code for mpc85xx
Rework ipi code to be common across all ppcs
Change PPC to keep curlwp in %r13 while in the kernel.
Move astpending from cpu_info to mdlwp
Improve cpu_need_resched to be more MP friendly.
 1.2 11-Dec-2005  christos branches: 1.2.100; 1.2.106; 1.2.110;
merge ktrace-lwp.
 1.1 20-Oct-2003  matt branches: 1.1.4;
Reorganize the way powerpc port install machine specific headers.
Use <powerpc/oea/bat.h> exclusively and remove <machine/bat.h> and
<powerpc/bat.h>. Remove unneeded <machine/cpufunc.h>. To insure
1:1 correspondence of <powerpc/FOO.h> to <machine/FOO.h> include
"../../powerpc/include/Makefile" in "arch/FOO/include/Makefile".
Incororpate <byte_swap.h> into <bswap.h> and then byte_swap.h
 1.1.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 20-Oct-2003  skrll file atomic.h was added on branch ktrace-lwp on 2004-08-03 10:37:30 +0000
 1.2.110.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.2.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.100.1 12-Jun-2011  rmind sync with head
 1.22 27-Feb-2021  thorpej Un-do a bunch of misguided code sharing. It's not really shared if it's
full of platform-specific #ifdefs:
- ofwoea_batinit() is gone; just do what's needed early in macppc / ofppc
initppc() functions.
- Get a bunch of Mac-specific stuff out of ofwoea_initppc().
 1.21 12-Feb-2021  thorpej No need for a prototype of ofbcopy() here.
 1.20 07-Jul-2020  rin branches: 1.20.2;
It turned out that using some Open Firmware routines causes the system
freeze after calling OF_quiesce().

This is why setting color palette crash the system for some Power Mac G5
models, like PowerMac11,2.

Therefore, stop using color-palette and backlight callbacks for genfb(4)
in this case.

Also, postpone OF_quiesce() after rascons_init_rasops(), and initialize
color palette there if OF is going to be quiesced and color depth is 8.

Now, color palette for wscons is initialized correctly for PowerMac11,2.
 1.19 08-Jan-2019  mrg workaround a problem with the pegasos firmware interface:
attempting to use /dev/openfirm on this machine hangs hard.

this isn't a new problem, and i've been meaning to try to
figure it out for years, but it's become a problem since
the xf86-video-radeon driver gained code to look for the
macppc model using this interface.

this is why xorg-server 1.18 and 1.20 hang recently on the
pegasosII.


this change is fairly ugly but i couldn't think of a less
ugly method to avoid /dev/openfirm working just on this
one platform. introduce new __OPENFIRMIO_OPEN_CHECK_BROKEN
macro and associated __openfirmio_open_check_broken(), and
use them in the new openfirmopen() to fail opens.

include proplib.h in macppc and ofppc autoconf.h since they
use it.
 1.18 01-Jul-2011  dyoung branches: 1.18.52; 1.18.54;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.17 30-Jun-2011  matt Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.16 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.15 26-Nov-2007  garbled branches: 1.15.50;
Apply a set of patches from Frank Wille to make the genfb attachment work
better on ofppc. In doing so, we also move a few functions around in
macppc and the generic ofw powerpc stuff to allow better sharing of code.
Also, introduce a model_init function.

move ofb_cons.c from macppc/dev to powerpc/oea and rename it to rascons.
This gets rid of some naming confusion, and makes it OFW-MI rather than
macppc specific.
 1.14 07-Nov-2007  garbled Convert macppc to shared ofw_autoconf.c. Compile tested only.
 1.13 17-Oct-2007  garbled branches: 1.13.2;
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.12 14-Jul-2007  ad branches: 1.12.8; 1.12.10; 1.12.12; 1.12.14;
Generic soft interrupts are mandatory.
 1.11 04-Mar-2007  christos branches: 1.11.2; 1.11.10;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.10 20-Jan-2007  he branches: 1.10.2;
Unify the declaration of OF_interpret() between sparc{,64} and macppc
by adding the "nargs" argument to the macppc version, and fix the macppc
ports uses of OF_interpret() accordingly.

Also move the declaration of OF_interpt() from macppc's autoconf.h to
ofw/openfirm.h. This fixes the build of the macppc port.

Approved by macallan@.
 1.9 17-Jan-2007  macallan shuffle #includes, add a bus_space_tag
 1.8 11-Dec-2005  christos branches: 1.8.20; 1.8.24;
merge ktrace-lwp.
 1.7 05-Jun-2005  nathanw branches: 1.7.2;
constify some string arguments and return values.
 1.6 24-Mar-2004  matt Add latent generic soft interrupt support.
 1.5 05-Jul-2002  matt branches: 1.5.6;
Peform a rototill over the powerpc-based ports.

Move the trap/vector initialization for MPC6xx ports to mpc6xx_machdep.c
Also move softnet, install_extintr, mapiodev, kvtop. Add common BAT
initialization code.

Add user Altivec support.

Fix calls to OF_call_method in macppc/macppc/machdep.c.

Use ci_fpuproc in cpu_info instead of separate fpuproc.

Add separate syscall.c and defined __HAVE_SYSCALL_INTERN.
 1.4 08-Jun-2001  matt branches: 1.4.2; 1.4.8; 1.4.16;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.3 01-Sep-1998  tsubai branches: 1.3.24;
Add some prototypes.
 1.2 21-Aug-1998  tsubai vm_offset_t --> [pv]addr_t.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3.24.1 21-Jun-2001  nathanw Catch up to -current.
 1.4.16.1 16-Jul-2002  gehenna catch up with -current.
 1.4.8.2 01-Aug-2002  nathanw Catch up to -current.
 1.4.8.1 08-Jun-2001  nathanw file autoconf.h was added on branch nathanw_sa on 2002-08-01 02:42:25 +0000
 1.4.2.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.5.6.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 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.7.2.5 07-Dec-2007  yamt sync with head
 1.7.2.4 15-Nov-2007  yamt sync with head.
 1.7.2.3 27-Oct-2007  yamt sync with head.
 1.7.2.2 03-Sep-2007  yamt sync with head.
 1.7.2.1 26-Feb-2007  yamt sync with head.
 1.8.24.1 08-Mar-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #495):
sys/arch/macppc/include/autoconf.h: revision 1.9
sys/arch/macppc/include/bus.h: revision 1.22
shuffle #includes, add a bus_space_tag
Fix build on netbsd-4.
 1.8.20.1 01-Feb-2007  ad Sync with head.
 1.10.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.11.10.5 03-Oct-2007  garbled Sync with HEAD
 1.11.10.4 02-Aug-2007  macallan sync with HEAD
 1.11.10.3 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.11.10.2 09-May-2007  macallan nuke #if(n)def __HAVE_GENERIC_SOFT_INTERRUPTS - we have them and they're not going
to disappear
 1.11.10.1 04-May-2007  macallan move some interrupt-related stuff over to powerpc/intr.h
 1.11.2.3 03-Dec-2007  ad Sync with HEAD.
 1.11.2.2 23-Oct-2007  ad Sync with head.
 1.11.2.1 15-Jul-2007  ad Sync with head.
 1.12.14.2 13-Nov-2007  bouyer Sync with HEAD
 1.12.14.1 25-Oct-2007  bouyer Sync with HEAD.
 1.12.12.1 18-Oct-2007  yamt sync with head.
 1.12.10.3 09-Jan-2008  matt sync with HEAD
 1.12.10.2 08-Nov-2007  matt sync with -HEAD
 1.12.10.1 06-Nov-2007  matt sync with HEAD
 1.12.8.3 27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.12.8.2 11-Nov-2007  joerg Sync with HEAD.
 1.12.8.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.13.2.2 08-Dec-2007  mjf Sync with HEAD.
 1.13.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.15.50.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.18.54.1 10-Jun-2019  christos Sync with HEAD
 1.18.52.1 18-Jan-2019  pgoyette Synch with HEAD
 1.20.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.4 03-Feb-2003  matt Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea).
 1.3 10-Jun-2001  tsubai branches: 1.3.8;
include powerpc/mpc6xx/bat.h.
 1.2 29-May-1998  tsubai branches: 1.2.26;
Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.26.1 21-Jun-2001  nathanw Catch up to -current.
 1.3.8.2 10-Jun-2001  tsubai include powerpc/mpc6xx/bat.h.
 1.3.8.1 10-Jun-2001  tsubai file bat.h was added on branch nathanw_sa on 2001-06-10 15:24:58 +0000
 1.1 15-Jan-1999  bouyer Move the bswap functions from libutil to libc (this bups the
minor of libc and the major of libutil). For little-endian architectures
merge the bnswap() assembly versions with nto* and hton* using symbols
aliasing. Use symbol renaming for the bswap function in this case to avoid
namespace pollution.
Declare bswap* in machine/bswap.h, not machine/endian.h. For little-endian
machines, common code for inline macros go in machine/byte_swap.h
Sync libkern with libc.
Adjust #include in kernel sources for machine/bswap.h.
 1.27 17-Jul-2011  dyoung Enable new-style <sys/bus.h> on several PowerPC ports supporting PCI
buses. Make non-inline implementations of bus_space(9) and bus_dma(9)
routines and move them to appropriate .c files.

This may leave amigappc in a bad state, sorry. Fortunately, it will be
easy to repair by imitating the bus.h -> bus_{defs,funcs}.h split in
some other PowerPC port.
 1.26 25-Dec-2007  macallan get rid of macppc's private pci_bus_dma_tag
 1.25 17-Oct-2007  garbled branches: 1.25.2; 1.25.4; 1.25.8;
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.24 04-Mar-2007  christos branches: 1.24.2; 1.24.10; 1.24.18; 1.24.20; 1.24.22; 1.24.24;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.23 21-Feb-2007  mrg add a pair of new bus_dma(9) functions:
int _bus_dmatag_subregion(bus_dma_tag_t tag,
bus_addr_t min_addr,
bus_addr_t max_addr,
bus_dma_tag_t *newtag,
int flags)
void _bus_dmatag_destroy(bus_dma_tag_t tag)

that allow a (normally broken/limited) device to restrict the bus address
range it can talk to. this is used by bce(4) to limit DMA addresses to
1GB range, the maximum the chip can address.

all this is from Yorick Hardy <yhardy@uj.ac.za> with input from several
people on tech-kern.

XXX: bus_dma(9) needs an update still.
 1.22 17-Jan-2007  macallan branches: 1.22.2;
shuffle #includes, add a bus_space_tag
 1.21 16-Feb-2006  perry branches: 1.21.14; 1.21.18;
Change "inline" back to "__inline" in .h files -- C99 is still too
new, and some apps compile things in C89 mode. C89 keywords stay.

As per core@.
 1.20 24-Dec-2005  perry branches: 1.20.2; 1.20.4; 1.20.6;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.19 11-Dec-2005  christos merge ktrace-lwp.
 1.18 23-Sep-2005  macallan Added macros for bus_space_mmap() and bus_space_vaddr()
 1.17 09-Mar-2005  matt branches: 1.17.4;
Add a dm_maxsegsz public member to bus_dmamap_t. This allows a user of the API
to select the maximum segment size for each bus_dmamap_load (up to the maxsegsz
supplied to bus_dmamap_create). dm_maxsegsz is reset to the value supplied to
bus_dmamap_create when the dmamap is unloaded.
 1.16 15-Jun-2003  fvdl branches: 1.16.2; 1.16.10; 1.16.12;
Handle 64bit DMA addresses on PCI for platforms that can (currently only
enabled on amd64). Add a dmat64 field to various PCI attach structures,
and pass it down where needed. Implement a simple new function called
pci_dma64_available(pa) to test if 64bit DMA addresses may be used.
This returns 1 iff _PCI_HAVE_DMA64 is defined in <machine/pci_machdep.h>,
and there is more than 4G of memory.
 1.15 28-Jan-2003  kent Introduce BUS_DMA_NOCACHE, and bus_dmamem_map() of i386 supports it.
 1.14 19-Jul-2001  thorpej branches: 1.14.6;
Add BUS_DMA_READ and BUS_DMA_WRITE flags, that hint the back-end
at dmamap load time that the mapping will be used for a unidirectional
transfer of the specified direction.
 1.13 19-Jun-2001  simonb branches: 1.13.2;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.12 07-Mar-2001  thorpej Add the BUS_DMA_STREAMING flag.
 1.11 21-Dec-2000  tsubai branches: 1.11.2;
Fix bus_space_write_multi_N.
(From der Mouse <mouse@Rodents.Montreal.QC.CA>)
 1.10 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.9 25-Jan-2000  drochner branches: 1.9.4;
define a "BUS_SPACE_MAP_PREFETCHABLE" flag which basically means that
device accesses are idempotent (but should not be cached by the CPU)
 1.8 18-Jun-1999  cgd branches: 1.8.2;
nuke current definitions provided by __BUS_SPACE_COMPAT_OLDDEFS.
I'll do what I can to make new ones soon. 8-)
 1.7 23-Mar-1999  drochner branches: 1.7.4;
Add a macro to check for sufficient pointer alignment in bus.h context,
"BUS_SPACE_ALIGNED_POINTER()".
Equal to the param.h "ALIGNED_POINTER()" normally, but obeys additional
requirements of the bus_space_xxx_n() macros. (BUS_SPACE_DEBUG)
 1.6 06-Dec-1998  tsubai Implement sparse bus space support.
 1.5 03-Oct-1998  thorpej Add a private bounce threshold to the DMA map, initialized in a bus-dependent
fashion.
 1.4 21-Aug-1998  tsubai vm_offset_t --> [pv]addr_t.
 1.3 17-Jul-1998  thorpej bus_dma carries TNF copyright.
 1.2 17-Jul-1998  tsubai Add bus_dma support.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.7.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.8.2.3 12-Mar-2001  bouyer Sync with HEAD.
 1.8.2.2 05-Jan-2001  bouyer Sync with HEAD
 1.8.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.9.4.1 30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.11.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.11.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.13.2.1 03-Aug-2001  lukem update to -current
 1.14.6.2 19-Jul-2001  thorpej Add BUS_DMA_READ and BUS_DMA_WRITE flags, that hint the back-end
at dmamap load time that the mapping will be used for a unidirectional
transfer of the specified direction.
 1.14.6.1 19-Jul-2001  thorpej file bus.h was added on branch nathanw_sa on 2001-07-19 15:32:15 +0000
 1.16.12.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.16.10.1 29-Apr-2005  kent sync with -current
 1.16.2.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.16.2.1 01-Apr-2005  skrll Sync with HEAD.
 1.17.4.5 21-Jan-2008  yamt sync with head
 1.17.4.4 27-Oct-2007  yamt sync with head.
 1.17.4.3 03-Sep-2007  yamt sync with head.
 1.17.4.2 26-Feb-2007  yamt sync with head.
 1.17.4.1 21-Jun-2006  yamt sync with head.
 1.20.6.1 22-Apr-2006  simonb Sync with head.
 1.20.4.1 09-Sep-2006  rpaulo sync with head
 1.20.2.1 18-Feb-2006  yamt sync with head.
 1.21.18.2 24-Mar-2009  bouyer Apply patch, requested by martin in ticket #1283:
src/sys/arch/macppc/include/bus.h patch
Provide dummy bus_space_alloc() and bus_space_free(), some driver needs it.
 1.21.18.1 08-Mar-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #495):
sys/arch/macppc/include/autoconf.h: revision 1.9
sys/arch/macppc/include/bus.h: revision 1.22
shuffle #includes, add a bus_space_tag
Fix build on netbsd-4.
 1.21.14.1 01-Feb-2007  ad Sync with head.
 1.22.2.2 12-Mar-2007  rmind Sync with HEAD.
 1.22.2.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.24.24.1 25-Oct-2007  bouyer Sync with HEAD.
 1.24.22.1 18-Oct-2007  yamt sync with head.
 1.24.20.2 09-Jan-2008  matt sync with HEAD
 1.24.20.1 06-Nov-2007  matt sync with HEAD
 1.24.18.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.24.10.2 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.24.10.1 05-Jun-2007  matt Make macppc use the common powerpc bus_dma.c
 1.24.2.1 23-Oct-2007  ad Sync with head.
 1.25.8.1 02-Jan-2008  bouyer Sync with HEAD
 1.25.4.1 26-Dec-2007  ad Sync with head.
 1.25.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.1 01-Jul-2011  dyoung Per discussion at
<http://mail-index.netbsd.org/tech-kern/2010/04/02/msg007941.html>,
divide each machine's bus.h into bus_defs.h (constants & data types)
and bus_funcs.h (macro implementations of bus_space(9) routines and MD
prototypes).

Note that some bus_space(9) routines' implementation will move to .c
files from inline subroutines or macros in .h files.

I've only made the split for machine architectures where there is PCI.
All of the non-PCI-having architectures will require a similar split.

These #include files are not referenced by any (committed) Makefiles or
header files, yet. Changes to Makefiles, to <sys/bus.h>, and to some
more machine-dependent files will dribble in before I throw the switch.
 1.1 01-Jul-2011  dyoung Per discussion at
<http://mail-index.netbsd.org/tech-kern/2010/04/02/msg007941.html>,
divide each machine's bus.h into bus_defs.h (constants & data types)
and bus_funcs.h (macro implementations of bus_space(9) routines and MD
prototypes).

Note that some bus_space(9) routines' implementation will move to .c
files from inline subroutines or macros in .h files.

I've only made the split for machine architectures where there is PCI.
All of the non-PCI-having architectures will require a similar split.

These #include files are not referenced by any (committed) Makefiles or
header files, yet. Changes to Makefiles, to <sys/bus.h>, and to some
more machine-dependent files will dribble in before I throw the switch.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.21 24-Oct-2019  macallan bump CPU_MAXNUM to 4, hardware exists and is being asked about on port-macppc@
 1.20 16-Mar-2018  macallan branches: 1.20.2;
gather per-CPU EEPROM contents if we have them
 1.19 20-Jun-2011  matt branches: 1.19.52;
Don't expose port-specific if _MODULE is defined.
Don't _MACHINE_CPU_H_, _<PORT>_CPU_H_
 1.18 26-Aug-2001  matt branches: 1.18.6; 1.18.160;
Make all powerpc ports use a common Makefile.powerpc (except walnut)
Enforce -Wmissing-prototypes -Wstrict-prototypes for all ppc ports.
Split out macppc cpu support and make common to mpc6xx ports. Make
other mpc6xx ports use it. Add evcnts for mpc6xx traps.
 1.17 30-May-2001  mrg branches: 1.17.2;
use _KERNEL_OPT
 1.16 22-Mar-2001  tsubai Merge my MP tree. At this point, Daystar dual 604 card (i.e. Power Macintosh
9500/180MP and 9600/200MP) runs at least into single-user mode, possibly
multi-user mode (not stable yet).
 1.15 01-Jan-2001  tsubai branches: 1.15.2;
Make want_resched and astpending per-CPU.
Add some per-CPU variables to cpu_info.
 1.14 14-Dec-2000  mycroft Partial syscall cleanup, as per other ports.
 1.13 28-Aug-2000  tsubai Add an argument to need_resched macro.
 1.12 06-Jul-2000  tsubai Make it compile with "options MULTIPROCESSOR".
 1.11 26-May-2000  thorpej First sweep at scheduler state cleanup. Collect MI scheduler
state into global and per-CPU scheduler state:

- Global state: sched_qs (run queues), sched_whichqs (bitmap
of non-empty run queues), sched_slpque (sleep queues).
NOTE: These may collectively move into a struct schedstate
at some point in the future.

- Per-CPU state, struct schedstate_percpu: spc_runtime
(time process on this CPU started running), spc_flags
(replaces struct proc's p_schedflags), and
spc_curpriority (usrpri of processes on this CPU).

- Every platform must now supply a struct cpu_info and
a curcpu() macro. Simplify existing cpu_info declarations
where appropriate.

- All references to per-CPU scheduler state now made through
curcpu(). NOTE: this will likely be adjusted in the future
after further changes to struct proc are made.

Tested on i386 and Alpha. Changes are mostly mechanical, but apologies
in advance if it doesn't compile on a particular platform.
 1.10 13-Oct-1999  tsubai branches: 1.10.2;
Change char *bootpath to char bootpath[].
 1.9 10-Aug-1999  thorpej branches: 1.9.2;
Define cpu_number() as discussed on tech-smp.
 1.8 06-May-1999  tsubai Remove unused codes.
 1.7 03-May-1999  tsubai Provide CACHELINESIZE when _STANDALONE is defined too.
 1.6 17-Apr-1999  ws Modify syncicache on PowerPC from an inline to a real function.
Support different cache line sizes with the same object code in userland.
While here, move the function to implementation name space.
 1.5 25-Oct-1998  tsubai branches: 1.5.8;
Fix -Wpointer-arith warning.
 1.4 25-Oct-1998  tsubai Fix miscounting of length in syncicache().
 1.3 06-Oct-1998  thorpej configure() prototype is in <sys/device.h>
 1.2 24-Jun-1998  tsubai Fix CLKF_INTR() (from tsutsui@ceres.dti.ne.jp)
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.5.8.1 21-Jun-1999  thorpej Sync w/ -current.
 1.9.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.10.2.3 27-Mar-2001  bouyer Sync with HEAD.
 1.10.2.2 05-Jan-2001  bouyer Sync with HEAD
 1.10.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.15.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.15.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.17.2.1 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.18.160.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.18.6.2 26-Aug-2001  matt Make all powerpc ports use a common Makefile.powerpc (except walnut)
Enforce -Wmissing-prototypes -Wstrict-prototypes for all ppc ports.
Split out macppc cpu support and make common to mpc6xx ports. Make
other mpc6xx ports use it. Add evcnts for mpc6xx traps.
 1.18.6.1 26-Aug-2001  matt file cpu.h was added on branch nathanw_sa on 2001-08-26 02:47:38 +0000
 1.19.52.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.20.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1 05-Feb-2003  nakayama Replace machine/rnd.h with more appropriate name to share it
with cycle counter based microtime in kern/kern_microtime.c.
 1.2 26-Apr-2011  joerg Remove Darwin, MACH and Mach-O support.
 1.1 08-Dec-2002  manu branches: 1.1.2; 1.1.136; 1.1.142;
A working fork/vfork implementation. Darwin fork differs from our fork by
two ways:
- the child gets its pid as retval[0] (userland stub will turn it into a 0),
retval[1] is 1 and it is 0 in the parent.
- in the child, the fork syscall is successful, hence we must skip the next
instruction.
 1.1.142.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.136.1 31-May-2011  rmind sync with head
 1.1.2.2 11-Dec-2002  thorpej Sync with HEAD.
 1.1.2.1 08-Dec-2002  thorpej file darwin_machdep.h was added on branch nathanw_sa on 2002-12-11 06:10:51 +0000
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.16 03-Apr-2019  christos centralize setdisklabel(9)
 1.15 30-Aug-2011  bouyer branches: 1.15.54;
Add getlabelusesmbr(), as proposed in
http://mail-index.netbsd.org/tech-userlevel/2011/08/25/msg005404.html
This is used by disk tools such as disklabel(8) to dynamically decide is
the undelyling platform uses a disklabel-in-mbr-partition or not
(instead of using a compile-time list of ports).
getlabelusesmbr() reads the sysctl kern.labelusesmbr, takes its value from the
machdep #define LABELUSESMBR.
For evbmips, make LABELUSESMBR 1 if the platform uses pmon
as bootloader, and 0 (the previous value) otherwise.
 1.14 11-Dec-2005  christos merge ktrace-lwp.
 1.13 08-Nov-2004  mbw Reverting.
Apparently these patches cause problems.
 1.12 07-Nov-2004  mbw Add disklabel recognition for another Apple file type
"BZB_ROOTFS_NEW 0xc000"
Also closes PR 10046
 1.11 10-May-2003  thorpej branches: 1.11.2;
Remove redundant bounds_check_with_label() prototype.
 1.10 10-Sep-2002  dbj added defines for new partition types found in the wild:
"Apple_UFS"
"Apple_Boot"
"Apple_Loader"
"Linux"
"Linux_swap"
removed duplicate define for "Apple_Patches"
 1.9 19-Jun-2002  itojun correct writedisklabel() on MBR-partitioned disk.

while here, correct labelsector/offset mismatch in writedisklabel,
when readdisklabel() have found the label at nonstandard location
(due to magic number search). a lot of other ports have the same problem.
 1.8 23-Mar-2002  wrstuden branches: 1.8.2;
Add support for storing NetBSD file system type codes inside of
an Apple Partition entry. As proposed to port-macppc. Also some
prototype modernization for touched routines.

Method is that NETBSD, NETBSD/MACPPC, NETBSD/MAC68K partitions,
if they have a valid bzb, contain all of the info we shove in a NetBSD
disklabel partition entry. defines in disklabel.h cover aliasing
some of the bzb fields.
 1.7 27-Feb-2001  matt branches: 1.7.4; 1.7.8;
Add Apple_FWDRIVER.
 1.6 23-Aug-2000  wrstuden Correctly spell DRIVER. Noted by Tsubai. :-)
 1.5 18-Aug-2000  wrstuden Add some new partition types, and flags. Have the Apple Partition Map
code ignore the new partition types, and look for the new "USR" partition
flag.

From SUNAGAWA Keiki <kei_sun@ba2.so-net.ne.jp> with slight changes by me.

Closes PR port-macppc/10046
 1.4 27-Sep-1999  wrstuden branches: 1.4.2; 1.4.12;
Add support for reading MacOS-partitioned disks. Stolen from the mac68k
port, but modified in that macppc searches for netbsd-partitioned disks
before MacOS partitioned disks, since installboot generates a fake MacOS
partition table which isn't the one we want to use.
 1.3 27-Jan-1999  thorpej branches: 1.3.2;
Use <sys/disklabel_mbr.h>.
 1.2 07-Jul-1998  thorpej Use fixed-size types.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3.2.1 19-Oct-1999  he Pull up revision 1.4 (requested by wrstuden):
Add support for reading MacOS-partitioned disks. Stolen from the mac68k
port, but modified in that macppc searches for netbsd-partitioned
disks before MacOS partitioned disks, since installboot generates a
fake MacOS partition table which isn't the one we want to use.
 1.4.12.1 28-Aug-2000  wrstuden Pull in some changes for Apple partitioning. Approved by thorpej.

> Log Message:
> Add some new partition types, and flags. Have the Apple Partition Map
> code ignore the new partition types, and look for the new "USR" partition
> flag.
>
> >From SUNAGAWA Keiki <kei_sun@ba2.so-net.ne.jp> with slight changes by me.
>
> Closes PR port-macppc/10046
 1.4.2.2 12-Mar-2001  bouyer Sync with HEAD.
 1.4.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.7.8.3 17-Sep-2002  nathanw Catch up to -current.
 1.7.8.2 01-Aug-2002  nathanw Catch up to -current.
 1.7.8.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.7.4.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.7.4.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.7.4.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.8.2.1 16-Jul-2002  gehenna catch up with -current.
 1.11.2.1 14-Nov-2004  skrll Sync with HEAD.
 1.15.54.1 10-Jun-2019  christos Sync with HEAD
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3 17-Mar-2000  mycroft In the `MY THAT'S GROSS' department...
Eliminate the recursive include of machine/endian.h from sys/endian.h.
 1.2 29-May-1998  tsubai branches: 1.2.14;
Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.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.1 17-Mar-2000  mycroft branches: 1.1.6;
In the `MY THAT'S GROSS' department...
Eliminate the recursive include of machine/endian.h from sys/endian.h.
 1.1.6.2 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.1.6.1 17-Mar-2000  bouyer file endian_machdep.h was added on branch thorpej_scsipi on 2000-11-20 20:12:59 +0000
 1.1 20-Dec-2015  christos branches: 1.1.2; 1.1.18;
new powerpc fenv.h
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Dec-2015  jdolecek file fenv.h was added on branch tls-maxphys on 2017-12-03 11:36:25 +0000
 1.1.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1 20-Dec-2015  skrll file fenv.h was added on branch nick-nhusb on 2015-12-27 12:09:38 +0000
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.7 07-Sep-2015  dholland Final bit of PR 41200: headers that declare ioctls should include sys/ioccom.h.
This covers most if not all of the MD headers.

XXX: a lot of the ioctl definitions in some of these files are cutpasted.
 1.6 08-Feb-2011  rmind branches: 1.6.14; 1.6.32;
Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.5 04-Mar-2007  christos branches: 1.5.66; 1.5.72; 1.5.74;
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 25-Apr-2004  fair branches: 1.3.12;
Protect against multiple inclusion (kdump, ktruss, etc., make
procedures are not smart enough to spot this file as being the same
when it appears in both include/{macppc,machine}/grfioctl.h
 1.2 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.1 15-May-1998  tsubai branches: 1.1.48;
Initial import of macppc port.
 1.1.48.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.48.2 18-Sep-2004  skrll Sync with HEAD.
 1.1.48.1 03-Aug-2004  skrll Sync with HEAD
 1.3.12.1 03-Sep-2007  yamt sync with head.
 1.4.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.5.74.1 17-Feb-2011  bouyer Sync with HEAD
 1.5.72.1 06-Jun-2011  jruoho Sync with HEAD.
 1.5.66.1 05-Mar-2011  rmind sync with head
 1.6.32.1 22-Sep-2015  skrll Sync with HEAD
 1.6.14.1 03-Dec-2017  jdolecek update from HEAD
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.1 14-Apr-2001  kleink branches: 1.1.2; 1.1.4; 1.1.12;
Add definitions of C99 integer constant macros.
 1.1.12.2 14-Apr-2001  kleink Add definitions of C99 integer constant macros.
 1.1.12.1 14-Apr-2001  kleink file int_const.h was added on branch nathanw_sa on 2001-04-14 22:38:40 +0000
 1.1.4.1 21-Jun-2001  nathanw Catch up to -current.
 1.1.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.1.2.1 14-Apr-2001  bouyer file int_const.h was added on branch thorpej_scsipi on 2001-04-21 17:53:59 +0000
 1.1 15-Apr-2001  kleink branches: 1.1.2; 1.1.4; 1.1.12;
Add definitions of C99 integer format conversion macros.
XXX Fastest minimum-width integer types haven't been decided upon yet.
 1.1.12.2 15-Apr-2001  kleink Add definitions of C99 integer format conversion macros.
XXX Fastest minimum-width integer types haven't been decided upon yet.
 1.1.12.1 15-Apr-2001  kleink file int_fmtio.h was added on branch nathanw_sa on 2001-04-15 17:13:13 +0000
 1.1.4.1 21-Jun-2001  nathanw Catch up to -current.
 1.1.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.1.2.1 15-Apr-2001  bouyer file int_fmtio.h was added on branch thorpej_scsipi on 2001-04-21 17:53:59 +0000
 1.1 15-Apr-2001  kleink branches: 1.1.2; 1.1.4; 1.1.12;
Add definitions of C99 specified-width integer type limits.
XXX Fastest minimum-width integer types haven't been decided upon yet.
 1.1.12.2 15-Apr-2001  kleink Add definitions of C99 specified-width integer type limits.
XXX Fastest minimum-width integer types haven't been decided upon yet.
 1.1.12.1 15-Apr-2001  kleink file int_limits.h was added on branch nathanw_sa on 2001-04-15 15:29:09 +0000
 1.1.4.1 21-Jun-2001  nathanw Catch up to -current.
 1.1.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.1.2.1 15-Apr-2001  bouyer file int_limits.h was added on branch thorpej_scsipi on 2001-04-21 17:53:59 +0000
 1.1 14-Apr-2001  kleink branches: 1.1.2; 1.1.4; 1.1.12;
Add definitions of C99 minimum-width and greatest-width integer types.
XXX Fastest minimum-width integer types haven't been decided upon yet.
 1.1.12.2 14-Apr-2001  kleink Add definitions of C99 minimum-width and greatest-width integer types.
XXX Fastest minimum-width integer types haven't been decided upon yet.
 1.1.12.1 14-Apr-2001  kleink file int_mwgwtypes.h was added on branch nathanw_sa on 2001-04-14 12:19:56 +0000
 1.1.4.1 21-Jun-2001  nathanw Catch up to -current.
 1.1.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.1.2.1 14-Apr-2001  bouyer file int_mwgwtypes.h was added on branch thorpej_scsipi on 2001-04-21 17:54:00 +0000
 1.1 26-Jun-2000  kleink branches: 1.1.2;
Add <machine/int_types.h>, which provides namespace-pure definitions
of exact-width integer types.
 1.1.2.2 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.1.2.1 26-Jun-2000  bouyer file int_types.h was added on branch thorpej_scsipi on 2000-11-20 20:12:59 +0000
 1.32 20-Apr-2013  macallan bump ICU_LEN
from Phileas Fogg
 1.31 18-Apr-2013  macallan support OpenPIC variant found in PowerMac G5s
from Phileas Fogg
 1.30 17-Jun-2011  matt branches: 1.30.2; 1.30.12;
intr.h must not include cpu due to deadly embrace with SOFTINT_COUNT.
Cleanup intr.h so MD definitions can overload common definitions.
Rototill pic/intr.c. Virtual IRQs can now be reclaimed. separate virq
from hwirq from picirq. Redo intr mask calculations.
tested on pmppc and macppc (MP).
 1.29 17-Jun-2011  matt Make _LOCORE exclude more stuff.
 1.28 05-Jun-2011  matt Remove <machine/atomic.h>; use <sys/atomic.h> instead.
Add <powerpc/cpuset.h> (for mpc85xx pmap).
Add some initial MP code for mpc85xx
Rework ipi code to be common across all ppcs
Change PPC to keep curlwp in %r13 while in the kernel.
Move astpending from cpu_info to mdlwp
Improve cpu_need_resched to be more MP friendly.
 1.27 28-Apr-2008  martin branches: 1.27.22; 1.27.28; 1.27.32;
Remove clause 3 and 4 from TNF licenses
 1.26 17-Oct-2007  garbled branches: 1.26.16; 1.26.18; 1.26.20;
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.25 14-Jul-2007  ad branches: 1.25.8; 1.25.10; 1.25.12; 1.25.14;
Generic soft interrupts are mandatory.
 1.24 16-Feb-2007  ad branches: 1.24.6; 1.24.14;
Remove spllowersoftclock() and CLKF_BASEPRI(), and always dispatch callouts
via a soft interrupt. In the near future, softclock will be run from process
context.
 1.23 21-Dec-2006  yamt merge yamt-splraiseipl branch.

- finish implementing splraiseipl (and makeiplcookie).
http://mail-index.NetBSD.org/tech-kern/2006/07/01/0000.html
- complete workqueue(9) and fix its ipl problem, which is reported
to cause audio skipping.
- fix netbt (at least compilation problems) for some ports.
- fix PR/33218.
 1.22 11-Dec-2005  christos branches: 1.22.20; 1.22.22;
merge ktrace-lwp.
 1.21 24-Mar-2004  matt branches: 1.21.16;
Add latent generic soft interrupt support.
 1.20 03-Sep-2003  matt Move CLKF_BASEPRI to machine specific <intr.h> file since it depends on
the encoding of the spl for the port.
 1.19 25-Jun-2003  dyoung branches: 1.19.2;
Bracket the opt_multiprocessor.h #include with #ifdef _KERNEL_OPT.
It won't compile, otherwise. I figure this is right because it's
done everywhere else.
 1.18 23-Jun-2003  martin Make sure to include opt_foo.h if a defflag option FOO is used.
 1.17 16-Jun-2003  thorpej Rename IPL_IMP -> IPL_VM.
 1.16 02-Feb-2003  matt Perform a rototill of the powerpc code. Mandate use of SPRG0 to store
a pointer to current cpu's cpu_info structure. Use cpu_info for
intstk,intr_depth,still_stk,idle_pcb,curpcb,curlwp,etal even on
non-MULTIPROCESSOR machines. Add common macros GET_CPUINFO and
INIT_CPUINFO to get and initialize the cpu_info struct on startup. Make
ibm4xx use the standard <powerpc/frame.h>. Use IFRAME_xx in ibm4xx
trap_subr.S instead of explicit magic offsets. Move INTSTK and SPILLSTK
to std.<platform>. Change faultbuf to a struct instead of an array.

On MPC6XX cpus, stop using the vector page for temporary space and use
reserved space in cpu_info.
 1.15 28-Jul-2002  chs restructure the FPU and AltiVEC code so that it works for MP.
 1.14 05-Jul-2002  matt Peform a rototill over the powerpc-based ports.

Move the trap/vector initialization for MPC6xx ports to mpc6xx_machdep.c
Also move softnet, install_extintr, mapiodev, kvtop. Add common BAT
initialization code.

Add user Altivec support.

Fix calls to OF_call_method in macppc/macppc/machdep.c.

Use ci_fpuproc in cpu_info instead of separate fpuproc.

Add separate syscall.c and defined __HAVE_SYSCALL_INTERN.
 1.13 08-Jun-2001  matt branches: 1.13.2; 1.13.8; 1.13.12; 1.13.16;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.12 13-Apr-2001  thorpej Remove the use of splimp() from the NetBSD kernel. splnet()
and only splnet() is allowed for the protection of data structures
used by network devices.
 1.11 22-Mar-2001  tsubai Merge my MP tree. At this point, Daystar dual 604 card (i.e. Power Macintosh
9500/180MP and 9600/200MP) runs at least into single-user mode, possibly
multi-user mode (not stable yet).
 1.10 14-Jan-2001  thorpej branches: 1.10.2;
Make sure everybody has an splvm() and equate it with splimp() (splimp()
is the historical name for this interrupt level, and the historical name
is going to go away in the near future).
 1.9 29-Nov-2000  tsubai Make spl functions no-inline. This saves size and even it runs faster on
some systems.
 1.8 22-Aug-2000  thorpej Add spllock(). See spl(9) for details.
 1.7 21-Aug-2000  thorpej Make sure we provide splsched() as described in spl(9).
 1.6 11-Feb-2000  tsubai Change ICU_LEN to 64.
 1.5 05-Aug-1999  thorpej branches: 1.5.2;
Change the semantics of splsoftclock() to be like other spl*() functions,
that is priority is rasied. Add a new spllowersoftclock() to provide the
atomic drop-to-softclock semantics that the old splsoftclock() provided,
and update calls accordingly.

This fixes a problem with using the "rnd" pseudo-device from within
interrupt context to extract random data (e.g. from within the softnet
interrupt) where doing so would incorrectly unblock interrupts (causing
all sorts of lossage).

XXX 4 platforms do not have priority-raising capability: newsmips, sparc,
XXX sparc64, and VAX. This platforms still have this bug until their
XXX spl*() functions are fixed.
 1.4 11-Jan-1999  tsubai Count clock interrupts.
 1.3 15-Aug-1998  mycroft Assign my copyrights to TNF.
 1.2 18-Jul-1998  is Switching dev/ic/lpt.c to use spllpt() instead of spltty(). It doesn't use
tty structures, and on some machines (namely the DraCo internal lpt, and some
multi-i/o boards for Amigas and DraCos), tying spltty to the pretty high printer
interupt level would hurt serial performance.

On all affected ports but Amiga, spllpt() has been defined in machine/intr.h
to be spltty(), thus preserving old behaviour. Portmasters are encouraged to
change is, if they feel something else is better (e.g., one of its own were
possible).
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.5.2.5 21-Apr-2001  bouyer Sync with HEAD
 1.5.2.4 27-Mar-2001  bouyer Sync with HEAD.
 1.5.2.3 18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.5.2.2 08-Dec-2000  bouyer Sync with HEAD.
 1.5.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.10.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.10.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.13.16.2 31-Aug-2002  gehenna catch up with -current.
 1.13.16.1 16-Jul-2002  gehenna catch up with -current.
 1.13.12.1 17-Mar-2002  thorpej IPL_IMP -> IPL_VM
 1.13.8.2 01-Aug-2002  nathanw Catch up to -current.
 1.13.8.1 08-Jun-2001  nathanw file intr.h was added on branch nathanw_sa on 2002-08-01 02:42:25 +0000
 1.13.2.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.19.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.19.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.19.2.1 03-Aug-2004  skrll Sync with HEAD
 1.21.16.4 27-Oct-2007  yamt sync with head.
 1.21.16.3 03-Sep-2007  yamt sync with head.
 1.21.16.2 26-Feb-2007  yamt sync with head.
 1.21.16.1 30-Dec-2006  yamt sync with head.
 1.22.22.1 02-Oct-2006  yamt implement splraiseipl/makeiplcookie for macppc.
 1.22.20.1 12-Jan-2007  ad Sync with head.
 1.24.14.6 10-Oct-2007  garbled New ppcoea-MI IPI infrastructure. This is similar to the PIC
infrastructure, but simplified greatly.

Also, convert macppc (the only port currently using IPI's) over to this new
infrastructure. Still some minor work left to do here.
 1.24.14.5 03-Oct-2007  garbled Sync with HEAD
 1.24.14.4 02-Aug-2007  macallan sync with HEAD
 1.24.14.3 08-May-2007  garbled Make powerpc/intr.h more common than it previously was. Having done
that, delete all the duplicate entries from the 4 ports that have
converted to shared pic code. Also, commit a minor change to sandpoint
that I forgot to commit earlier (delete an unused variable)
 1.24.14.2 04-May-2007  macallan move some interrupt-related stuff over to powerpc/intr.h
 1.24.14.1 02-May-2007  macallan order priorities like everyone else - low number, low priority - high
number, high priority
also add prototypes for PIC probe/setup functions
 1.24.6.2 23-Oct-2007  ad Sync with head.
 1.24.6.1 15-Jul-2007  ad Sync with head.
 1.25.14.1 25-Oct-2007  bouyer Sync with HEAD.
 1.25.12.1 18-Oct-2007  yamt sync with head.
 1.25.10.1 06-Nov-2007  matt sync with HEAD
 1.25.8.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.26.20.1 16-May-2008  yamt sync with head.
 1.26.18.1 18-May-2008  yamt sync with head.
 1.26.16.1 02-Jun-2008  mjf Sync with HEAD.
 1.27.32.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.27.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.27.22.1 12-Jun-2011  rmind sync with head
 1.30.12.1 23-Jun-2013  tls resync from head
 1.30.2.1 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.3 15-Jul-2018  maxv Retire ipkdb entirely. The option was removed from the config files
yesterday.

ok kamil christos
 1.2 29-May-1998  tsubai branches: 1.2.60; 1.2.238;
Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.238.1 10-Jun-2019  christos Sync with HEAD
 1.2.60.1 28-Jul-2018  pgoyette Sync with HEAD
 1.2 28-Mar-1999  tsubai Remove unused file.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.5 11-Jun-2003  hamajima Support the PowerBook G4 12-inch (and maybe 17-inch).
Kauai ATA, new obio chip, and Japanese keymap for WSDISPLAY_COMPAT_RAWKBD

I tested only 12-inch Japanese model.
 1.4 13-Aug-2002  aymeric akbd's now have a raw mode, and implement the WSKBDIO_SETMODE ioctl.
Adapted from OpenBSD.
 1.3 05-Jul-2002  matt Peform a rototill over the powerpc-based ports.

Move the trap/vector initialization for MPC6xx ports to mpc6xx_machdep.c
Also move softnet, install_extintr, mapiodev, kvtop. Add common BAT
initialization code.

Add user Altivec support.

Fix calls to OF_call_method in macppc/macppc/machdep.c.

Use ci_fpuproc in cpu_info instead of separate fpuproc.

Add separate syscall.c and defined __HAVE_SYSCALL_INTERN.
 1.2 05-Jun-2002  augustss Make it possible not to have akbd.
 1.1 15-May-1998  tsubai branches: 1.1.28; 1.1.32; 1.1.40; 1.1.42;
Initial import of macppc port.
 1.1.42.2 25-Jun-2003  grant Pull up revision 1.5 (requested by hamajima in ticket #1338):

This change supports Japanese layout keyboard for
WSDISPLAY_COMPAT_RAWKBD on macppc.
 1.1.42.1 19-Jun-2003  grant Pull up revision 1.4 (requested by aymeric in ticket #1324):

akbd's now have a raw mode, and implement the WSKBDIO_SETMODE ioctl.
Adapted from OpenBSD.
 1.1.40.3 31-Aug-2002  gehenna catch up with -current.
 1.1.40.2 16-Jul-2002  gehenna catch up with -current.
 1.1.40.1 14-Jul-2002  gehenna catch up with -current.
 1.1.32.3 27-Aug-2002  nathanw Catch up to -current.
 1.1.32.2 01-Aug-2002  nathanw Catch up to -current.
 1.1.32.1 20-Jun-2002  nathanw Catch up to -current.
 1.1.28.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.1.28.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.7 28-Feb-2021  thorpej - When starting the boot program, cache a bunch of OFW frequently used
ihandles / phandles, rather than fetching them all the time.
- Change the signature of OF_call_method() to take an array of cells for
the inputs and outputs, rather than using variadic arguments. This
makes it much easier to use OF_call_method() when the format of the
arguments passed to a given method are determined at run-time
(due to e.g. #address-cells).
- Properly inform OpenFirmware where the kernel is loaded by using
"claim" on /chosen/memory and, if running in virtual-mode, using
"claim" on /chosen/mmu to reserve the VA, and "map" on /chosen/mmu
to enter the translation. (The kernel is still always mapped VA==PA.)
 1.6 06-Aug-2014  joerg branches: 1.6.40;
Consistently define WARN in a way that passes format string checks, i.e.
always uses the same number of arguments as given in the format string.
 1.5 28-Apr-2008  martin branches: 1.5.44; 1.5.60;
Remove clause 3 and 4 from TNF licenses
 1.4 25-Jan-2006  christos branches: 1.4.72; 1.4.74; 1.4.76;
free -> dealloc
unsigned -> size_t for alloc/dealloc
 1.3 10-Apr-2002  tsutsui branches: 1.3.26; 1.3.38;
Disable BOOT_AOUT.
 1.2 31-Oct-2001  thorpej branches: 1.2.2;
Split elf32 vs. elf64 handling in loadfile(), including support for
each separately and explicitly. BOOT_ELF is now BOOT_ELF32 and
BOOT_ELF64, and ELFSIZE should no longer be defined in loadfile_machdep.h.
 1.1 29-Apr-1999  tsubai branches: 1.1.2; 1.1.18; 1.1.20;
Add loadfile_machdep.h
 1.1.20.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.1.18.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.1.18.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.2.2.2 17-Apr-2002  nathanw Catch up to -current.
 1.2.2.1 31-Oct-2001  nathanw file loadfile_machdep.h was added on branch nathanw_sa on 2002-04-17 00:03:42 +0000
 1.3.38.1 01-Feb-2006  yamt sync with head.
 1.3.26.1 21-Jun-2006  yamt sync with head.
 1.4.76.1 16-May-2008  yamt sync with head.
 1.4.74.1 18-May-2008  yamt sync with head.
 1.4.72.1 02-Jun-2008  mjf Sync with HEAD.
 1.5.60.1 10-Aug-2014  tls Rebase.
 1.5.44.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.40.1 03-Apr-2021  thorpej Sync with HEAD.
 1.1 29-Apr-2000  thorpej branches: 1.1.6;
Require that each each MACHINE/MACHINE_ARCH supply a lock.h. This file
contains the values __SIMPLELOCK_LOCKED and __SIMPLELOCK_UNLOCKED, which
replace the old SIMPLELOCK_LOCKED and SIMPLELOCK_UNLOCKED. These files
are also required to supply inline functions __cpu_simple_lock(),
__cpu_simple_lock_try(), and __cpu_simple_unlock() if locking is to be
supported on that platform (i.e. if MULTIPROCESSOR is defined in the
_KERNEL case). Change these functions to take an int * (&alp->lock_data)
rather than the struct simplelock * itself.

These changes make it possible for userland to use the locking primitives
by including <machine/lock.h>.
 1.1.6.2 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.1.6.1 29-Apr-2000  bouyer file lock.h was added on branch thorpej_scsipi on 2000-11-20 20:12:59 +0000
 1.1 30-Nov-2024  christos branches: 1.1.4;
Create a new header lwp_private.h to contain _lwp_getprivate_fast,
_lwp_gettcb_fast, _lwp_settcb and remove them from mcontext.h, so that:
1. we don't need special hacks to hide them
2. we can include <lwp.h> where needed to get the necessary prototypes
without redefining them locally.
 1.1.4.2 02-Aug-2025  perseant Sync with HEAD
 1.1.4.1 30-Nov-2024  perseant file lwp_private.h was added on branch perseant-exfatfs on 2025-08-02 05:55:51 +0000
 1.2 11-Dec-2005  christos merge ktrace-lwp.
 1.1 11-Nov-2003  manu branches: 1.1.4;
Implement mach_thread_get_state.
While we are here, try to tag machine dependent functions in header files.
also transformed darwin_ppc_*_state into mach_ppc_*_state, as this is
what they really are (COMPAT_DARWIN is on the top of COMPAT_MACH, not the
other way around)
 1.1.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 11-Nov-2003  skrll file mach_machdep.h was added on branch ktrace-lwp on 2004-08-03 10:37:30 +0000
 1.3 03-May-2001  soren PPC machine type tags haven't been used for a while.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 26-Apr-2011  joerg Remove Darwin, MACH and Mach-O support.
 1.1 30-Oct-2002  matt branches: 1.1.2; 1.1.136; 1.1.142;
Add missing file.
 1.1.142.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.136.1 31-May-2011  rmind sync with head
 1.1.2.2 11-Nov-2002  nathanw Catch up to -current
 1.1.2.1 30-Oct-2002  nathanw file macho_machdep.h was added on branch nathanw_sa on 2002-11-11 22:00:14 +0000
 1.1 23-Dec-1999  kleink branches: 1.1.6;
C99: Define a NAN macro in <math.h> which evaulates to a constant expression of
a single-precision quiet NaN; only to be defined on platforms that do support
this value.
 1.1.6.2 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.1.6.1 23-Dec-1999  bouyer file math.h was added on branch thorpej_scsipi on 2000-11-20 20:12:59 +0000
 1.2 17-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.1 05-Nov-2001  briggs branches: 1.1.2;
file mcontext.h was initially added on branch nathanw_sa.
 1.1.2.1 05-Nov-2001  briggs Initial SA support for ppc. Test-booted on sandpoint, macppc, & walnut.
mcontext and cpu_getmcontext()/cpu_setmcontext() from Klaus Klein
<kleink@netbsd.org>.
 1.2 09-Feb-2007  ad branches: 1.2.4;
Merge newlock2 to head.
 1.1 22-Dec-2006  ad branches: 1.1.2;
file mutex.h was initially added on branch newlock2.
 1.1.2.1 22-Dec-2006  ad Pull in CPU specific stubs.
 1.2.4.2 26-Feb-2007  yamt sync with head.
 1.2.4.1 09-Feb-2007  yamt file mutex.h was added on branch yamt-lazymbuf on 2007-02-26 09:07:22 +0000
 1.3 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.2 05-Feb-2001  briggs branches: 1.2.2; 1.2.132; 1.2.140; 1.2.146;
Tsubai has convinced me that openpic_init() should remain machine-dependant
as the details might differ between archs, and passing the various options
leads to some clutter.
 1.1 02-Feb-2001  briggs Split OpenPIC support into powerpc so ports only need minimal custom
configuration. openpic_init() now takes a single argument that is the
base of the OpenPIC register space.
 1.2.146.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.2.140.1 28-Apr-2009  skrll Sync with HEAD.
 1.2.132.1 04-May-2009  yamt sync with head.
 1.2.2.2 11-Feb-2001  bouyer Sync with HEAD.
 1.2.2.1 05-Feb-2001  bouyer file openpicreg.h was added on branch thorpej_scsipi on 2001-02-11 19:11:04 +0000
 1.22 31-May-2021  simonb Include "opt_param.h" (ifdef _KERNEL_OPT) everywhere that MSGBUFSIZE is
referenced since some sources include <machine/param.h>.
 1.21 26-Apr-2018  macallan branches: 1.21.18;
bump message buffer size
 1.20 23-Sep-2012  mrg branches: 1.20.36;
increase powerpc NKMEMPAGES_MAX_DEFAULT to 256MB. remove the macppc
overrides that are now the same as the powerpc default.
 1.19 10-Feb-2012  para branches: 1.19.2; 1.19.4; 1.19.6;
proper sizing of kmem_arena on different ports

PR port-i386/45946: Kernel locks up in VMEM system
 1.18 28-Jul-2011  macallan branches: 1.18.2; 1.18.6;
hiding PCI_MAGIC_IO_RANGE from userland is counter-productive
 1.17 20-Jun-2011  matt Cleanup powerpc param.h. If compiling a MODULE, ignore port-specific stuff.
Only include <machine/cpu.h> in <powerpc/param.h> at the end.
 1.16 28-Feb-2008  macallan branches: 1.16.36;
move PCI_MAGIC_IO_RANGE to a header that's actually exported to userland
 1.15 25-Dec-2007  macallan branches: 1.15.2; 1.15.6;
get rid of macppc's private pci_bus_dma_tag
 1.14 24-Dec-2007  macallan #define __HAVE_PRIVATE_PCI_BUS_DMA_TAG
 1.13 14-Nov-2001  matt branches: 1.13.32; 1.13.94; 1.13.100; 1.13.104;
Bump the default macppc MSGBUFSIZE to 12KB so we can get an entire
sequence of boot messages.
 1.12 06-Jun-2001  matt branches: 1.12.2; 1.12.8;
Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.11 30-May-2001  mrg use _KERNEL_OPT
 1.10 30-Jun-2000  itojun branches: 1.10.2;
raise MSIZE from 128 to 256.
- for sizeof(void *) == 8 arch, this is mandatory. MHLEN is too small
already (less than 80) and there are chances for unwanted packet loss due
to m_pullup restriction.
- for other cases, the change should avoid allocating clusters in most cases
(even when you have IPv4 IPsec tunnel, or IPv6 with moderate amount of
extension header)

portmasters: if your arch chokes with the change (high memory usage or
whatever), please backout the change for your arch.
 1.9 13-Feb-2000  tsubai branches: 1.9.4;
Reduce NKMEMPAGES_MAX_DEFAULT.
 1.8 11-Feb-2000  thorpej Update for the NKMEMPAGES changes.
 1.7 04-Dec-1999  ragge CL* discarding.
 1.6 13-Oct-1999  tsubai branches: 1.6.2;
Change kernel segment base to 0xf00000. Some PM9500s won't boot with the
old value (0xfffff0).
XXX I don't know why...
 1.5 18-Jul-1999  tsubai branches: 1.5.2;
Decrease default NKMEMCLUSTERS. (128MB -> 8MB)
 1.4 12-Jan-1999  tsubai branches: 1.4.2; 1.4.4;
Move MSGBUFSIZE from machdep.c to param.h
Use the last page for msgbuf instead of fixed MSGBUFADDR.
 1.3 03-Sep-1998  tsubai Remove HTABENTS definition. (calculated automatically)
 1.2 13-Aug-1998  tsubai Remove ``#define ovbcopy bcopy''. This exists in sys/systm.h now.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.4.4.1 02-Aug-1999  thorpej Update from trunk.
 1.4.2.2 20-Oct-1999  he Pull up revision 1.6 (requested by tsubai):
Move kernel segment base to 0xf00000, some Power Macintosh 9500s
won't boot witht he old value.
 1.4.2.1 20-Oct-1999  he Pull up revision 1.5 (requested by tsubai):
Fix "panic: startup: cannot allocate VM for buffers" right after
copyright message when RAM > approx. 128MB.
 1.5.2.2 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.5.2.1 21-Dec-1999  wrstuden Initial commit of recent changes to make DEV_BSIZE go away.

Runs on i386, needs work on other arch's. Main kernel routines should be
fine, but a number of the stand programs need help.

cd, fd, ccd, wd, and sd have been updated. sd has been tested with non-512
byte block devices. vnd, raidframe, and lfs need work.

Non 2**n block support is automatic for LKM's and conditional for kernels
on "options NON_PO2_BLOCKS".
 1.6.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.9.4.1 23-Jul-2000  itojun pullup from main trunc (approved by releng-1-5)

raise MSIZE from 128 to 256.
- for sizeof(void *) == 8 arch, this is mandatory. MHLEN is too small
already (less than 80) and there are chances for unwanted packet loss due
to m_pullup restriction.
- for other cases, the change should avoid allocating clusters in most cases
(even when you have IPv4 IPsec tunnel, or IPv6 with moderate amount of
extension header)

portmasters: if your arch chokes with the change (high memory usage or
whatever), please backout the change for your arch.

1.1 -> 1.2 syssrc/sys/arch/amigappc/include/param.h
1.13 -> 1.14 syssrc/sys/arch/arc/include/param.h
1.1 -> 1.2 syssrc/sys/arch/arm26/include/param.h
1.17 -> 1.18 syssrc/sys/arch/arm32/include/param.h
1.6 -> 1.7 syssrc/sys/arch/bebox/include/param.h
1.4 -> 1.5 syssrc/sys/arch/cobalt/include/param.h
1.4 -> 1.5 syssrc/sys/arch/evbsh3/include/param.h
1.2 -> 1.3 syssrc/sys/arch/hpcmips/include/param.h
1.40 -> 1.41 syssrc/sys/arch/i386/include/param.h
1.7 -> 1.8 syssrc/sys/arch/m68k/include/param.h
1.9 -> 1.10 syssrc/sys/arch/macppc/include/param.h
1.4 -> 1.5 syssrc/sys/arch/mmeye/include/param.h
1.6 -> 1.7 syssrc/sys/arch/newsmips/include/param.h
1.7 -> 1.8 syssrc/sys/arch/ofppc/include/param.h
1.23 -> 1.24 syssrc/sys/arch/pc532/include/param.h
1.32 -> 1.33 syssrc/sys/arch/pmax/include/param.h
1.7 -> 1.8 syssrc/sys/arch/powerpc/include/param.h
1.1 -> 1.2 syssrc/sys/arch/prep/include/param.h
1.1 -> 1.2 syssrc/sys/arch/sgimips/include/param.h
1.3 -> 1.4 syssrc/sys/arch/sh3/include/param.h
1.44 -> 1.45 syssrc/sys/arch/sparc/include/param.h
1.21 -> 1.22 syssrc/sys/arch/sparc64/include/param.h
1.43 -> 1.44 syssrc/sys/arch/vax/include/param.h
 1.10.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.12.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.12.8.1 06-Jun-2001  nathanw file param.h was added on branch nathanw_sa on 2002-01-08 00:26:10 +0000
 1.12.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.13.104.1 26-Dec-2007  ad Sync with head.
 1.13.100.1 18-Feb-2008  mjf Sync with HEAD.
 1.13.94.1 23-Mar-2008  matt sync with HEAD
 1.13.32.1 17-Mar-2008  yamt sync with head.
 1.15.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.15.2.1 24-Mar-2008  keiichi sync with head.
 1.16.36.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.18.6.1 18-Feb-2012  mrg merge to -current.
 1.18.2.2 30-Oct-2012  yamt sync with head
 1.18.2.1 17-Apr-2012  yamt sync with head
 1.19.6.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.19.4.1 01-Nov-2012  matt sync with netbsd-6-0-RELEASE.
 1.19.2.1 01-Oct-2012  riz Pull up following revision(s) (requested by mrg in ticket #575):
sys/arch/powerpc/include/param.h: revision 1.28
sys/arch/macppc/include/param.h: revision 1.20
increase powerpc NKMEMPAGES_MAX_DEFAULT to 256MB. remove the macppc
overrides that are now the same as the powerpc default.
 1.20.36.1 02-May-2018  pgoyette Synch with HEAD
 1.21.18.1 17-Jun-2021  thorpej Sync w/ HEAD.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.22 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.21 28-Feb-2008  macallan branches: 1.21.36;
move PCI_MAGIC_IO_RANGE to a header that's actually exported to userland
 1.20 27-Feb-2008  macallan add a #define to select at which offset display drivers' mmap() methods
return the resp. IO range so X can access stuff lie VGA registers
 1.19 17-Oct-2007  garbled branches: 1.19.12; 1.19.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.18 11-Dec-2005  christos branches: 1.18.30; 1.18.38; 1.18.48; 1.18.50; 1.18.52; 1.18.54;
merge ktrace-lwp.
 1.17 29-Jul-2004  drochner branches: 1.17.12;
remove now unnecessary "pci_enumerate_bus" definitions
 1.16 15-May-2002  thorpej branches: 1.16.10;
Let machine-dependent code specify how to enumerate the bus.
Currently, everyone uses pci_enumerate_bus_generic().
 1.15 19-Jun-2001  simonb branches: 1.15.2; 1.15.8;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.14 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.13 28-Dec-2000  sommerfeld branches: 1.13.2;
Change pci_intr_map to get interrupt source information from a "struct
pci_attach_args *" instead of from four separate parameters which in
all cases were extracted from the same "struct pci_attach_args".

This both simplifies the driver api, and allows for alternate PCI
interrupt mapping schemes, such as one using the tables described in
the Intel Multiprocessor Spec which describe interrupt wirings for
devices behind pci-pci bridges based on the device's location rather
the bridge's location.

Tested on alpha and i386; welcome to 1.5Q
 1.12 04-Jun-2000  cgd Implement the more flexiable `evcnt' interface as discussed (briefly) on
tech-kern and now documented in evcnt(9).
 1.11 01-Jun-2000  cgd kill __P in these files. (I had to look at them anyway with an eye for
adding some protos... and adding them with __P seems wrong, but mixing
__P and not __P in the same file seems wrong too, so...)
 1.10 03-Feb-2000  tsubai branches: 1.10.2;
* Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.9 01-Feb-2000  danw Use device_register to find the boot device more reliably. Should now work
on anything it's possible to boot from that we have a driver for.
 1.8 06-May-1999  thorpej branches: 1.8.2;
Allow pci_init() to be called twice, once just to find the PCI-Host
bridges and determine the "pci chipset" values (for making PCI tags),
and again to actually map the configuration space registers.
 1.7 05-May-1999  thorpej Add a bus space tag for PCI memory space to the pci_bridge structure.
 1.6 19-Mar-1999  cgd branches: 1.6.2;
Moved from arch/macppc/pci/pci_machdep.h,v
 1.5 15-Oct-1998  tsubai Set PCI bus number correctly.
 1.4 15-Aug-1998  mycroft Make copyright notices with my name consistent.
 1.3 17-Jul-1998  tsubai Add bus_dma support.
 1.2 13-Jul-1998  tsubai Add support for Motorola MPC106.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.6.2.2 06-May-1999  perry branches: 1.6.2.2.2;
pullup 1.7->1.8 (thorpej)
 1.6.2.1 06-May-1999  perry pullup 1.6->1.7 (thorpej)
 1.6.2.2.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.8.2.2 05-Jan-2001  bouyer Sync with HEAD
 1.8.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.10.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.13.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.15.8.2 20-Jun-2002  nathanw Catch up to -current.
 1.15.8.1 19-Jun-2001  nathanw file pci_machdep.h was added on branch nathanw_sa on 2002-06-20 03:39:36 +0000
 1.15.2.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.16.10.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.16.10.2 18-Sep-2004  skrll Sync with HEAD.
 1.16.10.1 03-Aug-2004  skrll Sync with HEAD
 1.17.12.2 17-Mar-2008  yamt sync with head.
 1.17.12.1 27-Oct-2007  yamt sync with head.
 1.18.54.1 25-Oct-2007  bouyer Sync with HEAD.
 1.18.52.1 18-Oct-2007  yamt sync with head.
 1.18.50.2 23-Mar-2008  matt sync with HEAD
 1.18.50.1 06-Nov-2007  matt sync with HEAD
 1.18.48.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.18.38.3 05-Jun-2007  matt Make macppc use the common powerpc bus_dma.c
 1.18.38.2 06-May-2007  macallan remove some now unused stuff
 1.18.38.1 06-May-2007  macallan switch macppc over to generic PCI code from arch/powerpc/pci
 1.18.30.1 23-Oct-2007  ad Sync with head.
 1.19.16.1 03-Apr-2008  mjf Sync with HEAD.
 1.19.12.1 24-Mar-2008  keiichi sync with head.
 1.21.36.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.2 05-Feb-2001  briggs Share a single pio.h instead of having 4 nearly-identical copies.
 1.1 15-May-1998  tsubai branches: 1.1.14;
Initial import of macppc port.
 1.1.14.1 11-Feb-2001  bouyer Sync with HEAD.
 1.9 09-Jan-2008  garbled Mac doesn't need the special hack for the bridge mode prototype anymore.
 1.8 05-Aug-2006  sanjayl branches: 1.8.34; 1.8.40; 1.8.48;
1st cut of Powermac G5 support (uses bridge mode).
 1.7 03-Feb-2003  matt branches: 1.7.18; 1.7.32; 1.7.36;
Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea).
 1.6 03-Feb-2003  matt More cleanup for OLDPMAP.
 1.5 09-Mar-2002  chs switch all mpc6xx powerpc ports to NEWPMAP by default.
the old pmap is still available with the OLDPMAP option.
 1.4 10-Jun-2001  tsubai branches: 1.4.2; 1.4.8;
Make the new pmap optional. Use the old (stable!) pmap by default.
 1.3 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.2 29-May-1998  tsubai branches: 1.2.26;
Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.26.1 21-Jun-2001  nathanw Catch up to -current.
 1.4.8.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.4.8.1 10-Jun-2001  nathanw file pmap.h was added on branch nathanw_sa on 2002-04-01 07:40:54 +0000
 1.4.2.1 16-Mar-2002  jdolecek Catch up with -current.
 1.7.36.1 11-Aug-2006  yamt sync with head
 1.7.32.1 09-Sep-2006  rpaulo sync with head
 1.7.18.2 21-Jan-2008  yamt sync with head
 1.7.18.1 30-Dec-2006  yamt sync with head.
 1.8.48.1 10-Jan-2008  bouyer Sync with HEAD
 1.8.40.1 18-Feb-2008  mjf Sync with HEAD.
 1.8.34.1 23-Mar-2008  matt sync with HEAD
 1.2 12-Jul-2018  maxv Remove the kernel PMC code. Sent yesterday on tech-kern@.

This change:

* Removes "options PERFCTRS", the associated includes, and the associated
ifdefs. In doing so, it removes several XXXSMPs in the MI code, which is
good.

* Removes the PMC code of ARM XSCALE.

* Removes all the pmc.h files. They were all empty, except for ARM XSCALE.

* Reorders the x86 PMC code not to rely on the legacy pmc.h file. The
definitions are put in sysarch.h.

* Removes the kern/sys_pmc.c file, and along with it, the sys_pmc_control
and sys_pmc_get_info syscalls. They are marked as OBSOL in kern,
netbsd32 and rump.

* Removes the pmc_evid_t and pmc_ctr_t types.

* Removes all the associated man pages. The sets are marked as obsolete.
 1.1 07-Aug-2002  briggs branches: 1.1.2; 1.1.4; 1.1.6; 1.1.202; 1.1.204;
Implement pmc(9) -- An interface to hardware performance monitoring
counters. These counters do not exist on all CPUs, but where they
do exist, can be used for counting events such as dcache misses that
would otherwise be difficult or impossible to instrument by code
inspection or hardware simulation.

pmc(9) is meant to be a general interface. Initially, the Intel XScale
counters are the only ones supported.
 1.1.204.1 10-Jun-2019  christos Sync with HEAD
 1.1.202.1 28-Jul-2018  pgoyette Sync with HEAD
 1.1.6.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.1.6.1 07-Aug-2002  jdolecek file pmc.h was added on branch kqueue on 2002-09-06 08:37:11 +0000
 1.1.4.2 31-Aug-2002  gehenna catch up with -current.
 1.1.4.1 07-Aug-2002  gehenna file pmc.h was added on branch gehenna-devsw on 2002-08-31 13:45:08 +0000
 1.1.2.2 13-Aug-2002  nathanw Catch up to -current.
 1.1.2.1 07-Aug-2002  nathanw file pmc.h was added on branch nathanw_sa on 2002-08-13 02:18:28 +0000
 1.8 13-May-2013  macallan get rid of mem_region.start_hi - if we can deal with 64bit addresses then
paddr_t is already 64bit anyway
 1.7 14-Mar-2009  dsl branches: 1.7.12; 1.7.22;
Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.6 05-Aug-2006  sanjayl branches: 1.6.62; 1.6.70; 1.6.76;
1st cut of Powermac G5 support (uses bridge mode).
 1.5 11-Dec-2005  christos branches: 1.5.4; 1.5.8;
merge ktrace-lwp.
 1.4 23-Oct-2004  thorpej branches: 1.4.12;
Centralize the declaration of booted_device and booted_partition.
 1.3 01-Jun-2000  matt branches: 1.3.26;
Make booted_device global (and booted_parition for consitency).
Eliminate it from header files and other extern definitions.
 1.2 21-Aug-1998  tsubai branches: 1.2.12; 1.2.20;
vm_offset_t --> [pv]addr_t.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.20.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.2.12.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.26.1 02-Nov-2004  skrll Sync with HEAD.
 1.4.12.1 30-Dec-2006  yamt sync with head.
 1.5.8.1 11-Aug-2006  yamt sync with head
 1.5.4.1 09-Sep-2006  rpaulo sync with head
 1.6.76.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.6.70.1 28-Apr-2009  skrll Sync with HEAD.
 1.6.62.1 04-May-2009  yamt sync with head.
 1.7.22.1 23-Jun-2013  tls resync from head
 1.7.12.1 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.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.4 03-Feb-2003  matt Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea).
 1.3 06-Jun-2001  matt branches: 1.3.8;
Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.2 29-May-1998  tsubai branches: 1.2.26;
Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.26.1 21-Jun-2001  nathanw Catch up to -current.
 1.3.8.2 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.3.8.1 06-Jun-2001  matt file pte.h was added on branch nathanw_sa on 2001-06-06 17:50:16 +0000
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3 01-Jun-2000  cgd kill __P in these files. (I had to look at them anyway with an eye for
adding some protos... and adding them with __P seems wrong, but mixing
__P and not __P in the same file seems wrong too, so...)
 1.2 15-Oct-1999  tsubai branches: 1.2.2; 1.2.8; 1.2.10;
Add RCS ID.
Disable debug messages.
 1.1 15-Oct-1999  haya This is the first check-in of CardBus driver. CardBus driver contains
CardBus bus stub, YENTA PCI-CardBus bridge (cbb), 3Com 3C575TX driver
(ex) and Intel fxp driver.

TODO:
o Conform to the KNF more strictly.
o Be unified with pcmcia code as much as possible.
o Add more drivers for CardBus card, such as APA-1480 or USB card.

The affected files are listed below.

sys/arch/i386/conf/files.i386
sys/arch/macppc/conf/files.macppc
sys/conf/files
sys/dev/ic/elinkxl.c
sys/dev/ic/elinkxlvar.h
sys/dev/ic/i82365.c
sys/dev/ic/i82365var.h
sys/dev/isa/i82365_isasubr.c
sys/dev/pci/files.pci
sys/dev/pcmcia/pcmcia.c
sys/dev/pcmcia/pcmciachip.h

The added files are listed below.

sys/arch/i386/conf/CARDBUS
sys/arch/i386/include/rbus_machdep.h
sys/arch/i386/i386/rbus_machdep.c
sys/arch/macppc/include/rbus_machdep.h
sys/arch/macppc/macppc/rbus_machdep.c
sys/dev/cardbus/if_ex_cardbus.c
sys/dev/cardbus/Makefile.cardbusdevs
sys/dev/cardbus/cardbus.c
sys/dev/cardbus/cardbus_map.c
sys/dev/cardbus/cardbusdevs
sys/dev/cardbus/cardbusdevs.h
sys/dev/cardbus/cardbusdevs_data.h
sys/dev/cardbus/cardbusvar.h
sys/dev/cardbus/cardslot.c
sys/dev/cardbus/cardslotvar.h
sys/dev/cardbus/devlist2h.awk
sys/dev/cardbus/files.cardbus
sys/dev/cardbus/if_fxp_cardbus.c
sys/dev/cardbus/pccardcis.h
sys/dev/cardbus/rbus.c
sys/dev/cardbus/rbus.h
sys/dev/pci/pccbb.c
sys/dev/pci/pccbbreg.h
sys/dev/pci/pccbbvar.h
 1.2.10.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.2.8.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 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.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 16-Feb-1999  tsubai Use powerpc/reloc.h.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 05-Feb-2003  nakayama Replace machine/rnd.h with more appropriate name to share it
with cycle counter based microtime in kern/kern_microtime.c.
 1.1 11-Jun-2000  tsubai branches: 1.1.4; 1.1.6;
Add cpu_counter().
 1.1.6.2 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.1.6.1 11-Jun-2000  bouyer file rnd.h was added on branch thorpej_scsipi on 2000-11-20 20:13:00 +0000
 1.1.4.2 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.1.4.1 11-Jun-2000  minoura file rnd.h was added on branch minoura-xpg4dl on 2000-06-22 17:01:23 +0000
 1.2 09-Feb-2007  ad branches: 1.2.4;
Merge newlock2 to head.
 1.1 22-Dec-2006  ad branches: 1.1.2;
file rwlock.h was initially added on branch newlock2.
 1.1.2.1 22-Dec-2006  ad Pull in CPU specific stubs.
 1.2.4.2 26-Feb-2007  yamt sync with head.
 1.2.4.1 09-Feb-2007  yamt file rwlock.h was added on branch yamt-lazymbuf on 2007-02-26 09:07:22 +0000
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3 29-May-1998  tsubai Use arch/powerpc/.
 1.2 25-May-1998  kleink If any of _ANSI_SOURCE, _POSIX_C_SOURCE or _XOPEN_SOURCE are defined, don't
provide any identifiers other than sig_atomic_t.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.1 23-Jul-2014  alnsn branches: 1.1.2; 1.1.6;
Rename sljitarch.h to sljit_machdep.h.
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 23-Jul-2014  tls file sljit_machdep.h was added on branch tls-maxphys on 2014-08-20 00:03:11 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 23-Jul-2014  tls file sljit_machdep.h was added on branch tls-earlyentropy on 2014-08-10 06:54:01 +0000
 1.2 23-Jul-2014  alnsn Rename sljitarch.h to sljit_machdep.h.
 1.1 17-Nov-2013  alnsn branches: 1.1.2; 1.1.4; 1.1.6;
Enable sljit and bpfjit on powerpc.
 1.1.6.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.1.6.1 17-Nov-2013  yamt file sljitarch.h was added on branch yamt-pagecache on 2014-05-22 11:39:56 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 17-Nov-2013  rmind file sljitarch.h was added on branch rmind-smpnet on 2014-05-18 17:45:16 +0000
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.5 02-Mar-2010  matt Add missing <powerpc/FOO/spr.h> to a few files missed on the first pass.
Don't export <machine/spr.h> to userland, only <powerpc/spr.h>
 1.4 11-Dec-2005  christos branches: 1.4.78; 1.4.92; 1.4.98;
merge ktrace-lwp.
 1.3 17-Feb-2005  briggs branches: 1.3.2;
Install spr.h
 1.2 02-Mar-2004  kleink branches: 1.2.2; 1.2.4;
Pull in SPRs via <powerpc/spr.h> in this single instance, and dispose of
<machine/spr.h> again.
 1.1 30-Dec-2003  manu Fix PowerPC ports build with KGDB.
 1.2.4.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.2.2.1 29-Apr-2005  kent sync with -current
 1.3.2.2 17-Feb-2005  skrll Sync with HEAD.
 1.3.2.1 17-Feb-2005  skrll file spr.h was added on branch ktrace-lwp on 2005-02-17 07:10:36 +0000
 1.4.98.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.4.92.1 24-Oct-2010  jym Sync with HEAD
 1.4.78.1 11-Mar-2010  yamt sync with head
 1.3 17-Jul-2011  joerg Retire varargs.h support. Move machine/stdarg.h logic into MI
sys/stdarg.h and expect compiler to provide proper builtins, defaulting
to the GCC interface. lint still has a special fallback.
Reduce abuse of _BSD_VA_LIST_ by defining __va_list by default and
derive va_list as required by standards.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.15 08-Aug-2021  thorpej Define preprocessor symbols (__HAVE_OPENFIRMWARE_VARIANT_AAPL and
__HAVE_OPENFIRMWARE_VARIANT_SUNW) that lets generic OpenFirmware
code deal with differences / quirks among implementation variants.
 1.14 17-Jul-2011  dyoung branches: 1.14.70;
Enable new-style <sys/bus.h> on several PowerPC ports supporting PCI
buses. Make non-inline implementations of bus_space(9) and bus_dma(9)
routines and move them to appropriate .c files.

This may leave amigappc in a bad state, sorry. Fortunately, it will be
easy to repair by imitating the bus.h -> bus_{defs,funcs}.h split in
some other PowerPC port.
 1.13 20-Jan-2008  joerg Now that __HAVE_TIMECOUNTER and __HAVE_GENERIC_TODR are invariants,
remove the conditionals and the code associated with the undef case.
 1.12 17-Oct-2007  garbled branches: 1.12.2; 1.12.8;
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.11 14-Jul-2007  ad branches: 1.11.10;
Generic soft interrupts are mandatory.
 1.10 29-Sep-2006  macallan branches: 1.10.8; 1.10.16;
add timecounter support, mostly from prep.
 1.9 13-Sep-2006  gdamore branches: 1.9.2;
Convert macppc to generic todr. ok macallan@.
 1.8 11-Dec-2005  christos branches: 1.8.8; 1.8.20;
merge ktrace-lwp.
 1.7 25-Mar-2004  matt branches: 1.7.16;
Enable generic software interrupts on macppc.
 1.6 28-Feb-2002  simonb branches: 1.6.16;
Use "#define<tab>".
 1.5 23-May-2000  tsubai branches: 1.5.8; 1.5.12;
Remove __BROKEN_DK_ESTABLISH.
 1.4 16-May-2000  thorpej Nuke dk_establish() from orbit except from those ports which still use
it to determine the boot device: mvme68k, pc532, macppc, ofppc. Those
platforms should be changed to use device_register(). In the mean time,
those ports defined __BROKEN_DK_ESTABLISH.
 1.3 01-Feb-2000  danw Use device_register to find the boot device more reliably. Should now work
on anything it's possible to boot from that we have a driver for.
 1.2 29-May-1998  tsubai branches: 1.2.14;
Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.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.5.12.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.5.8.1 16-Mar-2002  jdolecek Catch up with -current.
 1.6.16.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.16.2 18-Sep-2004  skrll Sync with HEAD.
 1.6.16.1 03-Aug-2004  skrll Sync with HEAD
 1.7.16.3 21-Jan-2008  yamt sync with head
 1.7.16.2 03-Sep-2007  yamt sync with head.
 1.7.16.1 30-Dec-2006  yamt sync with head.
 1.8.20.1 18-Nov-2006  ad Sync with head.
 1.8.8.1 14-Sep-2006  yamt sync with head.
 1.9.2.1 22-Oct-2006  yamt sync with head
 1.10.16.2 03-Oct-2007  garbled Sync with HEAD
 1.10.16.1 02-Aug-2007  macallan sync with HEAD
 1.10.8.1 15-Jul-2007  ad Sync with head.
 1.11.10.2 23-Mar-2008  matt sync with HEAD
 1.11.10.1 06-Nov-2007  matt sync with HEAD
 1.12.8.1 23-Jan-2008  bouyer Sync with HEAD.
 1.12.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.14.70.1 14-May-2021  thorpej Deal with quirks / differences in OpenFirmware implementations'
interpreation of the i2c "reg" property by embedding knowledge
of those quicks directly, rather than forcing lots of drivers
to provide their own devhandle implementations. We default to
assuming the Device Tree bindings, and tweak based on platform-
specific #ifdefs.

Start with __HAVE_OPENFIRMWARE_VARIANT_AAPL (all i2c "reg" properties
encode an address that's shifted left 1 bit to account for the R/W bit
that appears on the wire).
 1.3 03-Dec-1998  tsubai Not used.
 1.2 09-Aug-1998  tsubai avoid lint error.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3 17-Jul-2011  joerg Retire varargs.h support. Move machine/stdarg.h logic into MI
sys/stdarg.h and expect compiler to provide proper builtins, defaulting
to the GCC interface. lint still has a special fallback.
Reduce abuse of _BSD_VA_LIST_ by defining __va_list by default and
derive va_list as required by standards.
 1.2 29-May-1998  tsubai Use arch/powerpc/.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.24 20-Jun-2011  matt Don't export USER_SR if _MODULE is defined.
Add a common <powerpc/vmparam.h> like we have for <powerpc/pmap.h>
 1.23 03-Feb-2003  matt branches: 1.23.140;
Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea).
 1.22 02-Feb-2003  matt Remove OLDPMAP support.
 1.21 10-Dec-2002  thorpej Use __LDPGSZ (which must be == USRTEXT) as the text address for a.out
executables, and eliminate the USRTEXT constant, which was only used
by the a.out exec code.
 1.20 09-Mar-2002  chs switch all mpc6xx powerpc ports to NEWPMAP by default.
the old pmap is still available with the OLDPMAP option.
 1.19 15-Nov-2001  soren MAXSLP is defined to be a machine-independent scheduling parameter,
so move it into sys/param.h.
 1.18 10-Jun-2001  tsubai branches: 1.18.2; 1.18.8;
Make the new pmap optional. Use the old (stable!) pmap by default.
 1.17 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.16 01-May-2001  thorpej Per discussion w/ chuck and chuck, restructure the md page stuff
to use a structure called "vm_page_md", and use __HAVE_VM_PAGE_MD
and __HAVE_PMAP_PHYSSEG.
 1.15 29-Apr-2001  thorpej Add a VM_MDPAGE_MEMBERS macro that defines pmap-specific data for
each vm_page structure. Add a VM_MDPAGE_INIT() macro to init this
data when pages are initialized by UVM. These macros are mandatory,
but ports may #define them to nothing if they are not needed/used.

This deprecates struct pmap_physseg. As a transitional measure,
allow a port to #define PMAP_PHYSSEG so that it can continue to
use it until its pmap is converted to use VM_MDPAGE_MEMBERS.

Use all this stuff to eliminate a lot of extra work in the Alpha
pmap module (it's smaller and faster now). Changes to other pmap
modules will follow.
 1.14 15-Mar-2001  tsubai Remove PAGER_MAP_SIZE definition -- use default value. Instead, decrease
VM_MAX_KERNEL_BUF.
 1.13 08-Dec-2000  mycroft branches: 1.13.2;
Increase all of the limits.
 1.12 27-Nov-2000  tsubai Reduce PAGER_MAP_SIZE to 4MB.
 1.11 11-Feb-2000  thorpej branches: 1.11.4;
Update for the NKMEMPAGES changes.
 1.10 04-Dec-1999  ragge CL* discarding.
 1.9 18-Jul-1999  tsubai branches: 1.9.2; 1.9.8;
Add VM_MAX_KERNEL_BUF definition.
 1.8 16-Apr-1999  thorpej Now that we have direct-mapped pool pages, we can garbage-collect VM_MBUF_SIZE
and don't need to allocate mb_map.
 1.7 23-Mar-1999  thorpej branches: 1.7.2; 1.7.4;
VM_MBUF_SIZE is in terms of MCLBYTES, not CLBYTES.
 1.6 27-Feb-1999  tsubai Increase default data size to compile libbfd without `virtual memory
exhausted'. Suggested by Scott Reynolds.
 1.5 16-Jan-1999  chuck MNN is no longer optional
 1.4 21-Aug-1998  tsubai vm_offset_t --> [pv]addr_t.
 1.3 13-Jul-1998  tsubai Change VM_MAXUSER_ADDRESS to 0x7ffff000.
 1.2 05-Jun-1998  tsubai Add support for UVM and MACHINE_NEW_NONCONTIG.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.7.4.3 06-Aug-1999  chs take an initial guess at UBC parameters.
 1.7.4.2 02-Aug-1999  thorpej Update from trunk.
 1.7.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.7.2.1 20-Oct-1999  he Pull up revision 1.9 (requested by tsubai):
Fix "panic: startup: cannot allocate VM for buffers" right after
copyright message when RAM > approx. 128MB.
 1.9.8.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.9.2.4 27-Mar-2001  bouyer Sync with HEAD.
 1.9.2.3 13-Dec-2000  bouyer Sync with HEAD (for UBC fixes).
 1.9.2.2 08-Dec-2000  bouyer Sync with HEAD.
 1.9.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.11.4.1 31-Dec-2000  jhawk Pull up revision 1.13 (requested by mycroft):
Increase limits (max test size, datasize, default datasize, and
default stacksize) to match other ports. (Fixes a bunch of problems
running apps like Mozilla with the defaults.)
 1.13.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.13.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.18.8.4 11-Dec-2002  thorpej Sync with HEAD.
 1.18.8.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.18.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.18.8.1 10-Jun-2001  nathanw file vmparam.h was added on branch nathanw_sa on 2002-01-08 00:26:10 +0000
 1.18.2.2 16-Mar-2002  jdolecek Catch up with -current.
 1.18.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.23.140.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.2 11-Dec-2005  christos merge ktrace-lwp.
 1.1 08-May-2004  kleink branches: 1.1.2;
Factor out W{CHAR,INT}_{MAX,MIN} into their own header file.
 1.1.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.2.2 03-Aug-2004  skrll Sync with HEAD
 1.1.2.1 08-May-2004  skrll file wchar_limits.h was added on branch ktrace-lwp on 2004-08-03 10:37:30 +0000
 1.15 25-Apr-2025  andvar s/cahnge/change/ in comments.
 1.14 29-Mar-2008  tsutsui branches: 1.14.128;
Split softc and device_t for zsc(4) and its children.

XXX we should restructure MI APIs and make it really machine independent.
 1.13 07-Nov-2007  ad branches: 1.13.14;
Merge tty changes from the vmlocking branch.
 1.12 17-Oct-2007  garbled branches: 1.12.2;
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.11 14-Jul-2007  ad branches: 1.11.8; 1.11.10; 1.11.14;
Generic soft interrupts are mandatory.
 1.10 04-Mar-2007  christos branches: 1.10.2; 1.10.10;
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 24-Mar-2004  matt branches: 1.8.16;
Add latent generic soft interrupt support.
 1.7 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.6 15-Feb-2003  tsutsui branches: 1.6.2;
Add prototypes for ZS_TXDMA functions.
XXX Maybe we should have DMA hooks in MI z8530tty.
 1.5 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.4 06-Jan-2002  dbj add support for kgdb over zs
 1.3 26-Aug-1998  tsubai branches: 1.3.26; 1.3.30;
Back out previous change.
 1.2 16-Aug-1998  tsubai Enable 115200 and (untested)230400 bps.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3.30.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.3.30.2 28-Feb-2002  nathanw Catch up to -current.
 1.3.30.1 11-Jan-2002  nathanw More catchup.
 1.3.26.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.3.26.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.6.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.6.2.1 03-Aug-2004  skrll Sync with HEAD
 1.8.16.2 15-Nov-2007  yamt sync with head.
 1.8.16.1 03-Sep-2007  yamt sync with head.
 1.9.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.10.10.3 03-Oct-2007  garbled Sync with HEAD
 1.10.10.2 02-Aug-2007  macallan sync with HEAD
 1.10.10.1 09-May-2007  macallan nuke #if(n)def __HAVE_GENERIC_SOFT_INTERRUPTS - we have them and they're not going
to disappear
 1.10.2.2 03-Dec-2007  ad Sync with HEAD.
 1.10.2.1 15-Jul-2007  ad Sync with head.
 1.11.14.1 13-Nov-2007  bouyer Sync with HEAD
 1.11.10.2 08-Nov-2007  matt sync with -HEAD
 1.11.10.1 06-Nov-2007  matt sync with HEAD
 1.11.8.1 11-Nov-2007  joerg Sync with HEAD.
 1.12.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.13.14.1 03-Apr-2008  mjf Sync with HEAD.
 1.14.128.1 02-Aug-2025  perseant Sync with HEAD
 1.64 03-Oct-2025  thorpej Use device_{get,set}prop_string() for sensor names.
 1.63 22-Sep-2025  thorpej Only look for sensor names in OF nodes if the device's devhandle is of
the OpenFirmware type.
 1.62 21-Sep-2025  thorpej Give each PowerPC OFW platform its own device_register(), which calls
into the common ofw_device_register(). ofppc's is a simple wrapper.

macppc's, on the other hand, takes care of looking up environmental
sensor descriptive information in the OFW device tree and adds those
properties directly to the sensor device property dictionaries. This
single implementation will replace the duplicated code that's scattered
across multiple macppc i2c controller drivers.
 1.61 07-Nov-2007  garbled Convert macppc to shared ofw_autoconf.c. Compile tested only.
 1.60 17-Oct-2007  garbled branches: 1.60.2;
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.59 02-Sep-2007  macallan branches: 1.59.2; 1.59.4;
look for an ATY,RefCLK property and pass it to the console device if found.
For radeonfb so it doesn't have to guess the reference clock.
 1.58 07-Aug-2007  macallan branches: 1.58.2;
if we can't determine the console framebuffer's depth assume it's 8bit
Mainly for /chaos/control which doesn't have any useful properties on its node
 1.57 14-Apr-2007  macallan branches: 1.57.2; 1.57.4; 1.57.6; 1.57.10;
add a callback to change the colour map
so now X with wsfb on top of genfb should look right
 1.56 28-Feb-2007  thorpej branches: 1.56.2; 1.56.4;
TRUE -> true, FALSE -> false
 1.55 09-Feb-2007  macallan branches: 1.55.2;
gah, stupid typos
 1.54 09-Feb-2007  macallan pass OF node and if known instance handle as device properties. Needed later
for a generic OpenFirmware framebuffer driver
 1.53 22-Jan-2007  macallan of_compatible() returns -1 not 0 when nothing matches. Doh.
 1.52 21-Jan-2007  macallan make OF_interpret actually deal with input arguments
 1.51 20-Jan-2007  he Unify the declaration of OF_interpret() between sparc{,64} and macppc
by adding the "nargs" argument to the macppc version, and fix the macppc
ports uses of OF_interpret() accordingly.

Also move the declaration of OF_interpt() from macppc's autoconf.h to
ofw/openfirm.h. This fixes the build of the macppc port.

Approved by macallan@.
 1.50 17-Jan-2007  macallan use properties to pass additional data to the console device,
like static EDID, framebuffer parameters etc.
 1.49 19-Oct-2006  tsutsui branches: 1.49.2;
Defer enabling hardware interrupts until all timecounter(9)s are initialized
in cpu_initclocks(9), and then remove "if (cold)" check in decr_intr().

Fixes long delay during config_process_deferred() for interrupt_config_queue,
OK'ed by macallan.
 1.48 29-Sep-2006  macallan add timecounter support, mostly from prep.
 1.47 23-Feb-2006  thorpej branches: 1.47.14; 1.47.16;
Use device_is_a(), rather than the locally-defined DEVICE_IS() (which
uses a much more complicated mechanism to do the check).
 1.46 23-Feb-2006  thorpej Use device_parent().
 1.45 24-Dec-2005  perry branches: 1.45.2; 1.45.4; 1.45.6;
bare asm -> __asm
 1.44 11-Dec-2005  christos merge ktrace-lwp.
 1.43 03-Jun-2005  matt branches: 1.43.2;
Cleanup new warnings...
 1.42 03-Jun-2005  christos First argument to OF_interpret is const. Remove non-ansi prototype while
here.
 1.41 23-Oct-2004  thorpej Centralize the declaration of booted_device and booted_partition.
 1.40 14-Dec-2003  thorpej No need to include wdvar.h anymore.
 1.39 08-Oct-2003  bouyer Adapt for wdcattach() prototype change, and deal with atabus in
device_register().
 1.38 15-Jul-2003  lukem __KERNEL_RCSID()
 1.37 02-Apr-2003  thorpej branches: 1.37.2;
Use PAGE_SIZE rather than NBPG.
 1.36 12-Feb-2003  christos remove extra paren
 1.35 11-Feb-2003  christos PR/15825: Monroe Williams: Machines booting from third-party SCSI cards
can't find root device. This is because the code blindly kills everything
after a comma in the boot path string, instead of being careful and doing
so only for the last component.
 1.34 25-Nov-2002  thorpej Remove an unnecessary cast in an asm statement.
 1.33 22-Sep-2002  dbj explicitly set booted_partition to 0, rather than
rely on default value. It should actually be extracted
from the bootpath instead, but that involves translating
from apple partition map entries to netbsd disklabel entries.
 1.32 22-Sep-2002  dbj undo an accidentally committed change that was
included in move of bootpath alias expansion
 1.31 22-Sep-2002  dbj move bootpath alias expansion from initppc() into canonicalize_bootpath()
 1.30 28-Jul-2002  chs remove a spurious printf.
 1.29 02-Dec-2001  bouyer branches: 1.29.8;
Convert to new ata/atapi attach structs.
 1.28 01-Dec-2001  tsutsui #ifdef'ed out debug printf.
 1.27 19-Nov-2001  matt Fix boot device selection when booting from an alias. If the bootpath
isn't an OFW device, look it up in /aliases and substitute the bootpath
found into the string. This allow device_register to do it's thing.
Key off the drive number, not the channel, in autoconf.c. Closes PR#13756.
 1.26 22-Jul-2001  wiz branches: 1.26.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.25 08-Jun-2001  matt branches: 1.25.2;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.24 25-Apr-2001  bouyer Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
(no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
 1.23 01-Apr-2001  tsubai Adjust timing for pmu99. Internal keyboard of recent PowerBooks
should work now.
 1.22 29-Sep-2000  tsubai branches: 1.22.2;
Fix a bug that prevents the kernel from detecting the root device.
 1.21 14-Feb-2000  tsubai branches: 1.21.4;
Add minimal support of openpic.
 1.20 08-Feb-2000  tsubai Make OF-2.x can also find root device.
 1.19 04-Feb-2000  tsubai Make the new findroot code work on PowerMac 9600 (OF-1.0.5).
 1.18 03-Feb-2000  tsubai * Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.17 02-Feb-2000  danw Make the device_register code work on machines with multiple PCI bridges
with the same bus number (like the new G4s). Also, don't hardcode the
size of the pci_bridges array.
 1.16 01-Feb-2000  danw Use device_register to find the boot device more reliably. Should now work
on anything it's possible to boot from that we have a driver for.
 1.15 17-Sep-1999  thorpej branches: 1.15.2;
Centralize the declaration and clearing of `cold'.
 1.14 15-Sep-1999  thorpej Rename the machine-dependent autoconfiguration entry point `cpu_configure()',
and rename config_init() to configure() and call cpu_configure() from there.
 1.13 24-Jun-1999  tsubai findroot() should also use "compatible" property.
 1.12 07-Jun-1999  thorpej Don't pass a nam2blk around at all; just have setroot() and friends reference
dev_name2blk[] directly. Addresses PR #7622 (ITOH Yasufumi), although
in a different way.
 1.11 01-May-1999  tsubai Check "mac-io" and "/pci/mac-io".
 1.10 01-Apr-1999  thorpej branches: 1.10.2;
Don't call configure() from cpu_startup().
 1.9 02-Feb-1999  tsubai findroot() now recognizes network devices.
 1.8 22-Dec-1998  tsubai Determine the address of interrupt register at runtime.
(iMac has different address)
 1.7 10-Dec-1998  tsubai Add wdc.
 1.6 14-Oct-1998  tsubai Implement PCI tag to OpenFirmware device convert function (pcidev_to_ofdev).
 1.5 24-Jul-1998  tsubai Calculate DELAY constant before configure().
 1.4 13-Jul-1998  tsubai Add support for G3 Mac.
 1.3 24-Jun-1998  tsubai Add memory disk support.
 1.2 05-Jun-1998  tsubai Add support for UVM and MACHINE_NEW_NONCONTIG.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.10.2.1 06-May-1999  perry branches: 1.10.2.1.2;
pullup 1.10->1.11 (thorpej)
 1.10.2.1.2.2 01-Jul-1999  thorpej Sync w/ -current.
 1.10.2.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.15.2.4 21-Apr-2001  bouyer Sync with HEAD
 1.15.2.3 29-Mar-2001  bouyer Typos, and cleanup scsi/atapi devices match.
 1.15.2.2 27-Mar-2001  bouyer Convert to thorpej_scsipi (untested).
 1.15.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.2 01-Apr-2001  he Pull up revision 1.23 (requested by tsubai):
Fix Keyboard problem of recent PowerBooks (Pismo, PowerBook G4,
etc.).
 1.21.4.1 01-Nov-2000  tv Pullup 1.22 [tsubai, mycroft]:
Fix a bug that prevents the kernel from detecting the root device.
 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.25.2.4 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.25.2.3 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.25.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.25.2.1 03-Aug-2001  lukem update to -current
 1.26.6.5 11-Dec-2002  thorpej Sync with HEAD.
 1.26.6.4 18-Oct-2002  nathanw Catch up to -current.
 1.26.6.3 01-Aug-2002  nathanw Catch up to -current.
 1.26.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.26.6.1 22-Jul-2001  nathanw file autoconf.c was added on branch nathanw_sa on 2002-01-08 00:26:11 +0000
 1.29.8.1 31-Aug-2002  gehenna catch up with -current.
 1.37.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.37.2.4 02-Nov-2004  skrll Sync with HEAD.
 1.37.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.37.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.37.2.1 03-Aug-2004  skrll Sync with HEAD
 1.43.2.6 15-Nov-2007  yamt sync with head.
 1.43.2.5 27-Oct-2007  yamt sync with head.
 1.43.2.4 03-Sep-2007  yamt sync with head.
 1.43.2.3 26-Feb-2007  yamt sync with head.
 1.43.2.2 30-Dec-2006  yamt sync with head.
 1.43.2.1 21-Jun-2006  yamt sync with head.
 1.45.6.1 22-Apr-2006  simonb Sync with head.
 1.45.4.1 09-Sep-2006  rpaulo sync with head
 1.45.2.1 01-Mar-2006  yamt sync with head.
 1.47.16.1 22-Oct-2006  yamt sync with head
 1.47.14.2 01-Feb-2007  ad Sync with head.
 1.47.14.1 18-Nov-2006  ad Sync with head.
 1.49.2.1 04-Mar-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #474):
sys/arch/macppc/macppc/autoconf.c: revision 1.50
sys/arch/macppc/macppc/machdep.c: revision 1.144
use properties to pass additional data to the console device,
like static EDID, framebuffer parameters etc.
 1.55.2.2 15-Apr-2007  yamt sync with head.
 1.55.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.56.4.1 11-Jul-2007  mjf Sync with head.
 1.56.2.4 23-Oct-2007  ad Sync with head.
 1.56.2.3 09-Oct-2007  ad Sync with head.
 1.56.2.2 20-Aug-2007  ad Sync with HEAD.
 1.56.2.1 27-May-2007  ad Sync with head.
 1.57.10.4 11-Nov-2007  joerg Sync with HEAD.
 1.57.10.3 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.57.10.2 03-Sep-2007  jmcneill Sync with HEAD.
 1.57.10.1 09-Aug-2007  jmcneill Sync with HEAD.
 1.57.6.2 03-Sep-2007  skrll Sync with HEAD.
 1.57.6.1 15-Aug-2007  skrll Sync with HEAD.
 1.57.4.1 07-Aug-2007  matt Sync with HEAD.
 1.57.2.3 03-Oct-2007  garbled Sync with HEAD
 1.57.2.2 07-Aug-2007  macallan sync with HEAD
 1.57.2.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.58.2.2 08-Nov-2007  matt sync with -HEAD
 1.58.2.1 06-Nov-2007  matt sync with HEAD
 1.59.4.2 13-Nov-2007  bouyer Sync with HEAD
 1.59.4.1 25-Oct-2007  bouyer Sync with HEAD.
 1.59.2.1 18-Oct-2007  yamt sync with head.
 1.60.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.36 17-Oct-2007  garbled 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.35 04-Mar-2007  christos branches: 1.35.2; 1.35.10; 1.35.18; 1.35.20; 1.35.22; 1.35.24;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.34 01-Mar-2006  yamt branches: 1.34.20;
merge yamt-uio_vmspace branch.

- use vmspace rather than proc or lwp where appropriate.
the latter is more natural to specify an address space.
(and less likely to be abused for random purposes.)
- fix a swdmover race.
 1.33 11-Dec-2005  christos branches: 1.33.2; 1.33.4; 1.33.6;
merge ktrace-lwp.
 1.32 24-Nov-2005  yamt bus_dmamem_map: honour BUS_DMA_NOWAIT. noted by Manuel Bouyer.
bus_space_map: always do NOWAIT allocation as it used to be before yamt-km.

we have too many copies!
 1.31 01-Apr-2005  yamt branches: 1.31.2; 1.31.8;
merge yamt-km branch.
- don't use managed mappings/backing objects for wired memory allocations.
save some resources like pv_entry. also fix (most of) PR/27030.
- simplify kernel memory management API.
- simplify pmap bootstrap of some ports.
- some related cleanups.
 1.30 09-Mar-2005  matt Add a dm_maxsegsz public member to bus_dmamap_t. This allows a user of the API
to select the maximum segment size for each bus_dmamap_load (up to the maxsegsz
supplied to bus_dmamap_create). dm_maxsegsz is reset to the value supplied to
bus_dmamap_create when the dmamap is unloaded.
 1.29 28-Nov-2004  thorpej branches: 1.29.4; 1.29.6;
bus_dmamap_load_mbuf(): Skip zero-length mbufs.
kern/24811
 1.28 15-Jul-2003  lukem __KERNEL_RCSID()
 1.27 29-Jun-2003  fvdl branches: 1.27.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.26 28-Jun-2003  darrenr Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records. The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
 1.25 02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.24 25-Nov-2002  thorpej Avoid strict-alias warnings.
 1.23 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.22 10-Sep-2001  chris branches: 1.22.4; 1.22.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.21 22-Jul-2001  wiz branches: 1.21.2;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.20 06-Jun-2001  matt branches: 1.20.2;
Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.19 26-May-2001  chs replace vm_page_t with struct vm_page *.
 1.18 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.17 21-Mar-2001  soren s/vm_page_alloc_memory/uvm_pglistalloc/ in panic message.
 1.16 29-Jun-2000  mrg branches: 1.16.2;
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 11-Jul-1999  tsubai One more pmap_extract() fix.
 1.10 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.9 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.8 26-Mar-1999  mycroft branches: 1.8.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.7 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.6 03-Oct-1998  thorpej Initialize the DMA map's bounce threshold to the tag's at map creation time,
and use the map's threshold when loading the map.
 1.5 21-Sep-1998  thorpej Make bus_dmamap_load_uio() work, from Kevin Lahey <kml@nas.nasa.gov>.
 1.4 21-Aug-1998  tsubai vm_offset_t --> [pv]addr_t.
 1.3 17-Aug-1998  thorpej Internal cleanup.
 1.2 17-Jul-1998  thorpej Implement bus_dmamap_load_uio().
 1.1 17-Jul-1998  tsubai Add bus_dma support.
 1.8.4.2 02-Aug-1999  thorpej Update from trunk.
 1.8.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.2 27-Mar-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.1 30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.16.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.16.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.20.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.20.2.2 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.20.2.1 03-Aug-2001  lukem update to -current
 1.21.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.22.12.1 14-Jul-2002  gehenna catch up with -current.
 1.22.4.3 11-Dec-2002  thorpej Sync with HEAD.
 1.22.4.2 20-Jun-2002  nathanw Catch up to -current.
 1.22.4.1 10-Sep-2001  nathanw file bus_dma.c was added on branch nathanw_sa on 2002-06-20 03:39:36 +0000
 1.27.2.8 11-Dec-2005  christos Sync with head.
 1.27.2.7 01-Apr-2005  skrll Sync with HEAD.
 1.27.2.6 19-Feb-2005  skrll Don't deref a NULL struct lwp *. This shouldn't happen, but...
 1.27.2.5 18-Dec-2004  skrll Sync with HEAD.
 1.27.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.27.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.27.2.2 03-Aug-2004  skrll Sync with HEAD
 1.27.2.1 02-Jul-2003  darrenr Apply the aborted ktrace-lwp changes to a specific branch. This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it. This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.
 1.29.6.2 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.29.6.1 28-Jan-2005  yamt - convert arch/macppc to new apis.
- don't leave page mapping at kva which is being freed.
 1.29.4.1 29-Apr-2005  kent sync with -current
 1.31.8.1 29-Nov-2005  yamt sync with head.
 1.31.2.3 27-Oct-2007  yamt sync with head.
 1.31.2.2 03-Sep-2007  yamt sync with head.
 1.31.2.1 21-Jun-2006  yamt sync with head.
 1.33.6.1 22-Apr-2006  simonb Sync with head.
 1.33.4.1 09-Sep-2006  rpaulo sync with head
 1.33.2.2 18-Feb-2006  yamt fix a typo.
 1.33.2.1 18-Feb-2006  yamt adapt the rest of MD code.
 1.34.20.1 12-Mar-2007  rmind Sync with HEAD.
 1.35.24.1 25-Oct-2007  bouyer Sync with HEAD.
 1.35.22.1 18-Oct-2007  yamt sync with head.
 1.35.20.1 06-Nov-2007  matt sync with HEAD
 1.35.18.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.35.10.2 05-Jun-2007  matt Make macppc use the common powerpc bus_dma.c
 1.35.10.1 06-May-2007  macallan switch macppc over to generic PCI code from arch/powerpc/pci
 1.35.2.1 23-Oct-2007  ad Sync with head.
 1.34 17-Oct-2007  garbled 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.33 19-Oct-2006  tsutsui branches: 1.33.8; 1.33.16; 1.33.26; 1.33.28; 1.33.30; 1.33.32;
Defer enabling hardware interrupts until all timecounter(9)s are initialized
in cpu_initclocks(9), and then remove "if (cold)" check in decr_intr().

Fixes long delay during config_process_deferred() for interrupt_config_queue,
OK'ed by macallan.
 1.32 13-Oct-2006  tsutsui Use a non-zero quality for mftb counter.
 1.31 03-Oct-2006  macallan don't run clock interrupt stuff as long as we're cold
 1.30 01-Oct-2006  macallan Let everyone use the same ticks_per_intr. Doh.
 1.29 29-Sep-2006  macallan add timecounter support, mostly from prep.
 1.28 13-Sep-2006  gdamore branches: 1.28.2;
Convert macppc to generic todr. ok macallan@.
 1.27 24-Dec-2005  perry branches: 1.27.8; 1.27.20;
bare asm -> __asm
 1.26 11-Dec-2005  christos merge ktrace-lwp.
 1.25 03-Jun-2005  matt branches: 1.25.2;
Cleanup new warnings...
 1.24 29-Mar-2004  aymeric delay(): use =&r instead of =r for a temporary register as suggested in
PR #24830. The bad reuse of the register was actually triggered by using
no optimization at all.
pmap_subr.c is the only file that still requires at least -O to compile
into working code (the proper fix would be to write almost all of
pmap_zero_page() in assembly). The rest of a macppc kernel requires only
-finline now.
 1.23 25-Mar-2004  matt Don't call hardclock until cpu_initclocks has been called.
 1.22 15-Jul-2003  lukem __KERNEL_RCSID()
 1.21 12-Feb-2003  matt branches: 1.21.2;
Initialize cpu_timebase so sysctl can report it.
 1.20 02-Feb-2003  matt Perform a rototill of the powerpc code. Mandate use of SPRG0 to store
a pointer to current cpu's cpu_info structure. Use cpu_info for
intstk,intr_depth,still_stk,idle_pcb,curpcb,curlwp,etal even on
non-MULTIPROCESSOR machines. Add common macros GET_CPUINFO and
INIT_CPUINFO to get and initialize the cpu_info struct on startup. Make
ibm4xx use the standard <powerpc/frame.h>. Use IFRAME_xx in ibm4xx
trap_subr.S instead of explicit magic offsets. Move INTSTK and SPILLSTK
to std.<platform>. Change faultbuf to a struct instead of an array.

On MPC6XX cpus, stop using the vector page for temporary space and use
reserved space in cpu_info.
 1.19 06-Aug-2002  chs move more inlines to cpu.h: mftb(), mftbl() and mfpvr().
(the mftb() in pmap.c only wanted the lower 32 bits, so that's now mftbl()).
 1.18 10-Nov-2001  augustss branches: 1.18.8;
If the RTC gives a time more than 1000 days before file system time then
use the file system time. (My iMac seems to give 1904 as the year very
often (dead battery?), and setting the correct date with ntpdate doesn't
seem to work.)
 1.17 08-Jun-2001  matt branches: 1.17.2; 1.17.6; 1.17.8;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.16 27-May-2001  wiz Honour RTC_OFFSET. Patches from Y. Takizawa <you@nightbreak.org> via
SUNAGAWA Keiki in port-macppc/10265. Also addresses port-macppc/10949.
 1.15 01-Jan-2001  tsubai branches: 1.15.2;
Make lasttb and tickspending per-CPU.
 1.14 17-Dec-2000  tsubai Move variable tickspending to clock.c; it's used in only clock.c.
 1.13 20-Aug-2000  tsubai Correct asm parameter to avoid gcc uninitialized warning.
 1.12 20-Aug-2000  tsubai In decr_intr(), update lasttb only when clock interrupt is not masked.
 1.11 14-Jul-2000  tsubai Make timebase frequency value adjustable.
 1.10 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.9 19-Jan-2000  msaitoh branches: 1.9.4;
check whether tv_usec >= 1000000
 1.8 24-Mar-1999  mrg branches: 1.8.8;
completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
 1.7 11-Jan-1999  tsubai Count clock interrupts.
 1.6 04-Nov-1998  tsubai Move conversion of PRAM-time to UNIX-time to clock.c (like mac68k).
 1.5 01-Sep-1998  tsubai Don't set RTC time before reading it.
 1.4 24-Jul-1998  tsubai Calculate DELAY constant before configure().
 1.3 18-Jul-1998  tsubai Use unsigned comparison of tbreg in delay().
 1.2 13-Jul-1998  tsubai Add support for G3 Mac.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.8.8.2 05-Jan-2001  bouyer Sync with HEAD
 1.8.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.9.4.1 01-Nov-2000  tv Pullup 1.12 [tsubai, mycroft]:
In decr_intr(), update lasttb only when clock interrupt is not masked.
 1.15.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.17.8.3 06-Aug-2002  nathanw Catch up with powerpc rototilling.
 1.17.8.2 17-Apr-2002  nathanw Catch up to -current.
 1.17.8.1 08-Jun-2001  nathanw file clock.c was added on branch nathanw_sa on 2002-04-17 00:03:42 +0000
 1.17.6.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.17.2.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.17.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.18.8.1 31-Aug-2002  gehenna catch up with -current.
 1.21.2.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.21.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.21.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.21.2.1 03-Aug-2004  skrll Sync with HEAD
 1.25.2.3 27-Oct-2007  yamt sync with head.
 1.25.2.2 30-Dec-2006  yamt sync with head.
 1.25.2.1 21-Jun-2006  yamt sync with head.
 1.27.20.1 18-Nov-2006  ad Sync with head.
 1.27.8.1 14-Sep-2006  yamt sync with head.
 1.28.2.1 22-Oct-2006  yamt sync with head
 1.33.32.1 25-Oct-2007  bouyer Sync with HEAD.
 1.33.30.1 18-Oct-2007  yamt sync with head.
 1.33.28.1 06-Nov-2007  matt sync with HEAD
 1.33.26.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.33.16.1 05-May-2007  macallan switch to the shared clock.c in arch/powerpc
 1.33.8.1 23-Oct-2007  ad Sync with head.
 1.47 26-Oct-2002  jdolecek now that mem_no is emitted by config(8), there is no reason to keep
copy of more or less identical iskmemdev() for every arch; move the function
to spec_vnop.c, and g/c machine-dependant copies
 1.46 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.45 19-Jul-2002  thorpej Rename cdev_systrace_init() to cdev_clonemisc_init(), so it can
be properly used by any misc. cloning device. While here, correct
a comment to indicate that "open" is the only entry point and that
everything else is handled with fileops.
 1.44 29-Jun-2002  matt Add kttcp device.
 1.43 18-Jun-2002  wiz Fix typo in comment.
 1.42 18-Jun-2002  itojun apm emulation, from openbsd
 1.41 17-Jun-2002  christos MD systrace gluons.
 1.40 28-May-2002  haya Bugfix: add character device #62 in chrtoblktbl[].
 1.39 28-Apr-2002  briggs branches: 1.39.2; 1.39.4;
Catch up with 1.5 branch... Allow nvram device to be omitted from kernel
configuration. Fix noted by Izumi Tsutsui <tsutsui@ceres.dti.ne.jp> and
problme noticed by Louis Guillaume <lguillaume@berklee.edu>.
 1.38 16-Mar-2002  martin Rename ISDN devices, per discussion on tech-kern. The network devices
become ippp (ISDN ppp) and irip (ISDN raw IP). The character device now
are called: /dev/isdn (isdnd <-> kernel communication), /dev/isdnctl (dialing
and other control), /dev/isdntrc* (tracing), /dev/isdnbchan* (raw B channel
access, i.e. for user land PPP) and /dev/isdntel* (telephone devices, i.e.
for answering machines).
 1.37 03-Mar-2002  nathanw Add sysmon device (62).
 1.36 28-Oct-2001  manu branches: 1.36.2;
Added character devices #60 and #61 to chrtoblktbl[]. They were missing,
and it introduced problems (EBUSY error when opening the driver for
writing in securelevel >= 1, plus manipulating some unitialized data at
the end of chrtoblktbl[])
 1.35 16-Sep-2001  manu branches: 1.35.2;
Enabled the clockctl device for macppc, major 61
 1.34 14-Sep-2001  nathanw Add the PCI device.
 1.33 21-Mar-2001  lukem branches: 1.33.2; 1.33.4;
move duplicate definitions for:
pc, lpt, joy, ocis, apm, satlink, i4bctl, i4brbch, i4btel, i4btrc, i4b
from the port-specific arch/*/*/conf.c files into sys/conf.h
 1.32 28-Feb-2001  tsubai branches: 1.32.2;
Sync cdevsw and chrtoblktbl.
 1.31 18-Feb-2001  matt Add devsw entries for "ld" (logical disks).
 1.30 14-Jan-2001  martin The i4b raw b-channel devices actually do have an ioctl routine,
so better add this to the cdevsw entry.
Noted by Bruno Achauer.
 1.29 09-Jan-2001  martin When adding isdn devices I forgot to check chrtoblktbl.
Fix this know for the affected archs.
 1.28 08-Jan-2001  martin Add isdn devices to all archs that seem to support at least one of the
necessary busses. Sync comments with reality for archs that already had
the devices.
 1.27 14-Nov-2000  matt Add a openfirm entry to conf.c
 1.26 23-Sep-2000  augustss Grab a major # for USB scanners.
 1.25 30-Jul-2000  tsubai Remove duplicated entry 22 in chrtoblk table.
Pointed out by Greg Kritsch on port-macppc mailing list.
 1.24 17-Jul-2000  wrstuden There is no music device - g.c. its cdev_decl.
 1.23 04-Jul-2000  wrstuden Oops.. Forgot to grow chrtoblktb[]. Pointed out by tsubai.
 1.22 01-Jul-2000  wrstuden Add audio, midi, and sequencer devices. Copied from ports alpha and i386.

Note: this does not mean internal audio's working. :-( It means I'm trying
to get my eap card to work.
 1.21 09-Jun-2000  tsubai branches: 1.21.2;
Add cy.
 1.20 09-Jun-2000  wrstuden Add support for Cyclades-Z PCI tty's.
 1.19 14-Apr-2000  tsutsui branches: 1.19.2;
Typo in comments. (Zilog 8350 -> 8530)
 1.18 27-Jan-2000  tsubai s/NUMODEM/NUCOM/
 1.17 25-Jan-2000  augustss Update for the ucom(4) addition.
 1.16 15-Oct-1999  tsubai branches: 1.16.2;
Support com* at pcmcia.
 1.15 16-Aug-1999  augustss branches: 1.15.2;
Add umodem device.
 1.14 29-Jul-1999  augustss Add wsmux device.
(Also add lots of missing chrtoblktbl[] entries.)
 1.13 29-Dec-1998  tsubai branches: 1.13.4;
Add USB.
 1.12 10-Dec-1998  tsubai Add ata/atapi disk support.
 1.11 13-Nov-1998  oster Updating of bdev's and cdev's to support RAIDframe.
 1.10 18-Oct-1998  tsubai Add wsmouse support.
 1.9 14-Oct-1998  tsubai Add wsdisplay (, wskbd, and wsmouse).
 1.8 13-Oct-1998  tsubai Split ADB driver to aed (ADB event device), akbd (ADB keyboard),
and ams (ADB mouse). adb is a bus now. (from Colin Wood)
 1.7 10-Oct-1998  thorpej Add scsibus entry points to the cdevsw[].
 1.6 13-Jul-1998  tsubai Add support for G3 Mac.
 1.5 03-Jul-1998  tsubai Add nvram device support.
 1.4 02-Jul-1998  tsubai Console support.
 1.3 24-Jun-1998  tsubai Add memory disk support.
 1.2 05-Jun-1998  tsubai Add (missing) "filedesc"
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.13.4.1 02-Aug-1999  thorpej Update from trunk.
 1.15.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.16.2.5 27-Mar-2001  bouyer Sync with HEAD.
 1.16.2.4 12-Mar-2001  bouyer Sync with HEAD.
 1.16.2.3 18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.16.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.16.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.19.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.21.2.3 22-Apr-2002  he Apply patch (requested by briggs):
Make the nvram device optional; check for NNVRAM.
 1.21.2.2 09-Aug-2000  tsubai Pull up rev 1.25.
Remove duplicated entry (index 22) in chrtoblk table.
 1.21.2.1 24-Jul-2000  wrstuden Pull in revisions from 1.21 to 1.24. Thes changes add audio device
entrypoints.
 1.32.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.33.4.1 01-Oct-2001  fvdl Catch up with -current.
 1.33.2.5 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.33.2.4 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.33.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.33.2.2 16-Mar-2002  jdolecek Catch up with -current.
 1.33.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.35.2.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.36.2.6 11-Nov-2002  nathanw Catch up to -current
 1.36.2.5 17-Sep-2002  nathanw Catch up to -current.
 1.36.2.4 01-Aug-2002  nathanw Catch up to -current.
 1.36.2.3 20-Jun-2002  nathanw Catch up to -current.
 1.36.2.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.36.2.1 28-Oct-2001  nathanw file conf.c was added on branch nathanw_sa on 2002-04-01 07:40:55 +0000
 1.39.4.1 30-May-2002  lukem Pull up revision 1.40 (requested by haya):
Bugfix: add character device #62 in chrtoblktbl[].
 1.39.2.4 21-Jul-2002  gehenna catch up with -current.
 1.39.2.3 16-Jul-2002  gehenna catch up with -current.
 1.39.2.2 14-Jul-2002  gehenna catch up with -current.
 1.39.2.1 16-May-2002  gehenna Bye block/character device swicth tables.
 1.73 03-Aug-2023  mrg ignore "-Warray-bounds" for various low level platform code that knows
how something is setup but technically is undefined behaviour. the
most common here is "extern int end;" and then using offsets of "&end"
that are outside the bounds of this 4-byte integer.

these uses are almost certainly all OK in reality.

found by GCC 12.
 1.72 15-Feb-2020  skrll Remove the 'slow' argument from cpu_topology_set and create a new
function cpu_topology_setspeed which sets the relative speed of the
cpu.

This allows cpu_topology_set is be used at cpu hatch time. The relative
speed is only known once all cpus have hatched/attached

OK ad@
 1.71 09-Feb-2020  skrll Traiing whitespace
 1.70 09-Jan-2020  ad - Many small tweaks to the SMT awareness in the scheduler. It does a much
better job now at keeping all physical CPUs busy, while using the extra
threads to help out. In particular, during preempt() if we're using SMT,
try to find a better CPU to run on and teleport curlwp there.

- Change the CPU topology stuff so it can work on asymmetric systems. This
mainly entails rearranging one of the CPU lists so it makes sense in all
configurations.

- Add a parameter to cpu_topology_set() to note that a CPU is "slow", for
where there are fast CPUs and slow CPUs, like with the Rockwell RK3399.
Extend the SMT awareness to try and handle that situation too (keep fast
CPUs busy, use slow CPUs as helpers).
 1.69 20-Dec-2019  ad branches: 1.69.2;
Some more CPU topology stuff:

- Use cegger@'s ACPI SRAT parsing code to figure out NUMA node ID for each
CPU as it is attached.

- For scheduler experiments with SMT, flag CPUs with the lowest numbered SMT
IDs as "primaries", link back to the primaries from secondaries, and build
a circular list of CPUs in each package with identical SMT IDs.

- No need for package/core/smt/numa IDs to be anything other than a u_int.
 1.68 13-Dec-2019  macallan call cpu_topology_set() with adjustments for 970MP CPUs
 1.67 17-May-2018  macallan branches: 1.67.2;
really fix the fix
 1.66 13-May-2018  macallan fix the fix
 1.65 13-May-2018  christos make this compile again.
 1.64 11-May-2018  macallan deal with IPIs on U3/HT machines, only install OpenPIC IPI goop on actual
OpenPIC hardware
 1.63 29-Mar-2018  macallan fix build for 32bit non-bridge SMP kernels
 1.62 22-Mar-2018  macallan sprinkle oea_mapiodev()
 1.61 22-Mar-2018  macallan mapiodev() the CPU reset GPIOs instead of blindly assuming that everything
is BAT-mapped
Now the 2nd CPU on my PowerMac7,3 wakes up and says hi.
 1.60 26-Mar-2014  christos branches: 1.60.28;
kill sprintf
 1.59 27-Oct-2012  chs branches: 1.59.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.58 30-Jun-2011  matt branches: 1.58.2; 1.58.12;
Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.57 29-Jun-2011  matt Adapt to cpu_hatch_data changes
 1.56 05-Jun-2011  matt struct device * -> device_t, struct cfdata * -> cfdata_t
CFATTACH_DECL(*, sizeof(struct device), -> CFATTACH_DECL_NEW(&, 0
 1.55 05-Jun-2011  matt Remove <machine/atomic.h>; use <sys/atomic.h> instead.
Add <powerpc/cpuset.h> (for mpc85xx pmap).
Add some initial MP code for mpc85xx
Rework ipi code to be common across all ppcs
Change PPC to keep curlwp in %r13 while in the kernel.
Move astpending from cpu_info to mdlwp
Improve cpu_need_resched to be more MP friendly.
 1.54 20-Dec-2010  matt branches: 1.54.2; 1.54.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.53 02-Mar-2010  matt branches: 1.53.2;
Add missing <powerpc/FOO/spr.h> to a few files missed on the first pass.
Don't export <machine/spr.h> to userland, only <powerpc/spr.h>
 1.52 27-Nov-2009  rmind branches: 1.52.2;
- Use uvm_lwp_setuarea() instead of directly setting address to lwp_t::l_addr.
- Replace most remaining uses of l_addr with uvm_lwp_getuarea() or lwp_getpcb().
- Amend assembly in ports where it accesses PCB via struct user.
- Rename L_ADDR to L_PCB in few places. Reduce sys/user.h inclusions.
 1.51 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.50 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.49 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.48 17-Nov-2007  macallan branches: 1.48.18; 1.48.26; 1.48.32; 1.48.40;
deal with macppc not defining OPENPIC
 1.47 17-Nov-2007  macallan sprinkle #ifdef OPENPIC so SMP-kernels without OpenPIC support build again.
 1.46 17-Oct-2007  garbled branches: 1.46.2;
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.45 21-Jul-2007  matt branches: 1.45.4; 1.45.6; 1.45.8; 1.45.10;
Make MP kernels build again. Heck, if I'm lucky, maybe these changes will
even make one boot.
 1.44 29-May-2007  macallan branches: 1.44.2; 1.44.4;
cpu_info.ci_idle_pcb is gone so don't try to set it
probably needs more work but it works fine like that at least on my PB3400c
 1.43 01-Oct-2006  macallan branches: 1.43.8; 1.43.10; 1.43.16;
Let everyone use the same ticks_per_intr. Doh.
 1.42 24-Dec-2005  perry branches: 1.42.20; 1.42.22;
bare asm -> __asm
 1.41 11-Dec-2005  christos merge ktrace-lwp.
 1.40 03-Feb-2005  briggs branches: 1.40.6;
If we have not gotten the CPU speed yet, get it from OF here and print it.
This gives us the CPU speed for those CPUs that we can't probe in the ppc
common code.
 1.39 06-Dec-2004  briggs branches: 1.39.4; 1.39.6;
Minor (old) patch from me to correct CPU ID of 604e vs. 604ev.
Tested by Tim Kelly.
Also patched from Tim to
- Delay longer for second CPU spinup.
- Only attempt to print CPU speed and cache configuration on certain
CPU types.
 1.38 13-Feb-2004  wiz Uppercase CPU, plural is CPUs.
 1.37 20-Oct-2003  matt Reorganize the way powerpc port install machine specific headers.
Use <powerpc/oea/bat.h> exclusively and remove <machine/bat.h> and
<powerpc/bat.h>. Remove unneeded <machine/cpufunc.h>. To insure
1:1 correspondence of <powerpc/FOO.h> to <machine/FOO.h> include
"../../powerpc/include/Makefile" in "arch/FOO/include/Makefile".
Incororpate <byte_swap.h> into <bswap.h> and then byte_swap.h
 1.36 17-Aug-2003  chs use the value of the "soft-reset" property (if it exists) to locate
the reset vector (needed on my shiny new G4). from tsubai.
 1.35 08-Aug-2003  matt Nuke spillstk. Use INTSTK instead of hardcoded value.
 1.34 15-Jul-2003  lukem __KERNEL_RCSID()
 1.33 02-Apr-2003  thorpej branches: 1.33.2;
Use PAGE_SIZE rather than NBPG.
 1.32 04-Feb-2003  matt opt_l2cr_config.h is now opt_ppcparam.h
 1.31 03-Feb-2003  matt Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea).
 1.30 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.29 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.28 06-Aug-2002  chs add code from tsubai to handle the second CPU on openpic machines.
the second CPU on dual G4 boxes works now.
while I'm here, use mfmsr() and mtmsr() instead of inline asms.
 1.27 28-Jul-2002  chs clean up secondary CPU startup.
use atomic operators for IPIs.
restructure the FPU and AltiVEC code so that it works for MP.
 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 05-Dec-2001  chs branches: 1.25.8;
fix macppc MULTIPROCESSOR compilation.
 1.24 26-Aug-2001  matt branches: 1.24.6;
Make all powerpc ports use a common Makefile.powerpc (except walnut)
Enforce -Wmissing-prototypes -Wstrict-prototypes for all ppc ports.
Split out macppc cpu support and make common to mpc6xx ports. Make
other mpc6xx ports use it. Add evcnts for mpc6xx traps.
 1.23 22-Aug-2001  matt Add 7450 recognization. 7450s use NAP mode. print out HID0 register
contents.
 1.22 22-Jul-2001  wiz bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.21 10-Jun-2001  tsubai branches: 1.21.2;
Use machine/bat.h rather than powerpc/mpc6xx/bat.h.
 1.20 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.19 22-Mar-2001  tsubai Merge my MP tree. At this point, Daystar dual 604 card (i.e. Power Macintosh
9500/180MP and 9600/200MP) runs at least into single-user mode, possibly
multi-user mode (not stable yet).
 1.18 20-Mar-2001  tsubai Redo previous. Instead of defining another type, mask upper bits of pvr.
 1.17 07-Mar-2001  tsubai Add another CPU ID for G4; PowerBook G4 has different PVR value.
 1.16 14-Nov-2000  matt branches: 1.16.2;
Add initial support dual-CPU G4. At least finds 2nd CPU.
 1.15 09-Nov-2000  tsubai Enable HID0_BTIC on 750 and 7400.
 1.14 08-Nov-2000  tsubai defopt L2CR_CONFIG.
 1.13 28-Oct-2000  tsubai Use "doze" power-saving mode on 750 and 7400.
 1.12 12-Sep-2000  tsubai Configure L2 cache if it is not enabled by the firmware.
 1.11 05-Sep-2000  tsubai On G3 and G4, display short message if L2 cache is not enabled.
 1.10 08-Jul-2000  tsubai * Redo previous; set PIR on 604 and 7400 only.
* printf clean-up.
 1.9 07-Jul-2000  tsubai Set PIR only if MULTIPROCESSOR is defined.
 1.8 06-Jul-2000  tsubai Make it compile with "options MULTIPROCESSOR".
 1.7 05-Jul-2000  tsubai First attempt to spin up the secondary processor on 180MP and 200MP.
XXX Need more work.
 1.6 08-Feb-2000  tsubai branches: 1.6.4;
Enter power saving mode in idle loop on 603, 750, and 7400.
603 uses doze mode, 750 and 7400 use nap mode.
 1.5 21-Jan-2000  tsubai Recognize MPC7400.
 1.4 30-Jun-1999  tsubai branches: 1.4.2;
Display verbose messages about L2 cache.
 1.3 16-Feb-1999  tsubai branches: 1.3.4;
Add copyright notice.
 1.2 15-Feb-1999  hubertf RCS ID police
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3.4.1 01-Jul-1999  thorpej Sync w/ -current.
 1.4.2.4 27-Mar-2001  bouyer Sync with HEAD.
 1.4.2.3 12-Mar-2001  bouyer Sync with HEAD.
 1.4.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.4.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.6.4.2 05-Nov-2000  tv Pullup modified 1.13 by patch [tsubai]:
Use "doze" power-saving mode on 750 and 7400.
 1.6.4.1 01-Nov-2000  tv Pullup 1.11 and 1.12 by patch [tsubai, mycroft]:
On G3 and G4, display short message if L2 cache is not enabled.
Configure L2 cache if it is not enabled by the firmware.
 1.16.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.16.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.21.2.7 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.21.2.6 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.21.2.5 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.21.2.4 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.21.2.3 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.21.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.21.2.1 03-Aug-2001  lukem update to -current
 1.24.6.6 18-Oct-2002  nathanw Catch up to -current.
 1.24.6.5 06-Aug-2002  nathanw Catch up with powerpc rototilling.
 1.24.6.4 01-Aug-2002  nathanw Catch up to -current.
 1.24.6.3 20-Jun-2002  nathanw Catch up to -current.
 1.24.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.24.6.1 26-Aug-2001  nathanw file cpu.c was added on branch nathanw_sa on 2002-01-08 00:26:11 +0000
 1.25.8.2 31-Aug-2002  gehenna catch up with -current.
 1.25.8.1 14-Jul-2002  gehenna catch up with -current.
 1.33.2.5 04-Feb-2005  skrll Sync with HEAD.
 1.33.2.4 18-Dec-2004  skrll Sync with HEAD.
 1.33.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.33.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.33.2.1 03-Aug-2004  skrll Sync with HEAD
 1.39.6.1 12-Feb-2005  yamt sync with head.
 1.39.4.1 29-Apr-2005  kent sync with -current
 1.40.6.5 07-Dec-2007  yamt sync with head
 1.40.6.4 27-Oct-2007  yamt sync with head.
 1.40.6.3 03-Sep-2007  yamt sync with head.
 1.40.6.2 30-Dec-2006  yamt sync with head.
 1.40.6.1 21-Jun-2006  yamt sync with head.
 1.42.22.1 22-Oct-2006  yamt sync with head
 1.42.20.1 18-Nov-2006  ad Sync with head.
 1.43.16.9 11-Oct-2007  garbled Move a bunch of the macppc SMP code out of macppc, and down into the
generic OEA code. Add a set of md callbacks into these shared routines,
that any oeappc SMP machine needs to provide. This allows for generally
shared SMP startup code, but still allows for machine-specific
differences in the setup and kicking of the new CPU.

Convert macppc to this new layout. Tested by Macallan.

Add an initial attempt at SMP to prep. Tested on UP machine only,
untested on SMP yet.
 1.43.16.8 11-Oct-2007  macallan ipiops.ppc_send_ipi -> ppc_send_ipi
 1.43.16.7 10-Oct-2007  garbled New ppcoea-MI IPI infrastructure. This is similar to the PIC
infrastructure, but simplified greatly.

Also, convert macppc (the only port currently using IPI's) over to this new
infrastructure. Still some minor work left to do here.
 1.43.16.6 04-Oct-2007  macallan unbork SMP for G4 machines
 1.43.16.5 03-Oct-2007  garbled Sync with HEAD
 1.43.16.4 02-Aug-2007  macallan sync with HEAD
 1.43.16.3 26-Jun-2007  garbled Sync with HEAD.
 1.43.16.2 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.43.16.1 29-May-2007  macallan sync with HEAD
 1.43.10.1 11-Jul-2007  mjf Sync with head.
 1.43.8.5 03-Dec-2007  ad Sync with HEAD.
 1.43.8.4 03-Dec-2007  ad Sync with HEAD.
 1.43.8.3 23-Oct-2007  ad Sync with head.
 1.43.8.2 20-Aug-2007  ad Sync with HEAD.
 1.43.8.1 09-Jun-2007  ad Sync with head.
 1.44.4.1 15-Aug-2007  skrll Sync with HEAD.
 1.44.2.1 07-Aug-2007  matt Sync with HEAD.
 1.45.10.2 18-Nov-2007  bouyer Sync with HEAD
 1.45.10.1 25-Oct-2007  bouyer Sync with HEAD.
 1.45.8.1 18-Oct-2007  yamt sync with head.
 1.45.6.2 09-Jan-2008  matt sync with HEAD
 1.45.6.1 06-Nov-2007  matt sync with HEAD
 1.45.4.2 21-Nov-2007  joerg Sync with HEAD.
 1.45.4.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.46.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.48.40.1 07-Jan-2011  matt Deal with split <spr.h> (and a few other misc fixes).
 1.48.32.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.48.26.1 28-Apr-2009  skrll Sync with HEAD.
 1.48.18.2 11-Mar-2010  yamt sync with head
 1.48.18.1 04-May-2009  yamt sync with head.
 1.52.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.53.2.2 12-Jun-2011  rmind sync with head
 1.53.2.1 05-Mar-2011  rmind sync with head
 1.54.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.54.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.58.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.58.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.58.2.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.58.2.1 30-Oct-2012  yamt sync with head
 1.59.2.1 18-May-2014  rmind sync with head
 1.60.28.2 21-May-2018  pgoyette Sync with HEAD
 1.60.28.1 30-Mar-2018  pgoyette Resolve conflicts between branch and HEAD
 1.67.2.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.69.2.2 29-Feb-2020  ad Sync with head.
 1.69.2.1 17-Jan-2020  ad Sync with head.
 1.50 13-Aug-2022  martin Do not try to create a fake MBR disklabel from the PMBR of a GPT disk.
 1.49 14-Mar-2014  mrg remove various set-but-unused variables.
 1.48 24-Jan-2012  hauke branches: 1.48.6; 1.48.10;
Add support for BSD disklabels, scanning the beginning of the disk
in four-byte strides, like disklabel(8) does it.

Since the netbsd-6 branch is around the corner, this is a
minimally-intrusive addition.

Note there is no write support, for good reasons.
Note also that disksubr.c is in dire need of re-structuring.
 1.47 16-Mar-2009  dsl branches: 1.47.12; 1.47.16;
ANSIfy functions with function-pointer arguments
 1.46 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.45 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.44 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.43 02-Jan-2008  ad branches: 1.43.10; 1.43.18; 1.43.24;
Merge vmlocking2 to head.
 1.42 17-Oct-2007  garbled branches: 1.42.2; 1.42.4; 1.42.8;
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 08-Oct-2007  ad Merge brelse() changes from the vmlocking branch.
 1.40 04-Mar-2007  macallan branches: 1.40.2; 1.40.10; 1.40.18; 1.40.20; 1.40.22;
make this compile again
 1.39 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.38 25-Nov-2006  scw branches: 1.38.4;
Replace the myriad copies of bounds_check_with_label() with a single MI
version.

Add disk_blocksize(9) so that disk drivers can record the physical
block size of a disk if it is different to DEV_BSIZE. Right now this
simply initialises dk_blkshift and dk_byteshift according to the
supplied block size. This information is used in the MI version of
bounds_check_with_label().
 1.37 29-Jan-2006  dsl branches: 1.37.18; 1.37.20;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h
 1.36 11-Dec-2005  christos branches: 1.36.2;
merge ktrace-lwp.
 1.35 03-Jun-2005  matt branches: 1.35.2;
Cleanup new warnings...
 1.34 08-Nov-2004  mbw Reverting.
Apparently these patches cause problems.
 1.33 07-Nov-2004  mbw Add disklabel recognition for another Apple file type
"BZB_ROOTFS_NEW 0xc000"
Also closes PR 10046
 1.32 01-Nov-2003  jdolecek avoid stong words in comments
 1.31 08-Oct-2003  lukem Overhaul MBR handling (part 1):

<sys/bootblock.h>:
* Added definitions for the Master Boot Record (MBR) used by
a variety of systems (primarily i386), including the format
of the BIOS Parameter Block (BPB).
This information was cribbed from a variety of sources
including <sys/disklabel_mbr.h> which this is a superset of.

As part of this, some data structure elements and #defines
were renamed to be more "namespace friendly" and consistent
with other bootblocks and MBR documentation.
Update all uses of the old names to the new names.

<sys/disklabel_mbr.h>:
* Deprecated in favor of <sys/bootblock.h> (the latter is more
"host tool" friendly).

amd64 & i386:
* Renamed /usr/mdec/bootxx_dosfs to /usr/mdec/bootxx_msdos, to
be consistent with the naming convention of the msdosfs tools.

* Removed /usr/mdec/bootxx_ufs, as it's equivalent to bootxx_ffsv1
and it's confusing to have two functionally equivalent bootblocks,
especially given that "ufs" has multiple meanings (it could be
a synonym for "ffs", or the group of ffs/lfs/ext2fs file systems).

* Rework pbr.S (the first sector of bootxx_*):
+ Ensure that BPB (bytes 11..89) and the partition table
(bytes 446..509) do not contain code.
+ Add support for booting from FAT partitions if BOOT_FROM_FAT
is defined. (Only set for bootxx_msdos).
+ Remove "dummy" partition 3; if people want to installboot(8)
these to the start of the disk they can use fdisk(8) to
create a real MBR partition table...
+ Compile with TERSE_ERROR so it fits because of the above.
Whilst this is less user friendly, I feel it's important
to have a valid partition table and BPB in the MBR/PBR.

* Renamed /usr/mdec/biosboot to /usr/mdec/boot, to be consistent
with other platforms.

* Enable SUPPORT_DOSFS in /usr/mdec/boot (stage2), so that
we can boot off FAT partitions.

* Crank version of /usr/mdec/boot to 3.1, and fix some of the other
entries in the version file.

installboot(8) (i386):
* Read the existing MBR of the filesystem and retain the BIOS
Parameter Block (BPB) in bytes 11..89 and the MBR partition
table in bytes 446..509. (Previously installboot(8) would
trash those two sections of the MBR.)

mbrlabel(8):
* Use sys/lib/libkern/xlat_mbr_fstype.c instead of homegrown code
to map the MBR partition type to the NetBSD disklabel type.


Test built "make release" for i386, and new bootblocks verified to work
(even off FAT!).
 1.30 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.29 15-Jul-2003  lukem __KERNEL_RCSID()
 1.28 10-May-2003  thorpej branches: 1.28.2;
Change bounds_check_with_label() to take a pointer to the disk structure,
rather than the label itself. This paves the way for some future changes.
 1.27 02-May-2003  dsl Change return type of readdisklabel() to const char *
I hope I've found all the correct places!
 1.26 16-Apr-2003  bouyer Nake return values from bounds_check_with_label() conform to the man
page: -1 for error, 0 for EOF, 1 otherwise. Inspired by an OpenBSD commit
message, pointed out by Miod Vallat in private mail.
vax/mba/hp.c: check return value <= 0, not < 0 to be concistent with how
other places handle return values from bounds_check_with_label().
 1.25 28-Sep-2002  dbj recognize FS_APPLEUFS partitions
part of PR #17345
 1.24 10-Sep-2002  dbj reorganized code slightly that converts a partition map to a disklabel.
No functional change intended by this commit.
 1.23 19-Jun-2002  itojun correct writedisklabel() on MBR-partitioned disk.

while here, correct labelsector/offset mismatch in writedisklabel,
when readdisklabel() have found the label at nonstandard location
(due to magic number search). a lot of other ports have the same problem.
 1.22 18-Jun-2002  itojun write/readdisklabel are not consistent in MBR-partitioned case;
forbid writes for now (real fix should follow).
 1.21 17-Jun-2002  itojun make it possible to handle/mount FDISK-partitioned disk.
extended FDISK partitions are not supported yet.
openbsd code was used as reference.
 1.20 27-Mar-2002  wrstuden branches: 1.20.2;
Revert last change as we now can get FSMAXTYPES w/o needing FSTYPENAMES
to be set.
 1.19 23-Mar-2002  enami Make this file compiles again.
 1.18 23-Mar-2002  wrstuden Add support for storing NetBSD file system type codes inside of
an Apple Partition entry. As proposed to port-macppc. Also some
prototype modernization for touched routines.

Method is that NETBSD, NETBSD/MACPPC, NETBSD/MAC68K partitions,
if they have a valid bzb, contain all of the info we shove in a NetBSD
disklabel partition entry. defines in disklabel.h cover aliasing
some of the bzb fields.
 1.17 19-Feb-2002  wiz strategy should have an 'r'. Inspired by similar change in OpenBSD.
 1.16 22-Jul-2001  wiz branches: 1.16.2; 1.16.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.15 19-Jun-2001  simonb branches: 1.15.2;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.14 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.13 28-Feb-2001  matt branches: 1.13.2;
Recognize NETBSD & NETBSD/MACPPC parition types, default HFS to parition d.
Exclude FWDRIVER.
 1.12 24-Feb-2001  matt Move cpu_sysct and dump{mag,lo,siz} & cpu_dumpconf to powerpc_machdep.c.
dumpsys is still port-specific for now. XXX dumpsys is still a stub
on all powerpc ports.
 1.11 20-Nov-2000  chs rationalize the use of b_flags for geteblk() buffers.
rather than assigning to the whole field, set or clear individual flags,
which implies that the B_BUSY and B_INVAL flags will remain set.
this allows us to make the assertion in brelse() that B_BUSY is set,
which is the purpose of all this.
 1.10 23-Aug-2000  wrstuden Correctly spell DRIVER. Noted by Tsubai. :-)
 1.9 18-Aug-2000  wrstuden Add some new partition types, and flags. Have the Apple Partition Map
code ignore the new partition types, and look for the new "USR" partition
flag.

From SUNAGAWA Keiki <kei_sun@ba2.so-net.ne.jp> with slight changes by me.

Closes PR port-macppc/10046
 1.8 19-May-2000  thorpej branches: 1.8.4;
A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well. This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
 1.7 10-Feb-2000  tsubai Don't display "NetBSD disklabel". This message appears too many times
if more than two or three disks exist.
 1.6 18-Jan-2000  thorpej Use b_cylinder as defined in sys/buf.h
 1.5 27-Sep-1999  wrstuden branches: 1.5.2; 1.5.8;
Add support for reading MacOS-partitioned disks. Stolen from the mac68k
port, but modified in that macppc searches for netbsd-partitioned disks
before MacOS partitioned disks, since installboot generates a fake MacOS
partition table which isn't the one we want to use.
 1.4 31-Jan-1999  tsubai branches: 1.4.2;
Adapt disklabel_mbr.h change.
 1.3 27-Jan-1999  thorpej Use <sys/disklabel_mbr.h>.
 1.2 01-Sep-1998  tsubai Make disklabel writable even if no disklabel exists.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.4.2.1 19-Oct-1999  he Pull up revision 1.5 (requested by wrstuden):
Add support for reading MacOS-partitioned disks. Stolen from the mac68k
port, but modified in that macppc searches for netbsd-partitioned
disks before MacOS partitioned disks, since installboot generates a
fake MacOS partition table which isn't the one we want to use.
 1.5.8.1 21-Dec-1999  wrstuden Initial commit of recent changes to make DEV_BSIZE go away.

Runs on i386, needs work on other arch's. Main kernel routines should be
fine, but a number of the stand programs need help.

cd, fd, ccd, wd, and sd have been updated. sd has been tested with non-512
byte block devices. vnd, raidframe, and lfs need work.

Non 2**n block support is automatic for LKM's and conditional for kernels
on "options NON_PO2_BLOCKS".
 1.5.2.3 12-Mar-2001  bouyer Sync with HEAD.
 1.5.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.5.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.8.4.1 28-Aug-2000  wrstuden Pull in some changes for Apple partitioning. Approved by thorpej.

> Log Message:
> Add some new partition types, and flags. Have the Apple Partition Map
> code ignore the new partition types, and look for the new "USR" partition
> flag.
>
> >From SUNAGAWA Keiki <kei_sun@ba2.so-net.ne.jp> with slight changes by me.
>
> Closes PR port-macppc/10046
 1.13.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.15.2.5 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.15.2.4 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.15.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.15.2.2 16-Mar-2002  jdolecek Catch up with -current.
 1.15.2.1 03-Aug-2001  lukem update to -current
 1.16.6.7 18-Oct-2002  nathanw Catch up to -current.
 1.16.6.6 17-Sep-2002  nathanw Catch up to -current.
 1.16.6.5 01-Aug-2002  nathanw Catch up to -current.
 1.16.6.4 20-Jun-2002  nathanw Catch up to -current.
 1.16.6.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.16.6.2 28-Feb-2002  nathanw Catch up to -current.
 1.16.6.1 22-Jul-2001  nathanw file disksubr.c was added on branch nathanw_sa on 2002-02-28 04:10:40 +0000
 1.16.2.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.20.2.2 16-Jul-2002  gehenna catch up with -current.
 1.20.2.1 14-Jul-2002  gehenna catch up with -current.
 1.28.2.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.28.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.28.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.28.2.1 03-Aug-2004  skrll Sync with HEAD
 1.35.2.5 21-Jan-2008  yamt sync with head
 1.35.2.4 27-Oct-2007  yamt sync with head.
 1.35.2.3 03-Sep-2007  yamt sync with head.
 1.35.2.2 30-Dec-2006  yamt sync with head.
 1.35.2.1 21-Jun-2006  yamt sync with head.
 1.36.2.1 01-Feb-2006  yamt sync with head.
 1.37.20.1 10-Dec-2006  yamt sync with head.
 1.37.18.1 12-Jan-2007  ad Sync with head.
 1.38.4.1 12-Mar-2007  rmind Sync with HEAD.
 1.40.22.1 14-Oct-2007  yamt sync with head.
 1.40.20.2 09-Jan-2008  matt sync with HEAD
 1.40.20.1 06-Nov-2007  matt sync with HEAD
 1.40.18.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.40.10.2 16-Oct-2007  garbled Sync with HEAD
 1.40.10.1 08-Oct-2007  macallan sync with HEAD
 1.40.2.1 09-Oct-2007  ad Sync with head.
 1.42.8.1 02-Jan-2008  bouyer Sync with HEAD
 1.42.4.1 27-Dec-2007  ad locking changes for macppc. Please test.
 1.42.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.43.24.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.43.18.1 28-Apr-2009  skrll Sync with HEAD.
 1.43.10.1 04-May-2009  yamt sync with head.
 1.47.16.1 18-Feb-2012  mrg merge to -current.
 1.47.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.47.12.1 17-Apr-2012  yamt sync with head
 1.48.10.1 18-May-2014  rmind sync with head
 1.48.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.65 17-Oct-2007  garbled 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.64 14-Jul-2007  ad branches: 1.64.8; 1.64.10; 1.64.12; 1.64.14;
Generic soft interrupts are mandatory.
 1.63 09-Feb-2007  ad branches: 1.63.6; 1.63.14;
Merge newlock2 to head.
 1.62 13-Oct-2006  macallan clear only interrupts we really use, fixes weirdnesses with PCMCIA cards on
my PB3400
 1.61 29-Sep-2006  he When the implementation of lpic_dump() is inside DIAGNOSTIC, the
declaration of it has to be too.
 1.60 28-Sep-2006  he Since intr_spin is declared inside #ifdef DIAGNOSTIC, make sure the uses
are too, so that this builds without DIAGNOSTIC defined.
 1.59 27-Sep-2006  macallan rewrite most of the Old World interrupt handling to allow things like
cascaded PICs found in some PowerBooks, like two OHare in the PB3400c
 1.58 14-Aug-2006  jmcneill branches: 1.58.2; 1.58.4;
Please don't voluntarily panic before looking for ohare mac-io; I need
ohare on my Performa 6360.
 1.57 05-Aug-2006  sanjayl branches: 1.57.2;
1st cut of Powermac G5 support (uses bridge mode).
 1.56 13-Jun-2006  freza Merge multiple definitions of cntlzw() ("count leading zeros")
instruction-wrapper to <powerpc/cpu.h>.

OK by briggs@
 1.55 24-Dec-2005  perry branches: 1.55.4; 1.55.8; 1.55.14;
bare asm -> __asm
 1.54 24-Dec-2005  perry Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.53 11-Dec-2005  christos merge ktrace-lwp.
 1.52 03-Jun-2005  matt branches: 1.52.2;
Cleanup new warnings...
 1.51 04-Mar-2005  briggs Fix from Nozomu Ando to ensure that read interrupts are acknowledged.
May address PR port-macppc/28870.
 1.50 21-Jan-2005  briggs branches: 1.50.2;
Back out part of revision 1.46. Do not use atomic_setbits_ulong() for
softintr(). Need to figure out why this causes problems. Thanks to
Izumi Tsutsui for isolating this change.
 1.49 18-Jan-2005  briggs Formatting.
Add a couple of DIAGNOSTIC checks to look for NULL interrupt handlers.
 1.48 11-Jan-2005  chs branches: 1.48.2;
assert that PSL_EE is on when do_pending_int() is called
(since things don't work too well if it's not).
 1.47 07-Jan-2005  briggs - Use the O'Hare mask on systems with /bandit/ohare. This basically treats
the mediabay interrupt as an internal interrupt.
- Simplify gc_reenable_irq() a bit.
- Ensure that interrupts are off when we call gc_reenable_irq().
- Make the handling for stuck interrupts on old-style interrupt controllers
a bit more robust. If we get stuck interrupts, don't panic. Just disable
them.
 1.46 17-Dec-2004  briggs - Avoid looking for lost interrupts when recalculating interrupt priorities.
- Use atomic_setbits_ulong() for softintr(). Thanks to Tim Kelly for
reminding me about atomic_*.
 1.45 09-Dec-2004  briggs Revamp the old-world interrupt support based on better understanding of
the hardware. Inspired by Michael Lorenz with some hints from OpenDarwin
sources. Thanks to Michael for beginnings of the patch and for both
discussion and testing. Thanks to Tim Kelly and Riccardo Mottola for
further testing.
 1.44 20-Jun-2004  manu We used to look for the interrupt controller through the "interrupt-controller"
property of "/chosen" node in OF tree. On newer machines (e.g: iBook G4),
this property does not exist. We look for the node "mpic" as a second attempt
after a failure in /chosen.

This makes the iBook G4 keyboard almost usable (there are still some spurious
inputs on system startupi)
 1.43 12-May-2004  wiz Remove UCB ad clause from tsubai's license.
Ok'd by tsubai and board.
 1.42 24-Mar-2004  matt branches: 1.42.2;
Add latent generic soft interrupt support.
 1.41 13-Feb-2004  wiz Uppercase CPU, plural is CPUs.
 1.40 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.39 15-Jul-2003  lukem __KERNEL_RCSID()
 1.38 23-Jun-2003  martin branches: 1.38.2;
Make sure to include opt_foo.h if a defflag option FOO is used.
 1.37 16-Jun-2003  thorpej Rename IPL_IMP -> IPL_VM.
 1.36 03-Feb-2003  matt Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea).
 1.35 02-Feb-2003  matt Perform a rototill of the powerpc code. Mandate use of SPRG0 to store
a pointer to current cpu's cpu_info structure. Use cpu_info for
intstk,intr_depth,still_stk,idle_pcb,curpcb,curlwp,etal even on
non-MULTIPROCESSOR machines. Add common macros GET_CPUINFO and
INIT_CPUINFO to get and initialize the cpu_info struct on startup. Make
ibm4xx use the standard <powerpc/frame.h>. Use IFRAME_xx in ibm4xx
trap_subr.S instead of explicit magic offsets. Move INTSTK and SPILLSTK
to std.<platform>. Change faultbuf to a struct instead of an array.

On MPC6XX cpus, stop using the vector page for temporary space and use
reserved space in cpu_info.
 1.34 06-Aug-2002  chs add code from tsubai to handle the second CPU on openpic machines.
the second CPU on dual G4 boxes works now.
while I'm here, use mfmsr() and mtmsr() instead of inline asms.
 1.33 05-Jul-2002  matt Peform a rototill over the powerpc-based ports.

Move the trap/vector initialization for MPC6xx ports to mpc6xx_machdep.c
Also move softnet, install_extintr, mapiodev, kvtop. Add common BAT
initialization code.

Add user Altivec support.

Fix calls to OF_call_method in macppc/macppc/machdep.c.

Use ci_fpuproc in cpu_info instead of separate fpuproc.

Add separate syscall.c and defined __HAVE_SYSCALL_INTERN.
 1.32 22-Jul-2001  wiz branches: 1.32.6; 1.32.10; 1.32.14;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.31 08-Jun-2001  matt branches: 1.31.2;
Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.30 26-Apr-2001  tsubai Comment out ``printf("spurious interrupt\n")''.
 1.29 22-Mar-2001  tsubai Merge my MP tree. At this point, Daystar dual 604 card (i.e. Power Macintosh
9500/180MP and 9600/200MP) runs at least into single-user mode, possibly
multi-user mode (not stable yet).
 1.28 21-Mar-2001  tsubai Enable interrupts before calling interrupt handler(s).
 1.27 23-Feb-2001  matt branches: 1.27.2;
if we panic to a bad/illegal irq, at include the invalid irq value in
the panic message.
 1.26 05-Feb-2001  briggs Tsubai has convinced me that openpic_init() should remain machine-dependant
as the details might differ between archs, and passing the various options
leads to some clutter.
 1.25 04-Feb-2001  briggs Correct previous. Call openpic_init() correctly.
 1.24 04-Feb-2001  briggs Adapt to new openpic_init() parameters.
 1.23 02-Feb-2001  briggs Split OpenPIC support into powerpc so ports only need minimal custom
configuration. openpic_init() now takes a single argument that is the
base of the OpenPIC register space.
 1.22 15-Jan-2001  thorpej Make softclock a generic soft interrupt of the API is available,
adding the requisite void * argument to softclock().
 1.21 04-Jan-2001  tsubai Fix lost-software-interrupt bug.
 1.20 01-Jan-2001  tsubai MP support in external interrupt handler.
 1.19 17-Dec-2000  tsubai Clean up unused variables.
 1.18 17-Dec-2000  tsubai Move variable tickspending to clock.c; it's used in only clock.c.
 1.17 01-Dec-2000  kei fix a typo in the printf message.
 1.16 29-Nov-2000  tsubai Make spl functions no-inline. This saves size and even it runs faster on
some systems.
 1.15 20-Aug-2000  tsubai Add "type" argument to openpic_enable_irq().
 1.14 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.13 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.12 14-Feb-2000  tsubai branches: 1.12.4;
Add minimal support of openpic.
 1.11 11-Feb-2000  tsubai Change ICU_LEN to 64.
 1.10 17-Sep-1999  thorpej branches: 1.10.2;
Centralize the declaration and clearing of `cold'.
 1.9 08-Sep-1999  tsubai Inline some functions.
 1.8 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.7 17-Jan-1999  tsubai Fix a intrcnt bug.
 1.6 12-Jan-1999  tsubai Support irq > 31.
XXX dirty hack...
 1.5 07-Oct-1998  tsubai Mask clock interrupt properly if >= splclock.
 1.4 15-Aug-1998  mycroft Make copyright notices with my name consistent.
 1.3 13-Aug-1998  tsubai Mask interrupt by hardware register if possible.
 1.2 13-Jul-1998  tsubai Add support for G3 Mac.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.10.2.7 27-Mar-2001  bouyer Sync with HEAD.
 1.10.2.6 12-Mar-2001  bouyer Sync with HEAD.
 1.10.2.5 11-Feb-2001  bouyer Sync with HEAD.
 1.10.2.4 18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.10.2.3 05-Jan-2001  bouyer Sync with HEAD
 1.10.2.2 08-Dec-2000  bouyer Sync with HEAD.
 1.10.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.4.1 01-Nov-2000  tv Pullup 1.15 [tsubai, mycroft]:
Add "type" argument to openpic_enable_irq().
 1.27.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.27.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.31.2.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.31.2.1 03-Aug-2001  lukem update to -current
 1.32.14.2 31-Aug-2002  gehenna catch up with -current.
 1.32.14.1 16-Jul-2002  gehenna catch up with -current.
 1.32.10.1 17-Mar-2002  thorpej IPL_IMP -> IPL_VM
 1.32.6.3 06-Aug-2002  nathanw Catch up with powerpc rototilling.
 1.32.6.2 01-Aug-2002  nathanw Catch up to -current.
 1.32.6.1 22-Jul-2001  nathanw file extintr.c was added on branch nathanw_sa on 2002-08-01 02:42:27 +0000
 1.38.2.8 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.38.2.7 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.38.2.6 24-Jan-2005  skrll Sync with HEAD.
 1.38.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.38.2.4 18-Dec-2004  skrll Sync with HEAD.
 1.38.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.38.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.38.2.1 03-Aug-2004  skrll Sync with HEAD
 1.42.2.1 22-Jun-2004  tron Pull up revision 1.44 (requested by manu in ticket #533):
We used to look for the interrupt controller through the "interrupt-controller"
property of "/chosen" node in OF tree. On newer machines (e.g: iBook G4),
this property does not exist. We look for the node "mpic" as a second attempt
after a failure in /chosen.
This makes the iBook G4 keyboard almost usable (there are still some spurious
inputs on system startupi)
 1.48.2.1 29-Apr-2005  kent sync with -current
 1.50.2.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.52.2.5 27-Oct-2007  yamt sync with head.
 1.52.2.4 03-Sep-2007  yamt sync with head.
 1.52.2.3 26-Feb-2007  yamt sync with head.
 1.52.2.2 30-Dec-2006  yamt sync with head.
 1.52.2.1 21-Jun-2006  yamt sync with head.
 1.55.14.1 19-Jun-2006  chap Sync with head.
 1.55.8.3 03-Sep-2006  yamt sync with head.
 1.55.8.2 11-Aug-2006  yamt sync with head
 1.55.8.1 26-Jun-2006  yamt sync with head.
 1.55.4.1 09-Sep-2006  rpaulo sync with head
 1.57.2.1 14-Sep-2006  riz Pull up following revision(s) (requested by jklos in ticket #152):
sys/arch/macppc/macppc/extintr.c: revision 1.58
Please don't voluntarily panic before looking for ohare mac-io; I need
ohare on my Performa 6360.
 1.58.4.1 22-Oct-2006  yamt sync with head
 1.58.2.2 28-Jan-2007  ad powerpc changes.
 1.58.2.1 18-Nov-2006  ad Sync with head.
 1.63.14.1 09-May-2007  macallan byebye extintr.c
 1.63.6.2 23-Oct-2007  ad Sync with head.
 1.63.6.1 15-Jul-2007  ad Sync with head.
 1.64.14.1 25-Oct-2007  bouyer Sync with HEAD.
 1.64.12.1 18-Oct-2007  yamt sync with head.
 1.64.10.1 06-Nov-2007  matt sync with HEAD
 1.64.8.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.3 29-Oct-2012  chs fix compile problems (for POWERMAC_G5).
 1.2 23-Aug-2006  sanjayl branches: 1.2.4; 1.2.10; 1.2.98; 1.2.108;
the following address a couple of issues with the G5 port.

(1) failsafe.c allows character input from the failsafe
console device. This is the early console device that is used for output before
the pmap layer is initialized.

(1) locore.S: make sure that the size of the cacheline for
dcbz is set to the default of 128 bytes. It also sets up other mode bits on
the 970. This fix allows the G5 to boot into full multi user mode using a
NFS mounted root file system.
 1.1 05-Aug-2006  sanjayl branches: 1.1.2; 1.1.4;
1st cut of Powermac G5 support (uses bridge mode).
 1.1.4.3 03-Sep-2006  yamt sync with head.
 1.1.4.2 11-Aug-2006  yamt sync with head
 1.1.4.1 05-Aug-2006  yamt file failsafe.c was added on branch yamt-pdpolicy on 2006-08-11 15:42:14 +0000
 1.1.2.1 28-Aug-2006  riz Pull up following revision(s) (requested by sanjayl in ticket #72):
sys/arch/macppc/macppc/locore.S: revision 1.57
sys/arch/macppc/macppc/failsafe.c: revision 1.2
the following address a couple of issues with the G5 port.
(1) failsafe.c allows character input from the failsafe
console device. This is the early console device that is used for
output before
the pmap layer is initialized.
(1) locore.S: make sure that the size of the cacheline for
dcbz is set to the default of 128 bytes. It also sets up other mode
bits on
the 970. This fix allows the G5 to boot into full multi user mode
using a
NFS mounted root file system.
 1.2.108.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.2.98.1 30-Oct-2012  yamt sync with head
 1.2.10.2 30-Dec-2006  yamt sync with head.
 1.2.10.1 23-Aug-2006  yamt file failsafe.c was added on branch yamt-lazymbuf on 2006-12-30 20:46:30 +0000
 1.2.4.2 09-Sep-2006  rpaulo sync with head
 1.2.4.1 23-Aug-2006  rpaulo file failsafe.c was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:41:14 +0000
 1.10 18-Apr-2002  matt Use a common genassym.cf for all the PPC_MPC6XX ports. Add a makeoptions to
std.foo to indicate the directory to get genassym.cf from. Add an intrframe
to <powerpc/frame.h> and make trap_subr.S use symbolic offsets into it.
 1.9 29-Nov-2001  mjl Need CACHELINESIZE for libkern memset.
 1.8 01-Jul-2001  matt branches: 1.8.2; 1.8.8;
Add PM_SR
 1.7 01-Jan-2001  tsubai Forgot to commit this...
 1.6 06-Jul-2000  tsubai Make it compile with "options MULTIPROCESSOR".
 1.5 04-Jul-2000  tsubai s/#include/include/
 1.4 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.3 26-May-2000  thorpej Introduce a new process state distinct from SRUN called SONPROC
which indicates that the process is actually running on a
processor. Test against SONPROC as appropriate rather than
combinations of SRUN and curproc. Update all context switch code
to properly set SONPROC when the process becomes the current
process on the CPU.
 1.2 05-Mar-1999  tsubai branches: 1.2.8;
RSS accounting.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.8.2 05-Jan-2001  bouyer Sync with HEAD
 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.8.8.4 20-Jun-2002  nathanw Catch up to -current.
 1.8.8.3 08-Jan-2002  nathanw Catch up to -current.
 1.8.8.2 05-Nov-2001  briggs Initial SA support for ppc. Test-booted on sandpoint, macppc, & walnut.
mcontext and cpu_getmcontext()/cpu_setmcontext() from Klaus Klein
<kleink@netbsd.org>.
 1.8.8.1 01-Jul-2001  briggs file genassym.cf was added on branch nathanw_sa on 2001-11-05 19:46:14 +0000
 1.8.2.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.8.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.11 22-Sep-2025  macallan when attaching an openpic make sure pic_cookie is the openpic's physical
address, which on G5s will be different from its virtual address for lack
of BATs
with this ki2c can find the correct pic on G5s with multiple pics
 1.10 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.9 28-Dec-2022  macallan first step towards MSI support on G5:
- allow both openpic and u3_ht to attach
- make sure openpic comes first, if we have both then u3_ht is cascaded
 1.8 26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.7 11-May-2018  macallan branches: 1.7.14;
deal with IPIs on U3/HT machines, only install OpenPIC IPI goop on actual
OpenPIC hardware
 1.6 22-Mar-2018  macallan sprinkle oea_mapiodev()
 1.5 18-Apr-2013  macallan branches: 1.5.34;
support OpenPIC variant found in PowerMac G5s
from Phileas Fogg
 1.4 14-Nov-2010  uebayasi branches: 1.4.8; 1.4.18;
Direct/indirect uses of sys/device.h and prop/proplib.h.
 1.3 29-Apr-2008  martin branches: 1.3.22;
Convert to new 2 clause license
 1.2 17-Oct-2007  garbled branches: 1.2.2; 1.2.4; 1.2.8; 1.2.22; 1.2.24; 1.2.26;
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.1 02-May-2007  macallan branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file interrupts.c was initially added on branch ppcoea-renovation.
 1.1.10.1 25-Oct-2007  bouyer Sync with HEAD.
 1.1.8.1 18-Oct-2007  yamt sync with head.
 1.1.6.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.1.2.5 10-Oct-2007  garbled New ppcoea-MI IPI infrastructure. This is similar to the PIC
infrastructure, but simplified greatly.

Also, convert macppc (the only port currently using IPI's) over to this new
infrastructure. Still some minor work left to do here.
 1.1.2.4 04-May-2007  macallan demote some debug output to aprint_debug()
use NPIC_* instead of PIC_*
 1.1.2.3 04-May-2007  macallan nuke stuff that moved over to powerpc/pic/
 1.1.2.2 03-May-2007  macallan openpic support
 1.1.2.1 02-May-2007  macallan use generic interrupt handling, so far only ohare-based machines are supported
 1.2.26.1 16-May-2008  yamt sync with head.
 1.2.24.1 18-May-2008  yamt sync with head.
 1.2.22.1 02-Jun-2008  mjf Sync with HEAD.
 1.2.8.2 06-Nov-2007  matt sync with HEAD
 1.2.8.1 17-Oct-2007  matt file interrupts.c was added on branch matt-armv6 on 2007-11-06 23:18:47 +0000
 1.2.4.2 27-Oct-2007  yamt sync with head.
 1.2.4.1 17-Oct-2007  yamt file interrupts.c was added on branch yamt-lazymbuf on 2007-10-27 11:27:09 +0000
 1.2.2.2 23-Oct-2007  ad Sync with head.
 1.2.2.1 17-Oct-2007  ad file interrupts.c was added on branch vmlocking on 2007-10-23 20:35:54 +0000
 1.3.22.1 05-Mar-2011  rmind sync with head
 1.4.18.1 23-Jun-2013  tls resync from head
 1.4.8.1 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.5.34.2 21-May-2018  pgoyette Sync with HEAD
 1.5.34.1 30-Mar-2018  pgoyette Resolve conflicts between branch and HEAD
 1.7.14.1 03-Apr-2021  thorpej Sync with HEAD.
 1.7 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.6 05-Mar-2021  rin Convert to intr_establish_xname().
 1.5 05-Jun-2011  matt branches: 1.5.66;
Remove <machine/atomic.h>; use <sys/atomic.h> instead.
Add <powerpc/cpuset.h> (for mpc85xx pmap).
Add some initial MP code for mpc85xx
Rework ipi code to be common across all ppcs
Change PPC to keep curlwp in %r13 while in the kernel.
Move astpending from cpu_info to mdlwp
Improve cpu_need_resched to be more MP friendly.
 1.4 20-Dec-2010  matt branches: 1.4.2; 1.4.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.3 28-Apr-2008  martin branches: 1.3.22;
Remove clause 3 and 4 from TNF licenses
 1.2 17-Oct-2007  garbled branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.12; 1.2.26; 1.2.28; 1.2.30;
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.1 10-Oct-2007  garbled branches: 1.1.2; 1.1.4;
file ipi_hammerhead.c was initially added on branch ppcoea-renovation.
 1.1.4.1 25-Oct-2007  bouyer Sync with HEAD.
 1.1.2.1 10-Oct-2007  garbled New ppcoea-MI IPI infrastructure. This is similar to the PIC
infrastructure, but simplified greatly.

Also, convert macppc (the only port currently using IPI's) over to this new
infrastructure. Still some minor work left to do here.
 1.2.30.1 16-May-2008  yamt sync with head.
 1.2.28.1 18-May-2008  yamt sync with head.
 1.2.26.1 02-Jun-2008  mjf Sync with HEAD.
 1.2.12.2 06-Nov-2007  matt sync with HEAD
 1.2.12.1 17-Oct-2007  matt file ipi_hammerhead.c was added on branch matt-armv6 on 2007-11-06 23:18:48 +0000
 1.2.8.2 27-Oct-2007  yamt sync with head.
 1.2.8.1 17-Oct-2007  yamt file ipi_hammerhead.c was added on branch yamt-lazymbuf on 2007-10-27 11:27:09 +0000
 1.2.6.2 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.2.6.1 17-Oct-2007  joerg file ipi_hammerhead.c was added on branch jmcneill-pm on 2007-10-26 15:42:52 +0000
 1.2.4.2 23-Oct-2007  ad Sync with head.
 1.2.4.1 17-Oct-2007  ad file ipi_hammerhead.c was added on branch vmlocking on 2007-10-23 20:35:54 +0000
 1.2.2.2 18-Oct-2007  yamt sync with head.
 1.2.2.1 17-Oct-2007  yamt file ipi_hammerhead.c was added on branch yamt-x86pmap on 2007-10-18 08:32:13 +0000
 1.3.22.2 12-Jun-2011  rmind sync with head
 1.3.22.1 05-Mar-2011  rmind sync with head
 1.4.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.4.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.5.66.1 03-Apr-2021  thorpej Sync with HEAD.
 1.82 18-Dec-2022  macallan add comment to explain why we zero SPRG0 here
NFC
 1.81 18-Dec-2022  macallan #ifdef DEBUG the previous change, it seems to cause trouble on qemu which
needs further investigation
 1.80 14-Dec-2022  macallan Explicitly zero SPRG0 before doing anything else - it's used to store a pointer
to struct cpuinfo, this way we can catch attempts to use it before it's set
up properly
 1.79 26-Feb-2021  thorpej Declare oeacpufeat once, in powerpc/oea/cpu_subr.c, rather than in
N different locore.S files.
 1.78 17-Feb-2021  thorpej Document the register state on entry per the OpenFirmware PowerPC CPU
bindings. Ensure we save off %r6 and %r7 before calling any other
functions.
 1.77 13-Feb-2021  thorpej Improve readability of this file by adding register prefixes.
 1.76 13-Feb-2021  thorpej Call cpu_model_init() after clearing the MSR.
 1.75 11-Feb-2021  macallan remove unused/useless #ifdef block
 1.74 11-Oct-2019  macallan branches: 1.74.8;
don't zero the MSR when building with options FIRMWORKSBUGS
with this a FIRMWORKSBUGS kernel boots on my TiBook
first step to address PR2231
 1.73 15-Jul-2018  maxv Retire ipkdb entirely. The option was removed from the config files
yesterday.

ok kamil christos
 1.72 09-Nov-2014  chs branches: 1.72.18; 1.72.20;
in the initial asm code, save the interesting caller-saved registers
(containing "arg" and "len") across function calls to C code.
fixes kernels built with gcc 4.8.
 1.71 11-Apr-2013  macallan branches: 1.71.10;
more OEA64_BRIDGE support
from Phileas Fogg
 1.70 20-Jun-2011  matt branches: 1.70.2; 1.70.12;
Don't include *pmap.h in assembly files. Get the needed definitions
from "assym.h".
 1.69 18-Jun-2011  matt Make a common genassym.cf (powerpc/genassym.cf) and then
only put specific stuff in foo/genassym.cf
 1.68 16-Jun-2011  matt Make __HAVE_FAST_SOFTINTS appear in assym.h so all oeas don't need to include
<powerpc/intr.h>
XXX <powerpc/intr.h> should be <powerpc/oea/intr.h>
 1.67 16-Jun-2011  macallan we need powerpc/intr.h n order to see __HAVE_FAST_SOFTINTS
 1.66 17-Jan-2011  matt branches: 1.66.4;
Kill _NOREGNAMES. Everything should be using %rX now. If it doesn't it
soon will.
 1.65 25-Feb-2010  matt branches: 1.65.2; 1.65.4;
Adapt to <spr.h> breakup.
 1.64 26-Nov-2009  matt branches: 1.64.2;
Kill proc0paddr. Use lwp0.l_addr instead.
 1.63 13-Feb-2009  apb Use "defopt MODULAR" in sys/conf/files, and #include "opt_modular.h"
in all kernel sources that use the MODULAR option.
Proposed in tech-kern on 18 Jan 2009.
 1.62 04-Dec-2008  macallan branches: 1.62.4;
actually call cpu_model_init()
This might be enough to get 601-based boxes going
 1.61 13-Nov-2008  ad LKM -> MODULAR
 1.60 05-Feb-2008  garbled branches: 1.60.6; 1.60.10; 1.60.16; 1.60.18; 1.60.28;
Because macppc shares code with ofppc, it needs oeacpufeat defined.
Other OEA ports do not yet make use of this code, so they don't require it.
 1.59 17-Oct-2007  garbled branches: 1.59.2;
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.58 21-Jul-2007  matt branches: 1.58.4; 1.58.6; 1.58.8; 1.58.10;
Make MP kernels build again. Heck, if I'm lucky, maybe these changes will
even make one boot.
 1.57 23-Aug-2006  sanjayl branches: 1.57.12; 1.57.20; 1.57.24; 1.57.26;
the following address a couple of issues with the G5 port.

(1) failsafe.c allows character input from the failsafe
console device. This is the early console device that is used for output before
the pmap layer is initialized.

(1) locore.S: make sure that the size of the cacheline for
dcbz is set to the default of 128 bytes. It also sets up other mode bits on
the 970. This fix allows the G5 to boot into full multi user mode using a
NFS mounted root file system.
 1.56 15-Aug-2006  sanjayl G5/970 updates:
Setup cache bits in HID5 early on so that dcbz/icbi use the
128 byte cache line size. The mismatch was causing dynamically linked
apps to randomly coredump.

With this fix, the G5 can boot into full multi-user by using a NFS
mounted root file system.
 1.55 05-Aug-2006  sanjayl branches: 1.55.2;
1st cut of Powermac G5 support (uses bridge mode).
 1.54 11-Dec-2005  christos branches: 1.54.4; 1.54.8;
merge ktrace-lwp.
 1.53 31-May-2005  chs branches: 1.53.2;
remove vestigal {,e}intr{names,cnt} symbols now that vmstat doesn't need them.
 1.52 14-Jan-2004  tsutsui Preserve kernel symbol table not only #if defined(DDB) but
also #if NKSYMS > 0 || defined(LKM).
Should fix port-macppc/21742.
 1.51 31-Jul-2003  matt Add #define _NOREGNAMES (to suppress asm.h from #define r1 1 ...)
 1.50 03-Feb-2003  matt branches: 1.50.2;
Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea).
 1.49 03-Feb-2003  matt More cleanup for OLDPMAP.
 1.48 02-Feb-2003  matt Perform a rototill of the powerpc code. Mandate use of SPRG0 to store
a pointer to current cpu's cpu_info structure. Use cpu_info for
intstk,intr_depth,still_stk,idle_pcb,curpcb,curlwp,etal even on
non-MULTIPROCESSOR machines. Add common macros GET_CPUINFO and
INIT_CPUINFO to get and initialize the cpu_info struct on startup. Make
ibm4xx use the standard <powerpc/frame.h>. Use IFRAME_xx in ibm4xx
trap_subr.S instead of explicit magic offsets. Move INTSTK and SPILLSTK
to std.<platform>. Change faultbuf to a struct instead of an array.

On MPC6XX cpus, stop using the vector page for temporary space and use
reserved space in cpu_info.
 1.47 28-Jul-2002  chs terminate the MP idle stack for the boot CPU.
 1.46 14-Jul-2002  chs put the OF buffer page in the BSS rather than allocate it at runtime.
from PR 14497.
 1.45 09-Jul-2002  matt Common OFW code has been moved to powerpc/mpc6xx/ofw_subr.S. Now use it.
 1.44 09-Mar-2002  chs branches: 1.44.6;
switch all mpc6xx powerpc ports to NEWPMAP by default.
the old pmap is still available with the OLDPMAP option.
 1.43 06-Jan-2002  dbj add support for kgdb over zs
 1.42 31-Dec-2001  dbj save and restore sprg[0-3] when calling openfirmware
this fixes calling OF_finddevice() with invalid devices,
and as a result fixes booting with -d.
Apparently openfirmware expects persistence of sprg2 and/or sprg3
I suspect this is used when handling exceptions
 1.41 23-Jun-2001  matt branches: 1.41.2; 1.41.8;
#include <powerpc/spr.h> and SPR_PIR in place of 1023
 1.40 10-Jun-2001  tsubai Make the new pmap optional. Use the old (stable!) pmap by default.
 1.39 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.38 22-Mar-2001  tsubai Merge my MP tree. At this point, Daystar dual 604 card (i.e. Power Macintosh
9500/180MP and 9600/200MP) runs at least into single-user mode, possibly
multi-user mode (not stable yet).
 1.37 07-Mar-2001  tsubai Include trap_subr_mp.S if MULTIPROCESSOR is defined.
 1.36 25-Feb-2001  matt branches: 1.36.2;
Use common switch / setfault / trampoline code. (except amigappc because
it doesn't use trap_subr.S either).
 1.35 01-Jan-2001  tsubai Allocate intstk and spillstk for cpu0.
 1.34 01-Jan-2001  tsubai Switch to the idle stack before releasing the sched_lock (rev 1.31 was
wrong).
 1.33 01-Jan-2001  tsubai Make want_resched and astpending per-CPU.
Add some per-CPU variables to cpu_info.
 1.32 25-Dec-2000  tsubai Work around of "trap type 700 at ff8099b8".
It seems to work for me but I'm not sure...
 1.31 17-Dec-2000  tsubai Switch to the idle stack in the idle loop.
 1.30 04-Dec-2000  tsubai Move INTSTK and SPILLSTK definitions to locore.[Ss] to allow allocation of
them in early startup.
 1.29 25-Nov-2000  tsubai Add KERNEL_LOCK (et al.) to run MULTIPROCESSOR kernel on a single cpu system.
 1.28 16-Nov-2000  thorpej Use <powerpc/powerpc/trap_subr.S>
 1.27 21-Aug-2000  tsubai Scheduler locking changes.
 1.26 06-Jul-2000  tsubai Make it compile with "options MULTIPROCESSOR".
 1.25 05-Jul-2000  tsubai First attempt to spin up the secondary processor on 180MP and 200MP.
XXX Need more work.
 1.24 31-May-2000  thorpej branches: 1.24.2;
Add a comment about needing to initialize p_cpu when multiple
processors are supported.
 1.23 26-May-2000  thorpej branches: 1.23.2;
First sweep at scheduler state cleanup. Collect MI scheduler
state into global and per-CPU scheduler state:

- Global state: sched_qs (run queues), sched_whichqs (bitmap
of non-empty run queues), sched_slpque (sleep queues).
NOTE: These may collectively move into a struct schedstate
at some point in the future.

- Per-CPU state, struct schedstate_percpu: spc_runtime
(time process on this CPU started running), spc_flags
(replaces struct proc's p_schedflags), and
spc_curpriority (usrpri of processes on this CPU).

- Every platform must now supply a struct cpu_info and
a curcpu() macro. Simplify existing cpu_info declarations
where appropriate.

- All references to per-CPU scheduler state now made through
curcpu(). NOTE: this will likely be adjusted in the future
after further changes to struct proc are made.

Tested on i386 and Alpha. Changes are mostly mechanical, but apologies
in advance if it doesn't compile on a particular platform.
 1.22 26-May-2000  thorpej Introduce a new process state distinct from SRUN called SONPROC
which indicates that the process is actually running on a
processor. Test against SONPROC as appropriate rather than
combinations of SRUN and curproc. Update all context switch code
to properly set SONPROC when the process becomes the current
process on the CPU.
 1.21 24-Mar-2000  ws Update several ports to at least work again without IPKDB
after the update of that.
Sorry for breaking this with my last changes :-(.
Fixes PR#9671 by Lennart Augustsson.
 1.20 08-Feb-2000  tsubai Enter power saving mode in idle loop on 603, 750, and 7400.
603 uses doze mode, 750 and 7400 use nap mode.
 1.19 19-Jan-2000  danw Add a special trap handler for EXC_ALI that saves dsisr and dar
 1.18 07-Dec-1999  danw synchronize various changes to comments between these files to make it
even more obvious that they're 90% identical and really ought to be
using common code in arch/powerpc for a most of this...
 1.17 17-Nov-1999  kleink Move signal management code common to all PowerPC platforms (sendsig(),
sigreturn(), sigcode) to a single place in the shared powerpc directory.
(The struct sigcontext etc. definitions were already being shared.)
 1.16 13-Oct-1999  tsubai branches: 1.16.2;
Use battable to map obio space rather than using bat1 registers statically.
 1.15 30-Apr-1999  tsubai branches: 1.15.2;
Add more sanity check.
 1.14 29-Apr-1999  tsubai Now we can use symbols in DDB. :-)
 1.13 25-Mar-1999  mrg branches: 1.13.2; 1.13.4;
remove opt_uvm.h
 1.12 08-Feb-1999  tsubai Oops, last change is wrong...
 1.11 02-Feb-1999  tsubai Use private (its own) segment registers in Open Firmware call,
instead of BAT register.
 1.10 27-Jan-1999  tsubai ofmsr[IP] = 0.
 1.9 11-Jan-1999  tsubai Add irq32 - irq63 to intrnames.
 1.8 21-Sep-1998  tsubai Correct battable[] usage.
 1.7 13-Sep-1998  thorpej Make signal delivery work again.
 1.6 09-Sep-1998  thorpej Adjust for the new "reaper" kernel thread: do not free the vmspace and
u-area in machine-dependent code. Instead, call exit2() to schedule
the reaper to free them for us, once it is safe to do so (i.e. we are
no longer running on the dead proc's vmspace and stack).
 1.5 21-Jul-1998  tsubai Preserve OpenFirmware's msr and use it in openfirmware().
 1.4 04-Jul-1998  jonathan defopt DDB.
 1.3 21-Jun-1998  tsubai Stop using "options FIRMWORKSBUGS".
 1.2 05-Jun-1998  tsubai Add support for UVM and MACHINE_NEW_NONCONTIG.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.13.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.13.2.1 20-Jan-2000  he Pull up revision 1.19 (requested by danw):
Add (the beginnings of) an unaligned access handler for the
powerpc, to get around the fact that gcc currently generates bad
floating point copies sometimes, which breaks various things,
 1.15.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.16.2.7 27-Mar-2001  bouyer Sync with HEAD.
 1.16.2.6 12-Mar-2001  bouyer Sync with HEAD.
 1.16.2.5 15-Feb-2001  bouyer Re-sync with HEAD files which were out of sync.
 1.16.2.4 05-Jan-2001  bouyer Sync with HEAD
 1.16.2.3 08-Dec-2000  bouyer Sync with HEAD.
 1.16.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.16.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.23.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.24.2.1 22-Mar-2001  he Apply patch, revision 1.2 from powerpc/locore_subr.S (requested by tsubai):
Fix a bug in cpu_switch().
 1.36.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.36.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.41.8.6 01-Aug-2002  nathanw Catch up to -current.
 1.41.8.5 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.41.8.4 28-Feb-2002  nathanw Catch up to -current.
 1.41.8.3 11-Jan-2002  nathanw More catchup.
 1.41.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.41.8.1 23-Jun-2001  nathanw file locore.S was added on branch nathanw_sa on 2002-01-08 00:26:12 +0000
 1.41.2.3 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.41.2.2 16-Mar-2002  jdolecek Catch up with -current.
 1.41.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.44.6.2 31-Aug-2002  gehenna catch up with -current.
 1.44.6.1 16-Jul-2002  gehenna catch up with -current.
 1.50.2.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.50.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.50.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.50.2.1 03-Aug-2004  skrll Sync with HEAD
 1.53.2.4 11-Feb-2008  yamt sync with head.
 1.53.2.3 27-Oct-2007  yamt sync with head.
 1.53.2.2 03-Sep-2007  yamt sync with head.
 1.53.2.1 30-Dec-2006  yamt sync with head.
 1.54.8.2 03-Sep-2006  yamt sync with head.
 1.54.8.1 11-Aug-2006  yamt sync with head
 1.54.4.1 09-Sep-2006  rpaulo sync with head
 1.55.2.2 28-Aug-2006  riz Pull up following revision(s) (requested by sanjayl in ticket #72):
sys/arch/macppc/macppc/locore.S: revision 1.57
sys/arch/macppc/macppc/failsafe.c: revision 1.2
the following address a couple of issues with the G5 port.
(1) failsafe.c allows character input from the failsafe
console device. This is the early console device that is used for
output before
the pmap layer is initialized.
(1) locore.S: make sure that the size of the cacheline for
dcbz is set to the default of 128 bytes. It also sets up other mode
bits on
the 970. This fix allows the G5 to boot into full multi user mode
using a
NFS mounted root file system.
 1.55.2.1 28-Aug-2006  riz Pull up following revision(s) (requested by sanjayl in ticket #71):
sys/arch/macppc/macppc/locore.S: revision 1.56
G5/970 updates:
Setup cache bits in HID5 early on so that dcbz/icbi use the
128 byte cache line size. The mismatch was causing dynamically linked
apps to randomly coredump.
With this fix, the G5 can boot into full multi-user by using a NFS
mounted root file system.
 1.57.26.1 15-Aug-2007  skrll Sync with HEAD.
 1.57.24.1 07-Aug-2007  matt Sync with HEAD.
 1.57.20.4 11-Oct-2007  garbled Move a bunch of the macppc SMP code out of macppc, and down into the
generic OEA code. Add a set of md callbacks into these shared routines,
that any oeappc SMP machine needs to provide. This allows for generally
shared SMP startup code, but still allows for machine-specific
differences in the setup and kicking of the new CPU.

Convert macppc to this new layout. Tested by Macallan.

Add an initial attempt at SMP to prep. Tested on UP machine only,
untested on SMP yet.
 1.57.20.3 03-Oct-2007  garbled Sync with HEAD
 1.57.20.2 02-Aug-2007  macallan sync with HEAD
 1.57.20.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.57.12.2 23-Oct-2007  ad Sync with head.
 1.57.12.1 20-Aug-2007  ad Sync with HEAD.
 1.58.10.1 25-Oct-2007  bouyer Sync with HEAD.
 1.58.8.1 18-Oct-2007  yamt sync with head.
 1.58.6.2 23-Mar-2008  matt sync with HEAD
 1.58.6.1 06-Nov-2007  matt sync with HEAD
 1.58.4.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.59.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.60.28.1 07-Jan-2011  matt Deal with split <spr.h> (and a few other misc fixes).
 1.60.18.2 03-Mar-2009  skrll Sync with HEAD.
 1.60.18.1 19-Jan-2009  skrll Sync with HEAD.
 1.60.16.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.60.10.2 11-Mar-2010  yamt sync with head
 1.60.10.1 04-May-2009  yamt sync with head.
 1.60.6.1 17-Jan-2009  mjf Sync with HEAD.
 1.62.4.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.64.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.65.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.65.2.1 05-Mar-2011  rmind sync with head
 1.66.4.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.70.12.2 03-Dec-2017  jdolecek update from HEAD
 1.70.12.1 23-Jun-2013  tls resync from head
 1.70.2.1 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.71.10.1 03-Dec-2014  snj Pull up following revision(s) (requested by chs in ticket #291):
sys/arch/ofppc/ofppc/locore.S: revision 1.49
sys/arch/macppc/macppc/locore.S: revision 1.72
in the initial asm code, save the interesting caller-saved registers
(containing "arg" and "len") across function calls to C code.
fixes kernels built with gcc 4.8.
 1.72.20.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.72.20.1 10-Jun-2019  christos Sync with HEAD
 1.72.18.1 28-Jul-2018  pgoyette Sync with HEAD
 1.74.8.1 03-Apr-2021  thorpej Sync with HEAD.
 1.178 01-Jul-2025  macallan final (hopefully...) piece of PowerMac7,2 support - deal with multiple
/u3/i2c/i2c-hwclock instances, figure out which one controls CPU speed, and
call slew-high on it
 1.177 11-Jun-2024  rin branches: 1.177.2;
macppc/machdep: Correctly disable have_backlight for ofw_quiesce

instead of have_palette (copy-paste bug by myself).
 1.176 05-Mar-2024  thorpej Move the at-shutdown call to resettodr() from cpu_reboot() to kern_reboot().

It's a small step, but it's a step.
 1.175 26-Jun-2022  martin branches: 1.175.4;
cpu_reboot: use cpu_halt_others() instead of a (simple) open coded
version of it.
 1.174 10-Mar-2021  macallan switch G5 iMacs to full speed
 1.173 27-Feb-2021  thorpej Un-do a bunch of misguided code sharing. It's not really shared if it's
full of platform-specific #ifdefs:
- ofwoea_batinit() is gone; just do what's needed early in macppc / ofppc
initppc() functions.
- Get a bunch of Mac-specific stuff out of ofwoea_initppc().
 1.172 26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.171 14-Jul-2020  martin branches: 1.171.2;
Adapt to new proplib API
 1.170 07-Jul-2020  rin It turned out that using some Open Firmware routines causes the system
freeze after calling OF_quiesce().

This is why setting color palette crash the system for some Power Mac G5
models, like PowerMac11,2.

Therefore, stop using color-palette and backlight callbacks for genfb(4)
in this case.

Also, postpone OF_quiesce() after rascons_init_rasops(), and initialize
color palette there if OF is going to be quiesced and color depth is 8.

Now, color palette for wscons is initialized correctly for PowerMac11,2.
 1.169 28-Jan-2019  sevan Fake the EDID info for the clamshell iBook G3 so X11 works out of the box.
Obtained from the 2nd (firewire) revision iBook, but it's applied to 1st gen
also.

[ 93.906] (II) R128(0): I2C bus "VGA-0" initialized.
[ 93.907] (II) got 128 bytes worth of EDID from wsdisplay
[ 93.908] (II) R128(0): EDID for output LVDS
[ 93.908] (II) R128(0): Manufacturer: APP Model: 9c05 Serial#: 16843009
[ 93.908] (II) R128(0): Year: 1999 Week: 9
[ 93.908] (II) R128(0): EDID Version: 1.1
[ 93.908] (II) R128(0): Digital Display Input
[ 93.908] (II) R128(0): Max Image Size [cm]: horiz.: 24 vert.: 18
[ 93.908] (II) R128(0): Gamma: 2.28
[ 93.908] (II) R128(0): DPMS capabilities: StandBy Suspend Off
[ 93.909] (II) R128(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4
[ 93.909] (II) R128(0): redX: 0.594 redY: 0.345 greenX: 0.317 greenY: 0.494
[ 93.909] (II) R128(0): blueX: 0.155 blueY: 0.146 whiteX: 0.312 whiteY: 0.328
[ 93.909] (II) R128(0): Supported established timings:
[ 93.909] (II) R128(0): 800x600@60Hz
[ 93.909] (II) R128(0): Manufacturer's mask: 0
[ 93.910] (II) R128(0): Supported detailed timing:
[ 93.910] (II) R128(0): clock: 60.0 MHz Image Size: 275 x 199 mm
[ 93.910] (II) R128(0): h_active: 800 h_sync: 840 h_sync_end 968 h_blank_end 1056 h_border: 0
[ 93.910] (II) R128(0): v_active: 600 v_sync: 601 v_sync_end 605 v_blanking: 628 v_border: 0
[ 93.910] (II) R128(0): LT121SU-121
[ 93.910] (II) R128(0): LT121SU-121
[ 93.910] (II) R128(0): Monitor name: Color LCD
[ 93.910] (II) R128(0): EDID (in hex):
[ 93.910] (II) R128(0): 00ffffffffffff000610059c01010101
[ 93.910] (II) R128(0): 09090101a8181280e816e09858517e27
[ 93.910] (II) R128(0): 25505401000001010101010101010101
[ 93.911] (II) R128(0): 0101010101017017200031581c202880
[ 93.911] (II) R128(0): 140013c710000018000000fe004c5431
[ 93.911] (II) R128(0): 323153552d3132310a20000000fe004c
[ 93.911] (II) R128(0): 5431323153552d3132310a20000000fc
[ 93.911] (II) R128(0): 00436f6c6f72204c43440a2020200037
[ 93.912] (II) R128(0): I2C device "VGA-0:ddc2" registered at address 0xA0.
 1.168 15-Jul-2018  maxv Retire ipkdb entirely. The option was removed from the config files
yesterday.

ok kamil christos
 1.167 06-Sep-2017  macallan branches: 1.167.2; 1.167.4;
downgrade some debug spam to aprint_debug() where it belongs
 1.166 11-Aug-2017  macallan set properties to signal Mac Mini video output wiring to radeonfb
 1.165 14-Jul-2017  macallan branches: 1.165.2;
- use smu for shutdown and reboot
- disable pallet control on G5, for some reason we crash in OF_call_method_1
 1.164 11-Dec-2012  macallan branches: 1.164.14;
work around a bug in some (all?) nvidia OF ROMs:
the color! method always changes only the palette registers associated with the
first, usually analog head, even if the monitor in use is on port 2, usually
DVI or ADC.
Don't enable cmap_callback when we find out we're on port 2 of an nvidia card,
that way genfb won't try to use R3G3B2 colours and assume something resembling
an ANSI palette which will at least gives us something usable, as opposed to
black on mostly black.
 1.163 13-Mar-2012  macallan branches: 1.163.2;
we don't need malloc.h here
 1.162 28-Jul-2011  macallan branches: 1.162.2; 1.162.6;
appease gcc 4.5
 1.161 13-Jul-2011  macallan provide EDID blocks for hardware where we know the parameters but neither the
firmware nor DDC provide any. So far there's only a parameter block for the
PowerBook Pismo's built-in TFT, now Xorg works out of the box without config.
The same parameter block will probably do the right thing on Lombard, PDQ and
TFT-equipped Wallstreet PowerBooks.
 1.160 13-Jul-2011  macallan follow genfb changes in backlight control
 1.159 07-Jul-2011  mrg add some (uintptr_t) between pointer and uint64_t casts
 1.158 20-Jun-2011  matt Cleanup includes. (<net/netisr.h> is handled by softints, not MD anymore,
so this can be nuked).
 1.157 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.156 05-Jun-2011  matt Remove <machine/atomic.h>; use <sys/atomic.h> instead.
Add <powerpc/cpuset.h> (for mpc85xx pmap).
Add some initial MP code for mpc85xx
Rework ipi code to be common across all ppcs
Change PPC to keep curlwp in %r13 while in the kernel.
Move astpending from cpu_info to mdlwp
Improve cpu_need_resched to be more MP friendly.
 1.155 20-Dec-2010  matt branches: 1.155.2; 1.155.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.154 06-Oct-2010  macallan add support for backlight control with genfb via OF
Tested on a PowerBook Pismo only so far, it should work on all OF3 *Books
though. Support for older PowerBooks is trickier since they control their
backlight using PMU commands which have no OF equivalent.
 1.153 27-Nov-2009  rmind branches: 1.153.2; 1.153.4;
- Use uvm_lwp_setuarea() instead of directly setting address to lwp_t::l_addr.
- Replace most remaining uses of l_addr with uvm_lwp_getuarea() or lwp_getpcb().
- Amend assembly in ports where it accesses PCB via struct user.
- Rename L_ADDR to L_PCB in few places. Reduce sys/user.h inclusions.
 1.152 11-Nov-2008  dyoung It is not appropriate to call pmf_system_shutdown(9) from
doshutdownhooks(9): shutdown hooks registered by shutdownhook_establish(9)
expect to be called with interrupts disabled, but shutdown hooks
registered with pmf_device_register1(9) expect to be called with
interrupts enabled. So I have made two changes:

1 Do not call pmf_system_shutdown() from doshutdownhooks(). Instead,
change every call to doshutdownhooks() to a call to doshutdownhooks()
followed by a call to pmf_system_shutdown(). No functional change
is intended by this change.

2 Make i386 re-enable interrupts briefly while it calls
pmf_system_shutdown(). I leave it to others either to fix the
other ports, or to factor out some MI shutdown code, as joerg@
suggests, and fix that. Note that a functional change *is* intended
by this change.

I hope that this patch will stop us from flip-flopping between
calling doshutdownhooks() and pmf_system_shutdown() sometimes with
and sometimes without interrupts enabled.
 1.151 26-Sep-2008  macallan branches: 1.151.2;
get rid of heathrow_FCR
 1.150 26-Nov-2007  garbled branches: 1.150.14; 1.150.18; 1.150.20; 1.150.24;
Apply a set of patches from Frank Wille to make the genfb attachment work
better on ofppc. In doing so, we also move a few functions around in
macppc and the generic ofw powerpc stuff to allow better sharing of code.
Also, introduce a model_init function.

move ofb_cons.c from macppc/dev to powerpc/oea and rename it to rascons.
This gets rid of some naming confusion, and makes it OFW-MI rather than
macppc specific.
 1.149 17-Oct-2007  garbled branches: 1.149.2;
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.148 14-Jul-2007  ad branches: 1.148.8; 1.148.10; 1.148.12; 1.148.14;
Generic soft interrupts are mandatory.
 1.147 09-Feb-2007  ad branches: 1.147.6; 1.147.14;
Merge newlock2 to head.
 1.146 24-Jan-2007  hubertf 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.145 17-Jan-2007  macallan use pmu and cuda for reset, shutdown etc. when appropriate
also deal with adbkbd vs. akbd
 1.144 17-Jan-2007  macallan use properties to pass additional data to the console device,
like static EDID, framebuffer parameters etc.
 1.143 16-Dec-2006  macallan make this compile without wsdisplay
 1.142 29-Nov-2006  tsutsui branches: 1.142.2;
Get info of kernel symbol table from bootloader before calling consinit().
consinit() was moved before oea_init() in rev 1.136, but startsym and
endsym are not initialized at that point.
Now kernel symbols are usable (on ddb(4), ksyms(4) etc.) again on macppc.
 1.141 24-Oct-2006  mrg move a label such that it is only visible in the scopes it is used in.
 1.140 01-Oct-2006  macallan Let everyone use the same ticks_per_intr. Doh.
 1.139 29-Sep-2006  macallan add timecounter support, mostly from prep.
 1.138 01-Sep-2006  matt branches: 1.138.2; 1.138.4;
Move a variable to prevent a "unused" variable warning.
 1.137 05-Aug-2006  sanjayl 1st cut of Powermac G5 support (uses bridge mode).
 1.136 11-Dec-2005  christos branches: 1.136.4; 1.136.8;
merge ktrace-lwp.
 1.135 03-Jun-2005  matt branches: 1.135.2;
Cleanup new warnings...
 1.134 23-Jan-2005  chs turn interrupts on in cpu_reboot(), in case someone reboots from
a strange context via ddb.
 1.133 03-Jul-2004  manu branches: 1.133.4;
When the keyboard type is unknwon, don't attach both ADB and USB, as the
kernel will panic if an USB keyboard is plugged later.

Of course there will be a problem on a desktop machine with an USB attached
keyboard, but that cannot be fixed without access to such a machine..
 1.132 20-Jun-2004  manu We used to look in psuedo-hid (with a typo) device for the keyboard. On
newer machines (iBook G4), it is in pseudo-hid (without typo), and there
are no `adb-kbd-ihandle or `usb-kbd-ihandles methods. In that situation,
just try to attach anything we can.

This patch fixes spurious inputs on iBook G4.
 1.131 01-Apr-2004  matt Move to softintr__init to cpu_startup.
 1.130 24-Mar-2004  matt branches: 1.130.2;
Add latent generic soft interrupt support.
 1.129 20-Oct-2003  matt Reorganize the way powerpc port install machine specific headers.
Use <powerpc/oea/bat.h> exclusively and remove <machine/bat.h> and
<powerpc/bat.h>. Remove unneeded <machine/cpufunc.h>. To insure
1:1 correspondence of <powerpc/FOO.h> to <machine/FOO.h> include
"../../powerpc/include/Makefile" in "arch/FOO/include/Makefile".
Incororpate <byte_swap.h> into <bswap.h> and then byte_swap.h
 1.128 15-Jul-2003  lukem __KERNEL_RCSID()
 1.127 26-Apr-2003  ragge branches: 1.127.2;
Call ksyms_init() instead of ddb_init() in case of
NKSYMS || defined(DDB) || defined(LKM)
 1.126 02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.125 09-Mar-2003  he Remove remnants of support for console on ite, since the ite device
driver is no more.
 1.124 03-Feb-2003  matt Rename PPC_MPC6XX to PPC_OEA (and any mpc6xx reference to oea).
 1.123 22-Jan-2003  kleink G/c the pmap_bootstrap() segtab interface again. Silly me.
 1.122 17-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.121 25-Sep-2002  thorpej Don't include <sys/map.h>.
 1.120 22-Sep-2002  dbj move bootpath alias expansion from initppc() into canonicalize_bootpath()
 1.119 13-Aug-2002  manu Guard a variable declaration by #if so that it is not declared if it is not
used.
 1.118 06-Aug-2002  chs avoid races in mp_save_{fpu,vec}_proc() where the other CPU
dumps the state out from under us.
 1.117 28-Jul-2002  chs restructure the FPU and AltiVEC code so that it works for MP.
 1.116 09-Jul-2002  matt Common OFW code has been moved to powerpc/mpc6xx/ofw_subr.S. Now use it.
 1.115 05-Jul-2002  matt Peform a rototill over the powerpc-based ports.

Move the trap/vector initialization for MPC6xx ports to mpc6xx_machdep.c
Also move softnet, install_extintr, mapiodev, kvtop. Add common BAT
initialization code.

Add user Altivec support.

Fix calls to OF_call_method in macppc/macppc/machdep.c.

Use ci_fpuproc in cpu_info instead of separate fpuproc.

Add separate syscall.c and defined __HAVE_SYSCALL_INTERN.
 1.114 19-Jun-2002  wrstuden Fix recent bugs seen on Performa 4400 macppc's by
Makoto Fujiwara <makoto@ki.nu> and Manuel Bouyer <bouyer@netbsd.org>.
Help from Allen Briggs, Jason Thorpe, and Matt Thomas.

We need to call cpu_cache_probe() early in boot (machdep.c).
Add 603 info for completeness, and use NBPG not PAGESIZE, as the
latter relies on uvm being setup (cpu_subr.c).
Let uvm_page_recolor() be called before uvm has been set up; just
note the page coloring value (uvm_page.c).
 1.113 13-May-2002  matt branches: 1.113.2; 1.113.4;
Eliminate commons.
 1.112 25-Apr-2002  matt Use BAT1 to map the primary I/O segment at 0x80000000 so we don't have to
bat-flip for those accesses.
 1.111 23-Apr-2002  kleink Add a third argument to pmap_bootstrap() which platform-specific
initialization can use to specify additional segment registers to be set
up in the kernel pmap.
 1.110 02-Mar-2002  matt Make sure I/O bats are set to BAT_I|BAT_G (guarded, cache-inhibited) as to
not allow speculative loads to occur within them. This is the cause of the
random MCHKs on 7450 based Mac's.
 1.109 16-Feb-2002  mycroft Make this build without akbd (again).
 1.108 06-Jan-2002  dbj add support for kgdb over zs
 1.107 10-Dec-2001  augustss When looking for a console keyboard if usb-kbd-ihandles can't be found
then try the old name usb-kbd-ihandle. This way my old iMac gets the
USB keyboard as console instead on the (non-existent) ADB keyboard.
Suggested by Gabriel Rosenkoetter.
 1.106 05-Dec-2001  chs fix macppc MULTIPROCESSOR compilation.
 1.105 19-Nov-2001  matt Fix boot device selection when booting from an alias. If the bootpath
isn't an OFW device, look it up in /aliases and substitute the bootpath
found into the string. This allow device_register to do it's thing.
Key off the drive number, not the channel, in autoconf.c. Closes PR#13756.
 1.104 10-Sep-2001  chris branches: 1.104.4;
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.103 26-Aug-2001  matt branches: 1.103.2;
Make all powerpc ports use a common Makefile.powerpc (except walnut)
Enforce -Wmissing-prototypes -Wstrict-prototypes for all ppc ports.
Split out macppc cpu support and make common to mpc6xx ports. Make
other mpc6xx ports use it. Add evcnts for mpc6xx traps.
 1.102 22-Jul-2001  wiz bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.101 12-Jun-2001  tsubai branches: 1.101.2;
One more.
 1.100 12-Jun-2001  tsubai Make this compile w/o akbd or ukbd.
 1.99 10-Jun-2001  tsubai Use machine/bat.h rather than powerpc/mpc6xx/bat.h.
 1.98 08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.97 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.96 02-Jun-2001  chs replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
 1.95 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.94 08-Apr-2001  tsubai Make this compile w/o ukbd.
 1.93 05-Apr-2001  tsubai Assume USB keyboard when `usb-kbd-ihandles is not found.
 1.92 22-Mar-2001  tsubai Merge my MP tree. At this point, Daystar dual 604 card (i.e. Power Macintosh
9500/180MP and 9600/200MP) runs at least into single-user mode, possibly
multi-user mode (not stable yet).
 1.91 15-Mar-2001  chs eliminate the KERN_* error codes in favor of the traditional E* codes.
the mapping is:

KERN_SUCCESS 0
KERN_INVALID_ADDRESS EFAULT
KERN_PROTECTION_FAILURE EACCES
KERN_NO_SPACE ENOMEM
KERN_INVALID_ARGUMENT EINVAL
KERN_FAILURE various, mostly turn into KASSERTs
KERN_RESOURCE_SHORTAGE ENOMEM
KERN_NOT_RECEIVER <unused>
KERN_NO_ACCESS <unused>
KERN_PAGES_LOCKED <unused>
 1.90 24-Feb-2001  matt branches: 1.90.2;
Move cpu_sysct and dump{mag,lo,siz} & cpu_dumpconf to powerpc_machdep.c.
dumpsys is still port-specific for now. XXX dumpsys is still a stub
on all powerpc ports.
 1.89 24-Feb-2001  matt Remove setregs since it now lives in powerpc/powerpc/powerpc_machdep.c
 1.88 17-Dec-2000  tsubai Clean up unused variables.
 1.87 06-Nov-2000  tsubai Enter ddb after ddb_init() if -d is specified.
 1.86 06-Nov-2000  tsubai Rearrange console selection code.
Now usb keyboard is preferred to adb.
 1.85 24-Sep-2000  tsubai Fix a bug introduced in BOOT_FLAG change.
 1.84 24-Sep-2000  jdolecek add new macro BOOT_FLAG() (defined in <sys/boot_flag.h>) - this
maps standard boot flags to corresponding RB_* values
use BOOT_FLAG() in port's MD code as appropriate

as discussed on tech-kern, add new boot flags -v, -q for booting
verbosely or quietly, and corresponding AB_VERBOSE/AB_QUIET
boot flags; also add FreeBSD-compatible bootverbose macro and
NetBSD-specific bootquiet macro

for hpcmips, use new bootverbose instead of it's own hpcmips_verbose

Tested on i386, and to limited extend (compile of affected files) also for
mvme68k, hp300, luna68k, sun3.
 1.83 13-Sep-2000  thorpej Add an align argument to uvm_map() and some callers of that
routine. Works similarly fto pmap_prefer(), but allows callers
to specify a minimum power-of-two alignment of the region.
How we ever got along without this for so long is beyond me.
 1.82 25-Jul-2000  tsubai Enable console in initppc().
 1.81 25-Jul-2000  tsubai Allocate temporary buffer to copy OF page table dynamically
rather than static variable.
 1.80 06-Jul-2000  tsubai include "opt_multiprocessor.h".
 1.79 06-Jul-2000  tsubai Make it compile with "options MULTIPROCESSOR".
 1.78 05-Jul-2000  tsubai First attempt to spin up the secondary processor on 180MP and 200MP.
XXX Need more work.
 1.77 02-Jul-2000  cgd Kwality control:
* put #includes of opt headers and headers to get protos used by
net/netisr_dispatch.h in net/netisr.h (if !defined(_LOCORE)) (rather than
in netisr_dispatch.h itself, and potentially nowhere, respectively).
* require netisr.h to be included before netisr_dispatch.h.
* minor additional cleanup of both netisr.h and netisr_dispatch.h.
* clean up uses to remove now-unnecessary header file inclusions, and
local prototypes of the fns.
* convert netisr dispatch implementations which didn't use
netisr_dispatch.h (pc532) to use it.
 1.76 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.75 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.74 09-Jun-2000  tsubai branches: 1.74.2;
Add all RAM regions to battable.
This should support > 512MB memory. (untested, though)
 1.73 26-May-2000  thorpej branches: 1.73.2;
First sweep at scheduler state cleanup. Collect MI scheduler
state into global and per-CPU scheduler state:

- Global state: sched_qs (run queues), sched_whichqs (bitmap
of non-empty run queues), sched_slpque (sleep queues).
NOTE: These may collectively move into a struct schedstate
at some point in the future.

- Per-CPU state, struct schedstate_percpu: spc_runtime
(time process on this CPU started running), spc_flags
(replaces struct proc's p_schedflags), and
spc_curpriority (usrpri of processes on this CPU).

- Every platform must now supply a struct cpu_info and
a curcpu() macro. Simplify existing cpu_info declarations
where appropriate.

- All references to per-CPU scheduler state now made through
curcpu(). NOTE: this will likely be adjusted in the future
after further changes to struct proc are made.

Tested on i386 and Alpha. Changes are mostly mechanical, but apologies
in advance if it doesn't compile on a particular platform.
 1.72 26-Mar-2000  kleink Merge parts of chs-ubc2 into the trunk:
* Remove the casts to vaddr_t from the round_page() and trunc_page() macros to
make them type-generic, which is necessary i.e. to operate on file offsets
without truncating them.
* In due course, cast pointer arguments to these macros to an appropriate
integral type (paddr_t, vaddr_t).

Originally done by Chuck Silvers, updated by myself.
 1.71 24-Mar-2000  ws Update several ports to at least work again without IPKDB
after the update of that.
Sorry for breaking this with my last changes :-(.
Fixes PR#9671 by Lennart Augustsson.
 1.70 09-Mar-2000  thorpej Correct the number of arguments to wsdisplay_set_cons_kbd(), for the
changes I made for cnbell().
 1.69 21-Feb-2000  erh Define the DONETISR macro and use netisr_dispatch.h. This is to cut down on code duplication and to standardize the available NETISRs across all ports.
 1.68 09-Feb-2000  shin fix include file.

<netinet6/ip6.h> -> <netinet/ip6.h>
 1.67 08-Feb-2000  tsubai Flush cache before rebooting to preserve msgbuf.
 1.66 21-Jan-2000  tsubai Recognize MPC7400.
 1.65 19-Jan-2000  thorpej Move callout initialization to a single location; no need to duplicate
that code all over the place.
 1.64 19-Jan-2000  danw Add a special trap handler for EXC_ALI that saves dsisr and dar
 1.63 18-Dec-1999  thorpej Update for BATU()/BATL() changes.
 1.62 04-Dec-1999  ragge CL* discarding.
 1.61 22-Nov-1999  tsubai Remove D-I cache synchronization code in setregs(). MI part has it now.
 1.60 17-Nov-1999  kleink Move signal management code common to all PowerPC platforms (sendsig(),
sigreturn(), sigcode) to a single place in the shared powerpc directory.
(The struct sigcontext etc. definitions were already being shared.)
 1.59 13-Nov-1999  thorpej Update for pmap_enter() API change. No functional difference.
 1.58 10-Nov-1999  mycroft branches: 1.58.2;
Deal with /psuedo-hid in the following atrocious way:
* If only one of ukbd or akbd is configured, use the node for that device.
* If both are configured, use ukbd.
Ultimately, the right way to deal with this is probably so simulate the effect
of /psuedo-hid using wsmux. But not today.
 1.57 15-Oct-1999  tsubai branches: 1.57.2; 1.57.4;
Support com* at pcmcia.
 1.56 13-Oct-1999  tsubai Use battable to map obio space rather than using bat1 registers statically.
 1.55 13-Oct-1999  tsubai Change char *bootpath to char bootpath[].
 1.54 21-Sep-1999  tsubai branches: 1.54.2;
lcsplx() should return old cpl...
 1.53 17-Sep-1999  thorpej Centralize the declaration and clearing of `cold'.
 1.52 15-Aug-1999  tsubai My last change was wrong. Revert.
 1.51 20-Jul-1999  tsubai grackle uses different I/O address.
 1.50 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.49 28-Jun-1999  itojun - Call ip6intr if INET6 is defined.
- remove "need-flag" for mac68k esp driver, as it is not used in anywhere
and conflicts with IPsec ESP header.

This should be the only MD change in IPv6 support, except kernel config file.
Very sorry if you have any compilation problem with it (I believe it is okay).
If your favorite arch is not included in here, please add a
call to ip6intr() from softintr handle.
 1.48 14-Jun-1999  tsubai Consider "have /psuedo-hid and only ADB keyboard" case to make the
new PowerBook G3 happy.
 1.47 26-May-1999  thorpej Change the vm_map's "entries_pageable" member to a r/o flags member, which
has PAGEABLE and INTRSAFE flags. PAGEABLE now really means "pageable",
not "allocate vm_map_entry's from non-static pool", so update all map
creations to reflect that. INTRSAFE maps are maps that are used in
interrupt context (e.g. kmem_map, mb_map), and thus use the static
map entry pool (XXX as does kernel_map, for now). This will eventually
change now these maps are locked, as well.
 1.46 20-May-1999  lukem * convert to using MI allocsys(). most ports were using an MD allocsys(),
although a couple still used the old pre-4.4-lite (?) mechanism.
* use format_bytes() to format the various printf()s that print out memory sizes
 1.45 13-May-1999  thorpej Rewrite the USB keyboard console attachment (again). Grumble, Macintosh
firmware sets the "stdin" property of /chosen to be a pseudo-hid (yes, they
even spell it incorrectly) that merges all keyboard input into one stream,
so we can't find the USB controller we're attached to. Instead, just give
it to the first USB keyboard found during autoconfiguration. So that we
have SOMETHING available early on, use OpenFirmware i/o to do keyboard
input to the console wsdisplay until the USB code attaches the keyboard.

From Jason Thorpe <thorpej@nas.nasa.gov>
 1.44 07-May-1999  wrstuden For whatever reason, we just can't call pci_init() that early on Bandit
systems. Why? Who knows. Firmware bugs, maybe. In any case, moving
the call out of the ADB path works. "Good enough for me."
 1.43 06-May-1999  thorpej Completely rewrite how cninit() determines which keyboard to use with
the console. New algorithm:

* if stdin == keyboard, and parent of keyboard == adb, use ADB.
* else, must be a USB keyboard. Search backwards though the parents
until the USB controller is located. Determine its location in the PCI
domain, and which type of controller it is, and tell that controller that
it has the console input device. The USB code will then attach the first
USB keyboard as the console input device during autoconfiguration.

The iMac and Blue and White G3 consoles are fully functional now!
 1.42 29-Apr-1999  tsubai Now we can use symbols in DDB. :-)
 1.41 17-Apr-1999  ws Modify syncicache on PowerPC from an inline to a real function.
Support different cache line sizes with the same object code in userland.
While here, move the function to implementation name space.
 1.40 16-Apr-1999  thorpej Now that we have direct-mapped pool pages, we can garbage-collect VM_MBUF_SIZE
and don't need to allocate mb_map.
 1.39 11-Apr-1999  chs add a `flags' argument to uvm_pagealloc_strat().
define a flag UVM_PGA_USERESERVE to allow non-kernel object
allocations to use pages from the reserve.
use the new flag for allocations in pmap modules.
 1.38 01-Apr-1999  thorpej branches: 1.38.2;
Don't call configure() from cpu_startup().
 1.37 26-Mar-1999  mycroft 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.36 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.35 01-Mar-1999  scottr Implement the BUFCACHE kernel config option.
 1.34 27-Feb-1999  scottr defopt BUFCACHE and BUFPAGES.
 1.33 26-Feb-1999  tsubai Initialize BAT registers in the first place.
 1.32 19-Feb-1999  tsubai Ensure msgbuf_paddr is accessible (by bat).
 1.31 02-Feb-1999  tsubai Use private (its own) segment registers in Open Firmware call,
instead of BAT register.
 1.30 27-Jan-1999  tsubai ofmsr[IP] = 0.
 1.29 24-Jan-1999  tsubai syncicache(sigcode, sigcodesize) before exec.
 1.28 12-Jan-1999  tsubai Add ``#include "akbd.h"''.
 1.27 12-Jan-1999  tsubai Move MSGBUFSIZE from machdep.c to param.h
Use the last page for msgbuf instead of fixed MSGBUFADDR.
 1.26 09-Jan-1999  thorpej Garbage-collect `mbutl'.
 1.25 29-Dec-1998  tsubai iMac support (not complete yet).
 1.24 21-Dec-1998  tsubai Wait one second before powerdown.
 1.23 04-Dec-1998  thorpej Pass the symbol table size, like a.out.
 1.22 19-Oct-1998  tron Defopt SYSVMSG, SYSVSEM and SYSVSHM.
 1.21 14-Oct-1998  tsubai Add wsdisplay/wskbd.
 1.20 07-Oct-1998  tsubai Enable interrupt AFTER autoconfiguration.
 1.19 21-Sep-1998  tsubai Correct battable[] usage.
 1.18 13-Sep-1998  mycroft Fix omission in previous; remember to record that we're on the signal stack.
 1.17 13-Sep-1998  thorpej Make signal delivery work again.
 1.16 21-Aug-1998  tsubai vm_offset_t --> [pv]addr_t.
 1.15 13-Jul-1998  tsubai Add support for G3 Mac.
 1.14 05-Jul-1998  jonathan defopt NATM.
 1.13 05-Jul-1998  jonathan defopt NS, NSIP.
 1.12 05-Jul-1998  jonathan defopt ISO TPIP.
 1.11 05-Jul-1998  jonathan defopt CCITT.
 1.10 05-Jul-1998  jonathan defopt INET, NETATALK.
 1.9 04-Jul-1998  jonathan defopt DDB.
 1.8 02-Jul-1998  tsubai Display/Keyboard console support (by calling Openfirmware)
 1.7 02-Jul-1998  tsubai Use BAT to map Openfirmware work area.
 1.6 26-Jun-1998  tsubai Powerdown support.
 1.5 21-Jun-1998  tsubai Stop using "options FIRMWORKSBUGS".
 1.4 12-Jun-1998  tsubai Initialize "minaddr" to 0 in cpu_startup() when UVM is defined.
 1.3 05-Jun-1998  tsubai Add support for UVM and MACHINE_NEW_NONCONTIG.
 1.2 30-May-1998  tsubai Make configurable without adb.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.38.2.6 20-Jan-2000  he Pull up revision 1.64 (requested by danw):
Add (the beginnings of) an unaligned access handler for the
powerpc, to get around the fact that gcc currently generates bad
floating point copies sometimes, which breaks various things,
 1.38.2.5 15-Jan-2000  he Apply patch (requested by tsubai):
Apply last part of fix for "panic: startup: cannot allocate VM
for buffers" when RAM is > approx. 128MB.
 1.38.2.4 24-Jun-1999  perry pullup 1.44->1.45 (tsubai)
 1.38.2.3 07-May-1999  perry pullup 1.43->1.44 (thorpej)
 1.38.2.2 06-May-1999  perry branches: 1.38.2.2.2; 1.38.2.2.4;
pullup 1.42->1.43 (thorpej)
 1.38.2.1 16-Apr-1999  chs pull up 1.38 -> 1.39:
add a `flags' argument to uvm_pagealloc_strat().
define a flag UVM_PGA_USERESERVE to allow non-kernel object
allocations to use pages from the reserve.
use the new flag for allocations in pmap modules.
 1.38.2.2.4.2 30-Nov-1999  itojun bring in latest KAME (as of 19991130, KAME/NetBSD141) into kame branch
just for reference purposes.
This commit includes 1.4 -> 1.4.1 sync for kame branch.

The branch does not compile at all (due to the lack of ALTQ and some other
source code). Please do not try to modify the branch, this is just for
referenre purposes.

synchronization to latest KAME will take place on HEAD branch soon.
 1.38.2.2.4.1 06-Jul-1999  itojun KAME/NetBSD 1.4, SNAP kit 1999/07/05.
NOTE: this branch is just for reference purposes (i.e. for taking cvs diff).
do not touch anything on the branch. actual work must be done on HEAD branch.
 1.38.2.2.2.3 02-Aug-1999  thorpej Update from trunk.
 1.38.2.2.2.2 01-Jul-1999  thorpej Sync w/ -current.
 1.38.2.2.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.54.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.57.4.1 15-Nov-1999  fvdl Sync with -current
 1.57.2.6 21-Apr-2001  bouyer Sync with HEAD
 1.57.2.5 27-Mar-2001  bouyer Sync with HEAD.
 1.57.2.4 12-Mar-2001  bouyer Sync with HEAD.
 1.57.2.3 05-Jan-2001  bouyer Sync with HEAD
 1.57.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.57.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.58.2.2 10-Nov-1999  mycroft Deal with /psuedo-hid in the following atrocious way:
* If only one of ukbd or akbd is configured, use the node for that device.
* If both are configured, use ukbd.
Ultimately, the right way to deal with this is probably so simulate the effect
of /psuedo-hid using wsmux. But not today.
 1.58.2.1 10-Nov-1999  mycroft file machdep.c was added on branch comdex-fall-1999 on 1999-11-10 05:23:19 +0000
 1.73.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.74.2.2 07-Mar-2002  he Pull up revision 1.110 (via patch, requested by billc):
Make sure I/O BATs are set to be guarded and cache-inhibited, so
as to disallow speculative loads within them. This dould otherwise
cause random Machine Checks on 7450 (G4) based machines.
 1.74.2.1 01-Nov-2000  tv Pullup 1.82 [tsubai, mycroft]:
Enable console in initppc().
 1.90.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.90.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.101.2.7 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.101.2.6 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.101.2.5 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.101.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.101.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.101.2.2 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.101.2.1 03-Aug-2001  lukem update to -current
 1.103.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.104.4.13 18-Oct-2002  nathanw LWPify a little. Patches from Bill Studenmund.
macppc GENERIC.MP builds now.
 1.104.4.12 18-Oct-2002  nathanw Catch up to -current.
 1.104.4.11 27-Aug-2002  nathanw Catch up to -current.
 1.104.4.10 06-Aug-2002  nathanw Catch up with powerpc rototilling.
 1.104.4.9 01-Aug-2002  nathanw Catch up to -current.
 1.104.4.8 20-Jun-2002  nathanw Catch up to -current.
 1.104.4.7 29-May-2002  nathanw #include <sys/sa.h> before <sys/syscallargs.h>, to provide sa_upcall_t
now that <sys/param.h> doesn't include <sys/sa.h>.

(Behold the Power of Ed)
 1.104.4.6 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.104.4.5 28-Feb-2002  nathanw Catch up to -current.
 1.104.4.4 11-Jan-2002  nathanw More catchup.
 1.104.4.3 08-Jan-2002  nathanw Catch up to -current.
 1.104.4.2 05-Nov-2001  briggs Initial SA support for ppc. Test-booted on sandpoint, macppc, & walnut.
mcontext and cpu_getmcontext()/cpu_setmcontext() from Klaus Klein
<kleink@netbsd.org>.
 1.104.4.1 10-Sep-2001  briggs file machdep.c was added on branch nathanw_sa on 2001-11-05 19:46:14 +0000
 1.113.4.2 06-Jul-2002  lukem Apply patch (supplied by aymeric in ticket #438):
Make new iBooks, TiBooks and eMacs boot correctly; OF_call_method()
can return negative values different from -1 to indicate failure.
(The change is also part of rev 1.115, which contains more changes than
we're willing to pull up for 1.6)
 1.113.4.1 20-Jun-2002  lukem Pull up revision 1.114 (requested by wrstuden in ticket #322):
Fix recent bugs seen on Performa 4400 macppc's by
Makoto Fujiwara <makoto@ki.nu> and Manuel Bouyer <bouyer@netbsd.org>.
Help from Allen Briggs, Jason Thorpe, and Matt Thomas.
We need to call cpu_cache_probe() early in boot (machdep.c).
Add 603 info for completeness, and use NBPG not PAGESIZE, as the
latter relies on uvm being setup (cpu_subr.c).
Let uvm_page_recolor() be called before uvm has been set up; just
note the page coloring value (uvm_page.c).
 1.113.2.2 31-Aug-2002  gehenna catch up with -current.
 1.113.2.1 16-Jul-2002  gehenna catch up with -current.
 1.127.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.127.2.4 24-Jan-2005  skrll Sync with HEAD.
 1.127.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.127.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.127.2.1 03-Aug-2004  skrll Sync with HEAD
 1.130.2.3 04-Jul-2004  he Pull up revision 1.133 (requested by manu in ticket #587):
When the keyboard type is unknown, don't attach both ADB
and USB, but instead assume ADB. This because the kernel
will panic if an USB keyboard is plugged in later. May
cause a problem on a desktop machine with an USB attached
keyboard.
 1.130.2.2 22-Jun-2004  tron Pull up revision 1.132 (requested by manu in ticket #534):
We used to look in psuedo-hid (with a typo) device for the keyboard. On
newer machines (iBook G4), it is in pseudo-hid (without typo), and there
are no `adb-kbd-ihandle or `usb-kbd-ihandles methods. In that situation,
just try to attach anything we can.
This patch fixes spurious inputs on iBook G4.
 1.130.2.1 01-Apr-2004  jmc Pullup rev 1.131 (requested by matt in ticket #44)

Move to softintr__init to cpu_startup and remove softintr__init call for oea.
 1.133.4.1 29-Apr-2005  kent sync with -current
 1.135.2.5 07-Dec-2007  yamt sync with head
 1.135.2.4 27-Oct-2007  yamt sync with head.
 1.135.2.3 03-Sep-2007  yamt sync with head.
 1.135.2.2 26-Feb-2007  yamt sync with head.
 1.135.2.1 30-Dec-2006  yamt sync with head.
 1.136.8.2 03-Sep-2006  yamt sync with head.
 1.136.8.1 11-Aug-2006  yamt sync with head
 1.136.4.1 09-Sep-2006  rpaulo sync with head
 1.138.4.3 18-Dec-2006  yamt sync with head.
 1.138.4.2 10-Dec-2006  yamt sync with head.
 1.138.4.1 22-Oct-2006  yamt sync with head
 1.138.2.4 01-Feb-2007  ad Sync with head.
 1.138.2.3 30-Jan-2007  ad Remove support for SA. Ok core@.
 1.138.2.2 12-Jan-2007  ad Sync with head.
 1.138.2.1 18-Nov-2006  ad Sync with head.
 1.142.2.2 04-Mar-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #474):
sys/arch/macppc/macppc/autoconf.c: revision 1.50
sys/arch/macppc/macppc/machdep.c: revision 1.144
use properties to pass additional data to the console device,
like static EDID, framebuffer parameters etc.
 1.142.2.1 12-Jan-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #353):
sys/arch/macppc/dev/ofb_cons.c: revision 1.3
sys/arch/macppc/macppc/machdep.c: revision 1.143
make this compile without wsdisplay
 1.147.14.11 11-Oct-2007  garbled Move a bunch of the macppc SMP code out of macppc, and down into the
generic OEA code. Add a set of md callbacks into these shared routines,
that any oeappc SMP machine needs to provide. This allows for generally
shared SMP startup code, but still allows for machine-specific
differences in the setup and kicking of the new CPU.

Convert macppc to this new layout. Tested by Macallan.

Add an initial attempt at SMP to prep. Tested on UP machine only,
untested on SMP yet.
 1.147.14.10 11-Oct-2007  macallan ipiops.ppc_send_ipi -> ppc_send_ipi
 1.147.14.9 10-Oct-2007  garbled New ppcoea-MI IPI infrastructure. This is similar to the PIC
infrastructure, but simplified greatly.

Also, convert macppc (the only port currently using IPI's) over to this new
infrastructure. Still some minor work left to do here.
 1.147.14.8 03-Oct-2007  garbled Sync with HEAD
 1.147.14.7 02-Aug-2007  macallan sync with HEAD
 1.147.14.6 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.147.14.5 10-May-2007  garbled HAVE_GENERIC_SOFTINTRS is no longer optional. Delete ifndef'd code from
oea_machdep.c, and move softintr__init() to oea_startup(). Remove
softintr__init from every port's cpu_startup().
 1.147.14.4 10-May-2007  garbled More cleanup:
1) Remove lcsplx, strayintr, and foosoft from all the converted ports.
None of this stuff is needed anymore.
2) because lcsplx is just "return spllower", just call spllower from
locore_subr.S instead.
3) Every port (except macppc) had a pretty similar cpu_configure(), so
take the common parts out and make a genppc_cpu_configure() in an attempt
to stop using imask[] outside of intr.c
 1.147.14.3 09-May-2007  macallan nuke #if(n)def __HAVE_GENERIC_SOFT_INTERRUPTS - we have them and they're not going
to disappear
 1.147.14.2 06-May-2007  macallan ansify, sprinkle static
 1.147.14.1 02-May-2007  macallan use generic interrupt handling, so far only ohare-based machines are supported
 1.147.6.4 03-Dec-2007  ad Sync with HEAD.
 1.147.6.3 03-Dec-2007  ad Sync with HEAD.
 1.147.6.2 23-Oct-2007  ad Sync with head.
 1.147.6.1 15-Jul-2007  ad Sync with head.
 1.148.14.1 25-Oct-2007  bouyer Sync with HEAD.
 1.148.12.1 18-Oct-2007  yamt sync with head.
 1.148.10.2 09-Jan-2008  matt sync with HEAD
 1.148.10.1 06-Nov-2007  matt sync with HEAD
 1.148.8.2 27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.148.8.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.149.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.150.24.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.150.24.1 19-Oct-2008  haad Sync with HEAD.
 1.150.20.3 10-Oct-2008  skrll Sync with HEAD.
 1.150.20.2 14-May-2008  wrstuden Per discussion with ad, remove most of the #include <sys/sa.h> lines
as they were including sa.h just for the type(s) needed for syscallargs.h.

Instead, create a new file, sys/satypes.h, which contains just the
types needed for syscallargs.h. Yes, there's only one now, but that
may change and it's probably more likely to change if it'd be difficult
to handle. :-)

Per discussion with matt at n dot o, add an include of satypes.h to
sigtypes.h. Upcall handlers are kinda signal handlers, and signalling
is the header file that's already included for syscallargs.h that
closest matches SA.

This shaves about 3000 lines off of the diff of the branch relative
to the base. That also represents about 18% of the total before this
checkin.

I think this reduction is very good thing.
 1.150.20.1 10-May-2008  wrstuden Initial checkin of re-adding SA. Everything except kern_sa.c
compiles in GENERIC for i386. This is still a work-in-progress, but
this checkin covers most of the mechanical work (changing signalling
to be able to accomidate SA's process-wide signalling and re-adding
includes of sys/sa.h and savar.h). Subsequent changes will be much
more interesting.

Also, kern_sa.c has received partial cleanup. There's still more
to do, though.
 1.150.18.3 09-Oct-2010  yamt sync with head
 1.150.18.2 11-Mar-2010  yamt sync with head
 1.150.18.1 04-May-2009  yamt sync with head.
 1.150.14.2 17-Jan-2009  mjf Sync with HEAD.
 1.150.14.1 28-Sep-2008  mjf Sync with HEAD.
 1.151.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.153.4.2 12-Jun-2011  rmind sync with head
 1.153.4.1 05-Mar-2011  rmind sync with head
 1.153.2.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.155.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.155.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.162.6.1 05-Apr-2012  mrg sync to latest -current.
 1.162.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.162.2.1 17-Apr-2012  yamt sync with head
 1.163.2.2 03-Dec-2017  jdolecek update from HEAD
 1.163.2.1 25-Feb-2013  tls resync with head
 1.164.14.1 28-Aug-2017  skrll Sync with HEAD
 1.165.2.2 14-Jul-2017  macallan 2551550
 1.165.2.1 14-Jul-2017  macallan file machdep.c was added on branch perseant-stdc-iso10646 on 2017-07-14 21:36:20 +0000
 1.167.4.1 10-Jun-2019  christos Sync with HEAD
 1.167.2.1 28-Jul-2018  pgoyette Sync with HEAD
 1.171.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.175.4.1 12-Sep-2024  martin Pull up following revision(s) (requested by rin in ticket #847):

sys/arch/macppc/macppc/machdep.c: revision 1.177

macppc/machdep: Correctly disable have_backlight for ofw_quiesce
instead of have_palette (copy-paste bug by myself).
 1.177.2.1 02-Aug-2025  perseant Sync with HEAD
 1.27 03-Oct-2025  thorpej Print the system model name when we attach mainbus.
 1.26 09-May-2023  macallan check for proper error value from OF_finddevice()
should fix PR57394
 1.25 22-Jan-2022  thorpej branches: 1.25.4;
Change the devhandle_from_*() functions to also take a "super handle",
from which the newly created handle will inherit it's implementation.
The root implementation for a new handle type is used if an invalid
"super handle" is passed.
 1.24 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.23 24-Apr-2021  thorpej branches: 1.23.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.22 24-Oct-2019  macallan branches: 1.22.10;
if we have a /cpus node, use it to find and attach all CPUs.
Now we find all CPUs on a 4x G5.
 1.21 05-Jun-2011  matt branches: 1.21.54;
struct device * -> device_t, struct cfdata * -> cfdata_t
CFATTACH_DECL(*, sizeof(struct device), -> CFATTACH_DECL_NEW(&, 0
 1.20 14-Mar-2009  dsl branches: 1.20.4; 1.20.6; 1.20.10;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.19 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.18 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.17 17-Oct-2007  garbled branches: 1.17.20; 1.17.28; 1.17.34;
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.16 05-Aug-2006  sanjayl branches: 1.16.14; 1.16.22; 1.16.32; 1.16.34; 1.16.36; 1.16.38;
1st cut of Powermac G5 support (uses bridge mode).
 1.15 11-Dec-2005  christos branches: 1.15.4; 1.15.8;
merge ktrace-lwp.
 1.14 30-Aug-2004  drochner branches: 1.14.12;
Phase out the use of a string as first "attach args" member to control
which bustype should be attached with a specific call to config_found()
(from a "mainbus" or a bus bridge).
Do it for isa/eisa/mca and pci/agp for now. These buses all attach to
an mi interface attribute "isabus", "eisabus" etc., and the autoconf
framework now allows to specify an interface attribute on config_found()
and config_search(), which limits the search of matching config data
to these which attach to that specific attribute.
So we basically have to call config_found_ia(..., "foobus", ...) where
such a bus is attached.
As a consequence, where a "mainbus" or alike also attaches other
devices (eg CPUs) which do not attach to a specific attribute yet,
we need at least pass an attribute name (different from "foobus") so
that the foo bus is not found at these places. This made some minor
changes necessary which are not obviously related to the mentioned buses.
 1.13 15-Jul-2003  lukem __KERNEL_RCSID()
 1.12 01-Jan-2003  thorpej branches: 1.12.2;
Use aprint_normal() for cfprint routines.
 1.11 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.10 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.9 22-Jul-2001  wiz branches: 1.9.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.8 05-Jul-2000  tsubai branches: 1.8.4;
First attempt to spin up the secondary processor on 180MP and 200MP.
XXX Need more work.
 1.7 03-Feb-2000  tsubai * Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.6 06-May-1999  thorpej branches: 1.6.2;
Allow pci_init() to be called twice, once just to find the PCI-Host
bridges and determine the "pci chipset" values (for making PCI tags),
and again to actually map the configuration space registers.
 1.5 05-May-1999  thorpej - Always config_found() PCI busses, so we know if present PCI busses
aren't configured.
- Grab the bus's memory space tag from the pci_bridge structure for
the bus.
 1.4 15-Oct-1998  tsubai branches: 1.4.6;
Set PCI bus number correctly.
 1.3 21-Jul-1998  tsubai Oops, I forgot to commit this with bus_dma stuff.
 1.2 13-Jul-1998  tsubai Clean up a bit.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.4.6.2 06-May-1999  perry branches: 1.4.6.2.2;
pullup 1.5->1.6 (thorpej)
 1.4.6.1 06-May-1999  perry pullup 1.4->1.5 (thorpej)
 1.4.6.2.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.6.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.8.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.8.4.1 03-Aug-2001  lukem update to -current
 1.9.6.3 03-Jan-2003  thorpej Sync with HEAD.
 1.9.6.2 18-Oct-2002  nathanw Catch up to -current.
 1.9.6.1 22-Jul-2001  nathanw file mainbus.c was added on branch nathanw_sa on 2002-10-18 02:38:38 +0000
 1.12.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.12.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.12.2.2 03-Sep-2004  skrll Sync with HEAD
 1.12.2.1 03-Aug-2004  skrll Sync with HEAD
 1.14.12.2 27-Oct-2007  yamt sync with head.
 1.14.12.1 30-Dec-2006  yamt sync with head.
 1.15.8.1 11-Aug-2006  yamt sync with head
 1.15.4.1 09-Sep-2006  rpaulo sync with head
 1.16.38.1 25-Oct-2007  bouyer Sync with HEAD.
 1.16.36.1 18-Oct-2007  yamt sync with head.
 1.16.34.1 06-Nov-2007  matt sync with HEAD
 1.16.32.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.16.22.1 11-Oct-2007  macallan call pic_finish_setup() after attaching CPUs
 1.16.14.1 23-Oct-2007  ad Sync with head.
 1.17.34.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.17.28.1 28-Apr-2009  skrll Sync with HEAD.
 1.17.20.1 04-May-2009  yamt sync with head.
 1.20.10.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.20.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.20.4.1 12-Jun-2011  rmind sync with head
 1.21.54.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.22.10.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.22.10.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.23.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.25.4.1 20-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #707):

sys/arch/macppc/macppc/mainbus.c: revision 1.26

check for proper error value from OF_finddevice()

should fix PR57394
 1.3 29-Oct-2000  tsutsui Switch to sys/dev/md_root.c. Tested on an INSTALL kernel.
 1.2 17-Mar-1999  sommerfe branches: 1.2.8;
defopt MINIROOTSIZE
 1.1 24-Jun-1998  tsubai Add memory disk support.
 1.2.8.1 22-Nov-2000  bouyer Sync with HEAD.
 1.9 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.8 24-Apr-2021  thorpej branches: 1.8.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.7 22-Dec-2019  thorpej branches: 1.7.10;
Cleanup i2c bus acquire / release, centralizing all of the logic into
iic_acquire_bus() / iic_release_bus(). "acquire" and "release" hooks
no longer need to be provided by back-end controller drivers (only if
they need special handling, e.g. powering on the i2c controller).
This results in the removal of a bunch of rendundant code from each
back-end controller driver.

Assert that we are not in hard interrupt context in iic_acquire_bus(),
iic_exec(), and iic_release_bus().
 1.6 10-Nov-2019  chs 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.5 26-Oct-2011  macallan branches: 1.5.54;
more device/softc splitting
 1.4 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.3 14-Nov-2010  uebayasi branches: 1.3.6;
Direct/indirect uses of sys/device.h and prop/proplib.h.
 1.2 07-Dec-2008  tsutsui branches: 1.2.6; 1.2.10;
Fix attach messages. (extra colons, misplaced newline etc.)
 1.1 26-Aug-2008  macallan branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.10;
add spdmem(4) support
From Marco Trillo
 1.1.10.1 13-Dec-2008  bouyer Pull up following revision(s) (requested by tsutsui in ticket #182):
sys/arch/macppc/dev/cuda.c: revision 1.9
sys/arch/macppc/macppc/memory.c: revision 1.2
sys/arch/macppc/dev/zs.c: revision 1.48
Fix attach messages. (extra colons, misplaced newline etc.)
 1.1.8.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.6.3 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 26-Aug-2008  haad file memory.c was added on branch haad-dm on 2008-10-19 22:15:52 +0000
 1.1.4.3 17-Jan-2009  mjf Sync with HEAD.
 1.1.4.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.4.1 26-Aug-2008  mjf file memory.c was added on branch mjf-devfs2 on 2008-09-28 10:40:03 +0000
 1.1.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.2.1 26-Aug-2008  wrstuden file memory.c was added on branch wrstuden-revivesa on 2008-09-18 04:33:30 +0000
 1.2.10.1 05-Mar-2011  rmind sync with head
 1.2.6.2 04-May-2009  yamt sync with head.
 1.2.6.1 07-Dec-2008  yamt file memory.c was added on branch yamt-nfs-mp on 2009-05-04 08:11:29 +0000
 1.3.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.5.54.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.5.54.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.7.10.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.8.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 02-Feb-2001  briggs No longer needed
 1.1 14-Feb-2000  tsubai branches: 1.1.6;
Add minimal support of openpic.
 1.1.6.3 11-Feb-2001  bouyer Sync with HEAD.
 1.1.6.2 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.1.6.1 14-Feb-2000  bouyer file openpicreg.h was added on branch thorpej_scsipi on 2000-11-20 20:13:02 +0000
 1.12 26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.11 16-Jun-2017  macallan branches: 1.11.18;
- read IRQs from state, not level register in *_reenable_irq() so we get
edge triggered ones too
- kmem_alloc() -> kmem_zalloc() for paranoia
 1.10 01-Jun-2017  chs remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.
 1.9 02-May-2012  macallan branches: 1.9.2; 1.9.16;
remove some commented out / unused junk
 1.8 13-Mar-2012  macallan malloc() -> kmem_alloc()
 1.7 07-Jul-2011  mrg branches: 1.7.2; 1.7.6;
mark heathrow_read_events() and ohare_read_events() static.
 1.6 19-Jun-2011  matt Use __builtin_clz instead of cntlzw
 1.5 20-Dec-2010  matt branches: 1.5.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.4 29-Apr-2008  martin branches: 1.4.22;
Convert to new 2 clause license
 1.3 11-Dec-2007  garbled branches: 1.3.8; 1.3.10; 1.3.12;
Fix the endless stream of 7's problem on i8259-like interrupt controllers
once and for all. The i8259 does not like to be read in a loop, when an
interrupt comes in, it will return a valid value, however, if you keep
reading it until there are no outstanding interrupts, it will return 7
(which is the lpt interrupt). Change the pic handler to give an argument
to the get_irq functions of mode, which indicates if this is the first
time we are asking, or if we are just rechecking in a loop. Non-i8259
handlers can safely ignore this argument.

Tested to fix the stream of 7's problem on prep and ofppc. Got rid of
the nasty hack in ofppc with this too, and the prep machine seems to take
less interrupts now, which is a good thing.
 1.2 17-Oct-2007  garbled branches: 1.2.2; 1.2.4; 1.2.8; 1.2.10; 1.2.12; 1.2.14;
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.1 02-May-2007  macallan branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file pic_heathrow.c was initially added on branch ppcoea-renovation.
 1.1.10.1 25-Oct-2007  bouyer Sync with HEAD.
 1.1.8.1 18-Oct-2007  yamt sync with head.
 1.1.6.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.1.2.6 11-Oct-2007  macallan add NULL pic_finish_setup()
 1.1.2.5 11-May-2007  macallan actually honour the interrupt type passed to intr_establish instead of
hardcoding level vs. edge triggered interrupts
 1.1.2.4 04-May-2007  macallan adapt to picvar.h changes
 1.1.2.3 03-May-2007  macallan add dummy establish_irq callbacks
 1.1.2.2 03-May-2007  macallan adapt to changes in picvar.h
 1.1.2.1 02-May-2007  macallan support for Heathrow PICs
 1.2.14.1 13-Dec-2007  bouyer Sync with HEAD
 1.2.12.1 13-Dec-2007  yamt sync with head.
 1.2.10.1 26-Dec-2007  ad Sync with head.
 1.2.8.3 09-Jan-2008  matt sync with HEAD
 1.2.8.2 06-Nov-2007  matt sync with HEAD
 1.2.8.1 17-Oct-2007  matt file pic_heathrow.c was added on branch matt-armv6 on 2007-11-06 23:18:50 +0000
 1.2.4.3 21-Jan-2008  yamt sync with head
 1.2.4.2 27-Oct-2007  yamt sync with head.
 1.2.4.1 17-Oct-2007  yamt file pic_heathrow.c was added on branch yamt-lazymbuf on 2007-10-27 11:27:11 +0000
 1.2.2.2 23-Oct-2007  ad Sync with head.
 1.2.2.1 17-Oct-2007  ad file pic_heathrow.c was added on branch vmlocking on 2007-10-23 20:35:55 +0000
 1.3.12.1 16-May-2008  yamt sync with head.
 1.3.10.1 18-May-2008  yamt sync with head.
 1.3.8.1 02-Jun-2008  mjf Sync with HEAD.
 1.4.22.1 05-Mar-2011  rmind sync with head
 1.5.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.7.6.2 02-Jun-2012  mrg sync to latest -current.
 1.7.6.1 05-Apr-2012  mrg sync to latest -current.
 1.7.2.2 23-May-2012  yamt sync with head.
 1.7.2.1 17-Apr-2012  yamt sync with head
 1.9.16.1 28-Aug-2017  skrll Sync with HEAD
 1.9.2.1 03-Dec-2017  jdolecek update from HEAD
 1.11.18.1 03-Apr-2021  thorpej Sync with HEAD.
 1.17 05-Mar-2021  rin Convert to intr_establish_xname().
 1.16 03-Sep-2018  riastradh branches: 1.16.12;
Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.15 16-Jun-2017  macallan branches: 1.15.4; 1.15.6;
- read IRQs from state, not level register in *_reenable_irq() so we get
edge triggered ones too
- kmem_alloc() -> kmem_zalloc() for paranoia
 1.14 01-Jun-2017  chs remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.
 1.13 15-Jun-2016  macallan g/c some leftovers from when we had static assignments of edge or level
triggers
 1.12 21-Apr-2013  kiyohara branches: 1.12.12;
Fix hangup to interrupt on cascading PIC.
tested on bebox and evbppc/OPENBLOCKS600.
 1.11 13-Mar-2012  macallan branches: 1.11.2;
malloc() -> kmem_alloc()
 1.10 07-Jul-2011  mrg branches: 1.10.2; 1.10.6;
mark heathrow_read_events() and ohare_read_events() static.
 1.9 19-Jun-2011  matt Use __builtin_clz instead of cntlzw
 1.8 20-Dec-2010  matt branches: 1.8.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.7 27-Apr-2010  kiyohara Use OHARE_NIRQ instead of NIRQ.
NIRQ defined in powerpc/intr.h sinse 'Support 64-bit imask for powerpc/pic.'
 1.6 08-May-2008  macallan branches: 1.6.18; 1.6.20;
magic number reduction
from Izumi Tsutsui
 1.5 07-May-2008  macallan branches: 1.5.2;
Make the priority ordering code actually work.
Thanks to Izumi Tsutsui for bugging me repeatedly about the problem.
 1.4 29-Apr-2008  martin Convert to new 2 clause license
 1.3 11-Dec-2007  garbled branches: 1.3.8; 1.3.10; 1.3.12;
Fix the endless stream of 7's problem on i8259-like interrupt controllers
once and for all. The i8259 does not like to be read in a loop, when an
interrupt comes in, it will return a valid value, however, if you keep
reading it until there are no outstanding interrupts, it will return 7
(which is the lpt interrupt). Change the pic handler to give an argument
to the get_irq functions of mode, which indicates if this is the first
time we are asking, or if we are just rechecking in a loop. Non-i8259
handlers can safely ignore this argument.

Tested to fix the stream of 7's problem on prep and ofppc. Got rid of
the nasty hack in ofppc with this too, and the prep machine seems to take
less interrupts now, which is a good thing.
 1.2 17-Oct-2007  garbled branches: 1.2.2; 1.2.4; 1.2.8; 1.2.10; 1.2.12; 1.2.14;
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.1 02-May-2007  macallan branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file pic_ohare.c was initially added on branch ppcoea-renovation.
 1.1.10.1 25-Oct-2007  bouyer Sync with HEAD.
 1.1.8.1 18-Oct-2007  yamt sync with head.
 1.1.6.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.1.2.8 11-Oct-2007  macallan add NULL pic_finish_setup()
 1.1.2.7 11-May-2007  macallan add experimental interrupt priority handling for ohare
 1.1.2.6 11-May-2007  macallan actually honour the interrupt type passed to intr_establish instead of
hardcoding level vs. edge triggered interrupts
 1.1.2.5 05-May-2007  macallan also detect Grand Central PICs here since they're similar enough
 1.1.2.4 04-May-2007  macallan adapt to picvar.h changes
 1.1.2.3 03-May-2007  macallan add dummy establish_irq callbacks
 1.1.2.2 03-May-2007  macallan adapt to changes in picvar.h
 1.1.2.1 02-May-2007  macallan use generic interrupt handling, so far only ohare-based machines are supported
 1.2.14.1 13-Dec-2007  bouyer Sync with HEAD
 1.2.12.1 13-Dec-2007  yamt sync with head.
 1.2.10.1 26-Dec-2007  ad Sync with head.
 1.2.8.3 09-Jan-2008  matt sync with HEAD
 1.2.8.2 06-Nov-2007  matt sync with HEAD
 1.2.8.1 17-Oct-2007  matt file pic_ohare.c was added on branch matt-armv6 on 2007-11-06 23:18:51 +0000
 1.2.4.3 21-Jan-2008  yamt sync with head
 1.2.4.2 27-Oct-2007  yamt sync with head.
 1.2.4.1 17-Oct-2007  yamt file pic_ohare.c was added on branch yamt-lazymbuf on 2007-10-27 11:27:12 +0000
 1.2.2.2 23-Oct-2007  ad Sync with head.
 1.2.2.1 17-Oct-2007  ad file pic_ohare.c was added on branch vmlocking on 2007-10-23 20:35:56 +0000
 1.3.12.2 11-Aug-2010  yamt sync with head.
 1.3.12.1 16-May-2008  yamt sync with head.
 1.3.10.1 18-May-2008  yamt sync with head.
 1.3.8.1 02-Jun-2008  mjf Sync with HEAD.
 1.5.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.6.20.2 05-Mar-2011  rmind sync with head
 1.6.20.1 30-May-2010  rmind sync with head
 1.6.18.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.8.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.10.6.1 05-Apr-2012  mrg sync to latest -current.
 1.10.2.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.10.2.1 17-Apr-2012  yamt sync with head
 1.11.2.2 03-Dec-2017  jdolecek update from HEAD
 1.11.2.1 23-Jun-2013  tls resync from head
 1.12.12.2 28-Aug-2017  skrll Sync with HEAD
 1.12.12.1 09-Jul-2016  skrll Sync with HEAD
 1.15.6.1 10-Jun-2019  christos Sync with HEAD
 1.15.4.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.16.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.14 12-Jan-2023  macallan don't attach on cascaded mpics for now - we don't really use them for anything
yet and apparently setup causes problems elsewhere, which needs investigation
 1.13 28-Dec-2022  macallan support cascading:
- attach on both /u3 and /u4
- install IPI handling only if we're primary
- link to primary PIC if we're cascaded
 1.12 06-Mar-2021  rin Change pic_name from "openpic" to "u3_ht" so that it can be
distinguishable with generic OpenPIC driver.
 1.11 05-Mar-2021  rin Convert to intr_establish_xname().
 1.10 26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.9 15-Jul-2020  rin branches: 1.9.2;
Add NetBSD RCSID. No functional changes.
 1.8 12-Jul-2020  rin Fix typo; U3_HT_PIC_DE*P*UG ---> U3_HT_PIC_DEBUG
 1.7 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.6 07-Jun-2018  macallan branches: 1.6.2;
reduce debug spam, use IPI_VECTOR
 1.5 11-May-2018  macallan deal with IPIs on U3/HT machines, only install OpenPIC IPI goop on actual
OpenPIC hardware
 1.4 31-Jan-2018  macallan branches: 1.4.2;
- do some magic number reduction
- MPIC doesn't have the OPENPIC_POLARITY_* bit, so don't pretend to
 1.3 18-Oct-2017  macallan do what freebsd does:
- when disabling an interrupt, disable it on the HT PIC as well
- when establishing an interrupt, don't enable it right away
- program IRQs 0-3 as level, like freebsd does
Now svwsata is almost usable. We still get an interrupt storm but it doesn't
eat up all CPU cycles anymore.
 1.2 01-Jun-2017  chs remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.
 1.1 18-Apr-2013  macallan branches: 1.1.4; 1.1.12; 1.1.16;
support OpenPIC variant found in PowerMac G5s
from Phileas Fogg
 1.1.16.1 28-Aug-2017  skrll Sync with HEAD
 1.1.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.1.12.1 18-Apr-2013  yamt file pic_u3_ht.c was added on branch yamt-pagecache on 2014-05-22 11:39:57 +0000
 1.1.4.3 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 18-Apr-2013  tls file pic_u3_ht.c was added on branch tls-maxphys on 2013-06-23 06:20:08 +0000
 1.4.2.3 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.4.2.2 25-Jun-2018  pgoyette Sync with HEAD
 1.4.2.1 21-May-2018  pgoyette Sync with HEAD
 1.6.2.1 10-Jun-2019  christos Sync with HEAD
 1.9.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.3 05-Mar-2003  matt Remove port-specific procfs_machdep.c (since they are all identical and
a better one resides in powerpc/powerpc/).
 1.2 18-Jan-2001  tv No-op commit to force update to a non-"-kk" revision.
 1.1 17-Jan-2001  fvdl branches: 1.1.2;
Add machdep file for procfs. Currently only used for linux-style
/proc/cpuinfo (only active when procfs is mounted with -o linux).
For ports other than the i386 this currently produces an empty
string.
 1.1.2.2 18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.1.2.1 17-Jan-2001  bouyer file procfs_machdep.c was added on branch thorpej_scsipi on 2001-01-18 09:22:42 +0000
 1.21 17-Mar-2025  macallan when looking for the cardbus bridge's memory range:
- check 'reserved-segment' first, all core99 machines should have it
- if that fails, look at 'assigned-addresses' which has the range on older OF,
notably the 3400c
- if that doesn't return anything useful, fall back to the default
should fix PR59176
 1.20 17-Mar-2025  macallan remove bogus oea_iobat_add() call
we BAT-map the entire PCI bus anyway
tested on my pismo with an ohci/ehci at cardbus
 1.19 28-Dec-2023  rin branches: 1.19.2;
macppc/cardbus: Belatedly catch up with battable resolution change

Fix pmap_extract() failures on models with cardslot, for direct-mapped
buffers allocated by PMAP_ALLOC_POOLPAGE().

This driver had corrupted battable[] over 11 years, since resolution of
battable was changed from 256MB to 8MB:

https://github.com/NetBSD/src/commit/413fb4c3c505a13900a9dff86f563fc58ff04005

Now, indexes for battable[] should be calculated by (va >> 23), but
rather, use oea_iobat_add() instead of directly modifying battable[].

TODO:
- Add some consistency checks to oea_iobat_add().
- Map reasonable VA space for cardbus(4), if OFW does not. Note that
hardcoded value of 0x90000000-0x9fffffff should be safe for now, not
that elegant although. For macppc models, IIUC, RAM is *not* mapped to
0x80000000-0xffffffff, and VA reserved for kernel and copy{in,out} is
0xc0000000-0xefffffff.
 1.18 01-Jul-2011  dyoung branches: 1.18.84;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.17 20-Dec-2010  matt Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.16 14-Mar-2009  dsl branches: 1.16.4;
Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.15 14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.14 17-Oct-2007  garbled branches: 1.14.20; 1.14.28; 1.14.34; 1.14.42;
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.13 11-Dec-2005  christos branches: 1.13.30; 1.13.38; 1.13.48; 1.13.50; 1.13.52; 1.13.54;
merge ktrace-lwp.
 1.12 20-Oct-2003  matt branches: 1.12.16;
Reorganize the way powerpc port install machine specific headers.
Use <powerpc/oea/bat.h> exclusively and remove <machine/bat.h> and
<powerpc/bat.h>. Remove unneeded <machine/cpufunc.h>. To insure
1:1 correspondence of <powerpc/FOO.h> to <machine/FOO.h> include
"../../powerpc/include/Makefile" in "arch/FOO/include/Makefile".
Incororpate <byte_swap.h> into <bswap.h> and then byte_swap.h
 1.11 15-Jul-2003  lukem __KERNEL_RCSID()
 1.10 10-Jun-2001  tsubai branches: 1.10.8; 1.10.24;
Use machine/bat.h rather than powerpc/mpc6xx/bat.h.
 1.9 08-Jun-2001  chs make this compile again.
 1.8 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.7 02-Aug-2000  tsubai branches: 1.7.2;
Don't try to change subordinate bus number if pchb != grackle (for now).
 1.6 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.5 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.4 03-Feb-2000  tsubai branches: 1.4.4;
* Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.3 18-Dec-1999  thorpej branches: 1.3.2;
Update for BATU()/BATL() changes.
 1.2 15-Oct-1999  tsubai branches: 1.2.2;
Add RCS ID.
Disable debug messages.
 1.1 15-Oct-1999  haya This is the first check-in of CardBus driver. CardBus driver contains
CardBus bus stub, YENTA PCI-CardBus bridge (cbb), 3Com 3C575TX driver
(ex) and Intel fxp driver.

TODO:
o Conform to the KNF more strictly.
o Be unified with pcmcia code as much as possible.
o Add more drivers for CardBus card, such as APA-1480 or USB card.

The affected files are listed below.

sys/arch/i386/conf/files.i386
sys/arch/macppc/conf/files.macppc
sys/conf/files
sys/dev/ic/elinkxl.c
sys/dev/ic/elinkxlvar.h
sys/dev/ic/i82365.c
sys/dev/ic/i82365var.h
sys/dev/isa/i82365_isasubr.c
sys/dev/pci/files.pci
sys/dev/pcmcia/pcmcia.c
sys/dev/pcmcia/pcmciachip.h

The added files are listed below.

sys/arch/i386/conf/CARDBUS
sys/arch/i386/include/rbus_machdep.h
sys/arch/i386/i386/rbus_machdep.c
sys/arch/macppc/include/rbus_machdep.h
sys/arch/macppc/macppc/rbus_machdep.c
sys/dev/cardbus/if_ex_cardbus.c
sys/dev/cardbus/Makefile.cardbusdevs
sys/dev/cardbus/cardbus.c
sys/dev/cardbus/cardbus_map.c
sys/dev/cardbus/cardbusdevs
sys/dev/cardbus/cardbusdevs.h
sys/dev/cardbus/cardbusdevs_data.h
sys/dev/cardbus/cardbusvar.h
sys/dev/cardbus/cardslot.c
sys/dev/cardbus/cardslotvar.h
sys/dev/cardbus/devlist2h.awk
sys/dev/cardbus/files.cardbus
sys/dev/cardbus/if_fxp_cardbus.c
sys/dev/cardbus/pccardcis.h
sys/dev/cardbus/rbus.c
sys/dev/cardbus/rbus.h
sys/dev/pci/pccbb.c
sys/dev/pci/pccbbreg.h
sys/dev/pci/pccbbvar.h
 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.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.4.4.1 01-Nov-2000  tv Pullup 1.7 [tsubai, mycroft]:
Don't try to change subordinate bus number if pchb != grackle (for now).
 1.7.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.10.24.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.10.24.2 18-Sep-2004  skrll Sync with HEAD.
 1.10.24.1 03-Aug-2004  skrll Sync with HEAD
 1.10.8.2 10-Jun-2001  tsubai Use machine/bat.h rather than powerpc/mpc6xx/bat.h.
 1.10.8.1 10-Jun-2001  tsubai file rbus_machdep.c was added on branch nathanw_sa on 2001-06-10 15:32:59 +0000
 1.12.16.1 27-Oct-2007  yamt sync with head.
 1.13.54.1 25-Oct-2007  bouyer Sync with HEAD.
 1.13.52.1 18-Oct-2007  yamt sync with head.
 1.13.50.1 06-Nov-2007  matt sync with HEAD
 1.13.48.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.13.38.2 19-Jun-2007  macallan make md_space_unmap() return the bus address of the unmapped region again
with this cardbus works again on my PB3400c
 1.13.38.1 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.13.30.1 23-Oct-2007  ad Sync with head.
 1.14.42.1 26-Jan-2011  matt Change battable to have a granularity of 8MB.
 1.14.34.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.14.28.1 28-Apr-2009  skrll Sync with HEAD.
 1.14.20.1 04-May-2009  yamt sync with head.
 1.16.4.1 05-Mar-2011  rmind sync with head
 1.18.84.1 31-Dec-2023  martin Pull up following revision(s) (requested by rin in ticket #527):

sys/arch/macppc/macppc/rbus_machdep.c: revision 1.19

macppc/cardbus: Belatedly catch up with battable resolution change

Fix pmap_extract() failures on models with cardslot, for direct-mapped
buffers allocated by PMAP_ALLOC_POOLPAGE().

This driver had corrupted battable[] over 11 years, since resolution of
battable was changed from 256MB to 8MB:
https://github.com/NetBSD/src/commit/413fb4c3c505a13900a9dff86f563fc58ff04005

Now, indexes for battable[] should be calculated by (va >> 23), but
rather, use oea_iobat_add() instead of directly modifying battable[].
TODO:
- Add some consistency checks to oea_iobat_add().
- Map reasonable VA space for cardbus(4), if OFW does not. Note that
hardcoded value of 0x90000000-0x9fffffff should be safe for now, not
that elegant although. For macppc models, IIUC, RAM is *not* mapped to
0x80000000-0xffffffff, and VA reserved for kernel and copy{in,out} is
0xc0000000-0xefffffff.
 1.19.2.1 02-Aug-2025  perseant Sync with HEAD
 1.3 28-Jan-2019  sevan Add a description
 1.2 28-Jan-2019  sevan Fake the EDID info for the clamshell iBook G3 so X11 works out of the box.
Obtained from the 2nd (firewire) revision iBook, but it's applied to 1st gen
also.

[ 93.906] (II) R128(0): I2C bus "VGA-0" initialized.
[ 93.907] (II) got 128 bytes worth of EDID from wsdisplay
[ 93.908] (II) R128(0): EDID for output LVDS
[ 93.908] (II) R128(0): Manufacturer: APP Model: 9c05 Serial#: 16843009
[ 93.908] (II) R128(0): Year: 1999 Week: 9
[ 93.908] (II) R128(0): EDID Version: 1.1
[ 93.908] (II) R128(0): Digital Display Input
[ 93.908] (II) R128(0): Max Image Size [cm]: horiz.: 24 vert.: 18
[ 93.908] (II) R128(0): Gamma: 2.28
[ 93.908] (II) R128(0): DPMS capabilities: StandBy Suspend Off
[ 93.909] (II) R128(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4
[ 93.909] (II) R128(0): redX: 0.594 redY: 0.345 greenX: 0.317 greenY: 0.494
[ 93.909] (II) R128(0): blueX: 0.155 blueY: 0.146 whiteX: 0.312 whiteY: 0.328
[ 93.909] (II) R128(0): Supported established timings:
[ 93.909] (II) R128(0): 800x600@60Hz
[ 93.909] (II) R128(0): Manufacturer's mask: 0
[ 93.910] (II) R128(0): Supported detailed timing:
[ 93.910] (II) R128(0): clock: 60.0 MHz Image Size: 275 x 199 mm
[ 93.910] (II) R128(0): h_active: 800 h_sync: 840 h_sync_end 968 h_blank_end 1056 h_border: 0
[ 93.910] (II) R128(0): v_active: 600 v_sync: 601 v_sync_end 605 v_blanking: 628 v_border: 0
[ 93.910] (II) R128(0): LT121SU-121
[ 93.910] (II) R128(0): LT121SU-121
[ 93.910] (II) R128(0): Monitor name: Color LCD
[ 93.910] (II) R128(0): EDID (in hex):
[ 93.910] (II) R128(0): 00ffffffffffff000610059c01010101
[ 93.910] (II) R128(0): 09090101a8181280e816e09858517e27
[ 93.910] (II) R128(0): 25505401000001010101010101010101
[ 93.911] (II) R128(0): 0101010101017017200031581c202880
[ 93.911] (II) R128(0): 140013c710000018000000fe004c5431
[ 93.911] (II) R128(0): 323153552d3132310a20000000fe004c
[ 93.911] (II) R128(0): 5431323153552d3132310a20000000fc
[ 93.911] (II) R128(0): 00436f6c6f72204c43440a2020200037
[ 93.912] (II) R128(0): I2C device "VGA-0:ddc2" registered at address 0xA0.
 1.1 13-Jul-2011  macallan branches: 1.1.54;
provide EDID blocks for hardware where we know the parameters but neither the
firmware nor DDC provide any. So far there's only a parameter block for the
PowerBook Pismo's built-in TFT, now Xorg works out of the box without config.
The same parameter block will probably do the right thing on Lombard, PDQ and
TFT-equipped Wallstreet PowerBooks.
 1.1.54.1 10-Jun-2019  christos Sync with HEAD
 1.2 28-Jan-2019  sevan Fake the EDID info for the clamshell iBook G3 so X11 works out of the box.
Obtained from the 2nd (firewire) revision iBook, but it's applied to 1st gen
also.

[ 93.906] (II) R128(0): I2C bus "VGA-0" initialized.
[ 93.907] (II) got 128 bytes worth of EDID from wsdisplay
[ 93.908] (II) R128(0): EDID for output LVDS
[ 93.908] (II) R128(0): Manufacturer: APP Model: 9c05 Serial#: 16843009
[ 93.908] (II) R128(0): Year: 1999 Week: 9
[ 93.908] (II) R128(0): EDID Version: 1.1
[ 93.908] (II) R128(0): Digital Display Input
[ 93.908] (II) R128(0): Max Image Size [cm]: horiz.: 24 vert.: 18
[ 93.908] (II) R128(0): Gamma: 2.28
[ 93.908] (II) R128(0): DPMS capabilities: StandBy Suspend Off
[ 93.909] (II) R128(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4
[ 93.909] (II) R128(0): redX: 0.594 redY: 0.345 greenX: 0.317 greenY: 0.494
[ 93.909] (II) R128(0): blueX: 0.155 blueY: 0.146 whiteX: 0.312 whiteY: 0.328
[ 93.909] (II) R128(0): Supported established timings:
[ 93.909] (II) R128(0): 800x600@60Hz
[ 93.909] (II) R128(0): Manufacturer's mask: 0
[ 93.910] (II) R128(0): Supported detailed timing:
[ 93.910] (II) R128(0): clock: 60.0 MHz Image Size: 275 x 199 mm
[ 93.910] (II) R128(0): h_active: 800 h_sync: 840 h_sync_end 968 h_blank_end 1056 h_border: 0
[ 93.910] (II) R128(0): v_active: 600 v_sync: 601 v_sync_end 605 v_blanking: 628 v_border: 0
[ 93.910] (II) R128(0): LT121SU-121
[ 93.910] (II) R128(0): LT121SU-121
[ 93.910] (II) R128(0): Monitor name: Color LCD
[ 93.910] (II) R128(0): EDID (in hex):
[ 93.910] (II) R128(0): 00ffffffffffff000610059c01010101
[ 93.910] (II) R128(0): 09090101a8181280e816e09858517e27
[ 93.910] (II) R128(0): 25505401000001010101010101010101
[ 93.911] (II) R128(0): 0101010101017017200031581c202880
[ 93.911] (II) R128(0): 140013c710000018000000fe004c5431
[ 93.911] (II) R128(0): 323153552d3132310a20000000fe004c
[ 93.911] (II) R128(0): 5431323153552d3132310a20000000fc
[ 93.911] (II) R128(0): 00436f6c6f72204c43440a2020200037
[ 93.912] (II) R128(0): I2C device "VGA-0:ddc2" registered at address 0xA0.
 1.1 13-Jul-2011  macallan branches: 1.1.54;
provide EDID blocks for hardware where we know the parameters but neither the
firmware nor DDC provide any. So far there's only a parameter block for the
PowerBook Pismo's built-in TFT, now Xorg works out of the box without config.
The same parameter block will probably do the right thing on Lombard, PDQ and
TFT-equipped Wallstreet PowerBooks.
 1.1.54.1 10-Jun-2019  christos Sync with HEAD
 1.2 05-Jun-1998  tsubai Add support for UVM and MACHINE_NEW_NONCONTIG.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 29-Apr-2008  martin Convert to new 2 clause license
 1.1 25-Mar-2007  macallan branches: 1.1.2; 1.1.6; 1.1.10; 1.1.22; 1.1.42; 1.1.44; 1.1.46;
dummy agp_flush_cache()
 1.1.46.1 16-May-2008  yamt sync with head.
 1.1.44.1 18-May-2008  yamt sync with head.
 1.1.42.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.22.2 03-Sep-2007  yamt sync with head.
 1.1.22.1 25-Mar-2007  yamt file agp_machdep.c was added on branch yamt-lazymbuf on 2007-09-03 14:27:42 +0000
 1.1.10.2 11-Jul-2007  mjf Sync with head.
 1.1.10.1 25-Mar-2007  mjf file agp_machdep.c was added on branch mjf-ufs-trans on 2007-07-11 20:00:42 +0000
 1.1.6.2 15-Apr-2007  yamt sync with head.
 1.1.6.1 25-Mar-2007  yamt file agp_machdep.c was added on branch yamt-idlelwp on 2007-04-15 16:02:51 +0000
 1.1.2.2 10-Apr-2007  ad Sync with head.
 1.1.2.1 25-Mar-2007  ad file agp_machdep.c was added on branch vmlocking on 2007-04-10 13:22:44 +0000
 1.35 21-Jan-2022  thorpej Don't bother with devhandle_from_of() if we're just forwarding along
our own node; use device_handle(self) instead.
 1.34 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.33 24-Apr-2021  thorpej branches: 1.33.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.32 08-Jul-2016  macallan branches: 1.32.32;
first step to make genfb work with /chaos/control - don't do config space
writes on /chaos.
tested by jak
 1.31 02-Oct-2015  msaitoh PCI Extended Configuration stuff written by nonaka@:
- Add PCI Extended Configuration Space support into x86.
- Check register offset of pci_conf_read() in MD part. It returns (pcireg_t)-1
if it isn't accessible.
- Decode Extended Capability in PCI Extended Configuration Space.
Currently the following extended capabilities are decoded:
- Advanced Error Reporting
- Virtual Channel
- Device Serial Number
- Power Budgeting
- Root Complex Link Declaration
- Root Complex Event Collector Association
- Access Control Services
- Alternative Routing-ID Interpretation
- Address Translation Services
- Single Root IO Virtualization
- Page Request
- TPH Requester
- Latency Tolerance Reporting
- Secondary PCI Express
- Process Address Space ID
- LN Requester
- L1 PM Substates
The following extended capabilities are not decoded yet:
- Root Complex Internal Link Control
- Multi-Function Virtual Channel
- RCRB Header
- Vendor Unique
- Configuration Access Correction
- Multiple Root IO Virtualization
- Multicast
- Resizable BAR
- Dynamic Power Allocation
- Protocol Multiplexing
- Downstream Port Containment
- Precision Time Management
- M-PCIe
- Function Reading Status Queueing
- Readiness Time Reporting
- Designated Vendor-Specific
 1.30 26-Oct-2011  macallan branches: 1.30.12; 1.30.30;
actually split device and softc
 1.29 30-Jun-2011  matt Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.28 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.27 17-May-2011  dyoung branches: 1.27.2;
PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED changed their functional
role in NetBSD (drivers are no longer supposed to write these to
pa_flags) without changing name. Correct that.

Rename PCI_FLAGS_IO_ENABLED to PCI_FLAGS_IO_OKAY and
PCI_FLAGS_MEM_ENABLED to PCI_FLAGS_MEM_OKAY, thus making their names
consistent with the other PCI flags and poisoning 3rd-party driver
sources that use the flags in the old bad way.

This patch produces no binary changes in this set of PCI kernels when
they are compiled w/o 'options DIAGNOSTIC' and w/ -V MKREPRO=yes:

algor P4032 P5064 P6032
alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE
evbarm-el GUMSTIX HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321
evbarm-el IXDP425 IXM1200 KUROBOX_PRO
evbarm-el LUBBOCK MARVELL_NAS NAPPI NSLU2 SHEEVAPLUG SMDK2800 TEAMASA_NPWR
evbarm-el TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
evbppc OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
iyonix GENERIC
landisk GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sbmips-el GENERIC
sgimips GENERIC32_IP2x GENERIC32_IP3x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC
 1.26 17-Oct-2007  garbled branches: 1.26.42; 1.26.48;
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.25 11-Dec-2005  christos branches: 1.25.30; 1.25.38; 1.25.48; 1.25.50; 1.25.52; 1.25.54;
merge ktrace-lwp.
 1.24 30-Aug-2004  drochner branches: 1.24.12;
Phase out the use of a string as first "attach args" member to control
which bustype should be attached with a specific call to config_found()
(from a "mainbus" or a bus bridge).
Do it for isa/eisa/mca and pci/agp for now. These buses all attach to
an mi interface attribute "isabus", "eisabus" etc., and the autoconf
framework now allows to specify an interface attribute on config_found()
and config_search(), which limits the search of matching config data
to these which attach to that specific attribute.
So we basically have to call config_found_ia(..., "foobus", ...) where
such a bus is attached.
As a consequence, where a "mainbus" or alike also attaches other
devices (eg CPUs) which do not attach to a specific attribute yet,
we need at least pass an attribute name (different from "foobus") so
that the foo bus is not found at these places. This made some minor
changes necessary which are not obviously related to the mentioned buses.
 1.23 15-Jul-2003  lukem __KERNEL_RCSID()
 1.22 15-Jun-2003  fvdl branches: 1.22.2;
Handle 64bit DMA addresses on PCI for platforms that can (currently only
enabled on amd64). Add a dmat64 field to various PCI attach structures,
and pass it down where needed. Implement a simple new function called
pci_dma64_available(pa) to test if 64bit DMA addresses may be used.
This returns 1 iff _PCI_HAVE_DMA64 is defined in <machine/pci_machdep.h>,
and there is more than 4G of memory.
 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 16-May-2002  thorpej branches: 1.18.2;
* Add "pcitag_t *pba_bridgetag" to pci_attach_args. This is set to
NULL for root PCI busses. For busses behind a bridge, it points to
a persistent copy of the bridge's pcitag_t. This can be very useful
for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
uses OFW device nodes to enumerate the bus. When a PCI bus that is
behind a bridge is attached, pci_attach_hook() allocates a new PCI
chipset tag for the new bus and sets it's "curnode" to the OFW node
of the bridge. This is used as a starting point when enumerating
that bus. Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
 1.17 14-Sep-2001  nathanw branches: 1.17.4;
Return ~0 for all config space reads on devices < 11 on the primary bus,
rather than returning ~0 for PCI_ID_REG and panicing otherwise.
 1.16 22-Jul-2001  wiz branches: 1.16.2;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.15 04-Feb-2000  tsubai branches: 1.15.8;
Remove an unused variable.
 1.14 04-Feb-2000  tsubai Treat "chaos" like a bandit.
 1.13 03-Feb-2000  tsubai * Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.12 01-Feb-2000  danw Use device_register to find the boot device more reliably. Should now work
on anything it's possible to boot from that we have a driver for.
 1.11 06-May-1999  thorpej branches: 1.11.2;
Allow pci_init() to be called twice, once just to find the PCI-Host
bridges and determine the "pci chipset" values (for making PCI tags),
and again to actually map the configuration space registers.
 1.10 05-May-1999  tsubai Fix a small bug to make both IO and MEM enable bits in csr are set.
 1.9 05-May-1999  thorpej - Completely rewrite how bus space tags for PCI space are set up. Instead
of hard-coding them, decode the "ranges" property of the PCI bus node in
OpenFirmware.
- Do a little cleanup, and share some more code between the Bandit/Chaos
and MPC106.

XXX The bus_space(9) implementation for macppc really needs to be
rewritten.
 1.8 29-Mar-1999  tsubai branches: 1.8.2;
Use interrupt-map property rather than hard-coding irqs.
(From Dan Winship <danw@MIT.EDU>. Slightly modified by me)
 1.7 04-Feb-1999  tsubai Add PCI-PCI bridge support for Bandit.
 1.6 29-Dec-1998  tsubai iMac support (not complete yet).
 1.5 15-Oct-1998  tsubai Set PCI bus number correctly.
 1.4 24-Jul-1998  tsubai G3 Macs also needs to fix pci io/mem enable bits.
 1.3 17-Jul-1998  tsubai "chaos" PCI controller support.
Clean up.
 1.2 13-Jul-1998  tsubai Add support for Motorola MPC106.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.8.2.2 06-May-1999  perry branches: 1.8.2.2.2;
pullup 1.10->1.11 (thorpej)
 1.8.2.1 06-May-1999  perry pullup 1.8->1.10 (thorpej)
 1.8.2.2.2.1 21-Jun-1999  thorpej Sync w/ -current.
 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.15.8.4 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.15.8.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.15.8.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.15.8.1 03-Aug-2001  lukem update to -current
 1.16.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.17.4.4 03-Jan-2003  thorpej Sync with HEAD.
 1.17.4.3 18-Oct-2002  nathanw Catch up to -current.
 1.17.4.2 20-Jun-2002  nathanw Catch up to -current.
 1.17.4.1 14-Sep-2001  nathanw file bandit.c was added on branch nathanw_sa on 2002-06-20 03:39:39 +0000
 1.18.2.2 16-May-2002  thorpej * Add "pcitag_t *pba_bridgetag" to pci_attach_args. This is set to
NULL for root PCI busses. For busses behind a bridge, it points to
a persistent copy of the bridge's pcitag_t. This can be very useful
for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
uses OFW device nodes to enumerate the bus. When a PCI bus that is
behind a bridge is attached, pci_attach_hook() allocates a new PCI
chipset tag for the new bus and sets it's "curnode" to the OFW node
of the bridge. This is used as a starting point when enumerating
that bus. Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
 1.18.2.1 16-May-2002  thorpej file bandit.c was added on branch gehenna-devsw on 2002-05-16 01:01:39 +0000
 1.22.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.22.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.22.2.2 03-Sep-2004  skrll Sync with HEAD
 1.22.2.1 03-Aug-2004  skrll Sync with HEAD
 1.24.12.1 27-Oct-2007  yamt sync with head.
 1.25.54.1 25-Oct-2007  bouyer Sync with HEAD.
 1.25.52.1 18-Oct-2007  yamt sync with head.
 1.25.50.1 06-Nov-2007  matt sync with HEAD
 1.25.48.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.25.38.4 18-Jun-2007  macallan zero out memory- and IO tags before messing with them
 1.25.38.3 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.25.38.2 06-May-2007  macallan switch macppc over to generic PCI code from arch/powerpc/pci
 1.25.38.1 05-May-2007  macallan ansify, sprinkle static.
No functional change.
 1.25.30.1 23-Oct-2007  ad Sync with head.
 1.26.48.1 06-Jun-2011  jruoho Sync with HEAD.
 1.26.42.1 31-May-2011  rmind sync with head
 1.27.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.30.30.2 09-Jul-2016  skrll Sync with HEAD
 1.30.30.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.30.12.1 03-Dec-2017  jdolecek update from HEAD
 1.32.32.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.32.32.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.33.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.19 21-Jan-2022  thorpej Don't bother with devhandle_from_of() if we're just forwarding along
our own node; use device_handle(self) instead.
 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 02-Oct-2015  msaitoh branches: 1.16.32;
PCI Extended Configuration stuff written by nonaka@:
- Add PCI Extended Configuration Space support into x86.
- Check register offset of pci_conf_read() in MD part. It returns (pcireg_t)-1
if it isn't accessible.
- Decode Extended Capability in PCI Extended Configuration Space.
Currently the following extended capabilities are decoded:
- Advanced Error Reporting
- Virtual Channel
- Device Serial Number
- Power Budgeting
- Root Complex Link Declaration
- Root Complex Event Collector Association
- Access Control Services
- Alternative Routing-ID Interpretation
- Address Translation Services
- Single Root IO Virtualization
- Page Request
- TPH Requester
- Latency Tolerance Reporting
- Secondary PCI Express
- Process Address Space ID
- LN Requester
- L1 PM Substates
The following extended capabilities are not decoded yet:
- Root Complex Internal Link Control
- Multi-Function Virtual Channel
- RCRB Header
- Vendor Unique
- Configuration Access Correction
- Multiple Root IO Virtualization
- Multicast
- Resizable BAR
- Dynamic Power Allocation
- Protocol Multiplexing
- Downstream Port Containment
- Precision Time Management
- M-PCIe
- Function Reading Status Queueing
- Readiness Time Reporting
- Designated Vendor-Specific
 1.15 26-Oct-2011  macallan branches: 1.15.12; 1.15.30;
actually split device and softc
 1.14 30-Jun-2011  matt Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.13 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.12 17-May-2011  dyoung branches: 1.12.2;
PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED changed their functional
role in NetBSD (drivers are no longer supposed to write these to
pa_flags) without changing name. Correct that.

Rename PCI_FLAGS_IO_ENABLED to PCI_FLAGS_IO_OKAY and
PCI_FLAGS_MEM_ENABLED to PCI_FLAGS_MEM_OKAY, thus making their names
consistent with the other PCI flags and poisoning 3rd-party driver
sources that use the flags in the old bad way.

This patch produces no binary changes in this set of PCI kernels when
they are compiled w/o 'options DIAGNOSTIC' and w/ -V MKREPRO=yes:

algor P4032 P5064 P6032
alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE
evbarm-el GUMSTIX HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321
evbarm-el IXDP425 IXM1200 KUROBOX_PRO
evbarm-el LUBBOCK MARVELL_NAS NAPPI NSLU2 SHEEVAPLUG SMDK2800 TEAMASA_NPWR
evbarm-el TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
evbppc OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
iyonix GENERIC
landisk GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sbmips-el GENERIC
sgimips GENERIC32_IP2x GENERIC32_IP3x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC
 1.11 17-Oct-2007  garbled branches: 1.11.42; 1.11.48;
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.10 11-Dec-2005  christos branches: 1.10.30; 1.10.38; 1.10.48; 1.10.50; 1.10.52; 1.10.54;
merge ktrace-lwp.
 1.9 30-Aug-2004  drochner branches: 1.9.12;
Phase out the use of a string as first "attach args" member to control
which bustype should be attached with a specific call to config_found()
(from a "mainbus" or a bus bridge).
Do it for isa/eisa/mca and pci/agp for now. These buses all attach to
an mi interface attribute "isabus", "eisabus" etc., and the autoconf
framework now allows to specify an interface attribute on config_found()
and config_search(), which limits the search of matching config data
to these which attach to that specific attribute.
So we basically have to call config_found_ia(..., "foobus", ...) where
such a bus is attached.
As a consequence, where a "mainbus" or alike also attaches other
devices (eg CPUs) which do not attach to a specific attribute yet,
we need at least pass an attribute name (different from "foobus") so
that the foo bus is not found at these places. This made some minor
changes necessary which are not obviously related to the mentioned buses.
 1.8 15-Jul-2003  lukem __KERNEL_RCSID()
 1.7 15-Jun-2003  fvdl branches: 1.7.2;
Handle 64bit DMA addresses on PCI for platforms that can (currently only
enabled on amd64). Add a dmat64 field to various PCI attach structures,
and pass it down where needed. Implement a simple new function called
pci_dma64_available(pa) to test if 64bit DMA addresses may be used.
This returns 1 iff _PCI_HAVE_DMA64 is defined in <machine/pci_machdep.h>,
and there is more than 4G of memory.
 1.6 01-Jan-2003  thorpej Use aprint_normal() for cfprint routines.
 1.5 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.4 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.3 16-May-2002  thorpej branches: 1.3.2;
* Add "pcitag_t *pba_bridgetag" to pci_attach_args. This is set to
NULL for root PCI busses. For busses behind a bridge, it points to
a persistent copy of the bridge's pcitag_t. This can be very useful
for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
uses OFW device nodes to enumerate the bus. When a PCI bus that is
behind a bridge is attached, pci_attach_hook() allocates a new PCI
chipset tag for the new bus and sets it's "curnode" to the OFW node
of the bridge. This is used as a starting point when enumerating
that bus. Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
 1.2 22-Jul-2001  wiz branches: 1.2.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.1 03-Feb-2000  tsubai branches: 1.1.6; 1.1.10;
* Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.1.10.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.10.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.1.10.1 03-Aug-2001  lukem update to -current
 1.1.6.2 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.1.6.1 03-Feb-2000  bouyer file grackle.c was added on branch thorpej_scsipi on 2000-11-20 22:35:41 +0000
 1.2.6.4 03-Jan-2003  thorpej Sync with HEAD.
 1.2.6.3 18-Oct-2002  nathanw Catch up to -current.
 1.2.6.2 20-Jun-2002  nathanw Catch up to -current.
 1.2.6.1 22-Jul-2001  nathanw file grackle.c was added on branch nathanw_sa on 2002-06-20 03:39:39 +0000
 1.3.2.2 16-May-2002  thorpej * Add "pcitag_t *pba_bridgetag" to pci_attach_args. This is set to
NULL for root PCI busses. For busses behind a bridge, it points to
a persistent copy of the bridge's pcitag_t. This can be very useful
for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
uses OFW device nodes to enumerate the bus. When a PCI bus that is
behind a bridge is attached, pci_attach_hook() allocates a new PCI
chipset tag for the new bus and sets it's "curnode" to the OFW node
of the bridge. This is used as a starting point when enumerating
that bus. Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
 1.3.2.1 16-May-2002  thorpej file grackle.c was added on branch gehenna-devsw on 2002-05-16 01:01:39 +0000
 1.7.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.7.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.7.2.2 03-Sep-2004  skrll Sync with HEAD
 1.7.2.1 03-Aug-2004  skrll Sync with HEAD
 1.9.12.1 27-Oct-2007  yamt sync with head.
 1.10.54.1 25-Oct-2007  bouyer Sync with HEAD.
 1.10.52.1 18-Oct-2007  yamt sync with head.
 1.10.50.1 06-Nov-2007  matt sync with HEAD
 1.10.48.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.10.38.3 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.10.38.2 06-May-2007  macallan switch macppc over to generic PCI code from arch/powerpc/pci
 1.10.38.1 05-May-2007  macallan ansify, sprinkle static. No functional change.
 1.10.30.1 23-Oct-2007  ad Sync with head.
 1.11.48.1 06-Jun-2011  jruoho Sync with HEAD.
 1.11.42.1 31-May-2011  rmind sync with head
 1.12.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.15.30.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.15.12.1 03-Dec-2017  jdolecek update from HEAD
 1.16.32.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.16.32.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.17.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.15 17-Oct-2007  garbled 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.14 25-Mar-2007  macallan branches: 1.14.4; 1.14.12; 1.14.14; 1.14.16; 1.14.18;
on AGP capable bridges try to attach an agp device
 1.13 24-Sep-2006  briggs branches: 1.13.4; 1.13.8; 1.13.10; 1.13.12;
Match APPLE_INTREPID2_*
 1.12 05-Aug-2006  sanjayl branches: 1.12.4; 1.12.6;
1st cut of Powermac G5 support (uses bridge mode).
 1.11 11-Dec-2005  christos branches: 1.11.4; 1.11.8;
merge ktrace-lwp.
 1.10 23-Apr-2004  itojun branches: 1.10.12;
pass string length (= boundary info) to pci_devinfo so that we do not run over
the end of memory region
 1.9 15-Jul-2003  lukem __KERNEL_RCSID()
 1.8 02-Oct-2002  thorpej branches: 1.8.6;
Use CFATTACH_DECL().
 1.7 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.6 09-Jul-2002  matt Add more host-bridges.
 1.5 17-Jun-2001  tsubai branches: 1.5.2; 1.5.8; 1.5.16; 1.5.18;
Support the new iBook.
 1.4 25-Jan-2000  tsubai branches: 1.4.4; 1.4.6;
Add UniNorth.
 1.3 18-Jan-2000  thorpej Use PCI products defined in pcidevs.h
 1.2 13-Jul-1998  tsubai branches: 1.2.14;
Add support for Motorola MPC106.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.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.4.6.1 21-Jun-2001  nathanw Catch up to -current.
 1.4.4.1 18-Jun-2001  jhawk Pull up revision 1.5 (requested by tsubai):
Support the new dual USB iBook.
 1.5.18.1 12-Jul-2002  thorpej pullup-1-6 ticket #490 (matt).

Original log message:
Add more host-bridges.
 1.5.16.1 16-Jul-2002  gehenna catch up with -current.
 1.5.8.3 18-Oct-2002  nathanw Catch up to -current.
 1.5.8.2 01-Aug-2002  nathanw Catch up to -current.
 1.5.8.1 17-Jun-2001  nathanw file pchb.c was added on branch nathanw_sa on 2002-08-01 02:42:29 +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.8.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.8.6.1 03-Aug-2004  skrll Sync with HEAD
 1.10.12.3 27-Oct-2007  yamt sync with head.
 1.10.12.2 03-Sep-2007  yamt sync with head.
 1.10.12.1 30-Dec-2006  yamt sync with head.
 1.11.8.1 11-Aug-2006  yamt sync with head
 1.11.4.1 09-Sep-2006  rpaulo sync with head
 1.12.6.1 22-Oct-2006  yamt sync with head
 1.12.4.1 18-Nov-2006  ad Sync with head.
 1.13.12.1 29-Mar-2007  reinoud Pullup to -current
 1.13.10.1 11-Jul-2007  mjf Sync with head.
 1.13.8.2 23-Oct-2007  ad Sync with head.
 1.13.8.1 10-Apr-2007  ad Sync with head.
 1.13.4.1 15-Apr-2007  yamt sync with head.
 1.14.18.1 25-Oct-2007  bouyer Sync with HEAD.
 1.14.16.1 18-Oct-2007  yamt sync with head.
 1.14.14.1 06-Nov-2007  matt sync with HEAD
 1.14.12.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.14.4.1 04-May-2007  macallan nuke pchb.c - we're using the one in powerpc/pci now
 1.44 11-Aug-2025  macallan 'interrupts' set to 1 means check interrupt-map in OF speak
now we find the correct IRQs for the pdcides found in Xserve G4
 1.43 26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.42 01-Mar-2019  msaitoh branches: 1.42.12;
- Almost all ppbreg.h's definitions are also in pcireg.h. Remove duplicated
definitions from ppbreg.h and move some definitions from ppbreg.h to
pcireg.h.
- Change fast back-to-back "capable" to "enable" in pci_subr.c.
- Print Primary Discard Timer, Secondary Discard Timer, Discard Timer Status
and Discard Timer SERR# Enable bit in pci_subr.c.
- PCI_BRIDGE_PREFETCHBASE32_REG and PCI_BRIDGE_PREFETCHLIMIT32_REG are
"upper" 32bit registers, rename to *UP32_REG to avoid confusion.
- Use macro.
 1.41 19-Oct-2016  nonaka branches: 1.41.16;
Added MSI/MSI-X and interrupt_distribute(9) support for powerpc.
 1.40 01-Jul-2011  dyoung branches: 1.40.12; 1.40.30; 1.40.34;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.39 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.38 20-Dec-2010  matt branches: 1.38.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.37 14-Mar-2009  dsl branches: 1.37.4;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.36 25-Dec-2007  macallan branches: 1.36.10; 1.36.18; 1.36.24;
get rid of macppc's private pci_bus_dma_tag
 1.35 17-Oct-2007  garbled branches: 1.35.2; 1.35.4; 1.35.8;
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.34 09-Feb-2007  macallan branches: 1.34.6; 1.34.14; 1.34.22; 1.34.24; 1.34.26; 1.34.28;
- don't call load-ata on PB3400 and similar machines - it occasionally
freaks out when a cardbus device is present.
enable with options PB3400_CARDBUS_HACK
- add a hack to make the DEC 21140 found on UMAX E100 cards work, for some
reason OF doesn't see it
enable with options UMAX_E100_HACK
 1.33 03-Jan-2007  macallan if we encounter a cardbus bridge with bogus bus number try to get OF to
assign it a bus number so cardbus* will attach properly.
Should fix PR26508
 1.32 27-Sep-2006  macallan branches: 1.32.2;
on PowerBook 3400c and similar machines redirect the built-in tlp's IRQ to
60 if we find a 2nd OHare - OF claims 27 which is wrong and keeps the tlp
from working.
Tested on a PB3400c, should work on 2400 and original G3 as well.
 1.31 24-Sep-2006  briggs Dump the pin and line information only if DEBUG is defined.
 1.30 05-Aug-2006  sanjayl branches: 1.30.4; 1.30.6;
1st cut of Powermac G5 support (uses bridge mode).
 1.29 11-Dec-2005  christos branches: 1.29.4; 1.29.8;
merge ktrace-lwp.
 1.28 03-Jun-2005  matt branches: 1.28.2;
Cleanup new warnings...
 1.27 07-Dec-2004  briggs Bring in some code to deal with devices in the lower slots of a UMAX S900
and perhaps PowerMac 9500. These slots sit behind a PCI-PCI bridge, and
devices in those slots inherit the PCI-PCI bridge interrupt. Derived from
a patch submitted in PR port-macppc/26341 by Michael Loreny, who was also
diligent in prodding me to look at it.
 1.26 07-Dec-2004  briggs OpenFirmware on machines with the "Grackle" bridge assign an 'AAPL,interrupts'
property instead of 'interrupt-map' and 'interrupt-map-mask' properties.
Adjust for this by checking for the latter, and if they're not present
(and the parent isn't 'pci-bridge'), then look for 'AAPL,interrupts'.

Problem analyzed and patched by Tim Kelly on port-macppc. I modified the
patch to move the fallback into find_node_intr(), tweaking some previously-
disabled code.
 1.25 08-Apr-2004  matt Deal with OFW trees that have interrupt nodes without an #address-cells
property. Treat them as if they had such a property but its value was 0.
 1.24 24-Feb-2004  wiz branches: 1.24.2;
Spell interrupt with two rs. From Peter Postma.
 1.23 20-Aug-2003  matt Relax things so that OFW implementations that don't conform to the OFW PCI
bindings will work.
 1.22 18-Aug-2003  matt Properly walk the OF tree to map a PCI node's interrupt property into the
proper settings for the interrupt-controller.
 1.21 15-Jul-2003  lukem __KERNEL_RCSID()
 1.20 27-Sep-2002  provos branches: 1.20.6;
remove trailing \n in panic(). approved perry.
 1.19 22-Aug-2002  wrstuden Enable memory for cards with 64-bit memory mappings in addition to
32-bit memory mappings. Makes Intel GigE card work in my Beige G3.

Patch from thorpej
 1.18 22-Jul-2001  wiz branches: 1.18.6; 1.18.14; 1.18.16;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.17 19-Jun-2001  simonb branches: 1.17.2;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.16 06-Jun-2001  matt Changes new pmap, common param.h, vmparam.h, and moved includes.
 1.15 09-Jan-2001  tsubai branches: 1.15.2;
Configure PCI_INTERRUPT_LINE on the other side of the pci-bridge on OF3 too.
 1.14 28-Dec-2000  sommerfeld Change pci_intr_map to get interrupt source information from a "struct
pci_attach_args *" instead of from four separate parameters which in
all cases were extracted from the same "struct pci_attach_args".

This both simplifies the driver api, and allows for alternate PCI
interrupt mapping schemes, such as one using the tables described in
the Intel Multiprocessor Spec which describe interrupt wirings for
devices behind pci-pci bridges based on the device's location rather
the bridge's location.

Tested on alpha and i386; welcome to 1.5Q
 1.13 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.12 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.11 04-Jun-2000  cgd Implement the more flexiable `evcnt' interface as discussed (briefly) on
tech-kern and now documented in evcnt(9).
 1.10 03-Feb-2000  tsubai branches: 1.10.2;
* Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.9 05-May-1999  thorpej branches: 1.9.2;
- Add come comments.
- Do a little cleanup.
- Protect the entirety of pci_conf_{read,write}() with splhigh()/splx().
 1.8 15-Mar-1999  tsubai branches: 1.8.2;
Check the accessibility before reading from configuration space.
 1.7 04-Feb-1999  tsubai Add PCI-PCI bridge support for Bandit.
 1.6 21-Oct-1998  tsubai Use PCI function number correctly.
 1.5 15-Aug-1998  mycroft Make copyright notices with my name consistent.
 1.4 17-Jul-1998  tsubai Fix typo.
 1.3 17-Jul-1998  tsubai Change pcitag_t format for bandit.
 1.2 13-Jul-1998  tsubai Add support for Motorola MPC106.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.8.2.1 06-May-1999  perry branches: 1.8.2.1.2;
pullup 1.8->1.9 (thorpej)
 1.8.2.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.9.2.3 18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.9.2.2 05-Jan-2001  bouyer Sync with HEAD
 1.9.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.10.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.15.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.17.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.17.2.2 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.17.2.1 03-Aug-2001  lukem update to -current
 1.18.16.1 24-Nov-2002  tron Pull up revision 1.19 (requested by thorpej in ticket #717):
Enable memory for cards with 64-bit memory mappings in addition to
32-bit memory mappings. Makes Intel GigE card work in my Beige G3.
Patch from thorpej
 1.18.14.1 31-Aug-2002  gehenna catch up with -current.
 1.18.6.3 18-Oct-2002  nathanw Catch up to -current.
 1.18.6.2 27-Aug-2002  nathanw Catch up to -current.
 1.18.6.1 22-Jul-2001  nathanw file pci_machdep.c was added on branch nathanw_sa on 2002-08-27 23:44:47 +0000
 1.20.6.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.20.6.4 18-Dec-2004  skrll Sync with HEAD.
 1.20.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.20.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.20.6.1 03-Aug-2004  skrll Sync with HEAD
 1.24.2.2 24-Jul-2005  tron Pull up revision 1.26 (requested by briggs in ticket #1329):
OpenFirmware on machines with the "Grackle" bridge assign an 'AAPL,interrupts'
property instead of 'interrupt-map' and 'interrupt-map-mask' properties.
Adjust for this by checking for the latter, and if they're not present
(and the parent isn't 'pci-bridge'), then look for 'AAPL,interrupts'.
Problem analyzed and patched by Tim Kelly on port-macppc. I modified the
patch to move the fallback into find_node_intr(), tweaking some previously-
disabled code.
 1.24.2.1 09-Apr-2004  jmc branches: 1.24.2.1.2;
Pullup rev 1.25 (requested by matt in ticket #102)

Deal with OFW trees that have interrupt nodes without an #address-cells
property. Treat them as if they had such a property but its value was 0.
 1.24.2.1.2.2 16-May-2005  riz Pull up revision 1.27 (requested by macallan in ticket #1521):
Bring in some code to deal with devices in the lower slots of a UMAX S900
and perhaps PowerMac 9500. These slots sit behind a PCI-PCI bridge, and
devices in those slots inherit the PCI-PCI bridge interrupt. Derived from
a patch submitted in PR port-macppc/26341 by Michael Loreny, who was also
diligent in prodding me to look at it.
 1.24.2.1.2.1 08-May-2005  snj Pull up revision 1.26 (requested by briggs in ticket #1330):
OpenFirmware on machines with the "Grackle" bridge assign an 'AAPL,interrupts'
property instead of 'interrupt-map' and 'interrupt-map-mask' properties.
Adjust for this by checking for the latter, and if they're not present
(and the parent isn't 'pci-bridge'), then look for 'AAPL,interrupts'.
Problem analyzed and patched by Tim Kelly on port-macppc. I modified the
patch to move the fallback into find_node_intr(), tweaking some previously-
disabled code.
 1.28.2.4 21-Jan-2008  yamt sync with head
 1.28.2.3 27-Oct-2007  yamt sync with head.
 1.28.2.2 26-Feb-2007  yamt sync with head.
 1.28.2.1 30-Dec-2006  yamt sync with head.
 1.29.8.1 11-Aug-2006  yamt sync with head
 1.29.4.1 09-Sep-2006  rpaulo sync with head
 1.30.6.1 22-Oct-2006  yamt sync with head
 1.30.4.2 12-Jan-2007  ad Sync with head.
 1.30.4.1 18-Nov-2006  ad Sync with head.
 1.32.2.1 04-Mar-2007  bouyer Pull up following revision(s) (requested by macallan in ticket #471):
sys/arch/macppc/pci/pci_machdep.c: revision 1.33
if we encounter a cardbus bridge with bogus bus number try to get OF to
assign it a bus number so cardbus* will attach properly.
Should fix PR26508
 1.34.28.1 25-Oct-2007  bouyer Sync with HEAD.
 1.34.26.1 18-Oct-2007  yamt sync with head.
 1.34.24.2 09-Jan-2008  matt sync with HEAD
 1.34.24.1 06-Nov-2007  matt sync with HEAD
 1.34.22.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.34.14.5 18-Jun-2007  macallan also initialize _dma_bus_mem_to_phys and _dma_phys_to_bus_mem methods
 1.34.14.4 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.34.14.3 05-Jun-2007  matt Make macppc use the common powerpc bus_dma.c
 1.34.14.2 06-May-2007  macallan ansify, sprinkle static
 1.34.14.1 06-May-2007  macallan switch macppc over to generic PCI code from arch/powerpc/pci
 1.34.6.1 23-Oct-2007  ad Sync with head.
 1.35.8.1 02-Jan-2008  bouyer Sync with HEAD
 1.35.4.1 26-Dec-2007  ad Sync with head.
 1.35.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.36.24.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.36.18.1 28-Apr-2009  skrll Sync with HEAD.
 1.36.10.1 04-May-2009  yamt sync with head.
 1.37.4.1 05-Mar-2011  rmind sync with head
 1.38.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.40.34.1 04-Nov-2016  pgoyette Sync with HEAD
 1.40.30.1 05-Dec-2016  skrll Sync with HEAD
 1.40.12.1 03-Dec-2017  jdolecek update from HEAD
 1.41.16.1 10-Jun-2019  christos Sync with HEAD
 1.42.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.6 19-Mar-1999  cgd Moved to arch/macppc/include/pci_machdep.h,v
 1.5 15-Oct-1998  tsubai Set PCI bus number correctly.
 1.4 15-Aug-1998  mycroft Make copyright notices with my name consistent.
 1.3 17-Jul-1998  tsubai Add bus_dma support.
 1.2 13-Jul-1998  tsubai Add support for Motorola MPC106.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.4 08-Jun-2001  simonb For ports that wire up pciide in compatibility mode, have
them define __HAVE_PCIIDE_MACHDEP_COMPAT_INTR_ESTABLISH
in pci_machdep.h and pciide_map_compat_intr() only calls
pciide_machdep_compat_intr_establish() if that preprocessor
define exists.

Ports that don't need to do this no longer need to supply a
dummy function.
 1.3 15-Nov-1999  wrstuden We need pciidereg.h to compile now.
 1.2 22-Apr-1999  wrstuden branches: 1.2.2; 1.2.6; 1.2.8; 1.2.14;
Fix compilation errors.
 1.1 16-Apr-1999  thorpej Add a stub pciide_machdep_compat_intr_establish() for Power Macintosh.
Power Macintoshes with PCI IDE (e.g. the new Blue G3) don't have them
wired to compatibility mode, so just return a NULL cookie. We still have
to have this routine for the PCI IDE driver to link.
 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.2.6.2 30-Nov-1999  itojun bring in latest KAME (as of 19991130, KAME/NetBSD141) into kame branch
just for reference purposes.
This commit includes 1.4 -> 1.4.1 sync for kame branch.

The branch does not compile at all (due to the lack of ALTQ and some other
source code). Please do not try to modify the branch, this is just for
referenre purposes.

synchronization to latest KAME will take place on HEAD branch soon.
 1.2.6.1 28-Jun-1999  itojun KAME/NetBSD 1.4 SNAP kit, dated 19990628.

NOTE: this branch (kame) is used just for refernce. this may not compile
due to multiple reasons.
 1.2.2.2 08-Jul-2000  he Apply patch (requested by he):
Include pciidereg.h so that this file compiles again.
 1.2.2.1 22-Apr-1999  he file pciide_machdep.c was added on branch netbsd-1-4 on 2000-07-08 19:00:54 +0000
 1.12 21-Jan-2022  thorpej Don't bother with devhandle_from_of() if we're just forwarding along
our own node; use device_handle(self) instead.
 1.11 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.10 24-Apr-2021  thorpej branches: 1.10.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.9 13-Apr-2018  macallan branches: 1.9.16;
track bus-range for every bus and restrict config space accesses to that
range. Now pcictl pci* list no longer crashes the kernel.
 1.8 02-Oct-2015  msaitoh branches: 1.8.16;
PCI Extended Configuration stuff written by nonaka@:
- Add PCI Extended Configuration Space support into x86.
- Check register offset of pci_conf_read() in MD part. It returns (pcireg_t)-1
if it isn't accessible.
- Decode Extended Capability in PCI Extended Configuration Space.
Currently the following extended capabilities are decoded:
- Advanced Error Reporting
- Virtual Channel
- Device Serial Number
- Power Budgeting
- Root Complex Link Declaration
- Root Complex Event Collector Association
- Access Control Services
- Alternative Routing-ID Interpretation
- Address Translation Services
- Single Root IO Virtualization
- Page Request
- TPH Requester
- Latency Tolerance Reporting
- Secondary PCI Express
- Process Address Space ID
- LN Requester
- L1 PM Substates
The following extended capabilities are not decoded yet:
- Root Complex Internal Link Control
- Multi-Function Virtual Channel
- RCRB Header
- Vendor Unique
- Configuration Access Correction
- Multiple Root IO Virtualization
- Multicast
- Resizable BAR
- Dynamic Power Allocation
- Protocol Multiplexing
- Downstream Port Containment
- Precision Time Management
- M-PCIe
- Function Reading Status Queueing
- Readiness Time Reporting
- Designated Vendor-Specific
 1.7 30-Apr-2013  macallan branches: 1.7.12;
zero sc_iot and sc_memt before using them
from Phileas Fogg
while there, set sc_dev properly
 1.6 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.5 30-Jun-2011  matt branches: 1.5.2; 1.5.12;
Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.4 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.3 17-May-2011  dyoung branches: 1.3.2;
PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED changed their functional
role in NetBSD (drivers are no longer supposed to write these to
pa_flags) without changing name. Correct that.

Rename PCI_FLAGS_IO_ENABLED to PCI_FLAGS_IO_OKAY and
PCI_FLAGS_MEM_ENABLED to PCI_FLAGS_MEM_OKAY, thus making their names
consistent with the other PCI flags and poisoning 3rd-party driver
sources that use the flags in the old bad way.

This patch produces no binary changes in this set of PCI kernels when
they are compiled w/o 'options DIAGNOSTIC' and w/ -V MKREPRO=yes:

algor P4032 P5064 P6032
alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE
evbarm-el GUMSTIX HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321
evbarm-el IXDP425 IXM1200 KUROBOX_PRO
evbarm-el LUBBOCK MARVELL_NAS NAPPI NSLU2 SHEEVAPLUG SMDK2800 TEAMASA_NPWR
evbarm-el TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
evbppc OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
iyonix GENERIC
landisk GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sbmips-el GENERIC
sgimips GENERIC32_IP2x GENERIC32_IP3x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC
 1.2 17-Oct-2007  garbled branches: 1.2.42; 1.2.48;
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.1 05-Aug-2006  sanjayl branches: 1.1.4; 1.1.8; 1.1.14; 1.1.20; 1.1.28; 1.1.38; 1.1.40; 1.1.42; 1.1.44;
1st cut of Powermac G5 support (uses bridge mode).
 1.1.44.1 25-Oct-2007  bouyer Sync with HEAD.
 1.1.42.1 18-Oct-2007  yamt sync with head.
 1.1.40.1 06-Nov-2007  matt sync with HEAD
 1.1.38.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.1.28.3 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.1.28.2 06-May-2007  macallan switch macppc over to generic PCI code from arch/powerpc/pci
 1.1.28.1 05-May-2007  macallan ansify, sprinkle static. No functional change.
 1.1.20.1 23-Oct-2007  ad Sync with head.
 1.1.14.3 27-Oct-2007  yamt sync with head.
 1.1.14.2 30-Dec-2006  yamt sync with head.
 1.1.14.1 05-Aug-2006  yamt file u3.c was added on branch yamt-lazymbuf on 2006-12-30 20:46:30 +0000
 1.1.8.2 09-Sep-2006  rpaulo sync with head
 1.1.8.1 05-Aug-2006  rpaulo file u3.c was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:41:14 +0000
 1.1.4.2 11-Aug-2006  yamt sync with head
 1.1.4.1 05-Aug-2006  yamt file u3.c was added on branch yamt-pdpolicy on 2006-08-11 15:42:14 +0000
 1.2.48.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.42.1 31-May-2011  rmind sync with head
 1.3.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.5.12.3 03-Dec-2017  jdolecek update from HEAD
 1.5.12.2 23-Jun-2013  tls resync from head
 1.5.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.5.2.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.5.2.1 30-Oct-2012  yamt sync with head
 1.7.12.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.8.16.1 16-Apr-2018  pgoyette Sync with HEAD, resolve some conflicts
 1.9.16.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.9.16.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.10.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.23 21-Jan-2022  thorpej Don't bother with devhandle_from_of() if we're just forwarding along
our own node; use device_handle(self) instead.
 1.22 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.21 24-Apr-2021  thorpej branches: 1.21.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.20 22-Mar-2018  macallan branches: 1.20.16;
more oea_mapiodev()
 1.19 16-Mar-2018  macallan special-case bus 0, now we find AGP devices on G5
 1.18 02-Oct-2015  msaitoh branches: 1.18.16;
PCI Extended Configuration stuff written by nonaka@:
- Add PCI Extended Configuration Space support into x86.
- Check register offset of pci_conf_read() in MD part. It returns (pcireg_t)-1
if it isn't accessible.
- Decode Extended Capability in PCI Extended Configuration Space.
Currently the following extended capabilities are decoded:
- Advanced Error Reporting
- Virtual Channel
- Device Serial Number
- Power Budgeting
- Root Complex Link Declaration
- Root Complex Event Collector Association
- Access Control Services
- Alternative Routing-ID Interpretation
- Address Translation Services
- Single Root IO Virtualization
- Page Request
- TPH Requester
- Latency Tolerance Reporting
- Secondary PCI Express
- Process Address Space ID
- LN Requester
- L1 PM Substates
The following extended capabilities are not decoded yet:
- Root Complex Internal Link Control
- Multi-Function Virtual Channel
- RCRB Header
- Vendor Unique
- Configuration Access Correction
- Multiple Root IO Virtualization
- Multicast
- Resizable BAR
- Dynamic Power Allocation
- Protocol Multiplexing
- Downstream Port Containment
- Precision Time Management
- M-PCIe
- Function Reading Status Queueing
- Readiness Time Reporting
- Designated Vendor-Specific
 1.17 01-May-2013  macallan branches: 1.17.12;
add G5 support
from Phileas Fogg
 1.16 26-Oct-2011  macallan branches: 1.16.2; 1.16.12;
actually split device and softc
 1.15 30-Jun-2011  matt Modify mapiodev to take a third argument indicating whether the space
should be prefetchable (true) or not (false).
 1.14 18-Jun-2011  matt struct device * -> device_t
struct cfdata * -> cfdata_t
use device accessors, use device_private.
some softc/device_t splits (macppc needs a bunch more)
aprint*_dev used considerably more
 1.13 17-May-2011  dyoung branches: 1.13.2;
PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED changed their functional
role in NetBSD (drivers are no longer supposed to write these to
pa_flags) without changing name. Correct that.

Rename PCI_FLAGS_IO_ENABLED to PCI_FLAGS_IO_OKAY and
PCI_FLAGS_MEM_ENABLED to PCI_FLAGS_MEM_OKAY, thus making their names
consistent with the other PCI flags and poisoning 3rd-party driver
sources that use the flags in the old bad way.

This patch produces no binary changes in this set of PCI kernels when
they are compiled w/o 'options DIAGNOSTIC' and w/ -V MKREPRO=yes:

algor P4032 P5064 P6032
alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE
evbarm-el GUMSTIX HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321
evbarm-el IXDP425 IXM1200 KUROBOX_PRO
evbarm-el LUBBOCK MARVELL_NAS NAPPI NSLU2 SHEEVAPLUG SMDK2800 TEAMASA_NPWR
evbarm-el TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
evbppc OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
iyonix GENERIC
landisk GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sbmips-el GENERIC
sgimips GENERIC32_IP2x GENERIC32_IP3x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC
 1.12 17-Oct-2007  garbled branches: 1.12.42; 1.12.48;
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.11 11-Dec-2005  christos branches: 1.11.30; 1.11.38; 1.11.48; 1.11.50; 1.11.52; 1.11.54;
merge ktrace-lwp.
 1.10 30-Aug-2004  drochner branches: 1.10.12;
Phase out the use of a string as first "attach args" member to control
which bustype should be attached with a specific call to config_found()
(from a "mainbus" or a bus bridge).
Do it for isa/eisa/mca and pci/agp for now. These buses all attach to
an mi interface attribute "isabus", "eisabus" etc., and the autoconf
framework now allows to specify an interface attribute on config_found()
and config_search(), which limits the search of matching config data
to these which attach to that specific attribute.
So we basically have to call config_found_ia(..., "foobus", ...) where
such a bus is attached.
As a consequence, where a "mainbus" or alike also attaches other
devices (eg CPUs) which do not attach to a specific attribute yet,
we need at least pass an attribute name (different from "foobus") so
that the foo bus is not found at these places. This made some minor
changes necessary which are not obviously related to the mentioned buses.
 1.9 15-Jul-2003  lukem __KERNEL_RCSID()
 1.8 15-Jun-2003  fvdl branches: 1.8.2;
Handle 64bit DMA addresses on PCI for platforms that can (currently only
enabled on amd64). Add a dmat64 field to various PCI attach structures,
and pass it down where needed. Implement a simple new function called
pci_dma64_available(pa) to test if 64bit DMA addresses may be used.
This returns 1 iff _PCI_HAVE_DMA64 is defined in <machine/pci_machdep.h>,
and there is more than 4G of memory.
 1.7 01-Jan-2003  thorpej 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 16-May-2002  thorpej branches: 1.4.2;
* Add "pcitag_t *pba_bridgetag" to pci_attach_args. This is set to
NULL for root PCI busses. For busses behind a bridge, it points to
a persistent copy of the bridge's pcitag_t. This can be very useful
for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
uses OFW device nodes to enumerate the bus. When a PCI bus that is
behind a bridge is attached, pci_attach_hook() allocates a new PCI
chipset tag for the new bus and sets it's "curnode" to the OFW node
of the bridge. This is used as a starting point when enumerating
that bus. Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
 1.3 14-Sep-2001  nathanw branches: 1.3.4;
Return ~0 for all config space reads on devices < 11 on the primary bus,
rather than returning ~0 for PCI_ID_REG and panicing otherwise.
 1.2 22-Jul-2001  wiz branches: 1.2.2;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.1 03-Feb-2000  tsubai branches: 1.1.6; 1.1.10;
* Split bandit and grackle.
* Add UniNorth support.

Now pcibus is attached like:
bandit0 at mainbus0
pci0 at bandit0 bus 0
...
 1.1.10.4 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.10.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.1.10.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.10.1 03-Aug-2001  lukem update to -current
 1.1.6.2 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.1.6.1 03-Feb-2000  bouyer file uninorth.c was added on branch thorpej_scsipi on 2000-11-20 22:35:42 +0000
 1.2.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.3.4.4 03-Jan-2003  thorpej Sync with HEAD.
 1.3.4.3 18-Oct-2002  nathanw Catch up to -current.
 1.3.4.2 20-Jun-2002  nathanw Catch up to -current.
 1.3.4.1 14-Sep-2001  nathanw file uninorth.c was added on branch nathanw_sa on 2002-06-20 03:39:39 +0000
 1.4.2.2 16-May-2002  thorpej * Add "pcitag_t *pba_bridgetag" to pci_attach_args. This is set to
NULL for root PCI busses. For busses behind a bridge, it points to
a persistent copy of the bridge's pcitag_t. This can be very useful
for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
uses OFW device nodes to enumerate the bus. When a PCI bus that is
behind a bridge is attached, pci_attach_hook() allocates a new PCI
chipset tag for the new bus and sets it's "curnode" to the OFW node
of the bridge. This is used as a starting point when enumerating
that bus. Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
 1.4.2.1 16-May-2002  thorpej file uninorth.c was added on branch gehenna-devsw on 2002-05-16 01:01:39 +0000
 1.8.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.8.2.2 03-Sep-2004  skrll Sync with HEAD
 1.8.2.1 03-Aug-2004  skrll Sync with HEAD
 1.10.12.1 27-Oct-2007  yamt sync with head.
 1.11.54.1 25-Oct-2007  bouyer Sync with HEAD.
 1.11.52.1 18-Oct-2007  yamt sync with head.
 1.11.50.1 06-Nov-2007  matt sync with HEAD
 1.11.48.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.11.38.3 07-Jun-2007  garbled Convert macppc to powerpc bus_space. Lots of work here from Matt Thomas,
as well as the common ofwoea code from myself. Compile tested only,
still probably needs some fine tuning.

Also in this commit:
Convert macppc to new shared ofwoea routines.
Lots of KNF.
 1.11.38.2 06-May-2007  macallan switch macppc over to generic PCI code from arch/powerpc/pci
 1.11.38.1 05-May-2007  macallan ansify, sprinkle static. No functional change.
 1.11.30.1 23-Oct-2007  ad Sync with head.
 1.12.48.1 06-Jun-2011  jruoho Sync with HEAD.
 1.12.42.1 31-May-2011  rmind sync with head
 1.13.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.16.12.2 03-Dec-2017  jdolecek update from HEAD
 1.16.12.1 23-Jun-2013  tls resync from head
 1.16.2.1 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.17.12.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.18.16.2 30-Mar-2018  pgoyette Resolve conflicts between branch and HEAD
 1.18.16.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.20.16.2 04-Apr-2021  thorpej Associate the OpenFirmware phandle associated with a found device (including
PCI bus instances) by using CFARG_DEVHANDLE.
 1.20.16.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.21.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.8 15-Sep-2024  tsutsui Move macppc bootable installcd stuff to sys/arch/macppc/stand dirs.

- move installboot (for CD ISO) and mkboothfs (for mkhybrid(8)) tools to
sys/arch/macppc/stand
- also build mkboothfs as ${TOOL_MACPPCMKBOOTHFS} in src/tools
- explicitly generate boothfs file (for mkhybrid(8)) in
sys/arch/macppc/stand/boothfs and install it into /usr/mdec
- use installed /usr/mdec/boothfs to create macppc bootable iso
- move list files for mkhybrid(8) hfs options to etc/etc.macppc
 1.7 11-Dec-2005  christos branches: 1.7.202;
merge ktrace-lwp.
 1.6 13-Mar-2004  dyoung Add a 'tags' target to macppc.
 1.5 11-Dec-2003  matt Convert fixcoff into a true host tool by making it under tools.
 1.4 18-May-2002  lukem branches: 1.4.8;
nuke MD installboot, now that it doesn't understand the macppc
bootblocks anymore and /usr/sbin/installboot does
 1.3 01-Jun-2000  matt branches: 1.3.6; 1.3.10; 1.3.18;
Add fixcoff so an obj dir can be created
 1.2 12-Jun-1998  tsubai branches: 1.2.8; 1.2.14; 1.2.22;
Add primary boot (bootxx) and installboot command.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.22.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.2.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.8.1 13-Jul-2000  he Apply patch (requested by he):
Enhance the ``make release'' process:
o Build and install the distrib and boot bits
 1.3.18.1 30-May-2002  gehenna Catch up with -current.
 1.3.10.1 20-Jun-2002  nathanw Catch up to -current.
 1.3.6.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.4.8.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.8.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.8.1 03-Aug-2004  skrll Sync with HEAD
 1.7.202.1 02-Aug-2025  perseant Sync with HEAD
 1.9 03-Jun-2023  lukem adapt to ${CC_WNO_ADDRESS_OF_PACKED_MEMBER}

Simplify CWARNFLAGS to use ${CC_WNO_ADDRESS_OF_PACKED_MEMBER}
which works for both clang and gcc, and remove compiler-specific
equivalents.
 1.8 03-Jun-2023  lukem bsd.own.mk: rename to CC_WNO_ADDRESS_OF_PACKED_MEMBER

Provide a single variable
CC_WNO_ADDRESS_OF_PACKED_MEMBER
with options for both clang and gcc, to replace
CLANG_NO_ADDR_OF_PACKED_MEMBER
CC_NO_ADDR_OF_PACKED_MEMBER
GCC_NO_ADDR_OF_PACKED_MEMBER

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.7 12-Apr-2021  mrg remove shadowed (common) declarations of various libsa variables
from various boot programs. for macppc and zaurus, avoid building
with -fcommon any more.
 1.6 06-Sep-2020  mrg branches: 1.6.4;
add support for new GCC 9 warnings that may be too much to fix
right now. new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree. mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it. (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.) clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
 1.5 21-Apr-2020  joerg Use -Wno-error=address-of-packed-member for a number of more boot
loaders.
 1.4 20-Apr-2017  uwe branches: 1.4.22;
Quash .eh_frame unwind tables in boot code.
 1.3 07-Feb-2000  tsubai branches: 1.3.178; 1.3.198; 1.3.202; 1.3.206;
Move CFLAGS and CPPFLAGS to {bootxx,ofwboot}/Makefile to compile installboot
without -D_STANDALONE.
 1.2 22-May-1998  drochner branches: 1.2.8; 1.2.14;
STANDALONE->_STANDALONE (cpp definition)
closes PR kern/5481 (Erik Bertelsen <erik@q610.ebe.uni-c.dk>)
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.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.8.1 13-Jul-2000  he Apply patch (requested by he):
Enhance the ``make release'' process:
o Build and install the distrib and boot bits
 1.3.206.1 21-Apr-2017  bouyer Sync with HEAD
 1.3.202.1 26-Apr-2017  pgoyette Sync with HEAD
 1.3.198.1 28-Aug-2017  skrll Sync with HEAD
 1.3.178.1 03-Dec-2017  jdolecek update from HEAD
 1.4.22.1 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.6.4.1 17-Apr-2021  thorpej Sync with HEAD.
 1.2 21-Jul-2000  jdolecek switch to sys/conf/newvers_stand.sh for generation of version file
slighly adjust the Makefile WRT vers.c and SRCS & CLEANFILES
 1.1 15-May-1998  tsubai branches: 1.1.14;
Initial import of macppc port.
 1.1.14.1 20-Nov-2000  bouyer Remove files that are no longer on the trunck
 1.1 15-Sep-2024  tsutsui Move macppc bootable installcd stuff to sys/arch/macppc/stand dirs.

- move installboot (for CD ISO) and mkboothfs (for mkhybrid(8)) tools to
sys/arch/macppc/stand
- also build mkboothfs as ${TOOL_MACPPCMKBOOTHFS} in src/tools
- explicitly generate boothfs file (for mkhybrid(8)) in
sys/arch/macppc/stand/boothfs and install it into /usr/mdec
- use installed /usr/mdec/boothfs to create macppc bootable iso
- move list files for mkhybrid(8) hfs options to etc/etc.macppc
 1.21 27-Jan-2019  dholland fix duplicated chunk from merge
 1.20 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.19 30-Dec-2018  christos no pie/sanitizers for boot code.
 1.18 02-Mar-2018  sevan branches: 1.18.2; 1.18.4;
Do not pass libgcc.a to linker as it breaks build with MKGCC=no e.g HEAD-LLVM.
It doesn't appear to be required for the stock GCC build either, having been
able to build a release without it.
 1.17 15-Jul-2017  christos branches: 1.17.2;
Avoid missing _restgpr_30_x
 1.16 20-Apr-2017  uwe Quash .eh_frame unwind tables in boot code.
 1.15 10-Aug-2014  joerg branches: 1.15.4; 1.15.8; 1.15.12;
Put GCC/GAS specific options under ACTIVE_CC == "gcc".
 1.14 08-Aug-2014  joerg Don't set -mmultiple or -mno-string for PowerPC, the difference is too
small to really matter and it sometimes even increases the size.
 1.13 12-Jan-2014  tsutsui branches: 1.13.2;
Add empty LIBCRTI= as LIBCRT0 to build sa programs without installed DESTDIR.

XXX: probabry we should have bsd.saprog.mk or something.
 1.12 15-Mar-2009  tsutsui branches: 1.12.12; 1.12.22; 1.12.26;
- create symlinks for MD system headers by <bsd.klinks.mk>
- suppress warnings on build without DESTDIR
 1.11 11-Dec-2005  christos branches: 1.11.78; 1.11.86; 1.11.92;
merge ktrace-lwp.
 1.10 09-Apr-2004  matt When linking, use ${_MKTARGET_LINK} so that MAKEVERBOSE=1 looks right.
 1.9 28-Feb-2003  matt branches: 1.9.2;
Make this play with gcc 3.3. Add -ffreestanding. Cleanup bootxx.
 1.8 03-Feb-2003  matt Add -DPPC_OEA to CPPFLAGS
 1.7 15-May-2002  lukem convert to using shared_bbinfo from <sys/bootblock.h>, and install as an
"${OBJCOPY} -O binary ..." program (rather than as ELF)
 1.6 13-Apr-2002  tsutsui Use "-Os -mmultiple".
 1.5 12-Dec-2001  tv MKfoo=no -> NOfoo
 1.4 07-Feb-2000  tsubai branches: 1.4.8; 1.4.12;
Move CFLAGS and CPPFLAGS to {bootxx,ofwboot}/Makefile to compile installboot
without -D_STANDALONE.
 1.3 06-May-1999  wrstuden branches: 1.3.2;
MAke this cross-tools happy.
 1.2 13-Feb-1999  lukem branches: 1.2.4;
convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.
 1.1 12-Jun-1998  tsubai Add primary boot (bootxx) and installboot command.
 1.2.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.3.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.4.12.3 20-Jun-2002  nathanw Catch up to -current.
 1.4.12.2 17-Apr-2002  nathanw Catch up to -current.
 1.4.12.1 08-Jan-2002  nathanw Catch up to -current.
 1.4.8.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.4.8.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.9.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.9.2.1 03-Aug-2004  skrll Sync with HEAD
 1.11.92.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.11.86.1 28-Apr-2009  skrll Sync with HEAD.
 1.11.78.1 04-May-2009  yamt sync with head.
 1.12.26.1 18-May-2014  rmind sync with head
 1.12.22.2 03-Dec-2017  jdolecek update from HEAD
 1.12.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12.12.1 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.2.1 10-Aug-2014  tls Rebase.
 1.15.12.1 21-Apr-2017  bouyer Sync with HEAD
 1.15.8.1 26-Apr-2017  pgoyette Sync with HEAD
 1.15.4.1 28-Aug-2017  skrll Sync with HEAD
 1.17.2.2 15-Jul-2017  christos 2552540
 1.17.2.1 15-Jul-2017  christos file Makefile was added on branch perseant-stdc-iso10646 on 2017-07-15 23:26:47 +0000
 1.18.4.1 10-Jun-2019  christos Sync with HEAD
 1.18.2.1 18-Jan-2019  pgoyette Synch with HEAD
 1.21 23-Jan-2020  uwe Avoid warning about dcbf, icbi first argument.

as(1) is not quite happy when RA=0 argument to these instructions is
spelled as %r0 and emits a warning. Spell that argument as 0 to
placate it. Same object code is generated.
 1.20 28-Oct-2019  joerg branches: 1.20.2;
Mark local-only function as static to save space.
 1.19 12-Nov-2018  scole PR 51495/port-macppc

Allow ppc601 to boot off hard disk
 1.18 14-Mar-2009  dsl branches: 1.18.62; 1.18.64;
ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.17 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.16 24-Dec-2005  perry branches: 1.16.78; 1.16.86; 1.16.92;
bare asm -> __asm
 1.15 24-Dec-2005  perry Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.14 11-Dec-2005  christos merge ktrace-lwp.
 1.13 12-Mar-2004  wrstuden branches: 1.13.16;
Fix ofwboot to deal with larger kernels. Rather than loading at
0x6?0000, load at 0xe00000. This gives us room for around 13 MB of
kernel, as opposed to the current 5 MB (0x600000 - 0x100000).

No changes to load-base or real-base are needed due to this change,
though machines that needed specific OFW settings before (OF 1.x
and 2.x) this change still need those settings.

Partially revert revision 1.25 -> 1.26 of ofwboot/Makefile & friends.
We do not need to distinguish between where ofwboot and ofwboot.{elf,xcf}
load; they are both fine loading somewhere other than load-base.
 1.12 20-Oct-2003  matt Reorganize the way powerpc port install machine specific headers.
Use <powerpc/oea/bat.h> exclusively and remove <machine/bat.h> and
<powerpc/bat.h>. Remove unneeded <machine/cpufunc.h>. To insure
1:1 correspondence of <powerpc/FOO.h> to <machine/FOO.h> include
"../../powerpc/include/Makefile" in "arch/FOO/include/Makefile".
Incororpate <byte_swap.h> into <bswap.h> and then byte_swap.h
 1.11 28-Feb-2003  matt branches: 1.11.2;
Make this play with gcc 3.3. Add -ffreestanding. Cleanup bootxx.
 1.10 31-Oct-2002  matt Convert to register prefixes. Use ANSI string concatenation for
multiline asm strings.
 1.9 18-May-2002  lukem minor cosmetic tweaks:
- put \r\n before OF_open message
- use '0' + i % 10 instead of 'A' + i to print the read block number
 1.8 17-May-2002  lukem Fixes from Bill Studenmund and Allen Briggs:
- setup a 32KB (+32byte) stack, instead of 4KB stack
- cache flush: use _start instead of 0x4000, and flush 2k instead of 1k

Features (by me):
- implement:
OF_write() (and grab "stdout" from "/chosen")
putstrn(s,n) using OF_write(); write string s of n bytes long
putstr(s); write fixed-sized string s
putc(c); write char c
- add some useful messages which output the status of loading the
stage 2 bootstrap (which is usually ofwboot)

This code now works on Bill's Beige G3!
 1.7 16-May-2002  wrstuden Adjust how we set up our stack. According to the ABI, we store the
return pc address at (r1). So don't initialize r1 to be outside our
stack area. Scooted it in 16 bytes to help alignment.
 1.6 15-May-2002  lukem branches: 1.6.2;
convert to using shared_bbinfo from <sys/bootblock.h>, and install as an
"${OBJCOPY} -O binary ..." program (rather than as ELF)
 1.5 22-Dec-1999  thorpej branches: 1.5.8; 1.5.12;
Update for BAT{U,L}() changes.
 1.4 13-Jul-1998  tsubai branches: 1.4.14;
* Use "boot-device" if "bootpath" is not set.
* Reduce code size.
 1.3 02-Jul-1998  tsubai Reduce flushcache'd area.
 1.2 26-Jun-1998  tsubai Change load address of ofwboot for large (md root) kernel.
 1.1 12-Jun-1998  tsubai Add primary boot (bootxx) and installboot command.
 1.4.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.5.12.2 11-Nov-2002  nathanw Catch up to -current
 1.5.12.1 20-Jun-2002  nathanw Catch up to -current.
 1.5.8.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.6.2.1 30-May-2002  gehenna Catch up with -current.
 1.11.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.11.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.11.2.1 03-Aug-2004  skrll Sync with HEAD
 1.13.16.1 21-Jun-2006  yamt sync with head.
 1.16.92.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.16.86.1 28-Apr-2009  skrll Sync with HEAD.
 1.16.78.1 04-May-2009  yamt sync with head.
 1.18.64.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.18.64.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.18.64.1 10-Jun-2019  christos Sync with HEAD
 1.18.62.1 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.20.2.1 25-Jan-2020  ad Sync with head.
 1.10 01-May-2018  christos Create a new bsd.hostinit.mk file and put the build definitions for all host
programs there; make all Makefiles that use bsd.hostprog.mk include it.
Namely turn off MKREPRO and don't make lint, man pages, info files etc.
Remove the Makefile.inc files that contained these same settings, and
remove the settings from Makefile.host
 1.9 16-Sep-2006  uwe branches: 1.9.144;
Set NOMAN so that running make locally completes successfully.
 1.8 11-Dec-2005  christos branches: 1.8.20;
merge ktrace-lwp.
 1.7 13-Mar-2004  dyoung branches: 1.7.16;
Add a 'tags' target to macppc.
 1.6 11-Dec-2003  matt Convert fixcoff into a true host tool by making it under tools.
 1.5 10-Dec-2003  matt Make sure to pick up nbcompat definitions
 1.4 18-May-2003  lukem branches: 1.4.2;
missing rcsid
 1.3 12-Dec-2001  tv MKfoo=no -> NOfoo
 1.2 20-Oct-2001  jmc branches: 1.2.4;
Add nb_progname so this will compile on older NetBSD systems that will be
upgrading to -current via the new toolchain build process eventually.
 1.1 23-Nov-1999  wrstuden branches: 1.1.2; 1.1.8; 1.1.12;
Add fixcoff, a program to be used during a build to help make xcoff'
binaries from elf ones.
 1.1.12.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.8.2 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.1.8.1 23-Nov-1999  bouyer file Makefile was added on branch thorpej_scsipi on 2000-11-20 20:13:03 +0000
 1.1.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.2.4.2 08-Jan-2002  nathanw Catch up to -current.
 1.2.4.1 20-Oct-2001  nathanw file Makefile was added on branch nathanw_sa on 2002-01-08 00:26:13 +0000
 1.4.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.2.1 03-Aug-2004  skrll Sync with HEAD
 1.7.16.1 30-Dec-2006  yamt sync with head.
 1.8.20.1 18-Nov-2006  ad Sync with head.
 1.9.144.1 02-May-2018  pgoyette Synch with HEAD
 1.7 02-Oct-2017  uwe Add cvs id keyword.
 1.6 02-Oct-2017  uwe PR port-macppc/52564: revert previous and use a different workaround.

The .eh_frame has nothing to do with it, especially since it's not
generated now anyway. The problem is that

. = (. + 0x0FFF) & 0xFFFFF000;

now seems to cause binutils to pad the preceding section, and when
that happens to be .text the powermac ofw is unhappy for whatever
reason.

For now provide .pad section that absorbs the padding as a workaround.
The binutils problem still needs to be looked into.
 1.5 20-Sep-2017  christos PR/52564: Scole Mail: current ofwboot.xcf crashes because of .eh_frame* in .text
 1.4 20-Apr-2017  uwe branches: 1.4.4;
Merge .eh_frame_hdr and .eh_frame into .text
 1.3 23-Dec-2014  matt branches: 1.3.2; 1.3.4;
Make sure .data/.bss ends/starts on a 4 byte boundary.
 1.2 26-Dec-2003  aymeric branches: 1.2.150; 1.2.170;
merge any section that starts in ".rodata." into the text section.
This matches sections generated by newer versions of gcc to handle the sharing
of constant strings.
 1.1 23-Nov-1999  wrstuden branches: 1.1.2; 1.1.8; 1.1.32;
Add fixcoff, a program to be used during a build to help make xcoff'
binaries from elf ones.
 1.1.32.1 03-Aug-2004  skrll Sync with HEAD
 1.1.8.2 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.1.8.1 23-Nov-1999  bouyer file elf32_powerpc_merge.x was added on branch thorpej_scsipi on 2000-11-20 20:13:03 +0000
 1.1.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.2.170.2 28-Aug-2017  skrll Sync with HEAD
 1.2.170.1 06-Apr-2015  skrll Sync with HEAD
 1.2.150.1 03-Dec-2017  jdolecek update from HEAD
 1.3.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.3.2.1 26-Apr-2017  pgoyette Sync with HEAD
 1.4.4.1 09-Jun-2018  martin Pull up following revision(s) (requested by uwe in ticket #863):

sys/arch/macppc/stand/fixcoff/elf32_powerpc_merge.x: revision 1.6,1.7 (patch)

PR port-macppc/52564

. = (. + 0x0FFF) & 0xFFFFF000;

now seems to cause binutils to pad the preceding section, and when
that happens to be .text the powermac ofw is unhappy for whatever
reason.

For now provide .pad section that absorbs the padding as a workaround.
The binutils problem still needs to be looked into.
 1.13 29-Oct-2024  kre Portability fixes from Jan-Benedict Glaw

The args to help() and usage() need to be const char *
and main() should be declared as returning int.
 1.12 23-Jun-2021  cjep branches: 1.12.10; 1.12.16;
nbmacppc-fixcoff did not cross-build correctly on OpenBSD because
fixcoff.c had its own definition of htobe16. The toolchain
already handles this. Now builds on OpenBSD. Checked on NetBSD, Darwin &
Linux.

Discussed with uwe@
 1.11 14-Mar-2009  dsl branches: 1.11.80;
Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.10 07-Apr-2006  gdamore branches: 1.10.66; 1.10.74; 1.10.80;
Fix to allow macppc to crossbuild when host is not NetBSD.
Fixes PR macppc 33196. Reviewed by macallan@
 1.9 11-Dec-2005  christos branches: 1.9.4; 1.9.6; 1.9.8; 1.9.10; 1.9.12;
merge ktrace-lwp.
 1.8 11-Dec-2003  matt branches: 1.8.16;
Convert fixcoff into a true host tool by making it under tools.
 1.7 10-Dec-2003  matt Use be16toh/htobe16 instead of ntohs/htons.
 1.6 10-Dec-2003  matt s/u_int16_t/uint16_t/ for more portability
 1.5 09-Mar-2003  mrg branches: 1.5.2;
don't depend on "../../../../../gnu/dist/toolchain/include/coff/rs6000.h".
 1.4 17-Sep-2002  briggs Get rs6000.h from gnu/dist/toolchain/include instead of gnu/dist/include.
 1.3 19-Feb-2001  cgd branches: 1.3.4; 1.3.8;
convert to use getprogname()
 1.2 13-Mar-2000  soren branches: 1.2.6;
Fix doubled 'the's in comments.
 1.1 23-Nov-1999  wrstuden branches: 1.1.2;
Add fixcoff, a program to be used during a build to help make xcoff'
binaries from elf ones.
 1.1.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.2.6.3 12-Mar-2001  bouyer Sync with HEAD.
 1.2.6.2 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.6.1 13-Mar-2000  bouyer file fixcoff.c was added on branch thorpej_scsipi on 2000-11-20 20:13:04 +0000
 1.3.8.1 18-Oct-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.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.2.1 03-Aug-2004  skrll Sync with HEAD
 1.8.16.1 21-Jun-2006  yamt sync with head.
 1.9.12.1 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.9.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.9.8.1 11-Apr-2006  yamt sync with head
 1.9.6.1 22-Apr-2006  simonb Sync with head.
 1.9.4.1 09-Sep-2006  rpaulo sync with head
 1.10.80.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.10.74.1 28-Apr-2009  skrll Sync with HEAD.
 1.10.66.1 04-May-2009  yamt sync with head.
 1.11.80.1 01-Aug-2021  thorpej Sync with HEAD.
 1.12.16.1 02-Aug-2025  perseant Sync with HEAD
 1.12.10.1 17-Nov-2024  martin Pull up following revision(s) (requested by kre in ticket #1004):

tools/compat/configure: revision 1.106
lib/libc/string/__strsignal.c: revision 1.26
tools/compat/configure.ac: revision 1.108
tools/compat/nbtool_config.h.in: revision 1.57
usr.bin/elf2aout/elf2aout.c: revision 1.24
tools/compat/Makefile: revision 1.93
sys/arch/macppc/stand/fixcoff/fixcoff.c: revision 1.13
tools/compat/compat_defs.h: revision 1.123

Include <arpa/inet.h> for htonl() (From Jan-Benedict Glaw)
Probably this should be using htobe32() instead of htonl()
(and so <endian.h> rather than <arpa/inet.h>) as there is
no sign of any network anywhere near here. But that's for
another day, and to be done by someone who can test it.

Portability fixes from Jan-Benedict Glaw
The args to help() and usage() need to be const char *
and main() should be declared as returning int.

Add shquote to libnbcompat
Include shquote() in configure tests
Regen for added shquote()

Stop attempting to return a (char*) in place of (const char *)
This removes a cast that was added in 1994, when __strsignal()
returned a char * to convert the const char * element of sys_siglist
into a type that matched.

It should have been removed when __strsignal() was changed to
return const char * in 1998. But wasn't.

This should fix an inane warning (treated as an error) from a
compile stupid enough to allow a natural char * (as in char buf[N])
to be returned as a result (which is, of course, fine), but complains
about returning (char *) applied to a (const char *).
 1.2 11-Dec-2003  matt Convert fixcoff into a true host tool by making it under tools.
 1.1 20-Oct-2001  jmc branches: 1.1.4; 1.1.6; 1.1.22;
Add nb_progname so this will compile on older NetBSD systems that will be
upgrading to -current via the new toolchain build process eventually.
 1.1.22.1 03-Aug-2004  skrll Sync with HEAD
 1.1.6.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.6.1 20-Oct-2001  thorpej file nb_progname.c was added on branch kqueue on 2002-01-10 19:45:54 +0000
 1.1.4.2 20-Oct-2001  jmc Add nb_progname so this will compile on older NetBSD systems that will be
upgrading to -current via the new toolchain build process eventually.
 1.1.4.1 20-Oct-2001  jmc file nb_progname.c was added on branch nathanw_sa on 2001-10-20 06:14:31 +0000
 1.6 15-Sep-2024  tsutsui Add a comment this MD installboot(8) should be merged into MI one.
 1.5 15-Sep-2024  tsutsui Move macppc bootable installcd stuff to sys/arch/macppc/stand dirs.

- move installboot (for CD ISO) and mkboothfs (for mkhybrid(8)) tools to
sys/arch/macppc/stand
- also build mkboothfs as ${TOOL_MACPPCMKBOOTHFS} in src/tools
- explicitly generate boothfs file (for mkhybrid(8)) in
sys/arch/macppc/stand/boothfs and install it into /usr/mdec
- use installed /usr/mdec/boothfs to create macppc bootable iso
- move list files for mkhybrid(8) hfs options to etc/etc.macppc
 1.4 18-May-2002  lukem nuke MD installboot, now that it doesn't understand the macppc
bootblocks anymore and /usr/sbin/installboot does
 1.3 12-Dec-2001  tv branches: 1.3.8;
MKfoo=no -> NOfoo
 1.2 13-Feb-1999  lukem branches: 1.2.22; 1.2.26;
convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.
 1.1 12-Jun-1998  tsubai Add primary boot (bootxx) and installboot command.
 1.2.26.2 20-Jun-2002  nathanw Catch up to -current.
 1.2.26.1 08-Jan-2002  nathanw Catch up to -current.
 1.2.22.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.2.22.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.3.8.1 30-May-2002  gehenna Catch up with -current.
 1.2 18-May-2002  lukem nuke MD installboot, now that it doesn't understand the macppc
bootblocks anymore and /usr/sbin/installboot does
 1.1 17-Jul-1998  tsubai branches: 1.1.28; 1.1.32; 1.1.40;
Write (fake) Apple Partition Map when install boot block.
 1.1.40.1 30-May-2002  gehenna Catch up with -current.
 1.1.32.1 20-Jun-2002  nathanw Catch up to -current.
 1.1.28.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.9 15-Sep-2024  tsutsui Move macppc bootable installcd stuff to sys/arch/macppc/stand dirs.

- move installboot (for CD ISO) and mkboothfs (for mkhybrid(8)) tools to
sys/arch/macppc/stand
- also build mkboothfs as ${TOOL_MACPPCMKBOOTHFS} in src/tools
- explicitly generate boothfs file (for mkhybrid(8)) in
sys/arch/macppc/stand/boothfs and install it into /usr/mdec
- use installed /usr/mdec/boothfs to create macppc bootable iso
- move list files for mkhybrid(8) hfs options to etc/etc.macppc
 1.8 18-May-2002  lukem nuke MD installboot, now that it doesn't understand the macppc
bootblocks anymore and /usr/sbin/installboot does
 1.7 30-Mar-2002  tsutsui branches: 1.7.2;
Add -b option to write the second-stage bootloader contiguously. (for ustarfs)
 1.6 22-Jul-2001  wiz branches: 1.6.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.5 24-Oct-2000  tsubai branches: 1.5.4;
Change ofwboot entry address to 0x600000.
 1.4 05-Sep-1998  pk branches: 1.4.12; 1.4.22;
Assign my copyrights to TNF.
 1.3 17-Jul-1998  tsubai Write (fake) Apple Partition Map when install boot block.
 1.2 26-Jun-1998  tsubai Change load address of ofwboot for large (md root) kernel.
 1.1 12-Jun-1998  tsubai Add primary boot (bootxx) and installboot command.
 1.4.22.1 25-Oct-2000  tv Pullup 1.5 [tsubai]:
Change ofwboot entry address to 0x600000.
 1.4.12.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.5.4.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.5.4.1 03-Aug-2001  lukem update to -current
 1.6.6.3 20-Jun-2002  nathanw Catch up to -current.
 1.6.6.2 17-Apr-2002  nathanw Catch up to -current.
 1.6.6.1 22-Jul-2001  nathanw file installboot.c was added on branch nathanw_sa on 2002-04-17 00:03:43 +0000
 1.7.2.1 30-May-2002  gehenna Catch up with -current.
 1.1 15-Sep-2024  tsutsui Move macppc bootable installcd stuff to sys/arch/macppc/stand dirs.

- move installboot (for CD ISO) and mkboothfs (for mkhybrid(8)) tools to
sys/arch/macppc/stand
- also build mkboothfs as ${TOOL_MACPPCMKBOOTHFS} in src/tools
- explicitly generate boothfs file (for mkhybrid(8)) in
sys/arch/macppc/stand/boothfs and install it into /usr/mdec
- use installed /usr/mdec/boothfs to create macppc bootable iso
- move list files for mkhybrid(8) hfs options to etc/etc.macppc
 1.1 15-Sep-2024  tsutsui Move macppc bootable installcd stuff to sys/arch/macppc/stand dirs.

- move installboot (for CD ISO) and mkboothfs (for mkhybrid(8)) tools to
sys/arch/macppc/stand
- also build mkboothfs as ${TOOL_MACPPCMKBOOTHFS} in src/tools
- explicitly generate boothfs file (for mkhybrid(8)) in
sys/arch/macppc/stand/boothfs and install it into /usr/mdec
- use installed /usr/mdec/boothfs to create macppc bootable iso
- move list files for mkhybrid(8) hfs options to etc/etc.macppc
 1.1 15-Sep-2024  tsutsui Move macppc bootable installcd stuff to sys/arch/macppc/stand dirs.

- move installboot (for CD ISO) and mkboothfs (for mkhybrid(8)) tools to
sys/arch/macppc/stand
- also build mkboothfs as ${TOOL_MACPPCMKBOOTHFS} in src/tools
- explicitly generate boothfs file (for mkhybrid(8)) in
sys/arch/macppc/stand/boothfs and install it into /usr/mdec
- use installed /usr/mdec/boothfs to create macppc bootable iso
- move list files for mkhybrid(8) hfs options to etc/etc.macppc
 1.35 28-Feb-2021  thorpej - When starting the boot program, cache a bunch of OFW frequently used
ihandles / phandles, rather than fetching them all the time.
- Change the signature of OF_call_method() to take an array of cells for
the inputs and outputs, rather than using variadic arguments. This
makes it much easier to use OF_call_method() when the format of the
arguments passed to a given method are determined at run-time
(due to e.g. #address-cells).
- Properly inform OpenFirmware where the kernel is loaded by using
"claim" on /chosen/memory and, if running in virtual-mode, using
"claim" on /chosen/mmu to reserve the VA, and "map" on /chosen/mmu
to enter the translation. (The kernel is still always mapped VA==PA.)
 1.34 15-Apr-2020  rin branches: 1.34.2;
When boot up with auto-boot? == true, some systems do not provide stdout
if the normal output is screen.

Open screen explicitly as stdout in this case, both for ofwboot and kernel,
which fixes problems with auto-boot? == true for Mac mini G4:

- messages from ofwboot do not appear
- kernel freeze during early boot stage

Taken from OpenBSD:
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/macppc/macppc/ofw_machdep.c#rev1.3
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/macppc/stand/Locore.c#rev1.3

XXX
pullup to netbsd-9 and -8
 1.33 12-Nov-2018  scole branches: 1.33.4; 1.33.10;
PR 51495/port-macppc

Allow ppc601 to boot off hard disk
 1.32 17-Aug-2018  macallan - add some G5-specific setup
- OF_claim() more heap space on G5
With this, and -DHEAP_VARIABLE my G5s boot from harddisk
 1.31 06-Jun-2018  uwe branches: 1.31.2;
Provide commented out OF_enter() that comes in handy when debugging.
 1.30 06-Jun-2018  uwe Provide an option to use libsa allocator. Not yet enabled. Same
binary code is generated.

To enable uncomment -DHEAP_VARIABLE and comment out alloc.c in the
makefile.

PR port-macppc/44895
 1.29 22-Apr-2016  christos branches: 1.29.10; 1.29.16;
undo unintended commit
 1.28 22-Apr-2016  christos Elide unused variable warnings (Felix Deichmann)
 1.27 13-Mar-2016  tsutsui TAB/space cleanup.
 1.26 26-Jul-2015  tsutsui Don't set garbages into BAT registers, which was broken in rev 1.25.

Should fix PR port-macppc/50018 (though there is no response for 3 weeks),
and should be pulled up to netbsd-7.
 1.25 26-Feb-2014  macallan branches: 1.25.4; 1.25.6;
support 601, from scole_mail
 1.24 17-Jul-2011  joerg branches: 1.24.2; 1.24.12; 1.24.16;
Retire varargs.h support. Move machine/stdarg.h logic into MI
sys/stdarg.h and expect compiler to provide proper builtins, defaulting
to the GCC interface. lint still has a special fallback.
Reduce abuse of _BSD_VA_LIST_ by defining __va_list by default and
derive va_list as required by standards.
 1.23 18-Sep-2006  sanjayl Undo my half hearted atttempt at porting ofwboot to the G5.
Thanks to Cherry for pointing this out, and my apologies.
 1.22 05-Aug-2006  sanjayl branches: 1.22.2; 1.22.4; 1.22.6;
1st cut of Powermac G5 support (uses bridge mode).
 1.21 27-Jan-2006  uwe branches: 1.21.2; 1.21.6;
More constification.
 1.20 27-Jan-2006  uwe Tell gcc that startup and stack are used.
In startup remove declarations of unused symbols.
This file now compiles with WARNS=4.
 1.19 27-Jan-2006  uwe Make -Wcast-qual happy.
 1.18 24-Dec-2005  perry branches: 1.18.2;
bare asm -> __asm
 1.17 11-Dec-2005  christos merge ktrace-lwp.
 1.16 17-Mar-2004  wrstuden branches: 1.16.16;
Have Locore zero out the bss (which includes our stack) BEFORE
we start calling into C code. Previously we called memset() in our
C code. Unfortunately the compiler would sometimes store local variables
on the statck, which got killed by the memset(). Oops!
 1.15 26-Dec-2003  aymeric ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.14 02-Apr-2003  thorpej branches: 1.14.2;
Oops, didn't mean to commit this.
 1.13 02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.12 31-Oct-2002  matt Convert to register prefixes. Use ANSI string concatenation for
multiline asm strings.
 1.11 27-Sep-2002  wrstuden Remove vestiges of the syncicache() call originally in powerpc/ofwboot
before rev 1.4. This change makes OF 2.4 machines actually boot, and
it works fine on my OF 2.01 machine. No reports of failures on other
archs.

I expect this change is fine as the original code flushed the just-loaded
ofwboot out of the cache, conditionalized on FIRMWORKSBUGS. In rev.
1.4, the code got in-lined, and changed to actually flush low memory
out of the cache. Since machines kept booting, I expect the firmware
was really flushing the binary out of the cache, so we're fine.
 1.10 29-Mar-2002  tsutsui branches: 1.10.4;
Cosmetics.
 1.9 24-Sep-2001  wiz branches: 1.9.4;
va_{start,end} audit:
Make sure that each va_start has one and only one matching va_end,
especially in error cases.
If the va_list is used multiple times, do multiple va_starts/va_ends.
If a function gets va_list as argument, don't let it use va_end (since
it's the callers responsibility).

Improved by comments from enami and christos -- thanks!

Heimdal/krb4/KAME changes already fed back, rest to follow.

Inspired by, but not not based on, OpenBSD.
 1.8 22-Jul-2001  wiz branches: 1.8.2;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.7 20-Aug-2000  tsubai branches: 1.7.4;
Increase stack size.
 1.6 22-Dec-1999  thorpej Update some comments.
 1.5 04-Feb-1999  tsubai branches: 1.5.8;
Allocate DMA-aware memory area using "dma-alloc" method and use them
for data buffer.
XXX currently only netif_put() uses this.

iMac can use ofwboot.elf now.
 1.4 02-Feb-1999  tsubai Ensure lowest 256MB is mapped by BAT0.
 1.3 24-Jul-1998  tsubai Comment out "insert root disk..." message.
Remove unnecessary video init.
 1.2 26-Jun-1998  tsubai Change load address of ofwboot for large (md root) kernel.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.5.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.7.4.4 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.4.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.7.4.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.7.4.1 03-Aug-2001  lukem update to -current
 1.8.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.9.4.4 11-Nov-2002  nathanw Catch up to -current
 1.9.4.3 18-Oct-2002  nathanw Catch up to -current.
 1.9.4.2 17-Apr-2002  nathanw Catch up to -current.
 1.9.4.1 24-Sep-2001  nathanw file Locore.c was added on branch nathanw_sa on 2002-04-17 00:03:44 +0000
 1.10.4.1 30-Sep-2002  lukem Pull up revision 1.11 (requested by wrstuden in ticket #867):
Remove vestiges of the syncicache() call originally in powerpc/ofwboot
before rev 1.4. This change makes OF 2.4 machines actually boot, and
it works fine on my OF 2.01 machine. No reports of failures on other
archs.
I expect this change is fine as the original code flushed the just-loaded
ofwboot out of the cache, conditionalized on FIRMWORKSBUGS. In rev.
1.4, the code got in-lined, and changed to actually flush low memory
out of the cache. Since machines kept booting, I expect the firmware
was really flushing the binary out of the cache, so we're fine.
 1.14.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.14.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.14.2.1 03-Aug-2004  skrll Sync with HEAD
 1.16.16.1 21-Jun-2006  yamt sync with head.
 1.18.2.1 01-Feb-2006  yamt sync with head.
 1.21.6.1 11-Aug-2006  yamt sync with head
 1.21.2.1 09-Sep-2006  rpaulo sync with head
 1.22.6.1 22-Oct-2006  yamt sync with head
 1.22.4.1 18-Nov-2006  ad Sync with head.
 1.22.2.1 23-Sep-2006  snj Pull up following revision(s) (requested by sanjayl in ticket #175):
sys/arch/macppc/stand/ofwboot/Locore.c: revision 1.23
Undo my half hearted atttempt at porting ofwboot to the G5.
Thanks to Cherry for pointing this out, and my apologies.
 1.24.16.1 18-May-2014  rmind sync with head
 1.24.12.2 03-Dec-2017  jdolecek update from HEAD
 1.24.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.24.2.1 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.25.6.2 19-Mar-2016  skrll Sync with HEAD
 1.25.6.1 22-Sep-2015  skrll Sync with HEAD
 1.25.4.1 30-Jul-2015  martin Pull up following revision(s) (requested by tsutsui in ticket #893):
sys/arch/macppc/stand/ofwboot/Locore.c: revision 1.26
Don't set garbages into BAT registers, which was broken in rev 1.25.
Should fix PR port-macppc/50018 (though there is no response for 3 weeks),
and should be pulled up to netbsd-7.
 1.29.16.3 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.29.16.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.29.16.1 25-Jun-2018  pgoyette Sync with HEAD
 1.29.10.1 21-Apr-2020  martin Pull up following revision(s) (requested by rin in ticket #1533):

sys/arch/macppc/stand/ofwboot/Locore.c: revision 1.34 (via patch)
sys/arch/powerpc/oea/ofw_consinit.c: revision 1.18

When boot up with auto-boot? == true, some systems do not provide stdout
if the normal output is screen.

Open screen explicitly as stdout in this case, both for ofwboot and kernel,
which fixes problems with auto-boot? == true for Mac mini G4:
- messages from ofwboot do not appear
- kernel freeze during early boot stage

Taken from OpenBSD:
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/macppc/macppc/ofw_machdep.c#rev1.3
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/macppc/stand/Locore.c#rev1.3

XXX
pullup to netbsd-9 and -8
 1.31.2.2 21-Apr-2020  martin Sync with HEAD
 1.31.2.1 10-Jun-2019  christos Sync with HEAD
 1.33.10.1 20-Apr-2020  bouyer Sync with HEAD
 1.33.4.1 21-Apr-2020  martin Pull up following revision(s) (requested by rin in ticket #837):

sys/arch/macppc/stand/ofwboot/Locore.c: revision 1.34
sys/arch/powerpc/oea/ofw_consinit.c: revision 1.18

When boot up with auto-boot? == true, some systems do not provide stdout
if the normal output is screen.

Open screen explicitly as stdout in this case, both for ofwboot and kernel,
which fixes problems with auto-boot? == true for Mac mini G4:
- messages from ofwboot do not appear
- kernel freeze during early boot stage

Taken from OpenBSD:
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/macppc/macppc/ofw_machdep.c#rev1.3
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/macppc/stand/Locore.c#rev1.3

XXX
pullup to netbsd-9 and -8
 1.34.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.62 25-Jul-2025  martin PR 59550: do not build ofwboot as PIE.
While there, disabel all sanitziers too.
 1.61 10-May-2025  martin Strip ofwboot.xcf, pointed out in

https://mail-index.netbsd.org/port-macppc/2024/02/03/msg003076.html

While here avoid modifying the binary in-place to make this more
parallel make safe.
 1.60 28-Feb-2021  thorpej branches: 1.60.24;
- When starting the boot program, cache a bunch of OFW frequently used
ihandles / phandles, rather than fetching them all the time.
- Change the signature of OF_call_method() to take an array of cells for
the inputs and outputs, rather than using variadic arguments. This
makes it much easier to use OF_call_method() when the format of the
arguments passed to a given method are determined at run-time
(due to e.g. #address-cells).
- Properly inform OpenFirmware where the kernel is loaded by using
"claim" on /chosen/memory and, if running in virtual-mode, using
"claim" on /chosen/mmu to reserve the VA, and "map" on /chosen/mmu
to enter the translation. (The kernel is still always mapped VA==PA.)
 1.59 06-Jun-2018  uwe branches: 1.59.14;
Provide an option to use libsa allocator. Not yet enabled. Same
binary code is generated.

To enable uncomment -DHEAP_VARIABLE and comment out alloc.c in the
makefile.

PR port-macppc/44895
 1.58 20-Apr-2017  uwe branches: 1.58.10;
Quash .eh_frame unwind tables in boot code.
 1.57 20-Apr-2017  uwe Group CLEANFILES assignments.
 1.56 08-Apr-2017  christos centralize vers.c building for standalone programs.
 1.55 24-Dec-2014  matt branches: 1.55.2; 1.55.4;
Don't strip the .mrg since the symbols can be useful.
 1.54 10-Aug-2014  joerg branches: 1.54.4;
Put GCC/GAS specific options under ACTIVE_CC == "gcc".
 1.53 08-Aug-2014  joerg Don't set -mmultiple or -mno-string for PowerPC, the difference is too
small to really matter and it sometimes even increases the size.
 1.52 12-Jan-2014  tsutsui branches: 1.52.2;
Add empty LIBCRTI= as LIBCRT0 to build sa programs without installed DESTDIR.

XXX: probabry we should have bsd.saprog.mk or something.
 1.51 22-Jan-2011  joerg branches: 1.51.4; 1.51.14; 1.51.18;
Drop bootprog_maker (formerly enabled by -M) and bootprog_date (formerly
disabled by -D) from the output of newvers_stand.sh. Change -D to the
inverted logic, so that it adds the date to bootprog_rev in ().

Change all platforms accordingly. -D is added if MKREPRO is not yes and
wasn't present before. Platforms that didn't use -D don't depend on
MKREPRO now either.
 1.50 27-May-2010  dholland branches: 1.50.2; 1.50.4;
Introduce .WAIT into the cleandir rule for blasting the libsa/libkern/etc.
trees, because it can race with the libsa/libkern/etc. makefiles' own
cleandir rules. I think I've found all of the uses of the offending idiom...
Closes PR 43360.
 1.49 03-Apr-2009  tsutsui branches: 1.49.2; 1.49.4;
Remove obsolete LIBSA_USE_MEMCPY and LIBSA_USE_MEMSET.
They were removed from <lib/libsa/stand.h> on December 2007.
 1.48 15-Mar-2009  tsutsui Use <bsd.klinks.mk> to create MD include dir symlinks.
 1.47 12-Jan-2009  tsutsui branches: 1.47.2;
WARNSfy
 1.46 22-May-2008  hauke branches: 1.46.6;
Added driver for the Creative Systems Inc. Hurdler CPI parallel printer card.
Timecounter support for the Z8536 counters A + B is not complete, yet.

Reviewed by Martin Husemann.
 1.45 11-Dec-2005  christos branches: 1.45.74; 1.45.76; 1.45.78; 1.45.80;
merge ktrace-lwp.
 1.44 21-Jun-2004  jmc Ignore errors on some rm -rf's for platforms that aren't quite
POSIX compliant
and return errors on r/o source (FreeBSD) for -rf. Fixes PR#25022
 1.43 09-Apr-2004  matt When linking, use ${_MKTARGET_LINK} so that MAKEVERBOSE=1 looks right.
 1.42 12-Mar-2004  wrstuden branches: 1.42.2;
Fix ofwboot to deal with larger kernels. Rather than loading at
0x6?0000, load at 0xe00000. This gives us room for around 13 MB of
kernel, as opposed to the current 5 MB (0x600000 - 0x100000).

No changes to load-base or real-base are needed due to this change,
though machines that needed specific OFW settings before (OF 1.x
and 2.x) this change still need those settings.

Partially revert revision 1.25 -> 1.26 of ofwboot/Makefile & friends.
We do not need to distinguish between where ofwboot and ofwboot.{elf,xcf}
load; they are both fine loading somewhere other than load-base.
 1.41 26-Dec-2003  aymeric revert previous. -fwritable-strings is not needed now that the ld script
does TRT.
 1.40 26-Dec-2003  aymeric add -fwritable-strings to DBG, so that gcc doesn't generate a ".rodata" section.
I believe this fixes PR port-macppc/23206 and the "ofwboot.xcf issues" reported
on the lists since november.
 1.39 11-Dec-2003  matt Convert fixcoff into a true host tool by making it under tools.
 1.38 26-Oct-2003  lukem Use ${HOST_SH} instead of `sh'.

If necessary, pull in <bsd.sys.mk> to get the definition of HOST_SH;
Makefiles that pull in one of (most of) <bsd.*.mk> will get this anyway.
 1.37 28-Feb-2003  matt branches: 1.37.2;
Make this play with gcc 3.3. Add -ffreestanding. Cleanup bootxx.
 1.36 09-Dec-2002  thorpej No need to depend on userland libraries here.
 1.35 20-Sep-2002  wrstuden Re-add own alloc(). Recent issues with kernels randomly dying on boot
are related to using libsa's alloc(). Problems go away with this alloc().

The problem is that the libsa alloc() assumes we can grab memory off
the end of the program. That assumption doesn't work for us. It's
much better to use the alloc() we were using as it calls OF_claim()
to get memory.
 1.34 18-Jun-2002  itojun avoid hardcoding MBR_MAGICOFF and MBR_MAGIC.
 1.33 13-Apr-2002  tsutsui branches: 1.33.2; 1.33.4;
Add "cleanlibdir" target.
 1.32 13-Apr-2002  tsutsui Set USE_LIBSA_MEMCPY and USE_LIBSA_MEMSET to save a few bytes.
 1.31 30-Mar-2002  tsutsui Enable SUPPORT_USTARFS and HAVE_CHANGEDISK_HOOK in CPPFLAGS.
 1.30 29-Mar-2002  tsutsui Add back -I. to CPPFLAGS.
 1.29 29-Mar-2002  tsutsui Cleanup some flags.
 1.28 02-Mar-2002  jmc Wrap the generation of machine and powerpc links so they don't happen during
make obj, clean or cleandir as the proper objdir may not be around yet.
 1.27 13-Feb-2002  wrstuden Make this work with the dependall target.

Pointed out by Christian Groessle on port-macppc, and patch suggested bu
Izumi Tsutsui.
 1.26 01-Feb-2002  wrstuden Check in machinery to make ofwboot load at 600000, while ofwboot.elf
and ofwboot.xcf will load at 640000. The idea is that we can now
leave load-base at 600000, and it will work right for all three methods.

The problem is that the file loader and the net loader use load-base
as a scratch area, so if the executable really wants to load there,
the load fails.
 1.25 07-Jan-2002  matt Remove machine/powerpc links on clean as well.
 1.24 12-Dec-2001  tv MKfoo=no -> NOfoo
 1.23 14-Nov-2001  tv ${MAKE} print-objdir -> ${PRINTOBJDIR}
 1.22 22-Sep-2001  tv branches: 1.22.4;
objcopy -> ${OBJCOPY}; remove redundant definitions of OBJCOPY?= (it is
now in bsd.own.mk).
 1.21 18-Jul-2001  matt branches: 1.21.2;
Add -Wno-main since this is a standalone program.
 1.20 16-Nov-2000  matt branches: 1.20.4;
It's hfs.c, not hfs. Add -I${.CURDIR} for objdirs. XXX hfs.c should
be integrated into libsa.
 1.19 14-Nov-2000  tsubai Add hfs support. Currently this layer simply throw the request to the OF
(and the OF recognizes HFS).
 1.18 28-Oct-2000  garbled make -> ${MAKE}
 1.17 13-Oct-2000  wrstuden Move ofwboot to 600000 hex. Should make loading better (less likely to
run into OF internals).
 1.16 25-Jul-2000  tsubai Use libsa alloc().
 1.15 25-Jul-2000  tsubai Add ofwboot.{mrg,xcf} to CLEANFILES.
 1.14 25-Jul-2000  tsubai Make this compile again.
 1.13 21-Jul-2000  jdolecek switch to sys/conf/newvers_stand.sh for generation of version file
slighly adjust the Makefile WRT vers.c and SRCS & CLEANFILES
 1.12 06-Jul-2000  dmcmahill make sure ofwboot.xcf gets installed
 1.11 08-Jun-2000  matt branches: 1.11.2;
Squeeze a few more bytes so the INSTALL kernel will fit on a floppy.
Use tlp instead of de. Add in gm[ac]. Remove slip and Gallant 22x12 font.
Compile ofwboot.elf -Os.
 1.10 29-Apr-2000  mycroft branches: 1.10.2;
Use DHCP, not BOOTP. At least with dhcpd, the root path gets dropped due to
lack of space in the reply when using BOOTP.
 1.9 07-Feb-2000  tsubai Move CFLAGS and CPPFLAGS to {bootxx,ofwboot}/Makefile to compile installboot
without -D_STANDALONE.
 1.8 23-Jan-2000  mycroft Clean up the machine symlink stuff ever so slightly. Needs to be
standardized between files.
 1.7 23-Nov-1999  wrstuden Now make an ofwboot.xcf, and XCOFF version of ofwboot. Uses the new
fix-coff program.
 1.6 21-Jun-1999  wrstuden branches: 1.6.2; 1.6.8;
Install ofwboot.elf in addition to ofwboot. Thanks to Chris for info on how
to do this!
 1.5 29-Apr-1999  tsubai Use MI loadfile().
 1.4 13-Feb-1999  lukem branches: 1.4.2; 1.4.4;
convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.
 1.3 26-Jun-1998  tsubai Change load address of ofwboot for large (md root) kernel.
 1.2 12-Jun-1998  tsubai Add primary boot (bootxx) and installboot command.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.4.4.2 01-Jul-1999  thorpej Sync w/ -current.
 1.4.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.4.2.1 13-Jul-2000  he Apply patch (requested by he):
Enhance the ``make release'' process:
o Build and install the distrib and boot bits
 1.6.8.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.6.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.6.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.10.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.11.2.6 14-Feb-2002  he Pull up revision 1.27 (requested by wrstuden):
Make this work with the dependall target.
 1.11.2.5 13-Feb-2002  he Pull up revisions 1.14-1.15,1.25 (via patch, requested by wrstuden):
Make it so that we can use load-base 600000 for ofwboot, ofwboot.elf,
and ofwboot.xcf. The fundamental problem is that for ofwboot,
load-base needs to be the load point, while for ofwboot.xcf and
ofwboot.elf, it needs to not be the load point, but rather a
scratch buffer used for loading.
 1.11.2.4 24-Apr-2001  he Pull up revisions 1.19-1.20 (via patch, requested by tsubai):
Add HFS support to the boot loader.
 1.11.2.3 09-Nov-2000  tv Pullup patch [matt]:
Add -mmultiple to COPTS as it is in DBG on the trunk; shrinks ofwboot by 4K.
 1.11.2.2 17-Oct-2000  tv Pullup 1.17 [wrstuden]:
Move ofwboot to 600000 hex. Should make loading better (less likely to
run into OF internals).
 1.11.2.1 03-Aug-2000  dmcmahill Pull up revision 1.12 (requested by dmcmahill, approved by thorpej):
Add ofwboot.xcf to the list of files to be installed.
Fixes PR10418.
 1.20.4.7 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.20.4.6 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.20.4.5 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.20.4.4 16-Mar-2002  jdolecek Catch up with -current.
 1.20.4.3 11-Feb-2002  jdolecek Sync w/ -current.
 1.20.4.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.20.4.1 03-Aug-2001  lukem update to -current
 1.21.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.22.4.9 11-Dec-2002  thorpej Sync with HEAD.
 1.22.4.8 18-Oct-2002  nathanw Catch up to -current.
 1.22.4.7 20-Jun-2002  nathanw Catch up to -current.
 1.22.4.6 17-Apr-2002  nathanw Catch up to -current.
 1.22.4.5 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.22.4.4 28-Feb-2002  nathanw Catch up to -current.
 1.22.4.3 11-Jan-2002  nathanw More catchup.
 1.22.4.2 08-Jan-2002  nathanw Catch up to -current.
 1.22.4.1 22-Sep-2001  nathanw file Makefile was added on branch nathanw_sa on 2002-01-08 00:26:15 +0000
 1.33.4.1 30-Sep-2002  lukem Pull up revision 1.35 (requested by wrstuden in ticket #866):
Re-add own alloc(). Recent issues with kernels randomly dying on boot
are related to using libsa's alloc(). Problems go away with this alloc().
The problem is that the libsa alloc() assumes we can grab memory off
the end of the program. That assumption doesn't work for us. It's
much better to use the alloc() we were using as it calls OF_claim()
to get memory.
 1.33.2.1 16-Jul-2002  gehenna catch up with -current.
 1.37.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.37.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.37.2.1 03-Aug-2004  skrll Sync with HEAD
 1.42.2.1 22-Jun-2004  tron Pull up revision 1.44 (requested by jmc in ticket #531):
Ignore errors on some rm -rf's for platforms that aren't quite
POSIX compliant
and return errors on r/o source (FreeBSD) for -rf. Fixes PR#25022
 1.45.80.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.45.78.2 11-Aug-2010  yamt sync with head.
 1.45.78.1 04-May-2009  yamt sync with head.
 1.45.76.1 04-Jun-2008  yamt sync with head
 1.45.74.2 17-Jan-2009  mjf Sync with HEAD.
 1.45.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.46.6.2 28-Apr-2009  skrll Sync with HEAD.
 1.46.6.1 19-Jan-2009  skrll Sync with HEAD.
 1.47.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.49.4.2 05-Mar-2011  rmind sync with head
 1.49.4.1 30-May-2010  rmind sync with head
 1.49.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.50.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.50.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.51.18.1 18-May-2014  rmind sync with head
 1.51.14.2 03-Dec-2017  jdolecek update from HEAD
 1.51.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.51.4.1 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.52.2.1 10-Aug-2014  tls Rebase.
 1.54.4.2 28-Aug-2017  skrll Sync with HEAD
 1.54.4.1 06-Apr-2015  skrll Sync with HEAD
 1.55.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.55.2.1 26-Apr-2017  pgoyette Sync with HEAD
 1.58.10.1 25-Jun-2018  pgoyette Sync with HEAD
 1.59.14.1 03-Apr-2021  thorpej Sync with HEAD.
 1.60.24.1 02-Aug-2025  perseant Sync with HEAD
 1.3 24-Dec-2005  perry bare asm -> __asm
 1.2 31-Oct-2002  matt branches: 1.2.22;
Convert to register prefixes. Use ANSI string concatenation for
multiline asm strings.
 1.1 23-Nov-1999  wrstuden branches: 1.1.2; 1.1.8; 1.1.16;
Now make an ofwboot.xcf, and XCOFF version of ofwboot. Uses the new
fix-coff program.
 1.1.16.1 11-Nov-2002  nathanw Catch up to -current
 1.1.8.2 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.1.8.1 23-Nov-1999  bouyer file Xcoffxtra.c was added on branch thorpej_scsipi on 2000-11-20 20:13:04 +0000
 1.1.2.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.2.22.1 21-Jun-2006  yamt sync with head.
 1.10 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.9 27-Jan-2006  uwe branches: 1.9.72; 1.9.74; 1.9.76;
Move #ifdef __notyet__ inside freeall() to match sparc and ofppc.
 1.8 27-Jan-2006  uwe Pull cleanup fixes from sys/arch/shark/stand/ofwboot/alloc.c.
These files are now almost identical.
 1.7 25-Jan-2006  christos free -> dealloc
unsigned -> size_t for alloc/dealloc
 1.6 11-Dec-2005  christos branches: 1.6.2;
merge ktrace-lwp.
 1.5 26-Dec-2003  aymeric branches: 1.5.16;
ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.4 17-Feb-2003  soren branches: 1.4.2;
Make ALLOC_TRACE work again.
 1.3 20-Sep-2002  wrstuden branches: 1.3.2; 1.3.4;
Re-add own alloc(). Recent issues with kernels randomly dying on boot
are related to using libsa's alloc(). Problems go away with this alloc().

The problem is that the libsa alloc() assumes we can grab memory off
the end of the program. That assumption doesn't work for us. It's
much better to use the alloc() we were using as it calls OF_claim()
to get memory.
 1.2 25-Jul-2000  tsubai branches: 1.2.2;
Use libsa alloc().
 1.1 15-May-1998  tsubai branches: 1.1.14;
Initial import of macppc port.
 1.1.14.1 20-Nov-2000  bouyer Remove files that are no longer on the trunck
 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.4.2 18-Oct-2002  nathanw Catch up to -current.
 1.3.4.1 20-Sep-2002  nathanw file alloc.c was added on branch nathanw_sa on 2002-10-18 02:38:41 +0000
 1.3.2.2 30-Sep-2002  lukem Pull up revision 1.3 (requested by wrstuden in ticket #866):
Re-add own alloc(). Recent issues with kernels randomly dying on boot
are related to using libsa's alloc(). Problems go away with this alloc().
The problem is that the libsa alloc() assumes we can grab memory off
the end of the program. That assumption doesn't work for us. It's
much better to use the alloc() we were using as it calls OF_claim()
to get memory.
 1.3.2.1 20-Sep-2002  lukem file alloc.c was added on branch netbsd-1-6 on 2002-09-30 13:38:33 +0000
 1.4.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.2.1 03-Aug-2004  skrll Sync with HEAD
 1.5.16.1 21-Jun-2006  yamt sync with head.
 1.6.2.1 01-Feb-2006  yamt sync with head.
 1.9.76.1 16-May-2008  yamt sync with head.
 1.9.74.1 18-May-2008  yamt sync with head.
 1.9.72.1 02-Jun-2008  mjf Sync with HEAD.
 1.32 13-Jan-2025  tsutsui Tweak bootpath strings in ofwboot for OpenBIOS used on qemu-system-ppc.

Bump version to denote the visible change.

This makes qemu-system-ppc -M mac99 booting from a harddisk image
using ofwboot installed by installboot(8) with /usr/mdec/bootxx:
---
% qemu-system-ppc --version
QEMU emulator version 9.1.2
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers
% qemu-system-ppc -M mac99 -drive file=NetBSD-10.1-macppc.img,media=disk,format=raw -nographic

>> =============================================================
>> OpenBIOS 1.1 [Mar 7 2023 22:21]
>> Configuration device id QEMU version 1 machine id 1
>> CPUs: 1
>> Memory: 128M
>> UUID: 00000000-0000-0000-0000-000000000000
>> CPU type PowerPC,G4
milliseconds isn't unique.
Welcome to OpenBIOS v1.1 built on Mar 7 2023 22:21
Trying hd:,\\:tbxi...
Trying hd:,\ppc\bootinfo.txt...
Trying hd:,%BOOT...
>> Not a bootable ELF image
>> switching to new context:

OF_open bootpath=/pci@f2000000/mac-io@c/ata-3@20000/disk@0
read stage 2 blocks: 01234. done!
starting stage 2...

>> NetBSD/macppc OpenFirmware Boot, Revision 1.14 (Mon Jan 13 14:50:50 UTC 2025)
>> Open Firmware version 3.x
>> Open Firmware running in virtual-mode.
prom2boot: bootpath from OF: "/pci@f2000000/mac-io@c/ata-3@20000/disk@0:,%BOOT"
prom2boot: bootpath patched: "/pci@f2000000/mac-io@c/ata-3@20000/disk@0:"
bootline=
Trying /netbsd
11860332+167196 [463456+447084]=0xc570ec
start=0x100000
[ 1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
[ 1.0000000] 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
[ 1.0000000] 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
[ 1.0000000] 2024
[ 1.0000000] The NetBSD Foundation, Inc. All rights reserved.
[ 1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[ 1.0000000] The Regents of the University of California. All rights reserved.

[ 1.0000000] NetBSD 10.1 (GENERIC) #0: Mon Dec 16 13:08:11 UTC 2024
[ 1.0000000] mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/macppc/compile/GENERIC
---
 1.31 28-Feb-2021  thorpej branches: 1.31.18; 1.31.24;
- When starting the boot program, cache a bunch of OFW frequently used
ihandles / phandles, rather than fetching them all the time.
- Change the signature of OF_call_method() to take an array of cells for
the inputs and outputs, rather than using variadic arguments. This
makes it much easier to use OF_call_method() when the format of the
arguments passed to a given method are determined at run-time
(due to e.g. #address-cells).
- Properly inform OpenFirmware where the kernel is loaded by using
"claim" on /chosen/memory and, if running in virtual-mode, using
"claim" on /chosen/mmu to reserve the VA, and "map" on /chosen/mmu
to enter the translation. (The kernel is still always mapped VA==PA.)
 1.30 23-Apr-2020  joerg branches: 1.30.2;
bootfile is owned by libsa
 1.29 06-Jun-2018  uwe branches: 1.29.12;
Provide an option to use libsa allocator. Not yet enabled. Same
binary code is generated.

To enable uncomment -DHEAP_VARIABLE and comment out alloc.c in the
makefile.

PR port-macppc/44895
 1.28 11-Jun-2016  dholland branches: 1.28.16;
PR 51200 gets in libsa considered harmful: use kgets
 1.27 19-Feb-2012  tsutsui branches: 1.27.2; 1.27.16;
Fix boot failure on OF 2.0 machines.

Discussed with phx@ on port-macppc@:
http://mail-index.NetBSD.org/port-macppc/2012/02/18/msg001556.html

Should be pulled up to netbsd-6.
 1.26 22-Jan-2011  joerg branches: 1.26.4; 1.26.8; 1.26.10;
Drop bootprog_maker (formerly enabled by -M) and bootprog_date (formerly
disabled by -D) from the output of newvers_stand.sh. Change -D to the
inverted logic, so that it adds the date to bootprog_rev in ().

Change all platforms accordingly. -D is added if MKREPRO is not yes and
wasn't present before. Platforms that didn't use -D don't depend on
MKREPRO now either.
 1.25 25-Aug-2010  christos branches: 1.25.2; 1.25.4;
s/LOAD_NOTE/LOAD_BACKWARDS/
 1.24 29-Mar-2010  mrg avoid some warnings on powerpc64.
 1.23 28-Jan-2009  tsutsui branches: 1.23.4; 1.23.6;
- modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision

Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.

Fixes PR install/38943 on macppc.
 1.22 28-Apr-2008  martin branches: 1.22.8; 1.22.10;
Remove clause 3 and 4 from TNF licenses
 1.21 27-Jan-2006  uwe branches: 1.21.72; 1.21.74; 1.21.76;
Call freeall() from chain() to match the code for other ofw platforms.
freeall() is a no-op.
 1.20 27-Jan-2006  uwe Make WARNS=4 happy.
 1.19 11-Dec-2005  christos branches: 1.19.2;
merge ktrace-lwp.
 1.18 31-May-2004  schmonz branches: 1.18.12;
Support userconf(4) ("boot -c"). Reviewed by Bill Studenmund.
 1.17 26-Dec-2003  aymeric branches: 1.17.2;
ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.16 30-Mar-2002  tsutsui branches: 1.16.10;
Add changedisk_hook() for ustarfs. (from tsubai)
 1.15 29-Mar-2002  tsutsui Remove unused define/include/variable.
 1.14 29-Mar-2002  tsutsui Cosmetics.
 1.13 23-Aug-2001  tsubai branches: 1.13.6;
Fix a bug introduced when machine_type.h was removed.
Now the kernel can read symbol table again.
 1.12 13-Aug-2001  tsubai Search "/netbsd.gz" and "/netbsd.macppc" in addition to "/netbsd".
 1.11 22-Jul-2001  wiz bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.10 03-May-2001  soren branches: 1.10.2;
PPC machine type tags haven't been used for a while.
 1.9 24-Sep-2000  jdolecek branches: 1.9.2;
add new macro BOOT_FLAG() (defined in <sys/boot_flag.h>) - this
maps standard boot flags to corresponding RB_* values
use BOOT_FLAG() in port's MD code as appropriate

as discussed on tech-kern, add new boot flags -v, -q for booting
verbosely or quietly, and corresponding AB_VERBOSE/AB_QUIET
boot flags; also add FreeBSD-compatible bootverbose macro and
NetBSD-specific bootquiet macro

for hpcmips, use new bootverbose instead of it's own hpcmips_verbose

Tested on i386, and to limited extend (compile of affected files) also for
mvme68k, hp300, luna68k, sun3.
 1.8 25-Jul-2000  tsubai Use libsa alloc().
 1.7 03-Aug-1999  tsubai branches: 1.7.2;
Make ``boot kernelname'' work on OF-3.x too.
 1.6 29-Apr-1999  tsubai Use MI loadfile().
 1.5 17-Apr-1999  ws Modify syncicache on PowerPC from an inline to a real function.
Support different cache line sizes with the same object code in userland.
While here, move the function to implementation name space.
 1.4 05-Mar-1999  tsubai branches: 1.4.4;
Modify parseargs() so that device names can contain '-'.
 1.3 24-Jul-1998  tsubai Comment out "insert root disk..." message.
Remove unnecessary video init.
 1.2 13-Jul-1998  tsubai Use "boot-device" if "bootpath" is not set.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.4.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.7.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.9.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.10.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.10.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.10.2.1 03-Aug-2001  lukem update to -current
 1.13.6.2 17-Apr-2002  nathanw Catch up to -current.
 1.13.6.1 23-Aug-2001  nathanw file boot.c was added on branch nathanw_sa on 2002-04-17 00:03:44 +0000
 1.16.10.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.16.10.2 18-Sep-2004  skrll Sync with HEAD.
 1.16.10.1 03-Aug-2004  skrll Sync with HEAD
 1.17.2.1 01-Jun-2004  jmc Pullup rev 1.18 (requested by schmonz in ticket #428)

Support userconf(4) ("boot -c").
 1.18.12.1 21-Jun-2006  yamt sync with head.
 1.19.2.1 01-Feb-2006  yamt sync with head.
 1.21.76.4 09-Oct-2010  yamt sync with head
 1.21.76.3 11-Aug-2010  yamt sync with head.
 1.21.76.2 04-May-2009  yamt sync with head.
 1.21.76.1 16-May-2008  yamt sync with head.
 1.21.74.1 18-May-2008  yamt sync with head.
 1.21.72.1 02-Jun-2008  mjf Sync with HEAD.
 1.22.10.1 02-Feb-2009  snj Pull up following revision(s) (requested by tsutsui in ticket #407):
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.23
sys/arch/macppc/stand/ofwboot/boot.h: revision 1.3
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.22
sys/arch/macppc/stand/ofwboot/ofdev.h: revision 1.6
sys/arch/macppc/stand/ofwboot/version: revision 1.12
- modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision
Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.
Fixes PR install/38943 on macppc.
 1.22.8.1 03-Mar-2009  skrll Sync with HEAD.
 1.23.6.2 05-Mar-2011  rmind sync with head
 1.23.6.1 30-May-2010  rmind sync with head
 1.23.4.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.23.4.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.25.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.25.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.26.10.1 22-Feb-2012  riz Pull up following revision(s) (requested by tsutsui in ticket #22):
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.27
sys/arch/macppc/stand/ofwboot/boot.h: revision 1.4
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.26
Fix boot failure on OF 2.0 machines.
Discussed with phx@ on port-macppc@:
http://mail-index.NetBSD.org/port-macppc/2012/02/18/msg001556.html
Should be pulled up to netbsd-6.
 1.26.8.1 24-Feb-2012  mrg sync to -current.
 1.26.4.1 17-Apr-2012  yamt sync with head
 1.27.16.1 09-Jul-2016  skrll Sync with HEAD
 1.27.2.1 03-Dec-2017  jdolecek update from HEAD
 1.28.16.1 25-Jun-2018  pgoyette Sync with HEAD
 1.29.12.1 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.30.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.31.24.1 02-Aug-2025  perseant Sync with HEAD
 1.31.18.1 20-Feb-2025  martin Pull up following revision(s) (requested by tsutsui in ticket #1048):

sys/arch/macppc/stand/ofwboot/version: revision 1.16
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.32

Tweak bootpath strings in ofwboot for OpenBIOS used on qemu-system-ppc.
Bump version to denote the visible change.

This makes qemu-system-ppc -M mac99 booting from a harddisk image
using ofwboot installed by installboot(8) with /usr/mdec/bootxx:
---
% qemu-system-ppc --version
QEMU emulator version 9.1.2
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers
% qemu-system-ppc -M mac99 -drive file=NetBSD-10.1-macppc.img,media=disk,format=raw -nographic
> =============================================================
> OpenBIOS 1.1 [Mar 7 2023 22:21]
> Configuration device id QEMU version 1 machine id 1
> CPUs: 1
> Memory: 128M
> UUID: 00000000-0000-0000-0000-000000000000
> CPU type PowerPC,G4
milliseconds isn't unique.
Welcome to OpenBIOS v1.1 built on Mar 7 2023 22:21
Trying hd:,\\:tbxi...
Trying hd:,\ppc\bootinfo.txt...
Trying hd:,%BOOT...
> Not a bootable ELF image
> switching to new context:
OF_open bootpath=/pci@f2000000/mac-io@c/ata-3@20000/disk@0
read stage 2 blocks: 01234. done!
starting stage 2...
> NetBSD/macppc OpenFirmware Boot, Revision 1.14 (Mon Jan 13 14:50:50 UTC 2025)
> Open Firmware version 3.x
> Open Firmware running in virtual-mode.
prom2boot: bootpath from OF: "/pci@f2000000/mac-io@c/ata-3@20000/disk@0:,%BOOT"
prom2boot: bootpath patched: "/pci@f2000000/mac-io@c/ata-3@20000/disk@0:"
bootline=
Trying /netbsd
11860332+167196 [463456+447084]=0xc570ec
start=0x100000
[ 1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
[ 1.0000000] 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
[ 1.0000000] 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
[ 1.0000000] 2024
[ 1.0000000] The NetBSD Foundation, Inc. All rights reserved.
[ 1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[ 1.0000000] The Regents of the University of California. All rights reserved.
[ 1.0000000] NetBSD 10.1 (GENERIC) #0: Mon Dec 16 13:08:11 UTC 2024
[ 1.0000000] mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/macppc/compile/GENERIC
---
 1.5 09-Jan-2015  matt Force main into .text
 1.4 19-Feb-2012  tsutsui branches: 1.4.2; 1.4.14; 1.4.16;
Fix boot failure on OF 2.0 machines.

Discussed with phx@ on port-macppc@:
http://mail-index.NetBSD.org/port-macppc/2012/02/18/msg001556.html

Should be pulled up to netbsd-6.
 1.3 28-Jan-2009  tsutsui branches: 1.3.14; 1.3.18; 1.3.20;
- modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision

Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.

Fixes PR install/38943 on macppc.
 1.2 12-Jan-2009  tsutsui WARNSfy
 1.1 26-Dec-2003  aymeric branches: 1.1.4; 1.1.104; 1.1.108; 1.1.116; 1.1.118;
ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.1.118.1 02-Feb-2009  snj Pull up following revision(s) (requested by tsutsui in ticket #407):
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.23
sys/arch/macppc/stand/ofwboot/boot.h: revision 1.3
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.22
sys/arch/macppc/stand/ofwboot/ofdev.h: revision 1.6
sys/arch/macppc/stand/ofwboot/version: revision 1.12
- modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision
Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.
Fixes PR install/38943 on macppc.
 1.1.116.2 03-Mar-2009  skrll Sync with HEAD.
 1.1.116.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.108.1 04-May-2009  yamt sync with head.
 1.1.104.1 17-Jan-2009  mjf Sync with HEAD.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 26-Dec-2003  skrll file boot.h was added on branch ktrace-lwp on 2004-08-03 10:37:31 +0000
 1.3.20.1 22-Feb-2012  riz Pull up following revision(s) (requested by tsutsui in ticket #22):
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.27
sys/arch/macppc/stand/ofwboot/boot.h: revision 1.4
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.26
Fix boot failure on OF 2.0 machines.
Discussed with phx@ on port-macppc@:
http://mail-index.NetBSD.org/port-macppc/2012/02/18/msg001556.html
Should be pulled up to netbsd-6.
 1.3.18.1 24-Feb-2012  mrg sync to -current.
 1.3.14.1 17-Apr-2012  yamt sync with head
 1.4.16.1 06-Apr-2015  skrll Sync with HEAD
 1.4.14.1 11-Jan-2015  martin Pull up following revision(s) (requested by chs in ticket #405):
sys/arch/macppc/stand/ofwboot/boot.h: revision 1.5
Force main into .text
 1.4.2.1 03-Dec-2017  jdolecek update from HEAD
 1.2 12-Mar-2004  wrstuden Fix ofwboot to deal with larger kernels. Rather than loading at
0x6?0000, load at 0xe00000. This gives us room for around 13 MB of
kernel, as opposed to the current 5 MB (0x600000 - 0x100000).

No changes to load-base or real-base are needed due to this change,
though machines that needed specific OFW settings before (OF 1.x
and 2.x) this change still need those settings.

Partially revert revision 1.25 -> 1.26 of ofwboot/Makefile & friends.
We do not need to distinguish between where ofwboot and ofwboot.{elf,xcf}
load; they are both fine loading somewhere other than load-base.
 1.1 01-Feb-2002  wrstuden branches: 1.1.2; 1.1.4; 1.1.6; 1.1.22;
Check in machinery to make ofwboot load at 600000, while ofwboot.elf
and ofwboot.xcf will load at 640000. The idea is that we can now
leave load-base at 600000, and it will work right for all three methods.

The problem is that the file loader and the net loader use load-base
as a scratch area, so if the executable really wants to load there,
the load fails.
 1.1.22.1 03-Aug-2004  skrll Sync with HEAD
 1.1.6.2 28-Feb-2002  nathanw Catch up to -current.
 1.1.6.1 01-Feb-2002  nathanw file boot1.c was added on branch nathanw_sa on 2002-02-28 04:10:41 +0000
 1.1.4.2 13-Feb-2002  he Pull up revision 1.1 (new, requested by wrstuden):
Make it so that we can use load-base 600000 for ofwboot, ofwboot.elf,
and ofwboot.xcf. The fundamental problem is that for ofwboot,
load-base needs to be the load point, while for ofwboot.xcf and
ofwboot.elf, it needs to not be the load point, but rather a
scratch buffer used for loading.
 1.1.4.1 01-Feb-2002  he file boot1.c was added on branch netbsd-1-5 on 2002-02-13 23:11:41 +0000
 1.1.2.2 11-Feb-2002  jdolecek Sync w/ -current.
 1.1.2.1 01-Feb-2002  jdolecek file boot1.c was added on branch kqueue on 2002-02-11 20:08:35 +0000
 1.5 11-Dec-2005  christos merge ktrace-lwp.
 1.4 26-Dec-2003  aymeric ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.3 22-Aug-2003  he Adapt to const-ification of first arg of open function in fs_ops.
 1.2 22-Jul-2001  wiz branches: 1.2.6; 1.2.22;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.1 14-Nov-2000  tsubai branches: 1.1.2; 1.1.6; 1.1.8;
Add hfs support. Currently this layer simply throw the request to the OF
(and the OF recognizes HFS).
 1.1.8.1 03-Aug-2001  lukem update to -current
 1.1.6.2 24-Apr-2001  he Pull up revision 1.1 (new, requested by tsubai);
Add HFS support to the boot loader.
 1.1.6.1 14-Nov-2000  he file hfs.c was added on branch netbsd-1-5 on 2001-04-24 22:56:37 +0000
 1.1.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.1.2.1 14-Nov-2000  bouyer file hfs.c was added on branch thorpej_scsipi on 2000-11-22 16:00:42 +0000
 1.2.22.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.22.2 18-Sep-2004  skrll Sync with HEAD.
 1.2.22.1 03-Aug-2004  skrll Sync with HEAD
 1.2.6.2 22-Jul-2001  wiz bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.2.6.1 22-Jul-2001  wiz file hfs.c was added on branch nathanw_sa on 2001-07-22 11:29:49 +0000
 1.3 11-Dec-2005  christos merge ktrace-lwp.
 1.2 22-Aug-2003  he Adapt to const-ification of first arg of open function in fs_ops.
 1.1 14-Nov-2000  tsubai branches: 1.1.2; 1.1.6; 1.1.28;
Add hfs support. Currently this layer simply throw the request to the OF
(and the OF recognizes HFS).
 1.1.28.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.28.2 18-Sep-2004  skrll Sync with HEAD.
 1.1.28.1 03-Aug-2004  skrll Sync with HEAD
 1.1.6.2 24-Apr-2001  he Pull up revision 1.1 (new, requested by tsubai);
Add HFS support to the boot loader.
 1.1.6.1 14-Nov-2000  he file hfs.h was added on branch netbsd-1-5 on 2001-04-24 22:56:37 +0000
 1.1.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.1.2.1 14-Nov-2000  bouyer file hfs.h was added on branch thorpej_scsipi on 2000-11-22 16:00:42 +0000
 1.2 10-Jul-2022  thorpej Fix order of hi / lo halves in the ofw_address_cells == 2 case.
 1.1 28-Feb-2021  thorpej branches: 1.1.4;
- When starting the boot program, cache a bunch of OFW frequently used
ihandles / phandles, rather than fetching them all the time.
- Change the signature of OF_call_method() to take an array of cells for
the inputs and outputs, rather than using variadic arguments. This
makes it much easier to use OF_call_method() when the format of the
arguments passed to a given method are determined at run-time
(due to e.g. #address-cells).
- Properly inform OpenFirmware where the kernel is loaded by using
"claim" on /chosen/memory and, if running in virtual-mode, using
"claim" on /chosen/mmu to reserve the VA, and "map" on /chosen/mmu
to enter the translation. (The kernel is still always mapped VA==PA.)
 1.1.4.2 03-Apr-2021  thorpej Sync with HEAD.
 1.1.4.1 28-Feb-2021  thorpej file loadfile_machdep.c was added on branch thorpej-futex on 2021-04-03 22:28:30 +0000
 1.10 12-Apr-2021  mrg remove shadowed (common) declarations of various libsa variables
from various boot programs. for macppc and zaurus, avoid building
with -fcommon any more.
 1.9 23-Apr-2020  joerg branches: 1.9.4;
rootpath is owned by libsa
 1.8 27-Jan-2006  uwe branches: 1.8.174;
Include relevant libsa headers to make WARNS=4 happy.
 1.7 27-Jan-2006  uwe Return 0 from net_close.
 1.6 11-Dec-2005  christos branches: 1.6.2;
merge ktrace-lwp.
 1.5 26-Dec-2003  aymeric branches: 1.5.16;
ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.4 13-Mar-2003  drochner branches: 1.4.2;
Remove remaining uses of libsa/netif -- the "netif" structure was only
used to lookup a "struct of_dev", everything else was ballast.
Do it straightforward now and assign the ofdev directly to io_netif.
 1.3 29-Mar-2002  tsutsui Cosmetics.
 1.2 07-May-1999  drochner branches: 1.2.16; 1.2.20;
include <lib/libkern/libkern.h> for intoa()/inet_ntoa()
 1.1 15-May-1998  tsubai branches: 1.1.10;
Initial import of macppc port.
 1.1.10.1 21-Jun-1999  thorpej Sync w/ -current.
 1.2.20.1 17-Apr-2002  nathanw Catch up to -current.
 1.2.16.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.4.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.2.1 03-Aug-2004  skrll Sync with HEAD
 1.5.16.1 21-Jun-2006  yamt sync with head.
 1.6.2.1 01-Feb-2006  yamt sync with head.
 1.8.174.1 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.9.4.1 17-Apr-2021  thorpej Sync with HEAD.
 1.1 26-Dec-2003  aymeric branches: 1.1.4;
ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 26-Dec-2003  skrll file net.h was added on branch ktrace-lwp on 2004-08-03 10:37:31 +0000
 1.14 28-Jan-2009  tsutsui More WARNSfy in #ifdef NETIF_DEBUG.
 1.13 12-Jan-2009  tsutsui Replace time_t values in libsa sources with the following two types
to avoid unnecessary 64 bit ops which would make binaries larger:

satime_t (currently unsigned int):
numbers in seconds returned by the machine dependent getsecs() function
which are used to measure relative time

saseconds_t (currently int):
numbers in seconds used to specify timeout to network drivers

Per discussion on current-users.
 1.12 12-Jan-2009  tsutsui WARNSfy
 1.11 27-Jan-2006  uwe branches: 1.11.72; 1.11.76; 1.11.84;
Get rid of unused variables.
 1.10 11-Dec-2005  christos branches: 1.10.2;
merge ktrace-lwp.
 1.9 26-Dec-2003  aymeric branches: 1.9.16;
ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.8 13-Mar-2003  drochner branches: 1.8.2;
Avoid conflict with sockets[] definition in net.h
and add some typecasts.
Thanks to Juergen Hannken-Illjes for compile-checking.
 1.7 13-Mar-2003  drochner make netif_close() return value void
fix prototype
 1.6 13-Mar-2003  drochner Remove remaining uses of libsa/netif -- the "netif" structure was only
used to lookup a "struct of_dev", everything else was ballast.
Do it straightforward now and assign the ofdev directly to io_netif.
 1.5 29-Mar-2002  tsutsui Cosmetics.
 1.4 22-Jul-2001  wiz branches: 1.4.6;
bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.3 04-Feb-1999  tsubai branches: 1.3.22;
Allocate DMA-aware memory area using "dma-alloc" method and use them
for data buffer.
XXX currently only netif_put() uses this.

iMac can use ofwboot.elf now.
 1.2 04-Feb-1999  tsubai Use "local-mac-address" property to get MAC address.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.3.22.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.3.22.1 03-Aug-2001  lukem update to -current
 1.4.6.2 17-Apr-2002  nathanw Catch up to -current.
 1.4.6.1 22-Jul-2001  nathanw file netif_of.c was added on branch nathanw_sa on 2002-04-17 00:03:44 +0000
 1.8.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.8.2.1 03-Aug-2004  skrll Sync with HEAD
 1.9.16.1 21-Jun-2006  yamt sync with head.
 1.10.2.1 01-Feb-2006  yamt sync with head.
 1.11.84.2 03-Mar-2009  skrll Sync with HEAD.
 1.11.84.1 19-Jan-2009  skrll Sync with HEAD.
 1.11.76.1 04-May-2009  yamt sync with head.
 1.11.72.1 17-Jan-2009  mjf Sync with HEAD.
 1.2 13-Mar-2003  drochner make netif_close() return value void
fix prototype
 1.1 13-Mar-2003  drochner Remove remaining uses of libsa/netif -- the "netif" structure was only
used to lookup a "struct of_dev", everything else was ballast.
Do it straightforward now and assign the ofdev directly to io_netif.
 1.31 10-Feb-2024  andvar Fix various typos in comments, log messages and documentation.
 1.30 17-Aug-2021  andvar fix multiplei repetitive typos in comments, messages and documentation. mainly because copy paste code big amount of files are affected.
 1.29 24-May-2021  martin PR 56205: make the 64bit build work
 1.28 28-Feb-2021  thorpej branches: 1.28.4; 1.28.6;
- When starting the boot program, cache a bunch of OFW frequently used
ihandles / phandles, rather than fetching them all the time.
- Change the signature of OF_call_method() to take an array of cells for
the inputs and outputs, rather than using variadic arguments. This
makes it much easier to use OF_call_method() when the format of the
arguments passed to a given method are determined at run-time
(due to e.g. #address-cells).
- Properly inform OpenFirmware where the kernel is loaded by using
"claim" on /chosen/memory and, if running in virtual-mode, using
"claim" on /chosen/mmu to reserve the VA, and "map" on /chosen/mmu
to enter the translation. (The kernel is still always mapped VA==PA.)
 1.27 16-Nov-2018  tsutsui branches: 1.27.12;
Fix boot failure from installation floppies. PR port-macppc/53103

Also bump version to denote a visible fix.
Should be pulled up to netbsd-8 and netbsd-7.
 1.26 19-Feb-2012  tsutsui branches: 1.26.14; 1.26.32; 1.26.38; 1.26.40;
Fix boot failure on OF 2.0 machines.

Discussed with phx@ on port-macppc@:
http://mail-index.NetBSD.org/port-macppc/2012/02/18/msg001556.html

Should be pulled up to netbsd-6.
 1.25 01-Feb-2012  matt branches: 1.25.2;
Allow ofwboot to read files from FAT(dosfs).
 1.24 07-Jul-2011  mrg branches: 1.24.2; 1.24.6;
avoid a multi-level cast issue
 1.23 17-Oct-2010  phx Read the Apple Partition Map to find a default root partition, when the
file name contains no OF path. Tested with OF3 (myself) and OF2 (tsutsui).
 1.22 28-Jan-2009  tsutsui branches: 1.22.4; 1.22.6;
- modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision

Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.

Fixes PR install/38943 on macppc.
 1.21 12-Jan-2009  tsutsui WARNSfy
 1.20 22-May-2008  hauke branches: 1.20.6; 1.20.8;
Added driver for the Creative Systems Inc. Hurdler CPI parallel printer card.
Timecounter support for the Z8536 counters A + B is not complete, yet.

Reviewed by Martin Husemann.
 1.19 24-May-2006  mrg branches: 1.19.60; 1.19.62; 1.19.64; 1.19.66;
rename the local 'devsw' to of_devsw - devsw is already defined in libsa
as an 'extern' but this one is static.
 1.18 28-Jan-2006  uwe branches: 1.18.2; 1.18.4; 1.18.6; 1.18.12;
Add relevant #include's to get prototypes.
 1.17 27-Jan-2006  uwe Mostly make WARNS=4 happy.
Same object code generated, except for return 0 in devclose.
 1.16 11-Dec-2005  christos branches: 1.16.2;
merge ktrace-lwp.
 1.15 23-Jun-2005  junyoung branches: 1.15.2;
Use FS_OPS() macro.
 1.14 26-Dec-2003  aymeric ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.13 08-Oct-2003  lukem Overhaul MBR handling (part 1):

<sys/bootblock.h>:
* Added definitions for the Master Boot Record (MBR) used by
a variety of systems (primarily i386), including the format
of the BIOS Parameter Block (BPB).
This information was cribbed from a variety of sources
including <sys/disklabel_mbr.h> which this is a superset of.

As part of this, some data structure elements and #defines
were renamed to be more "namespace friendly" and consistent
with other bootblocks and MBR documentation.
Update all uses of the old names to the new names.

<sys/disklabel_mbr.h>:
* Deprecated in favor of <sys/bootblock.h> (the latter is more
"host tool" friendly).

amd64 & i386:
* Renamed /usr/mdec/bootxx_dosfs to /usr/mdec/bootxx_msdos, to
be consistent with the naming convention of the msdosfs tools.

* Removed /usr/mdec/bootxx_ufs, as it's equivalent to bootxx_ffsv1
and it's confusing to have two functionally equivalent bootblocks,
especially given that "ufs" has multiple meanings (it could be
a synonym for "ffs", or the group of ffs/lfs/ext2fs file systems).

* Rework pbr.S (the first sector of bootxx_*):
+ Ensure that BPB (bytes 11..89) and the partition table
(bytes 446..509) do not contain code.
+ Add support for booting from FAT partitions if BOOT_FROM_FAT
is defined. (Only set for bootxx_msdos).
+ Remove "dummy" partition 3; if people want to installboot(8)
these to the start of the disk they can use fdisk(8) to
create a real MBR partition table...
+ Compile with TERSE_ERROR so it fits because of the above.
Whilst this is less user friendly, I feel it's important
to have a valid partition table and BPB in the MBR/PBR.

* Renamed /usr/mdec/biosboot to /usr/mdec/boot, to be consistent
with other platforms.

* Enable SUPPORT_DOSFS in /usr/mdec/boot (stage2), so that
we can boot off FAT partitions.

* Crank version of /usr/mdec/boot to 3.1, and fix some of the other
entries in the version file.

installboot(8) (i386):
* Read the existing MBR of the filesystem and retain the BIOS
Parameter Block (BPB) in bytes 11..89 and the MBR partition
table in bytes 446..509. (Previously installboot(8) would
trash those two sections of the MBR.)

mbrlabel(8):
* Use sys/lib/libkern/xlat_mbr_fstype.c instead of homegrown code
to map the MBR partition type to the NetBSD disklabel type.


Test built "make release" for i386, and new bootblocks verified to work
(even off FAT!).
 1.12 11-Jul-2003  aymeric strategy() should really have an ANSI prototype. Otherwise its daddr_t
argument gets passed wrongly.
This should fix a bug reported by Martin J. Laubach on port-macppc, and
was fixed two weeks ago in NetBSD/ofppc.
 1.11 18-Jun-2002  itojun branches: 1.11.6;
avoid hardcoding MBR_MAGICOFF and MBR_MAGIC.
 1.10 17-Jun-2002  itojun LABELSECTOR is redefined to be 0 on macppc, so it is not usable for MBR
disk label offset. use hardcoded "1" for now, i guess we need a new #define
in sys/disklabel_mbr.h. fixes ofwboot to boot kernel off from MBR-formatted
disk.
 1.9 30-Mar-2002  tsutsui branches: 1.9.2;
Add ustarfs ops.
 1.8 29-Mar-2002  tsutsui Cosmetics.
 1.7 13-Aug-2001  tsubai branches: 1.7.6;
Search "/netbsd.gz" and "/netbsd.macppc" in addition to "/netbsd".
 1.6 22-Jul-2001  wiz bcopy -> memcpy, bzero -> memset, bcmp -> memcmp.
Reviewed by Matt Thomas, ok'd by Tsubai Masanari.
 1.5 14-Nov-2000  tsubai branches: 1.5.4;
Add hfs support. Currently this layer simply throw the request to the OF
(and the OF recognizes HFS).
 1.4 05-Mar-1999  tsubai branches: 1.4.8; 1.4.18;
Adapt Open Firmware 3.x. 1.x and 3.x are not bug-compatible...
 1.3 04-Feb-1999  tsubai Allocate DMA-aware memory area using "dma-alloc" method and use them
for data buffer.
XXX currently only netif_put() uses this.

iMac can use ofwboot.elf now.
 1.2 31-Jan-1999  tsubai Adapt disklabel_mbr.h change.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.4.18.1 24-Apr-2001  he Pull up revision 1.5 (requested by tsubai):
Add HFS support to the boot loader.
 1.4.8.1 22-Nov-2000  bouyer Sync with HEAD.
 1.5.4.4 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.5.4.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.5.4.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.5.4.1 03-Aug-2001  lukem update to -current
 1.7.6.3 20-Jun-2002  nathanw Catch up to -current.
 1.7.6.2 17-Apr-2002  nathanw Catch up to -current.
 1.7.6.1 13-Aug-2001  nathanw file ofdev.c was added on branch nathanw_sa on 2002-04-17 00:03:45 +0000
 1.9.2.1 16-Jul-2002  gehenna catch up with -current.
 1.11.6.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.11.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.11.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.11.6.1 03-Aug-2004  skrll Sync with HEAD
 1.15.2.1 21-Jun-2006  yamt sync with head.
 1.16.2.1 01-Feb-2006  yamt sync with head.
 1.18.12.1 19-Jun-2006  chap Sync with head.
 1.18.6.1 26-Jun-2006  yamt sync with head.
 1.18.4.1 01-Jun-2006  kardel Sync with head.
 1.18.2.1 09-Sep-2006  rpaulo sync with head
 1.19.66.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.19.64.1 04-May-2009  yamt sync with head.
 1.19.62.1 04-Jun-2008  yamt sync with head
 1.19.60.2 17-Jan-2009  mjf Sync with HEAD.
 1.19.60.1 02-Jun-2008  mjf Sync with HEAD.
 1.20.8.1 02-Feb-2009  snj Pull up following revision(s) (requested by tsutsui in ticket #407):
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.23
sys/arch/macppc/stand/ofwboot/boot.h: revision 1.3
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.22
sys/arch/macppc/stand/ofwboot/ofdev.h: revision 1.6
sys/arch/macppc/stand/ofwboot/version: revision 1.12
- modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision
Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.
Fixes PR install/38943 on macppc.
 1.20.6.2 03-Mar-2009  skrll Sync with HEAD.
 1.20.6.1 19-Jan-2009  skrll Sync with HEAD.
 1.22.6.1 05-Mar-2011  rmind sync with head
 1.22.4.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.24.6.2 24-Feb-2012  mrg sync to -current.
 1.24.6.1 18-Feb-2012  mrg merge to -current.
 1.24.2.1 17-Apr-2012  yamt sync with head
 1.25.2.1 22-Feb-2012  riz Pull up following revision(s) (requested by tsutsui in ticket #22):
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.27
sys/arch/macppc/stand/ofwboot/boot.h: revision 1.4
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.26
Fix boot failure on OF 2.0 machines.
Discussed with phx@ on port-macppc@:
http://mail-index.NetBSD.org/port-macppc/2012/02/18/msg001556.html
Should be pulled up to netbsd-6.
 1.26.40.1 10-Jun-2019  christos Sync with HEAD
 1.26.38.1 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.26.32.1 18-Nov-2018  martin Pull up following revision(s) (requested by tsutsui in ticket #1097):

sys/arch/macppc/stand/ofwboot/version: revision 1.14
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.27

Fix boot failure from installation floppies. PR port-macppc/53727

Also bump version to denote a visible fix.

Should be pulled up to netbsd-8 and netbsd-7.
 1.26.14.1 18-Nov-2018  martin Pull up following revision(s) (requested by tsutsui in ticket #1651):

sys/arch/macppc/stand/ofwboot/version: revision 1.14
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.27

Fix boot failure from installation floppies. PR port-macppc/53727

Also bump version to denote a visible fix.

Should be pulled up to netbsd-8 and netbsd-7.
 1.27.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.28.6.1 31-May-2021  cjep sync with head
 1.28.4.1 17-Jun-2021  thorpej Sync w/ HEAD.
 1.6 28-Jan-2009  tsutsui - modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision

Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.

Fixes PR install/38943 on macppc.
 1.5 11-Dec-2005  christos branches: 1.5.78; 1.5.86; 1.5.88;
merge ktrace-lwp.
 1.4 26-Dec-2003  aymeric ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.3 13-Aug-2001  tsubai branches: 1.3.6; 1.3.22;
Search "/netbsd.gz" and "/netbsd.macppc" in addition to "/netbsd".
 1.2 04-Feb-1999  tsubai branches: 1.2.22;
Allocate DMA-aware memory area using "dma-alloc" method and use them
for data buffer.
XXX currently only netif_put() uses this.

iMac can use ofwboot.elf now.
 1.1 15-May-1998  tsubai Initial import of macppc port.
 1.2.22.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.3.22.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.3.22.2 18-Sep-2004  skrll Sync with HEAD.
 1.3.22.1 03-Aug-2004  skrll Sync with HEAD
 1.3.6.2 13-Aug-2001  tsubai Search "/netbsd.gz" and "/netbsd.macppc" in addition to "/netbsd".
 1.3.6.1 13-Aug-2001  tsubai file ofdev.h was added on branch nathanw_sa on 2001-08-13 15:38:12 +0000
 1.5.88.1 02-Feb-2009  snj Pull up following revision(s) (requested by tsutsui in ticket #407):
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.23
sys/arch/macppc/stand/ofwboot/boot.h: revision 1.3
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.22
sys/arch/macppc/stand/ofwboot/ofdev.h: revision 1.6
sys/arch/macppc/stand/ofwboot/version: revision 1.12
- modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision
Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.
Fixes PR install/38943 on macppc.
 1.5.86.1 03-Mar-2009  skrll Sync with HEAD.
 1.5.78.1 04-May-2009  yamt sync with head.
 1.9 28-Feb-2021  thorpej - When starting the boot program, cache a bunch of OFW frequently used
ihandles / phandles, rather than fetching them all the time.
- Change the signature of OF_call_method() to take an array of cells for
the inputs and outputs, rather than using variadic arguments. This
makes it much easier to use OF_call_method() when the format of the
arguments passed to a given method are determined at run-time
(due to e.g. #address-cells).
- Properly inform OpenFirmware where the kernel is loaded by using
"claim" on /chosen/memory and, if running in virtual-mode, using
"claim" on /chosen/mmu to reserve the VA, and "map" on /chosen/mmu
to enter the translation. (The kernel is still always mapped VA==PA.)
 1.8 06-Jun-2018  uwe branches: 1.8.14;
Provide commented out OF_enter() that comes in handy when debugging.
 1.7 24-Dec-2007  perry branches: 1.7.96;
Remove __attribute__((__noreturn__)) from things already marked __dead
Found by the department of redundancy department.
 1.6 27-Jan-2006  uwe branches: 1.6.48; 1.6.58; 1.6.62;
More constification.
 1.5 27-Jan-2006  uwe Make -Wcast-qual happy.
 1.4 11-Dec-2005  christos branches: 1.4.2;
merge ktrace-lwp.
 1.3 26-Dec-2003  aymeric branches: 1.3.16;
ANSIfy and clean up prototypes.
This has been lying around in my tree for too long now.
 1.2 29-Mar-2002  tsutsui branches: 1.2.10;
Cosmetics.
 1.1 15-May-1998  tsubai branches: 1.1.28; 1.1.32;
Initial import of macppc port.
 1.1.32.1 17-Apr-2002  nathanw Catch up to -current.
 1.1.28.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.2.10.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.10.2 18-Sep-2004  skrll Sync with HEAD.
 1.2.10.1 03-Aug-2004  skrll Sync with HEAD
 1.3.16.2 21-Jan-2008  yamt sync with head
 1.3.16.1 21-Jun-2006  yamt sync with head.
 1.4.2.1 01-Feb-2006  yamt sync with head.
 1.6.62.1 02-Jan-2008  bouyer Sync with HEAD
 1.6.58.1 26-Dec-2007  ad Sync with head.
 1.6.48.1 09-Jan-2008  matt sync with HEAD
 1.7.96.1 25-Jun-2018  pgoyette Sync with HEAD
 1.8.14.1 03-Apr-2021  thorpej Sync with HEAD.
 1.16 13-Jan-2025  tsutsui Tweak bootpath strings in ofwboot for OpenBIOS used on qemu-system-ppc.

Bump version to denote the visible change.

This makes qemu-system-ppc -M mac99 booting from a harddisk image
using ofwboot installed by installboot(8) with /usr/mdec/bootxx:
---
% qemu-system-ppc --version
QEMU emulator version 9.1.2
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers
% qemu-system-ppc -M mac99 -drive file=NetBSD-10.1-macppc.img,media=disk,format=raw -nographic

>> =============================================================
>> OpenBIOS 1.1 [Mar 7 2023 22:21]
>> Configuration device id QEMU version 1 machine id 1
>> CPUs: 1
>> Memory: 128M
>> UUID: 00000000-0000-0000-0000-000000000000
>> CPU type PowerPC,G4
milliseconds isn't unique.
Welcome to OpenBIOS v1.1 built on Mar 7 2023 22:21
Trying hd:,\\:tbxi...
Trying hd:,\ppc\bootinfo.txt...
Trying hd:,%BOOT...
>> Not a bootable ELF image
>> switching to new context:

OF_open bootpath=/pci@f2000000/mac-io@c/ata-3@20000/disk@0
read stage 2 blocks: 01234. done!
starting stage 2...

>> NetBSD/macppc OpenFirmware Boot, Revision 1.14 (Mon Jan 13 14:50:50 UTC 2025)
>> Open Firmware version 3.x
>> Open Firmware running in virtual-mode.
prom2boot: bootpath from OF: "/pci@f2000000/mac-io@c/ata-3@20000/disk@0:,%BOOT"
prom2boot: bootpath patched: "/pci@f2000000/mac-io@c/ata-3@20000/disk@0:"
bootline=
Trying /netbsd
11860332+167196 [463456+447084]=0xc570ec
start=0x100000
[ 1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
[ 1.0000000] 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
[ 1.0000000] 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
[ 1.0000000] 2024
[ 1.0000000] The NetBSD Foundation, Inc. All rights reserved.
[ 1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[ 1.0000000] The Regents of the University of California. All rights reserved.

[ 1.0000000] NetBSD 10.1 (GENERIC) #0: Mon Dec 16 13:08:11 UTC 2024
[ 1.0000000] mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/macppc/compile/GENERIC
---
 1.15 28-Feb-2021  thorpej branches: 1.15.18; 1.15.24;
- When starting the boot program, cache a bunch of OFW frequently used
ihandles / phandles, rather than fetching them all the time.
- Change the signature of OF_call_method() to take an array of cells for
the inputs and outputs, rather than using variadic arguments. This
makes it much easier to use OF_call_method() when the format of the
arguments passed to a given method are determined at run-time
(due to e.g. #address-cells).
- Properly inform OpenFirmware where the kernel is loaded by using
"claim" on /chosen/memory and, if running in virtual-mode, using
"claim" on /chosen/mmu to reserve the VA, and "map" on /chosen/mmu
to enter the translation. (The kernel is still always mapped VA==PA.)
 1.14 16-Nov-2018  tsutsui branches: 1.14.12;
Fix boot failure from installation floppies. PR port-macppc/53103

Also bump version to denote a visible fix.
Should be pulled up to netbsd-8 and netbsd-7.
 1.13 17-Oct-2010  phx branches: 1.13.34; 1.13.52; 1.13.58; 1.13.60;
Read the Apple Partition Map to find a default root partition, when the
file name contains no OF path. Tested with OF3 (myself) and OF2 (tsutsui).
 1.12 28-Jan-2009  tsutsui branches: 1.12.4; 1.12.6;
- modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision

Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.

Fixes PR install/38943 on macppc.
 1.11 11-Dec-2005  christos branches: 1.11.78; 1.11.86; 1.11.88;
merge ktrace-lwp.
 1.10 31-May-2004  schmonz Support userconf(4) ("boot -c"). Reviewed by Bill Studenmund.
 1.9 17-Mar-2004  wrstuden branches: 1.9.2;
Have Locore zero out the bss (which includes our stack) BEFORE
we start calling into C code. Previously we called memset() in our
C code. Unfortunately the compiler would sometimes store local variables
on the statck, which got killed by the memset(). Oops!
 1.8 17-Mar-2004  wrstuden Bump version to help track down issues with kernel loading.
 1.7 18-Oct-2002  wrstuden branches: 1.7.6;
Should have done this sooner. Bump to version 1.7 to indicate good
alloc.c.
 1.6 30-Mar-2002  tsutsui branches: 1.6.4;
Bump version for ustarfs support.
 1.5 09-Nov-2001  scw Bump the version numbers of all bootloaders which use loadfile_elfXX() now
that it tries hard to avoid backwards seeks.
 1.4 02-Aug-2001  bjh21 branches: 1.4.4; 1.4.6;
Bump version numbers of all bootloaders that use loadfile/ELF, to account for
my changes to symbol loading. I should probably have done this at the time,
but it's better late than never.
 1.3 24-Sep-2000  jdolecek branches: 1.3.4;
add new macro BOOT_FLAG() (defined in <sys/boot_flag.h>) - this
maps standard boot flags to corresponding RB_* values
use BOOT_FLAG() in port's MD code as appropriate

as discussed on tech-kern, add new boot flags -v, -q for booting
verbosely or quietly, and corresponding AB_VERBOSE/AB_QUIET
boot flags; also add FreeBSD-compatible bootverbose macro and
NetBSD-specific bootquiet macro

for hpcmips, use new bootverbose instead of it's own hpcmips_verbose

Tested on i386, and to limited extend (compile of affected files) also for
mvme68k, hp300, luna68k, sun3.
 1.2 29-Apr-1999  tsubai branches: 1.2.2;
Use MI loadfile().
 1.1 15-May-1998  tsubai branches: 1.1.10;
Initial import of macppc port.
 1.1.10.1 21-Jun-1999  thorpej Sync w/ -current.
 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.4.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.3.4.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.3.4.1 03-Aug-2001  lukem update to -current
 1.4.6.3 11-Nov-2002  nathanw Catch up to -current
 1.4.6.2 17-Apr-2002  nathanw Catch up to -current.
 1.4.6.1 02-Aug-2001  nathanw file version was added on branch nathanw_sa on 2002-04-17 00:03:45 +0000
 1.4.4.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.6.4.1 21-Oct-2002  lukem Pull up revision 1.7 (requested by wrstuden in ticket #931):
Should have done this sooner. Bump to version 1.7 to indicate good
alloc.c.
 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.9.2.1 01-Jun-2004  jmc Pullup rev 1.10 (requested by schmonz in ticket #428)

Support userconf(4) ("boot -c").
 1.11.88.1 02-Feb-2009  snj Pull up following revision(s) (requested by tsutsui in ticket #407):
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.23
sys/arch/macppc/stand/ofwboot/boot.h: revision 1.3
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.22
sys/arch/macppc/stand/ofwboot/ofdev.h: revision 1.6
sys/arch/macppc/stand/ofwboot/version: revision 1.12
- modify a pathname parse function to explicitly return devname and filename
- check floppyboot properly per devname before loadfile(), not in devopen()
- disable LOAD_NOTE on floppyboot to avoid backward seek
- bump revision
Tested floppy boot and IDE boot on Apus2000 with OpenFirmware 2.0.
Fixes PR install/38943 on macppc.
 1.11.86.1 03-Mar-2009  skrll Sync with HEAD.
 1.11.78.1 04-May-2009  yamt sync with head.
 1.12.6.1 05-Mar-2011  rmind sync with head
 1.12.4.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.13.60.1 10-Jun-2019  christos Sync with HEAD
 1.13.58.1 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.13.52.1 18-Nov-2018  martin Pull up following revision(s) (requested by tsutsui in ticket #1097):

sys/arch/macppc/stand/ofwboot/version: revision 1.14
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.27

Fix boot failure from installation floppies. PR port-macppc/53727

Also bump version to denote a visible fix.

Should be pulled up to netbsd-8 and netbsd-7.
 1.13.34.1 18-Nov-2018  martin Pull up following revision(s) (requested by tsutsui in ticket #1651):

sys/arch/macppc/stand/ofwboot/version: revision 1.14
sys/arch/macppc/stand/ofwboot/ofdev.c: revision 1.27

Fix boot failure from installation floppies. PR port-macppc/53727

Also bump version to denote a visible fix.

Should be pulled up to netbsd-8 and netbsd-7.
 1.14.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.15.24.1 02-Aug-2025  perseant Sync with HEAD
 1.15.18.1 20-Feb-2025  martin Pull up following revision(s) (requested by tsutsui in ticket #1048):

sys/arch/macppc/stand/ofwboot/version: revision 1.16
sys/arch/macppc/stand/ofwboot/boot.c: revision 1.32

Tweak bootpath strings in ofwboot for OpenBIOS used on qemu-system-ppc.
Bump version to denote the visible change.

This makes qemu-system-ppc -M mac99 booting from a harddisk image
using ofwboot installed by installboot(8) with /usr/mdec/bootxx:
---
% qemu-system-ppc --version
QEMU emulator version 9.1.2
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers
% qemu-system-ppc -M mac99 -drive file=NetBSD-10.1-macppc.img,media=disk,format=raw -nographic
> =============================================================
> OpenBIOS 1.1 [Mar 7 2023 22:21]
> Configuration device id QEMU version 1 machine id 1
> CPUs: 1
> Memory: 128M
> UUID: 00000000-0000-0000-0000-000000000000
> CPU type PowerPC,G4
milliseconds isn't unique.
Welcome to OpenBIOS v1.1 built on Mar 7 2023 22:21
Trying hd:,\\:tbxi...
Trying hd:,\ppc\bootinfo.txt...
Trying hd:,%BOOT...
> Not a bootable ELF image
> switching to new context:
OF_open bootpath=/pci@f2000000/mac-io@c/ata-3@20000/disk@0
read stage 2 blocks: 01234. done!
starting stage 2...
> NetBSD/macppc OpenFirmware Boot, Revision 1.14 (Mon Jan 13 14:50:50 UTC 2025)
> Open Firmware version 3.x
> Open Firmware running in virtual-mode.
prom2boot: bootpath from OF: "/pci@f2000000/mac-io@c/ata-3@20000/disk@0:,%BOOT"
prom2boot: bootpath patched: "/pci@f2000000/mac-io@c/ata-3@20000/disk@0:"
bootline=
Trying /netbsd
11860332+167196 [463456+447084]=0xc570ec
start=0x100000
[ 1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
[ 1.0000000] 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
[ 1.0000000] 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
[ 1.0000000] 2024
[ 1.0000000] The NetBSD Foundation, Inc. All rights reserved.
[ 1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[ 1.0000000] The Regents of the University of California. All rights reserved.
[ 1.0000000] NetBSD 10.1 (GENERIC) #0: Mon Dec 16 13:08:11 UTC 2024
[ 1.0000000] mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/macppc/compile/GENERIC
---

RSS XML Feed