[06/15] ARM: add migrate_pages() system call

Message ID 20190110162435.309262-7-arnd@arndb.de
State Superseded
Headers show
Series
  • arch: synchronize syscall tables in preparation for y2038
Related show

Commit Message

Arnd Bergmann Jan. 10, 2019, 4:24 p.m.
The migrate_pages system call has an assigned number on all architectures
except ARM. When it got added initially in commit d80ade7b3231 ("ARM:
Fix warning: #warning syscall migrate_pages not implemented"), it was
intentionally left out based on the observation that there are no 32-bit
ARM NUMA systems.

However, there are now arm64 NUMA machines that can in theory run 32-bit
kernels (actually enabling NUMA there would require additional work)
as well as 32-bit user space on 64-bit kernels, so that argument is no
longer very strong.

Assigning the number lets us use the system call on 64-bit kernels as well
as providing a more consistent set of syscalls across architectures.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

---
 arch/arm/include/asm/unistd.h     | 1 -
 arch/arm/tools/syscall.tbl        | 1 +
 arch/arm64/include/asm/unistd.h   | 2 +-
 arch/arm64/include/asm/unistd32.h | 2 ++
 4 files changed, 4 insertions(+), 2 deletions(-)

-- 
2.20.0

Comments

Will Deacon Jan. 10, 2019, 4:32 p.m. | #1
On Thu, Jan 10, 2019 at 05:24:26PM +0100, Arnd Bergmann wrote:
> The migrate_pages system call has an assigned number on all architectures

> except ARM. When it got added initially in commit d80ade7b3231 ("ARM:

> Fix warning: #warning syscall migrate_pages not implemented"), it was

> intentionally left out based on the observation that there are no 32-bit

> ARM NUMA systems.

> 

> However, there are now arm64 NUMA machines that can in theory run 32-bit

> kernels (actually enabling NUMA there would require additional work)

> as well as 32-bit user space on 64-bit kernels, so that argument is no

> longer very strong.

> 

> Assigning the number lets us use the system call on 64-bit kernels as well

> as providing a more consistent set of syscalls across architectures.

> 

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

> ---

>  arch/arm/include/asm/unistd.h     | 1 -

>  arch/arm/tools/syscall.tbl        | 1 +

>  arch/arm64/include/asm/unistd.h   | 2 +-

>  arch/arm64/include/asm/unistd32.h | 2 ++

>  4 files changed, 4 insertions(+), 2 deletions(-)


[...]

> diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h

> index 04ee190b90fe..355fe2bc035b 100644

> --- a/arch/arm64/include/asm/unistd32.h

> +++ b/arch/arm64/include/asm/unistd32.h

> @@ -821,6 +821,8 @@ __SYSCALL(__NR_statx, sys_statx)

>  __SYSCALL(__NR_rseq, sys_rseq)

>  #define __NR_io_pgetevents 399

>  __SYSCALL(__NR_io_pgetevents, compat_sys_io_pgetevents)

> +#define __NR_migrate_pages 400

> +__SYSCALL(__NR_migrate_pages, sys_migrate_pages)


Should be compat_sys_migrate_pages instead?

Will
Arnd Bergmann Jan. 10, 2019, 5:11 p.m. | #2
On Thu, Jan 10, 2019 at 5:32 PM Will Deacon <will.deacon@arm.com> wrote:

> > diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h

> > index 04ee190b90fe..355fe2bc035b 100644

> > --- a/arch/arm64/include/asm/unistd32.h

> > +++ b/arch/arm64/include/asm/unistd32.h

> > @@ -821,6 +821,8 @@ __SYSCALL(__NR_statx, sys_statx)

> >  __SYSCALL(__NR_rseq, sys_rseq)

> >  #define __NR_io_pgetevents 399

> >  __SYSCALL(__NR_io_pgetevents, compat_sys_io_pgetevents)

> > +#define __NR_migrate_pages 400

> > +__SYSCALL(__NR_migrate_pages, sys_migrate_pages)

>

> Should be compat_sys_migrate_pages instead?


Yes, good catch! Fixed now.

Thanks,

        Arnd

Patch

diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index 88ef2ce1f69a..d713587dfcf4 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -45,7 +45,6 @@ 
  * Unimplemented (or alternatively implemented) syscalls
  */
 #define __IGNORE_fadvise64_64
-#define __IGNORE_migrate_pages
 
 #ifdef __ARM_EABI__
 /*
diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl
index 8edf93b4490f..86de9eb34296 100644
--- a/arch/arm/tools/syscall.tbl
+++ b/arch/arm/tools/syscall.tbl
@@ -414,3 +414,4 @@ 
 397	common	statx			sys_statx
 398	common	rseq			sys_rseq
 399	common	io_pgetevents		sys_io_pgetevents
+400	common	migrate_pages		sys_migrate_pages
diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h
index a7b1fc58ffdf..261216c3336e 100644
--- a/arch/arm64/include/asm/unistd.h
+++ b/arch/arm64/include/asm/unistd.h
@@ -44,7 +44,7 @@ 
 #define __ARM_NR_compat_set_tls		(__ARM_NR_COMPAT_BASE + 5)
 #define __ARM_NR_COMPAT_END		(__ARM_NR_COMPAT_BASE + 0x800)
 
-#define __NR_compat_syscalls		400
+#define __NR_compat_syscalls		401
 #endif
 
 #define __ARCH_WANT_SYS_CLONE
diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h
index 04ee190b90fe..355fe2bc035b 100644
--- a/arch/arm64/include/asm/unistd32.h
+++ b/arch/arm64/include/asm/unistd32.h
@@ -821,6 +821,8 @@  __SYSCALL(__NR_statx, sys_statx)
 __SYSCALL(__NR_rseq, sys_rseq)
 #define __NR_io_pgetevents 399
 __SYSCALL(__NR_io_pgetevents, compat_sys_io_pgetevents)
+#define __NR_migrate_pages 400
+__SYSCALL(__NR_migrate_pages, sys_migrate_pages)
 
 /*
  * Please add new compat syscalls above this comment and update