LKML Archive on lore.kernel.org
 help / Atom feed
* [PATCH 0/3] System call table generation support
@ 2018-09-14  8:32 Firoz Khan
  2018-09-14  8:32 ` [PATCH 1/3] powerpc: Replace NR_syscalls macro from asm/unistd.h Firoz Khan
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Firoz Khan @ 2018-09-14  8:32 UTC (permalink / raw)
  To: Arnd Bergmann, linuxppc-dev, Benjamin Herrenschmidt,
	Paul Mackerras, Michael Ellerman, Ram Pai, Breno Leitao,
	Boqun Feng, Greg Kroah-Hartman, Philippe Ombredanne,
	Thomas Gleixner, Kate Stewart
  Cc: y2038, linux-kernel, linux-arch, deepa.kernel,
	marcin.juszkiewicz, firoz.khan

The purpose of this patch series is:
1. We can easily add/modify/delete system call by changing entry 
in syscall.tbl file. No need to manually edit many files.

2. It is easy to unify the system call implementation across all 
the architectures. 

The system call tables are in different format in all architecture 
and it will be difficult to manually add or modify the system calls
in the respective files manually. To make it easy by keeping a script 
and which'll generate the header file and syscall table file so this 
change will unify them across all architectures.

syscall.tbl contains the list of available system calls along with 
system call number and corresponding entry point. Add a new system 
call in this architecture will be possible by adding new entry in 
the syscall.tbl file.

Adding a new table entry consisting of:
        - System call number.
        - ABI.
        - System call name.
        - Entry point name.
        - Compat entry name, if required.

ARM, s390 and x86 architecuture does exist the similar support. I 
leverage their implementation to come up with a generic solution.

I have done the same support for work for alpha, m68k, microblaze, 
ia64, mips, parisc, sh, sparc, and xtensa. But I started sending 
the patch for one architecuture for review. Below mentioned git
repository contains more details.
Git repo:- https://github.com/frzkhn/system_call_table_generator/

Finally, this is the ground work for solving the Y2038 issue. We 
need to add/change two dozen of system calls to solve Y2038 issue. 
So this patch series will help to easily modify from existing 
system call to Y2038 compatible system calls.

I started working system call table generation on 4.17-rc1. I used 
marcin's script - https://github.com/hrw/syscalls-table to generate 
the syscall.tbl file. And this will be the input to the system call 
table generation script. But there are couple system call got add 
in the latest rc release. If run Marcin's script on latest release,
It will generate a new syscall.tbl. But I still use the old file - 
syscall.tbl and once all review got over I'll update syscall.tbl 
alone w.r.to the tip of the kernel. The impact of this thing, few 
of the system call won't work. 

Firoz Khan (3):
  powerpc: Replace NR_syscalls macro from asm/unistd.h
  powerpc: Add system call table generation support
  powerpc: uapi header and system call table file generation

 arch/powerpc/Makefile                       |   3 +
 arch/powerpc/include/asm/Kbuild             |   3 +
 arch/powerpc/include/asm/unistd.h           |   3 +-
 arch/powerpc/include/uapi/asm/Kbuild        |   2 +
 arch/powerpc/include/uapi/asm/unistd.h      | 391 +---------------------------
 arch/powerpc/kernel/Makefile                |   3 +-
 arch/powerpc/kernel/syscall_table_32.S      |   9 +
 arch/powerpc/kernel/syscall_table_64.S      |  17 ++
 arch/powerpc/kernel/syscalls/Makefile       |  51 ++++
 arch/powerpc/kernel/syscalls/syscall_32.tbl | 378 +++++++++++++++++++++++++++
 arch/powerpc/kernel/syscalls/syscall_64.tbl | 372 ++++++++++++++++++++++++++
 arch/powerpc/kernel/syscalls/syscallhdr.sh  |  37 +++
 arch/powerpc/kernel/syscalls/syscalltbl.sh  |  38 +++
 arch/powerpc/kernel/systbl.S                |  50 ----
 14 files changed, 916 insertions(+), 441 deletions(-)
 create mode 100644 arch/powerpc/kernel/syscall_table_32.S
 create mode 100644 arch/powerpc/kernel/syscall_table_64.S
 create mode 100644 arch/powerpc/kernel/syscalls/Makefile
 create mode 100644 arch/powerpc/kernel/syscalls/syscall_32.tbl
 create mode 100644 arch/powerpc/kernel/syscalls/syscall_64.tbl
 create mode 100644 arch/powerpc/kernel/syscalls/syscallhdr.sh
 create mode 100644 arch/powerpc/kernel/syscalls/syscalltbl.sh
 delete mode 100644 arch/powerpc/kernel/systbl.S

-- 
1.9.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] powerpc: Replace NR_syscalls macro from asm/unistd.h
  2018-09-14  8:32 [PATCH 0/3] System call table generation support Firoz Khan
@ 2018-09-14  8:32 ` Firoz Khan
  2018-09-14  8:32 ` [PATCH 2/3] powerpc: Add system call table generation support Firoz Khan
  2018-09-14  8:33 ` [PATCH 3/3] powerpc: uapi header and system call table file generation Firoz Khan
  2 siblings, 0 replies; 10+ messages in thread
From: Firoz Khan @ 2018-09-14  8:32 UTC (permalink / raw)
  To: Arnd Bergmann, linuxppc-dev, Benjamin Herrenschmidt,
	Paul Mackerras, Michael Ellerman, Ram Pai, Breno Leitao,
	Boqun Feng, Greg Kroah-Hartman, Philippe Ombredanne,
	Thomas Gleixner, Kate Stewart
  Cc: y2038, linux-kernel, linux-arch, deepa.kernel,
	marcin.juszkiewicz, firoz.khan

__NR_syscalls macro holds the number of system call exist in POWERPC
architecture. This macro is currently the part of asm/unistd.h file.
We have to change the value of __NR_syscalls, if we add or delete a
system call.

One of the patch in this patch series has a script which will generate
a uapi header based on syscall.tbl file. The syscall.tbl file contains
the number of system call information. So we have two option to update
__NR_syscalls value.

1. Update __NR_syscalls in asm/unistd.h manually by counting the
   no.of system calls. No need to update __NR_syscalls untill
   we either add a new system call or delete an existing system
   call.

2. We can keep this feature it above mentioned script, that'll
   count the number of syscalls and keep it in a generated file.
   In this case we don't need to explicitly update __NR_syscalls
   in asm/unistd.h file.

The 2nd option will be the recommended one. For that, I moved the
NR_syscalls macro from asm/unistd.h to uapi/asm/unistd.h. The macro
name also changed form NR_syscalls to __NR_syscalls for making the
name convention same across all architecture. While __NR_syscalls
isn't strictly part of the uapi, having it as part of the generated
header to simplifies the implementation.

Signed-off-by: Firoz Khan <firoz.khan@linaro.org>
---
 arch/powerpc/include/asm/unistd.h      | 3 +--
 arch/powerpc/include/uapi/asm/unistd.h | 2 ++
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/include/asm/unistd.h b/arch/powerpc/include/asm/unistd.h
index c19379f..54732f9 100644
--- a/arch/powerpc/include/asm/unistd.h
+++ b/arch/powerpc/include/asm/unistd.h
@@ -11,8 +11,7 @@
 
 #include <uapi/asm/unistd.h>
 
-
-#define NR_syscalls		389
+#define NR_syscalls  __NR_syscalls
 
 #define __NR__exit __NR_exit
 
diff --git a/arch/powerpc/include/uapi/asm/unistd.h b/arch/powerpc/include/uapi/asm/unistd.h
index 985534d..f999df2 100644
--- a/arch/powerpc/include/uapi/asm/unistd.h
+++ b/arch/powerpc/include/uapi/asm/unistd.h
@@ -401,4 +401,6 @@
 #define __NR_rseq		387
 #define __NR_io_pgetevents	388
 
+#define __NR_syscalls           389
+
 #endif /* _UAPI_ASM_POWERPC_UNISTD_H_ */
-- 
1.9.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 2/3] powerpc: Add system call table generation support
  2018-09-14  8:32 [PATCH 0/3] System call table generation support Firoz Khan
  2018-09-14  8:32 ` [PATCH 1/3] powerpc: Replace NR_syscalls macro from asm/unistd.h Firoz Khan
@ 2018-09-14  8:32 ` Firoz Khan
  2018-09-14 10:01   ` Arnd Bergmann
  2018-09-14  8:33 ` [PATCH 3/3] powerpc: uapi header and system call table file generation Firoz Khan
  2 siblings, 1 reply; 10+ messages in thread
From: Firoz Khan @ 2018-09-14  8:32 UTC (permalink / raw)
  To: Arnd Bergmann, linuxppc-dev, Benjamin Herrenschmidt,
	Paul Mackerras, Michael Ellerman, Ram Pai, Breno Leitao,
	Boqun Feng, Greg Kroah-Hartman, Philippe Ombredanne,
	Thomas Gleixner, Kate Stewart
  Cc: y2038, linux-kernel, linux-arch, deepa.kernel,
	marcin.juszkiewicz, firoz.khan

The system call tables are in different format in all
architecture and it will be difficult to manually add or
modify the system calls in the respective files. To make
it easy by keeping a script and which'll generate the
header file and syscall table file so this change will
unify them across all architectures.

The system call table generation script is added in
syscalls directory which contain the script to generate
both uapi header file system call table generation file
and syscall_32/64.tbl file which'll be the input for the
scripts.

syscall_32/64.tbl contains the list of available system calls
along with system call number and corresponding entry point.
Add a new system call in this architecture will be possible
by adding new entry in the syscall_32/64.tbl file.

Adding a new table entry consisting of:
        - System call number.
        - ABI.
        - System call name.
        - Entry point name.
	- Compat entry name, if required.

syscallhdr.sh and syscalltbl.sh will generate uapi header-
unistd_32/64.h and syscall_table_32/64/c32.h files respectively.
File syscall_table_32/64/c32.h is included by syscall.S - the
real system call table. Both .sh files will parse the content
syscall.tbl to generate the header and table files.

ARM, s390 and x86 architecuture does have the similar support.
I leverage their implementation to come up with a generic
solution.

Signed-off-by: Firoz Khan <firoz.khan@linaro.org>
---
 arch/powerpc/kernel/syscalls/Makefile       |  51 ++++
 arch/powerpc/kernel/syscalls/syscall_32.tbl | 378 ++++++++++++++++++++++++++++
 arch/powerpc/kernel/syscalls/syscall_64.tbl | 372 +++++++++++++++++++++++++++
 arch/powerpc/kernel/syscalls/syscallhdr.sh  |  37 +++
 arch/powerpc/kernel/syscalls/syscalltbl.sh  |  38 +++
 5 files changed, 876 insertions(+)
 create mode 100644 arch/powerpc/kernel/syscalls/Makefile
 create mode 100644 arch/powerpc/kernel/syscalls/syscall_32.tbl
 create mode 100644 arch/powerpc/kernel/syscalls/syscall_64.tbl
 create mode 100644 arch/powerpc/kernel/syscalls/syscallhdr.sh
 create mode 100644 arch/powerpc/kernel/syscalls/syscalltbl.sh

diff --git a/arch/powerpc/kernel/syscalls/Makefile b/arch/powerpc/kernel/syscalls/Makefile
new file mode 100644
index 0000000..0c87acb
--- /dev/null
+++ b/arch/powerpc/kernel/syscalls/Makefile
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: GPL-2.0
+out := arch/$(SRCARCH)/include/generated/asm
+uapi := arch/$(SRCARCH)/include/generated/uapi/asm
+
+_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
+	  $(shell [ -d '$(out)' ] || mkdir -p '$(out)')
+
+syscall32 := $(srctree)/$(src)/syscall_32.tbl
+syscall64 := $(srctree)/$(src)/syscall_64.tbl
+
+syshdr := $(srctree)/$(src)/syscallhdr.sh
+systbl := $(srctree)/$(src)/syscalltbl.sh
+
+quiet_cmd_syshdr = SYSHDR  $@
+      cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@'  \
+		   '$(syshdr_abi_$(basetarget))'          \
+		   '$(syshdr_pfx_$(basetarget))'          \
+		   '$(syshdr_offset_$(basetarget))'
+
+quiet_cmd_systbl = SYSTBL  $@
+      cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@'  \
+		   '$(systbl_abi_$(basetarget))'
+
+$(uapi)/unistd_32.h: $(syscall32) $(syshdr)
+	$(call if_changed,syshdr)
+
+$(uapi)/unistd_64.h: $(syscall64) $(syshdr)
+	$(call if_changed,syshdr)
+
+systbl_abi_syscall_table_32 := 32
+$(out)/syscall_table_32.h: $(syscall32) $(systbl)
+	$(call if_changed,systbl)
+
+systbl_abi_syscall_table_64 := 64
+$(out)/syscall_table_64.h: $(syscall64) $(systbl)
+	$(call if_changed,systbl)
+
+systbl_abi_syscall_table_c32 := c32
+$(out)/syscall_table_c32.h: $(syscall32) $(systbl)
+	$(call if_changed,systbl)
+
+uapisyshdr-y			+= unistd_32.h unistd_64.h
+syshdr-y			+= syscall_table_32.h syscall_table_64.h \
+				   syscall_table_c32.h
+
+targets	+= $(uapisyshdr-y) $(syshdr-y)
+
+PHONY += all
+all: $(addprefix $(uapi)/,$(uapisyshdr-y))
+all: $(addprefix $(out)/,$(syshdr-y))
+	@:
diff --git a/arch/powerpc/kernel/syscalls/syscall_32.tbl b/arch/powerpc/kernel/syscalls/syscall_32.tbl
new file mode 100644
index 0000000..50c419c
--- /dev/null
+++ b/arch/powerpc/kernel/syscalls/syscall_32.tbl
@@ -0,0 +1,378 @@
+#
+# 32-bit system call numbers and entry vectors
+#
+# The format is:
+# <number> <abi> <name> <entry point> <compat entry point>
+#
+# The abi is always "common" for this file.
+#
+0       common  restart_syscall                 sys_restart_syscall             
+1       common  exit                            sys_exit                        
+2       common  fork                            ppc_fork                        
+3       common  read                            sys_read                        
+4       common  write                           sys_write                       
+5       common  open                            sys_open                        compat_sys_open
+6       common  close                           sys_close                       
+7       common  waitpid                         sys_waitpid                     
+8       common  creat                           sys_creat                       
+9       common  link                            sys_link                        
+10      common  unlink                          sys_unlink                      
+11      common  execve                          sys_execve                      compat_sys_execve
+12      common  chdir                           sys_chdir                       
+13      common  time                            sys_time                        compat_sys_time
+14      common  mknod                           sys_mknod                       
+15      common  chmod                           sys_chmod                       
+16      common  lchown                          sys_lchown                      
+19      common  lseek                           sys_lseek                       compat_sys_lseek
+20      common  getpid                          sys_getpid                      
+21      common  mount                           sys_mount                       compat_sys_mount
+22      common  umount                          sys_oldumount                   
+23      common  setuid                          sys_setuid                      
+24      common  getuid                          sys_getuid                      
+25      common  stime                           sys_stime                       compat_sys_stime
+26      common  ptrace                          sys_ptrace                      compat_sys_ptrace
+27      common  alarm                           sys_alarm                       
+28      common  oldfstat                        
+29      common  pause                           sys_pause                       
+30      common  utime                           sys_utime                       compat_sys_utime
+31      common  stty                            sys_ni_syscall                  
+32      common  gtty                            sys_ni_syscall                  
+33      common  access                          sys_access                      
+34      common  nice                            sys_nice                        
+35      common  ftime                           sys_ni_syscall                  
+36      common  sync                            sys_sync                        
+37      common  kill                            sys_kill                        
+38      common  rename                          sys_rename                      
+39      common  mkdir                           sys_mkdir                       
+40      common  rmdir                           sys_rmdir                       
+41      common  dup                             sys_dup                         
+42      common  pipe                            sys_pipe                        
+43      common  times                           sys_times                       compat_sys_times
+44      common  prof                            sys_ni_syscall                  
+45      common  brk                             sys_brk                         
+46      common  setgid                          sys_setgid                      
+47      common  getgid                          sys_getgid                      
+48      common  signal                          sys_signal                      
+49      common  geteuid                         sys_geteuid                     
+50      common  getegid                         sys_getegid                     
+51      common  acct                            sys_acct                        
+52      common  umount2                         sys_umount                      
+53      common  lock                            sys_ni_syscall                  
+54      common  ioctl                           sys_ioctl                       compat_sys_ioctl
+55      common  fcntl                           sys_fcntl                       compat_sys_fcntl
+56      common  mpx                             sys_ni_syscall                  
+57      common  setpgid                         sys_setpgid                     
+58      common  ulimit                          sys_ni_syscall                  
+59      common  oldolduname                     sys_olduname                    
+60      common  umask                           sys_umask                       
+61      common  chroot                          sys_chroot                      
+62      common  ustat                           sys_ustat                       compat_sys_ustat
+63      common  dup2                            sys_dup2                        
+64      common  getppid                         sys_getppid                     
+65      common  getpgrp                         sys_getpgrp                     
+66      common  setsid                          sys_setsid                      
+67      common  sigaction                       
+68      common  sgetmask                        sys_sgetmask                    
+69      common  ssetmask                        sys_ssetmask                    
+70      common  setreuid                        sys_setreuid                    
+71      common  setregid                        sys_setregid                    
+72      common  sigsuspend                      sys_sigsuspend
+73      common  sigpending                      sys_sigpending                  compat_sys_sigpending
+74      common  sethostname                     sys_sethostname                 
+75      common  setrlimit                       sys_setrlimit                   compat_sys_setrlimit
+76      common  getrlimit                       sys_old_getrlimit               compat_sys_old_getrlimit
+77      common  getrusage                       sys_getrusage                   compat_sys_getrusage
+78      common  gettimeofday                    sys_gettimeofday                compat_sys_gettimeofday
+79      common  settimeofday                    sys_settimeofday                compat_sys_settimeofday
+80      common  getgroups                       sys_getgroups                   
+81      common  setgroups                       sys_setgroups                   
+82      common  select                          
+83      common  symlink                         sys_symlink                     
+84      common  oldlstat                        
+85      common  readlink                        sys_readlink                    
+86      common  uselib                          sys_uselib                      
+87      common  swapon                          sys_swapon                      
+88      common  reboot                          sys_reboot                      
+89      common  readdir                         sys_old_readdir                 compat_sys_old_readdir
+90      common  mmap                            sys_mmap                        
+91      common  munmap                          sys_munmap                      
+92      common  truncate                        sys_truncate                    compat_sys_truncate
+93      common  ftruncate                       sys_ftruncate                   compat_sys_ftruncate
+94      common  fchmod                          sys_fchmod                      
+95      common  fchown                          sys_fchown                      
+96      common  getpriority                     sys_getpriority                 
+97      common  setpriority                     sys_setpriority                 
+98      common  profil                          sys_ni_syscall                  
+99      common  statfs                          sys_statfs                      compat_sys_statfs
+100     common  fstatfs                         sys_fstatfs                     compat_sys_fstatfs
+101     common  ioperm                          sys_ni_syscall                  
+102     common  socketcall                      sys_socketcall                  compat_sys_socketcall
+103     common  syslog                          sys_syslog                      
+104     common  setitimer                       sys_setitimer                   compat_sys_setitimer
+105     common  getitimer                       sys_getitimer                   compat_sys_getitimer
+106     common  stat                            sys_newstat                     compat_sys_newstat
+107     common  lstat                           sys_newlstat
+108     common  fstat                           sys_newfstat
+109     common  olduname                        sys_uname                       
+110     common  iopl                            sys_ni_syscall                  
+111     common  vhangup                         sys_vhangup                     
+112     common  idle                            sys_ni_syscall                  
+113     common  vm86                            sys_ni_syscall                  
+114     common  wait4                           sys_wait4                       compat_sys_wait4
+115     common  swapoff                         sys_swapoff                     
+116     common  sysinfo                         sys_sysinfo                     compat_sys_sysinfo
+117     common  ipc                             sys_ipc                         compat_sys_ipc
+118     common  fsync                           sys_fsync                       
+119     common  sigreturn                       
+120     common  clone                           ppc_clone                       
+121     common  setdomainname                   sys_setdomainname               
+122     common  uname                           sys_newuname                    
+123     common  modify_ldt                      sys_ni_syscall                  
+124     common  adjtimex                        sys_adjtimex                    compat_sys_adjtimex
+125     common  mprotect                        sys_mprotect                    
+126     common  sigprocmask                     sys_sigprocmask                 compat_sys_sigprocmask
+127     common  create_module                   sys_ni_syscall                  
+128     common  init_module                     sys_init_module                 
+129     common  delete_module                   sys_delete_module               
+130     common  get_kernel_syms                 sys_ni_syscall                  
+131     common  quotactl                        sys_quotactl                    
+132     common  getpgid                         sys_getpgid                     
+133     common  fchdir                          sys_fchdir                      
+134     common  bdflush                         sys_bdflush                     
+135     common  sysfs                           sys_sysfs                       
+136     common  personality                     sys_personality                 ppc64_personality
+137     common  afs_syscall                     sys_ni_syscall                  
+138     common  setfsuid                        sys_setfsuid                    
+139     common  setfsgid                        sys_setfsgid                    
+140     common  _llseek                         sys_llseek                      
+141     common  getdents                        sys_getdents                    compat_sys_getdents
+142     common  _newselect                      sys_select
+143     common  flock                           sys_flock                       
+144     common  msync                           sys_msync                       
+145     common  readv                           sys_readv                       compat_sys_readv
+146     common  writev                          sys_writev                      compat_sys_writev
+147     common  getsid                          sys_getsid                      
+148     common  fdatasync                       sys_fdatasync                   
+149     common  _sysctl                         sys_sysctl                      compat_sys_sysctl
+150     common  mlock                           sys_mlock                       
+151     common  munlock                         sys_munlock                     
+152     common  mlockall                        sys_mlockall                    
+153     common  munlockall                      sys_munlockall                  
+154     common  sched_setparam                  sys_sched_setparam              
+155     common  sched_getparam                  sys_sched_getparam              
+156     common  sched_setscheduler              sys_sched_setscheduler          
+157     common  sched_getscheduler              sys_sched_getscheduler          
+158     common  sched_yield                     sys_sched_yield                 
+159     common  sched_get_priority_max          sys_sched_get_priority_max      
+160     common  sched_get_priority_min          sys_sched_get_priority_min      
+161     common  sched_rr_get_interval           sys_sched_rr_get_interval       compat_sys_sched_rr_get_interval
+162     common  nanosleep                       sys_nanosleep                   compat_sys_nanosleep
+163     common  mremap                          sys_mremap                      
+164     common  setresuid                       sys_setresuid                   
+165     common  getresuid                       sys_getresuid                   
+166     common  query_module                    sys_ni_syscall                  
+167     common  poll                            sys_poll                        
+168     common  nfsservctl                      sys_ni_syscall                  
+169     common  setresgid                       sys_setresgid                   
+170     common  getresgid                       sys_getresgid                   
+171     common  prctl                           sys_prctl                       
+172     common  rt_sigreturn                    sys_rt_sigreturn                compat_sys_rt_sigreturn
+173     common  rt_sigaction                    sys_rt_sigaction                compat_sys_rt_sigaction
+174     common  rt_sigprocmask                  sys_rt_sigprocmask              compat_sys_rt_sigprocmask
+175     common  rt_sigpending                   sys_rt_sigpending               compat_sys_rt_sigpending
+176     common  rt_sigtimedwait                 sys_rt_sigtimedwait             compat_sys_rt_sigtimedwait
+177     common  rt_sigqueueinfo                 sys_rt_sigqueueinfo             compat_sys_rt_sigqueueinfo
+178     common  rt_sigsuspend                   sys_rt_sigsuspend               compat_sys_rt_sigsuspend
+179     common  pread64                         sys_pread64                     compat_sys_pread64
+180     common  pwrite64                        sys_pwrite64                    compat_sys_pwrite64
+181     common  chown                           sys_chown                       
+182     common  getcwd                          sys_getcwd                      
+183     common  capget                          sys_capget                      
+184     common  capset                          sys_capset                      
+185     common  sigaltstack                     sys_sigaltstack                 compat_sys_sigaltstack
+186     common  sendfile                        sys_sendfile                    compat_sys_sendfile
+187     common  getpmsg                         sys_ni_syscall                  
+188     common  putpmsg                         sys_ni_syscall                  
+189     common  vfork                           ppc_vfork                       
+190     common  ugetrlimit                      sys_getrlimit                   compat_sys_getrlimit
+191     common  readahead                       sys_readahead                   compat_sys_readahead
+192     common  mmap2                           sys_mmap2                       compat_sys_mmap2
+193     common  truncate64                      
+194     common  ftruncate64                     
+195     common  stat64                          sys_stat64                      
+196     common  lstat64                         sys_lstat64                     
+197     common  fstat64                         sys_fstat64                     
+198     common  pciconfig_read                  sys_pciconfig_read              
+199     common  pciconfig_write                 sys_pciconfig_write             
+200     common  pciconfig_iobase                sys_pciconfig_iobase            
+201     common  multiplexer                     sys_ni_syscall                  
+202     common  getdents64                      sys_getdents64                  
+203     common  pivot_root                      sys_pivot_root                  
+204     common  fcntl64                         
+205     common  madvise                         sys_madvise                     
+206     common  mincore                         sys_mincore                     
+207     common  gettid                          sys_gettid                      
+208     common  tkill                           sys_tkill                       
+209     common  setxattr                        sys_setxattr                    
+210     common  lsetxattr                       sys_lsetxattr                   
+211     common  fsetxattr                       sys_fsetxattr                   
+212     common  getxattr                        sys_getxattr                    
+213     common  lgetxattr                       sys_lgetxattr                   
+214     common  fgetxattr                       sys_fgetxattr                   
+215     common  listxattr                       sys_listxattr                   
+216     common  llistxattr                      sys_llistxattr                  
+217     common  flistxattr                      sys_flistxattr                  
+218     common  removexattr                     sys_removexattr                 
+219     common  lremovexattr                    sys_lremovexattr                
+220     common  fremovexattr                    sys_fremovexattr                
+221     common  futex                           sys_futex                       compat_sys_futex
+222     common  sched_setaffinity               sys_sched_setaffinity           compat_sys_sched_setaffinity
+223     common  sched_getaffinity               sys_sched_getaffinity           compat_sys_sched_getaffinity
+225     common  tuxcall                         sys_ni_syscall                  
+226     common  sendfile64                      sys_sendfile64                  compat_sys_sendfile64
+227     common  io_setup                        sys_io_setup                    compat_sys_io_setup
+228     common  io_destroy                      sys_io_destroy                  
+229     common  io_getevents                    sys_io_getevents                compat_sys_io_getevents
+230     common  io_submit                       sys_io_submit                   compat_sys_io_submit
+231     common  io_cancel                       sys_io_cancel                   
+232     common  set_tid_address                 sys_set_tid_address             
+233     common  fadvise64                       sys_fadvise64                   ppc32_fadvise64
+234     common  exit_group                      sys_exit_group                  
+235     common  lookup_dcookie                  sys_lookup_dcookie              compat_sys_lookup_dcookie
+236     common  epoll_create                    sys_epoll_create                
+237     common  epoll_ctl                       sys_epoll_ctl                   
+238     common  epoll_wait                      sys_epoll_wait                  
+239     common  remap_file_pages                sys_remap_file_pages            
+240     common  timer_create                    sys_timer_create                compat_sys_timer_create
+241     common  timer_settime                   sys_timer_settime               compat_sys_timer_settime
+242     common  timer_gettime                   sys_timer_gettime               compat_sys_timer_gettime
+243     common  timer_getoverrun                sys_timer_getoverrun            
+244     common  timer_delete                    sys_timer_delete                
+245     common  clock_settime                   sys_clock_settime               compat_sys_clock_settime
+246     common  clock_gettime                   sys_clock_gettime               compat_sys_clock_gettime
+247     common  clock_getres                    sys_clock_getres                compat_sys_clock_getres
+248     common  clock_nanosleep                 sys_clock_nanosleep             compat_sys_clock_nanosleep
+249     common  swapcontext                     
+250     common  tgkill                          sys_tgkill                      
+251     common  utimes                          sys_utimes                      compat_sys_utimes
+252     common  statfs64                        sys_statfs64                    compat_sys_statfs64
+253     common  fstatfs64                       sys_fstatfs64                   compat_sys_fstatfs64
+254     common  fadvise64_64                    ppc_fadvise64_64                
+256     common  sys_debug_setcontext            
+258     common  migrate_pages                   sys_ni_syscall                  
+259     common  mbind                           sys_mbind                       compat_sys_mbind
+260     common  get_mempolicy                   sys_get_mempolicy               compat_sys_get_mempolicy
+261     common  set_mempolicy                   sys_set_mempolicy               compat_sys_set_mempolicy
+262     common  mq_open                         sys_mq_open                     compat_sys_mq_open
+263     common  mq_unlink                       sys_mq_unlink                   
+264     common  mq_timedsend                    sys_mq_timedsend                compat_sys_mq_timedsend
+265     common  mq_timedreceive                 sys_mq_timedreceive             compat_sys_mq_timedreceive
+266     common  mq_notify                       sys_mq_notify                   compat_sys_mq_notify
+267     common  mq_getsetattr                   sys_mq_getsetattr               compat_sys_mq_getsetattr
+268     common  kexec_load                      sys_kexec_load                  compat_sys_kexec_load
+269     common  add_key                         sys_add_key                     
+270     common  request_key                     sys_request_key                 
+271     common  keyctl                          sys_keyctl                      compat_sys_keyctl
+272     common  waitid                          sys_waitid                      compat_sys_waitid
+273     common  ioprio_set                      sys_ioprio_set                  
+274     common  ioprio_get                      sys_ioprio_get                  
+275     common  inotify_init                    sys_inotify_init                
+276     common  inotify_add_watch               sys_inotify_add_watch           
+277     common  inotify_rm_watch                sys_inotify_rm_watch            
+278     common  spu_run                         sys_spu_run                     
+279     common  spu_create                      sys_spu_create                  
+280     common  pselect6                        sys_pselect6                    compat_sys_pselect6
+281     common  ppoll                           sys_ppoll                       compat_sys_ppoll
+282     common  unshare                         sys_unshare                     
+283     common  splice                          sys_splice                      
+284     common  tee                             sys_tee                         
+285     common  vmsplice                        sys_vmsplice                    compat_sys_vmsplice
+286     common  openat                          sys_openat                      compat_sys_openat
+287     common  mkdirat                         sys_mkdirat                     
+288     common  mknodat                         sys_mknodat                     
+289     common  fchownat                        sys_fchownat                    
+290     common  futimesat                       sys_futimesat                   compat_sys_futimesat
+291     common  fstatat64                       sys_fstatat64                   
+292     common  unlinkat                        sys_unlinkat                    
+293     common  renameat                        sys_renameat                    
+294     common  linkat                          sys_linkat                      
+295     common  symlinkat                       sys_symlinkat                   
+296     common  readlinkat                      sys_readlinkat                  
+297     common  fchmodat                        sys_fchmodat                    
+298     common  faccessat                       sys_faccessat                   
+299     common  get_robust_list                 sys_get_robust_list             compat_sys_get_robust_list
+300     common  set_robust_list                 sys_set_robust_list             compat_sys_set_robust_list
+301     common  move_pages                      sys_move_pages                  compat_sys_move_pages
+302     common  getcpu                          sys_getcpu                      
+303     common  epoll_pwait                     sys_epoll_pwait                 compat_sys_epoll_pwait
+304     common  utimensat                       sys_utimensat                   compat_sys_utimensat
+305     common  signalfd                        sys_signalfd                    compat_sys_signalfd
+306     common  timerfd_create                  sys_timerfd_create              
+307     common  eventfd                         sys_eventfd                     
+308     common  sync_file_range2                sys_sync_file_range2            compat_sys_sync_file_range2
+309     common  fallocate                       sys_fallocate                   compat_sys_fallocate
+310     common  subpage_prot                    sys_subpage_prot                
+311     common  timerfd_settime                 sys_timerfd_settime             compat_sys_timerfd_settime
+312     common  timerfd_gettime                 sys_timerfd_gettime             compat_sys_timerfd_gettime
+313     common  signalfd4                       sys_signalfd4                   compat_sys_signalfd4
+314     common  eventfd2                        sys_eventfd2                    
+315     common  epoll_create1                   sys_epoll_create1               
+316     common  dup3                            sys_dup3                        
+317     common  pipe2                           sys_pipe2                       
+318     common  inotify_init1                   sys_inotify_init1               
+319     common  perf_event_open                 sys_perf_event_open             
+320     common  preadv                          sys_preadv                      compat_sys_preadv
+321     common  pwritev                         sys_pwritev                     compat_sys_pwritev
+322     common  rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo           compat_sys_rt_tgsigqueueinfo
+323     common  fanotify_init                   sys_fanotify_init               
+324     common  fanotify_mark                   sys_fanotify_mark               compat_sys_fanotify_mark
+325     common  prlimit64                       sys_prlimit64                   
+326     common  socket                          sys_socket                      
+327     common  bind                            sys_bind                        
+328     common  connect                         sys_connect                     
+329     common  listen                          sys_listen                      
+330     common  accept                          sys_accept                      
+331     common  getsockname                     sys_getsockname                 
+332     common  getpeername                     sys_getpeername                 
+333     common  socketpair                      sys_socketpair                  
+334     common  send                            sys_send                        
+335     common  sendto                          sys_sendto                      
+336     common  recv                            sys_recv                        compat_sys_recv
+337     common  recvfrom                        sys_recvfrom                    compat_sys_recvfrom
+338     common  shutdown                        sys_shutdown                    
+339     common  setsockopt                      sys_setsockopt                  compat_sys_setsockopt
+340     common  getsockopt                      sys_getsockopt                  compat_sys_getsockopt
+341     common  sendmsg                         sys_sendmsg                     compat_sys_sendmsg
+342     common  recvmsg                         sys_recvmsg                     compat_sys_recvmsg
+343     common  recvmmsg                        sys_recvmmsg                    compat_sys_recvmmsg
+344     common  accept4                         sys_accept4                     
+345     common  name_to_handle_at               sys_name_to_handle_at           
+346     common  open_by_handle_at               sys_open_by_handle_at           compat_sys_open_by_handle_at
+347     common  clock_adjtime                   sys_clock_adjtime               compat_sys_clock_adjtime
+348     common  syncfs                          sys_syncfs                      
+349     common  sendmmsg                        sys_sendmmsg                    compat_sys_sendmmsg
+350     common  setns                           sys_setns                       
+351     common  process_vm_readv                sys_process_vm_readv            compat_sys_process_vm_readv
+352     common  process_vm_writev               sys_process_vm_writev           compat_sys_process_vm_writev
+353     common  finit_module                    sys_finit_module                
+354     common  kcmp                            sys_kcmp                        
+355     common  sched_setattr                   sys_sched_setattr               
+356     common  sched_getattr                   sys_sched_getattr               
+357     common  renameat2                       sys_renameat2                   
+358     common  seccomp                         sys_seccomp                     
+359     common  getrandom                       sys_getrandom                   
+360     common  memfd_create                    sys_memfd_create                
+361     common  bpf                             sys_bpf                         
+362     common  execveat                        sys_execveat                    compat_sys_execveat
+363     common  switch_endian                   sys_ni_syscall                  
+364     common  userfaultfd                     sys_userfaultfd                 
+365     common  membarrier                      sys_membarrier                  
+378     common  mlock2                          sys_mlock2                      
+379     common  copy_file_range                 sys_copy_file_range             
+380     common  preadv2                         sys_preadv2                     compat_sys_preadv2
+381     common  pwritev2                        sys_pwritev2                    compat_sys_pwritev2
+382     common  kexec_file_load                 sys_kexec_file_load             
+383     common  statx                           sys_statx                       
+384     common  pkey_alloc                      sys_pkey_alloc                  
+385     common  pkey_free                       sys_pkey_free                   
+386     common  pkey_mprotect                   sys_pkey_mprotect               
diff --git a/arch/powerpc/kernel/syscalls/syscall_64.tbl b/arch/powerpc/kernel/syscalls/syscall_64.tbl
new file mode 100644
index 0000000..f0b1311
--- /dev/null
+++ b/arch/powerpc/kernel/syscalls/syscall_64.tbl
@@ -0,0 +1,372 @@
+#
+# 64-bit system call numbers and entry vectors
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The abi is "common" for this file.
+#
+0       common  restart_syscall                 sys_restart_syscall
+1       common  exit                            sys_exit
+2       common  fork                            ppc_fork
+3       common  read                            sys_read
+4       common  write                           sys_write
+5       common  open                            sys_open
+6       common  close                           sys_close
+7       common  waitpid                         sys_waitpid
+8       common  creat                           sys_creat
+9       common  link                            sys_link
+10      common  unlink                          sys_unlink
+11      common  execve                          sys_execve
+12      common  chdir                           sys_chdir
+13      common  time                            sys_time
+14      common  mknod                           sys_mknod
+15      common  chmod                           sys_chmod
+16      common  lchown                          sys_lchown
+17      common  break                           sys_ni_syscall
+18      common  oldstat                         sys_ni_syscall
+19      common  lseek                           sys_lseek
+20      common  getpid                          sys_getpid
+21      common  mount                           sys_mount
+22      common  umount                          sys_ni_syscall
+23      common  setuid                          sys_setuid
+24      common  getuid                          sys_getuid
+25      common  stime                           sys_stime
+26      common  ptrace                          sys_ptrace
+27      common  alarm                           sys_alarm
+28      common  oldfstat                        sys_ni_syscall
+29      common  pause                           sys_pause
+30      common  utime                           sys_utime
+31      common  stty                            sys_ni_syscall
+32      common  gtty                            sys_ni_syscall
+33      common  access                          sys_access
+34      common  nice                            sys_nice
+35      common  ftime                           sys_ni_syscall
+36      common  sync                            sys_sync
+37      common  kill                            sys_kill
+38      common  rename                          sys_rename
+39      common  mkdir                           sys_mkdir
+40      common  rmdir                           sys_rmdir
+41      common  dup                             sys_dup
+42      common  pipe                            sys_pipe
+43      common  times                           sys_times
+44      common  prof                            sys_ni_syscall
+45      common  brk                             sys_brk
+46      common  setgid                          sys_setgid
+47      common  getgid                          sys_getgid
+48      common  signal                          sys_signal
+49      common  geteuid                         sys_geteuid
+50      common  getegid                         sys_getegid
+51      common  acct                            sys_acct
+52      common  umount2                         sys_umount
+53      common  lock                            sys_ni_syscall
+54      common  ioctl                           sys_ioctl
+55      common  fcntl                           sys_fcntl
+56      common  mpx                             sys_ni_syscall
+57      common  setpgid                         sys_setpgid
+58      common  ulimit                          sys_ni_syscall
+59      common  oldolduname                     sys_ni_syscall
+60      common  umask                           sys_umask
+61      common  chroot                          sys_chroot
+62      common  ustat                           sys_ustat
+63      common  dup2                            sys_dup2
+64      common  getppid                         sys_getppid
+65      common  getpgrp                         sys_getpgrp
+66      common  setsid                          sys_setsid
+67      common  sigaction                       sys_ni_syscall
+68      common  sgetmask                        sys_sgetmask
+69      common  ssetmask                        sys_ssetmask
+70      common  setreuid                        sys_setreuid
+71      common  setregid                        sys_setregid
+72      common  sigsuspend                      sys_ni_syscall
+73      common  sigpending                      sys_ni_syscall
+74      common  sethostname                     sys_sethostname
+75      common  setrlimit                       sys_setrlimit
+76      common  getrlimit                       sys_ni_syscall
+77      common  getrusage                       sys_getrusage
+78      common  gettimeofday                    sys_gettimeofday
+79      common  settimeofday                    sys_settimeofday
+80      common  getgroups                       sys_getgroups
+81      common  setgroups                       sys_setgroups
+82      common  select                          sys_ni_syscall
+83      common  symlink                         sys_symlink
+84      common  oldlstat                        sys_ni_syscall
+85      common  readlink                        sys_readlink
+86      common  uselib                          sys_uselib
+87      common  swapon                          sys_swapon
+88      common  reboot                          sys_reboot
+89      common  readdir                         sys_ni_syscall
+90      common  mmap                            sys_mmap
+91      common  munmap                          sys_munmap
+92      common  truncate                        sys_truncate
+93      common  ftruncate                       sys_ftruncate
+94      common  fchmod                          sys_fchmod
+95      common  fchown                          sys_fchown
+96      common  getpriority                     sys_getpriority
+97      common  setpriority                     sys_setpriority
+98      common  profil                          sys_ni_syscall
+99      common  statfs                          sys_statfs
+100     common  fstatfs                         sys_fstatfs
+101     common  ioperm                          sys_ni_syscall
+102     common  socketcall                      sys_socketcall
+103     common  syslog                          sys_syslog
+104     common  setitimer                       sys_setitimer
+105     common  getitimer                       sys_getitimer
+106     common  stat                            sys_newstat
+107     common  lstat                           sys_lstat
+108     common  fstat                           sys_fstat
+109     common  olduname                        sys_ni_syscall
+110     common  iopl                            sys_ni_syscall
+111     common  vhangup                         sys_vhangup
+112     common  idle                            sys_ni_syscall
+113     common  vm86                            sys_ni_syscall
+114     common  wait4                           sys_wait4
+115     common  swapoff                         sys_swapoff
+116     common  sysinfo                         sys_sysinfo
+117     common  ipc                             sys_ipc
+118     common  fsync                           sys_fsync
+119     common  sigreturn                       sys_ni_syscall
+120     common  clone                           ppc_clone
+121     common  setdomainname                   sys_setdomainname
+122     common  uname                           sys_newuname
+123     common  modify_ldt                      sys_ni_syscall
+124     common  adjtimex                        sys_adjtimex
+125     common  mprotect                        sys_mprotect
+126     common  sigprocmask                     sys_ni_syscall
+127     common  create_module                   sys_ni_syscall
+128     common  init_module                     sys_init_module
+129     common  delete_module                   sys_delete_module
+130     common  get_kernel_syms                 sys_ni_syscall
+131     common  quotactl                        sys_quotactl
+132     common  getpgid                         sys_getpgid
+133     common  fchdir                          sys_fchdir
+134     common  bdflush                         sys_bdflush
+135     common  sysfs                           sys_sysfs
+136     common  personality                     ppc64_personality
+137     common  afs_syscall                     sys_ni_syscall
+138     common  setfsuid                        sys_setfsuid
+139     common  setfsgid                        sys_setfsgid
+140     common  _llseek                         sys_llseek
+141     common  getdents                        sys_getdents
+142     common  _newselect                      sys_select
+143     common  flock                           sys_flock
+144     common  msync                           sys_msync
+145     common  readv                           sys_readv
+146     common  writev                          sys_writev
+147     common  getsid                          sys_getsid
+148     common  fdatasync                       sys_fdatasync
+149     common  _sysctl                         sys_sysctl
+150     common  mlock                           sys_mlock
+151     common  munlock                         sys_munlock
+152     common  mlockall                        sys_mlockall
+153     common  munlockall                      sys_munlockall
+154     common  sched_setparam                  sys_sched_setparam
+155     common  sched_getparam                  sys_sched_getparam
+156     common  sched_setscheduler              sys_sched_setscheduler
+157     common  sched_getscheduler              sys_sched_getscheduler
+158     common  sched_yield                     sys_sched_yield
+159     common  sched_get_priority_max          sys_sched_get_priority_max
+160     common  sched_get_priority_min          sys_sched_get_priority_min
+161     common  sched_rr_get_interval           sys_sched_rr_get_interval
+162     common  nanosleep                       sys_nanosleep
+163     common  mremap                          sys_mremap
+164     common  setresuid                       sys_setresuid
+165     common  getresuid                       sys_getresuid
+166     common  query_module                    sys_ni_syscall
+167     common  poll                            sys_poll
+168     common  nfsservctl                      sys_ni_syscall
+169     common  setresgid                       sys_setresgid
+170     common  getresgid                       sys_getresgid
+171     common  prctl                           sys_prctl
+172     common  rt_sigreturn                    sys_rt_sigreturn
+173     common  rt_sigaction                    sys_rt_sigaction
+174     common  rt_sigprocmask                  sys_rt_sigprocmask
+175     common  rt_sigpending                   sys_rt_sigpending
+176     common  rt_sigtimedwait                 sys_rt_sigtimedwait
+177     common  rt_sigqueueinfo                 sys_rt_sigqueueinfo
+178     common  rt_sigsuspend                   sys_rt_sigsuspend
+179     common  pread64                         sys_pread64
+180     common  pwrite64                        sys_pwrite64
+181     common  chown                           sys_chown
+182     common  getcwd                          sys_getcwd
+183     common  capget                          sys_capget
+184     common  capset                          sys_capset
+185     common  sigaltstack                     sys_sigaltstack
+186     common  sendfile                        sys_sendfile64
+187     common  getpmsg                         sys_ni_syscall
+188     common  putpmsg                         sys_ni_syscall
+189     common  vfork                           ppc_vfork
+190     common  ugetrlimit                      sys_getrlimit
+191     common  readahead                       sys_readahead
+198     common  pciconfig_read                  sys_pciconfig_read
+199     common  pciconfig_write                 sys_pciconfig_write
+200     common  pciconfig_iobase                sys_pciconfig_iobase
+201     common  multiplexer                     sys_ni_syscall
+202     common  getdents64                      sys_getdents64
+203     common  pivot_root                      sys_pivot_root
+205     common  madvise                         sys_madvise
+206     common  mincore                         sys_mincore
+207     common  gettid                          sys_gettid
+208     common  tkill                           sys_tkill
+209     common  setxattr                        sys_setxattr
+210     common  lsetxattr                       sys_lsetxattr
+211     common  fsetxattr                       sys_fsetxattr
+212     common  getxattr                        sys_getxattr
+213     common  lgetxattr                       sys_lgetxattr
+214     common  fgetxattr                       sys_fgetxattr
+215     common  listxattr                       sys_listxattr
+216     common  llistxattr                      sys_llistxattr
+217     common  flistxattr                      sys_flistxattr
+218     common  removexattr                     sys_removexattr
+219     common  lremovexattr                    sys_lremovexattr
+220     common  fremovexattr                    sys_fremovexattr
+221     common  futex                           sys_futex
+222     common  sched_setaffinity               sys_sched_setaffinity
+223     common  sched_getaffinity               sys_sched_getaffinity
+225     common  tuxcall                         sys_ni_syscall
+227     common  io_setup                        sys_io_setup
+228     common  io_destroy                      sys_io_destroy
+229     common  io_getevents                    sys_io_getevents
+230     common  io_submit                       sys_io_submit
+231     common  io_cancel                       sys_io_cancel
+232     common  set_tid_address                 sys_set_tid_address
+233     common  fadvise64                       sys_fadvise64
+234     common  exit_group                      sys_exit_group
+235     common  lookup_dcookie                  sys_lookup_dcookie
+236     common  epoll_create                    sys_epoll_create
+237     common  epoll_ctl                       sys_epoll_ctl
+238     common  epoll_wait                      sys_epoll_wait
+239     common  remap_file_pages                sys_remap_file_pages
+240     common  timer_create                    sys_timer_create
+241     common  timer_settime                   sys_timer_settime
+242     common  timer_gettime                   sys_timer_gettime
+243     common  timer_getoverrun                sys_timer_getoverrun
+244     common  timer_delete                    sys_timer_delete
+245     common  clock_settime                   sys_clock_settime
+246     common  clock_gettime                   sys_clock_gettime
+247     common  clock_getres                    sys_clock_getres
+248     common  clock_nanosleep                 sys_clock_nanosleep
+249     common  swapcontext                     ppc64_swapcontext
+250     common  tgkill                          sys_tgkill
+251     common  utimes                          sys_utimes
+252     common  statfs64                        sys_statfs64
+253     common  fstatfs64                       sys_fstatfs64
+255     common  rtas                            ppc_rtas
+256     common  sys_debug_setcontext            sys_ni_syscall
+258     common  migrate_pages                   sys_ni_syscall
+259     common  mbind                           sys_mbind
+260     common  get_mempolicy                   sys_get_mempolicy
+261     common  set_mempolicy                   sys_set_mempolicy
+262     common  mq_open                         sys_mq_open
+263     common  mq_unlink                       sys_mq_unlink
+264     common  mq_timedsend                    sys_mq_timedsend
+265     common  mq_timedreceive                 sys_mq_timedreceive
+266     common  mq_notify                       sys_mq_notify
+267     common  mq_getsetattr                   sys_mq_getsetattr
+268     common  kexec_load                      sys_kexec_load
+269     common  add_key                         sys_add_key
+270     common  request_key                     sys_request_key
+271     common  keyctl                          sys_keyctl
+272     common  waitid                          sys_waitid
+273     common  ioprio_set                      sys_ioprio_set
+274     common  ioprio_get                      sys_ioprio_get
+275     common  inotify_init                    sys_inotify_init
+276     common  inotify_add_watch               sys_inotify_add_watch
+277     common  inotify_rm_watch                sys_inotify_rm_watch
+278     common  spu_run                         sys_spu_run
+279     common  spu_create                      sys_spu_create
+280     common  pselect6                        sys_pselect6
+281     common  ppoll                           sys_ppoll
+282     common  unshare                         sys_unshare
+283     common  splice                          sys_splice
+284     common  tee                             sys_tee
+285     common  vmsplice                        sys_vmsplice
+286     common  openat                          sys_openat
+287     common  mkdirat                         sys_mkdirat
+288     common  mknodat                         sys_mknodat
+289     common  fchownat                        sys_fchownat
+290     common  futimesat                       sys_futimesat
+291     common  newfstatat                      sys_newfstatat
+292     common  unlinkat                        sys_unlinkat
+293     common  renameat                        sys_renameat
+294     common  linkat                          sys_linkat
+295     common  symlinkat                       sys_symlinkat
+296     common  readlinkat                      sys_readlinkat
+297     common  fchmodat                        sys_fchmodat
+298     common  faccessat                       sys_faccessat
+299     common  get_robust_list                 sys_get_robust_list
+300     common  set_robust_list                 sys_set_robust_list
+301     common  move_pages                      sys_move_pages
+302     common  getcpu                          sys_getcpu
+303     common  epoll_pwait                     sys_epoll_pwait
+304     common  utimensat                       sys_utimensat
+305     common  signalfd                        sys_signalfd
+306     common  timerfd_create                  sys_timerfd_create
+307     common  eventfd                         sys_eventfd
+308     common  sync_file_range2                sys_sync_file_range2
+309     common  fallocate                       sys_fallocate
+310     common  subpage_prot                    sys_subpage_prot
+311     common  timerfd_settime                 sys_timerfd_settime
+312     common  timerfd_gettime                 sys_timerfd_gettime
+313     common  signalfd4                       sys_signalfd4
+314     common  eventfd2                        sys_eventfd2
+315     common  epoll_create1                   sys_epoll_create1
+316     common  dup3                            sys_dup3
+317     common  pipe2                           sys_pipe2
+318     common  inotify_init1                   sys_inotify_init1
+319     common  perf_event_open                 sys_perf_event_open
+320     common  preadv                          sys_preadv
+321     common  pwritev                         sys_pwritev
+322     common  rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo
+323     common  fanotify_init                   sys_fanotify_init
+324     common  fanotify_mark                   sys_fanotify_mark
+325     common  prlimit64                       sys_prlimit64
+326     common  socket                          sys_socket
+327     common  bind                            sys_bind
+328     common  connect                         sys_connect
+329     common  listen                          sys_listen
+330     common  accept                          sys_accept
+331     common  getsockname                     sys_getsockname
+332     common  getpeername                     sys_getpeername
+333     common  socketpair                      sys_socketpair
+334     common  send                            sys_send
+335     common  sendto                          sys_sendto
+336     common  recv                            sys_recv
+337     common  recvfrom                        sys_recvfrom
+338     common  shutdown                        sys_shutdown
+339     common  setsockopt                      sys_setsockopt
+340     common  getsockopt                      sys_getsockopt
+341     common  sendmsg                         sys_sendmsg
+342     common  recvmsg                         sys_recvmsg
+343     common  recvmmsg                        sys_recvmmsg
+344     common  accept4                         sys_accept4
+345     common  name_to_handle_at               sys_name_to_handle_at
+346     common  open_by_handle_at               sys_open_by_handle_at
+347     common  clock_adjtime                   sys_clock_adjtime
+348     common  syncfs                          sys_syncfs
+349     common  sendmmsg                        sys_sendmmsg
+350     common  setns                           sys_setns
+351     common  process_vm_readv                sys_process_vm_readv
+352     common  process_vm_writev               sys_process_vm_writev
+353     common  finit_module                    sys_finit_module
+354     common  kcmp                            sys_kcmp
+355     common  sched_setattr                   sys_sched_setattr
+356     common  sched_getattr                   sys_sched_getattr
+357     common  renameat2                       sys_renameat2
+358     common  seccomp                         sys_seccomp
+359     common  getrandom                       sys_getrandom
+360     common  memfd_create                    sys_memfd_create
+361     common  bpf                             sys_bpf
+362     common  execveat                        sys_execveat
+363     common  switch_endian                   ppc_switch_endian
+364     common  userfaultfd                     sys_userfaultfd
+365     common  membarrier                      sys_membarrier
+378     common  mlock2                          sys_mlock2
+379     common  copy_file_range                 sys_copy_file_range
+380     common  preadv2                         sys_preadv2
+381     common  pwritev2                        sys_pwritev2
+382     common  kexec_file_load                 sys_kexec_file_load
+383     common  statx                           sys_statx
+384     common  pkey_alloc                      sys_pkey_alloc
+385     common  pkey_free                       sys_pkey_free
+386     common  pkey_mprotect                   sys_pkey_mprotect
diff --git a/arch/powerpc/kernel/syscalls/syscallhdr.sh b/arch/powerpc/kernel/syscalls/syscallhdr.sh
new file mode 100644
index 0000000..b630818
--- /dev/null
+++ b/arch/powerpc/kernel/syscalls/syscallhdr.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=_UAPI_ASM_POWERPC_`basename "$out" | sed \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
+    -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
+grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
+    echo "#ifndef ${fileguard}"
+    echo "#define ${fileguard}"
+    echo ""
+
+    nxt=0
+    while read nr abi name entry compat ; do
+	if [ -z "$offset" ]; then
+	    echo -e "#define __NR_${prefix}${name}\t$nr"
+	else
+	    echo -e "#define __NR_${prefix}${name}\t($offset + $nr)"
+	fi
+	nxt=$nr
+        let nxt=nxt+1
+    done
+
+    echo ""
+    if [ -z "$offset" ]; then
+	echo -e "#define __NR_syscalls\t$nxt"
+    else
+	echo -e "#define __NR_syscalls\t($offset + $nxt)"
+    fi
+    echo ""
+    echo "#endif /* ${fileguard} */"
+) > "$out"
diff --git a/arch/powerpc/kernel/syscalls/syscalltbl.sh b/arch/powerpc/kernel/syscalls/syscalltbl.sh
new file mode 100644
index 0000000..7666cd9
--- /dev/null
+++ b/arch/powerpc/kernel/syscalls/syscalltbl.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abi="$3"
+
+emit() {
+    nxt="$1"
+    nr="$2"
+    entry="$3"
+    
+    while [ $nxt -lt $nr ]; do
+	echo "__SYSCALL($nxt, sys_ni_syscall, )"
+        let nxt=nxt+1
+    done
+    
+    echo "__SYSCALL($nr, $entry, )"
+}
+
+grep '^[0-9]' "$in" | sort -n | (
+    nxt=0
+    while read nr abi name entry compat ; do
+	if [ "$my_abi" = "64" ]; then
+            emit $nxt $nr $entry
+	elif [ "$my_abi" = "32" ]; then
+            emit $nxt $nr $entry
+	elif [ "$my_abi" = "c32" ]; then
+	    if [ -z "$compat" ]; then
+		emit $nxt $nr $entry
+	    else
+		emit $nxt $nr $compat
+	    fi
+	fi
+	nxt=$nr
+        let nxt=nxt+1
+    done
+) > "$out"
-- 
1.9.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 3/3] powerpc: uapi header and system call table file generation
  2018-09-14  8:32 [PATCH 0/3] System call table generation support Firoz Khan
  2018-09-14  8:32 ` [PATCH 1/3] powerpc: Replace NR_syscalls macro from asm/unistd.h Firoz Khan
  2018-09-14  8:32 ` [PATCH 2/3] powerpc: Add system call table generation support Firoz Khan
@ 2018-09-14  8:33 ` Firoz Khan
  2 siblings, 0 replies; 10+ messages in thread
From: Firoz Khan @ 2018-09-14  8:33 UTC (permalink / raw)
  To: Arnd Bergmann, linuxppc-dev, Benjamin Herrenschmidt,
	Paul Mackerras, Michael Ellerman, Ram Pai, Breno Leitao,
	Boqun Feng, Greg Kroah-Hartman, Philippe Ombredanne,
	Thomas Gleixner, Kate Stewart
  Cc: y2038, linux-kernel, linux-arch, deepa.kernel,
	marcin.juszkiewicz, firoz.khan

System call table generation script must be run to generate
unistd_32/64.h and syscall_table_32/64/c32.h files. This patch
will have changes which will invokes the script.

This patch will generate unistd_32/64.h and syscall_table_
32/64/c32.h files by the syscall table generation script
invoked by arch/sparc/Makefile and the generated files against
the removed files will be identical.

The generated uapi header file will be included in uapi/asm/
unistd_32/64.h and generated system call table support file will
be included by arch/sparc/kernel/syscall_table_32/64.S file.

Signed-off-by: Firoz Khan <firoz.khan@linaro.org>
---
 arch/powerpc/Makefile                  |   3 +
 arch/powerpc/include/asm/Kbuild        |   3 +
 arch/powerpc/include/uapi/asm/Kbuild   |   2 +
 arch/powerpc/include/uapi/asm/unistd.h | 393 +--------------------------------
 arch/powerpc/kernel/Makefile           |   3 +-
 arch/powerpc/kernel/syscall_table_32.S |   9 +
 arch/powerpc/kernel/syscall_table_64.S |  17 ++
 arch/powerpc/kernel/systbl.S           |  50 -----
 8 files changed, 39 insertions(+), 441 deletions(-)
 create mode 100644 arch/powerpc/kernel/syscall_table_32.S
 create mode 100644 arch/powerpc/kernel/syscall_table_64.S
 delete mode 100644 arch/powerpc/kernel/systbl.S

diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 11a1acb..90614c9 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -400,6 +400,9 @@ archclean:
 
 archprepare: checkbin
 
+archheaders:
+	$(Q)$(MAKE) $(build)=arch/powerpc/kernel/syscalls all
+
 # Use the file '.tmp_gas_check' for binutils tests, as gas won't output
 # to stdout and these checks are run even on install targets.
 TOUT	:= .tmp_gas_check
diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild
index 3196d22..74e63b4 100644
--- a/arch/powerpc/include/asm/Kbuild
+++ b/arch/powerpc/include/asm/Kbuild
@@ -8,3 +8,6 @@ generic-y += preempt.h
 generic-y += rwsem.h
 generic-y += vtime.h
 generic-y += msi.h
+generated-y += syscall_table_32.h
+generated-y += syscall_table_64.h
+generated-y += syscall_table_c32.h
\ No newline at end of file
diff --git a/arch/powerpc/include/uapi/asm/Kbuild b/arch/powerpc/include/uapi/asm/Kbuild
index 1a6ed59..a731c5b 100644
--- a/arch/powerpc/include/uapi/asm/Kbuild
+++ b/arch/powerpc/include/uapi/asm/Kbuild
@@ -7,3 +7,5 @@ generic-y += poll.h
 generic-y += resource.h
 generic-y += sockios.h
 generic-y += statfs.h
+generated-y += unistd_32.h
+generated-y += unistd_64.h
\ No newline at end of file
diff --git a/arch/powerpc/include/uapi/asm/unistd.h b/arch/powerpc/include/uapi/asm/unistd.h
index f999df2..9084a0c 100644
--- a/arch/powerpc/include/uapi/asm/unistd.h
+++ b/arch/powerpc/include/uapi/asm/unistd.h
@@ -10,397 +10,10 @@
 #ifndef _UAPI_ASM_POWERPC_UNISTD_H_
 #define _UAPI_ASM_POWERPC_UNISTD_H_
 
-
-#define __NR_restart_syscall	  0
-#define __NR_exit		  1
-#define __NR_fork		  2
-#define __NR_read		  3
-#define __NR_write		  4
-#define __NR_open		  5
-#define __NR_close		  6
-#define __NR_waitpid		  7
-#define __NR_creat		  8
-#define __NR_link		  9
-#define __NR_unlink		 10
-#define __NR_execve		 11
-#define __NR_chdir		 12
-#define __NR_time		 13
-#define __NR_mknod		 14
-#define __NR_chmod		 15
-#define __NR_lchown		 16
-#define __NR_break		 17
-#define __NR_oldstat		 18
-#define __NR_lseek		 19
-#define __NR_getpid		 20
-#define __NR_mount		 21
-#define __NR_umount		 22
-#define __NR_setuid		 23
-#define __NR_getuid		 24
-#define __NR_stime		 25
-#define __NR_ptrace		 26
-#define __NR_alarm		 27
-#define __NR_oldfstat		 28
-#define __NR_pause		 29
-#define __NR_utime		 30
-#define __NR_stty		 31
-#define __NR_gtty		 32
-#define __NR_access		 33
-#define __NR_nice		 34
-#define __NR_ftime		 35
-#define __NR_sync		 36
-#define __NR_kill		 37
-#define __NR_rename		 38
-#define __NR_mkdir		 39
-#define __NR_rmdir		 40
-#define __NR_dup		 41
-#define __NR_pipe		 42
-#define __NR_times		 43
-#define __NR_prof		 44
-#define __NR_brk		 45
-#define __NR_setgid		 46
-#define __NR_getgid		 47
-#define __NR_signal		 48
-#define __NR_geteuid		 49
-#define __NR_getegid		 50
-#define __NR_acct		 51
-#define __NR_umount2		 52
-#define __NR_lock		 53
-#define __NR_ioctl		 54
-#define __NR_fcntl		 55
-#define __NR_mpx		 56
-#define __NR_setpgid		 57
-#define __NR_ulimit		 58
-#define __NR_oldolduname	 59
-#define __NR_umask		 60
-#define __NR_chroot		 61
-#define __NR_ustat		 62
-#define __NR_dup2		 63
-#define __NR_getppid		 64
-#define __NR_getpgrp		 65
-#define __NR_setsid		 66
-#define __NR_sigaction		 67
-#define __NR_sgetmask		 68
-#define __NR_ssetmask		 69
-#define __NR_setreuid		 70
-#define __NR_setregid		 71
-#define __NR_sigsuspend		 72
-#define __NR_sigpending		 73
-#define __NR_sethostname	 74
-#define __NR_setrlimit		 75
-#define __NR_getrlimit		 76
-#define __NR_getrusage		 77
-#define __NR_gettimeofday	 78
-#define __NR_settimeofday	 79
-#define __NR_getgroups		 80
-#define __NR_setgroups		 81
-#define __NR_select		 82
-#define __NR_symlink		 83
-#define __NR_oldlstat		 84
-#define __NR_readlink		 85
-#define __NR_uselib		 86
-#define __NR_swapon		 87
-#define __NR_reboot		 88
-#define __NR_readdir		 89
-#define __NR_mmap		 90
-#define __NR_munmap		 91
-#define __NR_truncate		 92
-#define __NR_ftruncate		 93
-#define __NR_fchmod		 94
-#define __NR_fchown		 95
-#define __NR_getpriority	 96
-#define __NR_setpriority	 97
-#define __NR_profil		 98
-#define __NR_statfs		 99
-#define __NR_fstatfs		100
-#define __NR_ioperm		101
-#define __NR_socketcall		102
-#define __NR_syslog		103
-#define __NR_setitimer		104
-#define __NR_getitimer		105
-#define __NR_stat		106
-#define __NR_lstat		107
-#define __NR_fstat		108
-#define __NR_olduname		109
-#define __NR_iopl		110
-#define __NR_vhangup		111
-#define __NR_idle		112
-#define __NR_vm86		113
-#define __NR_wait4		114
-#define __NR_swapoff		115
-#define __NR_sysinfo		116
-#define __NR_ipc		117
-#define __NR_fsync		118
-#define __NR_sigreturn		119
-#define __NR_clone		120
-#define __NR_setdomainname	121
-#define __NR_uname		122
-#define __NR_modify_ldt		123
-#define __NR_adjtimex		124
-#define __NR_mprotect		125
-#define __NR_sigprocmask	126
-#define __NR_create_module	127
-#define __NR_init_module	128
-#define __NR_delete_module	129
-#define __NR_get_kernel_syms	130
-#define __NR_quotactl		131
-#define __NR_getpgid		132
-#define __NR_fchdir		133
-#define __NR_bdflush		134
-#define __NR_sysfs		135
-#define __NR_personality	136
-#define __NR_afs_syscall	137 /* Syscall for Andrew File System */
-#define __NR_setfsuid		138
-#define __NR_setfsgid		139
-#define __NR__llseek		140
-#define __NR_getdents		141
-#define __NR__newselect		142
-#define __NR_flock		143
-#define __NR_msync		144
-#define __NR_readv		145
-#define __NR_writev		146
-#define __NR_getsid		147
-#define __NR_fdatasync		148
-#define __NR__sysctl		149
-#define __NR_mlock		150
-#define __NR_munlock		151
-#define __NR_mlockall		152
-#define __NR_munlockall		153
-#define __NR_sched_setparam		154
-#define __NR_sched_getparam		155
-#define __NR_sched_setscheduler		156
-#define __NR_sched_getscheduler		157
-#define __NR_sched_yield		158
-#define __NR_sched_get_priority_max	159
-#define __NR_sched_get_priority_min	160
-#define __NR_sched_rr_get_interval	161
-#define __NR_nanosleep		162
-#define __NR_mremap		163
-#define __NR_setresuid		164
-#define __NR_getresuid		165
-#define __NR_query_module	166
-#define __NR_poll		167
-#define __NR_nfsservctl		168
-#define __NR_setresgid		169
-#define __NR_getresgid		170
-#define __NR_prctl		171
-#define __NR_rt_sigreturn	172
-#define __NR_rt_sigaction	173
-#define __NR_rt_sigprocmask	174
-#define __NR_rt_sigpending	175
-#define __NR_rt_sigtimedwait	176
-#define __NR_rt_sigqueueinfo	177
-#define __NR_rt_sigsuspend	178
-#define __NR_pread64		179
-#define __NR_pwrite64		180
-#define __NR_chown		181
-#define __NR_getcwd		182
-#define __NR_capget		183
-#define __NR_capset		184
-#define __NR_sigaltstack	185
-#define __NR_sendfile		186
-#define __NR_getpmsg		187	/* some people actually want streams */
-#define __NR_putpmsg		188	/* some people actually want streams */
-#define __NR_vfork		189
-#define __NR_ugetrlimit		190	/* SuS compliant getrlimit */
-#define __NR_readahead		191
-#ifndef __powerpc64__			/* these are 32-bit only */
-#define __NR_mmap2		192
-#define __NR_truncate64		193
-#define __NR_ftruncate64	194
-#define __NR_stat64		195
-#define __NR_lstat64		196
-#define __NR_fstat64		197
-#endif
-#define __NR_pciconfig_read	198
-#define __NR_pciconfig_write	199
-#define __NR_pciconfig_iobase	200
-#define __NR_multiplexer	201
-#define __NR_getdents64		202
-#define __NR_pivot_root		203
-#ifndef __powerpc64__
-#define __NR_fcntl64		204
-#endif
-#define __NR_madvise		205
-#define __NR_mincore		206
-#define __NR_gettid		207
-#define __NR_tkill		208
-#define __NR_setxattr		209
-#define __NR_lsetxattr		210
-#define __NR_fsetxattr		211
-#define __NR_getxattr		212
-#define __NR_lgetxattr		213
-#define __NR_fgetxattr		214
-#define __NR_listxattr		215
-#define __NR_llistxattr		216
-#define __NR_flistxattr		217
-#define __NR_removexattr	218
-#define __NR_lremovexattr	219
-#define __NR_fremovexattr	220
-#define __NR_futex		221
-#define __NR_sched_setaffinity	222
-#define __NR_sched_getaffinity	223
-/* 224 currently unused */
-#define __NR_tuxcall		225
-#ifndef __powerpc64__
-#define __NR_sendfile64		226
-#endif
-#define __NR_io_setup		227
-#define __NR_io_destroy		228
-#define __NR_io_getevents	229
-#define __NR_io_submit		230
-#define __NR_io_cancel		231
-#define __NR_set_tid_address	232
-#define __NR_fadvise64		233
-#define __NR_exit_group		234
-#define __NR_lookup_dcookie	235
-#define __NR_epoll_create	236
-#define __NR_epoll_ctl		237
-#define __NR_epoll_wait		238
-#define __NR_remap_file_pages	239
-#define __NR_timer_create	240
-#define __NR_timer_settime	241
-#define __NR_timer_gettime	242
-#define __NR_timer_getoverrun	243
-#define __NR_timer_delete	244
-#define __NR_clock_settime	245
-#define __NR_clock_gettime	246
-#define __NR_clock_getres	247
-#define __NR_clock_nanosleep	248
-#define __NR_swapcontext	249
-#define __NR_tgkill		250
-#define __NR_utimes		251
-#define __NR_statfs64		252
-#define __NR_fstatfs64		253
-#ifndef __powerpc64__
-#define __NR_fadvise64_64	254
-#endif
-#define __NR_rtas		255
-#define __NR_sys_debug_setcontext 256
-/* Number 257 is reserved for vserver */
-#define __NR_migrate_pages	258
-#define __NR_mbind		259
-#define __NR_get_mempolicy	260
-#define __NR_set_mempolicy	261
-#define __NR_mq_open		262
-#define __NR_mq_unlink		263
-#define __NR_mq_timedsend	264
-#define __NR_mq_timedreceive	265
-#define __NR_mq_notify		266
-#define __NR_mq_getsetattr	267
-#define __NR_kexec_load		268
-#define __NR_add_key		269
-#define __NR_request_key	270
-#define __NR_keyctl		271
-#define __NR_waitid		272
-#define __NR_ioprio_set		273
-#define __NR_ioprio_get		274
-#define __NR_inotify_init	275
-#define __NR_inotify_add_watch	276
-#define __NR_inotify_rm_watch	277
-#define __NR_spu_run		278
-#define __NR_spu_create		279
-#define __NR_pselect6		280
-#define __NR_ppoll		281
-#define __NR_unshare		282
-#define __NR_splice		283
-#define __NR_tee		284
-#define __NR_vmsplice		285
-#define __NR_openat		286
-#define __NR_mkdirat		287
-#define __NR_mknodat		288
-#define __NR_fchownat		289
-#define __NR_futimesat		290
-#ifdef __powerpc64__
-#define __NR_newfstatat		291
+#ifdef CONFIG_PPC64
+#include <asm/unistd_64.h>
 #else
-#define __NR_fstatat64		291
+#include <asm/unistd_32.h>
 #endif
-#define __NR_unlinkat		292
-#define __NR_renameat		293
-#define __NR_linkat		294
-#define __NR_symlinkat		295
-#define __NR_readlinkat		296
-#define __NR_fchmodat		297
-#define __NR_faccessat		298
-#define __NR_get_robust_list	299
-#define __NR_set_robust_list	300
-#define __NR_move_pages		301
-#define __NR_getcpu		302
-#define __NR_epoll_pwait	303
-#define __NR_utimensat		304
-#define __NR_signalfd		305
-#define __NR_timerfd_create	306
-#define __NR_eventfd		307
-#define __NR_sync_file_range2	308
-#define __NR_fallocate		309
-#define __NR_subpage_prot	310
-#define __NR_timerfd_settime	311
-#define __NR_timerfd_gettime	312
-#define __NR_signalfd4		313
-#define __NR_eventfd2		314
-#define __NR_epoll_create1	315
-#define __NR_dup3		316
-#define __NR_pipe2		317
-#define __NR_inotify_init1	318
-#define __NR_perf_event_open	319
-#define __NR_preadv		320
-#define __NR_pwritev		321
-#define __NR_rt_tgsigqueueinfo	322
-#define __NR_fanotify_init	323
-#define __NR_fanotify_mark	324
-#define __NR_prlimit64		325
-#define __NR_socket		326
-#define __NR_bind		327
-#define __NR_connect		328
-#define __NR_listen		329
-#define __NR_accept		330
-#define __NR_getsockname	331
-#define __NR_getpeername	332
-#define __NR_socketpair		333
-#define __NR_send		334
-#define __NR_sendto		335
-#define __NR_recv		336
-#define __NR_recvfrom		337
-#define __NR_shutdown		338
-#define __NR_setsockopt		339
-#define __NR_getsockopt		340
-#define __NR_sendmsg		341
-#define __NR_recvmsg		342
-#define __NR_recvmmsg		343
-#define __NR_accept4		344
-#define __NR_name_to_handle_at	345
-#define __NR_open_by_handle_at	346
-#define __NR_clock_adjtime	347
-#define __NR_syncfs		348
-#define __NR_sendmmsg		349
-#define __NR_setns		350
-#define __NR_process_vm_readv	351
-#define __NR_process_vm_writev	352
-#define __NR_finit_module	353
-#define __NR_kcmp		354
-#define __NR_sched_setattr	355
-#define __NR_sched_getattr	356
-#define __NR_renameat2		357
-#define __NR_seccomp		358
-#define __NR_getrandom		359
-#define __NR_memfd_create	360
-#define __NR_bpf		361
-#define __NR_execveat		362
-#define __NR_switch_endian	363
-#define __NR_userfaultfd	364
-#define __NR_membarrier		365
-#define __NR_mlock2		378
-#define __NR_copy_file_range	379
-#define __NR_preadv2		380
-#define __NR_pwritev2		381
-#define __NR_kexec_file_load	382
-#define __NR_statx		383
-#define __NR_pkey_alloc		384
-#define __NR_pkey_free		385
-#define __NR_pkey_mprotect	386
-#define __NR_rseq		387
-#define __NR_io_pgetevents	388
-
-#define __NR_syscalls           389
 
 #endif /* _UAPI_ASM_POWERPC_UNISTD_H_ */
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 3b66f2c..1179c28 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -30,7 +30,8 @@ endif
 
 obj-y				:= cputable.o ptrace.o syscalls.o \
 				   irq.o align.o signal_32.o pmc.o vdso.o \
-				   process.o systbl.o idle.o \
+				   process.o syscall_table_32.o \
+				   syscall_table_64.o idle.o \
 				   signal.o sysfs.o cacheinfo.o time.o \
 				   prom.o traps.o setup-common.o \
 				   udbg.o misc.o io.o dma.o misc_$(BITS).o \
diff --git a/arch/powerpc/kernel/syscall_table_32.S b/arch/powerpc/kernel/syscall_table_32.S
new file mode 100644
index 0000000..d2635eb
--- /dev/null
+++ b/arch/powerpc/kernel/syscall_table_32.S
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#define __SYSCALL(nr, entry, nargs) .long entry
+
+.section .rodata,"a"
+.globl sys_call_table
+sys_call_table:	
+#include <asm/syscall_table_32.h>
+
diff --git a/arch/powerpc/kernel/syscall_table_64.S b/arch/powerpc/kernel/syscall_table_64.S
new file mode 100644
index 0000000..d251280
--- /dev/null
+++ b/arch/powerpc/kernel/syscall_table_64.S
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#if defined(CONFIG_PPC64) && defined(CONFIG_COMPAT)
+#define __SYSCALL(nr, entry, nargs) .8byte entry
+.section .rodata,"a"
+.p2align
+.globl sys_call_table32
+sys_call_table32:
+#include <asm/syscall_table_c32.h>
+#elif defined(CONFIG_PPC64) && !defined(CONFIG_COMPAT)
+#define __SYSCALL(nr, entry, nargs) .8byte entry
+.section .rodata,"a"
+.p2align
+.globl sys_call_table64
+sys_call_table64:
+#include <asm/syscall_table_64.h>
+#endif
diff --git a/arch/powerpc/kernel/systbl.S b/arch/powerpc/kernel/systbl.S
deleted file mode 100644
index 919a327..0000000
--- a/arch/powerpc/kernel/systbl.S
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * This file contains the table of syscall-handling functions.
- *    Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
- *
- * Largely rewritten by Cort Dougan (cort@cs.nmt.edu)
- * and Paul Mackerras.
- *
- * Adapted for iSeries by Mike Corrigan (mikejc@us.ibm.com)
- * PPC64 updates by Dave Engebretsen (engebret@us.ibm.com) 
- * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#include <asm/ppc_asm.h>
-
-#ifdef CONFIG_PPC64
-#define SYSCALL(func)		.8byte	DOTSYM(sys_##func),DOTSYM(sys_##func)
-#define COMPAT_SYS(func)	.8byte	DOTSYM(sys_##func),DOTSYM(compat_sys_##func)
-#define PPC_SYS(func)		.8byte	DOTSYM(ppc_##func),DOTSYM(ppc_##func)
-#define OLDSYS(func)		.8byte	DOTSYM(sys_ni_syscall),DOTSYM(sys_ni_syscall)
-#define SYS32ONLY(func)		.8byte	DOTSYM(sys_ni_syscall),DOTSYM(compat_sys_##func)
-#define PPC64ONLY(func)		.8byte	DOTSYM(ppc_##func),DOTSYM(sys_ni_syscall)
-#define SYSX(f, f3264, f32)	.8byte	DOTSYM(f),DOTSYM(f3264)
-#else
-#define SYSCALL(func)		.long	sys_##func
-#define COMPAT_SYS(func)	.long	sys_##func
-#define PPC_SYS(func)		.long	ppc_##func
-#define OLDSYS(func)		.long	sys_##func
-#define SYS32ONLY(func)		.long	sys_##func
-#define PPC64ONLY(func)		.long	sys_ni_syscall
-#define SYSX(f, f3264, f32)	.long	f32
-#endif
-#define SYSCALL_SPU(func)	SYSCALL(func)
-#define COMPAT_SYS_SPU(func)	COMPAT_SYS(func)
-#define COMPAT_SPU_NEW(func)	COMPAT_SYS(func)
-#define SYSX_SPU(f, f3264, f32)	SYSX(f, f3264, f32)
-
-.section .rodata,"a"
-
-#ifdef CONFIG_PPC64
-	.p2align	3
-#endif
-
-.globl sys_call_table
-sys_call_table:
-
-#include <asm/systbl.h>
-- 
1.9.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] powerpc: Add system call table generation support
  2018-09-14  8:32 ` [PATCH 2/3] powerpc: Add system call table generation support Firoz Khan
@ 2018-09-14 10:01   ` Arnd Bergmann
  2018-09-18 12:15     ` Firoz Khan
  0 siblings, 1 reply; 10+ messages in thread
From: Arnd Bergmann @ 2018-09-14 10:01 UTC (permalink / raw)
  To: Firoz Khan
  Cc: linuxppc-dev, Benjamin Herrenschmidt, Paul Mackerras,
	Michael Ellerman, linuxram, leitao, Boqun Feng, gregkh,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart,
	y2038 Mailman List, Linux Kernel Mailing List, linux-arch,
	Deepa Dinamani, Marcin Juszkiewicz

On Fri, Sep 14, 2018 at 10:33 AM Firoz Khan <firoz.khan@linaro.org> wrote:

> ---
>  arch/powerpc/kernel/syscalls/Makefile       |  51 ++++
>  arch/powerpc/kernel/syscalls/syscall_32.tbl | 378 ++++++++++++++++++++++++++++
>  arch/powerpc/kernel/syscalls/syscall_64.tbl | 372 +++++++++++++++++++++++++++
>  arch/powerpc/kernel/syscalls/syscallhdr.sh  |  37 +++
>  arch/powerpc/kernel/syscalls/syscalltbl.sh  |  38 +++

I think you should only need a single .tbl  input file here.


> +
> +systbl_abi_syscall_table_32 := 32
> +$(out)/syscall_table_32.h: $(syscall32) $(systbl)
> +       $(call if_changed,systbl)
> +
> +systbl_abi_syscall_table_64 := 64
> +$(out)/syscall_table_64.h: $(syscall64) $(systbl)
> +       $(call if_changed,systbl)
> +
> +systbl_abi_syscall_table_c32 := c32
> +$(out)/syscall_table_c32.h: $(syscall32) $(systbl)
> +       $(call if_changed,systbl)

And here you need a fourth output file for the SPU table on ppc64.

> +383     common  statx                           sys_statx
> +384     common  pkey_alloc                      sys_pkey_alloc
> +385     common  pkey_free                       sys_pkey_free
> +386     common  pkey_mprotect                   sys_pkey_mprotect

This also misses rseq and io_pgetevents.

       Arnd

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] powerpc: Add system call table generation support
  2018-09-14 10:01   ` Arnd Bergmann
@ 2018-09-18 12:15     ` Firoz Khan
  2018-09-24 20:59       ` Arnd Bergmann
  0 siblings, 1 reply; 10+ messages in thread
From: Firoz Khan @ 2018-09-18 12:15 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linuxppc-dev, Benjamin Herrenschmidt, Paul Mackerras,
	Michael Ellerman, Ram Pai, Breno Leitao, Boqun Feng, gregkh,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart,
	y2038 Mailman List, Linux Kernel Mailing List, linux-arch,
	Deepa Dinamani, Marcin Juszkiewicz

On 14 September 2018 at 15:31, Arnd Bergmann <arnd@arndb.de> wrote:
> On Fri, Sep 14, 2018 at 10:33 AM Firoz Khan <firoz.khan@linaro.org> wrote:
>
>> ---
>>  arch/powerpc/kernel/syscalls/Makefile       |  51 ++++
>>  arch/powerpc/kernel/syscalls/syscall_32.tbl | 378 ++++++++++++++++++++++++++++
>>  arch/powerpc/kernel/syscalls/syscall_64.tbl | 372 +++++++++++++++++++++++++++
>>  arch/powerpc/kernel/syscalls/syscallhdr.sh  |  37 +++
>>  arch/powerpc/kernel/syscalls/syscalltbl.sh  |  38 +++
>
> I think you should only need a single .tbl  input file here.

Yes, we can do that way also.As I mentioned, it will add
more complexity in the script.

 The script has to be smart enough to parse the
.tbl if we add more thing in the .tble file. It need more
logic in the scripts. This is not common. So if you keep
separate .tbl we can avoid this.

ABI flag is serving *nothing* in all other architecture including
SPARC.

But as I told in the cover letter, I followed x86/arm/
s390 architecture's system table generation implementation.
They are keeping ABI flag. In our case we can delete this
flag completely from all architectures.

Most of the architecture these 32/64 similarity is absent.
So it would be better keep separate files to maintain a
generic script across all architecture.

>
>
>> +
>> +systbl_abi_syscall_table_32 := 32
>> +$(out)/syscall_table_32.h: $(syscall32) $(systbl)
>> +       $(call if_changed,systbl)
>> +
>> +systbl_abi_syscall_table_64 := 64
>> +$(out)/syscall_table_64.h: $(syscall64) $(systbl)
>> +       $(call if_changed,systbl)
>> +
>> +systbl_abi_syscall_table_c32 := c32
>> +$(out)/syscall_table_c32.h: $(syscall32) $(systbl)
>> +       $(call if_changed,systbl)
>
> And here you need a fourth output file for the SPU table on ppc64.

Hmm. Let me have a look where things went wrong.

>
>> +383     common  statx                           sys_statx
>> +384     common  pkey_alloc                      sys_pkey_alloc
>> +385     common  pkey_free                       sys_pkey_free
>> +386     common  pkey_mprotect                   sys_pkey_mprotect
>
> This also misses rseq and io_pgetevents.

As I mentioned in the cover letter:
"I started working system call table generation on 4.17-rc1. I used
marcin's script - https://github.com/hrw/syscalls-table to generate
the syscall.tbl file. And this will be the input to the system call
table generation script. But there are couple system call got add
in the latest rc release. If run Marcin's script on latest release,
It will generate a new syscall.tbl. But I still use the old file -
syscall.tbl and once all review got over I'll update syscall.tbl
alone w.r.to the tip of the kernel. The impact of this thing, few
of the system call won't work."

Hopefully, the next version does have this change. Thanks!

- Firoz

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] powerpc: Add system call table generation support
  2018-09-18 12:15     ` Firoz Khan
@ 2018-09-24 20:59       ` Arnd Bergmann
  2018-09-25  0:48         ` Michael Ellerman
  0 siblings, 1 reply; 10+ messages in thread
From: Arnd Bergmann @ 2018-09-24 20:59 UTC (permalink / raw)
  To: Firoz Khan
  Cc: linuxppc-dev, Benjamin Herrenschmidt, Paul Mackerras,
	Michael Ellerman, linuxram, leitao, Boqun Feng, gregkh,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart,
	y2038 Mailman List, Linux Kernel Mailing List, linux-arch,
	Deepa Dinamani, Marcin Juszkiewicz

On Tue, Sep 18, 2018 at 2:15 PM Firoz Khan <firoz.khan@linaro.org> wrote:
>
> On 14 September 2018 at 15:31, Arnd Bergmann <arnd@arndb.de> wrote:
> > On Fri, Sep 14, 2018 at 10:33 AM Firoz Khan <firoz.khan@linaro.org> wrote:
> >
> >> ---
> >>  arch/powerpc/kernel/syscalls/Makefile       |  51 ++++
> >>  arch/powerpc/kernel/syscalls/syscall_32.tbl | 378 ++++++++++++++++++++++++++++
> >>  arch/powerpc/kernel/syscalls/syscall_64.tbl | 372 +++++++++++++++++++++++++++
> >>  arch/powerpc/kernel/syscalls/syscallhdr.sh  |  37 +++
> >>  arch/powerpc/kernel/syscalls/syscalltbl.sh  |  38 +++
> >
> > I think you should only need a single .tbl  input file here.
>
> Yes, we can do that way also.As I mentioned, it will add
> more complexity in the script.
>
>  The script has to be smart enough to parse the
> .tbl if we add more thing in the .tble file. It need more
> logic in the scripts. This is not common. So if you keep
> separate .tbl we can avoid this.

But all three existing architectures (x86, s390 and arm) already
have the capability to parse the table and generate different output
from that.

> ABI flag is serving *nothing* in all other architecture including
> SPARC.

If you don't use it in sparc, I think that's a bug, see e.g.

#ifdef __32bit_syscall_numbers__
#define __NR_setresuid32        108 /* Linux Specific, sigvec under
SunOS          */
#else
#define __NR_setresuid          108 /* Linux Specific, sigvec under
SunOS          */
#endif

> But as I told in the cover letter, I followed x86/arm/
> s390 architecture's system table generation implementation.
> They are keeping ABI flag. In our case we can delete this
> flag completely from all architectures.
>
> Most of the architecture these 32/64 similarity is absent.
> So it would be better keep separate files to maintain a
> generic script across all architecture.

There are a couple of architectures that definitely need it:
ARM for oabi, x86 for x32, s390, parisc and sparc for compat,
asm-generic for compat, powerpc for compat and spu,
and arm64 if we want to share the arm32 syscall table
for compat mode later.

      Arnd

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] powerpc: Add system call table generation support
  2018-09-24 20:59       ` Arnd Bergmann
@ 2018-09-25  0:48         ` Michael Ellerman
  2018-09-25  6:00           ` Arnd Bergmann
  0 siblings, 1 reply; 10+ messages in thread
From: Michael Ellerman @ 2018-09-25  0:48 UTC (permalink / raw)
  To: Arnd Bergmann, Firoz Khan
  Cc: linuxppc-dev, Benjamin Herrenschmidt, Paul Mackerras, linuxram,
	leitao, Boqun Feng, gregkh, Philippe Ombredanne, Thomas Gleixner,
	Kate Stewart, y2038 Mailman List, Linux Kernel Mailing List,
	linux-arch, Deepa Dinamani, Marcin Juszkiewicz

Arnd Bergmann <arnd@arndb.de> writes:
> On Tue, Sep 18, 2018 at 2:15 PM Firoz Khan <firoz.khan@linaro.org> wrote:
>> On 14 September 2018 at 15:31, Arnd Bergmann <arnd@arndb.de> wrote:
>> > On Fri, Sep 14, 2018 at 10:33 AM Firoz Khan <firoz.khan@linaro.org> wrote:
>> >
>> >> ---
>> >>  arch/powerpc/kernel/syscalls/Makefile       |  51 ++++
>> >>  arch/powerpc/kernel/syscalls/syscall_32.tbl | 378 ++++++++++++++++++++++++++++
>> >>  arch/powerpc/kernel/syscalls/syscall_64.tbl | 372 +++++++++++++++++++++++++++
>> >>  arch/powerpc/kernel/syscalls/syscallhdr.sh  |  37 +++
>> >>  arch/powerpc/kernel/syscalls/syscalltbl.sh  |  38 +++
>> >
>> > I think you should only need a single .tbl  input file here.
>>
>> Yes, we can do that way also.As I mentioned, it will add
>> more complexity in the script.
>>
>>  The script has to be smart enough to parse the
>> .tbl if we add more thing in the .tble file. It need more
>> logic in the scripts. This is not common. So if you keep
>> separate .tbl we can avoid this.
>
> But all three existing architectures (x86, s390 and arm) already
> have the capability to parse the table and generate different output
> from that.

Yeah, we want that on powerpc too.

If the script needs to be more complex that's fine, if it can't be
shared across arches that's fine, the main thing for me is that wiring
up a syscall can be done by adding a single line in a single file.

cheers

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] powerpc: Add system call table generation support
  2018-09-25  0:48         ` Michael Ellerman
@ 2018-09-25  6:00           ` Arnd Bergmann
  2018-09-25 12:25             ` Michael Ellerman
  0 siblings, 1 reply; 10+ messages in thread
From: Arnd Bergmann @ 2018-09-25  6:00 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Firoz Khan, linuxppc-dev, Benjamin Herrenschmidt, Paul Mackerras,
	linuxram, leitao, Boqun Feng, gregkh, Philippe Ombredanne,
	Thomas Gleixner, Kate Stewart, y2038 Mailman List,
	Linux Kernel Mailing List, linux-arch, Deepa Dinamani,
	Marcin Juszkiewicz

On Tue, Sep 25, 2018 at 2:48 AM Michael Ellerman <mpe@ellerman.id.au> wrote:
> Arnd Bergmann <arnd@arndb.de> writes:
> > On Tue, Sep 18, 2018 at 2:15 PM Firoz Khan <firoz.khan@linaro.org> wrote:
> >> On 14 September 2018 at 15:31, Arnd Bergmann <arnd@arndb.de> wrote:
> >> > On Fri, Sep 14, 2018 at 10:33 AM Firoz Khan <firoz.khan@linaro.org> wrote:
> >
> > But all three existing architectures (x86, s390 and arm) already
> > have the capability to parse the table and generate different output
> > from that.
>
> Yeah, we want that on powerpc too.
>
> If the script needs to be more complex that's fine, if it can't be
> shared across arches that's fine, the main thing for me is that wiring
> up a syscall can be done by adding a single line in a single file.

Yes, that's definitely the idea, we want to make it easier for everyone.
We need at least a special case for mips, which needs three separate
input files (the tables are completely different) to generate four versions
of the output, plus a future extension to use the generic table for their
new one.

For powerpc, I'm hoping that both the table format and script can be
completely generic and not need a special case that is different
from the others, but if we need some extra magic to handle the SPU
syscalls, we can still do that with a private script.

      Arnd

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] powerpc: Add system call table generation support
  2018-09-25  6:00           ` Arnd Bergmann
@ 2018-09-25 12:25             ` Michael Ellerman
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Ellerman @ 2018-09-25 12:25 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Firoz Khan, linuxppc-dev, Benjamin Herrenschmidt, Paul Mackerras,
	linuxram, leitao, Boqun Feng, gregkh, Philippe Ombredanne,
	Thomas Gleixner, Kate Stewart, y2038 Mailman List,
	Linux Kernel Mailing List, linux-arch, Deepa Dinamani,
	Marcin Juszkiewicz

Arnd Bergmann <arnd@arndb.de> writes:
> On Tue, Sep 25, 2018 at 2:48 AM Michael Ellerman <mpe@ellerman.id.au> wrote:
>> Arnd Bergmann <arnd@arndb.de> writes:
>> > On Tue, Sep 18, 2018 at 2:15 PM Firoz Khan <firoz.khan@linaro.org> wrote:
>> >> On 14 September 2018 at 15:31, Arnd Bergmann <arnd@arndb.de> wrote:
>> >> > On Fri, Sep 14, 2018 at 10:33 AM Firoz Khan <firoz.khan@linaro.org> wrote:
>> >
>> > But all three existing architectures (x86, s390 and arm) already
>> > have the capability to parse the table and generate different output
>> > from that.
>>
>> Yeah, we want that on powerpc too.
>>
>> If the script needs to be more complex that's fine, if it can't be
>> shared across arches that's fine, the main thing for me is that wiring
>> up a syscall can be done by adding a single line in a single file.
>
> Yes, that's definitely the idea, we want to make it easier for everyone.
> We need at least a special case for mips, which needs three separate
> input files (the tables are completely different) to generate four versions
> of the output, plus a future extension to use the generic table for their
> new one.
>
> For powerpc, I'm hoping that both the table format and script can be
> completely generic and not need a special case that is different
> from the others, but if we need some extra magic to handle the SPU
> syscalls, we can still do that with a private script.

Sounds good.

cheers

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, back to index

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-14  8:32 [PATCH 0/3] System call table generation support Firoz Khan
2018-09-14  8:32 ` [PATCH 1/3] powerpc: Replace NR_syscalls macro from asm/unistd.h Firoz Khan
2018-09-14  8:32 ` [PATCH 2/3] powerpc: Add system call table generation support Firoz Khan
2018-09-14 10:01   ` Arnd Bergmann
2018-09-18 12:15     ` Firoz Khan
2018-09-24 20:59       ` Arnd Bergmann
2018-09-25  0:48         ` Michael Ellerman
2018-09-25  6:00           ` Arnd Bergmann
2018-09-25 12:25             ` Michael Ellerman
2018-09-14  8:33 ` [PATCH 3/3] powerpc: uapi header and system call table file generation Firoz Khan

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org linux-kernel@archiver.kernel.org
	public-inbox-index lkml


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/ public-inbox