cvs commit: src/sys/platform/pc32/apic apic_vector.s src/sys/platform/pc32/icu icu_vector.s

Matthew Dillon dillon at
Mon Jan 14 07:28:04 PST 2008

dillon      2008/01/14 07:27:17 PST

DragonFly src repository

  Modified files:
    sys/platform/pc32/apic apic_vector.s 
    sys/platform/pc32/icu icu_vector.s 
  Attempt to fix an interrupt recursion which can occur in specific
  situations.  The 'slow' interrupt code schedules an interrupt thread
  without holding a critical section in an attempt to allow the thread to
  preempt the current thread.  If the thread preempts it can re-arm the
  interrupt prior to returning and cause an interrupt recursion to occur
  before the interrupt code is able to finish doreti, leading to a stack
  Since we want to preempt we cannot use a critical section to prevent
  the recursion.  Instead, use curthread->td_nest_count to prevent
  recursive interrupts while the thread is unprotected by a critical
  section.  The same condition will now cause successive interrupts to
  be queued and then dispatched synchronously by doreti.
  Reported-by: "Simon 'corecode' Schubert" <corecode at>
  Revision  Changes    Path
  1.37      +7 -0      src/sys/platform/pc32/apic/apic_vector.s
  1.31      +7 -0      src/sys/platform/pc32/icu/icu_vector.s

More information about the Commits mailing list