On Fri, Mar 27, 2020 at 12:17 AM Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> wrote: > > ----- On Mar 26, 2020, at 11:49 AM, Palmer Dabbelt palmer@xxxxxxxxxxx wrote: > > > On Sun, 08 Mar 2020 22:59:52 PDT (-0700), vincent.chen@xxxxxxxxxx wrote: > >> Add support for risc-v in the rseq selftests, which covers both > >> 64-bit and 32-bit ISA with little endian mode. > >> > >> Signed-off-by: Vincent Chen <vincent.chen@xxxxxxxxxx> > >> --- > >> tools/testing/selftests/rseq/param_test.c | 23 ++ > >> tools/testing/selftests/rseq/rseq-riscv.h | 622 ++++++++++++++++++++++++++++++ > >> tools/testing/selftests/rseq/rseq.h | 2 + > >> 3 files changed, 647 insertions(+) > >> create mode 100644 tools/testing/selftests/rseq/rseq-riscv.h > > > > There are a ton of checkpatch errors in here. > > Is it just my mail client or the main issue is: > > ERROR: DOS line endings > > ? I am not sure, but I did not run into this error in my environment. > > As far as other issues are concerned, I know there are a few checkpatch > false-positives that trigger for my rseq-{$ARCH}.h header, from which rseq-riscv.h > is derived, because it has issues with extensive use of inline assembly. > > Thanks, > > Mathieu > Thank Mathieu for your explanation. The errors reported by checkpatch.pl can be categorized into two cases. The first one is "need consistent spacing around %". such as ERROR: need consistent spacing around '%' (ctx:WxV) #628: FILE: tools/testing/selftests/rseq/rseq-riscv.h:572: + RSEQ_ASM_DEFINE_EXIT_POINT(2f, %l[error2]) where RSEQ_ASM_DEFINE_EXIT_POINT is defined as below #define RSEQ_ASM_DEFINE_EXIT_POINT(start_ip, exit_ip) \ ".pushsection __rseq_exit_point_array, \"aw\"\n" \ ".quad " __rseq_str(start_ip) ", " __rseq_str(exit_ip) "\n" \ ".popsection\n" These errors were mainly found in the rseq-riscv.h. As Mathieu mentioned, the RSEQ_ASM_DEFINE_EXIT_POINT macro is used in the inline assembly, which the second argument %l[error2] indicates the error2 is a label and it locates outside of the inline assembly. To obey the syntax, I cannot add a space after % to fix this bug. The second kind of error is "Macros with complex values should be enclosed in parentheses" such as ERROR: Macros with complex values should be enclosed in parentheses #27: FILE: tools/testing/selftests/rseq/param_test.c:210: +#define RSEQ_INJECT_INPUT \ + , [loop_cnt_1]"m"(loop_cnt[1]) \ + , [loop_cnt_2]"m"(loop_cnt[2]) \ + , [loop_cnt_3]"m"(loop_cnt[3]) \ + , [loop_cnt_4]"m"(loop_cnt[4]) \ + , [loop_cnt_5]"m"(loop_cnt[5]) \ + , [loop_cnt_6]"m"(loop_cnt[6]) In this case, it was a input operand list of inline assembly, so I could not add parentheses to enclose them. Except for these two kinds of error, there are two erros could be solved by adding parentheses. I also checked it and I think it would be safe. So, I mimic the implementations of other architecture without using parenthese. If needed, I think can add the parenthese to solve these two errors. Thanks