Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp4855171pxb; Tue, 28 Sep 2021 05:44:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwhD3h+5hikyvVIVrEFwXS2FQKPidCBSXJQ6aE+SWS5C/029VkJSSlUSAgIdq4bsUjGP89F X-Received: by 2002:a17:90b:4b4b:: with SMTP id mi11mr5246631pjb.41.1632833065243; Tue, 28 Sep 2021 05:44:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632833065; cv=none; d=google.com; s=arc-20160816; b=je/hBbUIoelbmX5+bBgGDvRlvLXSQnI8RZZ7gTm6Hji7F1EVxQABpVMh99M2yD5s48 DsGr4aZ8+4HQ4EhhWVAhFI4mI+eq84a+BZjDybNLLaNzd7bF9C8yFBhTjRTd5NQ/v/7K h745ASKXFDjEAXHCkKIpKr10NsZG94kz33GKodUjg6u0VkC8M2sQwMASgpaFs9kw//Ve VuCD2yhJ0+VQh91aTFv7fTedW9mMsaRh3SBcKCjhzQ28dsvRKnKvWDhltc42v7MRgQOI hh68YaGK+P46NQCWzyaijbqTcIH/3TswEIY9DWtQvvR2wzv6tQv7OsnmVmR4Vtlcx671 36vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :message-id:date:subject:cc:to:from:dkim-signature; bh=/IiP3OJn3/x2BE7U7GqNBNSQHO3LlVNZfJj+YeFRfp0=; b=Zt1MvYk75/Y+QRMEOOYXRRBwN0TzY5JsmSiskY4s5hBXde+0EBSbM7HTPV1QvlY0r0 xU1R85oMRIQtr/ex24ARbqkeJABQ5hqlJAIQ8v46Qh9HQWSx0ZollpGaQmffMXKM36UN rNyjZGTy8lR64cYBiZi+JEjXkmCAKmtvknLkwpQzGOExR477b2W9CXnkVSg69VnRByE8 zez+690Wl9zTI/7zeVuOXiJ6CwVL0iu02K4m4vOiyxtrSuNoGWvZHRv/ng/5u1ldSOk8 FQBfT2ZCUHXTin+ZWtcuzYgbgCkfeEAXfsA9TCbUwTgEbWe9v/OZxiBjFW3e6+vzPi9X 77OQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=dx1j8l2d; 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 n5si270043pfj.249.2021.09.28.05.44.12; Tue, 28 Sep 2021 05:44:25 -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=dx1j8l2d; 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 S240777AbhI1Moa (ORCPT + 99 others); Tue, 28 Sep 2021 08:44:30 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:59586 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240759AbhI1Mo3 (ORCPT ); Tue, 28 Sep 2021 08:44:29 -0400 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 18SC9LvJ005896; Tue, 28 Sep 2021 08:42:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : mime-version; s=pp1; bh=/IiP3OJn3/x2BE7U7GqNBNSQHO3LlVNZfJj+YeFRfp0=; b=dx1j8l2dKmtv4WpBoBkDYv+Kp0UI3/wBBRSTylQ/ecjVhbJps2Cgw5aZle8Ne8bwbcH8 +qGZ//dE6530YRwHYloZHXE/7HUh0BvwmdiS249jD6QocnLCO2WySqxOiLHVEX/WCCb7 0JTYB1kE7oYQA/KXwO5q7CMqBeXyeH6f7Ik2XUYAH4k4fttTIlYC3iUFHsxcG8Eq7ITe gB9OlH1fUOoqLroXiY2H4x5dAxgTj1qsr5es2DVCufDnRwzhzNRRWlsBv8hjU2WWcgPm ushkSd2gv8bCrdl0o1KEDnR79Z+ZZWYtj/whmtpOnrAp9AaAk4q6uZjN7bPkXTkosq3V IA== Received: from ppma02fra.de.ibm.com (47.49.7a9f.ip4.static.sl-reverse.com [159.122.73.71]) by mx0a-001b2d01.pphosted.com with ESMTP id 3bc092c57f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 28 Sep 2021 08:42:20 -0400 Received: from pps.filterd (ppma02fra.de.ibm.com [127.0.0.1]) by ppma02fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 18SCXq9Q024042; Tue, 28 Sep 2021 12:42:17 GMT Received: from b06cxnps4076.portsmouth.uk.ibm.com (d06relay13.portsmouth.uk.ibm.com [9.149.109.198]) by ppma02fra.de.ibm.com with ESMTP id 3b9ud9cdjs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 28 Sep 2021 12:42:17 +0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 18SCgBpc60817880 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Sep 2021 12:42:11 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6B437A4055; Tue, 28 Sep 2021 12:42:11 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DC458A407C; Tue, 28 Sep 2021 12:42:05 +0000 (GMT) Received: from li-e8dccbcc-2adc-11b2-a85c-bc1f33b9b810.ibm.com.com (unknown [9.43.50.245]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Tue, 28 Sep 2021 12:42:05 +0000 (GMT) From: Kajol Jain To: mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, nvdimm@lists.linux.dev, linux-kernel@vger.kernel.org, peterz@infradead.org, dan.j.williams@intel.com, ira.weiny@intel.com, vishal.l.verma@intel.com Cc: maddy@linux.ibm.com, santosh@fossix.org, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, atrajeev@linux.vnet.ibm.com, tglx@linutronix.de, rnsastry@linux.ibm.com, kjain@linux.ibm.com Subject: [PATCH v5 0/4] Add perf interface to expose nvdimm Date: Tue, 28 Sep 2021 18:11:56 +0530 Message-Id: <20210928124200.146331-1-kjain@linux.ibm.com> X-Mailer: git-send-email 2.27.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: C4Xjjt1gIybISOgXYVSmu7hynCqz5I_C X-Proofpoint-GUID: C4Xjjt1gIybISOgXYVSmu7hynCqz5I_C Content-Transfer-Encoding: 8bit X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-09-28_05,2021-09-28_01,2020-04-07_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1011 mlxlogscore=999 spamscore=0 bulkscore=0 adultscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 phishscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109230001 definitions=main-2109280071 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Patchset adds performance stats reporting support for nvdimm. Added interface includes support for pmu register/unregister functions. A structure is added called nvdimm_pmu to be used for adding arch/platform specific data such as cpumask, nvdimm device pointer and pmu event functions like event_init/add/read/del. User could use the standard perf tool to access perf events exposed via pmu. Interface also defines supported event list, config fields for the event attributes and their corresponding bit values which are exported via sysfs. Patch 3 exposes IBM pseries platform nmem* device performance stats using this interface. Result from power9 pseries lpar with 2 nvdimm device: Ex: List all event by perf list command:# perf list nmem nmem0/cache_rh_cnt/ [Kernel PMU event] nmem0/cache_wh_cnt/ [Kernel PMU event] nmem0/cri_res_util/ [Kernel PMU event] nmem0/ctl_res_cnt/ [Kernel PMU event] nmem0/ctl_res_tm/ [Kernel PMU event] nmem0/fast_w_cnt/ [Kernel PMU event] nmem0/host_l_cnt/ [Kernel PMU event] nmem0/host_l_dur/ [Kernel PMU event] nmem0/host_s_cnt/ [Kernel PMU event] nmem0/host_s_dur/ [Kernel PMU event] nmem0/med_r_cnt/ [Kernel PMU event] nmem0/med_r_dur/ [Kernel PMU event] nmem0/med_w_cnt/ [Kernel PMU event] nmem0/med_w_dur/ [Kernel PMU event] nmem0/mem_life/ [Kernel PMU event] nmem0/poweron_secs/ [Kernel PMU event] ... nmem1/mem_life/ [Kernel PMU event] nmem1/poweron_secs/ [Kernel PMU event] Patch1: Introduces the nvdimm_pmu structure Patch2: Adds common interface to add arch/platform specific data includes nvdimm device pointer, pmu data along with pmu event functions. It also defines supported event list and adds attribute groups for format, events and cpumask. It also adds code for cpu hotplug support. Patch3: Add code in arch/powerpc/platform/pseries/papr_scm.c to expose nmem* pmu. It fills in the nvdimm_pmu structure with pmu name, capabilities, cpumask and event functions and then registers the pmu by adding callbacks to register_nvdimm_pmu. Patch4: Sysfs documentation patch Changelog --- v4 -> v5: - Remove multiple variables defined in nvdimm_pmu structure include name and pmu functions(event_int/add/del/read) as they are just used to copy them again in pmu variable. Now we are directly doing this step in arch specific code as suggested by Dan Williams. - Remove attribute group field from nvdimm pmu structure and defined these attribute groups in common interface which includes format, event list along with cpumask as suggested by Dan Williams. Since we added static defination for attrbute groups needed in common interface, removes corresponding code from papr. - Add nvdimm pmu event list with event codes in the common interface. - Remove Acked-by/Reviewed-by/Tested-by tags as code is refactored to handle review comments from Dan. - Make nvdimm_pmu_free_hotplug_memory function static as reported by kernel test robot, also add corresponding Reported-by tag. - Link to the patchset v4: https://lkml.org/lkml/2021/9/3/45 v3 -> v4 - Rebase code on top of current papr_scm code without any logical changes. - Added Acked-by tag from Peter Zijlstra and Reviewed by tag from Madhavan Srinivasan. - Link to the patchset v3: https://lkml.org/lkml/2021/6/17/605 v2 -> v3 - Added Tested-by tag. - Fix nvdimm mailing list in the ABI Documentation. - Link to the patchset v2: https://lkml.org/lkml/2021/6/14/25 v1 -> v2 - Fix hotplug code by adding pmu migration call incase current designated cpu got offline. As pointed by Peter Zijlstra. - Removed the retun -1 part from cpu hotplug offline function. - Link to the patchset v1: https://lkml.org/lkml/2021/6/8/500 Kajol Jain (4): drivers/nvdimm: Add nvdimm pmu structure drivers/nvdimm: Add perf interface to expose nvdimm performance stats powerpc/papr_scm: Add perf interface support docs: ABI: sysfs-bus-nvdimm: Document sysfs event format entries for nvdimm pmu Documentation/ABI/testing/sysfs-bus-nvdimm | 35 +++ arch/powerpc/include/asm/device.h | 5 + arch/powerpc/platforms/pseries/papr_scm.c | 225 ++++++++++++++ drivers/nvdimm/Makefile | 1 + drivers/nvdimm/nd_perf.c | 328 +++++++++++++++++++++ include/linux/nd.h | 41 +++ 6 files changed, 635 insertions(+) create mode 100644 drivers/nvdimm/nd_perf.c -- 2.26.2