Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757888AbcJZLPM (ORCPT ); Wed, 26 Oct 2016 07:15:12 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:36195 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754918AbcJZLPJ (ORCPT ); Wed, 26 Oct 2016 07:15:09 -0400 From: wei.guo.simon@gmail.com To: linuxppc-dev@lists.ozlabs.org Cc: Shuah Khan , Michael Ellerman , Cyril Bur , Chris Smart , Suraj Jitindar Singh , Michael Neuling , Anshuman Khandual , Simon Guo , Jack Miller , Rashmica Gupta , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v16 00/15] selftests/powerpc: Add ptrace tests for ppc registers Date: Wed, 26 Oct 2016 19:13:42 +0800 Message-Id: <1477480437-12937-1-git-send-email-wei.guo.simon@gmail.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 13139 Lines: 282 From: Simon Guo This selftest suite is for PPC register ptrace functionality. It is also useful for Transaction Memory functionality verification. Signed-off-by: Anshuman Khandual Signed-off-by: Simon Guo Test Result (All tests pass on both BE and LE) ---------------------------------------------- ptrace-ebb PASS ptrace-gpr PASS ptrace-tm-gpr PASS ptrace-tm-spd-gpr PASS ptrace-tar PASS ptrace-tm-tar PASS ptrace-tm-spd-tar PASS ptrace-vsx PASS ptrace-tm-vsx PASS ptrace-tm-spd-vsx PASS ptrace-tm-spr PASS Previous versions: ================== RFC: https://lkml.org/lkml/2014/4/1/292 V1: https://lkml.org/lkml/2014/4/2/43 V2: https://lkml.org/lkml/2014/5/5/88 V3: https://lkml.org/lkml/2014/5/23/486 V4: https://lkml.org/lkml/2014/11/11/6 V5: https://lkml.org/lkml/2014/11/25/134 V6: https://lkml.org/lkml/2014/12/2/98 V7: https://lkml.org/lkml/2015/1/14/19 V8: https://lkml.org/lkml/2015/5/19/700 V9: https://lkml.org/lkml/2015/10/8/522 V10: https://lkml.org/lkml/2016/2/16/219 V11: https://lkml.org/lkml/2016/7/16/231 V12: https://lkml.org/lkml/2016/7/27/134 V13: https://lkml.org/lkml/2016/7/27/656 V14: https://lkml.org/lkml/2016/9/12/57 V15: https://lkml.org/lkml/2016/9/29/722 Changes in V16: --------------- - Correct expected SIER value in HV mode. - rebased to latest ppc tree. Changes in V15: --------------- - Squash patch 1 and 2 to avoid compile error after patch 1. - Reorganize some code across patch 3 and 4 to avoid compile error - Created a new directory utility under tools/testing/selftesting/powerpc to organize common APIs across selftests. - Use "tbegin." instead of TBEGIN macro. The same for other TM instructions. - Correct while(ptr); loop without memory barrier. - Remove an invalid checking on TEXASR in tm-spd-spr.c. - Use FAIL_IF() as possible to indicate failure line conveniently. - Consolidate some asm code on GPR/FPR load/save into reg.h/reg.S - rebased to recent ppc git tree. Changes in V14: --------------- - Remove duplicated NT_PPC_xxx register macro in tools/testing/selftests/powerpc/ptrace/ptrace.h - Clean some coding style warning Changes in V13: --------------- - Remove Cc lines from changelog - Add more Signed-off-by lines of Simon Guo Changes in V12: --------------- - Revert change which is trying to incoporate following patch: [PATCH 3/5] powerpc: tm: Always use fp_state and vr_state to store live registers - Release share memory resource in all self test cases - Optimize tfhar usage in ptrace-tm-spr.c Changes in V11: --------------- - Rework based on following patch: [PATCH 3/5] powerpc: tm: Always use fp_state and vr_state to store live registers - Split EBB/PMU register ptrace implementation. - Clean some coding style warning - Added more shared memory based sync between parent and child during TM tests - Re worded some of the commit messages and cleaned them up - selftests/powerpc/ebb/reg.h has already moved as selftests/powerpc/reg.h Dropped the previous patch doing the same thing - Combined the definitions of SPRN_DSCR from dscr/ test cases - Fixed dscr/ test cases for new SPRN_DSCR_PRIV definition available Changes in V10: --------------- - Rebased against the latest mainline - Fixed couple of build failures in the test cases related to aux vector Changes in V9: -------------- - Fixed static build check failure after tm_orig_msr got dropped - Fixed asm volatile construct for used registers set - Fixed EBB, VSX, VMX tests for LE - Fixed TAR test which was failing because of system calls - Added checks for PPC_FEATURE2_HTM aux feature in the tests - Fixed copyright statements Changes in V8: -------------- - Split the misc register set into individual ELF core notes - Implemented support for VSX register set (on and off TM) - Implemented support for EBB register set - Implemented review comments on previous versions - Some code re-arrangements, re-writes and documentation - Added comprehensive list of test cases into selftests Changes in V7: -------------- - Fixed a config directive in the MISC code - Merged the two gitignore patches into a single one Changes in V6: -------------- - Added two git ignore patches for powerpc selftests - Re-formatted all in-code function definitions in kernel-doc format Changes in V5: -------------- - Changed flush_tmregs_to_thread, so not to take into account self tracing - Dropped the 3rd patch in the series which had merged two functions - Fixed one build problem for the misc debug register patch - Accommodated almost all the review comments from Suka on the 6th patch - Minor changes to the self test program - Changed commit messages for some of the patches Changes in V4: -------------- - Added one test program into the powerpc selftest bucket in this regard - Split the 2nd patch in the previous series into four different patches - Accommodated most of the review comments on the previous patch series - Added a patch to merge functions __switch_to_tm and tm_reclaim_task Changes in V3: -------------- - Added two new error paths in every TM related get/set functions when regset support is not present on the system (ENODEV) or when the process does not have any transaction active (ENODATA) in the context - Installed the active hooks for all the newly added regset core note types Changes in V2: -------------- - Removed all the power specific ptrace requests corresponding to new NT_PPC_* elf core note types. Now all the register sets can be accessed from ptrace through PTRACE_GETREGSET/PTRACE_SETREGSET using the individual NT_PPC* core note type instead - Fixed couple of attribute values for REGSET_TM_CGPR register set - Renamed flush_tmreg_to_thread as flush_tmregs_to_thread - Fixed 32 bit checkpointed GPR support - Changed commit messages accordingly ------------- Anshuman Khandual (14): selftests/powerpc: Add more SPR numbers, TM & VMX instructions to 'reg.h'/'instructions.h' selftests/powerpc: Add ptrace tests for EBB selftests/powerpc: Add ptrace tests for GPR/FPR registers selftests/powerpc: Add ptrace tests for GPR/FPR registers in TM selftests/powerpc: Add ptrace tests for GPR/FPR registers in suspended TM selftests/powerpc: Add ptrace tests for TAR, PPR, DSCR registers selftests/powerpc: Add ptrace tests for TAR, PPR, DSCR in TM selftests/powerpc: Add ptrace tests for TAR, PPR, DSCR in suspended TM selftests/powerpc: Add ptrace tests for VSX, VMX registers selftests/powerpc: Add ptrace tests for VSX, VMX registers in TM selftests/powerpc: Add ptrace tests for VSX, VMX registers in suspended TM selftests/powerpc: Add ptrace tests for TM SPR registers selftests/powerpc: Add .gitignore file for ptrace executables selftests/powerpc: Fix a build issue Simon Guo (1): selftests/powerpc: move shared utility files into new utility/ dir tools/testing/selftests/powerpc/Makefile | 5 +- tools/testing/selftests/powerpc/alignment/Makefile | 2 +- tools/testing/selftests/powerpc/basic_asm.h | 70 -- .../testing/selftests/powerpc/benchmarks/Makefile | 2 +- .../selftests/powerpc/benchmarks/context_switch.c | 2 +- .../selftests/powerpc/context_switch/Makefile | 2 +- .../selftests/powerpc/context_switch/cp_abort.c | 6 +- .../testing/selftests/powerpc/copyloops/validate.c | 2 +- tools/testing/selftests/powerpc/dscr/dscr.h | 10 +- tools/testing/selftests/powerpc/fpu_asm.h | 80 --- tools/testing/selftests/powerpc/gpr_asm.h | 96 --- tools/testing/selftests/powerpc/instructions.h | 68 -- tools/testing/selftests/powerpc/math/fpu_asm.S | 4 +- tools/testing/selftests/powerpc/math/vmx_asm.S | 4 +- tools/testing/selftests/powerpc/math/vsx_asm.S | 4 +- tools/testing/selftests/powerpc/mm/Makefile | 2 +- tools/testing/selftests/powerpc/pmu/Makefile | 4 +- tools/testing/selftests/powerpc/pmu/ebb/Makefile | 2 +- tools/testing/selftests/powerpc/ptrace/.gitignore | 11 + tools/testing/selftests/powerpc/ptrace/Makefile | 14 + .../testing/selftests/powerpc/ptrace/ptrace-ebb.c | 188 +++++ .../testing/selftests/powerpc/ptrace/ptrace-ebb.h | 100 +++ .../testing/selftests/powerpc/ptrace/ptrace-gpr.c | 123 ++++ .../testing/selftests/powerpc/ptrace/ptrace-gpr.h | 74 ++ .../testing/selftests/powerpc/ptrace/ptrace-tar.c | 135 ++++ .../testing/selftests/powerpc/ptrace/ptrace-tar.h | 50 ++ .../selftests/powerpc/ptrace/ptrace-tm-gpr.c | 158 +++++ .../selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c | 169 +++++ .../selftests/powerpc/ptrace/ptrace-tm-spd-tar.c | 174 +++++ .../selftests/powerpc/ptrace/ptrace-tm-spd-vsx.c | 185 +++++ .../selftests/powerpc/ptrace/ptrace-tm-spr.c | 168 +++++ .../selftests/powerpc/ptrace/ptrace-tm-tar.c | 160 +++++ .../selftests/powerpc/ptrace/ptrace-tm-vsx.c | 168 +++++ .../testing/selftests/powerpc/ptrace/ptrace-vsx.c | 117 ++++ .../testing/selftests/powerpc/ptrace/ptrace-vsx.h | 127 ++++ tools/testing/selftests/powerpc/ptrace/ptrace.h | 771 +++++++++++++++++++++ tools/testing/selftests/powerpc/reg.h | 60 -- tools/testing/selftests/powerpc/signal/Makefile | 2 +- tools/testing/selftests/powerpc/signal/signal.S | 2 +- .../testing/selftests/powerpc/stringloops/memcmp.c | 2 +- tools/testing/selftests/powerpc/tm/Makefile | 2 +- tools/testing/selftests/powerpc/tm/tm-signal.S | 10 +- tools/testing/selftests/powerpc/tm/tm.h | 2 +- .../testing/selftests/powerpc/utility/basic_asm.h | 73 ++ tools/testing/selftests/powerpc/utility/fpu_asm.h | 80 +++ tools/testing/selftests/powerpc/utility/gpr_asm.h | 96 +++ .../selftests/powerpc/utility/instructions.h | 68 ++ tools/testing/selftests/powerpc/utility/reg.S | 397 +++++++++++ tools/testing/selftests/powerpc/utility/reg.h | 150 ++++ tools/testing/selftests/powerpc/utility/utils.c | 87 +++ tools/testing/selftests/powerpc/utility/utils.h | 77 ++ tools/testing/selftests/powerpc/utility/vmx_asm.h | 96 +++ tools/testing/selftests/powerpc/utility/vsx_asm.h | 71 ++ tools/testing/selftests/powerpc/utils.c | 87 --- tools/testing/selftests/powerpc/utils.h | 77 -- tools/testing/selftests/powerpc/vmx_asm.h | 96 --- tools/testing/selftests/powerpc/vsx_asm.h | 71 -- 57 files changed, 4122 insertions(+), 741 deletions(-) delete mode 100644 tools/testing/selftests/powerpc/basic_asm.h delete mode 100644 tools/testing/selftests/powerpc/fpu_asm.h delete mode 100644 tools/testing/selftests/powerpc/gpr_asm.h delete mode 100644 tools/testing/selftests/powerpc/instructions.h create mode 100644 tools/testing/selftests/powerpc/ptrace/.gitignore create mode 100644 tools/testing/selftests/powerpc/ptrace/Makefile create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-ebb.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-ebb.h create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-gpr.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-gpr.h create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tar.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tar.h create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tm-gpr.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-tar.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-vsx.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tm-spr.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tm-tar.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-tm-vsx.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-vsx.c create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace-vsx.h create mode 100644 tools/testing/selftests/powerpc/ptrace/ptrace.h delete mode 100644 tools/testing/selftests/powerpc/reg.h create mode 100644 tools/testing/selftests/powerpc/utility/basic_asm.h create mode 100644 tools/testing/selftests/powerpc/utility/fpu_asm.h create mode 100644 tools/testing/selftests/powerpc/utility/gpr_asm.h create mode 100644 tools/testing/selftests/powerpc/utility/instructions.h create mode 100644 tools/testing/selftests/powerpc/utility/reg.S create mode 100644 tools/testing/selftests/powerpc/utility/reg.h create mode 100644 tools/testing/selftests/powerpc/utility/utils.c create mode 100644 tools/testing/selftests/powerpc/utility/utils.h create mode 100644 tools/testing/selftests/powerpc/utility/vmx_asm.h create mode 100644 tools/testing/selftests/powerpc/utility/vsx_asm.h delete mode 100644 tools/testing/selftests/powerpc/utils.c delete mode 100644 tools/testing/selftests/powerpc/utils.h delete mode 100644 tools/testing/selftests/powerpc/vmx_asm.h delete mode 100644 tools/testing/selftests/powerpc/vsx_asm.h -- 1.8.3.1