Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Mar 2010 00:37:15 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/ia64/ia64 clock.c exception.S highfp.c interrupt.c locore.S machdep.c mp_machdep.c nexus.c sal.c src/sys/ia64/include clock.h intr.h intrcnt.h smp.h
Message-ID:  <201003170037.o2H0bUHD015704@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
marcel      2010-03-17 00:37:15 UTC

  FreeBSD src repository

  Modified files:
    sys/ia64/ia64        clock.c exception.S highfp.c interrupt.c 
                         locore.S machdep.c mp_machdep.c nexus.c 
                         sal.c 
    sys/ia64/include     clock.h intr.h intrcnt.h smp.h 
  Log:
  SVN rev 205234 on 2010-03-17 00:37:15Z by marcel
  
  Revamp the interrupt code based on the previous commit:
  o   Introduce XIV, eXternal Interrupt Vector, to differentiate from
      the interrupts vectors that are offsets in the IVT (Interrupt
      Vector Table). There's a vector for external interrupts, which
      are based on the XIVs.
  
  o   Keep track of allocated and reserved XIVs so that we can assign
      XIVs without hardcoding anything. When XIVs are allocated, an
      interrupt handler and a class is specified for the XIV. Classes
      are:
      1.  architecture-defined: XIV 15 is returned when no external
          interrupt are pending,
      2.  platform-defined: SAL reports which XIV is used to wakeup
          an AP (typically 0xFF, but it's 0x12 for the Altix 350).
      3.  inter-processor interrupts: allocated for SMP support and
          non-redirectable.
      4.  device interrupts (i.e. IRQs): allocated when devices are
          discovered and are redirectable.
  
  o   Rewrite the central interrupt handler to call the per-XIV
      interrupt handler and rename it to ia64_handle_intr(). Move
      the per-XIV handler implementation to the file where we have
      the XIV allocation/reservation. Clock interrupt handling is
      moved to clock.c. IPI handling is moved to mp_machdep.c.
  
  o   Drop support for the Intel 8259A because it was broken. When
      XIV 0 is received, the CPU should initiate an INTA cycle to
      obtain the interrupt vector of the 8259-based interrupt. In
      these cases the interrupt controller we should be talking to
      WRT to masking on signalling EOI is the 8259 and not the I/O
      SAPIC. This requires adriver for the Intel 8259A which isn't
      available for ia64. Thus stop pretending to support ExtINTs
      and instead panic() so that if we come across hardware that
      has an Intel 8259A, so have something real to work with.
  
  o   With XIVs for IPIs dynamically allocatedi and also based on
      priority, define the IPI_* symbols as variables rather than
      constants. The variable holds the XIV allocated for the IPI.
  
  o   IPI_STOP_HARD delivers a NMI if possible. Otherwise the XIV
      assigned to IPI_STOP is delivered.
  
  Revision  Changes    Path
  1.37      +87 -5     src/sys/ia64/ia64/clock.c
  1.70      +2 -2      src/sys/ia64/ia64/exception.S
  1.2       +1 -1      src/sys/ia64/ia64/highfp.c
  1.78      +178 -217  src/sys/ia64/ia64/interrupt.c
  1.43      +4 -7      src/sys/ia64/ia64/locore.S
  1.259     +2 -1      src/sys/ia64/ia64/machdep.c
  1.80      +96 -30    src/sys/ia64/ia64/mp_machdep.c
  1.25      +2 -28     src/sys/ia64/ia64/nexus.c
  1.18      +13 -52    src/sys/ia64/ia64/sal.c
  1.14      +0 -8      src/sys/ia64/include/clock.h
  1.8       +23 -0     src/sys/ia64/include/intr.h
  1.7       +1 -5      src/sys/ia64/include/intrcnt.h
  1.13      +12 -20    src/sys/ia64/include/smp.h



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003170037.o2H0bUHD015704>