Received: by 2002:a05:6500:2018:b0:1fb:9675:f89d with SMTP id t24csp216384lqh; Thu, 30 May 2024 21:30:03 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCU6z70n0Av8INdMvbCisIlfXtDA4N3tcV7z/Xmk4YYAN5dGKSNcm3WgzJkbd7Wja2mUISNNUH8lFWfKa0mQ1bWUytOQo122b3iPP8UUBA== X-Google-Smtp-Source: AGHT+IGCbCrIH3pVR+7GFDojLxjzDzxlqeBKCvRbAr96Bek5/xMVu27/vONMk9sDCIsZvr8FaPzw X-Received: by 2002:a05:6e02:1b03:b0:374:5a2d:178 with SMTP id e9e14a558f8ab-3748b96e9aemr9759065ab.2.1717129803366; Thu, 30 May 2024 21:30:03 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717129803; cv=pass; d=google.com; s=arc-20160816; b=aWu0I7DUzn0ySSdvc46pL+KkkdVqQDS4mDu2FimGZTL9wBsFhCHdWFy7cs74ldais4 FKM7aI2ev808fSvfnaLZot7TMIbt5/bkjT9nARaYrqXRwtCyl+B9MJSR0/f84KN3Hhf+ Hj3jCKlBM7bLRN0+PdAgKMhPxvt8N1RkLFmUktqhlJc1bOK6DuDEay00aZrStRo055EY 3NrSgxXOjSzmPTjoWOM4atnkiv9+je+Neq78n4755YUBxfhR9kEndq0yA5+VsJzzyOvc vP7/TMlM68mUzZaqOTA540wtCtvdB5TZCeMM157DjD1M4ktJrhBUP9RgmDogHEH+OdRJ jfgw== 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=9vl1fSJI3DcYlhu4uuhCZS8Mx5pDAX4GwmZyihQ/FnY=; fh=Lmcwnbrzc6iXxb3h/s4EQlBYs2WnsA2bZNBJIYM8/3Y=; b=COFhJw6HKXO8ODhDS4h8bNbAXpj2ZLCUNAitMjnBfcm6sWqY8UoZ8kKrg3Hlqyys6Q q3GUllkGIZydi0GB3zytRxVMOrODa4wUaJx8eTf6y8ZkZFG56kdLwOYRNppH94aiewQ6 5SoV3CVo9rR9Xfthoqc6LKAQhgpIpf3fT+rRaGimB/+cD31LOLQqdGPGiZH7/01PFtvy fuppZ4gXaLDOoCyOqwUAu9UCuycA7WRrdsE5lV7ab8uKeNUfP765au2faANxEylADQNm OV/fv7S1bcAehlyw5I5Eo/ZpciMYOQeVMXvEnGIN9/zxPlMYyd5LuRF5eep12q+XWup9 dVOQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=GYSAp3Tl; arc=pass (i=1 spf=pass spfdomain=marvell.com dkim=pass dkdomain=marvell.com dmarc=pass fromdomain=marvell.com); spf=pass (google.com: domain of linux-kernel+bounces-196247-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-196247-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id 41be03b00d2f7-6c3d35d2741si2923a12.632.2024.05.30.21.30.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 21:30:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-196247-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=GYSAp3Tl; arc=pass (i=1 spf=pass spfdomain=marvell.com dkim=pass dkdomain=marvell.com dmarc=pass fromdomain=marvell.com); spf=pass (google.com: domain of linux-kernel+bounces-196247-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-196247-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.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 sy.mirrors.kernel.org (Postfix) with ESMTPS id 06AD3B2264E for ; Fri, 31 May 2024 04:30:01 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 171977FBCE; Fri, 31 May 2024 04:28:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=marvell.com header.i=@marvell.com header.b="GYSAp3Tl" Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) (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 B35AA7D3F5; Fri, 31 May 2024 04:28:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.148.174 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717129729; cv=none; b=tGwQJxkVQ2lNL6N31MsX6MQbqeCgNKUqO9lWZncxNqIUoS+GDLmK4qraQeR3t5y6cPyjHzrsMc4yA/zn4NGfxCm8H8A9Ao3RR1OThZ3ECM4WP2A5ybChN21i/1Ry05j5CqLmaz6rlifF4KPWzgXb6bfbqApHA+V8Jw2JNTNqIhg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717129729; c=relaxed/simple; bh=aBIav5FUlfpbR0odw86lo2ssUGdwsEk6buirTNMgl0s=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=DPOB4pvkACNzdUm7HtgcYILMxjpVUOK5Ff8H7y+qIcKyUd/T8m7DZHfYoz9L7Mbr+sxBSdvDY3xkFy2DU3K3GJCrVOWe5OQqWXcl9pmC1Ks/8skyOtdegNvnZn7IGMcsvq58D5lxmDZe2xHd+K8Wk3ILK0CwbbLPB1AIINju5v0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=marvell.com; spf=pass smtp.mailfrom=marvell.com; dkim=pass (2048-bit key) header.d=marvell.com header.i=@marvell.com header.b=GYSAp3Tl; arc=none smtp.client-ip=67.231.148.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=marvell.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=marvell.com Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 44UHMtuB027057; Thu, 30 May 2024 21:28:31 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=9 vl1fSJI3DcYlhu4uuhCZS8Mx5pDAX4GwmZyihQ/FnY=; b=GYSAp3TlKIOgoOmtB MsznVDApQ8RGuko7oEvLTTANgiLkbTQ9q24uCR2cYL4nBSd0vJgivSnAG/YoH3ZR lUERTGyjQuzTqGaUpA1Nkdvs6vuvcDdowPWZuVsZAZdEVMljuiMZEs7nlwP/eHPU dcHg3TxhYmx8SkGSOKcPoFL+PZ1DTg/zUqP/GsfWOPcu5aAP91vZLV6MrIw5z5MR Dgqm2xApi4N3e2cbC5dHPPNPyYgwe4bbcKMfOgzOJuX9G5+y0kLLKW/P6f9NhrU2 Wum/4+PtLzrkQFvEV4oUHhKo3uXsI7MRn7StvK4WN8Ri4f7QdVWQ76jnEd/0JwMt JEkPg== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3yewt3a0we-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 30 May 2024 21:28:31 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 30 May 2024 21:28:28 -0700 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Thu, 30 May 2024 21:28:28 -0700 Received: from virtx40.. (unknown [10.28.34.196]) by maili.marvell.com (Postfix) with ESMTP id 6F9B63F7085; Thu, 30 May 2024 21:28:24 -0700 (PDT) From: Linu Cherian To: , , CC: , , , , , , , , , Linu Cherian Subject: [PATCH v8 7/7] coresight: config: Add preloaded configuration Date: Fri, 31 May 2024 09:57:45 +0530 Message-ID: <20240531042745.494222-8-lcherian@marvell.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240531042745.494222-1-lcherian@marvell.com> References: <20240531042745.494222-1-lcherian@marvell.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-Proofpoint-ORIG-GUID: hQ5e4V4NPe19k6_TtTuQ1xwLLi8CaqVM X-Proofpoint-GUID: hQ5e4V4NPe19k6_TtTuQ1xwLLi8CaqVM 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-05-30_21,2024-05-30_01,2024-05-17_01 Add a preloaded configuration for generating external trigger on address match. This can be used by CTI and ETR blocks to stop trace capture on kernel panic. Kernel address for "panic" function is used as the default trigger address. This new configuration is available as, /sys/kernel/config/cs-syscfg/configurations/panicstop Signed-off-by: Linu Cherian --- drivers/hwtracing/coresight/Makefile | 2 +- .../coresight/coresight-cfg-preload.c | 2 + .../coresight/coresight-cfg-preload.h | 2 + .../hwtracing/coresight/coresight-cfg-pstop.c | 83 +++++++++++++++++++ 4 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 drivers/hwtracing/coresight/coresight-cfg-pstop.c diff --git a/drivers/hwtracing/coresight/Makefile b/drivers/hwtracing/coresight/Makefile index 4ba478211b31..46ce7f39d05f 100644 --- a/drivers/hwtracing/coresight/Makefile +++ b/drivers/hwtracing/coresight/Makefile @@ -25,7 +25,7 @@ subdir-ccflags-y += $(condflags) obj-$(CONFIG_CORESIGHT) += coresight.o coresight-y := coresight-core.o coresight-etm-perf.o coresight-platform.o \ coresight-sysfs.o coresight-syscfg.o coresight-config.o \ - coresight-cfg-preload.o coresight-cfg-afdo.o \ + coresight-cfg-preload.o coresight-cfg-afdo.o coresight-cfg-pstop.o \ coresight-syscfg-configfs.o coresight-trace-id.o obj-$(CONFIG_CORESIGHT_LINK_AND_SINK_TMC) += coresight-tmc.o coresight-tmc-y := coresight-tmc-core.o coresight-tmc-etf.o \ diff --git a/drivers/hwtracing/coresight/coresight-cfg-preload.c b/drivers/hwtracing/coresight/coresight-cfg-preload.c index e237a4edfa09..4980e68483c5 100644 --- a/drivers/hwtracing/coresight/coresight-cfg-preload.c +++ b/drivers/hwtracing/coresight/coresight-cfg-preload.c @@ -13,6 +13,7 @@ static struct cscfg_feature_desc *preload_feats[] = { #if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X) &strobe_etm4x, + &gen_etrig_etm4x, #endif NULL }; @@ -20,6 +21,7 @@ static struct cscfg_feature_desc *preload_feats[] = { static struct cscfg_config_desc *preload_cfgs[] = { #if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X) &afdo_etm4x, + &pstop_etm4x, #endif NULL }; diff --git a/drivers/hwtracing/coresight/coresight-cfg-preload.h b/drivers/hwtracing/coresight/coresight-cfg-preload.h index 21299e175477..291ba530a6a5 100644 --- a/drivers/hwtracing/coresight/coresight-cfg-preload.h +++ b/drivers/hwtracing/coresight/coresight-cfg-preload.h @@ -10,4 +10,6 @@ #if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X) extern struct cscfg_feature_desc strobe_etm4x; extern struct cscfg_config_desc afdo_etm4x; +extern struct cscfg_feature_desc gen_etrig_etm4x; +extern struct cscfg_config_desc pstop_etm4x; #endif diff --git a/drivers/hwtracing/coresight/coresight-cfg-pstop.c b/drivers/hwtracing/coresight/coresight-cfg-pstop.c new file mode 100644 index 000000000000..c2bfbd07bfaf --- /dev/null +++ b/drivers/hwtracing/coresight/coresight-cfg-pstop.c @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright(C) 2023 Marvell. + * Based on coresight-cfg-afdo.c + */ + +#include "coresight-config.h" + +/* ETMv4 includes and features */ +#if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X) +#include "coresight-etm4x-cfg.h" + +/* preload configurations and features */ + +/* preload in features for ETMv4 */ + +/* panic_stop feature */ +static struct cscfg_parameter_desc gen_etrig_params[] = { + { + .name = "address", + .value = (u64)panic, + }, +}; + +static struct cscfg_regval_desc gen_etrig_regs[] = { + /* resource selector */ + { + .type = CS_CFG_REG_TYPE_RESOURCE, + .offset = TRCRSCTLRn(2), + .hw_info = ETM4_CFG_RES_SEL, + .val32 = 0x40001, + }, + /* single address comparator */ + { + .type = CS_CFG_REG_TYPE_RESOURCE | CS_CFG_REG_TYPE_VAL_64BIT | + CS_CFG_REG_TYPE_VAL_PARAM, + .offset = TRCACVRn(0), + .val32 = 0x0, + }, + { + .type = CS_CFG_REG_TYPE_RESOURCE, + .offset = TRCACATRn(0), + .val64 = 0xf00, + }, + /* Driver external output[0] with comparator out */ + { + .type = CS_CFG_REG_TYPE_RESOURCE, + .offset = TRCEVENTCTL0R, + .val32 = 0x2, + }, + /* end of regs */ +}; + +struct cscfg_feature_desc gen_etrig_etm4x = { + .name = "gen_etrig", + .description = "Generate external trigger on address match\n" + "parameter \'address\': address of kernel address\n", + .match_flags = CS_CFG_MATCH_CLASS_SRC_ETM4, + .nr_params = ARRAY_SIZE(gen_etrig_params), + .params_desc = gen_etrig_params, + .nr_regs = ARRAY_SIZE(gen_etrig_regs), + .regs_desc = gen_etrig_regs, +}; + +/* create a panic stop configuration */ + +/* the total number of parameters in used features */ +#define PSTOP_NR_PARAMS ARRAY_SIZE(gen_etrig_params) + +static const char *pstop_ref_names[] = { + "gen_etrig", +}; + +struct cscfg_config_desc pstop_etm4x = { + .name = "panicstop", + .description = "Stop ETM on kernel panic\n", + .nr_feat_refs = ARRAY_SIZE(pstop_ref_names), + .feat_ref_names = pstop_ref_names, + .nr_total_params = PSTOP_NR_PARAMS, +}; + +/* end of ETM4x configurations */ +#endif /* IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X) */ -- 2.34.1