Searched hist:"934 b2857cc576ae53c92a66e63fce7ddcfa74691" (Results 1 – 3 of 3) sorted by relevance
/openbmc/linux/arch/s390/lib/ |
H A D | delay.c | diff d3d238c7744d08c36a114a59cb537d4c0c6c9a86 Fri Oct 03 14:54:59 CDT 2008 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] nohz: Fix __udelay.
This fixes a regression that came with 934b2857cc576ae53c92a66e63fce7ddcfa74691 ("[S390] nohz/sclp: disable timer on synchronous waits."). If udelay() gets called from a disabled context it sets the clock comparator to a value where it expects the next interrupt. When the interrupt happens the clock comparator gets not reset and therefore the interrupt condition doesn't get cleared. The result is an endless timer interrupt loop.
In addition this patch fixes also the following:
rcutorture reveals that our __udelay implementation is still buggy, since it might schedule tasklets, but prevents their execution:
NOHZ: local_softirq_pending 42 NOHZ: local_softirq_pending 02 NOHZ: local_softirq_pending 142 NOHZ: local_softirq_pending 02
To fix this we make sure that only the clock comparator interrupt is enabled when the enabled wait psw is loaded. Also no code gets called anymore which might schedule tasklets.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> diff 934b2857cc576ae53c92a66e63fce7ddcfa74691 Fri Aug 01 09:39:11 CDT 2008 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] nohz/sclp: disable timer on synchronous waits.
sclp_sync_wait wait synchronously for an sclp interrupt and disables timer interrupts. However on the irq enter paths there is an extra check if a timer interrupt would be due and calls the timer callback. This would schedule softirqs in the wrong context. So introduce local_tick_enable/disable which prevents this.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
/openbmc/linux/drivers/s390/char/ |
H A D | sclp.c | diff 934b2857cc576ae53c92a66e63fce7ddcfa74691 Fri Aug 01 09:39:11 CDT 2008 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] nohz/sclp: disable timer on synchronous waits.
sclp_sync_wait wait synchronously for an sclp interrupt and disables timer interrupts. However on the irq enter paths there is an extra check if a timer interrupt would be due and calls the timer callback. This would schedule softirqs in the wrong context. So introduce local_tick_enable/disable which prevents this.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
/openbmc/linux/arch/s390/kernel/ |
H A D | time.c | diff d3d238c7744d08c36a114a59cb537d4c0c6c9a86 Fri Oct 03 14:54:59 CDT 2008 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] nohz: Fix __udelay.
This fixes a regression that came with 934b2857cc576ae53c92a66e63fce7ddcfa74691 ("[S390] nohz/sclp: disable timer on synchronous waits."). If udelay() gets called from a disabled context it sets the clock comparator to a value where it expects the next interrupt. When the interrupt happens the clock comparator gets not reset and therefore the interrupt condition doesn't get cleared. The result is an endless timer interrupt loop.
In addition this patch fixes also the following:
rcutorture reveals that our __udelay implementation is still buggy, since it might schedule tasklets, but prevents their execution:
NOHZ: local_softirq_pending 42 NOHZ: local_softirq_pending 02 NOHZ: local_softirq_pending 142 NOHZ: local_softirq_pending 02
To fix this we make sure that only the clock comparator interrupt is enabled when the enabled wait psw is loaded. Also no code gets called anymore which might schedule tasklets.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
|