Received: by 2002:a05:6500:2018:b0:1fb:9675:f89d with SMTP id t24csp216033lqh; Thu, 30 May 2024 21:28:53 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWXuYOHlhE2NQU/39JC2ory98jAG7PFwGQtCO+o3rZ5k7GnUjUJD87WNZ2WMDrMfz/Qlb0S/bVhuwuATnjlh6EA19gHbBt25HjSZEgwUg== X-Google-Smtp-Source: AGHT+IHqm8rh8f1Drvz9XZg8vRvGfKDzQoIlL5iDQT56DXS8cSaCCED7hRpXVYDtr8mc2l0PMDns X-Received: by 2002:a17:906:d98:b0:a59:d063:f5f3 with SMTP id a640c23a62f3a-a6822445cbfmr48892466b.63.1717129733367; Thu, 30 May 2024 21:28:53 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717129733; cv=pass; d=google.com; s=arc-20160816; b=0jueg7IQp5Eitq+QW/jiUp0ivYUXdmuIGX9/yT2kft+g3GAvf6xhMVG3OBSxQ8BC0B s8JmEXNq+aTUJ8T601w2tvcHZPKIQ6McYXFkoIIW8xy0AK8y5Q2qyRxWCJudNCI23sUm J0zHXH3AEW962Jqikn2KYk/CuiIcoxqLPMiIvzucKYSG3SRxuc7I+brU+mkM5PW+oR8V ZmjsxVTVNkS8m562qW9g0R/uo3+d+fTiznw/ndNMoLI70Dhg67x+EoZkoo1oaPQYR1JV SRJ5am/CqcLEv4ptsyOPtuFVZk93cHtMPZqmMxYT7fWj4jj0e2TNdRZ27Np2Mb3up+W9 GEZw== 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=oq1FChqWgYXTDFRaT+Bwk07HTVNihgc7tjymY48sIlg=; fh=Lmcwnbrzc6iXxb3h/s4EQlBYs2WnsA2bZNBJIYM8/3Y=; b=prfbf9/Qzmj9jcrICvwNuSTEvqmTxlohqK9JD3YHnydukq6i7YWtGpzJgdgScufyE5 JoIUxcEL4RuNxr1OA8YVeiF0edG1+Gscn0wsJuWKk1d3vg+AOttjmw5qiFpjUs47fED2 VDvw2O1BfTvDrySypKPuxS/pyT4KRGV/t1eDz3anykTLSkrgki14IQ4vRGyMmVOY2FLu K5eApwnUEJ4f+lYoVpYk8KfyZXaI+rW0+O93vVYgP1SMhmxk3xYRtLTCxa3EfSDhzl5M 1AAHiIbh9AFaAQDy7aaQVEm2Lf0mtVlbGUnmbyYlcyCdTAxe5oMGWQNXxp1JrShdrMfz dE9g==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b="B/58D/i/"; 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-196243-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-196243-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id a640c23a62f3a-a684a226aabsi24973766b.432.2024.05.30.21.28.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 21:28:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-196243-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b="B/58D/i/"; 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-196243-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-196243-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 am.mirrors.kernel.org (Postfix) with ESMTPS id D59EB1F25203 for ; Fri, 31 May 2024 04:28:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 397BD7E0EA; Fri, 31 May 2024 04:28:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=marvell.com header.i=@marvell.com header.b="B/58D/i/" 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 E7A7D7D096; Fri, 31 May 2024 04:28:18 +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=1717129700; cv=none; b=X1sT6tpsj8uMWtudthVWICszESNmtVQoAYmYplVsCvkBnIJ3X7vgD0IAvKq1y4/rYF4QyHI5eBlz0Fqdsk+yX3p4wwmyGpHg57QOSNj1tb83X9OAS5MoFKOlSwYi0WqTLBM4rJZWXLmi7s5upxruMux+1rxMvuFy9FSYRTs96IE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717129700; c=relaxed/simple; bh=Pi7Gs6DCNhyeXhsIou85MrH16qpHf7kDKi8WPFaULQs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=phbC7o9grnYNuw+vtvUg9rYsVoBBStOeF1Pp2zD+mW5IihJe5qfXoInn4aGJii/k9jOCOVFdIL+kKV4vVc1oft8dnClVskA2ypgGoGWXlWqva2fUMPS6ZR17QNLG2cGkqmH2cWTQyTWWYjf7HkzoOM15OLAAPDIew15lMuKzlUI= 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=B/58D/i/; 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 44UHMeDB026970; Thu, 30 May 2024 21:28:11 -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=o q1FChqWgYXTDFRaT+Bwk07HTVNihgc7tjymY48sIlg=; b=B/58D/i/TU8WEfeAa Vvu1rQ1DxUQNyuA/kNJ5eXvUfpcnJz6cFmTP42lOI6L1n8eyWVZvstz5hG9tFRuI zNhXLOAZY/wXlhkGD4uWO30bhD3VOROwfrEcUsfZ0HotLiIksxAuqtfkoBtFljg/ Jk31Jx/MILa/07v8rx9+qV3Y2OiDYEfjWMGPYa6/sEwVCwUl6f0BXa/NzlQP49+d 8IbtDk8CkXvKerSZHx2TaMbiEUm/7UL3InadWZqQYxcXoJXF021vKzjMWHsCYgrT uaS4iortnL5gwUwrtkbvhI+jMoxjUNrWKpgxpEzcMm3BQm5FcOt1l9D8phIomiJ2 WO+Hw== Received: from dc5-exch05.marvell.com ([199.233.59.128]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3yewt3a0vw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 30 May 2024 21:28:11 -0700 (PDT) Received: from DC5-EXCH05.marvell.com (10.69.176.209) by DC5-EXCH05.marvell.com (10.69.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:10 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Thu, 30 May 2024 21:28:10 -0700 Received: from virtx40.. (unknown [10.28.34.196]) by maili.marvell.com (Postfix) with ESMTP id B41AE3F7085; Thu, 30 May 2024 21:28:06 -0700 (PDT) From: Linu Cherian To: , , CC: , , , , , , , , , Linu Cherian Subject: [PATCH v8 3/7] coresight: core: Add provision for panic callbacks Date: Fri, 31 May 2024 09:57:41 +0530 Message-ID: <20240531042745.494222-4-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: G5xtoLI3deMvgCjSb6OJoFXnEwQrCKhT X-Proofpoint-GUID: G5xtoLI3deMvgCjSb6OJoFXnEwQrCKhT 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 Panic callback handlers allows coresight device drivers to sync relevant trace data and trace metadata to reserved memory regions so that they can be retrieved later in the subsequent boot or in the crashdump kernel. Signed-off-by: Linu Cherian --- drivers/hwtracing/coresight/coresight-core.c | 37 ++++++++++++++++++++ include/linux/coresight.h | 12 +++++++ 2 files changed, 49 insertions(+) diff --git a/drivers/hwtracing/coresight/coresight-core.c b/drivers/hwtracing/coresight/coresight-core.c index b83613e34289..61d75aad476b 100644 --- a/drivers/hwtracing/coresight/coresight-core.c +++ b/drivers/hwtracing/coresight/coresight-core.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "coresight-etm-perf.h" #include "coresight-priv.h" @@ -1365,6 +1366,36 @@ const struct bus_type coresight_bustype = { .name = "coresight", }; +static int coresight_panic_sync(struct device *dev, void *data) +{ + int mode; + struct coresight_device *csdev; + + /* Run through panic sync handlers for all enabled devices */ + csdev = container_of(dev, struct coresight_device, dev); + mode = coresight_get_mode(csdev); + + if ((mode == CS_MODE_SYSFS) || (mode == CS_MODE_PERF)) { + if (panic_ops(csdev)) + panic_ops(csdev)->sync(csdev); + } + + return 0; +} + +static int coresight_panic_cb(struct notifier_block *self, + unsigned long v, void *p) +{ + bus_for_each_dev(&coresight_bustype, NULL, NULL, + coresight_panic_sync); + + return 0; +} + +static struct notifier_block coresight_notifier = { + .notifier_call = coresight_panic_cb, +}; + static int __init coresight_init(void) { int ret; @@ -1377,6 +1408,10 @@ static int __init coresight_init(void) if (ret) goto exit_bus_unregister; + /* Register function to be called for panic */ + ret = atomic_notifier_chain_register(&panic_notifier_list, + &coresight_notifier); + /* initialise the coresight syscfg API */ ret = cscfg_init(); if (!ret) @@ -1391,6 +1426,8 @@ static int __init coresight_init(void) static void __exit coresight_exit(void) { cscfg_exit(); + atomic_notifier_chain_unregister(&panic_notifier_list, + &coresight_notifier); etm_perf_exit(); bus_unregister(&coresight_bustype); } diff --git a/include/linux/coresight.h b/include/linux/coresight.h index 5f288d475490..b156467c9baa 100644 --- a/include/linux/coresight.h +++ b/include/linux/coresight.h @@ -315,6 +315,7 @@ enum cs_mode { #define link_ops(csdev) csdev->ops->link_ops #define helper_ops(csdev) csdev->ops->helper_ops #define ect_ops(csdev) csdev->ops->ect_ops +#define panic_ops(csdev) csdev->ops->panic_ops /** * struct coresight_ops_sink - basic operations for a sink @@ -384,11 +385,22 @@ struct coresight_ops_helper { int (*disable)(struct coresight_device *csdev, void *data); }; + +/** + * struct coresight_ops_panic - Generic device ops for panic handing + * + * @sync : Sync the device register state/trace data + */ +struct coresight_ops_panic { + int (*sync)(struct coresight_device *csdev); +}; + struct coresight_ops { const struct coresight_ops_sink *sink_ops; const struct coresight_ops_link *link_ops; const struct coresight_ops_source *source_ops; const struct coresight_ops_helper *helper_ops; + const struct coresight_ops_panic *panic_ops; }; static inline u32 csdev_access_relaxed_read32(struct csdev_access *csa, -- 2.34.1