Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp3249701pxv; Sun, 27 Jun 2021 23:47:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwGc2n45JYoJQSghoP2fp1NZpZb05378a7RFW/nSvWs0q3nJfl7bhl8OBj98/tReztkgk0z X-Received: by 2002:a17:907:62a1:: with SMTP id nd33mr22419217ejc.303.1624862867108; Sun, 27 Jun 2021 23:47:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624862867; cv=none; d=google.com; s=arc-20160816; b=S+kS57R0pSukosMFnJp6U+7SxiQ+fLVXo+1iHchcuD5jHITtsChqShPy7K8VBL2B2r mmOw+f2/+LxXy+dOTek+X00y7ObIGnCK0DTBukakD6DRBuUDmrd2ma2/kN91PM7J/qf8 D57sG2t/Ji4JO9AKzxCOILQty/fWk5gjcajKJvb5J9WdlUxRLUDpLqLRDTojiJTv6puV WkjqJyn9cUyFWo2jZkmuvQNa6I6TtSHINdZuyrE12IuP168Ob+ThoRcD9rOzaHBr8EzV MhCmketebx3QfLU2/qFYMaaB+gWfczpKDClaCuEOyxhdb97x7GHlqcBltDVfHJ9FR9ry 8d5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=3lUoxGRsZo2rNOcYcEWmlWl0EPUyRMPtxvHL6XDDRNg=; b=eAxUdc0Eu0ZCuzEKP43eW8RlOLW12ZGWNBRrRAqCwM4VckIeeLAAegEAhvXv87+TdD GHdN1MTpppsHHcYA3GUw0piUwzpmBELxHOvUMJyapiahC4pB2kmIx7HEQaK2Wqn5EGdA jT/LRDFx71ybBxiOprKAiHAtSVPhy55JSUJHj30UB0fosWTBhJhKDXK5pFH7NADVJ3hd CoZkTAEqWzIV2xrCmtrytegS7olw1y3/yRf8GTW0YPxLDPejmuKKW+xmvpZ5VioX6ENl EseOFx5cuHaxTq6wFI4uEsAVgY1Na6EOemD32rrcVN8F+KsmJEMIdTsYXYnPcCey0fcY 3WnA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=A7u6Gj6F; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id jx11si13059845ejc.470.2021.06.27.23.47.24; Sun, 27 Jun 2021 23:47:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=A7u6Gj6F; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232210AbhF1Gsv (ORCPT + 99 others); Mon, 28 Jun 2021 02:48:51 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:23252 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232199AbhF1Gsu (ORCPT ); Mon, 28 Jun 2021 02:48:50 -0400 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15S6Wuv2109736; Mon, 28 Jun 2021 02:46:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=pp1; bh=3lUoxGRsZo2rNOcYcEWmlWl0EPUyRMPtxvHL6XDDRNg=; b=A7u6Gj6FY4e6eM/2cu9InSrGyFN8LJbhBNur0bJBXytqctP+AR1GMXGatwXE/Sv/5zMp KIy/6WTESS7xkvn+SzL90f4FN1BAae0Zv50OuerjY8ftRnjFfPoA+mDyf3BDtyUlTs0g 90HU+owE3hJMZzlvJMxTLUfMG2NDVfN6DhHFGwL+LlHZm2/rJFrRi8XKlJLMpczSkA0D M3/yIi3lly1mfuJQfOrmZ4NNcASfEmVgR2Ea7/f6C1jbHEUB2B4cTDFPJeHBOYjQEGnS Sh2DnQj7YIAKuiT5gCLleNhjiZLb2k/9ouWp1/Ba7xNiV1YtxlOqG4poDJwO7sxrYrIm kg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 39f8jw99ur-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 28 Jun 2021 02:46:21 -0400 Received: from m0098393.ppops.net (m0098393.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 15S6YKr2115641; Mon, 28 Jun 2021 02:46:20 -0400 Received: from ppma05fra.de.ibm.com (6c.4a.5195.ip4.static.sl-reverse.com [149.81.74.108]) by mx0a-001b2d01.pphosted.com with ESMTP id 39f8jw99tt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 28 Jun 2021 02:46:20 -0400 Received: from pps.filterd (ppma05fra.de.ibm.com [127.0.0.1]) by ppma05fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 15S6fmJh017013; Mon, 28 Jun 2021 06:46:18 GMT Received: from b06avi18626390.portsmouth.uk.ibm.com (b06avi18626390.portsmouth.uk.ibm.com [9.149.26.192]) by ppma05fra.de.ibm.com with ESMTP id 39duv8gas5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 28 Jun 2021 06:46:18 +0000 Received: from d06av21.portsmouth.uk.ibm.com (d06av21.portsmouth.uk.ibm.com [9.149.105.232]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 15S6iiNG25297294 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 28 Jun 2021 06:44:44 GMT Received: from d06av21.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 701FE52461; Mon, 28 Jun 2021 06:46:08 +0000 (GMT) Received: from localhost.localdomain.com (unknown [9.85.85.15]) by d06av21.portsmouth.uk.ibm.com (Postfix) with ESMTP id E0A2CAA090; Mon, 28 Jun 2021 06:23:46 +0000 (GMT) From: Kajol Jain To: acme@kernel.org Cc: maddy@linux.vnet.ibm.com, atrajeev@linux.vnet.ibm.com, kjain@linux.ibm.com, pc@us.ibm.com, linux-kernel@vger.kernel.org, jolsa@redhat.com, ravi.bangoria@linux.ibm.com, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, rnsastry@linux.ibm.com Subject: [PATCH] perf script python: Fix buffer size to report iregs in perf script Date: Mon, 28 Jun 2021 11:53:41 +0530 Message-Id: <20210628062341.155839-1-kjain@linux.ibm.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: xBT7H1znd9OS5IelVUx880gerWTL5G6V X-Proofpoint-ORIG-GUID: PRHUAZxCwXo4nlF5vgkbNl-3tWymYUfE X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-06-28_03:2021-06-25,2021-06-28 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 adultscore=0 spamscore=0 malwarescore=0 impostorscore=0 phishscore=0 bulkscore=0 mlxlogscore=999 clxscore=1015 suspectscore=0 mlxscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106280045 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 48a1f565261d ("perf script python: Add more PMU fields to event handler dict") added functionality to report fields like weight, iregs, uregs etc via perf report. That commit predefined buffer size to 512 bytes to print those fields. But incase of powerpc, since we added extended regs support in commits: Commit 068aeea3773a ("perf powerpc: Support exposing Performance Monitor Counter SPRs as part of extended regs") Commit d735599a069f ("powerpc/perf: Add extended regs support for power10 platform") Now iregs can carry more bytes of data and this predefined buffer size can result to data loss in perf script output. Patch resolve this issue by making buffer size dynamic based on number of registers needed to print. It also changed return type for function "regs_map" from int to void, as the return value is not being used by the caller function "set_regs_in_dict". Fixes: 068aeea3773a ("perf powerpc: Support exposing Performance Monitor Counter SPRs as part of extended regs") Signed-off-by: Kajol Jain --- .../util/scripting-engines/trace-event-python.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c index 4e4aa4c97ac5..c8c9706b4643 100644 --- a/tools/perf/util/scripting-engines/trace-event-python.c +++ b/tools/perf/util/scripting-engines/trace-event-python.c @@ -687,7 +687,7 @@ static void set_sample_datasrc_in_dict(PyObject *dict, _PyUnicode_FromString(decode)); } -static int regs_map(struct regs_dump *regs, uint64_t mask, char *bf, int size) +static void regs_map(struct regs_dump *regs, uint64_t mask, char *bf, int size) { unsigned int i = 0, r; int printed = 0; @@ -695,7 +695,7 @@ static int regs_map(struct regs_dump *regs, uint64_t mask, char *bf, int size) bf[0] = 0; if (!regs || !regs->regs) - return 0; + return; for_each_set_bit(r, (unsigned long *) &mask, sizeof(mask) * 8) { u64 val = regs->regs[i++]; @@ -704,8 +704,6 @@ static int regs_map(struct regs_dump *regs, uint64_t mask, char *bf, int size) "%5s:0x%" PRIx64 " ", perf_reg_name(r), val); } - - return printed; } static void set_regs_in_dict(PyObject *dict, @@ -713,7 +711,16 @@ static void set_regs_in_dict(PyObject *dict, struct evsel *evsel) { struct perf_event_attr *attr = &evsel->core.attr; - char bf[512]; + + /* + * Here value 28 is a constant size which can be used to print + * one register value and its corresponds to: + * 16 chars is to specify 64 bit register in hexadecimal. + * 2 chars is for appending "0x" to the hexadecimal value and + * 10 chars is for register name. + */ + int size = __sw_hweight64(attr->sample_regs_intr) * 28; + char bf[size]; regs_map(&sample->intr_regs, attr->sample_regs_intr, bf, sizeof(bf)); -- 2.31.1