Commit 4b7167b9 authored by Andrea Arcangeli's avatar Andrea Arcangeli Committed by Linus Torvalds

thp: don't allow transparent hugepage support without PSE

Archs implementing Transparent Hugepage Support must implement a function
called has_transparent_hugepage to be sure the virtual or physical CPU
supports Transparent Hugepages.
Signed-off-by: default avatarAndrea Arcangeli <aarcange@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 94fcc585
...@@ -160,6 +160,11 @@ static inline int pmd_trans_huge(pmd_t pmd) ...@@ -160,6 +160,11 @@ static inline int pmd_trans_huge(pmd_t pmd)
{ {
return pmd_val(pmd) & _PAGE_PSE; return pmd_val(pmd) & _PAGE_PSE;
} }
static inline int has_transparent_hugepage(void)
{
return cpu_has_pse;
}
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
static inline pte_t pte_set_flags(pte_t pte, pteval_t set) static inline pte_t pte_set_flags(pte_t pte, pteval_t set)
......
...@@ -487,7 +487,15 @@ static int __init hugepage_init(void) ...@@ -487,7 +487,15 @@ static int __init hugepage_init(void)
int err; int err;
#ifdef CONFIG_SYSFS #ifdef CONFIG_SYSFS
static struct kobject *hugepage_kobj; static struct kobject *hugepage_kobj;
#endif
err = -EINVAL;
if (!has_transparent_hugepage()) {
transparent_hugepage_flags = 0;
goto out;
}
#ifdef CONFIG_SYSFS
err = -ENOMEM; err = -ENOMEM;
hugepage_kobj = kobject_create_and_add("transparent_hugepage", mm_kobj); hugepage_kobj = kobject_create_and_add("transparent_hugepage", mm_kobj);
if (unlikely(!hugepage_kobj)) { if (unlikely(!hugepage_kobj)) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment