LoongArch: vDSO: Switch to generic storage implementationThe generic storage implementation provides the same features as thecustom one. However it can be shared between architectures, makingmain
LoongArch: vDSO: Switch to generic storage implementationThe generic storage implementation provides the same features as thecustom one. However it can be shared between architectures, makingmaintenance easier.Co-developed-by: Nam Cao <[email protected]>Signed-off-by: Nam Cao <[email protected]>Signed-off-by: Thomas Weißschuh <[email protected]>Signed-off-by: Thomas Gleixner <[email protected]>Link: https://lore.kernel.org/all/[email protected]
show more ...
LoongArch: vDSO: Use vdso/datapage.h to access vDSO datavdso/datapage.h provides symbols and functions to ease the access toshared vDSO data from both the kernel and the vDSO.Make use of it to si
LoongArch: vDSO: Use vdso/datapage.h to access vDSO datavdso/datapage.h provides symbols and functions to ease the access toshared vDSO data from both the kernel and the vDSO.Make use of it to simplify the current code and also prepare for furtherchanges unifying the vDSO data storage between architectures.Signed-off-by: Thomas Weißschuh <[email protected]>Signed-off-by: Thomas Gleixner <[email protected]>Link: https://lore.kernel.org/all/[email protected]
LoongArch: vdso: Remove timekeeper includesSince the generic VDSO clock mode storage is used, this header file isunused and can be removed.This avoids including a non-VDSO header while building
LoongArch: vdso: Remove timekeeper includesSince the generic VDSO clock mode storage is used, this header file isunused and can be removed.This avoids including a non-VDSO header while building the VDSO,which can lead to compilation errors.Also drop the comment which is out of date and in the wrong place.Signed-off-by: Thomas Weißschuh <[email protected]>Signed-off-by: Thomas Gleixner <[email protected]>Link: https://lore.kernel.org/all/20241010-vdso-generic-arch_update_vsyscall-v1-8-7fe5a3ea4382@linutronix.de
LoongArch: vDSO: Wire up getrandom() vDSO implementationHook up the generic vDSO implementation to the LoongArch vDSO data pageby providing the required __arch_chacha20_blocks_nostack,__arch_get_
LoongArch: vDSO: Wire up getrandom() vDSO implementationHook up the generic vDSO implementation to the LoongArch vDSO data pageby providing the required __arch_chacha20_blocks_nostack,__arch_get_k_vdso_rng_data, and getrandom_syscall implementations. Alsowire up the selftests.Signed-off-by: Xi Ruoyao <[email protected]>Acked-by: Huacai Chen <[email protected]>Signed-off-by: Jason A. Donenfeld <[email protected]>
LoongArch: Add support to clone a time namespaceWe can see that "Time namespaces are not supported" on LoongArch:(1) clone3 test # cd tools/testing/selftests/clone3 && make && ./clone3 ...
LoongArch: Add support to clone a time namespaceWe 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 supportedOn LoongArch the current kernel does not support CONFIG_TIME_NS whichdepends on GENERIC_VDSO_TIME_NS, select GENERIC_VDSO_TIME_NS to enableCONFIG_TIME_NS to build kernel/time/namespace.c.Additionally, it needs to define some arch-dependent functions for thetimens, such as __arch_get_timens_vdso_data(), arch_get_vdso_data() andvdso_join_timens().At the same time, modify the layout of vvar to use one page size forgeneric vdso data, expand another page size for timens vdso data andassign LOONGARCH_VDSO_DATA_SIZE (maybe exceeds a page size if expand inthe future) for loongarch vdso data, at last add the callback functionvvar_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:0Signed-off-by: Tiezhu Yang <[email protected]>Signed-off-by: Huacai Chen <[email protected]>
LoongArch: Add vDSO syscall __vdso_getcpu()We test 20 million times of getcpu(), the real syscall version take 25seconds, while the vsyscall version take only 2.4 seconds.Signed-off-by: Rui Wang
LoongArch: Add vDSO syscall __vdso_getcpu()We test 20 million times of getcpu(), the real syscall version take 25seconds, while the vsyscall version take only 2.4 seconds.Signed-off-by: Rui Wang <[email protected]>Signed-off-by: Huacai Chen <[email protected]>
LoongArch: Add VDSO and VSYSCALL supportAdd VDSO and VSYSCALL support (sigreturn, gettimeofday and its friends)for LoongArch.Reviewed-by: WANG Xuerui <[email protected]>Reviewed-by: Jiaxun Yang <j
LoongArch: Add VDSO and VSYSCALL supportAdd VDSO and VSYSCALL support (sigreturn, gettimeofday and its friends)for LoongArch.Reviewed-by: WANG Xuerui <[email protected]>Reviewed-by: Jiaxun Yang <[email protected]>Signed-off-by: Huacai Chen <[email protected]>