History log of /netbsd-current/sys/dev/pci/twe.c
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.111 02-Feb-2024 andvar

s/mangement/management/ in comments.


Revision tags: netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base
# 1.110 07-Aug-2021 thorpej

Merge thorpej-cfargs2.


Revision tags: thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base
# 1.109 24-Apr-2021 thorpej

branches: 1.109.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?).


Revision tags: thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
# 1.108 10-Nov-2019 chs

branches: 1.108.10;
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.


Revision tags: netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.107 09-Dec-2018 jdolecek

use pci_intr_establish_xname() everywhere


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004
# 1.106 27-Sep-2016 pgoyette

branches: 1.106.6; 1.106.14; 1.106.16;
Modularize the ld driver and all of its attachments. Ensure that all
parents are capable of rescan (or otherwise provide a means of attaching
children post-initialization).


Revision tags: localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.105 14-Jul-2016 msaitoh

branches: 1.105.2;
KNF. No functional change.


Revision tags: nick-nhusb-base-20160907
# 1.104 07-Jul-2016 msaitoh

KNF. Remove extra spaces. No functional change.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.103 25-Jul-2014 dholland

branches: 1.103.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 rmind-smpnet-nbase rmind-smpnet-base
# 1.102 29-Mar-2014 christos

branches: 1.102.2;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.


Revision tags: riastradh-drm2-base3
# 1.101 16-Mar-2014 dholland

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.100 25-Feb-2014 pooka

Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.


# 1.99 15-Sep-2013 martin

Remove unused variable


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.98 02-Dec-2012 chs

branches: 1.98.2;
fix device/softc split: initialize sc->sc_dev.


Revision tags: yamt-pagecache-base6
# 1.97 27-Oct-2012 chs

split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.96 27-Jan-2012 para

branches: 1.96.6;
extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.95 30-Jun-2011 wiz

branches: 1.95.2; 1.95.6;
dependant -> dependent


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.94 24-May-2011 joerg

Explicitly get rid of constness.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231
# 1.93 14-Nov-2010 uebayasi

branches: 1.93.2;
Avoid pointless use of a sysctl definition, CTL_NAMES. Clean up whitespace.


# 1.92 13-Nov-2010 uebayasi

Don't pull in the whole uvm(9) API to access only PAGE_SIZE and
some other constants. These are provided by sys/param.h now.


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.91 27-Jul-2010 jakllsch

printf() size_t with 'z' format modifier in debug code.


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase jym-xensuspend-base
# 1.90 12-May-2009 cegger

branches: 1.90.2; 1.90.4;
use device_private().
"looks good" ad@
XXX for the device_t/softc split, please check the driver that no cases have been missed.


# 1.89 06-May-2009 cegger

struct device * -> device_t, no functional changes intended.


# 1.88 06-May-2009 cegger

struct cfdata * -> cfdata_t, no functional changes intended.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
# 1.87 08-Jun-2008 tsutsui

branches: 1.87.12;
Replace device_lookup() with device_lookup_private() on getting softc
for future device_t/softc spilt.


Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.86 28-Apr-2008 martin

branches: 1.86.2;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base
# 1.85 10-Apr-2008 cegger

branches: 1.85.2; 1.85.4;
use aprint_*_dev and device_xname


Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
# 1.84 19-Oct-2007 ad

branches: 1.84.16;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
# 1.83 04-Mar-2007 christos

branches: 1.83.2; 1.83.14; 1.83.16; 1.83.20;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base
# 1.82 02-Dec-2006 elad

branches: 1.82.2;
Change kauth(9) KPI for kauth_authorize_device_passthru() to add another
argument, u_long, serving as a bit-mask of generic requests for the
passthru request.

Discussed on tech-security@ and tech-kern@. Okay tls@.


Revision tags: netbsd-4-base
# 1.81 16-Nov-2006 christos

branches: 1.81.2;
__unused removal on arguments; approved by core.


# 1.80 08-Nov-2006 elad

Replace securelevel checks with kauth(9) calls.


Revision tags: yamt-splraiseipl-base2
# 1.79 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
# 1.78 03-Sep-2006 christos

branches: 1.78.2; 1.78.4;
- add missing initializer
- add missing function decl


# 1.77 27-Aug-2006 xtraeme

Initialize a variable to 0 to appease gcc4 with -O3.


# 1.76 23-Aug-2006 christos

Acting as Elad's keyboard:

Place the securelevel checks in their logical locations.
This will be clearer in the future when code changes to use kauth(9) calls.

input and okay ad@


Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
# 1.75 11-Apr-2006 rpaulo

Coverity ID 2859: Don't leak ccb, move the allocation a few lines
lower next to where it'll be used for the first time.


Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
# 1.74 23-Feb-2006 simonb

branches: 1.74.2; 1.74.4; 1.74.6;
Fix memory leak in the TWEIO_GET_PARAM ioctl.
Tested by gendalia@.


# 1.73 29-Jan-2006 dsl

branches: 1.73.2; 1.73.4;
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.72 24-Dec-2005 perry

branches: 1.72.2;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.71 11-Dec-2005 christos

merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.70 26-Aug-2005 drochner

kill some more simple submatch() functions, use config_stdsubmatch()


# 1.69 25-Aug-2005 drochner

replace the "locdesc_t" structure carrying the number of locators
explicitely by a plain integer array
the length in now known to all relevant parties, so this avoids
duplication of information, and we can allocate that thing in
drivers without hacks


# 1.68 28-Jun-2005 thorpej

branches: 1.68.2;
Use ANSI function decls and static.


# 1.67 20-Jun-2005 atatat

Change the rest of the sysctl subsystem to use const consistently.
The __UNCONST macro is now used only where necessary and the RW macros
are gone. Most of the changes here are consumers of the
sysctl_createv(9) interface that now takes a pair of const pointers
which used not to be.


# 1.66 30-May-2005 christos

- const poisoning
- avoid variable shadowing.


Revision tags: kent-audio2-base
# 1.65 01-Apr-2005 yamt

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.


Revision tags: netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base
# 1.64 16-Mar-2005 erh

branches: 1.64.2; 1.64.4;
Fix PR#24302. Clear PCI abort and parity errors to give the card a chance at
working. Patch provided by Jean-Luc Wasmer, based on the FreeBSD driver.


# 1.63 27-Feb-2005 perry

nuke trailing whitespace


# 1.62 20-Feb-2005 heas

Add sysctl node hw.tweN.driver_version whose value is FreeBSD's driver version
number for now. This is used by 3ware's FreeBSD version of their CLI to find
controllers and check the driver version.


# 1.61 15-Feb-2005 lukem

Add some more stripe sizes observed in the field.
Add "JBOD" to twe_table_unittype[].


Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
# 1.60 23-Sep-2004 heas

branches: 1.60.4; 1.60.6;
Take the modulus of the AEN queue tail number rather than the mask of. Now
the tail pointer advances properly.


# 1.59 13-Sep-2004 drochner

a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
on "locators.h"


# 1.58 04-Jun-2004 thorpej

twe_ccb_map(): Remove the DEBUG panic case of "unknown" S/G list offset.
In all likelihood, this is a command passed from userspace management
tools where no S/G list is needed because no data is being passed.


# 1.57 03-Jun-2004 heas

Double the time we wait for the attention bit following a soft reset (and make
the timeout message just a bit clearer), as the latest firmware appears to be
a bit slower.
OK from Jason Thorpe.


# 1.56 27-May-2004 thorpej

Rename twe_tweio_command_handler() to twe_ccb_wait_handler() and expose it.


# 1.55 15-Apr-2004 thorpej

Assign a syslog priority to the AEN codes and use that priority when
logging the error message. Potentially allows critical messages to be
noticed much more quickly.


Revision tags: netbsd-2-0-base
# 1.54 04-Dec-2003 thorpej

branches: 1.54.2;
When performing command pass-through for management tools, don't poll
for CCB completion. Instead, sleep, and use a CCB callback to wake the
sleeper.


# 1.53 10-Nov-2003 thorpej

Correct the size passed to a malloc() call when performing command
passthrough for userland management tools.


# 1.52 30-Oct-2003 simonb

Remove some assigned-to but otherwise unused variables.


# 1.51 25-Sep-2003 thorpej

Fix up the TWEIO_COMMAND code to actually work. The 3ware management API
library can now communicate with the card.


# 1.50 25-Sep-2003 thorpej

- Fix a bug I introduced in a previous commit (oops).
- Add the twe_drivecommand ioctl structure.


# 1.49 23-Sep-2003 thorpej

- Make CCB allocation slightly more efficient by changing how the
CCB is returned to the caller.
- Make code paths that can use twe_ccb_alloc_wait() use it, and assert
that a CCB is always returned from that function.
- Assert that a CCB is always returned when allocating the reserved CCB
for an AEN fetch.


# 1.48 23-Sep-2003 thorpej

Add a comment clarifying why we clear TWEF_AEN in twe_reset() now.


# 1.47 23-Sep-2003 thorpej

Separate the AEN fetching path into its own special path that uses the
reserved CCB. This means that all remaining callers of twe_param_get*()
are called from a valid thread context, and thus have no need to use a
reserved CCB. This will allow for further cleanup in a future commit.


# 1.46 22-Sep-2003 thorpej

Add support for dynamically attaching and detaching RAID array units.


# 1.45 22-Sep-2003 thorpej

Improve AEN handling:
- Make AENs use the generic code table stuff.
- Add a few more AEN codes (from FreeBSD).
- Correct the context of a few AEN codes (some were listed as
"unit context" when they're really "port context").
- Add a queue of AENs that management tools in userspace can poll
(from FreeBSD).


# 1.44 21-Sep-2003 thorpej

Fetch info about the drives during attach, and inject that info
into the msgbuf using aprint_verbose().


# 1.43 21-Sep-2003 thorpej

Expose the "param get" functions.


# 1.42 21-Sep-2003 thorpej

- Record more information about the array unit, including array
type and stripe depth.
- Report array type and stripe depth when attaching the logical drive.


# 1.41 21-Sep-2003 thorpej

Add some helper routines to fetch 1, 2, and 4 byte parameter values.

Modeled after code in FreeBSD.


# 1.40 21-Sep-2003 thorpej

Add some additional code -> description tables, and add a generic
routine to translate code -> description. AENs will be converted
to this mechanism in a future commit.

Partially from FreeBSD.


# 1.39 03-Aug-2003 jdolecek

tweioctl(): store the result of twe_param_get() directly to the right
variable rather than using (void *) temporary
should fix strict aliasing warning of gcc 3.3


# 1.38 25-Jul-2003 jdolecek

print some additional information about the controller on boot (from FreeBSD)

use aprint_* as appropriate
change some debug #ifdef DIAGNOSTIC messages into #ifdef DEBUG
make aenfmt[] more const
change twe_param_get() signature to take (struct twe_param **) last arg, and
remove now unnecessary casts


# 1.37 29-Jun-2003 fvdl

branches: 1.37.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.


# 1.36 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


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.35 01-Jan-2003 thorpej

Use aprint_normal() in cfprint routines.


Revision tags: gmcgarry_ctxsw_base gmcgarry_ucred_base
# 1.34 16-Dec-2002 fvdl

Remove comparison of u_int8_t value to (512 - a few bytes), since it's
always false. As found by gcc-current.


# 1.33 13-Dec-2002 christos

Add /dev/twex support. To be used with FreeBSD's 3dmd.
Initial port from Masaru OKI <oki@netbsd.org>, with KNF, memory leak fixes,
denial of service problems, and null pointer fixes from me.


# 1.32 25-Nov-2002 thorpej

Avoid strict-alias warnings.


Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.31 02-Oct-2002 thorpej

Add trailing ; to CFATTACH_DECL.


# 1.30 30-Sep-2002 thorpej

Use CFATTACH_DECL().


# 1.29 27-Sep-2002 thorpej

Declare all cfattach structures const.


# 1.28 27-Sep-2002 thorpej

Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.


Revision tags: gehenna-devsw-base
# 1.27 06-Aug-2002 kim

Missing comma in aenfmt array initialization.


# 1.26 10-Jul-2002 christos

Add missing messages from FreeBSD's driver. Re-organize a bit how the
message is formatted and printed.


# 1.25 01-Jun-2002 lukem

SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups


# 1.24 24-May-2002 christos

NBPG is not constant on the sparc, so don't use CPP tricks.


# 1.23 24-May-2002 christos

Deal with the NBPG problem in a better way.


Revision tags: netbsd-1-6-base
# 1.22 18-May-2002 ad

branches: 1.22.2;
- Use write barriers.
- NBPG -> PAGE_SIZE.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.21 13-Nov-2001 lukem

branches: 1.21.8;
add RCSID


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3
# 1.20 10-Oct-2001 ad

branches: 1.20.4;
Back out previous - it causes panics.


Revision tags: thorpej-devvp-base2
# 1.19 20-Sep-2001 ad

Use bus_dma to get temporary I/O buffers.


# 1.18 16-Sep-2001 wiz

Spell 'occurred' with two 'r's.


Revision tags: post-chs-ubcperf
# 1.17 15-Sep-2001 chs

a whole bunch of changes to improve performance and robustness under load:

- remove special treatment of pager_map mappings in pmaps. this is
required now, since I've removed the globals that expose the address range.
pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's
no longer any need to special-case it.
- eliminate struct uvm_vnode by moving its fields into struct vnode.
- rewrite the pageout path. the pager is now responsible for handling the
high-level requests instead of only getting control after a bunch of work
has already been done on its behalf. this will allow us to UBCify LFS,
which needs tighter control over its pages than other filesystems do.
writing a page to disk no longer requires making it read-only, which
allows us to write wired pages without causing all kinds of havoc.
- use a new PG_PAGEOUT flag to indicate that a page should be freed
on behalf of the pagedaemon when it's unlocked. this flag is very similar
to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the
pageout fails due to eg. an indirect-block buffer being locked.
this allows us to remove the "version" field from struct vm_page,
and together with shrinking "loan_count" from 32 bits to 16,
struct vm_page is now 4 bytes smaller.
- no longer use PG_RELEASED for swap-backed pages. if the page is busy
because it's being paged out, we can't release the swap slot to be
reallocated until that write is complete, but unlike with vnodes we
don't keep a count of in-progress writes so there's no good way to
know when the write is done. instead, when we need to free a busy
swap-backed page, just sleep until we can get it busy ourselves.
- implement a fast-path for extending writes which allows us to avoid
zeroing new pages. this substantially reduces cpu usage.
- encapsulate the data used by the genfs code in a struct genfs_node,
which must be the first element of the filesystem-specific vnode data
for filesystems which use genfs_{get,put}pages().
- eliminate many of the UVM pagerops, since they aren't needed anymore
now that the pager "put" operation is a higher-level operation.
- enhance the genfs code to allow NFS to use the genfs_{get,put}pages
instead of a modified copy.
- clean up struct vnode by removing all the fields that used to be used by
the vfs_cluster.c code (which we don't use anymore with UBC).
- remove kmem_object and mb_object since they were useless.
instead of allocating pages to these objects, we now just allocate
pages with no object. such pages are mapped in the kernel until they
are freed, so we can use the mapping to find the page to free it.
this allows us to remove splvm() protection in several places.

The sum of all these changes improves write throughput on my
decstation 5000/200 to within 1% of the rate of NetBSD 1.5
and reduces the elapsed time for "make release" of a NetBSD 1.5
source tree on my 128MB pc to 10% less than a 1.5 kernel took.


Revision tags: pre-chs-ubcperf thorpej-devvp-base
# 1.16 19-Jul-2001 thorpej

branches: 1.16.2;
Use BUS_DMA_READ and BUS_DMA_WRITE in some obvious places.


# 1.15 31-May-2001 ad

branches: 1.15.2;
Reduce the delay when polling so that dumps go faster.


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.14 30-Mar-2001 ad

AEN 0x000c appears to mean `init started'. From lukem.


# 1.13 07-Mar-2001 thorpej

Add BUS_DMA_STREAMING to data transfer maps.


# 1.12 04-Mar-2001 ad

branches: 1.12.2;
Don't choke when we get lots of AENs all at once.


# 1.11 25-Feb-2001 ad

Wait 10x longer for status bits.


# 1.10 11-Feb-2001 ad

Match an upcoming product.


# 1.9 23-Jan-2001 ad

Oops, be sure to clear the ATTN interrupt on error.


# 1.8 22-Jan-2001 ad

opt_twe.h isn't needed any more.


# 1.7 22-Jan-2001 ad

- Complain if interrupt-driven retrieval of AENs fails somehow.
- Clamp the number of outstanding commands to 129.
- Other tweaks.


# 1.6 14-Jan-2001 thorpej

splimp() -> splvm()


# 1.5 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.4 14-Nov-2000 thorpej

branches: 1.4.2;
NBPG -> PAGE_SIZE


# 1.3 08-Nov-2000 ad

- Pull in some updates from FreeBSD - mainly clarifications. Thanks to
Mike Smith <msmith@freebsd.org> for pointing these out.
- Ensure that we get AENs: reserve one CCB/command block for parameter
retrieval, and chain AEN retrievals that are the result of an interrupt.


# 1.2 20-Oct-2000 ad

- tsleep()/wakeup_one() will hurt when under load, so use a queue instead.
- Don't copy to or from the aligned buffer unless there's a need to.


# 1.1 19-Oct-2000 ad

Driver for the 3ware Escalade family of RAID controllers.


# 1.110 07-Aug-2021 thorpej

Merge thorpej-cfargs2.


Revision tags: thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base
# 1.109 24-Apr-2021 thorpej

branches: 1.109.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?).


Revision tags: thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
# 1.108 10-Nov-2019 chs

branches: 1.108.10;
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.


Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.107 09-Dec-2018 jdolecek

use pci_intr_establish_xname() everywhere


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004
# 1.106 27-Sep-2016 pgoyette

branches: 1.106.6; 1.106.14; 1.106.16;
Modularize the ld driver and all of its attachments. Ensure that all
parents are capable of rescan (or otherwise provide a means of attaching
children post-initialization).


Revision tags: localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.105 14-Jul-2016 msaitoh

branches: 1.105.2;
KNF. No functional change.


Revision tags: nick-nhusb-base-20160907
# 1.104 07-Jul-2016 msaitoh

KNF. Remove extra spaces. No functional change.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.103 25-Jul-2014 dholland

branches: 1.103.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 rmind-smpnet-nbase rmind-smpnet-base
# 1.102 29-Mar-2014 christos

branches: 1.102.2;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.


Revision tags: riastradh-drm2-base3
# 1.101 16-Mar-2014 dholland

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.100 25-Feb-2014 pooka

Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.


# 1.99 15-Sep-2013 martin

Remove unused variable


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.98 02-Dec-2012 chs

branches: 1.98.2;
fix device/softc split: initialize sc->sc_dev.


Revision tags: yamt-pagecache-base6
# 1.97 27-Oct-2012 chs

split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.96 27-Jan-2012 para

branches: 1.96.6;
extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.95 30-Jun-2011 wiz

branches: 1.95.2; 1.95.6;
dependant -> dependent


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.94 24-May-2011 joerg

Explicitly get rid of constness.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231
# 1.93 14-Nov-2010 uebayasi

branches: 1.93.2;
Avoid pointless use of a sysctl definition, CTL_NAMES. Clean up whitespace.


# 1.92 13-Nov-2010 uebayasi

Don't pull in the whole uvm(9) API to access only PAGE_SIZE and
some other constants. These are provided by sys/param.h now.


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.91 27-Jul-2010 jakllsch

printf() size_t with 'z' format modifier in debug code.


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase jym-xensuspend-base
# 1.90 12-May-2009 cegger

branches: 1.90.2; 1.90.4;
use device_private().
"looks good" ad@
XXX for the device_t/softc split, please check the driver that no cases have been missed.


# 1.89 06-May-2009 cegger

struct device * -> device_t, no functional changes intended.


# 1.88 06-May-2009 cegger

struct cfdata * -> cfdata_t, no functional changes intended.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
# 1.87 08-Jun-2008 tsutsui

branches: 1.87.12;
Replace device_lookup() with device_lookup_private() on getting softc
for future device_t/softc spilt.


Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.86 28-Apr-2008 martin

branches: 1.86.2;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base
# 1.85 10-Apr-2008 cegger

branches: 1.85.2; 1.85.4;
use aprint_*_dev and device_xname


Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
# 1.84 19-Oct-2007 ad

branches: 1.84.16;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
# 1.83 04-Mar-2007 christos

branches: 1.83.2; 1.83.14; 1.83.16; 1.83.20;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base
# 1.82 02-Dec-2006 elad

branches: 1.82.2;
Change kauth(9) KPI for kauth_authorize_device_passthru() to add another
argument, u_long, serving as a bit-mask of generic requests for the
passthru request.

Discussed on tech-security@ and tech-kern@. Okay tls@.


Revision tags: netbsd-4-base
# 1.81 16-Nov-2006 christos

branches: 1.81.2;
__unused removal on arguments; approved by core.


# 1.80 08-Nov-2006 elad

Replace securelevel checks with kauth(9) calls.


Revision tags: yamt-splraiseipl-base2
# 1.79 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
# 1.78 03-Sep-2006 christos

branches: 1.78.2; 1.78.4;
- add missing initializer
- add missing function decl


# 1.77 27-Aug-2006 xtraeme

Initialize a variable to 0 to appease gcc4 with -O3.


# 1.76 23-Aug-2006 christos

Acting as Elad's keyboard:

Place the securelevel checks in their logical locations.
This will be clearer in the future when code changes to use kauth(9) calls.

input and okay ad@


Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
# 1.75 11-Apr-2006 rpaulo

Coverity ID 2859: Don't leak ccb, move the allocation a few lines
lower next to where it'll be used for the first time.


Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
# 1.74 23-Feb-2006 simonb

branches: 1.74.2; 1.74.4; 1.74.6;
Fix memory leak in the TWEIO_GET_PARAM ioctl.
Tested by gendalia@.


# 1.73 29-Jan-2006 dsl

branches: 1.73.2; 1.73.4;
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.72 24-Dec-2005 perry

branches: 1.72.2;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.71 11-Dec-2005 christos

merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.70 26-Aug-2005 drochner

kill some more simple submatch() functions, use config_stdsubmatch()


# 1.69 25-Aug-2005 drochner

replace the "locdesc_t" structure carrying the number of locators
explicitely by a plain integer array
the length in now known to all relevant parties, so this avoids
duplication of information, and we can allocate that thing in
drivers without hacks


# 1.68 28-Jun-2005 thorpej

branches: 1.68.2;
Use ANSI function decls and static.


# 1.67 20-Jun-2005 atatat

Change the rest of the sysctl subsystem to use const consistently.
The __UNCONST macro is now used only where necessary and the RW macros
are gone. Most of the changes here are consumers of the
sysctl_createv(9) interface that now takes a pair of const pointers
which used not to be.


# 1.66 30-May-2005 christos

- const poisoning
- avoid variable shadowing.


Revision tags: kent-audio2-base
# 1.65 01-Apr-2005 yamt

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.


Revision tags: netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base
# 1.64 16-Mar-2005 erh

branches: 1.64.2; 1.64.4;
Fix PR#24302. Clear PCI abort and parity errors to give the card a chance at
working. Patch provided by Jean-Luc Wasmer, based on the FreeBSD driver.


# 1.63 27-Feb-2005 perry

nuke trailing whitespace


# 1.62 20-Feb-2005 heas

Add sysctl node hw.tweN.driver_version whose value is FreeBSD's driver version
number for now. This is used by 3ware's FreeBSD version of their CLI to find
controllers and check the driver version.


# 1.61 15-Feb-2005 lukem

Add some more stripe sizes observed in the field.
Add "JBOD" to twe_table_unittype[].


Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
# 1.60 23-Sep-2004 heas

branches: 1.60.4; 1.60.6;
Take the modulus of the AEN queue tail number rather than the mask of. Now
the tail pointer advances properly.


# 1.59 13-Sep-2004 drochner

a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
on "locators.h"


# 1.58 04-Jun-2004 thorpej

twe_ccb_map(): Remove the DEBUG panic case of "unknown" S/G list offset.
In all likelihood, this is a command passed from userspace management
tools where no S/G list is needed because no data is being passed.


# 1.57 03-Jun-2004 heas

Double the time we wait for the attention bit following a soft reset (and make
the timeout message just a bit clearer), as the latest firmware appears to be
a bit slower.
OK from Jason Thorpe.


# 1.56 27-May-2004 thorpej

Rename twe_tweio_command_handler() to twe_ccb_wait_handler() and expose it.


# 1.55 15-Apr-2004 thorpej

Assign a syslog priority to the AEN codes and use that priority when
logging the error message. Potentially allows critical messages to be
noticed much more quickly.


Revision tags: netbsd-2-0-base
# 1.54 04-Dec-2003 thorpej

branches: 1.54.2;
When performing command pass-through for management tools, don't poll
for CCB completion. Instead, sleep, and use a CCB callback to wake the
sleeper.


# 1.53 10-Nov-2003 thorpej

Correct the size passed to a malloc() call when performing command
passthrough for userland management tools.


# 1.52 30-Oct-2003 simonb

Remove some assigned-to but otherwise unused variables.


# 1.51 25-Sep-2003 thorpej

Fix up the TWEIO_COMMAND code to actually work. The 3ware management API
library can now communicate with the card.


# 1.50 25-Sep-2003 thorpej

- Fix a bug I introduced in a previous commit (oops).
- Add the twe_drivecommand ioctl structure.


# 1.49 23-Sep-2003 thorpej

- Make CCB allocation slightly more efficient by changing how the
CCB is returned to the caller.
- Make code paths that can use twe_ccb_alloc_wait() use it, and assert
that a CCB is always returned from that function.
- Assert that a CCB is always returned when allocating the reserved CCB
for an AEN fetch.


# 1.48 23-Sep-2003 thorpej

Add a comment clarifying why we clear TWEF_AEN in twe_reset() now.


# 1.47 23-Sep-2003 thorpej

Separate the AEN fetching path into its own special path that uses the
reserved CCB. This means that all remaining callers of twe_param_get*()
are called from a valid thread context, and thus have no need to use a
reserved CCB. This will allow for further cleanup in a future commit.


# 1.46 22-Sep-2003 thorpej

Add support for dynamically attaching and detaching RAID array units.


# 1.45 22-Sep-2003 thorpej

Improve AEN handling:
- Make AENs use the generic code table stuff.
- Add a few more AEN codes (from FreeBSD).
- Correct the context of a few AEN codes (some were listed as
"unit context" when they're really "port context").
- Add a queue of AENs that management tools in userspace can poll
(from FreeBSD).


# 1.44 21-Sep-2003 thorpej

Fetch info about the drives during attach, and inject that info
into the msgbuf using aprint_verbose().


# 1.43 21-Sep-2003 thorpej

Expose the "param get" functions.


# 1.42 21-Sep-2003 thorpej

- Record more information about the array unit, including array
type and stripe depth.
- Report array type and stripe depth when attaching the logical drive.


# 1.41 21-Sep-2003 thorpej

Add some helper routines to fetch 1, 2, and 4 byte parameter values.

Modeled after code in FreeBSD.


# 1.40 21-Sep-2003 thorpej

Add some additional code -> description tables, and add a generic
routine to translate code -> description. AENs will be converted
to this mechanism in a future commit.

Partially from FreeBSD.


# 1.39 03-Aug-2003 jdolecek

tweioctl(): store the result of twe_param_get() directly to the right
variable rather than using (void *) temporary
should fix strict aliasing warning of gcc 3.3


# 1.38 25-Jul-2003 jdolecek

print some additional information about the controller on boot (from FreeBSD)

use aprint_* as appropriate
change some debug #ifdef DIAGNOSTIC messages into #ifdef DEBUG
make aenfmt[] more const
change twe_param_get() signature to take (struct twe_param **) last arg, and
remove now unnecessary casts


# 1.37 29-Jun-2003 fvdl

branches: 1.37.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.


# 1.36 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


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.35 01-Jan-2003 thorpej

Use aprint_normal() in cfprint routines.


Revision tags: gmcgarry_ctxsw_base gmcgarry_ucred_base
# 1.34 16-Dec-2002 fvdl

Remove comparison of u_int8_t value to (512 - a few bytes), since it's
always false. As found by gcc-current.


# 1.33 13-Dec-2002 christos

Add /dev/twex support. To be used with FreeBSD's 3dmd.
Initial port from Masaru OKI <oki@netbsd.org>, with KNF, memory leak fixes,
denial of service problems, and null pointer fixes from me.


# 1.32 25-Nov-2002 thorpej

Avoid strict-alias warnings.


Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.31 02-Oct-2002 thorpej

Add trailing ; to CFATTACH_DECL.


# 1.30 30-Sep-2002 thorpej

Use CFATTACH_DECL().


# 1.29 27-Sep-2002 thorpej

Declare all cfattach structures const.


# 1.28 27-Sep-2002 thorpej

Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.


Revision tags: gehenna-devsw-base
# 1.27 06-Aug-2002 kim

Missing comma in aenfmt array initialization.


# 1.26 10-Jul-2002 christos

Add missing messages from FreeBSD's driver. Re-organize a bit how the
message is formatted and printed.


# 1.25 01-Jun-2002 lukem

SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups


# 1.24 24-May-2002 christos

NBPG is not constant on the sparc, so don't use CPP tricks.


# 1.23 24-May-2002 christos

Deal with the NBPG problem in a better way.


Revision tags: netbsd-1-6-base
# 1.22 18-May-2002 ad

branches: 1.22.2;
- Use write barriers.
- NBPG -> PAGE_SIZE.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.21 13-Nov-2001 lukem

branches: 1.21.8;
add RCSID


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3
# 1.20 10-Oct-2001 ad

branches: 1.20.4;
Back out previous - it causes panics.


Revision tags: thorpej-devvp-base2
# 1.19 20-Sep-2001 ad

Use bus_dma to get temporary I/O buffers.


# 1.18 16-Sep-2001 wiz

Spell 'occurred' with two 'r's.


Revision tags: post-chs-ubcperf
# 1.17 15-Sep-2001 chs

a whole bunch of changes to improve performance and robustness under load:

- remove special treatment of pager_map mappings in pmaps. this is
required now, since I've removed the globals that expose the address range.
pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's
no longer any need to special-case it.
- eliminate struct uvm_vnode by moving its fields into struct vnode.
- rewrite the pageout path. the pager is now responsible for handling the
high-level requests instead of only getting control after a bunch of work
has already been done on its behalf. this will allow us to UBCify LFS,
which needs tighter control over its pages than other filesystems do.
writing a page to disk no longer requires making it read-only, which
allows us to write wired pages without causing all kinds of havoc.
- use a new PG_PAGEOUT flag to indicate that a page should be freed
on behalf of the pagedaemon when it's unlocked. this flag is very similar
to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the
pageout fails due to eg. an indirect-block buffer being locked.
this allows us to remove the "version" field from struct vm_page,
and together with shrinking "loan_count" from 32 bits to 16,
struct vm_page is now 4 bytes smaller.
- no longer use PG_RELEASED for swap-backed pages. if the page is busy
because it's being paged out, we can't release the swap slot to be
reallocated until that write is complete, but unlike with vnodes we
don't keep a count of in-progress writes so there's no good way to
know when the write is done. instead, when we need to free a busy
swap-backed page, just sleep until we can get it busy ourselves.
- implement a fast-path for extending writes which allows us to avoid
zeroing new pages. this substantially reduces cpu usage.
- encapsulate the data used by the genfs code in a struct genfs_node,
which must be the first element of the filesystem-specific vnode data
for filesystems which use genfs_{get,put}pages().
- eliminate many of the UVM pagerops, since they aren't needed anymore
now that the pager "put" operation is a higher-level operation.
- enhance the genfs code to allow NFS to use the genfs_{get,put}pages
instead of a modified copy.
- clean up struct vnode by removing all the fields that used to be used by
the vfs_cluster.c code (which we don't use anymore with UBC).
- remove kmem_object and mb_object since they were useless.
instead of allocating pages to these objects, we now just allocate
pages with no object. such pages are mapped in the kernel until they
are freed, so we can use the mapping to find the page to free it.
this allows us to remove splvm() protection in several places.

The sum of all these changes improves write throughput on my
decstation 5000/200 to within 1% of the rate of NetBSD 1.5
and reduces the elapsed time for "make release" of a NetBSD 1.5
source tree on my 128MB pc to 10% less than a 1.5 kernel took.


Revision tags: pre-chs-ubcperf thorpej-devvp-base
# 1.16 19-Jul-2001 thorpej

branches: 1.16.2;
Use BUS_DMA_READ and BUS_DMA_WRITE in some obvious places.


# 1.15 31-May-2001 ad

branches: 1.15.2;
Reduce the delay when polling so that dumps go faster.


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.14 30-Mar-2001 ad

AEN 0x000c appears to mean `init started'. From lukem.


# 1.13 07-Mar-2001 thorpej

Add BUS_DMA_STREAMING to data transfer maps.


# 1.12 04-Mar-2001 ad

branches: 1.12.2;
Don't choke when we get lots of AENs all at once.


# 1.11 25-Feb-2001 ad

Wait 10x longer for status bits.


# 1.10 11-Feb-2001 ad

Match an upcoming product.


# 1.9 23-Jan-2001 ad

Oops, be sure to clear the ATTN interrupt on error.


# 1.8 22-Jan-2001 ad

opt_twe.h isn't needed any more.


# 1.7 22-Jan-2001 ad

- Complain if interrupt-driven retrieval of AENs fails somehow.
- Clamp the number of outstanding commands to 129.
- Other tweaks.


# 1.6 14-Jan-2001 thorpej

splimp() -> splvm()


# 1.5 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.4 14-Nov-2000 thorpej

branches: 1.4.2;
NBPG -> PAGE_SIZE


# 1.3 08-Nov-2000 ad

- Pull in some updates from FreeBSD - mainly clarifications. Thanks to
Mike Smith <msmith@freebsd.org> for pointing these out.
- Ensure that we get AENs: reserve one CCB/command block for parameter
retrieval, and chain AEN retrievals that are the result of an interrupt.


# 1.2 20-Oct-2000 ad

- tsleep()/wakeup_one() will hurt when under load, so use a queue instead.
- Don't copy to or from the aligned buffer unless there's a need to.


# 1.1 19-Oct-2000 ad

Driver for the 3ware Escalade family of RAID controllers.


# 1.109 24-Apr-2021 thorpej

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?).


Revision tags: thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
# 1.108 10-Nov-2019 chs

branches: 1.108.10;
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.


Revision tags: netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.107 09-Dec-2018 jdolecek

use pci_intr_establish_xname() everywhere


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004
# 1.106 27-Sep-2016 pgoyette

branches: 1.106.6; 1.106.14; 1.106.16;
Modularize the ld driver and all of its attachments. Ensure that all
parents are capable of rescan (or otherwise provide a means of attaching
children post-initialization).


Revision tags: localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.105 14-Jul-2016 msaitoh

branches: 1.105.2;
KNF. No functional change.


Revision tags: nick-nhusb-base-20160907
# 1.104 07-Jul-2016 msaitoh

KNF. Remove extra spaces. No functional change.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.103 25-Jul-2014 dholland

branches: 1.103.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 rmind-smpnet-nbase rmind-smpnet-base
# 1.102 29-Mar-2014 christos

branches: 1.102.2;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.


Revision tags: riastradh-drm2-base3
# 1.101 16-Mar-2014 dholland

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.100 25-Feb-2014 pooka

Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.


# 1.99 15-Sep-2013 martin

Remove unused variable


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.98 02-Dec-2012 chs

branches: 1.98.2;
fix device/softc split: initialize sc->sc_dev.


Revision tags: yamt-pagecache-base6
# 1.97 27-Oct-2012 chs

split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.96 27-Jan-2012 para

branches: 1.96.6;
extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.95 30-Jun-2011 wiz

branches: 1.95.2; 1.95.6;
dependant -> dependent


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.94 24-May-2011 joerg

Explicitly get rid of constness.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231
# 1.93 14-Nov-2010 uebayasi

branches: 1.93.2;
Avoid pointless use of a sysctl definition, CTL_NAMES. Clean up whitespace.


# 1.92 13-Nov-2010 uebayasi

Don't pull in the whole uvm(9) API to access only PAGE_SIZE and
some other constants. These are provided by sys/param.h now.


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.91 27-Jul-2010 jakllsch

printf() size_t with 'z' format modifier in debug code.


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase jym-xensuspend-base
# 1.90 12-May-2009 cegger

branches: 1.90.2; 1.90.4;
use device_private().
"looks good" ad@
XXX for the device_t/softc split, please check the driver that no cases have been missed.


# 1.89 06-May-2009 cegger

struct device * -> device_t, no functional changes intended.


# 1.88 06-May-2009 cegger

struct cfdata * -> cfdata_t, no functional changes intended.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
# 1.87 08-Jun-2008 tsutsui

branches: 1.87.12;
Replace device_lookup() with device_lookup_private() on getting softc
for future device_t/softc spilt.


Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.86 28-Apr-2008 martin

branches: 1.86.2;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base
# 1.85 10-Apr-2008 cegger

branches: 1.85.2; 1.85.4;
use aprint_*_dev and device_xname


Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
# 1.84 19-Oct-2007 ad

branches: 1.84.16;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
# 1.83 04-Mar-2007 christos

branches: 1.83.2; 1.83.14; 1.83.16; 1.83.20;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base
# 1.82 02-Dec-2006 elad

branches: 1.82.2;
Change kauth(9) KPI for kauth_authorize_device_passthru() to add another
argument, u_long, serving as a bit-mask of generic requests for the
passthru request.

Discussed on tech-security@ and tech-kern@. Okay tls@.


Revision tags: netbsd-4-base
# 1.81 16-Nov-2006 christos

branches: 1.81.2;
__unused removal on arguments; approved by core.


# 1.80 08-Nov-2006 elad

Replace securelevel checks with kauth(9) calls.


Revision tags: yamt-splraiseipl-base2
# 1.79 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
# 1.78 03-Sep-2006 christos

branches: 1.78.2; 1.78.4;
- add missing initializer
- add missing function decl


# 1.77 27-Aug-2006 xtraeme

Initialize a variable to 0 to appease gcc4 with -O3.


# 1.76 23-Aug-2006 christos

Acting as Elad's keyboard:

Place the securelevel checks in their logical locations.
This will be clearer in the future when code changes to use kauth(9) calls.

input and okay ad@


Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
# 1.75 11-Apr-2006 rpaulo

Coverity ID 2859: Don't leak ccb, move the allocation a few lines
lower next to where it'll be used for the first time.


Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
# 1.74 23-Feb-2006 simonb

branches: 1.74.2; 1.74.4; 1.74.6;
Fix memory leak in the TWEIO_GET_PARAM ioctl.
Tested by gendalia@.


# 1.73 29-Jan-2006 dsl

branches: 1.73.2; 1.73.4;
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.72 24-Dec-2005 perry

branches: 1.72.2;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.71 11-Dec-2005 christos

merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.70 26-Aug-2005 drochner

kill some more simple submatch() functions, use config_stdsubmatch()


# 1.69 25-Aug-2005 drochner

replace the "locdesc_t" structure carrying the number of locators
explicitely by a plain integer array
the length in now known to all relevant parties, so this avoids
duplication of information, and we can allocate that thing in
drivers without hacks


# 1.68 28-Jun-2005 thorpej

branches: 1.68.2;
Use ANSI function decls and static.


# 1.67 20-Jun-2005 atatat

Change the rest of the sysctl subsystem to use const consistently.
The __UNCONST macro is now used only where necessary and the RW macros
are gone. Most of the changes here are consumers of the
sysctl_createv(9) interface that now takes a pair of const pointers
which used not to be.


# 1.66 30-May-2005 christos

- const poisoning
- avoid variable shadowing.


Revision tags: kent-audio2-base
# 1.65 01-Apr-2005 yamt

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.


Revision tags: netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base
# 1.64 16-Mar-2005 erh

branches: 1.64.2; 1.64.4;
Fix PR#24302. Clear PCI abort and parity errors to give the card a chance at
working. Patch provided by Jean-Luc Wasmer, based on the FreeBSD driver.


# 1.63 27-Feb-2005 perry

nuke trailing whitespace


# 1.62 20-Feb-2005 heas

Add sysctl node hw.tweN.driver_version whose value is FreeBSD's driver version
number for now. This is used by 3ware's FreeBSD version of their CLI to find
controllers and check the driver version.


# 1.61 15-Feb-2005 lukem

Add some more stripe sizes observed in the field.
Add "JBOD" to twe_table_unittype[].


Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
# 1.60 23-Sep-2004 heas

branches: 1.60.4; 1.60.6;
Take the modulus of the AEN queue tail number rather than the mask of. Now
the tail pointer advances properly.


# 1.59 13-Sep-2004 drochner

a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
on "locators.h"


# 1.58 04-Jun-2004 thorpej

twe_ccb_map(): Remove the DEBUG panic case of "unknown" S/G list offset.
In all likelihood, this is a command passed from userspace management
tools where no S/G list is needed because no data is being passed.


# 1.57 03-Jun-2004 heas

Double the time we wait for the attention bit following a soft reset (and make
the timeout message just a bit clearer), as the latest firmware appears to be
a bit slower.
OK from Jason Thorpe.


# 1.56 27-May-2004 thorpej

Rename twe_tweio_command_handler() to twe_ccb_wait_handler() and expose it.


# 1.55 15-Apr-2004 thorpej

Assign a syslog priority to the AEN codes and use that priority when
logging the error message. Potentially allows critical messages to be
noticed much more quickly.


Revision tags: netbsd-2-0-base
# 1.54 04-Dec-2003 thorpej

branches: 1.54.2;
When performing command pass-through for management tools, don't poll
for CCB completion. Instead, sleep, and use a CCB callback to wake the
sleeper.


# 1.53 10-Nov-2003 thorpej

Correct the size passed to a malloc() call when performing command
passthrough for userland management tools.


# 1.52 30-Oct-2003 simonb

Remove some assigned-to but otherwise unused variables.


# 1.51 25-Sep-2003 thorpej

Fix up the TWEIO_COMMAND code to actually work. The 3ware management API
library can now communicate with the card.


# 1.50 25-Sep-2003 thorpej

- Fix a bug I introduced in a previous commit (oops).
- Add the twe_drivecommand ioctl structure.


# 1.49 23-Sep-2003 thorpej

- Make CCB allocation slightly more efficient by changing how the
CCB is returned to the caller.
- Make code paths that can use twe_ccb_alloc_wait() use it, and assert
that a CCB is always returned from that function.
- Assert that a CCB is always returned when allocating the reserved CCB
for an AEN fetch.


# 1.48 23-Sep-2003 thorpej

Add a comment clarifying why we clear TWEF_AEN in twe_reset() now.


# 1.47 23-Sep-2003 thorpej

Separate the AEN fetching path into its own special path that uses the
reserved CCB. This means that all remaining callers of twe_param_get*()
are called from a valid thread context, and thus have no need to use a
reserved CCB. This will allow for further cleanup in a future commit.


# 1.46 22-Sep-2003 thorpej

Add support for dynamically attaching and detaching RAID array units.


# 1.45 22-Sep-2003 thorpej

Improve AEN handling:
- Make AENs use the generic code table stuff.
- Add a few more AEN codes (from FreeBSD).
- Correct the context of a few AEN codes (some were listed as
"unit context" when they're really "port context").
- Add a queue of AENs that management tools in userspace can poll
(from FreeBSD).


# 1.44 21-Sep-2003 thorpej

Fetch info about the drives during attach, and inject that info
into the msgbuf using aprint_verbose().


# 1.43 21-Sep-2003 thorpej

Expose the "param get" functions.


# 1.42 21-Sep-2003 thorpej

- Record more information about the array unit, including array
type and stripe depth.
- Report array type and stripe depth when attaching the logical drive.


# 1.41 21-Sep-2003 thorpej

Add some helper routines to fetch 1, 2, and 4 byte parameter values.

Modeled after code in FreeBSD.


# 1.40 21-Sep-2003 thorpej

Add some additional code -> description tables, and add a generic
routine to translate code -> description. AENs will be converted
to this mechanism in a future commit.

Partially from FreeBSD.


# 1.39 03-Aug-2003 jdolecek

tweioctl(): store the result of twe_param_get() directly to the right
variable rather than using (void *) temporary
should fix strict aliasing warning of gcc 3.3


# 1.38 25-Jul-2003 jdolecek

print some additional information about the controller on boot (from FreeBSD)

use aprint_* as appropriate
change some debug #ifdef DIAGNOSTIC messages into #ifdef DEBUG
make aenfmt[] more const
change twe_param_get() signature to take (struct twe_param **) last arg, and
remove now unnecessary casts


# 1.37 29-Jun-2003 fvdl

branches: 1.37.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.


# 1.36 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


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.35 01-Jan-2003 thorpej

Use aprint_normal() in cfprint routines.


Revision tags: gmcgarry_ctxsw_base gmcgarry_ucred_base
# 1.34 16-Dec-2002 fvdl

Remove comparison of u_int8_t value to (512 - a few bytes), since it's
always false. As found by gcc-current.


# 1.33 13-Dec-2002 christos

Add /dev/twex support. To be used with FreeBSD's 3dmd.
Initial port from Masaru OKI <oki@netbsd.org>, with KNF, memory leak fixes,
denial of service problems, and null pointer fixes from me.


# 1.32 25-Nov-2002 thorpej

Avoid strict-alias warnings.


Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.31 02-Oct-2002 thorpej

Add trailing ; to CFATTACH_DECL.


# 1.30 30-Sep-2002 thorpej

Use CFATTACH_DECL().


# 1.29 27-Sep-2002 thorpej

Declare all cfattach structures const.


# 1.28 27-Sep-2002 thorpej

Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.


Revision tags: gehenna-devsw-base
# 1.27 06-Aug-2002 kim

Missing comma in aenfmt array initialization.


# 1.26 10-Jul-2002 christos

Add missing messages from FreeBSD's driver. Re-organize a bit how the
message is formatted and printed.


# 1.25 01-Jun-2002 lukem

SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups


# 1.24 24-May-2002 christos

NBPG is not constant on the sparc, so don't use CPP tricks.


# 1.23 24-May-2002 christos

Deal with the NBPG problem in a better way.


Revision tags: netbsd-1-6-base
# 1.22 18-May-2002 ad

branches: 1.22.2;
- Use write barriers.
- NBPG -> PAGE_SIZE.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.21 13-Nov-2001 lukem

branches: 1.21.8;
add RCSID


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3
# 1.20 10-Oct-2001 ad

branches: 1.20.4;
Back out previous - it causes panics.


Revision tags: thorpej-devvp-base2
# 1.19 20-Sep-2001 ad

Use bus_dma to get temporary I/O buffers.


# 1.18 16-Sep-2001 wiz

Spell 'occurred' with two 'r's.


Revision tags: post-chs-ubcperf
# 1.17 15-Sep-2001 chs

a whole bunch of changes to improve performance and robustness under load:

- remove special treatment of pager_map mappings in pmaps. this is
required now, since I've removed the globals that expose the address range.
pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's
no longer any need to special-case it.
- eliminate struct uvm_vnode by moving its fields into struct vnode.
- rewrite the pageout path. the pager is now responsible for handling the
high-level requests instead of only getting control after a bunch of work
has already been done on its behalf. this will allow us to UBCify LFS,
which needs tighter control over its pages than other filesystems do.
writing a page to disk no longer requires making it read-only, which
allows us to write wired pages without causing all kinds of havoc.
- use a new PG_PAGEOUT flag to indicate that a page should be freed
on behalf of the pagedaemon when it's unlocked. this flag is very similar
to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the
pageout fails due to eg. an indirect-block buffer being locked.
this allows us to remove the "version" field from struct vm_page,
and together with shrinking "loan_count" from 32 bits to 16,
struct vm_page is now 4 bytes smaller.
- no longer use PG_RELEASED for swap-backed pages. if the page is busy
because it's being paged out, we can't release the swap slot to be
reallocated until that write is complete, but unlike with vnodes we
don't keep a count of in-progress writes so there's no good way to
know when the write is done. instead, when we need to free a busy
swap-backed page, just sleep until we can get it busy ourselves.
- implement a fast-path for extending writes which allows us to avoid
zeroing new pages. this substantially reduces cpu usage.
- encapsulate the data used by the genfs code in a struct genfs_node,
which must be the first element of the filesystem-specific vnode data
for filesystems which use genfs_{get,put}pages().
- eliminate many of the UVM pagerops, since they aren't needed anymore
now that the pager "put" operation is a higher-level operation.
- enhance the genfs code to allow NFS to use the genfs_{get,put}pages
instead of a modified copy.
- clean up struct vnode by removing all the fields that used to be used by
the vfs_cluster.c code (which we don't use anymore with UBC).
- remove kmem_object and mb_object since they were useless.
instead of allocating pages to these objects, we now just allocate
pages with no object. such pages are mapped in the kernel until they
are freed, so we can use the mapping to find the page to free it.
this allows us to remove splvm() protection in several places.

The sum of all these changes improves write throughput on my
decstation 5000/200 to within 1% of the rate of NetBSD 1.5
and reduces the elapsed time for "make release" of a NetBSD 1.5
source tree on my 128MB pc to 10% less than a 1.5 kernel took.


Revision tags: pre-chs-ubcperf thorpej-devvp-base
# 1.16 19-Jul-2001 thorpej

branches: 1.16.2;
Use BUS_DMA_READ and BUS_DMA_WRITE in some obvious places.


# 1.15 31-May-2001 ad

branches: 1.15.2;
Reduce the delay when polling so that dumps go faster.


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.14 30-Mar-2001 ad

AEN 0x000c appears to mean `init started'. From lukem.


# 1.13 07-Mar-2001 thorpej

Add BUS_DMA_STREAMING to data transfer maps.


# 1.12 04-Mar-2001 ad

branches: 1.12.2;
Don't choke when we get lots of AENs all at once.


# 1.11 25-Feb-2001 ad

Wait 10x longer for status bits.


# 1.10 11-Feb-2001 ad

Match an upcoming product.


# 1.9 23-Jan-2001 ad

Oops, be sure to clear the ATTN interrupt on error.


# 1.8 22-Jan-2001 ad

opt_twe.h isn't needed any more.


# 1.7 22-Jan-2001 ad

- Complain if interrupt-driven retrieval of AENs fails somehow.
- Clamp the number of outstanding commands to 129.
- Other tweaks.


# 1.6 14-Jan-2001 thorpej

splimp() -> splvm()


# 1.5 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.4 14-Nov-2000 thorpej

branches: 1.4.2;
NBPG -> PAGE_SIZE


# 1.3 08-Nov-2000 ad

- Pull in some updates from FreeBSD - mainly clarifications. Thanks to
Mike Smith <msmith@freebsd.org> for pointing these out.
- Ensure that we get AENs: reserve one CCB/command block for parameter
retrieval, and chain AEN retrievals that are the result of an interrupt.


# 1.2 20-Oct-2000 ad

- tsleep()/wakeup_one() will hurt when under load, so use a queue instead.
- Don't copy to or from the aligned buffer unless there's a need to.


# 1.1 19-Oct-2000 ad

Driver for the 3ware Escalade family of RAID controllers.


# 1.108 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.


Revision tags: netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.107 09-Dec-2018 jdolecek

use pci_intr_establish_xname() everywhere


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004
# 1.106 27-Sep-2016 pgoyette

branches: 1.106.6; 1.106.14; 1.106.16;
Modularize the ld driver and all of its attachments. Ensure that all
parents are capable of rescan (or otherwise provide a means of attaching
children post-initialization).


Revision tags: localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.105 14-Jul-2016 msaitoh

branches: 1.105.2;
KNF. No functional change.


Revision tags: nick-nhusb-base-20160907
# 1.104 07-Jul-2016 msaitoh

KNF. Remove extra spaces. No functional change.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.103 25-Jul-2014 dholland

branches: 1.103.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 rmind-smpnet-nbase rmind-smpnet-base
# 1.102 29-Mar-2014 christos

branches: 1.102.2;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.


Revision tags: riastradh-drm2-base3
# 1.101 16-Mar-2014 dholland

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.100 25-Feb-2014 pooka

Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.


# 1.99 15-Sep-2013 martin

Remove unused variable


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.98 02-Dec-2012 chs

branches: 1.98.2;
fix device/softc split: initialize sc->sc_dev.


Revision tags: yamt-pagecache-base6
# 1.97 27-Oct-2012 chs

split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.96 27-Jan-2012 para

branches: 1.96.6;
extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.95 30-Jun-2011 wiz

branches: 1.95.2; 1.95.6;
dependant -> dependent


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.94 24-May-2011 joerg

Explicitly get rid of constness.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231
# 1.93 14-Nov-2010 uebayasi

branches: 1.93.2;
Avoid pointless use of a sysctl definition, CTL_NAMES. Clean up whitespace.


# 1.92 13-Nov-2010 uebayasi

Don't pull in the whole uvm(9) API to access only PAGE_SIZE and
some other constants. These are provided by sys/param.h now.


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.91 27-Jul-2010 jakllsch

printf() size_t with 'z' format modifier in debug code.


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase jym-xensuspend-base
# 1.90 12-May-2009 cegger

branches: 1.90.2; 1.90.4;
use device_private().
"looks good" ad@
XXX for the device_t/softc split, please check the driver that no cases have been missed.


# 1.89 06-May-2009 cegger

struct device * -> device_t, no functional changes intended.


# 1.88 06-May-2009 cegger

struct cfdata * -> cfdata_t, no functional changes intended.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
# 1.87 08-Jun-2008 tsutsui

branches: 1.87.12;
Replace device_lookup() with device_lookup_private() on getting softc
for future device_t/softc spilt.


Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.86 28-Apr-2008 martin

branches: 1.86.2;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base
# 1.85 10-Apr-2008 cegger

branches: 1.85.2; 1.85.4;
use aprint_*_dev and device_xname


Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
# 1.84 19-Oct-2007 ad

branches: 1.84.16;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
# 1.83 04-Mar-2007 christos

branches: 1.83.2; 1.83.14; 1.83.16; 1.83.20;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base
# 1.82 02-Dec-2006 elad

branches: 1.82.2;
Change kauth(9) KPI for kauth_authorize_device_passthru() to add another
argument, u_long, serving as a bit-mask of generic requests for the
passthru request.

Discussed on tech-security@ and tech-kern@. Okay tls@.


Revision tags: netbsd-4-base
# 1.81 16-Nov-2006 christos

branches: 1.81.2;
__unused removal on arguments; approved by core.


# 1.80 08-Nov-2006 elad

Replace securelevel checks with kauth(9) calls.


Revision tags: yamt-splraiseipl-base2
# 1.79 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
# 1.78 03-Sep-2006 christos

branches: 1.78.2; 1.78.4;
- add missing initializer
- add missing function decl


# 1.77 27-Aug-2006 xtraeme

Initialize a variable to 0 to appease gcc4 with -O3.


# 1.76 23-Aug-2006 christos

Acting as Elad's keyboard:

Place the securelevel checks in their logical locations.
This will be clearer in the future when code changes to use kauth(9) calls.

input and okay ad@


Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
# 1.75 11-Apr-2006 rpaulo

Coverity ID 2859: Don't leak ccb, move the allocation a few lines
lower next to where it'll be used for the first time.


Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
# 1.74 23-Feb-2006 simonb

branches: 1.74.2; 1.74.4; 1.74.6;
Fix memory leak in the TWEIO_GET_PARAM ioctl.
Tested by gendalia@.


# 1.73 29-Jan-2006 dsl

branches: 1.73.2; 1.73.4;
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.72 24-Dec-2005 perry

branches: 1.72.2;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.71 11-Dec-2005 christos

merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.70 26-Aug-2005 drochner

kill some more simple submatch() functions, use config_stdsubmatch()


# 1.69 25-Aug-2005 drochner

replace the "locdesc_t" structure carrying the number of locators
explicitely by a plain integer array
the length in now known to all relevant parties, so this avoids
duplication of information, and we can allocate that thing in
drivers without hacks


# 1.68 28-Jun-2005 thorpej

branches: 1.68.2;
Use ANSI function decls and static.


# 1.67 20-Jun-2005 atatat

Change the rest of the sysctl subsystem to use const consistently.
The __UNCONST macro is now used only where necessary and the RW macros
are gone. Most of the changes here are consumers of the
sysctl_createv(9) interface that now takes a pair of const pointers
which used not to be.


# 1.66 30-May-2005 christos

- const poisoning
- avoid variable shadowing.


Revision tags: kent-audio2-base
# 1.65 01-Apr-2005 yamt

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.


Revision tags: netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base
# 1.64 16-Mar-2005 erh

branches: 1.64.2; 1.64.4;
Fix PR#24302. Clear PCI abort and parity errors to give the card a chance at
working. Patch provided by Jean-Luc Wasmer, based on the FreeBSD driver.


# 1.63 27-Feb-2005 perry

nuke trailing whitespace


# 1.62 20-Feb-2005 heas

Add sysctl node hw.tweN.driver_version whose value is FreeBSD's driver version
number for now. This is used by 3ware's FreeBSD version of their CLI to find
controllers and check the driver version.


# 1.61 15-Feb-2005 lukem

Add some more stripe sizes observed in the field.
Add "JBOD" to twe_table_unittype[].


Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
# 1.60 23-Sep-2004 heas

branches: 1.60.4; 1.60.6;
Take the modulus of the AEN queue tail number rather than the mask of. Now
the tail pointer advances properly.


# 1.59 13-Sep-2004 drochner

a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
on "locators.h"


# 1.58 04-Jun-2004 thorpej

twe_ccb_map(): Remove the DEBUG panic case of "unknown" S/G list offset.
In all likelihood, this is a command passed from userspace management
tools where no S/G list is needed because no data is being passed.


# 1.57 03-Jun-2004 heas

Double the time we wait for the attention bit following a soft reset (and make
the timeout message just a bit clearer), as the latest firmware appears to be
a bit slower.
OK from Jason Thorpe.


# 1.56 27-May-2004 thorpej

Rename twe_tweio_command_handler() to twe_ccb_wait_handler() and expose it.


# 1.55 15-Apr-2004 thorpej

Assign a syslog priority to the AEN codes and use that priority when
logging the error message. Potentially allows critical messages to be
noticed much more quickly.


Revision tags: netbsd-2-0-base
# 1.54 04-Dec-2003 thorpej

branches: 1.54.2;
When performing command pass-through for management tools, don't poll
for CCB completion. Instead, sleep, and use a CCB callback to wake the
sleeper.


# 1.53 10-Nov-2003 thorpej

Correct the size passed to a malloc() call when performing command
passthrough for userland management tools.


# 1.52 30-Oct-2003 simonb

Remove some assigned-to but otherwise unused variables.


# 1.51 25-Sep-2003 thorpej

Fix up the TWEIO_COMMAND code to actually work. The 3ware management API
library can now communicate with the card.


# 1.50 25-Sep-2003 thorpej

- Fix a bug I introduced in a previous commit (oops).
- Add the twe_drivecommand ioctl structure.


# 1.49 23-Sep-2003 thorpej

- Make CCB allocation slightly more efficient by changing how the
CCB is returned to the caller.
- Make code paths that can use twe_ccb_alloc_wait() use it, and assert
that a CCB is always returned from that function.
- Assert that a CCB is always returned when allocating the reserved CCB
for an AEN fetch.


# 1.48 23-Sep-2003 thorpej

Add a comment clarifying why we clear TWEF_AEN in twe_reset() now.


# 1.47 23-Sep-2003 thorpej

Separate the AEN fetching path into its own special path that uses the
reserved CCB. This means that all remaining callers of twe_param_get*()
are called from a valid thread context, and thus have no need to use a
reserved CCB. This will allow for further cleanup in a future commit.


# 1.46 22-Sep-2003 thorpej

Add support for dynamically attaching and detaching RAID array units.


# 1.45 22-Sep-2003 thorpej

Improve AEN handling:
- Make AENs use the generic code table stuff.
- Add a few more AEN codes (from FreeBSD).
- Correct the context of a few AEN codes (some were listed as
"unit context" when they're really "port context").
- Add a queue of AENs that management tools in userspace can poll
(from FreeBSD).


# 1.44 21-Sep-2003 thorpej

Fetch info about the drives during attach, and inject that info
into the msgbuf using aprint_verbose().


# 1.43 21-Sep-2003 thorpej

Expose the "param get" functions.


# 1.42 21-Sep-2003 thorpej

- Record more information about the array unit, including array
type and stripe depth.
- Report array type and stripe depth when attaching the logical drive.


# 1.41 21-Sep-2003 thorpej

Add some helper routines to fetch 1, 2, and 4 byte parameter values.

Modeled after code in FreeBSD.


# 1.40 21-Sep-2003 thorpej

Add some additional code -> description tables, and add a generic
routine to translate code -> description. AENs will be converted
to this mechanism in a future commit.

Partially from FreeBSD.


# 1.39 03-Aug-2003 jdolecek

tweioctl(): store the result of twe_param_get() directly to the right
variable rather than using (void *) temporary
should fix strict aliasing warning of gcc 3.3


# 1.38 25-Jul-2003 jdolecek

print some additional information about the controller on boot (from FreeBSD)

use aprint_* as appropriate
change some debug #ifdef DIAGNOSTIC messages into #ifdef DEBUG
make aenfmt[] more const
change twe_param_get() signature to take (struct twe_param **) last arg, and
remove now unnecessary casts


# 1.37 29-Jun-2003 fvdl

branches: 1.37.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.


# 1.36 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


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.35 01-Jan-2003 thorpej

Use aprint_normal() in cfprint routines.


Revision tags: gmcgarry_ctxsw_base gmcgarry_ucred_base
# 1.34 16-Dec-2002 fvdl

Remove comparison of u_int8_t value to (512 - a few bytes), since it's
always false. As found by gcc-current.


# 1.33 13-Dec-2002 christos

Add /dev/twex support. To be used with FreeBSD's 3dmd.
Initial port from Masaru OKI <oki@netbsd.org>, with KNF, memory leak fixes,
denial of service problems, and null pointer fixes from me.


# 1.32 25-Nov-2002 thorpej

Avoid strict-alias warnings.


Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.31 02-Oct-2002 thorpej

Add trailing ; to CFATTACH_DECL.


# 1.30 30-Sep-2002 thorpej

Use CFATTACH_DECL().


# 1.29 27-Sep-2002 thorpej

Declare all cfattach structures const.


# 1.28 27-Sep-2002 thorpej

Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.


Revision tags: gehenna-devsw-base
# 1.27 06-Aug-2002 kim

Missing comma in aenfmt array initialization.


# 1.26 10-Jul-2002 christos

Add missing messages from FreeBSD's driver. Re-organize a bit how the
message is formatted and printed.


# 1.25 01-Jun-2002 lukem

SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups


# 1.24 24-May-2002 christos

NBPG is not constant on the sparc, so don't use CPP tricks.


# 1.23 24-May-2002 christos

Deal with the NBPG problem in a better way.


Revision tags: netbsd-1-6-base
# 1.22 18-May-2002 ad

branches: 1.22.2;
- Use write barriers.
- NBPG -> PAGE_SIZE.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.21 13-Nov-2001 lukem

branches: 1.21.8;
add RCSID


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3
# 1.20 10-Oct-2001 ad

branches: 1.20.4;
Back out previous - it causes panics.


Revision tags: thorpej-devvp-base2
# 1.19 20-Sep-2001 ad

Use bus_dma to get temporary I/O buffers.


# 1.18 16-Sep-2001 wiz

Spell 'occurred' with two 'r's.


Revision tags: post-chs-ubcperf
# 1.17 15-Sep-2001 chs

a whole bunch of changes to improve performance and robustness under load:

- remove special treatment of pager_map mappings in pmaps. this is
required now, since I've removed the globals that expose the address range.
pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's
no longer any need to special-case it.
- eliminate struct uvm_vnode by moving its fields into struct vnode.
- rewrite the pageout path. the pager is now responsible for handling the
high-level requests instead of only getting control after a bunch of work
has already been done on its behalf. this will allow us to UBCify LFS,
which needs tighter control over its pages than other filesystems do.
writing a page to disk no longer requires making it read-only, which
allows us to write wired pages without causing all kinds of havoc.
- use a new PG_PAGEOUT flag to indicate that a page should be freed
on behalf of the pagedaemon when it's unlocked. this flag is very similar
to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the
pageout fails due to eg. an indirect-block buffer being locked.
this allows us to remove the "version" field from struct vm_page,
and together with shrinking "loan_count" from 32 bits to 16,
struct vm_page is now 4 bytes smaller.
- no longer use PG_RELEASED for swap-backed pages. if the page is busy
because it's being paged out, we can't release the swap slot to be
reallocated until that write is complete, but unlike with vnodes we
don't keep a count of in-progress writes so there's no good way to
know when the write is done. instead, when we need to free a busy
swap-backed page, just sleep until we can get it busy ourselves.
- implement a fast-path for extending writes which allows us to avoid
zeroing new pages. this substantially reduces cpu usage.
- encapsulate the data used by the genfs code in a struct genfs_node,
which must be the first element of the filesystem-specific vnode data
for filesystems which use genfs_{get,put}pages().
- eliminate many of the UVM pagerops, since they aren't needed anymore
now that the pager "put" operation is a higher-level operation.
- enhance the genfs code to allow NFS to use the genfs_{get,put}pages
instead of a modified copy.
- clean up struct vnode by removing all the fields that used to be used by
the vfs_cluster.c code (which we don't use anymore with UBC).
- remove kmem_object and mb_object since they were useless.
instead of allocating pages to these objects, we now just allocate
pages with no object. such pages are mapped in the kernel until they
are freed, so we can use the mapping to find the page to free it.
this allows us to remove splvm() protection in several places.

The sum of all these changes improves write throughput on my
decstation 5000/200 to within 1% of the rate of NetBSD 1.5
and reduces the elapsed time for "make release" of a NetBSD 1.5
source tree on my 128MB pc to 10% less than a 1.5 kernel took.


Revision tags: pre-chs-ubcperf thorpej-devvp-base
# 1.16 19-Jul-2001 thorpej

branches: 1.16.2;
Use BUS_DMA_READ and BUS_DMA_WRITE in some obvious places.


# 1.15 31-May-2001 ad

branches: 1.15.2;
Reduce the delay when polling so that dumps go faster.


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.14 30-Mar-2001 ad

AEN 0x000c appears to mean `init started'. From lukem.


# 1.13 07-Mar-2001 thorpej

Add BUS_DMA_STREAMING to data transfer maps.


# 1.12 04-Mar-2001 ad

branches: 1.12.2;
Don't choke when we get lots of AENs all at once.


# 1.11 25-Feb-2001 ad

Wait 10x longer for status bits.


# 1.10 11-Feb-2001 ad

Match an upcoming product.


# 1.9 23-Jan-2001 ad

Oops, be sure to clear the ATTN interrupt on error.


# 1.8 22-Jan-2001 ad

opt_twe.h isn't needed any more.


# 1.7 22-Jan-2001 ad

- Complain if interrupt-driven retrieval of AENs fails somehow.
- Clamp the number of outstanding commands to 129.
- Other tweaks.


# 1.6 14-Jan-2001 thorpej

splimp() -> splvm()


# 1.5 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.4 14-Nov-2000 thorpej

branches: 1.4.2;
NBPG -> PAGE_SIZE


# 1.3 08-Nov-2000 ad

- Pull in some updates from FreeBSD - mainly clarifications. Thanks to
Mike Smith <msmith@freebsd.org> for pointing these out.
- Ensure that we get AENs: reserve one CCB/command block for parameter
retrieval, and chain AEN retrievals that are the result of an interrupt.


# 1.2 20-Oct-2000 ad

- tsleep()/wakeup_one() will hurt when under load, so use a queue instead.
- Don't copy to or from the aligned buffer unless there's a need to.


# 1.1 19-Oct-2000 ad

Driver for the 3ware Escalade family of RAID controllers.


Revision tags: isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.107 09-Dec-2018 jdolecek

use pci_intr_establish_xname() everywhere


Revision tags: pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004
# 1.106 27-Sep-2016 pgoyette

branches: 1.106.6; 1.106.14;
Modularize the ld driver and all of its attachments. Ensure that all
parents are capable of rescan (or otherwise provide a means of attaching
children post-initialization).


Revision tags: localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.105 14-Jul-2016 msaitoh

branches: 1.105.2;
KNF. No functional change.


Revision tags: nick-nhusb-base-20160907
# 1.104 07-Jul-2016 msaitoh

KNF. Remove extra spaces. No functional change.


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.103 25-Jul-2014 dholland

branches: 1.103.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 rmind-smpnet-nbase rmind-smpnet-base
# 1.102 29-Mar-2014 christos

branches: 1.102.2;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.


Revision tags: riastradh-drm2-base3
# 1.101 16-Mar-2014 dholland

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.100 25-Feb-2014 pooka

Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.


# 1.99 15-Sep-2013 martin

Remove unused variable


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.98 02-Dec-2012 chs

branches: 1.98.2;
fix device/softc split: initialize sc->sc_dev.


Revision tags: yamt-pagecache-base6
# 1.97 27-Oct-2012 chs

split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.96 27-Jan-2012 para

branches: 1.96.6;
extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.95 30-Jun-2011 wiz

branches: 1.95.2; 1.95.6;
dependant -> dependent


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.94 24-May-2011 joerg

Explicitly get rid of constness.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231
# 1.93 14-Nov-2010 uebayasi

branches: 1.93.2;
Avoid pointless use of a sysctl definition, CTL_NAMES. Clean up whitespace.


# 1.92 13-Nov-2010 uebayasi

Don't pull in the whole uvm(9) API to access only PAGE_SIZE and
some other constants. These are provided by sys/param.h now.


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.91 27-Jul-2010 jakllsch

printf() size_t with 'z' format modifier in debug code.


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase jym-xensuspend-base
# 1.90 12-May-2009 cegger

branches: 1.90.2; 1.90.4;
use device_private().
"looks good" ad@
XXX for the device_t/softc split, please check the driver that no cases have been missed.


# 1.89 06-May-2009 cegger

struct device * -> device_t, no functional changes intended.


# 1.88 06-May-2009 cegger

struct cfdata * -> cfdata_t, no functional changes intended.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
# 1.87 08-Jun-2008 tsutsui

branches: 1.87.12;
Replace device_lookup() with device_lookup_private() on getting softc
for future device_t/softc spilt.


Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.86 28-Apr-2008 martin

branches: 1.86.2;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base
# 1.85 10-Apr-2008 cegger

branches: 1.85.2; 1.85.4;
use aprint_*_dev and device_xname


Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
# 1.84 19-Oct-2007 ad

branches: 1.84.16;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
# 1.83 04-Mar-2007 christos

branches: 1.83.2; 1.83.14; 1.83.16; 1.83.20;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base
# 1.82 02-Dec-2006 elad

branches: 1.82.2;
Change kauth(9) KPI for kauth_authorize_device_passthru() to add another
argument, u_long, serving as a bit-mask of generic requests for the
passthru request.

Discussed on tech-security@ and tech-kern@. Okay tls@.


Revision tags: netbsd-4-base
# 1.81 16-Nov-2006 christos

branches: 1.81.2;
__unused removal on arguments; approved by core.


# 1.80 08-Nov-2006 elad

Replace securelevel checks with kauth(9) calls.


Revision tags: yamt-splraiseipl-base2
# 1.79 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
# 1.78 03-Sep-2006 christos

branches: 1.78.2; 1.78.4;
- add missing initializer
- add missing function decl


# 1.77 27-Aug-2006 xtraeme

Initialize a variable to 0 to appease gcc4 with -O3.


# 1.76 23-Aug-2006 christos

Acting as Elad's keyboard:

Place the securelevel checks in their logical locations.
This will be clearer in the future when code changes to use kauth(9) calls.

input and okay ad@


Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
# 1.75 11-Apr-2006 rpaulo

Coverity ID 2859: Don't leak ccb, move the allocation a few lines
lower next to where it'll be used for the first time.


Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
# 1.74 23-Feb-2006 simonb

branches: 1.74.2; 1.74.4; 1.74.6;
Fix memory leak in the TWEIO_GET_PARAM ioctl.
Tested by gendalia@.


# 1.73 29-Jan-2006 dsl

branches: 1.73.2; 1.73.4;
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.72 24-Dec-2005 perry

branches: 1.72.2;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.71 11-Dec-2005 christos

merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.70 26-Aug-2005 drochner

kill some more simple submatch() functions, use config_stdsubmatch()


# 1.69 25-Aug-2005 drochner

replace the "locdesc_t" structure carrying the number of locators
explicitely by a plain integer array
the length in now known to all relevant parties, so this avoids
duplication of information, and we can allocate that thing in
drivers without hacks


# 1.68 28-Jun-2005 thorpej

branches: 1.68.2;
Use ANSI function decls and static.


# 1.67 20-Jun-2005 atatat

Change the rest of the sysctl subsystem to use const consistently.
The __UNCONST macro is now used only where necessary and the RW macros
are gone. Most of the changes here are consumers of the
sysctl_createv(9) interface that now takes a pair of const pointers
which used not to be.


# 1.66 30-May-2005 christos

- const poisoning
- avoid variable shadowing.


Revision tags: kent-audio2-base
# 1.65 01-Apr-2005 yamt

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.


Revision tags: netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base
# 1.64 16-Mar-2005 erh

branches: 1.64.2; 1.64.4;
Fix PR#24302. Clear PCI abort and parity errors to give the card a chance at
working. Patch provided by Jean-Luc Wasmer, based on the FreeBSD driver.


# 1.63 27-Feb-2005 perry

nuke trailing whitespace


# 1.62 20-Feb-2005 heas

Add sysctl node hw.tweN.driver_version whose value is FreeBSD's driver version
number for now. This is used by 3ware's FreeBSD version of their CLI to find
controllers and check the driver version.


# 1.61 15-Feb-2005 lukem

Add some more stripe sizes observed in the field.
Add "JBOD" to twe_table_unittype[].


Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
# 1.60 23-Sep-2004 heas

branches: 1.60.4; 1.60.6;
Take the modulus of the AEN queue tail number rather than the mask of. Now
the tail pointer advances properly.


# 1.59 13-Sep-2004 drochner

a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
on "locators.h"


# 1.58 04-Jun-2004 thorpej

twe_ccb_map(): Remove the DEBUG panic case of "unknown" S/G list offset.
In all likelihood, this is a command passed from userspace management
tools where no S/G list is needed because no data is being passed.


# 1.57 03-Jun-2004 heas

Double the time we wait for the attention bit following a soft reset (and make
the timeout message just a bit clearer), as the latest firmware appears to be
a bit slower.
OK from Jason Thorpe.


# 1.56 27-May-2004 thorpej

Rename twe_tweio_command_handler() to twe_ccb_wait_handler() and expose it.


# 1.55 15-Apr-2004 thorpej

Assign a syslog priority to the AEN codes and use that priority when
logging the error message. Potentially allows critical messages to be
noticed much more quickly.


Revision tags: netbsd-2-0-base
# 1.54 04-Dec-2003 thorpej

branches: 1.54.2;
When performing command pass-through for management tools, don't poll
for CCB completion. Instead, sleep, and use a CCB callback to wake the
sleeper.


# 1.53 10-Nov-2003 thorpej

Correct the size passed to a malloc() call when performing command
passthrough for userland management tools.


# 1.52 30-Oct-2003 simonb

Remove some assigned-to but otherwise unused variables.


# 1.51 25-Sep-2003 thorpej

Fix up the TWEIO_COMMAND code to actually work. The 3ware management API
library can now communicate with the card.


# 1.50 25-Sep-2003 thorpej

- Fix a bug I introduced in a previous commit (oops).
- Add the twe_drivecommand ioctl structure.


# 1.49 23-Sep-2003 thorpej

- Make CCB allocation slightly more efficient by changing how the
CCB is returned to the caller.
- Make code paths that can use twe_ccb_alloc_wait() use it, and assert
that a CCB is always returned from that function.
- Assert that a CCB is always returned when allocating the reserved CCB
for an AEN fetch.


# 1.48 23-Sep-2003 thorpej

Add a comment clarifying why we clear TWEF_AEN in twe_reset() now.


# 1.47 23-Sep-2003 thorpej

Separate the AEN fetching path into its own special path that uses the
reserved CCB. This means that all remaining callers of twe_param_get*()
are called from a valid thread context, and thus have no need to use a
reserved CCB. This will allow for further cleanup in a future commit.


# 1.46 22-Sep-2003 thorpej

Add support for dynamically attaching and detaching RAID array units.


# 1.45 22-Sep-2003 thorpej

Improve AEN handling:
- Make AENs use the generic code table stuff.
- Add a few more AEN codes (from FreeBSD).
- Correct the context of a few AEN codes (some were listed as
"unit context" when they're really "port context").
- Add a queue of AENs that management tools in userspace can poll
(from FreeBSD).


# 1.44 21-Sep-2003 thorpej

Fetch info about the drives during attach, and inject that info
into the msgbuf using aprint_verbose().


# 1.43 21-Sep-2003 thorpej

Expose the "param get" functions.


# 1.42 21-Sep-2003 thorpej

- Record more information about the array unit, including array
type and stripe depth.
- Report array type and stripe depth when attaching the logical drive.


# 1.41 21-Sep-2003 thorpej

Add some helper routines to fetch 1, 2, and 4 byte parameter values.

Modeled after code in FreeBSD.


# 1.40 21-Sep-2003 thorpej

Add some additional code -> description tables, and add a generic
routine to translate code -> description. AENs will be converted
to this mechanism in a future commit.

Partially from FreeBSD.


# 1.39 03-Aug-2003 jdolecek

tweioctl(): store the result of twe_param_get() directly to the right
variable rather than using (void *) temporary
should fix strict aliasing warning of gcc 3.3


# 1.38 25-Jul-2003 jdolecek

print some additional information about the controller on boot (from FreeBSD)

use aprint_* as appropriate
change some debug #ifdef DIAGNOSTIC messages into #ifdef DEBUG
make aenfmt[] more const
change twe_param_get() signature to take (struct twe_param **) last arg, and
remove now unnecessary casts


# 1.37 29-Jun-2003 fvdl

branches: 1.37.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.


# 1.36 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


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.35 01-Jan-2003 thorpej

Use aprint_normal() in cfprint routines.


Revision tags: gmcgarry_ctxsw_base gmcgarry_ucred_base
# 1.34 16-Dec-2002 fvdl

Remove comparison of u_int8_t value to (512 - a few bytes), since it's
always false. As found by gcc-current.


# 1.33 13-Dec-2002 christos

Add /dev/twex support. To be used with FreeBSD's 3dmd.
Initial port from Masaru OKI <oki@netbsd.org>, with KNF, memory leak fixes,
denial of service problems, and null pointer fixes from me.


# 1.32 25-Nov-2002 thorpej

Avoid strict-alias warnings.


Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.31 02-Oct-2002 thorpej

Add trailing ; to CFATTACH_DECL.


# 1.30 30-Sep-2002 thorpej

Use CFATTACH_DECL().


# 1.29 27-Sep-2002 thorpej

Declare all cfattach structures const.


# 1.28 27-Sep-2002 thorpej

Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.


Revision tags: gehenna-devsw-base
# 1.27 06-Aug-2002 kim

Missing comma in aenfmt array initialization.


# 1.26 10-Jul-2002 christos

Add missing messages from FreeBSD's driver. Re-organize a bit how the
message is formatted and printed.


# 1.25 01-Jun-2002 lukem

SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups


# 1.24 24-May-2002 christos

NBPG is not constant on the sparc, so don't use CPP tricks.


# 1.23 24-May-2002 christos

Deal with the NBPG problem in a better way.


Revision tags: netbsd-1-6-base
# 1.22 18-May-2002 ad

branches: 1.22.2;
- Use write barriers.
- NBPG -> PAGE_SIZE.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.21 13-Nov-2001 lukem

branches: 1.21.8;
add RCSID


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3
# 1.20 10-Oct-2001 ad

branches: 1.20.4;
Back out previous - it causes panics.


Revision tags: thorpej-devvp-base2
# 1.19 20-Sep-2001 ad

Use bus_dma to get temporary I/O buffers.


# 1.18 16-Sep-2001 wiz

Spell 'occurred' with two 'r's.


Revision tags: post-chs-ubcperf
# 1.17 15-Sep-2001 chs

a whole bunch of changes to improve performance and robustness under load:

- remove special treatment of pager_map mappings in pmaps. this is
required now, since I've removed the globals that expose the address range.
pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's
no longer any need to special-case it.
- eliminate struct uvm_vnode by moving its fields into struct vnode.
- rewrite the pageout path. the pager is now responsible for handling the
high-level requests instead of only getting control after a bunch of work
has already been done on its behalf. this will allow us to UBCify LFS,
which needs tighter control over its pages than other filesystems do.
writing a page to disk no longer requires making it read-only, which
allows us to write wired pages without causing all kinds of havoc.
- use a new PG_PAGEOUT flag to indicate that a page should be freed
on behalf of the pagedaemon when it's unlocked. this flag is very similar
to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the
pageout fails due to eg. an indirect-block buffer being locked.
this allows us to remove the "version" field from struct vm_page,
and together with shrinking "loan_count" from 32 bits to 16,
struct vm_page is now 4 bytes smaller.
- no longer use PG_RELEASED for swap-backed pages. if the page is busy
because it's being paged out, we can't release the swap slot to be
reallocated until that write is complete, but unlike with vnodes we
don't keep a count of in-progress writes so there's no good way to
know when the write is done. instead, when we need to free a busy
swap-backed page, just sleep until we can get it busy ourselves.
- implement a fast-path for extending writes which allows us to avoid
zeroing new pages. this substantially reduces cpu usage.
- encapsulate the data used by the genfs code in a struct genfs_node,
which must be the first element of the filesystem-specific vnode data
for filesystems which use genfs_{get,put}pages().
- eliminate many of the UVM pagerops, since they aren't needed anymore
now that the pager "put" operation is a higher-level operation.
- enhance the genfs code to allow NFS to use the genfs_{get,put}pages
instead of a modified copy.
- clean up struct vnode by removing all the fields that used to be used by
the vfs_cluster.c code (which we don't use anymore with UBC).
- remove kmem_object and mb_object since they were useless.
instead of allocating pages to these objects, we now just allocate
pages with no object. such pages are mapped in the kernel until they
are freed, so we can use the mapping to find the page to free it.
this allows us to remove splvm() protection in several places.

The sum of all these changes improves write throughput on my
decstation 5000/200 to within 1% of the rate of NetBSD 1.5
and reduces the elapsed time for "make release" of a NetBSD 1.5
source tree on my 128MB pc to 10% less than a 1.5 kernel took.


Revision tags: pre-chs-ubcperf thorpej-devvp-base
# 1.16 19-Jul-2001 thorpej

branches: 1.16.2;
Use BUS_DMA_READ and BUS_DMA_WRITE in some obvious places.


# 1.15 31-May-2001 ad

branches: 1.15.2;
Reduce the delay when polling so that dumps go faster.


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.14 30-Mar-2001 ad

AEN 0x000c appears to mean `init started'. From lukem.


# 1.13 07-Mar-2001 thorpej

Add BUS_DMA_STREAMING to data transfer maps.


# 1.12 04-Mar-2001 ad

branches: 1.12.2;
Don't choke when we get lots of AENs all at once.


# 1.11 25-Feb-2001 ad

Wait 10x longer for status bits.


# 1.10 11-Feb-2001 ad

Match an upcoming product.


# 1.9 23-Jan-2001 ad

Oops, be sure to clear the ATTN interrupt on error.


# 1.8 22-Jan-2001 ad

opt_twe.h isn't needed any more.


# 1.7 22-Jan-2001 ad

- Complain if interrupt-driven retrieval of AENs fails somehow.
- Clamp the number of outstanding commands to 129.
- Other tweaks.


# 1.6 14-Jan-2001 thorpej

splimp() -> splvm()


# 1.5 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.4 14-Nov-2000 thorpej

branches: 1.4.2;
NBPG -> PAGE_SIZE


# 1.3 08-Nov-2000 ad

- Pull in some updates from FreeBSD - mainly clarifications. Thanks to
Mike Smith <msmith@freebsd.org> for pointing these out.
- Ensure that we get AENs: reserve one CCB/command block for parameter
retrieval, and chain AEN retrievals that are the result of an interrupt.


# 1.2 20-Oct-2000 ad

- tsleep()/wakeup_one() will hurt when under load, so use a queue instead.
- Don't copy to or from the aligned buffer unless there's a need to.


# 1.1 19-Oct-2000 ad

Driver for the 3ware Escalade family of RAID controllers.


Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004
# 1.106 27-Sep-2016 pgoyette

Modularize the ld driver and all of its attachments. Ensure that all
parents are capable of rescan (or otherwise provide a means of attaching
children post-initialization).


Revision tags: localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.105 14-Jul-2016 msaitoh

branches: 1.105.2;
KNF. No functional change.


Revision tags: nick-nhusb-base-20160907
# 1.104 07-Jul-2016 msaitoh

KNF. Remove extra spaces. No functional change.


Revision tags: netbsd-7-0-2-RELEASE netbsd-7-nhusb-base nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.103 25-Jul-2014 dholland

branches: 1.103.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 rmind-smpnet-nbase rmind-smpnet-base
# 1.102 29-Mar-2014 christos

branches: 1.102.2;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.


Revision tags: riastradh-drm2-base3
# 1.101 16-Mar-2014 dholland

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.100 25-Feb-2014 pooka

Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.


# 1.99 15-Sep-2013 martin

Remove unused variable


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.98 02-Dec-2012 chs

branches: 1.98.2;
fix device/softc split: initialize sc->sc_dev.


Revision tags: yamt-pagecache-base6
# 1.97 27-Oct-2012 chs

split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.96 27-Jan-2012 para

branches: 1.96.6;
extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.95 30-Jun-2011 wiz

branches: 1.95.2; 1.95.6;
dependant -> dependent


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
# 1.94 24-May-2011 joerg

Explicitly get rid of constness.


Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231
# 1.93 14-Nov-2010 uebayasi

branches: 1.93.2;
Avoid pointless use of a sysctl definition, CTL_NAMES. Clean up whitespace.


# 1.92 13-Nov-2010 uebayasi

Don't pull in the whole uvm(9) API to access only PAGE_SIZE and
some other constants. These are provided by sys/param.h now.


Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.91 27-Jul-2010 jakllsch

printf() size_t with 'z' format modifier in debug code.


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase jym-xensuspend-base
# 1.90 12-May-2009 cegger

branches: 1.90.2; 1.90.4;
use device_private().
"looks good" ad@
XXX for the device_t/softc split, please check the driver that no cases have been missed.


# 1.89 06-May-2009 cegger

struct device * -> device_t, no functional changes intended.


# 1.88 06-May-2009 cegger

struct cfdata * -> cfdata_t, no functional changes intended.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
# 1.87 08-Jun-2008 tsutsui

branches: 1.87.12;
Replace device_lookup() with device_lookup_private() on getting softc
for future device_t/softc spilt.


Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
# 1.86 28-Apr-2008 martin

branches: 1.86.2;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base
# 1.85 10-Apr-2008 cegger

branches: 1.85.2; 1.85.4;
use aprint_*_dev and device_xname


Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
# 1.84 19-Oct-2007 ad

branches: 1.84.16;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base
# 1.83 04-Mar-2007 christos

branches: 1.83.2; 1.83.14; 1.83.16; 1.83.20;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base
# 1.82 02-Dec-2006 elad

branches: 1.82.2;
Change kauth(9) KPI for kauth_authorize_device_passthru() to add another
argument, u_long, serving as a bit-mask of generic requests for the
passthru request.

Discussed on tech-security@ and tech-kern@. Okay tls@.


Revision tags: netbsd-4-base
# 1.81 16-Nov-2006 christos

branches: 1.81.2;
__unused removal on arguments; approved by core.


# 1.80 08-Nov-2006 elad

Replace securelevel checks with kauth(9) calls.


Revision tags: yamt-splraiseipl-base2
# 1.79 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
# 1.78 03-Sep-2006 christos

branches: 1.78.2; 1.78.4;
- add missing initializer
- add missing function decl


# 1.77 27-Aug-2006 xtraeme

Initialize a variable to 0 to appease gcc4 with -O3.


# 1.76 23-Aug-2006 christos

Acting as Elad's keyboard:

Place the securelevel checks in their logical locations.
This will be clearer in the future when code changes to use kauth(9) calls.

input and okay ad@


Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
# 1.75 11-Apr-2006 rpaulo

Coverity ID 2859: Don't leak ccb, move the allocation a few lines
lower next to where it'll be used for the first time.


Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
# 1.74 23-Feb-2006 simonb

branches: 1.74.2; 1.74.4; 1.74.6;
Fix memory leak in the TWEIO_GET_PARAM ioctl.
Tested by gendalia@.


# 1.73 29-Jan-2006 dsl

branches: 1.73.2; 1.73.4;
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.72 24-Dec-2005 perry

branches: 1.72.2;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.71 11-Dec-2005 christos

merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.70 26-Aug-2005 drochner

kill some more simple submatch() functions, use config_stdsubmatch()


# 1.69 25-Aug-2005 drochner

replace the "locdesc_t" structure carrying the number of locators
explicitely by a plain integer array
the length in now known to all relevant parties, so this avoids
duplication of information, and we can allocate that thing in
drivers without hacks


# 1.68 28-Jun-2005 thorpej

branches: 1.68.2;
Use ANSI function decls and static.


# 1.67 20-Jun-2005 atatat

Change the rest of the sysctl subsystem to use const consistently.
The __UNCONST macro is now used only where necessary and the RW macros
are gone. Most of the changes here are consumers of the
sysctl_createv(9) interface that now takes a pair of const pointers
which used not to be.


# 1.66 30-May-2005 christos

- const poisoning
- avoid variable shadowing.


Revision tags: kent-audio2-base
# 1.65 01-Apr-2005 yamt

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.


Revision tags: netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base
# 1.64 16-Mar-2005 erh

branches: 1.64.2; 1.64.4;
Fix PR#24302. Clear PCI abort and parity errors to give the card a chance at
working. Patch provided by Jean-Luc Wasmer, based on the FreeBSD driver.


# 1.63 27-Feb-2005 perry

nuke trailing whitespace


# 1.62 20-Feb-2005 heas

Add sysctl node hw.tweN.driver_version whose value is FreeBSD's driver version
number for now. This is used by 3ware's FreeBSD version of their CLI to find
controllers and check the driver version.


# 1.61 15-Feb-2005 lukem

Add some more stripe sizes observed in the field.
Add "JBOD" to twe_table_unittype[].


Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
# 1.60 23-Sep-2004 heas

branches: 1.60.4; 1.60.6;
Take the modulus of the AEN queue tail number rather than the mask of. Now
the tail pointer advances properly.


# 1.59 13-Sep-2004 drochner

a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
on "locators.h"


# 1.58 04-Jun-2004 thorpej

twe_ccb_map(): Remove the DEBUG panic case of "unknown" S/G list offset.
In all likelihood, this is a command passed from userspace management
tools where no S/G list is needed because no data is being passed.


# 1.57 03-Jun-2004 heas

Double the time we wait for the attention bit following a soft reset (and make
the timeout message just a bit clearer), as the latest firmware appears to be
a bit slower.
OK from Jason Thorpe.


# 1.56 27-May-2004 thorpej

Rename twe_tweio_command_handler() to twe_ccb_wait_handler() and expose it.


# 1.55 15-Apr-2004 thorpej

Assign a syslog priority to the AEN codes and use that priority when
logging the error message. Potentially allows critical messages to be
noticed much more quickly.


Revision tags: netbsd-2-0-base
# 1.54 04-Dec-2003 thorpej

branches: 1.54.2;
When performing command pass-through for management tools, don't poll
for CCB completion. Instead, sleep, and use a CCB callback to wake the
sleeper.


# 1.53 10-Nov-2003 thorpej

Correct the size passed to a malloc() call when performing command
passthrough for userland management tools.


# 1.52 30-Oct-2003 simonb

Remove some assigned-to but otherwise unused variables.


# 1.51 25-Sep-2003 thorpej

Fix up the TWEIO_COMMAND code to actually work. The 3ware management API
library can now communicate with the card.


# 1.50 25-Sep-2003 thorpej

- Fix a bug I introduced in a previous commit (oops).
- Add the twe_drivecommand ioctl structure.


# 1.49 23-Sep-2003 thorpej

- Make CCB allocation slightly more efficient by changing how the
CCB is returned to the caller.
- Make code paths that can use twe_ccb_alloc_wait() use it, and assert
that a CCB is always returned from that function.
- Assert that a CCB is always returned when allocating the reserved CCB
for an AEN fetch.


# 1.48 23-Sep-2003 thorpej

Add a comment clarifying why we clear TWEF_AEN in twe_reset() now.


# 1.47 23-Sep-2003 thorpej

Separate the AEN fetching path into its own special path that uses the
reserved CCB. This means that all remaining callers of twe_param_get*()
are called from a valid thread context, and thus have no need to use a
reserved CCB. This will allow for further cleanup in a future commit.


# 1.46 22-Sep-2003 thorpej

Add support for dynamically attaching and detaching RAID array units.


# 1.45 22-Sep-2003 thorpej

Improve AEN handling:
- Make AENs use the generic code table stuff.
- Add a few more AEN codes (from FreeBSD).
- Correct the context of a few AEN codes (some were listed as
"unit context" when they're really "port context").
- Add a queue of AENs that management tools in userspace can poll
(from FreeBSD).


# 1.44 21-Sep-2003 thorpej

Fetch info about the drives during attach, and inject that info
into the msgbuf using aprint_verbose().


# 1.43 21-Sep-2003 thorpej

Expose the "param get" functions.


# 1.42 21-Sep-2003 thorpej

- Record more information about the array unit, including array
type and stripe depth.
- Report array type and stripe depth when attaching the logical drive.


# 1.41 21-Sep-2003 thorpej

Add some helper routines to fetch 1, 2, and 4 byte parameter values.

Modeled after code in FreeBSD.


# 1.40 21-Sep-2003 thorpej

Add some additional code -> description tables, and add a generic
routine to translate code -> description. AENs will be converted
to this mechanism in a future commit.

Partially from FreeBSD.


# 1.39 03-Aug-2003 jdolecek

tweioctl(): store the result of twe_param_get() directly to the right
variable rather than using (void *) temporary
should fix strict aliasing warning of gcc 3.3


# 1.38 25-Jul-2003 jdolecek

print some additional information about the controller on boot (from FreeBSD)

use aprint_* as appropriate
change some debug #ifdef DIAGNOSTIC messages into #ifdef DEBUG
make aenfmt[] more const
change twe_param_get() signature to take (struct twe_param **) last arg, and
remove now unnecessary casts


# 1.37 29-Jun-2003 fvdl

branches: 1.37.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.


# 1.36 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


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.35 01-Jan-2003 thorpej

Use aprint_normal() in cfprint routines.


Revision tags: gmcgarry_ctxsw_base gmcgarry_ucred_base
# 1.34 16-Dec-2002 fvdl

Remove comparison of u_int8_t value to (512 - a few bytes), since it's
always false. As found by gcc-current.


# 1.33 13-Dec-2002 christos

Add /dev/twex support. To be used with FreeBSD's 3dmd.
Initial port from Masaru OKI <oki@netbsd.org>, with KNF, memory leak fixes,
denial of service problems, and null pointer fixes from me.


# 1.32 25-Nov-2002 thorpej

Avoid strict-alias warnings.


Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.31 02-Oct-2002 thorpej

Add trailing ; to CFATTACH_DECL.


# 1.30 30-Sep-2002 thorpej

Use CFATTACH_DECL().


# 1.29 27-Sep-2002 thorpej

Declare all cfattach structures const.


# 1.28 27-Sep-2002 thorpej

Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.


Revision tags: gehenna-devsw-base
# 1.27 06-Aug-2002 kim

Missing comma in aenfmt array initialization.


# 1.26 10-Jul-2002 christos

Add missing messages from FreeBSD's driver. Re-organize a bit how the
message is formatted and printed.


# 1.25 01-Jun-2002 lukem

SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups


# 1.24 24-May-2002 christos

NBPG is not constant on the sparc, so don't use CPP tricks.


# 1.23 24-May-2002 christos

Deal with the NBPG problem in a better way.


Revision tags: netbsd-1-6-base
# 1.22 18-May-2002 ad

branches: 1.22.2;
- Use write barriers.
- NBPG -> PAGE_SIZE.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.21 13-Nov-2001 lukem

branches: 1.21.8;
add RCSID


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3
# 1.20 10-Oct-2001 ad

branches: 1.20.4;
Back out previous - it causes panics.


Revision tags: thorpej-devvp-base2
# 1.19 20-Sep-2001 ad

Use bus_dma to get temporary I/O buffers.


# 1.18 16-Sep-2001 wiz

Spell 'occurred' with two 'r's.


Revision tags: post-chs-ubcperf
# 1.17 15-Sep-2001 chs

a whole bunch of changes to improve performance and robustness under load:

- remove special treatment of pager_map mappings in pmaps. this is
required now, since I've removed the globals that expose the address range.
pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's
no longer any need to special-case it.
- eliminate struct uvm_vnode by moving its fields into struct vnode.
- rewrite the pageout path. the pager is now responsible for handling the
high-level requests instead of only getting control after a bunch of work
has already been done on its behalf. this will allow us to UBCify LFS,
which needs tighter control over its pages than other filesystems do.
writing a page to disk no longer requires making it read-only, which
allows us to write wired pages without causing all kinds of havoc.
- use a new PG_PAGEOUT flag to indicate that a page should be freed
on behalf of the pagedaemon when it's unlocked. this flag is very similar
to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the
pageout fails due to eg. an indirect-block buffer being locked.
this allows us to remove the "version" field from struct vm_page,
and together with shrinking "loan_count" from 32 bits to 16,
struct vm_page is now 4 bytes smaller.
- no longer use PG_RELEASED for swap-backed pages. if the page is busy
because it's being paged out, we can't release the swap slot to be
reallocated until that write is complete, but unlike with vnodes we
don't keep a count of in-progress writes so there's no good way to
know when the write is done. instead, when we need to free a busy
swap-backed page, just sleep until we can get it busy ourselves.
- implement a fast-path for extending writes which allows us to avoid
zeroing new pages. this substantially reduces cpu usage.
- encapsulate the data used by the genfs code in a struct genfs_node,
which must be the first element of the filesystem-specific vnode data
for filesystems which use genfs_{get,put}pages().
- eliminate many of the UVM pagerops, since they aren't needed anymore
now that the pager "put" operation is a higher-level operation.
- enhance the genfs code to allow NFS to use the genfs_{get,put}pages
instead of a modified copy.
- clean up struct vnode by removing all the fields that used to be used by
the vfs_cluster.c code (which we don't use anymore with UBC).
- remove kmem_object and mb_object since they were useless.
instead of allocating pages to these objects, we now just allocate
pages with no object. such pages are mapped in the kernel until they
are freed, so we can use the mapping to find the page to free it.
this allows us to remove splvm() protection in several places.

The sum of all these changes improves write throughput on my
decstation 5000/200 to within 1% of the rate of NetBSD 1.5
and reduces the elapsed time for "make release" of a NetBSD 1.5
source tree on my 128MB pc to 10% less than a 1.5 kernel took.


Revision tags: pre-chs-ubcperf thorpej-devvp-base
# 1.16 19-Jul-2001 thorpej

branches: 1.16.2;
Use BUS_DMA_READ and BUS_DMA_WRITE in some obvious places.


# 1.15 31-May-2001 ad

branches: 1.15.2;
Reduce the delay when polling so that dumps go faster.


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.14 30-Mar-2001 ad

AEN 0x000c appears to mean `init started'. From lukem.


# 1.13 07-Mar-2001 thorpej

Add BUS_DMA_STREAMING to data transfer maps.


# 1.12 04-Mar-2001 ad

branches: 1.12.2;
Don't choke when we get lots of AENs all at once.


# 1.11 25-Feb-2001 ad

Wait 10x longer for status bits.


# 1.10 11-Feb-2001 ad

Match an upcoming product.


# 1.9 23-Jan-2001 ad

Oops, be sure to clear the ATTN interrupt on error.


# 1.8 22-Jan-2001 ad

opt_twe.h isn't needed any more.


# 1.7 22-Jan-2001 ad

- Complain if interrupt-driven retrieval of AENs fails somehow.
- Clamp the number of outstanding commands to 129.
- Other tweaks.


# 1.6 14-Jan-2001 thorpej

splimp() -> splvm()


# 1.5 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.4 14-Nov-2000 thorpej

branches: 1.4.2;
NBPG -> PAGE_SIZE


# 1.3 08-Nov-2000 ad

- Pull in some updates from FreeBSD - mainly clarifications. Thanks to
Mike Smith <msmith@freebsd.org> for pointing these out.
- Ensure that we get AENs: reserve one CCB/command block for parameter
retrieval, and chain AEN retrievals that are the result of an interrupt.


# 1.2 20-Oct-2000 ad

- tsleep()/wakeup_one() will hurt when under load, so use a queue instead.
- Don't copy to or from the aligned buffer unless there's a need to.


# 1.1 19-Oct-2000 ad

Driver for the 3ware Escalade family of RAID controllers.