Home | History | Annotate | only in /src/sys/arch/alpha/common
History log of /src/sys/arch/alpha/common
RevisionDateAuthorComments
 1.74 26-Jul-2022  andvar s/functin/function/ in copy pasted comment.
 1.73 19-Jul-2021  thorpej There is already a fast-path in pmap_extract() for the kernel pmap, so
don't bother doing a conditional for kernel vs. user-space here.

KASSERT() that pmap_extract() succeeds; it is a programming error if
it does not, and it's not a great idea to insert a garbage address
into the SGMAP page table.
 1.72 07-May-2021  thorpej Liberally sprinkle static around to get more symbols out of the
global namespace. A small bit of const poisoning in the TC code.
 1.71 18-Nov-2020  thorpej branches: 1.71.4;
malloc(9) -> kmem(9)
 1.70 11-Oct-2020  thorpej branches: 1.70.2;
Add some bus_dma instrumentation.
 1.69 02-Oct-2012  christos move common/bus_dma/ -> dev/bus_dma/
 1.68 01-Jul-2011  dyoung branches: 1.68.2; 1.68.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.67 21-Aug-2009  thorpej Use bus_dmamem common.
 1.66 04-Jun-2008  ad vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.
 1.65 28-Apr-2008  martin branches: 1.65.2;
Remove clause 3 and 4 from TNF licenses
 1.64 04-Mar-2007  yamt branches: 1.64.40; 1.64.42; 1.64.44;
fix fallout from caddr_t changes.
 1.63 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.62 01-Mar-2006  yamt branches: 1.62.20;
merge yamt-uio_vmspace branch.

- use vmspace rather than proc or lwp where appropriate.
the latter is more natural to specify an address space.
(and less likely to be abused for random purposes.)
- fix a swdmover race.
 1.61 11-Dec-2005  christos branches: 1.61.2; 1.61.4; 1.61.6;
merge ktrace-lwp.
 1.60 24-Nov-2005  yamt bus_dmamem_map: honour BUS_DMA_NOWAIT. noted by Manuel Bouyer.
bus_space_map: always do NOWAIT allocation as it used to be before yamt-km.

we have too many copies!
 1.59 30-Jul-2005  mhitch branches: 1.59.6;
Check for stale flags in the DMA map. This was causing crashes on an ES40
with more than 1GB of memory due to a bug in one of the drivers. From
Jason Thorpe.
 1.58 01-Apr-2005  yamt branches: 1.58.2;
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.57 09-Mar-2005  matt branches: 1.57.2;
Add a dm_maxsegsz public member to bus_dmamap_t. This allows a user of the API
to select the maximum segment size for each bus_dmamap_load (up to the maxsegsz
supplied to bus_dmamap_create). dm_maxsegsz is reset to the value supplied to
bus_dmamap_create when the dmamap is unloaded.
 1.56 09-Mar-2005  simonb Add an extra `i' to notifes/notifed.
 1.55 29-Jun-2003  fvdl branches: 1.55.2; 1.55.10; 1.55.12;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.54 28-Jun-2003  darrenr Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records. The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
 1.53 09-Apr-2003  thorpej Add support for using cached mbuf and cluster phys addrs.
 1.52 01-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.51 09-Oct-2002  nathanw In _bus_dmamem_alloc_range(), respect the high end of the caller's range.
 1.50 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.49 26-Apr-2002  thorpej branches: 1.49.2;
Keep track of which DMA window was actually used to map the
request (not always the passed in DMA tag if we try direct-map
and then fall back to sgmap-mapped). Use the actual window
when performing dmamap_sync and dmamap_unload operations.

Fixes DMA resource leak on systems with 2G+ RAM. Thanks to
Matt Thomas for help debugging this.
 1.48 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.47 12-Jul-2001  thorpej branches: 1.47.2; 1.47.4;
bzero -> memset
 1.46 26-May-2001  chs branches: 1.46.2;
replace vm_page_t with struct vm_page *.
 1.45 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.44 21-Mar-2001  soren s/vm_page_alloc_memory/uvm_pglistalloc/ in panic message.
 1.43 03-Jan-2001  thorpej branches: 1.43.2;
Some more slight cleanup.
 1.42 03-Jan-2001  thorpej Fix a couple of comments.
 1.41 03-Jan-2001  thorpej ANSI'ify.
 1.40 17-Jul-2000  thorpej When computing the segment size, consider the maximum segment
size in the DMA map.
 1.39 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.38 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.37 26-Jun-2000  simonb Change the kernel mmap interface so that the offset to map is an
"off_t" and the return value is a "paddr_t" to allow mappings
at offsets past 2^31 bytes. Somewhat inspired by FreeBSD, which
only changed the offset to a "vm_offset_t".

Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
 1.36 06-Feb-2000  thorpej branches: 1.36.4;
Implement an internal DMA map flag which prevents coalescing of
adjacent DMA segments.
 1.35 20-Jan-2000  mjacob fix misspelling
 1.34 08-Dec-1999  thorpej Slight changes so that bounce buffers can be implemented for the Jensen.
 1.33 13-Nov-1999  thorpej Update for pmap_enter() API change.
 1.32 12-Sep-1999  chs branches: 1.32.2; 1.32.4; 1.32.8;
eliminate the PMAP_NEW option by making it required for all ports.
ports which previously had no support for PMAP_NEW now implement
the pmap_k* interfaces as wrappers around the non-k versions.
 1.31 08-Jul-1999  thorpej Change the pmap_extract() interface to:
boolean_t pmap_extract(pmap_t, vaddr_t, paddr_t *);
This makes it possible for the pmap to map physical address 0.
 1.30 25-May-1999  thorpej bus_dmamem_map() maps DMA safe memory, which is usually one or more
managed pages, into KVA space. Since the pages are managed, we should
use pmap_enter(), not pmap_kenter_pa().

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

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

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

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

Note that while the pages are unowned (i.e. "just DMA-safe memory pages"),
they won't consume any swap resources, as the mappings are wired, and
the pages aren't on the active or inactive queues.
 1.29 26-Mar-1999  mycroft branches: 1.29.2; 1.29.4;
Changes for modified pmap_enter() API:
* Map the message buffer with access_type = VM_PROT_READ|VM_PROT_WRITE `just
because'.
* Map the file system buffers with access_type = VM_PROT_READ|VM_PROT_WRITE to
avoid possible problems with pagemove().
* Do not use VM_PROT_EXEC with either of the above.
* Map pages for /dev/mem with access_type = prot. Also, DO NOT use
pmap_kenter() for this, as we DO NOT want to lose modification information.
* Map pages in dumpsys() with VM_PROT_READ.
* Map pages in m68k mappedcopyin()/mappedcopyout() and writeback() with
access_type = prot.
* For now, bus_dma*(), pmap_map(), vmapbuf(), and similar functions still use
access_type = 0. This should probably be revisited.
 1.28 24-Mar-1999  mrg completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
 1.27 21-Sep-1998  thorpej Make bus_dmamap_load_uio() work, from Kevin Lahey <kml@nas.nasa.gov>.
 1.26 17-Aug-1998  thorpej Some internal cleanup; pass a tag around, not individual arguments.
 1.25 14-Aug-1998  thorpej vm_offset_t -> {paddr_t,vaddr_t}, vm_size_t -> vsize_t
 1.24 17-Jul-1998  thorpej Implement bus_dmamap_load_uio().
 1.23 03-Jun-1998  thorpej Allow the DMA tag to specify a boundary contraint. If the device has a
more strict boundary, the map will use it, otherwise the map will inherit
the tag's, unless the tag's constraint is 0 (no boundary constraint).
 1.22 03-Jun-1998  thorpej Sync the bus_dmamap_load back-end functions between alpha and i386. (only
slight, unnecessary differences)
 1.21 29-May-1998  matt more optimizations
 1.20 29-May-1998  matt Add boundary checks to _bus_dma_load...
 1.19 13-May-1998  thorpej Add support for chaining DMA windows together, for falling back on
SGMAPs if a direct-mapped window fails.
 1.18 07-May-1998  thorpej Simplify the direct-mapped DMA case somewhat by adding a window base
member to the DMA tag, and calling the direct-mapped back-ends directly,
rather than through chipset-specific front-ends which pass the window
base as an additional argument.
 1.17 17-Mar-1998  thorpej Use pmap_kenter_pa() in _bus_dmamem_map() if PMAP_NEW.
 1.16 24-Feb-1998  thorpej Add support for UVM.
 1.15 11-Feb-1998  thorpej Use kernel_map in bus_dmamem_{map,free}().
 1.14 11-Feb-1998  thorpej Use M_DMAMAP where appropriate.
 1.13 04-Feb-1998  thorpej Flush the CPU write buffer in _bus_dmamap_sync().
 1.12 04-Feb-1998  thorpej Add offset and length parameters to bus_dmamap_sync(), used for specifiying
partial syncs of a DMA mapping.
 1.11 04-Feb-1998  thorpej Change the last argument of bus_dmamap_sync() from bus_dmasync_op_t to int,
and allow more than one synchronization operation to be specified in
a single call. Dissallow mixing of PRE and POST operations.
 1.10 04-Feb-1998  thorpej Add dm_mapsize to bus_dmamap_t and rename BUS_DMAMEM_NOSYNC toBUS_DMA_COHERENT.
 1.9 27-Jan-1998  thorpej Implement bus_dmamap_load_mbuf().
 1.8 19-Jan-1998  thorpej If mapping only one segment of DMA memory into KVA space, use K0SEG.
 1.7 09-Jan-1998  thorpej Use avail_start/avail_end.
 1.6 05-Sep-1997  thorpej Implement bus_dmamem_mmap().
 1.5 02-Sep-1997  thorpej Remove references to vm_pmap.
 1.4 02-Sep-1997  thorpej Nuke the idea of <machine/options.h>. It completely defeats the purpose
of fine-grain option dependencies.
 1.3 25-Aug-1997  thorpej Protect access to kmem_map with splimp()/splx(). From Chuck Cranor.
 1.2 06-Jun-1997  thorpej branches: 1.2.2; 1.2.6;
Pull thorpej-bus-dma branch into mainline.
 1.1 05-Jun-1997  thorpej branches: 1.1.2;
file bus_dma.c was initially added on branch thorpej-bus-dma.
 1.1.2.2 06-Jun-1997  thorpej Right, that's a bonk on the head! Zero-length arrays aren't legal
in C. Make the bus_dmamap_t variable-length array size 1, and compensate
for the size screw in _bus_dmamap_create(). Pointed out by Chris Demetriou.
 1.1.2.1 05-Jun-1997  thorpej Move the Alpha bus dma support functions into their own file. Suggested
by Chris Demetriou <cgd@netbsd.org>.
 1.2.6.3 06-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.2.6.2 04-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.2.6.1 27-Aug-1997  thorpej Update marc-pcmcia branch from trunk.
 1.2.2.2 07-Jun-1997  cgd syng thorpej-bus-dma changes with alpha-nwscons branch
 1.2.2.1 06-Jun-1997  cgd file bus_dma.c was added on branch alpha-nwscons on 1997-06-07 04:42:53 +0000
 1.29.4.2 02-Aug-1999  thorpej Update from current.
 1.29.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.29.2.1 06-Feb-2000  he Pull up revision 1.36 (requested by thorpej):
Fix host->device DMA data corruption problem on DEC Miata
workstations.
 1.32.8.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.32.4.1 14-Nov-1999  fvdl Sync with -current.
 1.32.2.3 27-Mar-2001  bouyer Sync with HEAD.
 1.32.2.2 05-Jan-2001  bouyer Sync with HEAD
 1.32.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.36.4.3 27-Apr-2002  he Pull up revision 1.49 (requested by thorpej):
Fix a DMA resource leak on Alpha systems with more than 1GB of
RAM.
 1.36.4.2 18-Jul-2000  thorpej Pull up rev. 1.40:
When computing the segment size, consider the maximum segment
size in the DMA map.
 1.36.4.1 30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.43.2.2 21-Jun-2001  nathanw Catch up to -current.
 1.43.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.46.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.46.2.2 13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.46.2.1 03-Aug-2001  lukem update to -current
 1.47.4.1 01-Oct-2001  fvdl Catch up with -current.
 1.47.2.4 18-Oct-2002  nathanw Catch up to -current.
 1.47.2.3 20-Jun-2002  nathanw Catch up to -current.
 1.47.2.2 21-Sep-2001  nathanw Catch up to -current.
 1.47.2.1 12-Jul-2001  nathanw file bus_dma.c was added on branch nathanw_sa on 2001-09-21 22:34:56 +0000
 1.49.2.1 09-Jul-2002  gehenna catch up with -current.
 1.55.12.2 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.55.12.1 25-Jan-2005  yamt convert alpha to new apis.
 1.55.10.1 29-Apr-2005  kent sync with -current
 1.55.2.6 11-Dec-2005  christos Sync with head.
 1.55.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.55.2.4 01-Apr-2005  skrll Sync with HEAD.
 1.55.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.55.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.55.2.1 02-Jul-2003  darrenr Apply the aborted ktrace-lwp changes to a specific branch. This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it. This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.
 1.57.2.1 04-Aug-2005  tron Pull up revision 1.59 (requested by thorpej in ticket #635):
Check for stale flags in the DMA map. This was causing crashes on an
ES40
with more than 1GB of memory due to a bug in one of the drivers. From
Jason Thorpe.
 1.58.2.2 03-Sep-2007  yamt sync with head.
 1.58.2.1 21-Jun-2006  yamt sync with head.
 1.59.6.1 29-Nov-2005  yamt sync with head.
 1.61.6.1 22-Apr-2006  simonb Sync with head.
 1.61.4.1 09-Sep-2006  rpaulo sync with head
 1.61.2.2 07-Feb-2006  yamt fix crashes introduced by the previous.
 1.61.2.1 05-Feb-2006  yamt adapt alpha.
 1.62.20.1 12-Mar-2007  rmind Sync with HEAD.
 1.64.44.3 16-Sep-2009  yamt sync with head
 1.64.44.2 04-May-2009  yamt sync with head.
 1.64.44.1 16-May-2008  yamt sync with head.
 1.64.42.2 17-Jun-2008  yamt sync with head.
 1.64.42.1 18-May-2008  yamt sync with head.
 1.64.40.2 05-Jun-2008  mjf Sync with HEAD.

Also fix build.
 1.64.40.1 02-Jun-2008  mjf Sync with HEAD.
 1.65.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.68.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.68.2.1 30-Oct-2012  yamt sync with head
 1.70.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.71.4.2 01-Aug-2021  thorpej Sync with HEAD.
 1.71.4.1 13-May-2021  thorpej Sync with HEAD.
 1.5 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.4 03-Jan-2001  thorpej ANSI'ify.
 1.3 29-Mar-2000  simonb Don't need to include <sys/conf.h> here.
 1.2 12-Feb-1999  thorpej branches: 1.2.8;
Fix printf format problems on Alpha.
 1.1 08-Jul-1998  mjacob add a common logout printing routine file
 1.2.8.2 05-Jan-2001  bouyer Sync with HEAD
 1.2.8.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.29 18-Jul-2021  thorpej Allow for the SGMAP implementation to specify a minimum alignment for
SGMAP DMA segments. If not specified, PAGE_SIZE will be used, as before.
 1.28 04-Jul-2021  thorpej Remove unnecessary #include <sys/malloc.h>
 1.27 17-Jun-2020  thorpej branches: 1.27.6;
Switch from an extent mao to a vmem arena to manage SGMAP address space.
 1.26 27-Jan-2012  para converting extent(9) from malloc(9) to kmem(9)
preceding kmem-vmem-pool-uvm patch

releng@ acknowledged
 1.25 01-Jul-2011  dyoung branches: 1.25.2; 1.25.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.24 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.23 04-Mar-2007  christos branches: 1.23.40; 1.23.42; 1.23.44;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.22 11-Dec-2005  christos branches: 1.22.26;
merge ktrace-lwp.
 1.21 01-Jun-2005  drochner branches: 1.21.2;
fix constification fallout
 1.20 01-Apr-2003  thorpej branches: 1.20.2;
Use PAGE_SIZE rather than NBPG.
 1.19 27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.18 19-Jul-2001  thorpej branches: 1.18.2;
Simplify the SGMAP code a bit, and move SGVA allocation out of a
common routine into the individual load routines, since each load
routine needs to muddle with the "internals" of this operation.

Add a `prefetch threshold' member to the bus_dma_tag_t, so that
eventually we can determine whether or not to allocate a spill
page on a per-mapping basis.
 1.17 12-Jul-2001  thorpej bzero -> memset
 1.16 03-Jan-2001  thorpej branches: 1.16.4;
ANSI'ify.
 1.15 03-Jan-2001  thorpej Restructure alpha_sgmap_dmamap_create() slightly.
 1.14 03-Jan-2001  thorpej The code that creates/destroys SGMAP DMA maps is the same; put it
in a common place and share it.
 1.13 29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.12 18-Feb-1999  mycroft branches: 1.12.8;
If we have to increase the boundary due to the spill pages, use the old
boundary as an alignment. Otherwise we fail to enforce the old boundary,
causing massive lossage.
 1.11 14-Aug-1998  thorpej vm_offset_t -> {paddr_t,vaddr_t}, vm_size_t -> vsize_t
 1.10 06-Jun-1998  thorpej Display information about which sgmap we're attempting to initialize
if we die in alpha_sgmap_init().
 1.9 23-Mar-1998  mjacob Okay, handle the ALLOCNOW case by doing the appropriate adjustments
up front. Do the spacing arithmetic slightly differently.
 1.8 11-Feb-1998  thorpej Use M_DMAMAP where appropriate.
 1.7 21-Jan-1998  thorpej Extent names are const.
 1.6 18-Jan-1998  thorpej Implement a prefetch spill page for SGMAP DMA. This works around a slight
annoyance on systems that prefetch the next page during memory -> device
DMA if the DMA comes within a certain distance of the end of the current
page. This could cause machine checks since the PTE after the last page
would not have the valid bit set.

(I'm not going to complain about this slight kludge too much, since prefetch
makes DMA much faster...)
 1.5 17-Jan-1998  thorpej Put SGMAP-related stuff in the DMA map structure directly, rather than
indirecting through a pointer.
 1.4 17-Jan-1998  thorpej Allow specification of a minimum page table alignment to alpha_sgmap_init().
This is to work around an apparent hardware bug in some 2117x chipsets
where the page table must be aligned to at least 32k.
 1.3 02-Sep-1997  thorpej Nuke the idea of <machine/options.h>. It completely defeats the purpose
of fine-grain option dependencies.
 1.2 06-Jun-1997  thorpej branches: 1.2.2; 1.2.6;
Pull thorpej-bus-dma branch into mainline.
 1.1 03-Jun-1997  thorpej branches: 1.1.2;
file sgmap_common.c was initially added on branch thorpej-bus-dma.
 1.1.2.1 03-Jun-1997  thorpej Totally rearrange the SGMAP DMA handling code. Split the functions
into "common" (used unchanged by everyone) and "typedep", which depend
on the type (32-bit or 64-bit) of the SGMAP PTEs.

Fix several bugs, and clean up significantly, eliminating unnecessary
housekeeping overhead in several places.
 1.2.6.1 04-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.2.2.2 07-Jun-1997  cgd syng thorpej-bus-dma changes with alpha-nwscons branch
 1.2.2.1 06-Jun-1997  cgd file sgmap_common.c was added on branch alpha-nwscons on 1997-06-07 04:42:54 +0000
 1.12.8.2 05-Jan-2001  bouyer Sync with HEAD
 1.12.8.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.16.4.2 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.16.4.1 03-Aug-2001  lukem update to -current
 1.18.2.2 18-Oct-2002  nathanw Catch up to -current.
 1.18.2.1 19-Jul-2001  nathanw file sgmap_common.c was added on branch nathanw_sa on 2002-10-18 02:34:06 +0000
 1.20.2.1 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.21.2.1 03-Sep-2007  yamt sync with head.
 1.22.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.23.44.1 16-May-2008  yamt sync with head.
 1.23.42.1 18-May-2008  yamt sync with head.
 1.23.40.1 02-Jun-2008  mjf Sync with HEAD.
 1.25.6.1 18-Feb-2012  mrg merge to -current.
 1.25.2.1 17-Apr-2012  yamt sync with head
 1.27.6.1 01-Aug-2021  thorpej Sync with HEAD.
 1.44 19-Jul-2021  thorpej There is already a fast-path in pmap_extract() for the kernel pmap, so
don't bother doing a conditional for kernel vs. user-space here.

KASSERT() that pmap_extract() succeeds; it is a programming error if
it does not, and it's not a great idea to insert a garbage address
into the SGMAP page table.
 1.43 18-Jul-2021  thorpej Allow for the SGMAP implementation to specify a minimum alignment for
SGMAP DMA segments. If not specified, PAGE_SIZE will be used, as before.
 1.42 24-Jun-2021  thorpej Deal with a scenario where:
- DMA map has a boundary constraint.
- Caller asks us to map a buffer that's exactly the same size as the
boundary constraint, but is not page-aligned.

This results in the size being larger than the boundary constraint after
page-rounding, and and vmem_xalloc() fires a KASSERT for it. This is
easy to trigger by running fsck.

We handle this by detecting the condition and creating an extra DMA
segment for it the spill-over.
 1.41 15-Apr-2021  rin branches: 1.41.2;
Fix inverted logic!!

vmem_xalloc(9) should be used with VM_NOSLEEP for BUS_DMA_NOWAIT.
 1.40 11-Oct-2020  thorpej branches: 1.40.4;
Add some bus_dma instrumentation.
 1.39 17-Jun-2020  thorpej Typo: vmem_free -> vmem_xfree
 1.38 17-Jun-2020  thorpej Switch from an extent mao to a vmem arena to manage SGMAP address space.
 1.37 15-Dec-2010  matt include <uvm/uvm_extern.h> here instead
 1.36 07-Oct-2010  hans fix SGMAP_DEBUG on alpha
 1.35 28-Apr-2008  martin branches: 1.35.20; 1.35.22;
Remove clause 3 and 4 from TNF licenses
 1.34 04-Mar-2007  christos branches: 1.34.40; 1.34.42; 1.34.44;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.33 01-Mar-2006  yamt branches: 1.33.20;
merge yamt-uio_vmspace branch.

- use vmspace rather than proc or lwp where appropriate.
the latter is more natural to specify an address space.
(and less likely to be abused for random purposes.)
- fix a swdmover race.
 1.32 11-Dec-2005  christos branches: 1.32.2; 1.32.4; 1.32.6;
merge ktrace-lwp.
 1.31 30-Jul-2005  mhitch Check for stale flags in the DMA map. This was causing crashes on an ES40
with more than 1GB of memory due to a bug in one of the drivers. From
Jason Thorpe.
 1.30 28-Jul-2005  thorpej load_mbuf: Don't increase the segment index if we skipped a zero-length
mbuf. From Michael Hitch.
 1.29 28-Nov-2004  thorpej branches: 1.29.10; 1.29.12;
bus_dmamap_load_mbuf(): Skip zero-length mbufs.
kern/24811
 1.28 15-Jul-2003  lukem a .#included .c file needs __KERNEL_RCSID(1, ...
 1.27 29-Jun-2003  fvdl branches: 1.27.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.26 28-Jun-2003  darrenr Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records. The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
 1.25 03-May-2003  wiz DMA, not dma nor Dma.
 1.24 01-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.23 26-Apr-2002  thorpej Keep track of which DMA window was actually used to map the
request (not always the passed in DMA tag if we try direct-map
and then fall back to sgmap-mapped). Use the actual window
when performing dmamap_sync and dmamap_unload operations.

Fixes DMA resource leak on systems with 2G+ RAM. Thanks to
Matt Thomas for help debugging this.
 1.22 19-Jul-2001  thorpej branches: 1.22.2;
Since the SGMAP buffer load subroutine doesn't need to modify
the segment index, don't pass it by reference.
 1.21 19-Jul-2001  thorpej Implement dmamap_load_uio for SGMAPs.
 1.20 19-Jul-2001  thorpej Pay attention to BUS_DMA_READ; don't need to allocate a spill
page if it is set.
 1.19 19-Jul-2001  thorpej Since DMA frobbing can be done at interrupt time by devies at
multiple levels, protect the extent map w/ splvm().
 1.18 19-Jul-2001  thorpej Add support for mbufs to the Alpha SGMAP DMA maps.
 1.17 19-Jul-2001  thorpej Simplify the SGMAP code a bit, and move SGVA allocation out of a
common routine into the individual load routines, since each load
routine needs to muddle with the "internals" of this operation.

Add a `prefetch threshold' member to the bus_dma_tag_t, so that
eventually we can determine whether or not to allocate a spill
page on a per-mapping basis.
 1.16 12-Jul-2001  thorpej bcopy -> memcpy
 1.15 12-Jul-2001  thorpej bzero -> memset
 1.14 03-Jan-2001  thorpej branches: 1.14.4;
ANSI'ify.
 1.13 08-Jul-1999  thorpej branches: 1.13.2; 1.13.12;
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.12 14-Aug-1998  thorpej branches: 1.12.8;
vm_offset_t -> {paddr_t,vaddr_t}, vm_size_t -> vsize_t
 1.11 04-Jul-1998  jonathan defopt DDB.
 1.10 04-Jun-1998  thorpej Export the spill page PTE, and provide a hook to initialize it early.
 1.9 23-Mar-1998  mjacob Okay, handle the ALLOCNOW case by doing the appropriate adjustments
up front. Do the spacing arithmetic slightly differently.
 1.8 04-Feb-1998  thorpej Add dm_mapsize to bus_dmamap_t and rename BUS_DMAMEM_NOSYNC to
BUS_DMA_COHERENT.
 1.7 18-Jan-1998  thorpej Implement a prefetch spill page for SGMAP DMA. This works around a slight
annoyance on systems that prefetch the next page during memory -> device
DMA if the DMA comes within a certain distance of the end of the current
page. This could cause machine checks since the PTE after the last page
would not have the valid bit set.

(I'm not going to complain about this slight kludge too much, since prefetch
makes DMA much faster...)
 1.6 17-Jan-1998  thorpej Put SGMAP-related stuff in the DMA map structure directly, rather than
indirecting through a pointer.
 1.5 17-Jan-1998  thorpej Make debugging decisions at run-time, and place a handy DDB breakpoint
after a transfer has been mapped in the page table.
 1.4 05-Sep-1997  thorpej Add some debugging code to log sgmap activities. Also, make sure that
we return "no valid mappings" if there is an error while loading the
sgmap.
 1.3 02-Sep-1997  thorpej Remove references to vm_pmap.
 1.2 06-Jun-1997  thorpej branches: 1.2.2; 1.2.6;
Pull thorpej-bus-dma branch into mainline.
 1.1 03-Jun-1997  thorpej branches: 1.1.2;
file sgmap_typedep.c was initially added on branch thorpej-bus-dma.
 1.1.2.6 06-Jun-1997  thorpej Allow the includer greater flexibility in the naming of these functions.
 1.1.2.5 05-Jun-1997  thorpej - Tidy up the call to alpha_sgmap_alloc().
- Add a bunch of debugging statements, conditional on SGMAP_DEBUG.
- Use vtophys(), not pmap_extract(), for buffers in kernel VA space.
Not all kernel buffers are mapped with the MMU page tables; some
are mapped via K0SEG.
 1.1.2.4 04-Jun-1997  thorpej - Fix a serious bug in PTE index calculation.
- DMA addresses use the PTE index, not the PTE (byte) offset.
- Garbage-collect a now-unused flag.
 1.1.2.3 04-Jun-1997  thorpej - Correct one comment, and nuke an XXX.
- Consider SGMAP_PTE_SPACING when computing the PTE index.
 1.1.2.2 03-Jun-1997  thorpej Allow the includer to specify PTE spacing.
 1.1.2.1 03-Jun-1997  thorpej Totally rearrange the SGMAP DMA handling code. Split the functions
into "common" (used unchanged by everyone) and "typedep", which depend
on the type (32-bit or 64-bit) of the SGMAP PTEs.

Fix several bugs, and clean up significantly, eliminating unnecessary
housekeeping overhead in several places.
 1.2.6.2 06-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.2.6.1 04-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.2.2.2 07-Jun-1997  cgd syng thorpej-bus-dma changes with alpha-nwscons branch
 1.2.2.1 06-Jun-1997  cgd file sgmap_typedep.c was added on branch alpha-nwscons on 1997-06-07 04:42:55 +0000
 1.12.8.1 02-Aug-1999  thorpej Update from current.
 1.13.12.1 27-Apr-2002  he Pull up revision 1.23 (via patch, requested by thorpej):
Fix a DMA resource leak on Alpha systems with more than 1GB of
RAM.
 1.13.2.1 05-Jan-2001  bouyer Sync with HEAD
 1.14.4.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.14.4.1 03-Aug-2001  lukem update to -current
 1.22.2.2 20-Jun-2002  nathanw Catch up to -current.
 1.22.2.1 19-Jul-2001  nathanw file sgmap_typedep.c was added on branch nathanw_sa on 2002-06-20 03:37:33 +0000
 1.27.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.27.2.5 18-Dec-2004  skrll Sync with HEAD.
 1.27.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.27.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.27.2.2 03-Aug-2004  skrll Sync with HEAD
 1.27.2.1 02-Jul-2003  darrenr Apply the aborted ktrace-lwp changes to a specific branch. This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it. This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.
 1.29.12.2 03-Sep-2007  yamt sync with head.
 1.29.12.1 21-Jun-2006  yamt sync with head.
 1.29.10.2 04-Aug-2005  tron Pull up revision 1.31 (requested by thorpej in ticket #635):
Check for stale flags in the DMA map. This was causing crashes on an
ES40
with more than 1GB of memory due to a bug in one of the drivers. From
Jason Thorpe.
 1.29.10.1 30-Jul-2005  tron Pull up revision 1.30 (requested by thorpej in ticket #627):
load_mbuf: Don't increase the segment index if we skipped a zero-length
mbuf. From Michael Hitch.
 1.32.6.1 22-Apr-2006  simonb Sync with head.
 1.32.4.1 09-Sep-2006  rpaulo sync with head
 1.32.2.2 07-Feb-2006  yamt fix crashes introduced by the previous.
 1.32.2.1 05-Feb-2006  yamt adapt alpha.
 1.33.20.1 12-Mar-2007  rmind Sync with HEAD.
 1.34.44.2 09-Oct-2010  yamt sync with head
 1.34.44.1 16-May-2008  yamt sync with head.
 1.34.42.1 18-May-2008  yamt sync with head.
 1.34.40.1 02-Jun-2008  mjf Sync with HEAD.
 1.35.22.1 05-Mar-2011  rmind sync with head
 1.35.20.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.40.4.1 17-Apr-2021  thorpej Sync with HEAD.
 1.41.2.1 01-Aug-2021  thorpej Sync with HEAD.
 1.6 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.5 03-Jan-2001  thorpej branches: 1.5.126; 1.5.128; 1.5.130;
ANSI'ify.
 1.4 04-Jun-1998  thorpej branches: 1.4.14;
Export the spill page PTE, and provide a hook to initialize it early.
 1.3 17-Jan-1998  thorpej Put SGMAP-related stuff in the DMA map structure directly, rather than
indirecting through a pointer.
 1.2 06-Jun-1997  thorpej branches: 1.2.2;
Pull thorpej-bus-dma branch into mainline.
 1.1 03-Jun-1997  thorpej branches: 1.1.2;
file sgmap_typedep.h was initially added on branch thorpej-bus-dma.
 1.1.2.3 06-Jun-1997  thorpej Allow the includer greater flexibility in the naming of these functions.
 1.1.2.2 03-Jun-1997  thorpej Garbage-collect.
 1.1.2.1 03-Jun-1997  thorpej Totally rearrange the SGMAP DMA handling code. Split the functions
into "common" (used unchanged by everyone) and "typedep", which depend
on the type (32-bit or 64-bit) of the SGMAP PTEs.

Fix several bugs, and clean up significantly, eliminating unnecessary
housekeeping overhead in several places.
 1.2.2.2 07-Jun-1997  cgd syng thorpej-bus-dma changes with alpha-nwscons branch
 1.2.2.1 06-Jun-1997  cgd file sgmap_typedep.h was added on branch alpha-nwscons on 1997-06-07 04:42:56 +0000
 1.4.14.1 05-Jan-2001  bouyer Sync with HEAD
 1.5.130.1 16-May-2008  yamt sync with head.
 1.5.128.1 18-May-2008  yamt sync with head.
 1.5.126.1 02-Jun-2008  mjf Sync with HEAD.
 1.19 05-Sep-2020  maya fix typo
 1.18 05-Sep-2020  thorpej Update a comment.
 1.17 17-Jun-2020  thorpej Switch from an extent mao to a vmem arena to manage SGMAP address space.
 1.16 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.15 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.14 03-May-2003  wiz branches: 1.14.104; 1.14.106; 1.14.108;
DMA, not dma nor Dma.
 1.13 19-Jul-2001  thorpej branches: 1.13.2;
Simplify the SGMAP code a bit, and move SGVA allocation out of a
common routine into the individual load routines, since each load
routine needs to muddle with the "internals" of this operation.

Add a `prefetch threshold' member to the bus_dma_tag_t, so that
eventually we can determine whether or not to allocate a spill
page on a per-mapping basis.
 1.12 03-Jan-2001  thorpej branches: 1.12.4;
ANSI'ify.
 1.11 03-Jan-2001  thorpej The code that creates/destroys SGMAP DMA maps is the same; put it
in a common place and share it.
 1.10 14-Aug-1998  thorpej branches: 1.10.12;
vm_offset_t -> {paddr_t,vaddr_t}, vm_size_t -> vsize_t
 1.9 24-Jun-1998  ross Protect against multiple inclusion.
 1.8 06-Jun-1998  thorpej Add a comment describing the locking needs of the alpha_sgmap.
 1.7 21-Jan-1998  thorpej Don't conditionally define the sgmap_log_entry structure, and turn off
SGMAP logging by default.
 1.6 18-Jan-1998  thorpej Implement a prefetch spill page for SGMAP DMA. This works around a slight
annoyance on systems that prefetch the next page during memory -> device
DMA if the DMA comes within a certain distance of the end of the current
page. This could cause machine checks since the PTE after the last page
would not have the valid bit set.

(I'm not going to complain about this slight kludge too much, since prefetch
makes DMA much faster...)
 1.5 17-Jan-1998  thorpej Put SGMAP-related stuff in the DMA map structure directly, rather than
indirecting through a pointer.
 1.4 17-Jan-1998  thorpej Allow specification of a minimum page table alignment to alpha_sgmap_init().
This is to work around an apparent hardware bug in some 2117x chipsets
where the page table must be aligned to at least 32k.
 1.3 05-Sep-1997  thorpej Add some debugging code to log sgmap activities. Also, make sure that
we return "no valid mappings" if there is an error while loading the
sgmap.
 1.2 07-Jun-1997  thorpej branches: 1.2.2; 1.2.6;
Pull the thorpej-bus-dma branch into the mainline.
 1.1 03-Jun-1997  thorpej branches: 1.1.2;
file sgmapvar.h was initially added on branch thorpej-bus-dma.
 1.1.2.3 04-Jun-1997  thorpej - Fix a serious bug in PTE index calculation.
- DMA addresses use the PTE index, not the PTE (byte) offset.
- Garbage-collect a now-unused flag.
 1.1.2.2 03-Jun-1997  thorpej PTE page frame shift and valid bits are type-dependent now.
 1.1.2.1 03-Jun-1997  thorpej Totally rearrange the SGMAP DMA handling code. Split the functions
into "common" (used unchanged by everyone) and "typedep", which depend
on the type (32-bit or 64-bit) of the SGMAP PTEs.

Fix several bugs, and clean up significantly, eliminating unnecessary
housekeeping overhead in several places.
 1.2.6.1 06-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.2.2.2 07-Jun-1997  cgd sync syng thorpej-bus-dma changes with alpha-nwscons branch (pass 2)
 1.2.2.1 07-Jun-1997  cgd file sgmapvar.h was added on branch alpha-nwscons on 1997-06-07 05:47:23 +0000
 1.10.12.1 05-Jan-2001  bouyer Sync with HEAD
 1.12.4.1 03-Aug-2001  lukem update to -current
 1.13.2.2 19-Jul-2001  thorpej Simplify the SGMAP code a bit, and move SGVA allocation out of a
common routine into the individual load routines, since each load
routine needs to muddle with the "internals" of this operation.

Add a `prefetch threshold' member to the bus_dma_tag_t, so that
eventually we can determine whether or not to allocate a spill
page on a per-mapping basis.
 1.13.2.1 19-Jul-2001  thorpej file sgmapvar.h was added on branch nathanw_sa on 2001-07-19 04:27:38 +0000
 1.14.108.1 16-May-2008  yamt sync with head.
 1.14.106.1 18-May-2008  yamt sync with head.
 1.14.104.1 02-Jun-2008  mjf Sync with HEAD.
 1.30 21-Nov-2023  thorpej Don't open-code tailq access.
 1.29 04-Jul-2021  thorpej Reduce code duplication when setting up the interrupt handler data
structures:
- alpha_shared_intr_alloc() no longer takes a "string length" argument,
and just uses kmem_asprintf() to create an "irq %u" string by default.
This is suitable for nearly every caller.
- Add a alpha_shared_intr_set_string() that allows callers to override
the default IRQ description string.
- Related: make alpha_shared_intr_string() return a const char *, since
no callers should need to modify the string directly now.
- Re-factor PCI shared interrupt structure allocation / initialization
into a new alpha_pci_intr_alloc(), which is suitable for nearly every
Alpha PCI platform. Callers are expected to first have initialized
the interrupt hardware to the quiescent state.

Adjust various call sites of above functions to account for changes,
even if they are not able to use the newly re-factored code.
 1.28 25-Jun-2021  thorpej Tweak how the IRQ description strings are generated to enable additional
duplicated code re-factoring.
 1.27 07-May-2021  thorpej Liberally sprinkle static around to get more symbols out of the
global namespace. A small bit of const poisoning in the TC code.
 1.26 26-Sep-2020  thorpej branches: 1.26.6;
- Fix some bugs in previous, mainly related to indexing the correct
interrupt queue.
- Make sure to update cpu_info::ci_nintrhand if an irq moves from
one CPU to another.
 1.25 25-Sep-2020  thorpej Changes to make interrupt {,dis}establish MP-safe on Alpha:
- Protect all of the system interrupt linkage with the cpu_lock mutex.
- Re-order some of the stores to the SCB vector table to make it safe
in the face of lockless interrupt dispatch.
- Add a framework for routing interrupts to specific CPUs. Interrupts
are still funneled only to the primary CPU, but that will change for
some systems soon. Ensure that interrupt handler lists are manipulated
only on the CPUs that handle that specific interrupt source. This required
a re-factor of the alpha_shared_intr_*() family of functions.
- Enable __HAVE_INTR_CONTROL, although interrupt redistribution is still
a no-op.
- Reduce code duplication in the Jenson direct-SCB interrupt handlers.
 1.24 23-Sep-2020  thorpej Use a wrapper to acquire the kernel lock for non-MPSAFE interrupts,
rather than doing it in alpha_shared_intr_establish() directly.
 1.23 22-Sep-2020  thorpej Changes to make MPSAFE interrupts work on Alpha:

- Remove the ipl argument to scb_set() and the associated array of
"mpsafe" booleans initialized based on the ipl. It was bogus
anyway; all IPL_{BIO,NET,TTY}, etc. values are aliases of IPL_VM,
and for all practical purposes, there is really only one device
interrrupt level on Alpha anyway. Intead, we now treat all dispatches
from the SCB vector table as MP-safe, and it is now the handler for
that vector who is responsible for acquiring the KERNEL_LOCK if needed.

- Update the direct interrupt vector handlers in jensenio and TURBOchannel
to acquire the KERNEL_LOCK.

- Introduce a new ALPHA_INTR_MPSAFE flag, and add a flags argument to
alpha_shared_intr_establish(). When it is set, indicate that the
handler is MP-safe. Update alpha_shared_intr_dispatch() to pay
attention and acquire the KERNEL_LOCK (or not) as indicated.

- Re-factor all of the PCI interrupt handling, providing "generic PCI"
"PCI interrupts through ISA IRQs" implementations to significantly
reduce code duplication. Supplement the PCI chipset tag with more
info to facilitate this, and make the PCI interrupt-related routines
take a pci_chipset_tag_t argument rather than a void * argument.

- Because PCI interrupts on KN8AE are dispatched directly from the
SCB, provide a wrapper for non-MPSAFE interrupt handlers that
acquires the KERNEL_LOCK.

- Change the pci_intr_handle_t type to be a struct rather than an
integer type in order to catch any direct use of it as a value.
Add a set of functions to interact with pci_intr_handle_t, including
setting interrupt flags.

- Implement pci_intr_setattr() so that the PCI_INTR_MPSAFE attribute
can be set on a pci_intr_handle_t.

- While I'm here, make all of the MI PCI back-end operations call
through real functions rather than hopping directly through function
pointers in the chipset tag.

This change looks a lot bigger than it really is because of the re-factor
in the plethora of model-specific PCI interrupt back-ends. The KN8AE,
KN300, and T2/T3/T4 (Sable) are largely un-changed.
 1.22 10-Nov-2019  chs in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.21 06-Feb-2012  matt branches: 1.21.48;
Do a minor cleanup of alpha (this will make applying pullups post branching
easier).
u_int{8,16,32,64}_t -> uint{*}_t
Change all old-style definitions to C89 prototypes.
Whitespace cleanup.
Constification in db_disasm.c
 1.20 14-Mar-2009  dsl branches: 1.20.12; 1.20.16;
Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.19 10-Mar-2008  ad branches: 1.19.4; 1.19.12; 1.19.18;
Finish moving alpha over to the MI atomic ops.
 1.18 11-Dec-2005  christos branches: 1.18.36; 1.18.50; 1.18.70; 1.18.74;
merge ktrace-lwp.
 1.17 29-Mar-2005  thorpej branches: 1.17.2;
- Add a alpha_shared_intr_reset_strays() function that resets the stray
interrupt counter for a given shared interrupt descriptor.
- When an interrupt is successfully handled, reset the strays counter,
thus preventing a "slow leak" from eventually shutting off the interrupt
vector. Idea taken from pci_kn300.c (which was changed to use the new
alpha_shared_intr_reset_strays() function).
 1.16 27-Jul-2001  thorpej branches: 1.16.2; 1.16.22; 1.16.28; 1.16.30; 1.16.36;
Rework the interrupt code, shaving some cycles off in the process.
Rather than an "iointr" routine that decomposes a vector into an
IRQ, we maintain a vector table directly, hooking up each "iointr"
routine at the correct vector. This also allows us to hook device
interrupts up to specific vectors (c.f. Jensen).

We can shave even more cycles off, here, and I will, but it requires
some changes to the alpha_shared_intr stuff.
 1.15 05-Jun-2000  thorpej branches: 1.15.6;
Switch to the new `evcnt' mechanism for counting interrupts. Maintain
a per-CPU interrupt counter for clock, device, and interprocessor
interrupts.
 1.14 04-Jun-2000  thorpej ANSI'ify function declarations.
 1.13 19-Mar-2000  thorpej branches: 1.13.2;
Point back to the alpha_shared_intr in the intrhand structure. This
allows platform-specific code to access the `intr_private' data via
the intrhand structure.
 1.12 10-Feb-2000  mjacob Allow (re)setting of maxstrays after establishment of a shared interrupt.
This allows sporadic stray interrupt counts to be reset by an acknowledgement
of the same interrupt.
 1.11 01-Feb-2000  mjacob Do not forget to init intr_private
 1.10 08-Dec-1999  thorpej Revert previous.
 1.9 07-Dec-1999  thorpej Avoid a spurious warning when establishing a pulsed interrupt handler
on an IRQ which was marked "initially-pulsed".
 1.8 29-Nov-1999  thorpej Add a way to get/set a private pointer in the shared interrupt header.
 1.7 17-Sep-1999  thorpej branches: 1.7.2; 1.7.8;
Centralize the declaration and clearing of `cold'.
 1.6 01-Aug-1998  thorpej Implement alpha_shared_intr_disestablish(). Simply removes the handler
fromthe list, allowing the caller to manipulate the sharing type,
if appropriate.
 1.5 07-Jul-1998  thorpej Always count the number of strays we encounter, but don't send a "stopped
logging" message if we're ignoring strays.
 1.4 02-Sep-1997  thorpej Nuke the idea of <machine/options.h>. It completely defeats the purpose
of fine-grain option dependencies.
 1.3 07-Apr-1997  cgd branches: 1.3.4;
by default, provide RCS IDs for NetBSD/alpha kernel files in kernel binaries.
This can be disabled (to save a bit of space) with the NO_KERNEL_RCSIDS
options, which is present but commented out in the ALPHA config file.
In ELF-format kernels, these strings are present in the kernel binary but
are not loaded into memory. (In ECOFF-format kernels, there's no easy way
to keep them from being loaded, so they _are_ loaded into memory.)
 1.2 06-Apr-1997  cgd clean up NetBSD RCS ID strings, include machine/options.h
 1.1 17-Nov-1996  cgd branches: 1.1.2;
implement a (hack-ish) set of routines to do common chained-interrupt
handler management. It's nasty, but three slightly different copies of
the code is worse.
 1.1.2.1 01-Jun-1997  cgd sync the nwscons branch up with yesterday's version of the trunk.
Lots of conflicts/changes because of the RCS Id format changes.
Also, a few cleanups and corrections.
 1.3.4.1 04-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.7.8.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.7.2.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.13.2.1 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.15.6.1 03-Aug-2001  lukem update to -current
 1.16.36.1 30-Mar-2005  tron Pull up revision 1.17 (requested by thorpej in ticket #76):
- Add a alpha_shared_intr_reset_strays() function that resets the
stray
interrupt counter for a given shared interrupt descriptor.
- When an interrupt is successfully handled, reset the strays counter,
thus preventing a "slow leak" from eventually shutting off the
interrupt
vector. Idea taken from pci_kn300.c (which was changed to use
the new
alpha_shared_intr_reset_strays() function).
 1.16.30.1 29-Apr-2005  kent sync with -current
 1.16.28.1 11-May-2005  riz Pull up revision 1.17 (requested by thorpej in ticket #1373):
- Add a alpha_shared_intr_reset_strays() function that resets the
stray
interrupt counter for a given shared interrupt descriptor.
- When an interrupt is successfully handled, reset the strays counter,
thus preventing a "slow leak" from eventually shutting off the
interrupt
vector. Idea taken from pci_kn300.c (which was changed to use
the new
alpha_shared_intr_reset_strays() function).
 1.16.22.1 01-Apr-2005  skrll Sync with HEAD.
 1.16.2.2 27-Jul-2001  thorpej Rework the interrupt code, shaving some cycles off in the process.
Rather than an "iointr" routine that decomposes a vector into an
IRQ, we maintain a vector table directly, hooking up each "iointr"
routine at the correct vector. This also allows us to hook device
interrupts up to specific vectors (c.f. Jensen).

We can shave even more cycles off, here, and I will, but it requires
some changes to the alpha_shared_intr stuff.
 1.16.2.1 27-Jul-2001  thorpej file shared_intr.c was added on branch nathanw_sa on 2001-07-27 00:25:20 +0000
 1.17.2.1 17-Mar-2008  yamt sync with head.
 1.18.74.1 03-Apr-2008  mjf Sync with HEAD.
 1.18.70.1 24-Mar-2008  keiichi sync with head.
 1.18.50.1 23-Mar-2008  matt sync with HEAD
 1.18.36.1 18-Apr-2007  thorpej Convert to the new atomic op API.
 1.19.18.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.19.12.1 28-Apr-2009  skrll Sync with HEAD.
 1.19.4.1 04-May-2009  yamt sync with head.
 1.20.16.1 18-Feb-2012  mrg merge to -current.
 1.20.12.1 17-Apr-2012  yamt sync with head
 1.21.48.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.26.6.2 01-Aug-2021  thorpej Sync with HEAD.
 1.26.6.1 13-May-2021  thorpej Sync with HEAD.
 1.12 24-Apr-1998  drochner Drivers for PC-like console devices are MI now.
 1.11 12-Jan-1998  thorpej Adjust for config changes.
 1.10 24-Oct-1997  thorpej In vga_erasecols(), fix botched count and reversed arguments to
bus_space_set_region_2(). From Chris Demetriou <cgd@pa.dec.com>.
 1.9 25-Sep-1997  thorpej branches: 1.9.2;
Add a "scrollskip" member to wscons_emulfuncs (XXX even though it's not
a function) which specifies how many lines will be skipped when scrolling
up when the bottom of the screen is reached. Dumb framebuffers skip 10
lines (as before) because the copies are s ... l ... o ... w, but it's
silly to skip 10 lines on VGA, since the copies are much faster, so we
only skip one in that case.
 1.8 02-Sep-1997  thorpej Nuke the idea of <machine/options.h>. It completely defeats the purpose
of fine-grain option dependencies.
 1.7 23-Jul-1997  cgd branches: 1.7.2;
update these to use the new 'correct' names for functions/constants
in bus.h.
 1.6 23-Jul-1997  cgd remove a couple of outdated comments (pointed out by Kenneth Stailey
 1.5 07-Apr-1997  cgd by default, provide RCS IDs for NetBSD/alpha kernel files in kernel binaries.
This can be disabled (to save a bit of space) with the NO_KERNEL_RCSIDS
options, which is present but commented out in the ALPHA config file.
In ELF-format kernels, these strings are present in the kernel binary but
are not loaded into memory. (In ECOFF-format kernels, there's no easy way
to keep them from being loaded, so they _are_ loaded into memory.)
 1.4 06-Apr-1997  cgd clean up NetBSD RCS ID strings, include machine/options.h
 1.3 02-Dec-1996  cgd branches: 1.3.2;
convert to use bus_space_set_region_2() and bus_space_copy_2(), rather
than in-line clear and copy loops.
 1.2 23-Nov-1996  cgd move probe and setup code into common functions. always probe (i.e.
even if PCI and the IDs are right), just for sanity, before declaring
success. Split the single 0x3b0 -> 0x3df allocation into three seperate
ones: 0x3b0 -> 0x3bc (leaving the 4 ports available for lpt),
0x3c0 -> 0x3cf, and 0x3d0 -> 0x3df. The former chunk has to be split
off if the lpt can exist there, and it's sort-of pretty to have each
group (based on second hex digit) have its own handle.
 1.1 19-Nov-1996  cgd replace old PCI VGA driver with a common VGA back-end and ISA and PCI
front-ends. Unfortunately, because of the way ISA and PCI are currently
probed, if you have a PCI VGA board in your machine and both drivers
in your kernel, the ISA VGA driver may accidentally match the PCI board.
For now, the only solution to this is to not put both drivers in
the GENERIC kernels.
 1.3.2.5 12-Aug-1997  cgd fix sync-o
 1.3.2.4 12-Aug-1997  cgd sync with -current as of August 11, 1997
 1.3.2.3 22-Jul-1997  cgd a few slight cleanups re: column defns
 1.3.2.2 01-Jun-1997  cgd sync the nwscons branch up with yesterday's version of the trunk.
Lots of conflicts/changes because of the RCS Id format changes.
Also, a few cleanups and corrections.
 1.3.2.1 07-Dec-1996  cgd snapshot of work in progress (on private branch): first checkin of
reimplemented 'wscons' interfaces.
 1.7.2.2 29-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.7.2.1 04-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.9.2.1 24-Oct-1997  thorpej Pull up from trunk:

In vga_erasecols(), fix botched count and reversed arguments to
bus_space_set_region_2(). From Chris Demetriou <cgd@pa.dec.com>.
 1.4 24-Apr-1998  drochner Drivers for PC-like console devices are MI now.
 1.3 06-Apr-1997  cgd clean up NetBSD RCS ID strings
 1.2 23-Nov-1996  cgd branches: 1.2.2;
move probe and setup code into common functions. always probe (i.e.
even if PCI and the IDs are right), just for sanity, before declaring
success. Split the single 0x3b0 -> 0x3df allocation into three seperate
ones: 0x3b0 -> 0x3bc (leaving the 4 ports available for lpt),
0x3c0 -> 0x3cf, and 0x3d0 -> 0x3df. The former chunk has to be split
off if the lpt can exist there, and it's sort-of pretty to have each
group (based on second hex digit) have its own handle.
 1.1 19-Nov-1996  cgd replace old PCI VGA driver with a common VGA back-end and ISA and PCI
front-ends. Unfortunately, because of the way ISA and PCI are currently
probed, if you have a PCI VGA board in your machine and both drivers
in your kernel, the ISA VGA driver may accidentally match the PCI board.
For now, the only solution to this is to not put both drivers in
the GENERIC kernels.
 1.2.2.2 01-Jun-1997  cgd sync the nwscons branch up with yesterday's version of the trunk.
Lots of conflicts/changes because of the RCS Id format changes.
Also, a few cleanups and corrections.
 1.2.2.1 07-Dec-1996  cgd snapshot of work in progress (on private branch): first checkin of
reimplemented 'wscons' interfaces.

RSS XML Feed