linux/arch/loongarch/vdso
Tiezhu Yang aa5e65dc08 LoongArch: Add support to clone a time namespace
We can see that "Time namespaces are not supported" on LoongArch:

(1) clone3 test
  # cd tools/testing/selftests/clone3 && make && ./clone3
  ...
  # Time namespaces are not supported
  ok 18 # SKIP Skipping clone3() with CLONE_NEWTIME
  # Totals: pass:17 fail:0 xfail:0 xpass:0 skip:1 error:0

(2) timens test
  # cd tools/testing/selftests/timens && make && ./timens
  ...
  1..0 # SKIP Time namespaces are not supported

On LoongArch the current kernel does not support CONFIG_TIME_NS which
depends on GENERIC_VDSO_TIME_NS, select GENERIC_VDSO_TIME_NS to enable
CONFIG_TIME_NS to build kernel/time/namespace.c.

Additionally, it needs to define some arch-dependent functions for the
timens, such as __arch_get_timens_vdso_data(), arch_get_vdso_data() and
vdso_join_timens().

At the same time, modify the layout of vvar to use one page size for
generic vdso data, expand another page size for timens vdso data and
assign LOONGARCH_VDSO_DATA_SIZE (maybe exceeds a page size if expand in
the future) for loongarch vdso data, at last add the callback function
vvar_fault() and modify stack_top().

With this patch under CONFIG_TIME_NS:

(1) clone3 test
  # cd tools/testing/selftests/clone3 && make && ./clone3
  ...
  ok 18 [739] Result (0) matches expectation (0)
  # Totals: pass:18 fail:0 xfail:0 xpass:0 skip:0 error:0

(2) timens test
  # cd tools/testing/selftests/timens && make && ./timens
  ...
  # Totals: pass:10 fail:0 xfail:0 xpass:0 skip:0 error:0

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2023-06-29 20:58:43 +08:00
..
.gitignore
elf.S LoongArch: Add VDSO and VSYSCALL support 2022-06-03 20:09:28 +08:00
gen_vdso_offsets.sh LoongArch: Add VDSO and VSYSCALL support 2022-06-03 20:09:28 +08:00
Makefile LoongArch: vDSO: Use CLANG_FLAGS instead of filtering out '--target=' 2023-06-29 20:58:43 +08:00
sigreturn.S LoongArch: Add VDSO and VSYSCALL support 2022-06-03 20:09:28 +08:00
vdso.lds.S LoongArch: Add vDSO syscall __vdso_getcpu() 2022-08-12 13:10:11 +08:00
vdso.S LoongArch: Add VDSO and VSYSCALL support 2022-06-03 20:09:28 +08:00
vgetcpu.c LoongArch: Add support to clone a time namespace 2023-06-29 20:58:43 +08:00
vgettimeofday.c LoongArch: Fix build warnings in VDSO 2022-08-25 19:34:59 +08:00