2019-01-02 16:35:13

by Firoz Khan

[permalink] [raw]
Subject: [PATCH 0/2] m68k: Unify the system call scripts

System call table generation support is provided for
alpha, ia64, m68k, microblaze, mips, parisc, powerpc,
sh, sparc and xtensa architectures. The implementat-
ions are almost similar across all the above archte-
ctures. In order to reduce the source code across all
the above architectures, create common ".sh" files and
keep it in the common directory, script/. This will
be a generic scripts which can use for all the above
architectures.

This patch depends on;
https://lore.kernel.org/lkml/[email protected]/

Firoz Khan (2):
m68k: remove nargs from __SYSCALL
m68k: generate uapi header and syscall table header files

arch/m68k/kernel/syscalls/Makefile | 11 ++++++++--
arch/m68k/kernel/syscalls/syscallhdr.sh | 36 ---------------------------------
arch/m68k/kernel/syscalls/syscalltbl.sh | 32 -----------------------------
arch/m68k/kernel/syscalltable.S | 2 +-
4 files changed, 10 insertions(+), 71 deletions(-)
delete mode 100644 arch/m68k/kernel/syscalls/syscallhdr.sh
delete mode 100644 arch/m68k/kernel/syscalls/syscalltbl.sh

--
1.9.1



2019-01-02 16:56:06

by Firoz Khan

[permalink] [raw]
Subject: [PATCH 1/2] m68k: remove nargs from __SYSCALL

The __SYSCALL macro's arguments are system call number,
system call entry name and number of arguments for the
system call.

Argument- nargs in __SYSCALL(nr, entry, nargs) is neither
calculated nor used anywhere. So it would be better to
keep the implementaion as __SYSCALL(nr, entry). This will
unifies the implementation with some other architetures
too.

Signed-off-by: Firoz Khan <[email protected]>
---
arch/m68k/kernel/syscalls/syscalltbl.sh | 4 ++--
arch/m68k/kernel/syscalltable.S | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/m68k/kernel/syscalls/syscalltbl.sh b/arch/m68k/kernel/syscalls/syscalltbl.sh
index 85d78d9..904b8e6 100644
--- a/arch/m68k/kernel/syscalls/syscalltbl.sh
+++ b/arch/m68k/kernel/syscalls/syscalltbl.sh
@@ -13,10 +13,10 @@ emit() {
t_entry="$3"

while [ $t_nxt -lt $t_nr ]; do
- printf "__SYSCALL(%s, sys_ni_syscall, )\n" "${t_nxt}"
+ printf "__SYSCALL(%s,sys_ni_syscall)\n" "${t_nxt}"
t_nxt=$((t_nxt+1))
done
- printf "__SYSCALL(%s, %s, )\n" "${t_nxt}" "${t_entry}"
+ printf "__SYSCALL(%s,%s)\n" "${t_nxt}" "${t_entry}"
}

grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
diff --git a/arch/m68k/kernel/syscalltable.S b/arch/m68k/kernel/syscalltable.S
index d329cc7..0082664 100644
--- a/arch/m68k/kernel/syscalltable.S
+++ b/arch/m68k/kernel/syscalltable.S
@@ -18,7 +18,7 @@
#define sys_mmap2 sys_mmap_pgoff
#endif

-#define __SYSCALL(nr, entry, nargs) .long entry
+#define __SYSCALL(nr, entry) .long entry
.section .rodata
ALIGN
ENTRY(sys_call_table)
--
1.9.1


2019-01-02 17:00:39

by Firoz Khan

[permalink] [raw]
Subject: [PATCH 2/2] m68k: generate uapi header and syscall table header files

Unified system call table generation script must be run to
generate unistd_32.h and syscall_table.h files. This patch
will have changes which will invokes the script.

This patch will generate unistd_32.h and syscall_table.h
files by the syscall table generation script invoked by
m68k/Makefile and the generated files against the removed
files must be identical.

The generated uapi header file will be included in uapi/-
asm/unistd.h and generated system call table header file
will be included by kernel/syscalltable.S file.

Signed-off-by: Firoz Khan <[email protected]>
---
arch/m68k/kernel/syscalls/Makefile | 11 ++++++++--
arch/m68k/kernel/syscalls/syscallhdr.sh | 36 ---------------------------------
arch/m68k/kernel/syscalls/syscalltbl.sh | 32 -----------------------------
3 files changed, 9 insertions(+), 70 deletions(-)
delete mode 100644 arch/m68k/kernel/syscalls/syscallhdr.sh
delete mode 100644 arch/m68k/kernel/syscalls/syscalltbl.sh

diff --git a/arch/m68k/kernel/syscalls/Makefile b/arch/m68k/kernel/syscalls/Makefile
index 659faef..75c7421 100644
--- a/arch/m68k/kernel/syscalls/Makefile
+++ b/arch/m68k/kernel/syscalls/Makefile
@@ -6,8 +6,9 @@ _dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')

syscall := $(srctree)/$(src)/syscall.tbl
-syshdr := $(srctree)/$(src)/syscallhdr.sh
-systbl := $(srctree)/$(src)/syscalltbl.sh
+syshdr := $(srctree)/scripts/syscallhdr.sh
+sysnr := $(srctree)/scripts/syscallnr.sh
+systbl := $(srctree)/scripts/syscalltbl.sh

quiet_cmd_syshdr = SYSHDR $@
cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \
@@ -15,6 +16,12 @@ quiet_cmd_syshdr = SYSHDR $@
'$(syshdr_pfx_$(basetarget))' \
'$(syshdr_offset_$(basetarget))'

+quiet_cmd_sysnr = SYSNR $@
+ cmd_sysnr = $(CONFIG_SHELL) '$(sysnr)' '$<' '$@' \
+ '$(sysnr_abis_$(basetarget))' \
+ '$(sysnr_pfx_$(basetarget))' \
+ '$(sysnr_offset_$(basetarget))'
+
quiet_cmd_systbl = SYSTBL $@
cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@' \
'$(systbl_abis_$(basetarget))' \
diff --git a/arch/m68k/kernel/syscalls/syscallhdr.sh b/arch/m68k/kernel/syscalls/syscallhdr.sh
deleted file mode 100644
index 6f357d6..0000000
--- a/arch/m68k/kernel/syscalls/syscallhdr.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: GPL-2.0
-
-in="$1"
-out="$2"
-my_abis=`echo "($3)" | tr ',' '|'`
-prefix="$4"
-offset="$5"
-
-fileguard=_UAPI_ASM_M68K_`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 | (
- printf "#ifndef %s\n" "${fileguard}"
- printf "#define %s\n" "${fileguard}"
- printf "\n"
-
- nxt=0
- while read nr abi name entry ; do
- if [ -z "$offset" ]; then
- printf "#define __NR_%s%s\t%s\n" \
- "${prefix}" "${name}" "${nr}"
- else
- printf "#define __NR_%s%s\t(%s + %s)\n" \
- "${prefix}" "${name}" "${offset}" "${nr}"
- fi
- nxt=$((nr+1))
- done
-
- printf "\n"
- printf "#ifdef __KERNEL__\n"
- printf "#define __NR_syscalls\t%s\n" "${nxt}"
- printf "#endif\n"
- printf "\n"
- printf "#endif /* %s */\n" "${fileguard}"
-) > "$out"
diff --git a/arch/m68k/kernel/syscalls/syscalltbl.sh b/arch/m68k/kernel/syscalls/syscalltbl.sh
deleted file mode 100644
index 904b8e6..0000000
--- a/arch/m68k/kernel/syscalls/syscalltbl.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: GPL-2.0
-
-in="$1"
-out="$2"
-my_abis=`echo "($3)" | tr ',' '|'`
-my_abi="$4"
-offset="$5"
-
-emit() {
- t_nxt="$1"
- t_nr="$2"
- t_entry="$3"
-
- while [ $t_nxt -lt $t_nr ]; do
- printf "__SYSCALL(%s,sys_ni_syscall)\n" "${t_nxt}"
- t_nxt=$((t_nxt+1))
- done
- printf "__SYSCALL(%s,%s)\n" "${t_nxt}" "${t_entry}"
-}
-
-grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
- nxt=0
- if [ -z "$offset" ]; then
- offset=0
- fi
-
- while read nr abi name entry ; do
- emit $((nxt+offset)) $((nr+offset)) $entry
- nxt=$((nr+1))
- done
-) > "$out"
--
1.9.1


2019-01-03 04:39:28

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH 2/2] m68k: generate uapi header and syscall table header files

Hi Firoz,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on m68k/for-next]
[also build test ERROR on next-20190102]
[cannot apply to v4.20]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Firoz-Khan/m68k-remove-nargs-from-__SYSCALL/20190103-001423
base: https://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git for-next
config: m68k-multi_defconfig (attached as .config)
compiler: m68k-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.2.0 make.cross ARCH=m68k

All errors (new ones prefixed by >>):

>> make[2]: *** No rule to make target 'scripts/syscalltbl.sh', needed by 'arch/m68k/include/generated/asm/syscall_table.h'.
>> make[2]: *** No rule to make target 'scripts/syscallhdr.sh', needed by 'arch/m68k/include/generated/uapi/asm/unistd_32.h'.
make[2]: Target 'all' not remade because of errors.
make[1]: *** [archheaders] Error 2
make[1]: Target 'prepare' not remade because of errors.
make: *** [sub-make] Error 2

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation


Attachments:
(No filename) (1.46 kB)
.config.gz (13.59 kB)
Download all attachments

2019-01-03 14:44:34

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 1/2] m68k: remove nargs from __SYSCALL

Hi Firoz,

Thanks for your patch!

On Wed, Jan 2, 2019 at 4:19 PM Firoz Khan <[email protected]> wrote:
> The __SYSCALL macro's arguments are system call number,
> system call entry name and number of arguments for the

name,

> system call.
>
> Argument- nargs in __SYSCALL(nr, entry, nargs) is neither

Argument nargs

> calculated nor used anywhere. So it would be better to
> keep the implementaion as __SYSCALL(nr, entry). This will

implementation

> unifies the implementation with some other architetures

unify
architectures

> too.
>
> Signed-off-by: Firoz Khan <[email protected]>
> ---
> arch/m68k/kernel/syscalls/syscalltbl.sh | 4 ++--
> arch/m68k/kernel/syscalltable.S | 2 +-
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/m68k/kernel/syscalls/syscalltbl.sh b/arch/m68k/kernel/syscalls/syscalltbl.sh
> index 85d78d9..904b8e6 100644
> --- a/arch/m68k/kernel/syscalls/syscalltbl.sh
> +++ b/arch/m68k/kernel/syscalls/syscalltbl.sh
> @@ -13,10 +13,10 @@ emit() {
> t_entry="$3"
>
> while [ $t_nxt -lt $t_nr ]; do
> - printf "__SYSCALL(%s, sys_ni_syscall, )\n" "${t_nxt}"
> + printf "__SYSCALL(%s,sys_ni_syscall)\n" "${t_nxt}"

Please keep the space after the comma.

> t_nxt=$((t_nxt+1))
> done
> - printf "__SYSCALL(%s, %s, )\n" "${t_nxt}" "${t_entry}"
> + printf "__SYSCALL(%s,%s)\n" "${t_nxt}" "${t_entry}"

Idem ditto.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2019-01-03 14:44:39

by Firoz Khan

[permalink] [raw]
Subject: Re: [PATCH 1/2] m68k: remove nargs from __SYSCALL

Hi Geert,

Thanks for your feedback.

On Thu, 3 Jan 2019 at 16:15, Geert Uytterhoeven <[email protected]> wrote:
> >
> > while [ $t_nxt -lt $t_nr ]; do
> > - printf "__SYSCALL(%s, sys_ni_syscall, )\n" "${t_nxt}"
> > + printf "__SYSCALL(%s,sys_ni_syscall)\n" "${t_nxt}"
>
> Please keep the space after the comma.

This is intentional as I was facing some compilation issue with
one architecture (If I'm right it is powerpc) when I keep the space
after comma.

Firoz

2019-01-03 16:01:01

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 2/2] m68k: generate uapi header and syscall table header files

Hi Firoz,

Thanks for your patch!

On Wed, Jan 2, 2019 at 4:19 PM Firoz Khan <[email protected]> wrote:
> Subject: m68k: generate uapi header and syscall table header files
>
> Unified system call table generation script must be run to
> generate unistd_32.h and syscall_table.h files. This patch
> will have changes which will invokes the script.
>
> This patch will generate unistd_32.h and syscall_table.h
> files by the syscall table generation script invoked by
> m68k/Makefile and the generated files against the removed
> files must be identical.
>
> The generated uapi header file will be included in uapi/-
> asm/unistd.h and generated system call table header file
> will be included by kernel/syscalltable.S file.

This doesn't really describe what this patch is doing.
This patch switches m68k over to use the common scripts for
system call header file generation.

> Signed-off-by: Firoz Khan <[email protected]>
> ---
> arch/m68k/kernel/syscalls/Makefile | 11 ++++++++--
> arch/m68k/kernel/syscalls/syscallhdr.sh | 36 ---------------------------------
> arch/m68k/kernel/syscalls/syscalltbl.sh | 32 -----------------------------
> 3 files changed, 9 insertions(+), 70 deletions(-)
> delete mode 100644 arch/m68k/kernel/syscalls/syscallhdr.sh
> delete mode 100644 arch/m68k/kernel/syscalls/syscalltbl.sh
>
> diff --git a/arch/m68k/kernel/syscalls/Makefile b/arch/m68k/kernel/syscalls/Makefile
> index 659faef..75c7421 100644
> --- a/arch/m68k/kernel/syscalls/Makefile
> +++ b/arch/m68k/kernel/syscalls/Makefile
> @@ -6,8 +6,9 @@ _dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
> $(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
>
> syscall := $(srctree)/$(src)/syscall.tbl
> -syshdr := $(srctree)/$(src)/syscallhdr.sh
> -systbl := $(srctree)/$(src)/syscalltbl.sh
> +syshdr := $(srctree)/scripts/syscallhdr.sh
> +sysnr := $(srctree)/scripts/syscallnr.sh

What's the purpose of adding sysnr?

> +systbl := $(srctree)/scripts/syscalltbl.sh
>
> quiet_cmd_syshdr = SYSHDR $@
> cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \
> @@ -15,6 +16,12 @@ quiet_cmd_syshdr = SYSHDR $@
> '$(syshdr_pfx_$(basetarget))' \
> '$(syshdr_offset_$(basetarget))'
>
> +quiet_cmd_sysnr = SYSNR $@
> + cmd_sysnr = $(CONFIG_SHELL) '$(sysnr)' '$<' '$@' \
> + '$(sysnr_abis_$(basetarget))' \
> + '$(sysnr_pfx_$(basetarget))' \
> + '$(sysnr_offset_$(basetarget))'
> +

What's the purpose of adding this build rule, which is unused?

The patch works fine though.

I assume the common build rules will be moved to a common place later?

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2019-01-03 16:08:53

by Firoz Khan

[permalink] [raw]
Subject: Re: [PATCH 2/2] m68k: generate uapi header and syscall table header files

Hi Geert,

Thanks for your feedback!

On Thu, 3 Jan 2019 at 17:13, Geert Uytterhoeven <[email protected]> wrote:
> > The generated uapi header file will be included in uapi/-
> > asm/unistd.h and generated system call table header file
> > will be included by kernel/syscalltable.S file.
>
> This doesn't really describe what this patch is doing.
> This patch switches m68k over to use the common scripts for
> system call header file generation.

Sure. I'll compose new commit message.

> > syscall := $(srctree)/$(src)/syscall.tbl
> > -syshdr := $(srctree)/$(src)/syscallhdr.sh
> > -systbl := $(srctree)/$(src)/syscalltbl.sh
> > +syshdr := $(srctree)/scripts/syscallhdr.sh
> > +sysnr := $(srctree)/scripts/syscallnr.sh
>
> What's the purpose of adding sysnr?

Yes. This is not really required here. I planned to change the
implementation in some other way, but didn't looks perfect and
this was left here unnoticed.

> >
> > +quiet_cmd_sysnr = SYSNR $@
> > + cmd_sysnr = $(CONFIG_SHELL) '$(sysnr)' '$<' '$@' \
> > + '$(sysnr_abis_$(basetarget))' \
> > + '$(sysnr_pfx_$(basetarget))' \
> > + '$(sysnr_offset_$(basetarget))'
> > +
>
> What's the purpose of adding this build rule, which is unused?

Sure.

Firoz