Home | History | Annotate | Download | only in ic
History log of /src/sys/dev/ic/aac.c
RevisionDateAuthorComments
 1.49  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.48  24-Apr-2021  thorpej branches: 1.48.8;
Merge thorpej-cfargs branch:

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

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

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

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

...and a sentinel value CFARG_EOL.

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

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.47  10-Nov-2019  chs branches: 1.47.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.
 1.46  28-Oct-2017  riastradh branches: 1.46.4;
Kill some more extern struct cfdriver declarations.

Down with externs in .c!
 1.45  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).
 1.44  27-Oct-2012  chs branches: 1.44.14; 1.44.18;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.43  13-Nov-2010  uebayasi branches: 1.43.8; 1.43.18;
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.
 1.42  16-Dec-2008  christos branches: 1.42.6;
replace bitmask_snprintf(9) with snprintb(3)
 1.41  02-Oct-2008  sborrill branches: 1.41.2;
Add support for >2TB arrays and implement raw I/O mode which is a
requirement for this.

N.B. Still to do - move dump on ld to 64-bit disk addresses
 1.40  08-Jun-2008  tsutsui branches: 1.40.4;
Replace device_lookup() with device_lookup_private() on getting softc
for future device_t/softc spilt.
 1.39  28-Apr-2008  martin branches: 1.39.2;
Remove clause 3 and 4 from TNF licenses
 1.38  08-Apr-2008  cegger branches: 1.38.2; 1.38.4;
use aprint_*_dev and device_xname
 1.37  21-Oct-2007  briggs branches: 1.37.16;
Use AAC_PREALLOCATE_FIBS with the softc as a parameter to catch up with
revision 1.10 of aacvar.h.
 1.36  19-Oct-2007  ad machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.35  09-Jul-2007  ad branches: 1.35.6; 1.35.8; 1.35.12;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.34  05-Jun-2007  briggs Bring in changes from FreeBSD...
* Allocate commands on-demand.
* Update a bunch of constants and some structures.
* Use __attribute__ ((__packed__)) instead of __packed to be consistent.
* Support more commands for devices that can apparently handle them.
* Support a "new comm. interface" present in more recent Adaptec
firmware. This reduces the amount of PCI bus traffic in handling
commands.
* Support larger commands going to the adapter--if the adapter can
support them.
* Support 64-bit commands for archs where sizeof(bus_addr_t) > 4 and
for adapters that advertise SGMAP64.
* Handle the WINDOW4G option and NO4GB quirk by excluding 2G-4G window
unless we have the WINDOW4G capability without the NO4GB quirk.
* Ask the adapter more about its capabilities and try to use those if
they seem sane.
* Do our bus_dmamap_sync() inside dequeue_fib instead of following,
since we have the information that we need there.
* Provide access functions for some adapters that I haven't seen yet
(MIPS-based "Rocket" adapters). Not yet used.
 1.33  26-May-2007  briggs Clear interrupt status at once instead of piecemeal.
Enable a few more bits in the I/O requested by ld and check for the fast
response bit when reading back from the queue.
Both changes come from reading the FreeBSD driver and testing on a Dell
CERC SATA controller.
 1.32  26-May-2007  briggs Import code from FreeBSD to tell the controller how much physical RAM the
system has. This has the (scary-because-we've-been-running-so-long-
without-it) commit message (for the first version of the change):
Tell the controller how much physical memory we have. Without this
there was a chance that our DMA regions would collide with the
memory window used by the cache on the controller. The result would
be massive data corruption. This seemed to mainly affect systems with
>2GB of memory.
 1.31  24-May-2007  briggs Some changes from the FreeBSD driver:
* Include definitions of adapter-initiated fibs.
* Send aifs back to the adapter after we receive them.
* Use indexes instead of pointers in 32-bit hardware registers.
* If we get a message that there's a printf from the adapter, but we have
a NUL in the first character of the printf string, change the NUL to a
space.
 1.30  04-Mar-2007  christos branches: 1.30.2; 1.30.4;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.29  16-Nov-2006  christos branches: 1.29.2; 1.29.4; 1.29.8;
__unused removal on arguments; approved by core.
 1.28  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.27  04-Mar-2006  thorpej branches: 1.27.14; 1.27.16;
LP54 -> LP64 in a comment.
 1.26  27-Dec-2005  chs branches: 1.26.4; 1.26.6;
use %z when printing a sizeof.
 1.25  26-Nov-2005  jdolecek Add some casts to make this compile on amd64 (and perhaps other LP64
architectures). Part of PR kern/30456.

The binary object file on i386 confirmed to be exactly the same before
and after the change.
 1.24  26-Nov-2005  jdolecek fix aac_print_fib() to compile with AAC_DEBUG; noncompilable "%16D" printf
format replaced by explicit hexadecimal dump of the first 32 bytes of fip->data
 1.23  25-Aug-2005  drochner branches: 1.23.6;
kill a number of autoconf submatch functions which follow the
standard scheme:
if (<configured> != <wildcard> && <configured> != <real>)
then fail
else
ask device match function

This is handled by config_stdsubmatch() now.
 1.22  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.21  20-Jun-2005  darcy branches: 1.21.2;
Fix another portability issue. Part of PR kern/30456.
 1.20  20-Jun-2005  darcy Fix some printf statements to make them more portable. Doesn't completely
fix PR kern/30456 but fixes part of it.
 1.19  30-May-2005  christos - add missing const
- fix variable shadowing
- remove unneeded casts
 1.18  12-Mar-2005  darcy Add to XXX comment for future reference.
 1.17  01-Mar-2005  briggs * Remove aif_get_mailboxstatus() from the aac_interface structure. Replace
with aif_get_mailbox(). Make it return uint32_t instead of 'int'.
* Add an AAC_GET_MAILBOX() macro and change AAC_GET_MAILBOXSTATUS() to use
that.
* Update the Dell PERC 2QC quirk code to use AAC_GET_MAILBOX instead of the
StrongARM-specific code. While StrongARM access is correct for that card,
it's a bad example of how to access the mailbox registers.
* Add the GETINFO command and use it to get and display the card's
supported options at a verbose level during attachment.
 1.16  27-Feb-2005  perry nuke trailing whitespace
 1.15  15-Feb-2005  briggs Be more verbose at attachment. Display kernel revision and add
the monitor revision and adapter serial number at a "verbose" level.
Add the total adapter RAM at "normal" level.
 1.14  14-Jan-2005  scw branches: 1.14.2; 1.14.4;
Cast away a couple of "assignment makes pointer from integer without a cast"
warnings.
 1.13  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.12  24-Aug-2004  thorpej Use ANSI function decls and more use of static.
 1.11  20-Mar-2004  christos Remove extraneous ; from OpenBSD.
 1.10  09-Dec-2003  ad Mirror change made in FreeBSD, rev 1.39 of aac.c. May address PR 23574.
bzero out the sync command buffer when sending commands. This was causing
problems when enumerating multiple arrays.
 1.9  03-May-2003  wiz branches: 1.9.2;
DMA, not dma nor Dma.
 1.8  31-Jan-2003  thorpej Use aprint_*().
 1.7  01-Jan-2003  thorpej Use aprint_normal() in cfprint routines.
 1.6  25-Nov-2002  fvdl Actually, back out previous. Better have it not compile on LP64 to show
that it's broken for that case.
 1.5  25-Nov-2002  fvdl Add some hideous casts to get this to compile on LP64. Doesn't look like
it has a chance of working, though.
 1.4  27-Sep-2002  thorpej Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.
 1.3  01-Jun-2002  lukem branches: 1.3.2; 1.3.4;
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.2  31-May-2002  thorpej Fix a pasto in printf arguments which resulted in the aac kernel
version being mis-reported.
 1.1  26-Apr-2002  ad branches: 1.1.2;
Add a driver for Adaptec FSA RAID controllers, as often found in Dell
servers. Based on the FreeBSD/OpenBSD versions.
 1.1.2.1  20-Jun-2002  gehenna catch up with -current.
 1.3.4.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.3.4.2  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.3.4.1  01-Jun-2002  jdolecek file aac.c was added on branch kqueue on 2002-06-23 17:46:06 +0000
 1.3.2.4  03-Jan-2003  thorpej Sync with HEAD.
 1.3.2.3  18-Oct-2002  nathanw Catch up to -current.
 1.3.2.2  20-Jun-2002  nathanw Catch up to -current.
 1.3.2.1  01-Jun-2002  nathanw file aac.c was added on branch nathanw_sa on 2002-06-20 03:44:26 +0000
 1.9.2.10  11-Dec-2005  christos Sync with head.
 1.9.2.9  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.9.2.8  01-Apr-2005  skrll Sync with HEAD.
 1.9.2.7  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.9.2.6  15-Feb-2005  skrll Sync with HEAD.
 1.9.2.5  17-Jan-2005  skrll Sync with HEAD.
 1.9.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.9.2.2  25-Aug-2004  skrll Sync with HEAD.
 1.9.2.1  03-Aug-2004  skrll Sync with HEAD
 1.14.4.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.14.2.1  29-Apr-2005  kent sync with -current
 1.21.2.4  27-Oct-2007  yamt sync with head.
 1.21.2.3  03-Sep-2007  yamt sync with head.
 1.21.2.2  30-Dec-2006  yamt sync with head.
 1.21.2.1  21-Jun-2006  yamt sync with head.
 1.23.6.1  29-Nov-2005  yamt sync with head.
 1.26.6.1  22-Apr-2006  simonb Sync with head.
 1.26.4.1  09-Sep-2006  rpaulo sync with head
 1.27.16.2  10-Dec-2006  yamt sync with head.
 1.27.16.1  22-Oct-2006  yamt sync with head
 1.27.14.1  18-Nov-2006  ad Sync with head.
 1.29.8.1  06-Jan-2008  wrstuden Catch up to netbsd-4.0 release.
 1.29.4.1  12-Mar-2007  rmind Sync with HEAD.
 1.29.2.2  03-Oct-2008  jdc Pull up revisions:
src/sys/dev/ic/aac.c 1.41 via patch
src/sys/dev/ic/aacreg.h 1.13 via patch
src/sys/dev/ic/aacvar.h 1.13 via patch
src/sys/dev/ic/ld_aac.c 1.22 via patch
(requested by sborrill in ticket #1208).
 1.29.2.1  25-Nov-2007  xtraeme Pull up following revision(s) (requested by briggs in ticket #990):
sys/dev/ic/aac_tables.h: revision 1.5 (patch)
sys/dev/ic/aac.c: revision 1.31 (patch)
sys/dev/ic/aac.c: revision 1.32 (patch)
sys/dev/ic/aac.c: revision 1.33 (patch)
sys/dev/ic/aac.c: revision 1.34 (patch)
sys/arch/amd64/conf/INSTALL: revision 1.70 (patch)
sys/dev/ic/aac.c: revision 1.37 (patch)
sys/dev/ic/aacreg.h: revision 1.6 (patch)
sys/dev/ic/aacreg.h: revision 1.7 (patch)
sys/dev/ic/aacreg.h: revision 1.8 (patch)
sys/dev/ic/aacreg.h: revision 1.9 (patch)
sys/dev/pci/aac_pci.c: revision 1.21 (patch)
sys/dev/ic/aacvar.h: revision 1.10 (patch)
sys/dev/ic/aacvar.h: revision 1.9 (patch)
sys/arch/amd64/conf/GENERIC: revision 1.144 (patch)
sys/dev/ic/ld_aac.c: revision 1.14 (patch)
sys/dev/ic/ld_aac.c: revision 1.15 (patch)
Compile and run on amd64 and on >2GB RAM.
 1.30.4.1  11-Jul-2007  mjf Sync with head.
 1.30.2.3  23-Oct-2007  ad Sync with head.
 1.30.2.2  09-Jun-2007  ad Sync with head.
 1.30.2.1  27-May-2007  ad Sync with head.
 1.35.12.1  25-Oct-2007  bouyer Sync with HEAD.
 1.35.8.1  06-Nov-2007  matt sync with HEAD
 1.35.6.1  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.37.16.4  17-Jan-2009  mjf Sync with HEAD.
 1.37.16.3  05-Oct-2008  mjf Sync with HEAD.
 1.37.16.2  29-Jun-2008  mjf Sync with HEAD.
 1.37.16.1  02-Jun-2008  mjf Sync with HEAD.
 1.38.4.2  04-May-2009  yamt sync with head.
 1.38.4.1  16-May-2008  yamt sync with head.
 1.38.2.2  17-Jun-2008  yamt sync with head.
 1.38.2.1  18-May-2008  yamt sync with head.
 1.39.2.2  10-Oct-2008  skrll Sync with HEAD.
 1.39.2.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.40.4.1  19-Oct-2008  haad Sync with HEAD.
 1.41.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.42.6.1  05-Mar-2011  rmind sync with head
 1.43.18.2  03-Dec-2017  jdolecek update from HEAD
 1.43.18.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.43.8.1  30-Oct-2012  yamt sync with head
 1.44.18.1  04-Nov-2016  pgoyette Sync with HEAD
 1.44.14.1  05-Oct-2016  skrll Sync with HEAD
 1.46.4.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.47.10.2  22-Mar-2021  thorpej Audit CFARG_IATTR in config_found() calls, and remove it in situations
where the interface attribute is not ambiguous.
 1.47.10.1  22-Mar-2021  thorpej Mechanical conversion of config_found_sm_loc() -> config_found().
CFARG_IATTR usage needs to be audited.
 1.48.8.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed