Home | History | Annotate | Download | only in ixp12x0
History log of /src/sys/arch/arm/ixp12x0/ixp12x0_intr.c
RevisionDateAuthorComments
 1.33  20-Nov-2020  thorpej malloc(9) -> kmem(9)
 1.32  10-Nov-2019  chs branches: 1.32.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.31  08-Apr-2015  ozaki-r branches: 1.31.18;
Include sys/lwp.h instead of arm/cpu.h

sys/lwp.h is preferred because arm/cpu.h has a dependency on sys/lwp.h.

Suggested by skrll@ and matt@
 1.30  07-Apr-2015  ozaki-r Add missing #include <arm/cpu.h>
 1.29  26-Mar-2014  christos branches: 1.29.6;
kill sprintf
 1.28  20-Mar-2014  skrll Mechanically replace simplelock with kmutex_t.
 1.27  02-Mar-2014  joerg GC ipending.
 1.26  18-Dec-2013  skrll Remove unused variable
 1.25  18-Aug-2013  matt <arm/locore.h> fallout (fixes some include ordering errors)
 1.24  12-Nov-2012  skrll branches: 1.24.2;
C99 types
 1.23  02-Aug-2012  skrll branches: 1.23.2;
Remove irqframe and replace with identical trapframe.
 1.22  01-Jul-2011  dyoung branches: 1.22.2;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.21  20-Dec-2010  matt Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.20  13-Jun-2010  tsutsui Apply fixes for PR port-arm/43339:
Set proper IPL_SOFTfoo values even in !FAST_SOFTINTS case.
Some assertions in MI code expect they have unique values,
per comments from rmind@.

Also cleanup various "interrupt hierarchy" code since IPL_NONE and
IPL_SOFTfoo should not be set by any hardware interrupt establish functions.

Ok'ed by mrg@, tested on shark and hpcarm.
 1.19  28-Apr-2008  martin branches: 1.19.20; 1.19.22;
Remove clause 3 and 4 from TNF licenses
 1.18  27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.17  08-Jan-2008  matt branches: 1.17.6; 1.17.8; 1.17.10;
As of this commit, all arm32 kernel now build.
 1.16  06-Jan-2008  matt Truly kill current_intr_depth once and for all.
 1.15  24-Nov-2006  wiz branches: 1.15.24; 1.15.28; 1.15.30; 1.15.36; 1.15.44;
s/heirarchy/hierarchy/, from Zafer.
 1.14  24-Dec-2005  perry branches: 1.14.20; 1.14.22;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.13  11-Dec-2005  christos merge ktrace-lwp.
 1.12  14-Aug-2005  he Fix one more missed clockframe -> irqframe transition.
 1.11  21-Sep-2003  matt branches: 1.11.16;
Fix GCC 3.3.1 nits.
 1.10  21-Jul-2003  igy Delaying to mask interrupt by hardware until actually it occurs.

The new code maintains two variables 'current_spl_level' and
'hardware_spl_level'. Variable hardware_spl_level reflects actual
priority level at the hardware's point of view. hardware_spl_level is
always synchronized to hardware.

splraise() just increases current_spl_level. splx() sets
current_spl_level. If (and only if) hardware_spl_level and
current_spl_level is not same, splx() synchronizes interrupt mask
register and hardware_spl_level to current_spl_level.

In most case, splraise() raises current_spl_level and splx() restores
only current_spl_level.

When an interrupt occurs, hardware_spl_level and interrupt mask
register are synchronized to current_spl_level.

In this implementation, during a higher priority interrupt handler is
running, lower priority interrupts never cause intr_dispatch() to run.
It will avoid some race condition.
 1.9  13-Jul-2003  igy code clean up
 1.8  16-Jun-2003  thorpej branches: 1.8.2;
Rename IPL_IMP -> IPL_VM.
 1.7  25-Mar-2003  igy Add __KERNEL_RCSID tags
 1.6  22-Feb-2003  igy fix incorrect interrupt mask handling.
pci_imask[IPL_NET] is incorrectly ORed on imask[IPL_SOFTSERIAL].
imask[IPL_NET] should be ORed.
 1.5  17-Feb-2003  ichiro files.ixp12x0
no need device ixpcom in evbarm/conf/files.evbarm move it to
arm/ixp12x0/files.ixp12x0

ixp12x0_com.c:
some fix around address handling
1. Do not call bus_space_map() in ixpcominit(). Calling bus_space_map()
is not safe here, because bus_space_map() calls uvm_km_valloc() but
uvm is not yet initialized.
2. Use dv_unit to determine console instead comparering iobase.
Now you can attach ixpcom0 with physical address like this:
ixpcom* at ixpsip? addr 0x90000000 size 0x4000
Statically mapped address (0xf0000000) is still usable.

ixp12x0_clk:
1. access PLL_CFG register via bus_space
2. Make the delay() working correctly. (bug fix)
3. Start the timer device without interrupt on attach time.
Now delay() called before cpu_initclocks() works fine.

ixp12x0_pci:
1.Mapping PCI type0/1 configuration space to the upper address.
2."PCI I/O Cycle Access" mapping to same virtual address(VA==PA)
but size of this mapping increase to 1MByte because fails
cause couldnt set L2 table.
3.use bus_space address handling in ixp12x0_pci.c.
 1.4  02-Dec-2002  ichiro use bus_space map
 1.3  27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.2  21-Jul-2002  ichiro branches: 1.2.2; 1.2.4;
some bug fix and cosmetic changes
 1.1  15-Jul-2002  ichiro branches: 1.1.2;
add support for ixp12x0
 1.1.2.3  30-Aug-2002  gehenna catch up with -current.
 1.1.2.2  21-Jul-2002  gehenna catch up with -current.
 1.1.2.1  15-Jul-2002  gehenna file ixp12x0_intr.c was added on branch gehenna-devsw on 2002-07-21 13:00:30 +0000
 1.2.4.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.2.4.2  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.2.4.1  21-Jul-2002  jdolecek file ixp12x0_intr.c was added on branch kqueue on 2002-09-06 08:32:53 +0000
 1.2.2.3  11-Dec-2002  thorpej Sync with HEAD.
 1.2.2.2  18-Oct-2002  nathanw Catch up to -current.
 1.2.2.1  21-Jul-2002  nathanw file ixp12x0_intr.c was added on branch nathanw_sa on 2002-10-18 02:35:37 +0000
 1.8.2.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.8.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.8.2.1  03-Aug-2004  skrll Sync with HEAD
 1.11.16.3  21-Jan-2008  yamt sync with head
 1.11.16.2  30-Dec-2006  yamt sync with head.
 1.11.16.1  21-Jun-2006  yamt sync with head.
 1.14.22.1  10-Dec-2006  yamt sync with head.
 1.14.20.1  12-Jan-2007  ad Sync with head.
 1.15.44.1  08-Jan-2008  bouyer Sync with HEAD
 1.15.36.1  18-Feb-2008  mjf Sync with HEAD.
 1.15.30.3  28-Jan-2008  matt Given the that there are only 4 IPLs (ignoring soft IPLs), a number of
cleanups can be done:
Remove _SPL_* aliases.
Don't store irqmasks in ci_cpl, just make it an ipl level.
Add fast softint switching support.
 1.15.30.2  09-Jan-2008  matt sync with HEAD
 1.15.30.1  09-Nov-2007  matt Make all the evbarm kernels build again. Fix lossage from rebase.
 1.15.28.1  20-Jan-2008  chris Sync to HEAD.
 1.15.24.1  28-Feb-2008  rjs Sync with HEAD.
 1.17.10.2  11-Aug-2010  yamt sync with head.
 1.17.10.1  16-May-2008  yamt sync with head.
 1.17.8.1  18-May-2008  yamt sync with head.
 1.17.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.19.22.2  05-Mar-2011  rmind sync with head
 1.19.22.1  03-Jul-2010  rmind sync with head
 1.19.20.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.22.2.3  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.22.2.2  16-Jan-2013  yamt sync with (a bit old) head
 1.22.2.1  30-Oct-2012  yamt sync with head
 1.23.2.3  03-Dec-2017  jdolecek update from HEAD
 1.23.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.23.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.24.2.2  18-May-2014  rmind sync with head
 1.24.2.1  28-Aug-2013  rmind sync with head
 1.29.6.1  06-Jun-2015  skrll Sync with HEAD
 1.31.18.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.32.8.1  14-Dec-2020  thorpej Sync w/ HEAD.

RSS XML Feed