public inbox for linux-rt-users@vger.kernel.org
 help / color / mirror / Atom feed
* 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