2009-06-21 06:26:17

by jing zhang

[permalink] [raw]
Subject: Fwd: patch for linux-2.6.30/arch/x86_64/mm/init.c

hi,

I have no way sending to Andi Kleen, then try Mr. linux-kernel and Mr.
Ingo Molnar.

btw, AC's mailbox @ suse closed, and why?

thank you

---------- Forwarded message ----------
From: jing zhang <[email protected]>
Date: Sun, 21 Jun 2009 14:15:09 +0800
Subject: patch for linux-2.6.30/arch/x86_64/mm/init.c
To: [email protected]

Good Sunday Mr. Andi Kleen,

It seems that in function
unsigned long __init_refok
init_memory_mapping(unsigned long start, unsigned long end)

CONFIG_DEBUG_PAGEALLOC conflicts with use_pse and use_gbpages when
CONFIG_X86_32 also defined.

The following is my patch to you,

best

look forwar to your opion.
zj

//<<<<<<<<<<<<<<<<<<<<<

#ifdef CONFIG_DEBUG_PAGEALLOC
/*
* For CONFIG_DEBUG_PAGEALLOC, identity mapping will use small pages.
* This will simplify cpa(), which otherwise needs to support splitting
* large pages into small in interrupt context, etc.
*/
use_pse = use_gbpages = 0;
#else
use_pse = cpu_has_pse;
use_gbpages = direct_gbpages;
#endif

#ifdef CONFIG_X86_32
#ifdef CONFIG_X86_PAE
set_nx();
if (nx_enabled)
printk(KERN_INFO "NX (Execute Disable) protection: active\n");
#endif
/* Enable PSE if available */
- if (cpu_has_pse)
+ /* and #ifdef CONFIG_DEBUG_PAGEALLOC */
+ if (cpu_has_pse && use_pse)
set_in_cr4(X86_CR4_PSE);

/* Enable PGE if available */
- if (cpu_has_pge) {
+ /* and #ifdef CONFIG_DEBUG_PAGEALLOC */
+ if (cpu_has_pge && use_gbpages) {
set_in_cr4(X86_CR4_PGE);
__supported_pte_mask |= _PAGE_GLOBAL;
}
#endif /* CONFIG_X86_32 */

//<<<<<<<<<<<<<<<<<<<<<


2009-06-21 20:27:20

by Yinghai Lu

[permalink] [raw]
Subject: Re: patch for linux-2.6.30/arch/x86_64/mm/init.c

On Sat, Jun 20, 2009 at 11:26 PM, jing zhang<[email protected]> wrote:
> hi,
>
> I have no way sending to Andi Kleen, then try Mr. linux-kernel and Mr.
> Ingo Molnar.
>
> btw, AC's mailbox @ suse closed, and why?

he is not working for them.

>
> thank you
>
> ---------- Forwarded message ----------
> From: jing zhang <[email protected]>
> Date: Sun, 21 Jun 2009 14:15:09 +0800
> Subject: patch for linux-2.6.30/arch/x86_64/mm/init.c
> To: [email protected]
>
> Good Sunday Mr. Andi Kleen,
>
> It seems that in function
> ? ?unsigned long __init_refok
> ? ?init_memory_mapping(unsigned long start, unsigned long end)
>
> CONFIG_DEBUG_PAGEALLOC conflicts with use_pse and use_gbpages when
> CONFIG_X86_32 also defined.
>
> The following is my patch to you,
>
> best
>
> look forwar to your opion.
> zj
>
> //<<<<<<<<<<<<<<<<<<<<<
>
> #ifdef CONFIG_DEBUG_PAGEALLOC
> ? ? ? ?/*
> ? ? ? ? * For CONFIG_DEBUG_PAGEALLOC, identity mapping will use small pages.
> ? ? ? ? * This will simplify cpa(), which otherwise needs to support splitting
> ? ? ? ? * large pages into small in interrupt context, etc.
> ? ? ? ? */
> ? ? ? ?use_pse = use_gbpages = 0;
> #else
> ? ? ? ?use_pse = cpu_has_pse;
> ? ? ? ?use_gbpages = direct_gbpages;
> #endif
>
> #ifdef CONFIG_X86_32
> #ifdef CONFIG_X86_PAE
> ? ? ? ?set_nx();
> ? ? ? ?if (nx_enabled)
> ? ? ? ? ? ? ? ?printk(KERN_INFO "NX (Execute Disable) protection: active\n");
> #endif
> ? ? ? ?/* Enable PSE if available */
> - ? ? ? if (cpu_has_pse)
> + ? ? ? /* and #ifdef CONFIG_DEBUG_PAGEALLOC */
> + ? ? ? if (cpu_has_pse && use_pse)
> ? ? ? ? ? ? ? ?set_in_cr4(X86_CR4_PSE);
>
> ? ? ? ?/* Enable PGE if available */
> - ? ? ? if (cpu_has_pge) {
> + ? ? ? /* and #ifdef CONFIG_DEBUG_PAGEALLOC */
> + ? ? ? if (cpu_has_pge && use_gbpages) {
> ? ? ? ? ? ? ? ?set_in_cr4(X86_CR4_PGE);
> ? ? ? ? ? ? ? ?__supported_pte_mask |= _PAGE_GLOBAL;

pge and gbpages is not same ...

also wonder what is code based for?

please check tip/master
http://people.redhat.com/mingo/tip.git/readme.txt

YH