* Oops in kernel 2.4.19-pre10-ac2-preempt
@ 2002-06-20 16:01 Mark_H_Johnson
2002-06-20 17:16 ` William Lee Irwin III
0 siblings, 1 reply; 6+ messages in thread
From: Mark_H_Johnson @ 2002-06-20 16:01 UTC (permalink / raw)
To: kpreempt-tech, linux-mm; +Cc: Robert_Horton, James_P_Cassidy, Stanley_R_Allen
I'd like to put out a warning on using the
preempt-kernel-2.4.19-pre10-ac2.patch. The best I can determine, the
pre10-ac2 kernel includes the new rmap memory management. However, there
was a message on the linux-mm mailing list from Bill Irwin stating...
>On Wed, Jun 19, 2002 at 04:18:00AM -0700, Craig Kulesa wrote:
>> Where: http://loke.as.arizona.edu/~ckulesa/kernel/rmap-vm/
>> This patch implements Rik van Riel's patches for a reverse mapping VM
>> atop the 2.5.23 kernel infrastructure. The principal sticky bits in
>
>There is a small bit of trouble here: pte_chain_lock() needs to
>preempt_disable() and pte_chain_unlock() needs to preempt_enable(),
>as they are meant to protect critical sections.
This was in reference to a port of rmap to the 2.5 kernel series, but I
think this also applies to rmap on 2.4 as well. I highly recommend avoiding
applying the kernel preemption patches to this kernel (2.4.19-pre10-ac2)
until the preemption cleanup is completed on rmap. Since I have two
different Oopses, I can't tell if the fix posted on the linux-mm is
complete or not.
In testing yesterday, we got a pair of oops as follows. The first one is...
kernel BUG at rmap.c:267!
invalid operand: 0000
CPU: 1
EIP: 0010 [<c01419837>] not tainted
EFLAGS: 00010202
eax: 01014099 ebx: c16c0e70 ecx: c16c0e70 edx: 00000010
esi: c16c0e70 edi: d1720000 ebp: 00000000 esp: d1721f44
ds: 0018 es: 0018 ss: 0018
Process kswapd (pid: 7, stack page = d1721000)
Stack : c16c0e70 c16c0e8c d1720000 d1720000
00000000 c0288824 c013a054 0000107d
000001d0 c0288824 00000000 c16coe86
00000000 c0288854 d1720000 0000107d
...
Call trace [<c013a054>] [<c013a56e>] [<c013af52>] [<co13b277>]
[<c01072db>]
Code: 0f 0b 0b 01 40 0a 25 c0 8b 46 18 a8 01 75 08 0f 0b 0d 01 40
<3> kswapd[7] exited with preempt_count 1
The second one is...
Unable to handle kernel NULL pointer deference at virtual address 00000078
printing EIP:
c0141a4b
*pde=00000000
Oops: 0000
CPU: 1
EIP: 0010 [<c0141a4b>] not tainted
EFLAGS: 00010206
eax: 00000000 ebx: c1000030 ecx: d1d5dbe0 edx: 0001bd33
esi: c13f234c edi: d1720000 ebp: d1720000 esp: d1721f74
ds: 0018 es: 0018 ss: 0018
Process kswapd (pid: 7, stack page = d1721000)
Stack: c13f2330 c013a9f6 00000000 000037f0
c0288824 0008e000 00000000 00000000
c028884c d1720000 00000000 00000000
00000000 00000000 00000000 00000000
d1720000 00000000 00000000 000037f0
000001e9 c013b43d c0288b24 00000006
Call trace [<c013a9f6>] [<c013b43d>] [<c01072db>]
Code: 8b 50 78 85 d2 74 05 39 50 64 77 09 31 c0 eb 10 90 8d 74 26
<3> kswapd[7] exited with preempt_count 1
I also had problems with unmounting disks at shutdown - occasionally the
system shutdown script would get stuck at that step and require a hard
reboot as well. It may be related to rmap race conditions if cache flushes
from memory to disk were getting screwed up.
For now, we have gone back to a 2.4.16 based kernel for further work w/
kernel preemption. Let me know if you need additional information to help
diagnose the problems. I'm going on vacation for a few weeks "tonight", but
I can check on messages & arrange for someone to forward additional data if
needed.
--Mark H Johnson
<mailto:Mark_H_Johnson@raytheon.com>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: Oops in kernel 2.4.19-pre10-ac2-preempt
2002-06-20 16:01 Oops in kernel 2.4.19-pre10-ac2-preempt Mark_H_Johnson
@ 2002-06-20 17:16 ` William Lee Irwin III
2002-06-20 17:19 ` [kpreempt-tech] " Robert Love
0 siblings, 1 reply; 6+ messages in thread
From: William Lee Irwin III @ 2002-06-20 17:16 UTC (permalink / raw)
To: Mark_H_Johnson
Cc: kpreempt-tech, linux-mm, Robert_Horton, James_P_Cassidy,
Stanley_R_Allen
On Thu, Jun 20, 2002 at 11:01:22AM -0500, Mark_H_Johnson@Raytheon.com wrote:
> This was in reference to a port of rmap to the 2.5 kernel series, but I
> think this also applies to rmap on 2.4 as well. I highly recommend avoiding
> applying the kernel preemption patches to this kernel (2.4.19-pre10-ac2)
> until the preemption cleanup is completed on rmap. Since I have two
> different Oopses, I can't tell if the fix posted on the linux-mm is
> complete or not.
The preemption cleanup cannot be done on 2.4 as there are no preemption
disabling primitives available.
Cheers,
Bill
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [kpreempt-tech] Re: Oops in kernel 2.4.19-pre10-ac2-preempt
2002-06-20 17:16 ` William Lee Irwin III
@ 2002-06-20 17:19 ` Robert Love
2002-06-20 17:22 ` William Lee Irwin III
0 siblings, 1 reply; 6+ messages in thread
From: Robert Love @ 2002-06-20 17:19 UTC (permalink / raw)
To: William Lee Irwin III
Cc: Mark_H_Johnson, kpreempt-tech, linux-mm, Robert_Horton,
James_P_Cassidy, Stanley_R_Allen
On Thu, 2002-06-20 at 10:16, William Lee Irwin III wrote:
> The preemption cleanup cannot be done on 2.4 as there are no preemption
> disabling primitives available.
wli, if you send me a patch (or just tell me explicitly where to enable
and disable preemption) I will merge it into the 2.4-ac preempt
patches...
Thanks ;)
Robert Love
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [kpreempt-tech] Re: Oops in kernel 2.4.19-pre10-ac2-preempt
2002-06-20 17:19 ` [kpreempt-tech] " Robert Love
@ 2002-06-20 17:22 ` William Lee Irwin III
2002-06-20 17:58 ` Robert Love
0 siblings, 1 reply; 6+ messages in thread
From: William Lee Irwin III @ 2002-06-20 17:22 UTC (permalink / raw)
To: Robert Love
Cc: Mark_H_Johnson, kpreempt-tech, linux-mm, Robert_Horton,
James_P_Cassidy, Stanley_R_Allen
On Thu, 2002-06-20 at 10:16, William Lee Irwin III wrote:
>> The preemption cleanup cannot be done on 2.4 as there are no preemption
>> disabling primitives available.
On Thu, Jun 20, 2002 at 10:19:24AM -0700, Robert Love wrote:
> wli, if you send me a patch (or just tell me explicitly where to enable
> and disable preemption) I will merge it into the 2.4-ac preempt
> patches...
That'd be great, the two places are pte_chain_lock() and pte_chain_unlock().
They're basically a spin_lock_bit() and spin_unlock_bit(), so they need
the same kind of disable preempt before the spinloop and re-enable it after
dropping the lock treatment as spinlocks.
Thanks,
Bill
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [kpreempt-tech] Re: Oops in kernel 2.4.19-pre10-ac2-preempt
2002-06-20 17:22 ` William Lee Irwin III
@ 2002-06-20 17:58 ` Robert Love
2002-06-20 18:01 ` William Lee Irwin III
0 siblings, 1 reply; 6+ messages in thread
From: Robert Love @ 2002-06-20 17:58 UTC (permalink / raw)
To: William Lee Irwin III
Cc: Mark_H_Johnson, kpreempt-tech, linux-mm, Robert_Horton,
James_P_Cassidy, Stanley_R_Allen
On Thu, 2002-06-20 at 10:22, William Lee Irwin III wrote:
> That'd be great, the two places are pte_chain_lock() and pte_chain_unlock().
> They're basically a spin_lock_bit() and spin_unlock_bit(), so they need
> the same kind of disable preempt before the spinloop and re-enable it after
> dropping the lock treatment as spinlocks.
Here is the patch... I will put out an updated -ac patch shortly with
this and some other bits.
Correct?
Robert Love
diff -urN linux-2.4.19-pre10-ac2/include/linux/mm.h linux/include/linux/mm.h
--- linux-2.4.19-pre10-ac2/include/linux/mm.h Thu Jun 6 11:16:03 2002
+++ linux/include/linux/mm.h Thu Jun 20 10:57:01 2002
@@ -340,6 +340,7 @@
* busywait with less bus contention for a good time to
* attempt to acquire the lock bit.
*/
+ preempt_disable();
while (test_and_set_bit(PG_chainlock, &page->flags)) {
while (test_bit(PG_chainlock, &page->flags))
cpu_relax();
@@ -349,6 +350,7 @@
static inline void pte_chain_unlock(struct page *page)
{
clear_bit(PG_chainlock, &page->flags);
+ preempt_enable();
}
/*
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [kpreempt-tech] Re: Oops in kernel 2.4.19-pre10-ac2-preempt
2002-06-20 17:58 ` Robert Love
@ 2002-06-20 18:01 ` William Lee Irwin III
0 siblings, 0 replies; 6+ messages in thread
From: William Lee Irwin III @ 2002-06-20 18:01 UTC (permalink / raw)
To: Robert Love
Cc: Mark_H_Johnson, kpreempt-tech, linux-mm, Robert_Horton,
James_P_Cassidy, Stanley_R_Allen
On Thu, 2002-06-20 at 10:22, William Lee Irwin III wrote:
>> That'd be great, the two places are pte_chain_lock() and pte_chain_unlock().
>> They're basically a spin_lock_bit() and spin_unlock_bit(), so they need
>> the same kind of disable preempt before the spinloop and re-enable it after
>> dropping the lock treatment as spinlocks.
On Thu, Jun 20, 2002 at 10:58:21AM -0700, Robert Love wrote:
> Here is the patch... I will put out an updated -ac patch shortly with
> this and some other bits.
> Correct?
> Robert Love
This is the precise fix I use/recommend.
Cheers,
Bill
> diff -urN linux-2.4.19-pre10-ac2/include/linux/mm.h linux/include/linux/mm.h
> --- linux-2.4.19-pre10-ac2/include/linux/mm.h Thu Jun 6 11:16:03 2002
> +++ linux/include/linux/mm.h Thu Jun 20 10:57:01 2002
> @@ -340,6 +340,7 @@
> * busywait with less bus contention for a good time to
> * attempt to acquire the lock bit.
> */
> + preempt_disable();
> while (test_and_set_bit(PG_chainlock, &page->flags)) {
> while (test_bit(PG_chainlock, &page->flags))
> cpu_relax();
> @@ -349,6 +350,7 @@
> static inline void pte_chain_unlock(struct page *page)
> {
> clear_bit(PG_chainlock, &page->flags);
> + preempt_enable();
> }
>
> /*
>
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2002-06-20 18:01 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-06-20 16:01 Oops in kernel 2.4.19-pre10-ac2-preempt Mark_H_Johnson
2002-06-20 17:16 ` William Lee Irwin III
2002-06-20 17:19 ` [kpreempt-tech] " Robert Love
2002-06-20 17:22 ` William Lee Irwin III
2002-06-20 17:58 ` Robert Love
2002-06-20 18:01 ` William Lee Irwin III
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.