• Tiezhu Yang's avatar
    LoongArch: Add support to clone a time namespace · aa5e65dc
    Tiezhu Yang authored
    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: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
    aa5e65dc
vdso.c 4.98 KB