Received: by 2002:ab2:7903:0:b0:1fb:b500:807b with SMTP id a3csp851968lqj; Mon, 3 Jun 2024 02:48:57 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUW3N4yRl+L+7jdvTHsiWTOC/GlZrGL/UIwJemj1WaqswmGpN/NoG4hdcUU1SSN3Ee5rLA+HSdq3wKcuXolwkYOAK0uks+l5BOequflxA== X-Google-Smtp-Source: AGHT+IHadbGjJe2ywWOSWQdYl73gpg3r/RWm9Ftb2tfugY4RfVapWSeWzlFhiTf6EFQmo7smkaC8 X-Received: by 2002:a05:622a:1ba2:b0:43e:3d64:8c1 with SMTP id d75a77b69052e-43ff54a704fmr110664101cf.55.1717408137495; Mon, 03 Jun 2024 02:48:57 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717408137; cv=pass; d=google.com; s=arc-20160816; b=Ckv0mMm17Aoo1wKkLrafkvyEUZ5V9wsOz5+tHmZuzgIFjw3bMS3mWIT2SEyB4ddF3N gn9ZChO0EsTNjISLgvGDDY7O6tGUhhv4siVJP9eMYub6TqUe/kz7MWh6g17h+9aEU+X1 h9hMvEZMkdubpu/KjbIndFxAaMpTpoeHRY4meYgCenS4kHwZuO0JKQThDhpycW4j0Djx 0kZ3laDjVT6v9mTuDPs8g1p+dT9tnzm6pux5nC0vWi4zHWhTMouM3RoTVsXIUKsIIIYA ZeIShuKdl1up9r0YhGAuzJbtfO45uTY0qK7ol1HWMhJssvZ9yCc47Jq5cGVNiwlpBALb sTEw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=fssNGsW5ggA/7sCtA1fwddGw0A0IeOeVDefSmcXfuq0=; fh=SEZ8RLjv5iJhlA5O9kgXv9AVLNj0D6s/gyM1UUiqRmA=; b=RqpVQPt4FwA/LYW6ETPv+gR6S1dMVyT9zIzxmqa86/dfq5vcDIG9Og2oGJuMk9H6uX EAIDn4ZNdSFWYJscSO3SBwO0OPxvvROi9rT3YLAT/+hl5f4UlCu+mcewufCnjFfxwxnb XIEsFSRvFwCnuXbBCSGyW0nSIkt73ZGk6U/9cuNGxrWCFSrSUHxjUi/eagCy4CRhzLg9 4OG5qJ457NrjOZpn+6yxB7rupsfkHz+9ZmAhF9tWLVEjjJ8LTUqhb+UmvF5nwx0pGjlu i2VeMaC/rKAW+7vpkjsPv1sUzE6g3+IiZKbu1Z7ngmVEwWT0Im8mWTuA8q1cSqG9xBLb P0dQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=jGzJgV02; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-198930-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-198930-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id d75a77b69052e-43ff2582164si81551731cf.473.2024.06.03.02.48.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Jun 2024 02:48:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-198930-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=jGzJgV02; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-198930-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-198930-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id BDFA61C21457 for ; Mon, 3 Jun 2024 09:48:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 74F6B85C7B; Mon, 3 Jun 2024 09:44:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="jGzJgV02" 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 EB01984D34; Mon, 3 Jun 2024 09:44:22 +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=1717407864; cv=none; b=aSZNKQT5hbwm+hlmWBGQfIE67Ni1twvH8SOGqoDZdTldy6m3ptvo2qERPf3x2fXWolaOuseS9OQDN/CKsmdpZM76SaKmCJspPLZMcbA+PwrX26KKBxb7+YnEm12h3l7OzultRo2pCBSyRn8cuXLUnTWgoLeaRFXoOV5oEY4nQU8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717407864; c=relaxed/simple; bh=7uk/n4LsL4k2D4WNFxDqxya/t5rndF9UtZGej2dqQGs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=BYin+FGaOjigtMvLbSbUCJHHphmZRphnJic1nLYXYlBOZx3HkBUw4UwDRAddrR8Z4abk+it41IL0+r7tobHAR01TvNJXqelwMSYSRLbhMTAm4Yrj7COxT+MU+PIM6CXdpU9VF6EkCxelVkP4LYW4Q0mEVn7dAlp/y0JIhX8BhLQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=jGzJgV02; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4530TNdb019792; Mon, 3 Jun 2024 09:44:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= fssNGsW5ggA/7sCtA1fwddGw0A0IeOeVDefSmcXfuq0=; b=jGzJgV02dbeiqGQV lEMJgOMimMIJfnSjLnDkX6r3TvUwZIJyuxBDwylXOetAY2nPPijmt5uHI1Z1tE7r KB384c+yJ71taUZfTrtU68MmHqgpCyRU8vDzCUYZfnEDinwZm5qjleEOYg6IDDEP S1SuISjEk64QronTKCY/3AASOVBYO1jGkfLxoGp+FTZhqSC+cQYN4RkLGVwZ8ZlF tCA5pmnt3ofnlC0ifSCJ4LnjuAzaooCt47Vw+s3HHd5vuAsQ+25BIZb/p6MpX2s1 hkv7lY7GIzUWkd11MjE5bF3rmY7+3qLp9Ngxzx1bcWm/pG41/nKSVDKFdK44PfUN 8VXB4Q== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3yfw6qkhue-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 03 Jun 2024 09:44:07 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 4539i6T5018047 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 3 Jun 2024 09:44:06 GMT Received: from hu-jinlmao-lv.qualcomm.com (10.49.16.6) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Mon, 3 Jun 2024 02:44:06 -0700 From: Mao Jinlong To: Suzuki K Poulose , Mike Leach , James Clark , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mao Jinlong , "Alexander Shishkin" CC: , , , , , Tingwei Zhang , Yuanfang Zhang , Tao Zhang , songchai Subject: [PATCH v2 3/3] coresight: dummy: Add reserve atid support for dummy source Date: Mon, 3 Jun 2024 02:43:52 -0700 Message-ID: <20240603094354.2348-4-quic_jinlmao@quicinc.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20240603094354.2348-1-quic_jinlmao@quicinc.com> References: <20240603094354.2348-1-quic_jinlmao@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: nalasex01a.na.qualcomm.com (10.47.209.196) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: H8gMhTBx398ftw-Qs4hryUar8quVlxkP X-Proofpoint-ORIG-GUID: H8gMhTBx398ftw-Qs4hryUar8quVlxkP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.650,FMLib:17.12.28.16 definitions=2024-06-03_06,2024-05-30_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 mlxlogscore=999 clxscore=1015 impostorscore=0 malwarescore=0 mlxscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2405170001 definitions=main-2406030081 Some dummy source has static trace id configured in HW and it cannot be changed via software programming. Configure the trace id in device tree and reserve the id when device probe. Signed-off-by: Mao Jinlong --- .../sysfs-bus-coresight-devices-dummy-source | 15 +++++ drivers/hwtracing/coresight/coresight-dummy.c | 58 +++++++++++++++++-- 2 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-dummy-source diff --git a/Documentation/ABI/testing/sysfs-bus-coresight-devices-dummy-source b/Documentation/ABI/testing/sysfs-bus-coresight-devices-dummy-source new file mode 100644 index 000000000000..d93c198115c9 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-coresight-devices-dummy-source @@ -0,0 +1,15 @@ +What: /sys/bus/coresight/devices/dummy_source/enable_source +Date: June 2024 +KernelVersion: 6.9 +Contact: Mao Jinlong +Description: (RW) Enable/disable tracing of dummy source. A sink should be activated + before enabling the source. The path of coresight components linking + the source to the sink is configured and managed automatically by the + coresight framework. + +What: /sys/bus/coresight/devices/dummy_source/traceid +Date: June 2024 +KernelVersion: 6.9 +Contact: Mao Jinlong +Description: (R) Show the trace ID that will appear in the trace stream + coming from this trace entity. diff --git a/drivers/hwtracing/coresight/coresight-dummy.c b/drivers/hwtracing/coresight/coresight-dummy.c index ac70c0b491be..1f7133ac2c0b 100644 --- a/drivers/hwtracing/coresight/coresight-dummy.c +++ b/drivers/hwtracing/coresight/coresight-dummy.c @@ -11,10 +11,12 @@ #include #include "coresight-priv.h" +#include "coresight-trace-id.h" struct dummy_drvdata { struct device *dev; struct coresight_device *csdev; + u8 traceid; }; DEFINE_CORESIGHT_DEVLIST(source_devs, "dummy_source"); @@ -67,6 +69,32 @@ static const struct coresight_ops dummy_sink_cs_ops = { .sink_ops = &dummy_sink_ops, }; +/* User can get the trace id of dummy source from this node. */ +static ssize_t traceid_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + unsigned long val; + struct dummy_drvdata *drvdata = dev_get_drvdata(dev->parent); + + val = drvdata->traceid; + return scnprintf(buf, PAGE_SIZE, "%#lx\n", val); +} +static DEVICE_ATTR_RO(traceid); + +static struct attribute *coresight_dummy_attrs[] = { + &dev_attr_traceid.attr, + NULL, +}; + +static const struct attribute_group coresight_dummy_group = { + .attrs = coresight_dummy_attrs, +}; + +static const struct attribute_group *coresight_dummy_groups[] = { + &coresight_dummy_group, + NULL, +}; + static int dummy_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -74,6 +102,11 @@ static int dummy_probe(struct platform_device *pdev) struct coresight_platform_data *pdata; struct dummy_drvdata *drvdata; struct coresight_desc desc = { 0 }; + int ret, trace_id; + + drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); + if (!drvdata) + return -ENOMEM; if (of_device_is_compatible(node, "arm,coresight-dummy-source")) { @@ -85,6 +118,24 @@ static int dummy_probe(struct platform_device *pdev) desc.subtype.source_subtype = CORESIGHT_DEV_SUBTYPE_SOURCE_OTHERS; desc.ops = &dummy_source_cs_ops; + desc.groups = coresight_dummy_groups; + + ret = coresight_get_source_traceid(dev, &trace_id); + if (!ret) { + ret = coresight_trace_id_get_system_id(trace_id); + if (ret < 0) + return ret; + + drvdata->traceid = ret; + } else { + trace_id = coresight_trace_id_get_system_id(0); + if (trace_id < 0) { + ret = trace_id; + return ret; + } + drvdata->traceid = (u8)trace_id; + } + } else if (of_device_is_compatible(node, "arm,coresight-dummy-sink")) { desc.name = coresight_alloc_device_name(&sink_devs, dev); if (!desc.name) @@ -103,10 +154,6 @@ static int dummy_probe(struct platform_device *pdev) return PTR_ERR(pdata); pdev->dev.platform_data = pdata; - drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); - if (!drvdata) - return -ENOMEM; - drvdata->dev = &pdev->dev; platform_set_drvdata(pdev, drvdata); @@ -126,7 +173,10 @@ static void dummy_remove(struct platform_device *pdev) { struct dummy_drvdata *drvdata = platform_get_drvdata(pdev); struct device *dev = &pdev->dev; + struct device_node *node = dev->of_node; + if (of_device_is_compatible(node, "arm,coresight-dummy-source")) + coresight_trace_id_put_system_id(drvdata->traceid); pm_runtime_disable(dev); coresight_unregister(drvdata->csdev); } -- 2.41.0