From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A913E34DCD1 for ; Fri, 6 Mar 2026 10:21:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772792522; cv=none; b=XvKHrcJJtpYvw6OPLNeYSkiVodtPtMBP5Q7WYMA5Xzs7naerZz0CxEGdIfI9ciEGEGUHLMtTV+hK1UBSUnnADN9dwyasLPUaUu9P8mK4EKWyOdy+baMGPt1Rn71KP2dI2Uxti/FYgFDZ57kW91qktCwRmXkZkZ5rdq+to6pndvQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772792522; c=relaxed/simple; bh=zEUVZfvol4G2Gu8x9UPYWCficCsejqxUt5YH69mxdgs=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=a+WANYFJeMbcsUcpS2gIboMDzr19PQe2hhiBAmbU54Gqpn+//LbQfJId4LIrXkanUr7+PyzZXMNWVEe3UqeF96VZxvqWTH5PxXbhud0SzTL3Mt8AmdbvsoTf5tdfNJhxcSz0yOdXfwo3xOgr/lJSi9C/rXrtA+NRS+JHjX9BVIs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=QRuHzsMB; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XkLmLHoB; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="QRuHzsMB"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XkLmLHoB" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 626AIW7L3218970 for ; Fri, 6 Mar 2026 10:21:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= wz/G6pIcGzUXqImwOHN+SRnsHkmtJI/E8Bl+l6suG/Y=; b=QRuHzsMB6ejFuCNR uv4Xki46Vx2Eeps0zF/VafV0n5SBtF8MHA2jq6B9awW+VviYhp3Qqjyh+rYoZhMc Yw5U0rN/m94pFKNLRxTRFrpV3xrhWYTpgdDmFAAjhy9GjPI6z7Dr0RW2mtfkcKB7 Mupwstj5dm4r17uzM3jmN0cqBA1cgLfi5t6vcNELbVyIB0ry6+aCNxR6C+S8LvQd zoKaJ+KxepGz8LmkTlKJAbyTF0B8jpyB/X+EBG79xnZ7K7VulXlH0aCu4OKKYeh6 3N9L3ufCGp38fEIctBTv/PAEMcqVy9I67Z+wXk6EjasMyMZ0keDimgP34v3S4CXq aT7Msg== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cqf25ts6c-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Mar 2026 10:21:58 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2ae6961bff0so140354135ad.2 for ; Fri, 06 Mar 2026 02:21:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772792518; x=1773397318; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=wz/G6pIcGzUXqImwOHN+SRnsHkmtJI/E8Bl+l6suG/Y=; b=XkLmLHoBI4OdaIhkNwvCFGfBIvPnTgixRVaEcbCwYBJ6bvtoe7yJ7lqC+XrdeFSB4y bpgGXqjtpnsZz3APpfnZLEN5wFIwiqcoXbZ9vvrZrMAdJO4kmlFRmOLT3olIMQWtElFm ribpSzFzEI3fDpTYbkll+kjlTRNSjaExdoMsLNKRHlQE1/m86WcaiW5SySo9GeI3mVFK PuSBqFw+RX/YTsf9pe/FAIWqYGou6IWWzVGbesj8eM7SfOE1t9jRlZVutQZCV+DVKMDA 6yIndT1ZnfDna7Ta9yoh+/Rlr5cTNIox+YA4ArwDNciHnWGnsK8YyAxXaxR3eN4z35bQ Cryw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772792518; x=1773397318; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=wz/G6pIcGzUXqImwOHN+SRnsHkmtJI/E8Bl+l6suG/Y=; b=X8T36IU+g26qY2Vmyu+0YJBmTlsh8g4Jgg9PVyYlTiMHLmdJ9vZBXVl7XapMLZZc0C VUMZishn44y1lGzSdmumy+L8KN74UcCTXZzcOOB0HfIPIofaM5FxtpMDtvWokPXnpDzz ADzOuOxsVXU4O4vPo1jaW69HacqueM73cSzDz03XCoL65DMI5Wdfqbydsou42zU08Zi+ jyMAV2bOW10AWlOHzav/UvCrtoOKTD+OYcVQW+/xdtDxOzQ5srhm2waixuVYvRHuzZ7Q 6dsFWl+dHahLruO3HSqMOWL3rIS3T/zTuUwZ5mxKtIctE6ES5Of7jRzpyowois/0n8de q7zg== X-Forwarded-Encrypted: i=1; AJvYcCXqAgFoilR8pAdnkscS1bHjEGan7+SR1gykVGkgKFw6vLSWySUTIi9id/Zkbh618n/IZ52/ui5C1pgIlec=@vger.kernel.org X-Gm-Message-State: AOJu0Yz02/BuOwYN02yZN/qDec1R89d87J+GqZh0uT+l5f3AlwXRQiTt Jn8kLHijHaIwSjTnK56zwEIALwQOy/DKE6sM68uEDnFVxJnLYTTdwD4T6Jw8RbiRZLVjbVEzKcD A3BDG3ekKJPystXQmHw1hkhEcXQct5kB7ehxpOzGyjTj2lAckjEW0xIFQWs/1Wp/AFmA= X-Gm-Gg: ATEYQzzPzw8eWK6eneR9NEAWaBzqI/OXKg2PP29lZ9DD7N/D+xqoyf6EvMf6jX/FI7q UW+ov7Mxseaqk0XULvlL5fKfsR7eGhdmBVIYo59FsC9UKCGH4OqjzHYM7Qsh9cAt3Vu6DYXqfgO z3e3/fakSVSKv6NfbApY2FBei+vYLYa5DytG67glGvtOYNs0TKiSkyJouZX0cQcfe5YK5otPhF5 n+CL20t35AZzCyjGuh9vPMiGK7Hls3PFWkrvqCDbFmpDITSKMRTSl231wQ779s8VDM6f3ybhs4P tT2IcGzu9PkBKqpDHJakUBB3NYKk2XtE61Haswn3j0hRr0Cyq1R4QkTZuNrKnuKWMLL5/X/Jh0t OSbzL7G+c4qgxLzTn81Az4PuL1WuRukT2TnCww/fCgL1GkVViq9+BnQU7tu0L0gOJKLbzIq0Vus UDStV3Arkqs2A= X-Received: by 2002:a17:903:2441:b0:2ae:4fdb:d596 with SMTP id d9443c01a7336-2ae82367db1mr19360755ad.11.1772792518246; Fri, 06 Mar 2026 02:21:58 -0800 (PST) X-Received: by 2002:a17:903:2441:b0:2ae:4fdb:d596 with SMTP id d9443c01a7336-2ae82367db1mr19360355ad.11.1772792517552; Fri, 06 Mar 2026 02:21:57 -0800 (PST) Received: from [10.133.33.199] (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae840c8171sm18614755ad.89.2026.03.06.02.21.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 06 Mar 2026 02:21:56 -0800 (PST) Message-ID: <2ca7cd98-796a-4e1d-a4cf-acbb8ffe22af@oss.qualcomm.com> Date: Fri, 6 Mar 2026 18:21:50 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v13 7/8] coresight: tmc: integrate byte-cntr's sysfs_ops with tmc sysfs file_ops To: Mike Leach , Jie Gan , Suzuki Poulose , James Clark , Alexander Shishkin , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Tingwei Zhang , Mao Jinlong , Bjorn Andersson , Konrad Dybcio Cc: "coresight@lists.linaro.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-arm-msm@vger.kernel.org" , "devicetree@vger.kernel.org" , nd References: <20260223-enable-byte-cntr-for-ctcu-v13-0-9cb44178b250@oss.qualcomm.com> <20260223-enable-byte-cntr-for-ctcu-v13-7-9cb44178b250@oss.qualcomm.com> Content-Language: en-US From: Jie Gan In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Proofpoint-ORIG-GUID: BjrI28fOursgOwny_bz6XX2fugoWQeU1 X-Authority-Analysis: v=2.4 cv=Uvdu9uwB c=1 sm=1 tr=0 ts=69aaaac6 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=7CQSdrXTAAAA:8 a=KKAkSRfTAAAA:8 a=QyXUC8HyAAAA:8 a=VwQbUJbxAAAA:8 a=JfrnYn6hAAAA:8 a=7p5ZsVVZITTIZxtcy0gA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 a=a-qgeE7W1pNrGK8U0ZQC:22 a=cvBusfyB2V15izCimMoJ:22 a=1CNFftbPRP8L7MoqJWF3:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDA5OCBTYWx0ZWRfX3Zf9c/j4hpCL hNfvq7WP8VS/K9x5d96CCV1SqL94SwQuTDxR7K409ze97PVf5iOqaaR9KoPIi9mbAnHBfiAwQjj DAoCnBtRWbdJMbrPokk+yr1WWdwmcino4GL8vNF7LirxBEawMnaOw7cQIaNaU/kJKA+HF50R3Li fW+pVQzkP3IlpyGjPAcAPp+32aJknj52tKePqF8MtSMVoYSlK4ISQbZeD42NTnWY5pWk0CqOhOZ OOtz2Rk1k3lYJE3OTx8/swIhUpoqQbtISOBwEqlti34xOO9fz4x2HJgUY8sGUrH4nWktbWCSRgu dO7tfqbtRqCHmEZiZfEFrIQbqHo8U1pkzK0fhEanQns6eqt/+9ZsLNzSIE31PDeNbZDGy7Yw0J7 XhAas6PE5+aBwKZ56PHc9OsZenOEzF9nCv+CgJ51AxH/e8jAzQHuj7s8Ifi7sU4cV/f40aFhhWz 7cAfZsrQDXcz9rOzGjw== X-Proofpoint-GUID: BjrI28fOursgOwny_bz6XX2fugoWQeU1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-06_03,2026-03-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 malwarescore=0 spamscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 phishscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603060098 On 3/6/2026 5:44 PM, Mike Leach wrote: > > Hi, >> -----Original Message----- >> From: Jie Gan >> Sent: Monday, February 23, 2026 6:56 AM >> To: Suzuki Poulose ; Mike Leach >> ; James Clark ; Alexander >> Shishkin ; Rob Herring >> ; Krzysztof Kozlowski ; Conor Dooley >> ; Tingwei Zhang >> ; Mao Jinlong >> ; Bjorn Andersson >> ; Konrad Dybcio >> Cc: coresight@lists.linaro.org; linux-arm-kernel@lists.infradead.org; linux- >> kernel@vger.kernel.org; linux-arm-msm@vger.kernel.org; >> devicetree@vger.kernel.org; Jie Gan >> Subject: [PATCH v13 7/8] coresight: tmc: integrate byte-cntr's sysfs_ops with >> tmc sysfs file_ops >> >> Add code logic to invoke byte-cntr's tmc_sysfs_ops if the byte-cntr >> is enabled. >> >> Signed-off-by: Jie Gan >> --- >> drivers/hwtracing/coresight/coresight-tmc-core.c | 53 >> +++++++++++++++++++++++- >> 1 file changed, 52 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/hwtracing/coresight/coresight-tmc-core.c >> b/drivers/hwtracing/coresight/coresight-tmc-core.c >> index 32ca2ec994de..6486bdafdddc 100644 >> --- a/drivers/hwtracing/coresight/coresight-tmc-core.c >> +++ b/drivers/hwtracing/coresight/coresight-tmc-core.c >> @@ -31,6 +31,7 @@ >> >> #include "coresight-priv.h" >> #include "coresight-tmc.h" >> +#include "coresight-ctcu.h" >> >> DEFINE_CORESIGHT_DEVLIST(etb_devs, "tmc_etb"); >> DEFINE_CORESIGHT_DEVLIST(etf_devs, "tmc_etf"); >> @@ -228,15 +229,47 @@ static int tmc_prepare_crashdata(struct >> tmc_drvdata *drvdata) >> return 0; >> } >> >> +/* Return the byte-cntr's tmc_sysfs_ops if in using */ >> +static const struct tmc_sysfs_ops *tmc_get_byte_cntr_sysfs_ops(struct >> tmc_drvdata *drvdata) >> +{ >> + struct ctcu_byte_cntr *byte_cntr_data; >> + struct ctcu_drvdata *ctcu_drvdata; >> + struct coresight_device *ctcu; >> + int port; >> + >> + ctcu = tmc_etr_get_ctcu_device(drvdata); >> + if (!ctcu) >> + return NULL; >> + >> + port = coresight_get_in_port(drvdata->csdev, ctcu); >> + if (port < 0) >> + return NULL; >> + >> + ctcu_drvdata = dev_get_drvdata(ctcu->dev.parent); >> + byte_cntr_data = &ctcu_drvdata->byte_cntr_data[port]; >> + if (byte_cntr_data && byte_cntr_data->thresh_val) >> + return ctcu_drvdata->byte_cntr_sysfs_ops; >> + >> + return NULL; >> +} >> + > > Should be in a CTCU source file, not part of the common tmc code > >> static int tmc_read_prepare(struct tmc_drvdata *drvdata) >> { >> + const struct tmc_sysfs_ops *byte_cntr_sysfs_ops; >> int ret = 0; >> >> + byte_cntr_sysfs_ops = tmc_get_byte_cntr_sysfs_ops(drvdata); >> + if (byte_cntr_sysfs_ops) { >> + ret = byte_cntr_sysfs_ops->read_prepare(drvdata); >> + goto out; >> + } >> + >> if (drvdata->sysfs_ops) >> ret = drvdata->sysfs_ops->read_prepare(drvdata); >> else >> ret = -EINVAL; >> > > I understand ctcu usage is per session & per device, but at the start of the session would it not be better to have a function in the ctcu code that takes the drvdata->sysfs_ops and substitutes the callback directly, restoring it at the end. > Hi Mike, Thanks for the suggestion. That would be a better solution, and this patch is no longer needed. I will export etr_sysfs_ops in tmc header file so the CTCU driver can retrieve the pointer and restore to the etr_sysfs_ops. With this solution, sysfs_ops will be switched to byte_cntr_sysfs_ops in ctcu_enable and restored in ctcu_disable. Thanks, Jie > >> +out: >> if (!ret) >> dev_dbg(&drvdata->csdev->dev, "TMC read start\n"); >> >> @@ -245,13 +278,21 @@ static int tmc_read_prepare(struct tmc_drvdata >> *drvdata) >> >> static int tmc_read_unprepare(struct tmc_drvdata *drvdata) >> { >> + const struct tmc_sysfs_ops *byte_cntr_sysfs_ops; >> int ret = 0; >> >> + byte_cntr_sysfs_ops = tmc_get_byte_cntr_sysfs_ops(drvdata); >> + if (byte_cntr_sysfs_ops) { >> + ret = byte_cntr_sysfs_ops->read_unprepare(drvdata); >> + goto out; >> + } >> + >> if (drvdata->sysfs_ops) >> ret = drvdata->sysfs_ops->read_unprepare(drvdata); >> else >> ret = -EINVAL; >> > > Again override / restore over the session. > > Regards > > Mike > >> +out: >> if (!ret) >> dev_dbg(&drvdata->csdev->dev, "TMC read end\n"); >> >> @@ -277,6 +318,12 @@ static int tmc_open(struct inode *inode, struct file >> *file) >> static ssize_t tmc_get_sysfs_trace(struct tmc_drvdata *drvdata, loff_t pos, >> size_t len, >> char **bufpp) >> { >> + const struct tmc_sysfs_ops *byte_cntr_sysfs_ops; >> + >> + byte_cntr_sysfs_ops = tmc_get_byte_cntr_sysfs_ops(drvdata); >> + if (byte_cntr_sysfs_ops) >> + return byte_cntr_sysfs_ops->get_trace_data(drvdata, pos, >> len, bufpp); >> + >> return drvdata->sysfs_ops->get_trace_data(drvdata, pos, len, bufpp); >> } >> >> @@ -297,7 +344,11 @@ static ssize_t tmc_read(struct file *file, char __user >> *data, size_t len, >> return -EFAULT; >> } >> >> - *ppos += actual; >> + if (drvdata->reading_node) >> + drvdata->reading_node->pos += actual; >> + else >> + *ppos += actual; >> + >> dev_dbg(&drvdata->csdev->dev, "%zu bytes copied\n", actual); >> >> return actual; >> >> -- >> 2.34.1 >