mbox series

[v2,0/2] powerpc: Add support for system call vectored

Message ID 20201203171528.83180-1-msc@linux.ibm.com
Headers show
Series powerpc: Add support for system call vectored | expand

Message

Matheus Castanho Dec. 3, 2020, 5:15 p.m. UTC
This patchset enables the usage of system call vectored (scv) instruction by
system calls for improved performance on POWER9 and later processors.

This new version dropped the patch to move brk to a C-based implementation, in
favor of Adhemerval's patch [0]. So it should be applied on top of that.

Also, it modified the scv check mechanism to remove the thread pointer check as
suggested by Florian. Now the dynamic loader always uses sc, static code still
checks the thread pointer before accessing the TCB, and shared code (outside the
dl) accesses the TCB directly.

Please check each patch for more details, specially 1/2 which explains the
rationale and details of the runtime mechanism to choose between the old
behavior (sc) and the new one (scv 0).

Tested on powerpc, powerpc64, and powerpc64le (with and without scv)

[0] https://sourceware.org/pipermail/libc-alpha/2020-November/119770.html

---

v2:
  - Fix typos and comments to match GNU style
  - Remove the check for the thread pointer on shared code, and always use sc
    when inside the dynamic loader
  - Drop the patch implementing brk in C

Matheus Castanho (2):
  powerpc: Runtime selection between sc and scv for syscalls
  powerpc: Use scv instruction on clone when available

 sysdeps/powerpc/powerpc32/sysdep.h            |  15 ++-
 sysdeps/powerpc/powerpc64/sysdep.h            | 120 +++++++++++++++++-
 .../unix/sysv/linux/powerpc/powerpc64/clone.S |  36 +++++-
 .../unix/sysv/linux/powerpc/powerpc64/vfork.S |   6 +-
 sysdeps/unix/sysv/linux/powerpc/syscall.S     |  11 +-
 sysdeps/unix/sysv/linux/powerpc/sysdep.h      |  93 ++++++++++----
 6 files changed, 241 insertions(+), 40 deletions(-)

--
2.26.2

Comments

Lucas A. M. Magalhaes Dec. 8, 2020, 6:24 p.m. UTC | #1
Hi Matheus,
Worked on top of Adhemerval's brk patch. But it fails if applied
directly on master.

Tested on a POWER9 with and without scv support.

Tested-by: Lucas A. M. Magalhães <lamm@linux.ibm.com>

Quoting Matheus Castanho via Libc-alpha (2020-12-03 14:15:26)
> This patchset enables the usage of system call vectored (scv) instruction by
> system calls for improved performance on POWER9 and later processors.
> 
> This new version dropped the patch to move brk to a C-based implementation, in
> favor of Adhemerval's patch [0]. So it should be applied on top of that.
> 
> Also, it modified the scv check mechanism to remove the thread pointer check as
> suggested by Florian. Now the dynamic loader always uses sc, static code still
> checks the thread pointer before accessing the TCB, and shared code (outside the
> dl) accesses the TCB directly.
> 
> Please check each patch for more details, specially 1/2 which explains the
> rationale and details of the runtime mechanism to choose between the old
> behavior (sc) and the new one (scv 0).
> 
> Tested on powerpc, powerpc64, and powerpc64le (with and without scv)
> 
> [0] https://sourceware.org/pipermail/libc-alpha/2020-November/119770.html
> 
> ---
> 
> v2:
>   - Fix typos and comments to match GNU style
>   - Remove the check for the thread pointer on shared code, and always use sc
>     when inside the dynamic loader
>   - Drop the patch implementing brk in C
> 
> Matheus Castanho (2):
>   powerpc: Runtime selection between sc and scv for syscalls
>   powerpc: Use scv instruction on clone when available
> 
>  sysdeps/powerpc/powerpc32/sysdep.h            |  15 ++-
>  sysdeps/powerpc/powerpc64/sysdep.h            | 120 +++++++++++++++++-
>  .../unix/sysv/linux/powerpc/powerpc64/clone.S |  36 +++++-
>  .../unix/sysv/linux/powerpc/powerpc64/vfork.S |   6 +-
>  sysdeps/unix/sysv/linux/powerpc/syscall.S     |  11 +-
>  sysdeps/unix/sysv/linux/powerpc/sysdep.h      |  93 ++++++++++----
>  6 files changed, 241 insertions(+), 40 deletions(-)
> 
> --
> 2.26.2