Home | History | Annotate | Download | only in dev
History log of /src/sys/arch/sparc64/dev/iommu.c
RevisionDateAuthorComments
 1.119  20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.118  08-Dec-2023  thorpej Change one vmem_free() in an error path that should be vmem_xfree().
 1.117  01-Dec-2023  thorpej Use vmem(9) rather than extent(9) to manage DVMA mappings.
 1.116  26-Apr-2021  mrg iommu_enter() and iommu_remove() are static to iommu.c.
 1.115  09-Feb-2019  mrg branches: 1.115.16;
on tomatillo unload the map before flushing the iommu, instead of
the reverse. from opensolaris.
 1.114  03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

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

HOWEVER! Some subsystems have

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

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

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

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

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

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

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.113  07-Mar-2016  christos branches: 1.113.16; 1.113.18;
Better to panic! Otherwise we end in an endless loop.
 1.112  07-Mar-2016  christos Return instead of crashing. This is wrong, and should be fixed properly.
 1.111  07-Mar-2016  christos Don't throw us in the debugger!
 1.110  06-Sep-2015  nakayama Fix build w/o options SUN4V.
 1.109  03-Sep-2015  palle sun4v: iommu setup seems to work now - device detection is now possible - parts from OpenBSD - ok mrg@, martin@
 1.108  24-Aug-2014  palle branches: 1.108.2;
Initialize IOMMU control and status register properly - from OpenBSD - ok mrg@
 1.107  25-Mar-2012  mrg branches: 1.107.2;
replace splhigh() usage with an IPL_HIGH mutex.
 1.106  27-Jan-2012  para converting extent(9) from malloc(9) to kmem(9)
preceding kmem-vmem-pool-uvm patch

releng@ acknowledged
 1.105  08-Oct-2011  nakayama branches: 1.105.2; 1.105.6;
Fix namespace confilicts membar_ops(3) vs. macros for SPARC V9
membar instructions.
 1.104  01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.103  20-Mar-2011  mrg re-add most of the pryo-supporting code, and some general clean up:
- handle setting tsb size in the ptsb via IOMMU_TSBSIZE_IN_PTSB (partly from
openbsd)
- fix IDB_INFO for systems without a STC that fault on accesses to the
flush register (like pyro)
- move iommu_reset() to the end of iommu_init()
- use IOMMUREG_WRITE() in a few places
- add a missing membar_lookaside() (from openbsd)
- if pmap_extract() on the flush buffer fails, disable flushing (from openbsd)
- flush the pyro-style iommu when IOMMU_FLUSH_CACHE is set (partly from openbsd)
- clear up a bit of debugging code so it spew a little less (sometimes you will
get kernel lock spinouts due to long scrolling printfs)
- use __func__ in several places
 1.102  16-Mar-2011  mrg revert the iommu changes for now. my U60 doesn't like them.
 1.101  16-Mar-2011  mrg various changes to adapt for Fire controller support, based upon the
openbsd code to do the same:

- add the tsb size into the ptsb bits
- avoid setting tsbsize in the CR
- disable IDB_INFO for now; it crashes
- add new macros for reading/writing IOMMU registers (need to use
these more regularly across the whole file)
- add a missing membar #lookaside
- add support for flushing the pyro(4) caches
- extend struct iommureg to include everything pyro
 1.100  06-Nov-2010  uebayasi branches: 1.100.2;
Machine dependent code is considered as part of UVM. Include
internal API header.
 1.99  17-Jun-2010  mrg in iommu_remove() don't invalidate the IOMMU mapping. for reasons not
yet determined, some PCI devices (at least fxp(4) and re(4)) sometimes
appear to perform DMA operations while this is happening, and we get
uncorrectable DMA errors. ideally, this "shouldn't happen", but none
of the investigation so far has reveal the problem, and my source
investigation of both opensolaris and linux show that their perform
the invaliation when unmapping.

"handles" PR#43274 as well as other issues...

XXX: candidate for netbsd-5
 1.98  11-Mar-2010  mrg branches: 1.98.2;
various aprint_* fixes.
 1.97  24-Feb-2010  skrll Typo in comment
 1.96  10-Dec-2009  nakayama branches: 1.96.2;
iommu_dvmamap_load:
Split a segment if its size is larger than dm_maxsegsz.

iommu_dvmamap_load_raw:
Don't coalesce segments if total size is larger than dm_maxsegsz.

This should fix port-sparc64/35299.
 1.95  07-Dec-2009  nakayama Print the warning message if extent_free fails.
 1.94  07-Dec-2009  nakayama Add comment about an uncorrectable DMA error sometimes observed on
tlp(4) on Netra X1, and its workaround.

Also add membar_storestore, from OpenBSD.
 1.93  07-Dec-2009  nakayama Calculate DVMA pages correctly.
 1.92  07-Dec-2009  nakayama Avoid use of iommu_dvmamap_unload in error path. It is too
expensive since it contains data cache flushing.

Some driver (tlp(4) with DM9201 on Netra X1) can only handle one
DMA segment, so it was called frequently.
 1.91  06-Dec-2009  nakayama Call iommu_strbuf_flush_done every iommu_enter is too expensive,
so call it once if needed.
 1.90  06-Dec-2009  nakayama Make is_dvmaend point to the last DVMA map address not the next
address, and fix off by one errors.

Also, do some optimization.
 1.89  05-Dec-2009  jdc Avoid a panic if we are asked to sync a zero-length map, by returning
immediately.
 1.88  07-Nov-2009  cegger Add a flags argument to pmap_kenter_pa(9).
Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html
No objections.
 1.87  24-Oct-2009  nakayama Use trunc_page or round_page where appropriate.
No functional changes intended, and generate same binaries.
 1.86  15-Feb-2009  martin fix the formats of a debug printf for the time_t changes.
 1.85  18-Oct-2008  nakayama branches: 1.85.2; 1.85.8;
It is wasteful that reconstructing arguments for inserting the pointer
to streaming buffers in each bus_dma functions on sbus/psycho layer.

Use iommu functions directly with storing the pointer into (unused)
_dm_cookie at bus_dmamap_create time.
 1.84  13-Oct-2008  nakayama Remove unnecessary includes.
 1.83  04-Jun-2008  ad branches: 1.83.4;
vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.
 1.82  30-May-2008  mrg convert the rest of my licenses to 2-clause, extracting myself out
from a group as necessary.

bozohttpd remains, but it will get fixed next time i update it.
 1.81  04-Mar-2007  christos branches: 1.81.40; 1.81.42; 1.81.44; 1.81.46;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.80  01-Sep-2006  mrg branches: 1.80.8;
s/E2BIG/EFBIG/ for bus_dma(9) errors. this is what every other
bus_dma does and several drivers depend on it. in particular,
both re(4) and ath(4) would both spew "can't map mbuf" messages
as rapidly as possible (spamming the 9600 bps console) and
effectively locking up the interface until ifconfig "down up"
cycle was run. with this fix, i get a much, much slower spew
of messages, and the interface (re(4)) continues to operate.
 1.79  13-Feb-2006  cdi branches: 1.79.2; 1.79.12;
ANSIfy: u_intN_t -> uintN_t, remove __P(), fix function definitions.
 1.78  11-Feb-2006  cdi ANSIfication: u_intN_t -> uintN_t, use ANSI function declarations/definitions
instead of K&R ones.
 1.77  24-Nov-2005  yamt branches: 1.77.2; 1.77.4; 1.77.6;
bus_dmamem_map: honour BUS_DMA_NOWAIT. noted by Manuel Bouyer.
bus_space_map: always do NOWAIT allocation as it used to be before yamt-km.

we have too many copies!
 1.76  01-Apr-2005  yamt branches: 1.76.2; 1.76.8;
merge yamt-km branch.
- don't use managed mappings/backing objects for wired memory allocations.
save some resources like pv_entry. also fix (most of) PR/27030.
- simplify kernel memory management API.
- simplify pmap bootstrap of some ports.
- some related cleanups.
 1.75  01-Jul-2004  petrov branches: 1.75.4; 1.75.6;
iommu_dvma_load_raw: reserve extra dvma page. Fixes PR #13654.
 1.74  03-Jun-2004  petrov Add DIAGNOSTIC in iommu_dvmamap_load if pmap_extract fails.
 1.73  22-Mar-2004  nakayama branches: 1.73.2;
Make 32-bit kernels compile with options DIAGNOSTIC.
 1.72  13-Feb-2004  snj s/rediculous/ridiculous/
 1.71  16-Nov-2003  tsutsui Fix address calculation for split segment address when the buffer is
crossing boundary in iommu_dvmamap_load().
Fixes E2BIG error on dmamap with smaller boundary size than maxxfersize
(which is used by recent changed pcscp(4)).

While here, some KNF around debug printf etc.
 1.70  26-Oct-2003  christos Actually initialize the size that is printed in case of an error, so garbage
does not get printed.
 1.69  21-Oct-2003  petrov don't use NULL for u_long initialization.
 1.68  15-Sep-2003  martin Make a panic format 32bit safe.
 1.67  08-Sep-2003  petrov Support multisegment dmamap sync, adopted from OpenBSD.
 1.66  15-Jul-2003  lukem __KERNEL_RCSID()
 1.65  17-May-2003  nakayama branches: 1.65.2;
Avoid comparison is always false warnings in gcc 3.3 w/ 32-bit kernels.
 1.64  01-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.63  16-Jan-2003  petrov Don't do anything if there are no streaming buffer cache.
 1.62  24-Oct-2002  petrov Remove duplicate code in iommu_dvmamap_sync.
 1.61  16-Oct-2002  martin Make 32bit sparc64 kernels with DEBUG and DIAGNOSTIC compile.
 1.60  13-Oct-2002  petrov rearrange streming cache flushes in iommu_dvmamap_sync
 1.59  28-Sep-2002  martin Fix broken timeval comparison.
Reported by Takeshi Nakayama in PR sparc64/18453, but fixed a bit
differently.
 1.58  22-Sep-2002  chs many improvements:
- use struct vm_page_md for attaching pv entries to struct vm_page
- change pseg_set()'s return value to indicate whether the spare page
was used as an L2 or L3 PTP.
- use a pool for pv entries instead of malloc().
- put PTPs on a list attached to the pmap so we can free them
more efficiently (by just walking the list) in pmap_destroy().
- use the new pmap_remove_all() interface to avoid flushing the cache and TLB
for each pmap_remove() that's done as we are tearing down an address space.
- in pmap_enter(), handle replacing an existing mapping more efficiently
than just calling pmap_remove() on it. also, skip flushing the
TSB and TLB if there was no previous mapping, since there can't be
anything we need to flush. also, preload the TSB if we're pre-setting
the mod/ref bits.
- allocate hardware contexts like the MIPS pmap:
allocate them all sequentially without reuse, then once we run out
just invalidate all user TLB entries and flush the entire L1 dcache.
- fix pmap_extract() for the case where the va is not page-aligned and
nothing is mapped there.
- fix calculation of TSB size. it was comparing physmem (which is
in units of pages) to constants that only make sense if they are
in units of bytes.
- avoid sleeping in pmap_enter(), instead let the caller do it.
- use pmap_kenter_pa() instead of pmap_enter() where appropriate.
- remove code to handle impossible cases in various functions.
- tweak asm code to pipeline a little better.
- remove many unnecessary spls and membars.
- lots of code cleanup.
- no doubt other stuff that I've forgotten.

the result of all this is that a fork+exit microbenchmark is 34% faster
and a fork+exec+exit microbenchmark is 28% faster.
 1.57  29-Aug-2002  chs wrap Debugger() in #ifdef DDB. fixes PR 15881.
 1.56  24-Jun-2002  eeh Fix compilation problems in DEBUG code.
 1.55  20-Jun-2002  eeh Overhaul streaming buffer handling:

sysio streaming buffer flushes write a single 8-byte aligned 8-byte
value.

psycho streaming buffer flushes write a 64-byte aligned 64-byte block.

So separate out the streaming buffers into their own structure and pass those
in to all iommu operations. This also means we only flush the correct
streaming buffer for psycho rather than needing to flush both just in case.
 1.54  14-Jun-2002  eeh NEVER CAST REFERENCE PARAMETERS!!!!!
 1.53  12-Jun-2002  eeh Fix some corner cases in bus_dmamap_load_mbuf().
From Takeshi Nakayama <tn@catvmics.ne.jp>
 1.52  02-Jun-2002  drochner move initialization of the "struct pglist" returned by uvm_pglistalloc()
from the calling code into uvm_pglistalloc() itself for consistency
and easier error handling
 1.51  13-May-2002  eeh branches: 1.51.2; 1.51.4;
Fix off-by-one error in iommu_dvmamap_load_raw() where if a DMA segment
has just one byte on a page the page is never mapped into the IOMMU.
 1.50  20-Mar-2002  eeh Overhaul bus space.

bus_space_handle_t now holds an address and two ASIs, one for normal accesses
and one for streaming accesses. This allows to map individual handles
different ways, so some can use MMU bypass accesses and others use virtual
addresses. bus_space_map() will now create handles that use bypass accesses
unles BUS_SPACE_MAP_LINEAR is passed in. So only pass in BUS_SPACE_MAP_LINEAR
if you absolutely *need* to use bus_space_vaddr(). This removes at least one
extra level of indirection and should reduce TLB misses.

32-bit kernels have problems accessing 64-bit addresses, so they always use
virtual addresses.
 1.49  06-Mar-2002  tsutsui Fix calculation of dma segment length
when the DVMA range is crossing the boundary.
Approved by eeh, and fixes port-sparc64/15200.
 1.48  21-Feb-2002  eeh Fix pr sparc64/15633: datafault at tlp_start causes panic
Also clean up some additional 32-bit kernel printf issues.
 1.47  08-Feb-2002  eeh Handle the case where a DMA operation wraps from the end of a page to the
beginning of the same page properly by double-mapping that page.
 1.46  08-Feb-2002  eeh Move a brace so this will compile w/o DEBUG.
 1.45  07-Feb-2002  eeh Overhaul iommu_dvmamap_load_raw().
 1.44  17-Oct-2001  thorpej branches: 1.44.4;
Fix a typo in a DIAGNOSTIC check.
 1.43  08-Oct-2001  eeh Clear the dmamap inside splhigh() protection.
 1.42  07-Oct-2001  eeh Manage both streaming caches on psycho/psycho+.
 1.41  28-Sep-2001  chs don't depend on other headers to include sys/proc.h for us.
 1.40  21-Sep-2001  eeh Handle DMA boundaries a bit better.
 1.39  15-Sep-2001  eeh Added iommu_extract() for debug purposes.
Anyone caught using it for anything other than debug will be shot.
 1.38  10-Sep-2001  chris Update pmap_update to now take the updated pmap as an argument.
This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.

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

Reviewed by Jason.
 1.37  06-Aug-2001  eeh branches: 1.37.2;
Fix bug involving small, non-contiguous dma segments.
From Manuel Bouyer.
 1.36  20-Jul-2001  eeh PCI overhaul.
 1.35  26-May-2001  chs branches: 1.35.2;
replace vm_page_t with struct vm_page *.
 1.34  18-May-2001  mrg move the sbus IOMMU work around into the sbus code, so that the psycho
doesn't have to lose a page.
 1.33  24-Apr-2001  thorpej Sprinkle pmap_update() calls after calls to:
- pmap_enter()
- pmap_remove()
- pmap_protect()
- pmap_kenter_pa()
- pmap_kremove()
as described in pmap(9).

These calls are relatively conservative. It may be possible to
optimize these a little more.
 1.32  09-Mar-2001  thorpej Pay attention to BUS_DMA_STREAMING when builing an IOMMU TTE.
 1.31  24-Feb-2001  eeh branches: 1.31.2;
Improve legibility and iommu_dvmamap_sync().
 1.30  06-Feb-2001  eeh Fix D$ aliasing issues in a DIAGNOSTIC check.
 1.29  28-Jan-2001  martin Faster error handling for iommu_dmamap_load_raw; avoid loading the map
and unloading on error when we clearly can't get out without an error.
 1.28  27-Jan-2001  eeh Fix dvma problem caused by previous. Seems like the dvma segment calculation
in iommu_dmamap_unload() was not quite right.
 1.27  25-Jan-2001  martin iommu_dvmamap_load_raw: add a check for creating maps larger than
expected by the creator of the dma map and fail apropriately. This
makes the syssrc/dev/pci/if_vr.c driver work.
 1.26  23-Jan-2001  martin Make bus_dmamap_load_mbuf and bus_dmamap_load_uio use independend
segment lists for their mapping; make iommu_dmamap_unload deal with
this type of maps.

Coded by Eduardo, tested (and minimaly tweaked) by me.
 1.25  06-Dec-2000  mrg fix warnings in DEBUG & DIAGNSTIC code.
 1.24  28-Sep-2000  eeh Don't take ref/mod faults on DMA segments mapped in to the kernel.
 1.23  01-Aug-2000  eeh Call the parent bus dvmamap_unload function to clear the cache rather
than do it ourselves.
 1.22  07-Jul-2000  mrg split up debug flags so i can turn off some of them
 1.21  07-Jul-2000  eeh Handle bus_dma aligment properly.
 1.20  02-Jul-2000  mrg iommu_dvmamap_load*(), pass an alignment constraint, as well as
EX_BOUNDZERO, to extent_alloc(). this fixes problems with it
(extent_alloc()) returning incorrect values, when the start of
the extent is not aligned as strongly as the requested area..

raw access to ide disks now works.
 1.19  29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.18  26-Jun-2000  mrg remove/move more mach vm header files:

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

also includes a bunch of <vm/vm_page.h> include removals (due to redudancy
with <vm/vm.h>), and a scattering of other similar headers.
 1.17  24-Jun-2000  eeh With these changes the kernel seems almost stable again.
 1.16  22-Jun-2000  eeh Correct calculation of length for dma segments in iommu_dmamap_load().
 1.15  19-Jun-2000  eeh branches: 1.15.2;
Have separate data and text segments, make text read-only.
 1.14  18-Jun-2000  mrg iommu_flush becomes iommu_strbuf_flush cuz that's what it does.
 1.13  18-Jun-2000  mrg remove an unused variable.
 1.12  12-Jun-2000  mrg formatting nit.
 1.11  08-Jun-2000  eeh Support large (>1 page) DVMA maps so UltraSPARC IIi will work.
 1.10  17-May-2000  mrg branches: 1.10.2;
- in iommu_remove(), move len adjustment outside if statement, leaving
just one copy of this.
- remove duplicate setting of sgsize in iommu_dvmamap_load().
- fix DIAGNOSTIC check in iommu_dvmamap_load_raw() to panic() in unexpected
conditions only (not normal ones), and also add an extra case.
 1.9  17-May-2000  eeh Add support for bus_dma_load_raw() so the le driver will work again.
 1.8  25-Apr-2000  mrg - add a note about streaming buffers and US IIi not having them.
- make some debugging messages in iommu_remove() saner and add some more.
- decrement 'len' in the no streaming buffer case, also.
- in iommu_dvmamem_map(), do not enter these mappings into the IOMMU,
only into the CPU (the former is done at _load time).
- make a panic that shouldn't happen a DIAGNOSTIC.
 1.7  22-Apr-2000  mrg whole bunch of changes:
- merge IOMMU DVMA code from sbus/psycho into iommu.c. this code was
identical and a few minor inconsistencies had crept in. this way
keeps them all in sync.
- with this code gone from psycho, merge the psycho.c and psycho_bus.c
files. same with ebus/ebus_bus.c. delete the _bus.c files.
- add a _ds_boundary member to the dma segment structure, so that later
dma mappings can find this value.
- set _ds_boundary in machdep.c:_bus_dmamem_alloc().
- kill much dead code.
 1.6  08-Apr-2000  mrg with these two, POWEROFSEVEN now compiles cleanly.
 1.5  05-Apr-2000  mrg after enabling the streaming buffer, check to see that it is actually
there and enabled. if it appears to be missing or not enabled, do
not use it.
 1.4  05-Apr-2000  mrg use DPRINTF() style debug messages; s/sbus/iommu/ in a few remaining places.
 1.3  08-Jul-1999  thorpej branches: 1.3.2;
Change the pmap_extract() interface to:
boolean_t pmap_extract(pmap_t, vaddr_t, paddr_t *);
This makes it possible for the pmap to map physical address 0.
 1.2  20-Jun-1999  eeh branches: 1.2.2;
Move the DVMA mapin/mapout functions from the SBus driver to the iommu driver.
 1.1  04-Jun-1999  mrg pull iommu code out of sbus code so we can share it with the PCI.
define some useful PCI macros.
 1.2.2.3  02-Aug-1999  thorpej Update from trunk.
 1.2.2.2  21-Jun-1999  thorpej Sync w/ -current.
 1.2.2.1  20-Jun-1999  thorpej file iommu.c was added on branch chs-ubc2 on 1999-06-21 01:02:30 +0000
 1.3.2.4  12-Mar-2001  bouyer Sync with HEAD.
 1.3.2.3  11-Feb-2001  bouyer Sync with HEAD.
 1.3.2.2  08-Dec-2000  bouyer Sync with HEAD.
 1.3.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.10.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.15.2.2  07-Aug-2000  mrg pullup 1.23 (approved by thorpej):
>Call the parent bus dvmamap_unload function to clear the cache rather
>than do it ourselves.
 1.15.2.1  18-Jul-2000  mrg pullup the contents of -current arch/sparc64. this gives us significant
ultrasparc PCI support (ultra5, ultra10, AXi, and E250 tested so far),
plus many other small fixes. netbooting is now supported.
 1.31.2.2  21-Jun-2001  nathanw Catch up to -current.
 1.31.2.1  09-Apr-2001  nathanw Catch up with -current.
 1.35.2.8  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.35.2.7  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.35.2.6  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.35.2.5  16-Mar-2002  jdolecek Catch up with -current.
 1.35.2.4  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.35.2.3  13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.35.2.2  25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.35.2.1  03-Aug-2001  lukem update to -current
 1.37.2.2  11-Oct-2001  fvdl Catch up with -current. Fix some bogons in the sparc64 kbd/ms
attach code. cd18xx conversion provided by mrg.
 1.37.2.1  01-Oct-2001  fvdl Catch up with -current.
 1.44.4.9  17-Jan-2003  thorpej Sync with HEAD.
 1.44.4.8  11-Nov-2002  nathanw Catch up to -current
 1.44.4.7  18-Oct-2002  nathanw Catch up to -current.
 1.44.4.6  17-Sep-2002  nathanw Catch up to -current.
 1.44.4.5  01-Aug-2002  nathanw Catch up to -current.
 1.44.4.4  20-Jun-2002  nathanw Catch up to -current.
 1.44.4.3  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.44.4.2  28-Feb-2002  nathanw Catch up to -current.
 1.44.4.1  17-Oct-2001  nathanw file iommu.c was added on branch nathanw_sa on 2002-02-28 04:12:11 +0000
 1.51.4.6  01-Dec-2002  he Pull up revision 1.59 (requested by martin in ticket #874):
Fix broken timeval comparison. Fixes PR#18453.
 1.51.4.5  08-Nov-2002  tron Pull up revision 1.61 (via patch, requested by martin in ticket #916):
Make 32bit sparc64 kernels with DEBUG and DIAGNOSTIC compile.
 1.51.4.4  24-Jun-2002  lukem Pull up revision 1.56 (requested by eeh in ticket #361):
Fix compilation problems in DEBUG code.
 1.51.4.3  21-Jun-2002  lukem Pull up revision 1.55 (requested by eeh in ticket #337):
Overhaul streaming buffer handling:
sysio streaming buffer flushes write a single 8-byte aligned 8-byte
value.
psycho streaming buffer flushes write a 64-byte aligned 64-byte block.
So separate out the streaming buffers into their own structure and pass those
in to all iommu operations. This also means we only flush the correct
streaming buffer for psycho rather than needing to flush both just in case.
[Gets E220R working]
 1.51.4.2  14-Jun-2002  lukem Pull up revision 1.54 (requested by eeh in ticket #271):
NEVER CAST REFERENCE PARAMETERS!!!!!
 1.51.4.1  13-Jun-2002  lukem Pull up revision 1.53 (requested by eeh in ticket #258):
Fix some corner cases in bus_dmamap_load_mbuf().
From Takeshi Nakayama <tn@catvmics.ne.jp>
 1.51.2.3  31-Aug-2002  gehenna catch up with -current.
 1.51.2.2  17-Jul-2002  gehenna catch up with -current.
 1.51.2.1  15-Jul-2002  gehenna catch up with -current.
 1.65.2.5  11-Dec-2005  christos Sync with head.
 1.65.2.4  01-Apr-2005  skrll Sync with HEAD.
 1.65.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.65.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.65.2.1  03-Aug-2004  skrll Sync with HEAD
 1.73.2.1  02-Jul-2004  he Pull up revision 1.75 (requested by petrov in ticket #576):
Reserve extra dvma page in iommu_dvma_load_raw(). Fixes
PR#13654.
 1.75.6.1  12-Feb-2005  yamt use new apis.
 1.75.4.1  29-Apr-2005  kent sync with -current
 1.76.8.1  29-Nov-2005  yamt sync with head.
 1.76.2.3  03-Sep-2007  yamt sync with head.
 1.76.2.2  30-Dec-2006  yamt sync with head.
 1.76.2.1  21-Jun-2006  yamt sync with head.
 1.77.6.1  22-Apr-2006  simonb Sync with head.
 1.77.4.1  09-Sep-2006  rpaulo sync with head
 1.77.2.1  18-Feb-2006  yamt sync with head.
 1.79.12.1  03-Sep-2006  riz Pull up following revision(s) (requested by mrg in ticket #109):
sys/arch/sparc64/sparc64/machdep.c: revision 1.188
sys/arch/sparc64/dev/iommu.c: revision 1.80
s/E2BIG/EFBIG/ for bus_dma(9) errors. this is what every other
bus_dma does and several drivers depend on it. in particular,
both re(4) and ath(4) would both spew "can't map mbuf" messages
as rapidly as possible (spamming the 9600 bps console) and
effectively locking up the interface until ifconfig "down up"
cycle was run. with this fix, i get a much, much slower spew
of messages, and the interface (re(4)) continues to operate.
 1.79.2.1  03-Sep-2006  yamt sync with head.
 1.80.8.1  12-Mar-2007  rmind Sync with HEAD.
 1.81.46.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.81.44.3  11-Aug-2010  yamt sync with head.
 1.81.44.2  11-Mar-2010  yamt sync with head
 1.81.44.1  04-May-2009  yamt sync with head.
 1.81.42.2  17-Jun-2008  yamt sync with head.
 1.81.42.1  04-Jun-2008  yamt sync with head
 1.81.40.3  17-Jan-2009  mjf Sync with HEAD.
 1.81.40.2  05-Jun-2008  mjf Sync with HEAD.

Also fix build.
 1.81.40.1  02-Jun-2008  mjf Sync with HEAD.
 1.83.4.1  19-Oct-2008  haad Sync with HEAD.
 1.85.8.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.85.2.1  03-Mar-2009  skrll Sync with HEAD.
 1.96.2.3  17-Aug-2010  uebayasi Sync with HEAD.
 1.96.2.2  27-May-2010  uebayasi Fix build.
 1.96.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.98.2.3  21-Apr-2011  rmind sync with head
 1.98.2.2  05-Mar-2011  rmind sync with head
 1.98.2.1  03-Jul-2010  rmind sync with head
 1.100.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.105.6.2  05-Apr-2012  mrg sync to latest -current.
 1.105.6.1  18-Feb-2012  mrg merge to -current.
 1.105.2.1  17-Apr-2012  yamt sync with head
 1.107.2.1  03-Dec-2017  jdolecek update from HEAD
 1.108.2.2  19-Mar-2016  skrll Sync with HEAD
 1.108.2.1  22-Sep-2015  skrll Sync with HEAD
 1.113.18.1  10-Jun-2019  christos Sync with HEAD
 1.113.16.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.115.16.1  13-May-2021  thorpej Sync with HEAD.

RSS XML Feed