DragonFly commits List (threaded) for 2008-01
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
cvs commit: src/sys/platform/pc32/apic apic_vector.s src/sys/platform/pc32/icu icu_vector.s
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
Log:
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
overflow.
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@fs.ei.tum.de>
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
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/apic/apic_vector.s.diff?r1=1.36&r2=1.37&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/icu/icu_vector.s.diff?r1=1.30&r2=1.31&f=u
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]