From e47f35b981090ca0d485becba82b7cd68e67725b Mon Sep 17 00:00:00 2001 From: Andrea Arcangeli Date: Thu, 13 Jan 2011 15:47:09 -0800 Subject: [PATCH] --- yaml --- r: 230798 b: refs/heads/master c: 4b7167b9ff9b7f3f528cbc4c7d02ebd275b9b10c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/include/asm/pgtable.h | 5 +++++ trunk/mm/huge_memory.c | 8 ++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index e2401b578a9f..b63eadb8885f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 94fcc585fb85ad7b059c70872489b50044d401f3 +refs/heads/master: 4b7167b9ff9b7f3f528cbc4c7d02ebd275b9b10c diff --git a/trunk/arch/x86/include/asm/pgtable.h b/trunk/arch/x86/include/asm/pgtable.h index c48ba055f693..18601c86fab1 100644 --- a/trunk/arch/x86/include/asm/pgtable.h +++ b/trunk/arch/x86/include/asm/pgtable.h @@ -160,6 +160,11 @@ static inline int pmd_trans_huge(pmd_t pmd) { return pmd_val(pmd) & _PAGE_PSE; } + +static inline int has_transparent_hugepage(void) +{ + return cpu_has_pse; +} #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ static inline pte_t pte_set_flags(pte_t pte, pteval_t set) diff --git a/trunk/mm/huge_memory.c b/trunk/mm/huge_memory.c index b6facc35e893..915809b16edf 100644 --- a/trunk/mm/huge_memory.c +++ b/trunk/mm/huge_memory.c @@ -487,7 +487,15 @@ static int __init hugepage_init(void) int err; #ifdef CONFIG_SYSFS static struct kobject *hugepage_kobj; +#endif + err = -EINVAL; + if (!has_transparent_hugepage()) { + transparent_hugepage_flags = 0; + goto out; + } + +#ifdef CONFIG_SYSFS err = -ENOMEM; hugepage_kobj = kobject_create_and_add("transparent_hugepage", mm_kobj); if (unlikely(!hugepage_kobj)) {