Skip to content

Commit a1ea1c0

Browse files
hansendcKAGA-KOKO
authored andcommitted
x86: Cleanly separate use of asm-generic/mm_hooks.h
asm-generic/mm_hooks.h provides some generic fillers for the 90% of architectures that do not need to hook some mmap-manipulation functions. A comment inside says: > Define generic no-op hooks for arch_dup_mmap and > arch_exit_mmap, to be included in asm-FOO/mmu_context.h > for any arch FOO which doesn't need to hook these. So, does x86 need to hook these? It depends on CONFIG_PARAVIRT. We *conditionally* include this generic header if we have CONFIG_PARAVIRT=n. That's madness. With this patch, x86 stops using asm-generic/mmu_hooks.h entirely. We use our own copies of the functions. The paravirt code provides some stubs if it is disabled, and we always call those stubs in our x86-private versions of arch_exit_mmap() and arch_dup_mmap(). Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Cc: Dave Hansen <dave@sr71.net> Cc: x86@kernel.org Link: http://lkml.kernel.org/r/20141118182349.14567FA5@viggo.jf.intel.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
1 parent 68c009c commit a1ea1c0

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

arch/x86/include/asm/mmu_context.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
#include <asm/paravirt.h>
1313
#include <asm/mpx.h>
1414
#ifndef CONFIG_PARAVIRT
15-
#include <asm-generic/mm_hooks.h>
16-
1715
static inline void paravirt_activate_mm(struct mm_struct *prev,
1816
struct mm_struct *next)
1917
{
@@ -103,6 +101,17 @@ do { \
103101
} while (0)
104102
#endif
105103

104+
static inline void arch_dup_mmap(struct mm_struct *oldmm,
105+
struct mm_struct *mm)
106+
{
107+
paravirt_arch_dup_mmap(oldmm, mm);
108+
}
109+
110+
static inline void arch_exit_mmap(struct mm_struct *mm)
111+
{
112+
paravirt_arch_exit_mmap(mm);
113+
}
114+
106115
static inline void arch_bprm_mm_init(struct mm_struct *mm,
107116
struct vm_area_struct *vma)
108117
{

arch/x86/include/asm/paravirt.h

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -330,13 +330,13 @@ static inline void paravirt_activate_mm(struct mm_struct *prev,
330330
PVOP_VCALL2(pv_mmu_ops.activate_mm, prev, next);
331331
}
332332

333-
static inline void arch_dup_mmap(struct mm_struct *oldmm,
334-
struct mm_struct *mm)
333+
static inline void paravirt_arch_dup_mmap(struct mm_struct *oldmm,
334+
struct mm_struct *mm)
335335
{
336336
PVOP_VCALL2(pv_mmu_ops.dup_mmap, oldmm, mm);
337337
}
338338

339-
static inline void arch_exit_mmap(struct mm_struct *mm)
339+
static inline void paravirt_arch_exit_mmap(struct mm_struct *mm)
340340
{
341341
PVOP_VCALL1(pv_mmu_ops.exit_mmap, mm);
342342
}
@@ -986,5 +986,15 @@ extern void default_banner(void);
986986
#endif /* __ASSEMBLY__ */
987987
#else /* CONFIG_PARAVIRT */
988988
# define default_banner x86_init_noop
989+
#ifndef __ASSEMBLY__
990+
static inline void paravirt_arch_dup_mmap(struct mm_struct *oldmm,
991+
struct mm_struct *mm)
992+
{
993+
}
994+
995+
static inline void paravirt_arch_exit_mmap(struct mm_struct *mm)
996+
{
997+
}
998+
#endif /* __ASSEMBLY__ */
989999
#endif /* !CONFIG_PARAVIRT */
9901000
#endif /* _ASM_X86_PARAVIRT_H */

0 commit comments

Comments
 (0)