* PREEMPT_RT + HIGHMEM = segfaults during boot on ppc32
@ 2009-07-02 20:18 Steve Rottinger
2009-07-06 15:43 ` Thomas Gleixner
0 siblings, 1 reply; 3+ messages in thread
From: Steve Rottinger @ 2009-07-02 20:18 UTC (permalink / raw)
To: linux-rt-users
Hi,
I'm using 2.6.29.5-rt22 on a custom ppc32 (8641D) board. About half the
time, the board will boot up correctly. The other half of the time, I'll
get segfaults in various parts of the init process. I've also noticed
that if I remove CONFIG_HIGHMEM from my configuration, I am able to boot
consistently without running into this problem. Is there anyone else
experiencing this, or does anyone have any suggestions?
Thanks in advance,
-Steve
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PREEMPT_RT + HIGHMEM = segfaults during boot on ppc32
2009-07-02 20:18 PREEMPT_RT + HIGHMEM = segfaults during boot on ppc32 Steve Rottinger
@ 2009-07-06 15:43 ` Thomas Gleixner
0 siblings, 0 replies; 3+ messages in thread
From: Thomas Gleixner @ 2009-07-06 15:43 UTC (permalink / raw)
To: Steve Rottinger; +Cc: linux-rt-users
Steve,
On Thu, 2 Jul 2009, Steve Rottinger wrote:
> I'm using 2.6.29.5-rt22 on a custom ppc32 (8641D) board. About half the
> time, the board will boot up correctly. The other half of the time, I'll
> get segfaults in various parts of the init process. I've also noticed
> that if I remove CONFIG_HIGHMEM from my configuration, I am able to boot
> consistently without running into this problem. Is there anyone else
> experiencing this, or does anyone have any suggestions?
does the patch below help ?
Thanks,
tglx
---
Subject: powerpc-fixup-pagefault-disable-changes.patch
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 06 Jul 2009 17:36:01 +0200
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/powerpc/include/asm/highmem.h | 3 +++
1 file changed, 3 insertions(+)
Index: linux-2.6-tip/arch/powerpc/include/asm/highmem.h
===================================================================
--- linux-2.6-tip.orig/arch/powerpc/include/asm/highmem.h
+++ linux-2.6-tip/arch/powerpc/include/asm/highmem.h
@@ -90,6 +90,7 @@ static inline void *kmap_atomic_prot(str
unsigned long vaddr;
/* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */
+ preempt_disable();
pagefault_disable();
if (!PageHighMem(page))
return page_address(page);
@@ -118,6 +119,7 @@ static inline void kunmap_atomic(void *k
if (vaddr < __fix_to_virt(FIX_KMAP_END)) {
pagefault_enable();
+ preempt_enable();
return;
}
@@ -131,6 +133,7 @@ static inline void kunmap_atomic(void *k
local_flush_tlb_page(NULL, vaddr);
#endif
pagefault_enable();
+ preempt_enable();
}
static inline struct page *kmap_atomic_to_page(void *ptr)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PREEMPT_RT + HIGHMEM = segfaults during boot on ppc32
[not found] <4A51F4C1.6060604@pentek.com>
@ 2009-07-07 18:46 ` Steve Rottinger
0 siblings, 0 replies; 3+ messages in thread
From: Steve Rottinger @ 2009-07-07 18:46 UTC (permalink / raw)
To: linux-rt-users; +Cc: tglx
Hi Thomas,
This patch solved my problem.
Thanks!
-Steve
Thomas Gleixner wrote:
> does the patch below help ?
>
> Thanks,
>
> tglx
> ---
> Subject: powerpc-fixup-pagefault-disable-changes.patch
> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Date: Mon, 06 Jul 2009 17:36:01 +0200
>
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> ---
> arch/powerpc/include/asm/highmem.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> Index: linux-2.6-tip/arch/powerpc/include/asm/highmem.h
> ===================================================================
> --- linux-2.6-tip.orig/arch/powerpc/include/asm/highmem.h
> +++ linux-2.6-tip/arch/powerpc/include/asm/highmem.h
> @@ -90,6 +90,7 @@ static inline void *kmap_atomic_prot(str
> unsigned long vaddr;
>
> /* even !CONFIG_PREEMPT needs this, for in_atomic in
> do_page_fault */
> + preempt_disable();
> pagefault_disable();
> if (!PageHighMem(page))
> return page_address(page);
> @@ -118,6 +119,7 @@ static inline void kunmap_atomic(void *k
>
> if (vaddr < __fix_to_virt(FIX_KMAP_END)) {
> pagefault_enable();
> + preempt_enable();
> return;
> }
>
> @@ -131,6 +133,7 @@ static inline void kunmap_atomic(void *k
> local_flush_tlb_page(NULL, vaddr);
> #endif
> pagefault_enable();
> + preempt_enable();
> }
>
> static inline struct page *kmap_atomic_to_page(void *ptr)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-07-07 18:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-02 20:18 PREEMPT_RT + HIGHMEM = segfaults during boot on ppc32 Steve Rottinger
2009-07-06 15:43 ` Thomas Gleixner
[not found] <4A51F4C1.6060604@pentek.com>
2009-07-07 18:46 ` Steve Rottinger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox