From: Christopher Covington <cov@codeaurora.org>
To: Catalin Marinas <catalin.marinas@arm.com>,
criu@openvz.org, Laurent Dufour <ldufour@linux.vnet.ibm.com>,
Will Deacon <Will.Deacon@arm.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Arnd Bergmann <arnd@arndb.de>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-arch@vger.kernel.org, linux-mm@kvack.org
Cc: Christopher Covington <cov@codeaurora.org>
Subject: [RFC 3/5] mm/powerpc: Make VDSO remap generic
Date: Thu, 28 Apr 2016 11:18:55 -0400 [thread overview]
Message-ID: <1461856737-17071-4-git-send-email-cov@codeaurora.org> (raw)
In-Reply-To: <1461856737-17071-1-git-send-email-cov@codeaurora.org>
In order to support remapping the VDSO on additional architectures without
duplicating code, move the remap code out from arch/powerpc. Architectures
that wish to use the generic logic must have an unsigned long vdso in
mm->context and can opt in by selecting CONFIG_ARCH_WANT_VDSO_MAP. This
allows PowerPC to use mm-arch-hooks.h from include/asm-generic.
Signed-off-by: Christopher Covington <cov@codeaurora.org>
---
arch/powerpc/include/asm/Kbuild | 1 +
arch/powerpc/include/asm/mm-arch-hooks.h | 28 ----------------------------
mm/mremap.c | 10 ++++++++--
3 files changed, 9 insertions(+), 30 deletions(-)
delete mode 100644 arch/powerpc/include/asm/mm-arch-hooks.h
diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild
index ab9f4e0..9dbb372 100644
--- a/arch/powerpc/include/asm/Kbuild
+++ b/arch/powerpc/include/asm/Kbuild
@@ -7,3 +7,4 @@ generic-y += mcs_spinlock.h
generic-y += preempt.h
generic-y += rwsem.h
generic-y += vtime.h
+generic-y += mm-arch-hooks.h
diff --git a/arch/powerpc/include/asm/mm-arch-hooks.h b/arch/powerpc/include/asm/mm-arch-hooks.h
deleted file mode 100644
index ea6da89..0000000
--- a/arch/powerpc/include/asm/mm-arch-hooks.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Architecture specific mm hooks
- *
- * Copyright (C) 2015, IBM Corporation
- * Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _ASM_POWERPC_MM_ARCH_HOOKS_H
-#define _ASM_POWERPC_MM_ARCH_HOOKS_H
-
-static inline void arch_remap(struct mm_struct *mm,
- unsigned long old_start, unsigned long old_end,
- unsigned long new_start, unsigned long new_end)
-{
- /*
- * mremap() doesn't allow moving multiple vmas so we can limit the
- * check to old_start == vdso.
- */
- if (old_start == mm->context.vdso)
- mm->context.vdso = new_start;
-}
-#define arch_remap arch_remap
-
-#endif /* _ASM_POWERPC_MM_ARCH_HOOKS_H */
diff --git a/mm/mremap.c b/mm/mremap.c
index 3fa0a467..59032b7 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -293,8 +293,14 @@ static unsigned long move_vma(struct vm_area_struct *vma,
old_addr = new_addr;
new_addr = err;
} else {
- arch_remap(mm, old_addr, old_addr + old_len,
- new_addr, new_addr + new_len);
+#ifdef CONFIG_ARCH_WANT_VDSO_MAP
+ /*
+ * mremap() doesn't allow moving multiple vmas so we can limit the
+ * check to old_addr == vdso.
+ */
+ if (old_addr == mm->context.vdso)
+ mm->context.vdso = new_addr;
+#endif /* CONFIG_ARCH_WANT_VDSO_MAP */
}
/* Conceal VM_ACCOUNT so old reservation is not undone */
--
Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Christopher Covington <cov@codeaurora.org>
To: Catalin Marinas <catalin.marinas@arm.com>,
criu@openvz.org, Laurent Dufour <ldufour@linux.vnet.ibm.com>,
Will Deacon <Will.Deacon@arm.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Arnd Bergmann <arnd@arndb.de>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-arch@vger.kernel.org, linux-mm@kvack.org
Cc: Christopher Covington <cov@codeaurora.org>
Subject: [RFC 3/5] mm/powerpc: Make VDSO remap generic
Date: Thu, 28 Apr 2016 11:18:55 -0400 [thread overview]
Message-ID: <1461856737-17071-4-git-send-email-cov@codeaurora.org> (raw)
Message-ID: <20160428151855.gkhHdCTWLVfEg_LigJ8x-qM3Ll9llBSxsCRuAa45eQM@z> (raw)
In-Reply-To: <1461856737-17071-1-git-send-email-cov@codeaurora.org>
In order to support remapping the VDSO on additional architectures without
duplicating code, move the remap code out from arch/powerpc. Architectures
that wish to use the generic logic must have an unsigned long vdso in
mm->context and can opt in by selecting CONFIG_ARCH_WANT_VDSO_MAP. This
allows PowerPC to use mm-arch-hooks.h from include/asm-generic.
Signed-off-by: Christopher Covington <cov@codeaurora.org>
---
arch/powerpc/include/asm/Kbuild | 1 +
arch/powerpc/include/asm/mm-arch-hooks.h | 28 ----------------------------
mm/mremap.c | 10 ++++++++--
3 files changed, 9 insertions(+), 30 deletions(-)
delete mode 100644 arch/powerpc/include/asm/mm-arch-hooks.h
diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild
index ab9f4e0..9dbb372 100644
--- a/arch/powerpc/include/asm/Kbuild
+++ b/arch/powerpc/include/asm/Kbuild
@@ -7,3 +7,4 @@ generic-y += mcs_spinlock.h
generic-y += preempt.h
generic-y += rwsem.h
generic-y += vtime.h
+generic-y += mm-arch-hooks.h
diff --git a/arch/powerpc/include/asm/mm-arch-hooks.h b/arch/powerpc/include/asm/mm-arch-hooks.h
deleted file mode 100644
index ea6da89..0000000
--- a/arch/powerpc/include/asm/mm-arch-hooks.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Architecture specific mm hooks
- *
- * Copyright (C) 2015, IBM Corporation
- * Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _ASM_POWERPC_MM_ARCH_HOOKS_H
-#define _ASM_POWERPC_MM_ARCH_HOOKS_H
-
-static inline void arch_remap(struct mm_struct *mm,
- unsigned long old_start, unsigned long old_end,
- unsigned long new_start, unsigned long new_end)
-{
- /*
- * mremap() doesn't allow moving multiple vmas so we can limit the
- * check to old_start == vdso.
- */
- if (old_start == mm->context.vdso)
- mm->context.vdso = new_start;
-}
-#define arch_remap arch_remap
-
-#endif /* _ASM_POWERPC_MM_ARCH_HOOKS_H */
diff --git a/mm/mremap.c b/mm/mremap.c
index 3fa0a467..59032b7 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -293,8 +293,14 @@ static unsigned long move_vma(struct vm_area_struct *vma,
old_addr = new_addr;
new_addr = err;
} else {
- arch_remap(mm, old_addr, old_addr + old_len,
- new_addr, new_addr + new_len);
+#ifdef CONFIG_ARCH_WANT_VDSO_MAP
+ /*
+ * mremap() doesn't allow moving multiple vmas so we can limit the
+ * check to old_addr == vdso.
+ */
+ if (old_addr == mm->context.vdso)
+ mm->context.vdso = new_addr;
+#endif /* CONFIG_ARCH_WANT_VDSO_MAP */
}
/* Conceal VM_ACCOUNT so old reservation is not undone */
--
Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
WARNING: multiple messages have this Message-ID (diff)
From: cov@codeaurora.org (Christopher Covington)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC 3/5] mm/powerpc: Make VDSO remap generic
Date: Thu, 28 Apr 2016 11:18:55 -0400 [thread overview]
Message-ID: <1461856737-17071-4-git-send-email-cov@codeaurora.org> (raw)
In-Reply-To: <1461856737-17071-1-git-send-email-cov@codeaurora.org>
In order to support remapping the VDSO on additional architectures without
duplicating code, move the remap code out from arch/powerpc. Architectures
that wish to use the generic logic must have an unsigned long vdso in
mm->context and can opt in by selecting CONFIG_ARCH_WANT_VDSO_MAP. This
allows PowerPC to use mm-arch-hooks.h from include/asm-generic.
Signed-off-by: Christopher Covington <cov@codeaurora.org>
---
arch/powerpc/include/asm/Kbuild | 1 +
arch/powerpc/include/asm/mm-arch-hooks.h | 28 ----------------------------
mm/mremap.c | 10 ++++++++--
3 files changed, 9 insertions(+), 30 deletions(-)
delete mode 100644 arch/powerpc/include/asm/mm-arch-hooks.h
diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild
index ab9f4e0..9dbb372 100644
--- a/arch/powerpc/include/asm/Kbuild
+++ b/arch/powerpc/include/asm/Kbuild
@@ -7,3 +7,4 @@ generic-y += mcs_spinlock.h
generic-y += preempt.h
generic-y += rwsem.h
generic-y += vtime.h
+generic-y += mm-arch-hooks.h
diff --git a/arch/powerpc/include/asm/mm-arch-hooks.h b/arch/powerpc/include/asm/mm-arch-hooks.h
deleted file mode 100644
index ea6da89..0000000
--- a/arch/powerpc/include/asm/mm-arch-hooks.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Architecture specific mm hooks
- *
- * Copyright (C) 2015, IBM Corporation
- * Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _ASM_POWERPC_MM_ARCH_HOOKS_H
-#define _ASM_POWERPC_MM_ARCH_HOOKS_H
-
-static inline void arch_remap(struct mm_struct *mm,
- unsigned long old_start, unsigned long old_end,
- unsigned long new_start, unsigned long new_end)
-{
- /*
- * mremap() doesn't allow moving multiple vmas so we can limit the
- * check to old_start == vdso.
- */
- if (old_start == mm->context.vdso)
- mm->context.vdso = new_start;
-}
-#define arch_remap arch_remap
-
-#endif /* _ASM_POWERPC_MM_ARCH_HOOKS_H */
diff --git a/mm/mremap.c b/mm/mremap.c
index 3fa0a467..59032b7 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -293,8 +293,14 @@ static unsigned long move_vma(struct vm_area_struct *vma,
old_addr = new_addr;
new_addr = err;
} else {
- arch_remap(mm, old_addr, old_addr + old_len,
- new_addr, new_addr + new_len);
+#ifdef CONFIG_ARCH_WANT_VDSO_MAP
+ /*
+ * mremap() doesn't allow moving multiple vmas so we can limit the
+ * check to old_addr == vdso.
+ */
+ if (old_addr == mm->context.vdso)
+ mm->context.vdso = new_addr;
+#endif /* CONFIG_ARCH_WANT_VDSO_MAP */
}
/* Conceal VM_ACCOUNT so old reservation is not undone */
--
Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2016-04-28 15:18 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-25 12:49 [PATCH] arm64: Support VDSO remapping Christopher Covington
2015-11-25 12:49 ` Christopher Covington
2015-12-02 12:19 ` Will Deacon
2015-12-02 12:19 ` Will Deacon
2015-12-03 18:05 ` Christopher Covington
2015-12-03 18:05 ` Christopher Covington
2016-04-28 15:18 ` VDSO unmap and remap support for additional architectures Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 15:18 ` [RFC 1/5] powerpc: Rename context.vdso_base to context.vdso Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-05-02 1:05 ` Balbir Singh
2016-05-02 1:05 ` Balbir Singh
2016-05-02 1:05 ` Balbir Singh
2016-05-04 21:21 ` Christopher Covington
2016-05-04 21:21 ` Christopher Covington
2016-05-04 21:21 ` Christopher Covington
2016-04-28 15:18 ` [RFC 2/5] mm/powerpc: Make VDSO unmap generic Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 15:18 ` Christopher Covington [this message]
2016-04-28 15:18 ` [RFC 3/5] mm/powerpc: Make VDSO remap generic Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 15:18 ` [RFC 4/5] arm64: Use unsigned long for vdso Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 15:18 ` [RFC 5/5] arm64: Gain VDSO unmap and remap powers Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 15:18 ` Christopher Covington
2016-04-28 18:53 ` VDSO unmap and remap support for additional architectures Andy Lutomirski
2016-04-28 18:53 ` Andy Lutomirski
2016-04-28 18:53 ` Andy Lutomirski
2016-04-29 13:22 ` Christopher Covington
2016-04-29 13:22 ` Christopher Covington
2016-04-29 13:22 ` Christopher Covington
2016-04-29 13:22 ` Christopher Covington
2016-04-29 13:55 ` Dmitry Safonov
2016-04-29 13:55 ` Dmitry Safonov
2016-04-29 13:55 ` Dmitry Safonov
2016-04-29 13:55 ` Dmitry Safonov
2016-05-03 21:37 ` Christopher Covington
2016-05-03 21:37 ` Christopher Covington
2016-05-03 21:37 ` Christopher Covington
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1461856737-17071-4-git-send-email-cov@codeaurora.org \
--to=cov@codeaurora.org \
--cc=Will.Deacon@arm.com \
--cc=arnd@arndb.de \
--cc=benh@kernel.crashing.org \
--cc=catalin.marinas@arm.com \
--cc=criu@openvz.org \
--cc=ldufour@linux.vnet.ibm.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.