Home | History | Annotate | Download | only in isa
History log of /src/sys/arch/arc/isa/isabus.c
RevisionDateAuthorComments
 1.54  07-Dec-2023  thorpej extent(9) -> vmem(9)
 1.53  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.52  24-Apr-2021  thorpej branches: 1.52.8;
Merge thorpej-cfargs branch:

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

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

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

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

...and a sentinel value CFARG_EOL.

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

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.51  18-Nov-2020  thorpej branches: 1.51.2;
malloc(9) -> kmem(9)
 1.50  10-Nov-2019  chs branches: 1.50.8;
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.49  27-Oct-2012  chs branches: 1.49.38;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.48  06-Mar-2011  tsutsui branches: 1.48.4; 1.48.14;
Remove trailing spaces.
 1.47  16-Dec-2009  matt branches: 1.47.4; 1.47.6;
Fix various build with the 32bit mips ports after the mips64 merge.
 1.46  27-Nov-2009  rmind - Use uvm_lwp_setuarea() instead of directly setting address to lwp_t::l_addr.
- Replace most remaining uses of l_addr with uvm_lwp_getuarea() or lwp_getpcb().
- Amend assembly in ports where it accesses PCB via struct user.
- Rename L_ADDR to L_PCB in few places. Reduce sys/user.h inclusions.
 1.45  19-Aug-2009  dyoung Define, and hook into the isa_chipset_tag_t, isabr_detach_hook().
 1.44  05-Jul-2008  tsutsui branches: 1.44.14;
Split device_t/softc with misc related changes.
 1.43  09-Apr-2008  tsutsui branches: 1.43.4; 1.43.6; 1.43.8;
Return a proper value from isabr_iointr() even in error path.
 1.42  14-Mar-2008  tsutsui Fix spl(9) botch in cpu_intr() on arc:
Don't enable unhandled interrupts before all interrupts are processed,
and also change all interrupt handlers to return processed MIPS_INT_MASK
values, rather than masked values of them.
 1.41  03-Dec-2007  ad branches: 1.41.10; 1.41.14;
Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
 1.40  17-Oct-2007  garbled branches: 1.40.2;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.39  11-Jul-2007  he branches: 1.39.8; 1.39.10;
Adapt to the new signature of callout_init().
 1.38  09-Jul-2007  ad Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.37  04-Mar-2007  christos branches: 1.37.2; 1.37.4; 1.37.10;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.36  02-Jul-2006  tsutsui branches: 1.36.10;
Use register macro defined in <dev/ic/i8259reg.h>.
 1.35  25-Jun-2006  tsutsui Remove unused struct abus stuff.
 1.34  13-Jun-2006  tsutsui branches: 1.34.2;
Before calling the handler of timer at isa for hardclock(9),
clear MIPS_SR_INT_IE in struct clockframe status to prevent
unintentional spllowersoftclock(9) in hardclock(9).
This may be required because current CLKF_BASEPRI() implementation
of NetBSD/arc doesn't check ICU_MASK and all ISA devices share
the same MIPS CPU INT2 interrupt.

BTW, has anyone tried IPL_ICU_MASK on any mips ports?
 1.33  12-Jun-2006  tsutsui Account ISA interrupts by evcnt(9)
 1.32  12-Jun-2006  tsutsui - rename struct intrhand -> struct isa_intrhand
- remove unused ih_what member
 1.31  11-Jun-2006  tsutsui Check whether the specified interrupt handler is valid before referring it.
 1.30  15-Nov-2005  tsutsui branches: 1.30.4; 1.30.8; 1.30.14;
Explicitly enable interrupts before softintr is handled as noted
in the TODO file. At least this fixes "sn0: receive buffers exhausted"
messages on my NEC-JC94.

XXX: does anyone know what "Dont reenable" comment means, which was
XXX: there since initial import of pica (not arc).
 1.29  30-Oct-2005  tsutsui branches: 1.29.2;
Use mips3_cp0_count_read() for precise microtime(9).

XXX microtime(9) function should be moved from machdep.c to timer.c?
 1.28  22-Jan-2005  tsutsui branches: 1.28.8; 1.28.10;
Make all intr_mask value types uint32_t rather than int, u_int,
or unsigned etc.
 1.27  22-Jan-2005  tsutsui - remove __P()
- use ANSI function decls
- u_intNN_t -> uintNN_t
- some KNF
 1.26  30-Aug-2004  drochner branches: 1.26.4;
Phase out the use of a string as first "attach args" member to control
which bustype should be attached with a specific call to config_found()
(from a "mainbus" or a bus bridge).
Do it for isa/eisa/mca and pci/agp for now. These buses all attach to
an mi interface attribute "isabus", "eisabus" etc., and the autoconf
framework now allows to specify an interface attribute on config_found()
and config_search(), which limits the search of matching config data
to these which attach to that specific attribute.
So we basically have to call config_found_ia(..., "foobus", ...) where
such a bus is attached.
As a consequence, where a "mainbus" or alike also attaches other
devices (eg CPUs) which do not attach to a specific attribute yet,
we need at least pass an attribute name (different from "foobus") so
that the foo bus is not found at these places. This made some minor
changes necessary which are not obviously related to the mentioned buses.
 1.25  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.24  15-Jul-2003  lukem __KERNEL_RCSID()
 1.23  15-Jun-2003  tsutsui branches: 1.23.2;
Initialize and use extent maps for ISA bus space allocation.
Now isapnp on Tyne works properly.
 1.22  14-Jun-2003  tsutsui Set intrtype[] properly.

XXX ISA interrupts on Tyne does not work yet.
 1.21  14-Jun-2003  tsutsui Add isa_intr_alloc() for isapnp support.
 1.20  25-May-2003  tsutsui Add generic software interrupt support with mips/softintr.c.
 1.19  27-Apr-2003  tsutsui Remove register declarations.
 1.18  19-Jan-2003  tsutsui TAB/space cleanup.
 1.17  01-Jan-2003  thorpej Use aprint_normal for cfprint routines.
 1.16  04-Mar-2002  simonb branches: 1.16.2;
Don't "extern int cold;" - this is in <sys/kernel.h>.
 1.15  13-Jun-2001  soda branches: 1.15.2; 1.15.8;
split ISA bridge code into bus dependent frontends to remove "cputype"
variable.
 1.14  24-Dec-2000  ur branches: 1.14.2;
Switch pica to jazzio.
Split shared MD portion between algor and jazzio.
 1.13  29-Jun-2000  mrg branches: 1.13.2;
remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.12  20-Jun-2000  soda branches: 1.12.2;
for DeskStation RPC44
 1.11  17-Jun-2000  soda fix serious inconsistency against -current isa.
 1.10  09-Jun-2000  soda - NEC RISCstation 2250 (RD-94) PCI bus support,
contributed by Shuichiro URATA <ur@a-r.org>.
- Experimental coding for NEC RISCserver 2200 and RISCstation 2200.
(doesn't really work)
 1.9  04-Jun-2000  cgd Implement the more flexiable `evcnt' interface as discussed (briefly) on
tech-kern and now documented in evcnt(9).
 1.8  23-Mar-2000  thorpej branches: 1.8.2;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.7  03-Mar-2000  soda NEC RISCstation 2250 (NEC-RD94) support.
contributed by Shuichiro URATA <ur@a-r.org>.
 1.6  22-Feb-2000  soda merge changes between OpenBSD-2.1 and OpenBSD-2.6
 1.5  23-Jan-2000  soda merge to NetBSD-current (DeskStation and Algor support is currently broken)
 1.4  23-Jan-2000  soda Moved from /cvsroot/syssrc/sys/arch/pica/isa/isa.c,v
 1.3  15-Aug-1998  mycroft Make copyright notices with my name consistent.
 1.2  11-Aug-1996  jonathan Fix old lint and changes not pulled back from pmax, pass1:
* include <mips/locore.h> where callbacks into locore are made, to get
prototypes in scope. Cast calls appropriately.
* include <mips/cpuregs.h>, not the old Sprite-derived <machine/machConst.h>.
machConst.h is deprecated.
* dk_establish() must return void, not int.
 1.1  13-Mar-1996  jonathan branches: 1.1.1;
Initial revision
 1.1.1.3  22-Feb-2000  soda OpenBSD-2.6/arc
 1.1.1.2  23-Jan-2000  soda OpenBSD-2.1/arc
 1.1.1.1  13-Mar-1996  jonathan First commit of Per Fogelstrom's port to the Acer pica r4400/isa machine.
 1.8.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.12.2.2  20-Jun-2000  soda for DeskStation RPC44
 1.12.2.1  20-Jun-2000  soda file isabus.c was added on branch netbsd-1-5 on 2000-06-20 08:26:56 +0000
 1.13.2.3  05-Jan-2001  bouyer Sync with HEAD
 1.13.2.2  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.13.2.1  29-Jun-2000  bouyer file isabus.c was added on branch thorpej_scsipi on 2000-11-20 20:00:39 +0000
 1.14.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.15.8.3  03-Jan-2003  thorpej Sync with HEAD.
 1.15.8.2  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.15.8.1  13-Jun-2001  nathanw file isabus.c was added on branch nathanw_sa on 2002-04-01 07:39:05 +0000
 1.15.2.1  16-Mar-2002  jdolecek Catch up with -current.
 1.16.2.1  17-Mar-2002  thorpej IPL_IMP -> IPL_VM
 1.23.2.7  11-Dec-2005  christos Sync with head.
 1.23.2.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.23.2.5  24-Jan-2005  skrll Sync with HEAD.
 1.23.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.23.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.23.2.2  03-Sep-2004  skrll Sync with HEAD
 1.23.2.1  03-Aug-2004  skrll Sync with HEAD
 1.26.4.1  29-Apr-2005  kent sync with -current
 1.28.10.1  02-Nov-2005  yamt sync with head.
 1.28.8.5  17-Mar-2008  yamt sync with head.
 1.28.8.4  07-Dec-2007  yamt sync with head
 1.28.8.3  03-Sep-2007  yamt sync with head.
 1.28.8.2  30-Dec-2006  yamt sync with head.
 1.28.8.1  21-Jun-2006  yamt sync with head.
 1.29.2.1  22-Nov-2005  yamt sync with head.
 1.30.14.1  19-Jun-2006  chap Sync with head.
 1.30.8.2  11-Aug-2006  yamt sync with head
 1.30.8.1  26-Jun-2006  yamt sync with head.
 1.30.4.1  09-Sep-2006  rpaulo sync with head
 1.34.2.1  13-Jul-2006  gdamore Merge from HEAD.
 1.36.10.1  12-Mar-2007  rmind Sync with HEAD.
 1.37.10.1  03-Oct-2007  garbled Sync with HEAD
 1.37.4.1  11-Jul-2007  mjf Sync with head.
 1.37.2.2  03-Dec-2007  ad Sync with HEAD.
 1.37.2.1  15-Jul-2007  ad Sync with head.
 1.39.10.3  23-Mar-2008  matt sync with HEAD
 1.39.10.2  09-Jan-2008  matt sync with HEAD
 1.39.10.1  06-Nov-2007  matt sync with HEAD
 1.39.8.1  09-Dec-2007  jmcneill Sync with HEAD.
 1.40.2.1  08-Dec-2007  mjf Sync with HEAD.
 1.41.14.3  28-Sep-2008  mjf Sync with HEAD.
 1.41.14.2  02-Jun-2008  mjf Sync with HEAD.
 1.41.14.1  03-Apr-2008  mjf Sync with HEAD.
 1.41.10.1  24-Mar-2008  keiichi sync with head.
 1.43.8.1  18-Jul-2008  simonb Sync with head.
 1.43.6.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.43.4.3  11-Mar-2010  yamt sync with head
 1.43.4.2  19-Aug-2009  yamt sync with head.
 1.43.4.1  04-May-2009  yamt sync with head.
 1.44.14.1  26-Aug-2009  matt Fixup (all but mipsco) to deal the new realities in mipsland.
 1.47.6.1  06-Jun-2011  jruoho Sync with HEAD.
 1.47.4.1  21-Apr-2011  rmind sync with head
 1.48.14.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.48.4.1  30-Oct-2012  yamt sync with head
 1.49.38.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.50.8.1  14-Dec-2020  thorpej Sync w/ HEAD.
 1.51.2.1  02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.52.8.1  03-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed