Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752302AbdC0IAp (ORCPT ); Mon, 27 Mar 2017 04:00:45 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:34929 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752175AbdC0IAD (ORCPT ); Mon, 27 Mar 2017 04:00:03 -0400 From: Ravi Bangoria To: acme@redhat.com, mhiramat@kernel.org Cc: alexis.berlemont@gmail.com, linux-kernel@vger.kernel.org, peterz@infradead.org, mingo@redhat.com, alexander.shishkin@linux.intel.com, naveen.n.rao@linux.vnet.ibm.com, mpe@ellerman.id.au, hemant@linux.vnet.ibm.com, Ravi Bangoria Subject: [PATCH v2 0/3] perf/sdt: Hardening argument support Date: Mon, 27 Mar 2017 13:28:26 +0530 X-Mailer: git-send-email 2.9.3 X-TM-AS-MML: disable x-cbid: 17032707-0004-0000-0000-000001F117E8 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17032707-0005-0000-0000-000009E35398 Message-Id: <20170327075829.2205-1-ravi.bangoria@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-03-27_06:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1702020001 definitions=main-1703270072 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2203 Lines: 59 SDT event argument support on x86 is recently added to Perf. But there are couple of issues with it. It lacks renaming mapping for few 8 bit registers: al, bl, cl and dl. SDT events using these registers in arguments are failing at 'perf probe'. Add renaming logic to that. (patch 1) It still has x86 specific code in general code. It also fails to convert arguments having no offset but still surrounds register with parenthesis for ex. 8@(%rdi) is converted to +(%di):u64, which is rejected by uprobe_events. Also, 'perf probe' is failing for *all SDT events on all archs except x86*. Solve these issues. (patch 2) Add argument parser for powerpc. (patch 3) Changes in v2: - Patch 1 is new. - (Patch 2) Reimplement argument parsing logic for x86(Esp. OP parser). Use regex for parsing which makes code more compact and accurate wrt current implementation. - (Patch 2) sdt_reg_renamings is bit longer. Rename it to sdt_reg_tbl. - (Patch 2) Rename sdt_probe_parse_n() to sdt_probe_parse_size() as suggested by Masami.[1] - (Patch 2,3) Separate out in/out arguments as suggested by Masami.[1] - (Patch 2,3) Introduce enum instead of returning hardcoded values from arch_sdt_arg_parse_op(). - (Parch 2,3) Rename arch_sdt_probe_parse_op() to arch_sdt_arg_parse_op(). - (Patch 2,3) Remove arch_sdt_probe_arg_supp() function. Instead, arch_sdt_arg_parse_op() should always return SDT_ARG_SKIP on all archs who does not implement argument parser.[1] v1: https://lkml.org/lkml/2017/2/2/145 I've prepared this patchset on top of acme/perf/core. [1] https://lkml.org/lkml/2017/3/21/427 Ravi Bangoria (3): perf/sdt/x86: Add renaming logic for (missing) 8 bit registers perf/sdt/x86: Move OP parser to tools/perf/arch/x86/ perf/sdt/powerpc: Add argument support tools/perf/arch/powerpc/util/perf_regs.c | 111 +++++++++++++++++++ tools/perf/arch/x86/util/perf_regs.c | 183 +++++++++++++++++++++++++------ tools/perf/util/perf_regs.c | 6 +- tools/perf/util/perf_regs.h | 11 +- tools/perf/util/probe-file.c | 132 +++++++--------------- 5 files changed, 309 insertions(+), 134 deletions(-) -- 2.9.3