From nobody Fri Oct 18 04:49:59 2024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1750CD5BCD for ; Tue, 19 Sep 2023 15:15:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233122AbjISPPG (ORCPT ); Tue, 19 Sep 2023 11:15:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233026AbjISPPB (ORCPT ); Tue, 19 Sep 2023 11:15:01 -0400 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2050.outbound.protection.outlook.com [40.107.6.50]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D71C011A; Tue, 19 Sep 2023 08:14:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e1o1m+sFFVlqDdoHl9jqyJq1Xrp2ugp6oXMdrV2UXRNKTxEOr+NEU/XXCuTTwWQ9XneDznZfaRUUaABXDR0pkGcWJW/lBecb3tGp3gp8IMReKc2LbMKEVgsOxiDNHtiU7eTJgIzgDAMr1jOy9QXNG9ISofzhI3ZnAwf48ssY/doEp3Zm8Loff6WI/F2WLrIpX2gRPB7ko59O6IyQH5JRbc0pRr3EX2p8egxbBnyTiRf1fA6qwtjTIxCoC4eRrJTJt0XI7hkQpUm4QR8LD9P2XlbZnQjD0ezhb5zxnFwLdsz/Nf47a0ZEy3cgK69Os2bqItZFrzPC/KunU7VbQMFcLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=cpEc1Ms+p3C7DZca+oD81/SeTjHRAuq1zpspSFi0zfc=; b=BKbGe1D120xsYZWKyGAVpxU7v5yeyQvrYb70+pvJh7d4zYV+ZNiIXYN54UkqtatjRDE0G7uFvkh9cgpFKAJXaqaqHPQByTxv0T43d6XRZD4xH7e0jDmTSxamzoo2Yo96/gZbFLjbk/shWN58quMdTjj7hIaVI/gHGt2Q4+W1jbbLUV8FdrlKtI7jFO23lRX38OwUckpzXC7ggk+3Zx9pFoFoE6gNViskGRKSHlM89CBni5mvFAFgN0+YH7g+AWL9W+8EHzYI0W/utKAXD24NNEhzyWPuzt3mJ2+yggG6qX1d0GNU4khYqohyEmzrb8BL+s4WIfZRj6iHl/lDkxsjAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cpEc1Ms+p3C7DZca+oD81/SeTjHRAuq1zpspSFi0zfc=; b=oO24DBuRvoP9aAUEfe3IXrndyVGa7uTiQm3p1snOPd9n4luJNwSiM7+2vEXItZLQ+P+ahGXotCBHdVEbJ8Gi0eXl4XZLEDBSG1M+u1lY4i2+xjrPDuyDYJx2aDS1znCkHwLEz+o7R06eVHgJ6jsiOyLpRUZyRbSQmM2pqU2zcp0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by PAXPR04MB8457.eurprd04.prod.outlook.com (2603:10a6:102:1d8::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.27; Tue, 19 Sep 2023 15:14:51 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6792.026; Tue, 19 Sep 2023 15:14:51 +0000 From: Frank Li To: vkoul@kernel.org, linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev Subject: [PATCH v2 1/2] dmaengine: fsl-emda: add debugfs support Date: Tue, 19 Sep 2023 11:14:29 -0400 Message-Id: <20230919151430.2919042-2-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230919151430.2919042-1-Frank.Li@nxp.com> References: <20230919151430.2919042-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ2PR07CA0020.namprd07.prod.outlook.com (2603:10b6:a03:505::19) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|PAXPR04MB8457:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c7bd284-2001-4db5-fa35-08dbb9232b68 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: reGsxz0UmaO3qZvD67C0BfDeNRTa+bpbsndhQ1MeIY+LVywBBlq+oCgOKSdeVTtUNC8CYSHUaU2TMYPIzXD3z8s6NS7N2X6mF4+FfuKYKx2Yh3icC+AbKTJev0BxvcmSELhZPiH7xfBAUsfjykwvxMWIM5vsYodEGKXf8kjpiTV48lu3IIc6KzYef1mI5wse5Y1pC2hF+tO3KKdoUHU/CwemJyGa0Sjifq0uQiLlbe/NCo12fm7b4PE79jNZtSo2Qk3TIS/390lZPoGYFrEITJ7o341KJjdgyKwLxmjihKTHWiY3kkpX7TQXGkNOcZ0J2feA8IwvuwYTq6q6rBCnAthdWcRwJusFnzrnno+A4FoP6SWxFB/+J1tbqD86srS0vNSXhAuIpgcMHspgx83PUv1bULhjyvsnnI+t0mtGjREcsg1z6xdy3qyt3ZteACoWjxZTXVlWrZoym/TI0y5hE6H0UcNjf03+na3fBS7jbnaSerxiAAOKNB2r5S96ktKdavYpbRKsDASwllBuEfS23AwVb8qStEtZyGXAF4HArq4ZtcG7mVr5ovCYjowMOY2JYUix2T124nvvnM1lEPtTvyFHHA+oOUTy4/B2mJ181d1G49irCMUiCpqemWcKiU4y X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(136003)(366004)(346002)(39860400002)(396003)(451199024)(186009)(1800799009)(2906002)(5660300002)(8676002)(8936002)(1076003)(41300700001)(316002)(66556008)(66476007)(66946007)(478600001)(6666004)(52116002)(6506007)(6486002)(2616005)(26005)(83380400001)(6512007)(38350700002)(38100700002)(36756003)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HKtwtRDN5cwF8NZQzbjAHvv9N2X6sP0ZXdEy1lTj0MOR/lKtHKAsgqvbCu1s?= =?us-ascii?Q?1N2M/mdqIznfZbejhnOEb5FYYh3Xaw51fvIWJMAB0xfS3Lfph7HUcHwDSDju?= =?us-ascii?Q?c0LSUmCuDPPpDsva/kuyH+W9DYbTegL/X3JpNqMJlwODvg7XLKCPL75J6fLH?= =?us-ascii?Q?wCK0LZzUENONOe3ILNYjZOoByvLa+uj1YXfrxEVP7O7HEYmgBweOIR4qGT5K?= =?us-ascii?Q?KAmByOmkyP0d7MCh9eAUP2N7DG6YgiPTP6VMYl6BTizWqbwK41yHIspJjC8W?= =?us-ascii?Q?0EW5BsoAgTzfnus/vjh0koNQGt5MBJA1YC3Be53zQvWdz8/e14kBlEqJ1djF?= =?us-ascii?Q?kN2sFY4bFDElKhpgkCOBsXqQCYTWBI3J7n92Gm4aGWSGpQEk4XF2ueNd9V4w?= =?us-ascii?Q?CqOEi+AYHOIKcn3S3psiANtkV7JHzpI1gfc/fl7qpNJZMctJlxHLmQWM74xo?= =?us-ascii?Q?rH7xrimJr/iLbbZCLyfIY/Elg3kxIAFOozpSrP+9ZT+gKBeuxj64DYUPBUBg?= =?us-ascii?Q?JA6x24GsfgQ9jtvj3YX1ZsbN2szUqXptzvtXsxDTZcyYWl63XIzwH363ukx3?= =?us-ascii?Q?2OxThxyDuA0RyVTBGvPjaDSL3hTUD0/dYHQJCjziD8E2H+rdO7ygmkqj5UiB?= =?us-ascii?Q?iaCT8Q81g/04XsgjjzW1eD9EeXhFpOfnjLRIwciTNKQgZSx9Y0y5mPc+0Z0/?= =?us-ascii?Q?fO3Nyu1RYVcH6IBolX+m0/aNL2+hKiBNNi0F6So3I84AgJai76brzZCTpr4S?= =?us-ascii?Q?K8iM+3/fzv8plfso5z79M8BdcuI3IECkqHZoF8MKlhvAydo7gjKnmxOwFqrV?= =?us-ascii?Q?Al3RGmB2NzC+cdbiQ07BuGDm89aV9Wk4Lfwnpk6LcSGQDc1fsTJ4Lpy+h/Va?= =?us-ascii?Q?JnC4qv3RHpi9Tp8ktPsz6tklxvHJDoasXqsP9OCQlBPyFJP/zf/fjBNnMZ4P?= =?us-ascii?Q?Qd2w/EQ7U/MtQt6JV9gHdNTfWRUIL7en0hN9dp9nVgsK8fTu/pC+MaY0uQRa?= =?us-ascii?Q?083QtTiJYZ3r6rNeN9ZA8txqhtupXyk53hc7zlmCITk6WbFrg9Qnx/xYoMhX?= =?us-ascii?Q?uoL+tKfo4joHg3RrY+Au4clewWAb5oidyVn4xvoAOV7H5N6TalXUgBXbPynt?= =?us-ascii?Q?XrsZxwkgeAw3KtB7OwzrjOZZ9P9ZQjXTJImK7drMBXpGwnT7g6RCesQwKauE?= =?us-ascii?Q?Zb7lUwEjuQCh1loPzSLLITzT892dukSZjr7nrjdOetMzPB/aRevduPpBWuSk?= =?us-ascii?Q?sNneSDFFbiaPVLkLyEK8QdFj3zETGVlwcjkVaW1vBva7h2r7KSgjVE2gjE23?= =?us-ascii?Q?O2a5NgEW+Sr89yWf0iKiUyY72l20zp2zckQtJj7Ue9Yxq8S4fHcpSG3pCsIO?= =?us-ascii?Q?A5VRP0vJtMa1A+9HpOy2YoYSNxE94gRjFOpBwcT2ndJBtctS/RkLxuUSEDdh?= =?us-ascii?Q?Z+hCWhc/LTxzV3NtzhwHONjobtDjDXqsUUS7JzR+5lhwGBaCmM7voLSV8EvQ?= =?us-ascii?Q?yhRi+u5t0/pqnf2tb+8BlmPtoelUfZMZuNDcdWmroyc+LcE7bmgY/ARz04JL?= =?us-ascii?Q?X5ievTzFoUfO07F+8gM=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c7bd284-2001-4db5-fa35-08dbb9232b68 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2023 15:14:51.0048 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hfqP4mNMKfS3xxBEeYAiNhPvIYWlbW4Nozgz+dS+skcMRarH9oiPgpztVJn6JMPFV486K9OFULBk9m6luACDlA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8457 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add debugfs support to fsl-edma to enable dumping of register states. Signed-off-by: Frank Li --- drivers/dma/Makefile | 5 +- drivers/dma/fsl-edma-common.h | 8 +++ drivers/dma/fsl-edma-debugfs.c | 116 +++++++++++++++++++++++++++++++++ drivers/dma/fsl-edma-main.c | 2 + 4 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 drivers/dma/fsl-edma-debugfs.c diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile index 83553a97a010e..a51c6397bcad0 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile @@ -31,10 +31,11 @@ obj-$(CONFIG_DW_AXI_DMAC) +=3D dw-axi-dmac/ obj-$(CONFIG_DW_DMAC_CORE) +=3D dw/ obj-$(CONFIG_DW_EDMA) +=3D dw-edma/ obj-$(CONFIG_EP93XX_DMA) +=3D ep93xx_dma.o +fsl-edma-debugfs-$(CONFIG_DEBUG_FS) :=3D fsl-edma-debugfs.o obj-$(CONFIG_FSL_DMA) +=3D fsldma.o -fsl-edma-objs :=3D fsl-edma-main.o fsl-edma-common.o +fsl-edma-objs :=3D fsl-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y) obj-$(CONFIG_FSL_EDMA) +=3D fsl-edma.o -mcf-edma-objs :=3D mcf-edma-main.o fsl-edma-common.o +mcf-edma-objs :=3D mcf-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y) obj-$(CONFIG_MCF_EDMA) +=3D mcf-edma.o obj-$(CONFIG_FSL_QDMA) +=3D fsl-qdma.o obj-$(CONFIG_FSL_RAID) +=3D fsl_raid.o diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 3cc0cc8fc2d05..ecaba563d4897 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -336,4 +336,12 @@ void fsl_edma_free_chan_resources(struct dma_chan *cha= n); void fsl_edma_cleanup_vchan(struct dma_device *dmadev); void fsl_edma_setup_regs(struct fsl_edma_engine *edma); =20 +#ifdef CONFIG_DEBUG_FS +void fsl_edma_debugfs_on(struct fsl_edma_engine *edma); +#else +static inline void fsl_edma_debugfs_on(struct dw_edma *edma) +{ +} +#endif /* CONFIG_DEBUG_FS */ + #endif /* _FSL_EDMA_COMMON_H_ */ diff --git a/drivers/dma/fsl-edma-debugfs.c b/drivers/dma/fsl-edma-debugfs.c new file mode 100644 index 0000000000000..dadb8b29d0977 --- /dev/null +++ b/drivers/dma/fsl-edma-debugfs.c @@ -0,0 +1,116 @@ +#include +#include + +#include "fsl-edma-common.h" + +#define fsl_edma_debugfs_reg(reg, dir, __name) \ +((sizeof(reg->__name) =3D=3D sizeof(u32)) ? \ + debugfs_create_x32(__stringify(__name), 0644, dir, (u32 *)®->__name) := \ + debugfs_create_x16(__stringify(__name), 0644, dir, (u16 *)®->__name) \ +) + +#define fsl_edma_debugfs_regv1(reg, dir, __name) \ + debugfs_create_x32(__stringify(__name), 0644, dir, reg.__name) + +static void fsl_edma_debufs_tcdreg(struct fsl_edma_chan *chan, struct dent= ry *dir) +{ + fsl_edma_debugfs_reg(chan->tcd, dir, saddr); + fsl_edma_debugfs_reg(chan->tcd, dir, soff); + fsl_edma_debugfs_reg(chan->tcd, dir, attr); + fsl_edma_debugfs_reg(chan->tcd, dir, nbytes); + fsl_edma_debugfs_reg(chan->tcd, dir, slast); + fsl_edma_debugfs_reg(chan->tcd, dir, daddr); + fsl_edma_debugfs_reg(chan->tcd, dir, doff); + fsl_edma_debugfs_reg(chan->tcd, dir, citer); + fsl_edma_debugfs_reg(chan->tcd, dir, dlast_sga); + fsl_edma_debugfs_reg(chan->tcd, dir, csr); + fsl_edma_debugfs_reg(chan->tcd, dir, biter); +} + +static void fsl_edma3_debufs_chan(struct fsl_edma_chan *chan, struct dentr= y *entry) +{ + struct fsl_edma3_ch_reg *reg; + struct dentry *dir; + + reg =3D container_of(chan->tcd, struct fsl_edma3_ch_reg, tcd); + fsl_edma_debugfs_reg(reg, entry, ch_csr); + fsl_edma_debugfs_reg(reg, entry, ch_int); + fsl_edma_debugfs_reg(reg, entry, ch_sbr); + fsl_edma_debugfs_reg(reg, entry, ch_pri); + fsl_edma_debugfs_reg(reg, entry, ch_mux); + fsl_edma_debugfs_reg(reg, entry, ch_mattr); + + dir =3D debugfs_create_dir("tcd_regs", entry); + + fsl_edma_debufs_tcdreg(chan, dir); +} + +static void fsl_edma3_debugfs_init(struct fsl_edma_engine *edma) +{ + struct fsl_edma_chan *chan; + struct dentry *dir; + int i; + + for (i =3D 0; i < edma->n_chans; i++) { + if (edma->chan_masked & BIT(i)) + continue; + + chan =3D &edma->chans[i]; + dir =3D debugfs_create_dir(chan->chan_name, edma->dma_dev.dbg_dev_root); + + fsl_edma3_debufs_chan(chan, dir); + } + +} + +static void fsl_edma_debugfs_init(struct fsl_edma_engine *edma) +{ + struct fsl_edma_chan *chan; + struct dentry *dir; + int i; + + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, cr); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, es); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, erqh); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, erql); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, eeih); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, eeil); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, seei); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, ceei); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, serq); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, cerq); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, cint); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, cerr); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, ssrt); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, cdne); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, inth); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, errh); + fsl_edma_debugfs_regv1(edma->regs, edma->dma_dev.dbg_dev_root, errl); + + for (i =3D 0; i < edma->n_chans; i++) { + if (edma->chan_masked & BIT(i)) + continue; + + chan =3D &edma->chans[i]; + dir =3D debugfs_create_dir(chan->chan_name, edma->dma_dev.dbg_dev_root); + + fsl_edma_debufs_tcdreg(chan, dir); + } +} + +void fsl_edma_debugfs_on(struct fsl_edma_engine *edma) +{ + if (!debugfs_initialized()) + return; + + debugfs_create_bool("big_endian", 0444, edma->dma_dev.dbg_dev_root, &edma= ->big_endian); + debugfs_create_x64("chan_mask", 0444, edma->dma_dev.dbg_dev_root, &edma->= chan_masked); + debugfs_create_x32("n_chans", 0444, edma->dma_dev.dbg_dev_root, &edma->n_= chans); + + if (edma->drvdata->flags & FSL_EDMA_DRV_SPLIT_REG) + fsl_edma3_debugfs_init(edma); + else + fsl_edma_debugfs_init(edma); +} + + diff --git a/drivers/dma/fsl-edma-main.c b/drivers/dma/fsl-edma-main.c index 63d48d046f046..029a72872821d 100644 --- a/drivers/dma/fsl-edma-main.c +++ b/drivers/dma/fsl-edma-main.c @@ -612,6 +612,8 @@ static int fsl_edma_probe(struct platform_device *pdev) if (!(drvdata->flags & FSL_EDMA_DRV_SPLIT_REG)) edma_writel(fsl_edma, EDMA_CR_ERGA | EDMA_CR_ERCA, regs->cr); =20 + fsl_edma_debugfs_on(fsl_edma); + return 0; } =20 --=20 2.34.1 From nobody Fri Oct 18 04:49:59 2024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48AB4CD5BD4 for ; Tue, 19 Sep 2023 15:15:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233131AbjISPPL (ORCPT ); Tue, 19 Sep 2023 11:15:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233125AbjISPPH (ORCPT ); Tue, 19 Sep 2023 11:15:07 -0400 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on2075.outbound.protection.outlook.com [40.107.14.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9DB39ED; Tue, 19 Sep 2023 08:15:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UMQCBd+v27leOByNny07zo2N9bHgfUwlhF8QxIXTFdRFqCH6GBW2ePS2kP/wkkO7cglbeZZvDz0u4pTDLNoEf9BSg/QwNlx2GBK0YYms08jKIKWMp9pYjqWU0mTmTmJT8HvlyA7BMfpqplbzYS/BDu4rquhV6LUupG9SQSSJy8qsfIntE3U3kiMCpbD26nxf1xo2nyo+OK/pVoePyJhkzAdGOQufvRHJ7bW1N5DSJz91lrFInlQshyc3gDxxo6tCejpfIknxB7R4RJaIJnbuWV1bbfHmW6hMrMTA9HZgItklpM2fEX3HtImy0h9x2fx75ltyPwM+IXEqc3t93WxgSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=suFFO2JdZp+dTwCX7WssuZc+wZDZlUuPAkbBjIrxDjw=; b=bYmnylu0g0PH9c2icIFuMbMg/spGCDfROi2byp8VOt/3hTG3ubUO9lzGqQLyi59j9XoxXcCDxitLfOI8FPV+u/kdgF07eDS9BZpCcTV0ZzmhH5ufJfQrb5ZA0ky62mVhTbwwCYkDvuPe7F4t5vrOPuNa9pupb2kPIsihq71kPJCz4gsw4mOTWeDkglzvAXjLIt9eACvdG4DZopV4pLibJyG0YM/ripFcXuqMDIKFTiHCh0cPcjze+3KGVYFzk/xmAUJbCR0ufvyvQaWPZyIT2AgOjvh8X6mTNWCxjEPIhzEsfCrlxsIoeYZzlYnOSVze5DhT4Ak+9sHj4SMB+cn6Gg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=suFFO2JdZp+dTwCX7WssuZc+wZDZlUuPAkbBjIrxDjw=; b=l5HW/qv5nMM3rIyeypmDh2FEvwsFSvrfF6covNRIYvAkp6VHmKcdO9oj0R4Ej5fNVPLjj0L/znnxDHGLHZVPBwEWrmDDKax76spFIoBLSq5uQicwTfoXB7F/7sr6dULWVzxqKmpP24xhVMI+Agc4RyJk5N1PB6tAEWKtifBljlE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by GVXPR04MB9829.eurprd04.prod.outlook.com (2603:10a6:150:116::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.27; Tue, 19 Sep 2023 15:14:52 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6792.026; Tue, 19 Sep 2023 15:14:52 +0000 From: Frank Li To: vkoul@kernel.org, linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev Subject: [PATCH v2 2/2] dmaengine: fsl-edma: add trace event support Date: Tue, 19 Sep 2023 11:14:30 -0400 Message-Id: <20230919151430.2919042-3-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230919151430.2919042-1-Frank.Li@nxp.com> References: <20230919151430.2919042-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ2PR07CA0020.namprd07.prod.outlook.com (2603:10b6:a03:505::19) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|GVXPR04MB9829:EE_ X-MS-Office365-Filtering-Correlation-Id: 456c5b86-d0f5-4d87-4a79-08dbb9232c82 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EgS+7GOBdIFWSAbpTAN/8VV4Od0x5S/ZXcd4u09Mytv72HXCRuxBtxQj5DTwX0o4oiXrKm43eQA+ReEK+JaNLApar3YR99kFM/RdDHfiWRRgvqt8KzkidJNwFlBJi4ymcRx7DXibRDKA7evM2CB/DJlDDQYsruNgxoEqAPSX8ou4RK+c+aAatg7J7fEnZ1okvdTPhp3W5WbUABDxg4qGYIIsdaWAxuFHKg83eLys1qpAxHawD/f8CESQCB055N8SaLx4wHx+IGHnpYe3W/l+MRrUU1Aaqd4ncSOqv+9ghzu9Yezms1wwdBPEwTqihZ3nXV6+4x/Lpy7rqT2vSfrNiUrzsH+K8vZX3BMPpC7ybGHXQDrmGnwOH9C8T83md//MHZS2tJ5RXenFm1V2jMZItFvnyk+yXdGwyLfh36WDyds1mEv2QYfDxxyvSqaacik/ooLlFfQGU0a2aMVFE20DUQXqUWLRf2IS5mngS54VnGD/O9zH6L/goPqtto9SKk8HG8lGculMZDwh/4znT2kCCWZ28mPT/C3pzhWevQrXTax0EDaKDh5kE9Yr4eyJVaCHMuVk9ul8Wvp6l2vq1IkXgSPVyJQaPFyzXsHbWEkyTQpOJ/pzNEZHNEo7fSOlUgA6 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(396003)(346002)(136003)(366004)(376002)(1800799009)(451199024)(186009)(38350700002)(38100700002)(36756003)(86362001)(6506007)(478600001)(52116002)(5660300002)(66946007)(66556008)(2906002)(6666004)(8936002)(8676002)(66476007)(83380400001)(6512007)(6486002)(316002)(41300700001)(2616005)(1076003)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iT13DS5fK/WR49GXNUcEgQX+/mU+aRox4i2zv3PEQ6BQYUZjh8DKAMSlN5q+?= =?us-ascii?Q?by+cfANWIHtyPuquP5OXmaKwvtcxPnVxxL8wZlW+Kofn3Hp4WyEx5pnbKm4z?= =?us-ascii?Q?xe8Qfc2dcWgem5oDY3PGndZD8nrt4MYKV4QqKAzETwh6MzJ8JCx2CVN7vjNP?= =?us-ascii?Q?jCl58Sjw43NL8gfy9Fj81SgVPuVuRuhwo8I5EfO56NIgPeAbD9+h+zunnVLl?= =?us-ascii?Q?Z6f49b/JDI5gh+Iar30Hjd498II2UHgcYuUFMIxKB2E6EQgRWP392Vui8vaz?= =?us-ascii?Q?N/jj4xpR0i2RpsgpymeuMDLq6fJedUrEddJTC08qaXEBR89vQHiniHPgZ3vS?= =?us-ascii?Q?X24lLdVTiEsmJYs3DSHd+lO5hj7niHhkXNH7H7d+NqURNa/n2C7+cb5cMpqN?= =?us-ascii?Q?zFTOndBbEtG203vddnpRkq2XUik6Q+8SCXjviajDG97xUWyYBI7YIt96viR7?= =?us-ascii?Q?Q51otlnVaYL4LzE+6bUpyYyDM2ij9xURqHYIfAhz5TXtpzKQMm5smMsWRvJl?= =?us-ascii?Q?M3hNF9gm3vEJj2ZRz09Tmd57/zMHYI/vX49+T1DVB8pBLt426lC8zqVZsqjU?= =?us-ascii?Q?coGuVh6Sxv+ReuzhFRtHAZQ4BUMZO1GsfetDRnPpR2/qxMKeeeN4y0Omk3ci?= =?us-ascii?Q?JLzwmlO/hgQrVaYePfyDmgtimIq/wMjBA5OqmH2UglgVCFdm81MiKeozUyFQ?= =?us-ascii?Q?0eN8iTM5a0vizaj/8+FAefmyAFurlsdNCpycWIzqXNgFpH3b/Efn55zqlgDi?= =?us-ascii?Q?gPlJpgerhKyjCrq18ojH4KAhiuYFzPAHtAILkqGekHMoNzyr8/o8YxWD2N2+?= =?us-ascii?Q?miSIjiESOUI6di/z0ad64BaE2mH76VAqvfNWmwJEgQsMt/QBI9Hz1y+mAMBG?= =?us-ascii?Q?x+JTXp1H4kHGIRrNF+8V2p0GbuFHNmgX8jDgr7Jbmo2ANV1PPwQda7EZS0c+?= =?us-ascii?Q?2F03y6ItInfdt+A2QW7krOFYBFe4UQYL8xnbSX+EmS3dbsaIfeDQWQHVUR/y?= =?us-ascii?Q?7/1EsRdVZBK//+qWVD2m2Tl98Qok/4S65Cephn7NV1YhoBy8EdDtkQ0XpITL?= =?us-ascii?Q?F5UP34BCrignzmnoXbaRc+ERVjXVoTqXgaSqRzWievy/DeBAlaWeW0D5VDV8?= =?us-ascii?Q?H99HzOZxEsEgjaGmz+9eMy5Ug7i+js3gVYqUOBwoIdoHZHdSGwVJhNWSPHSt?= =?us-ascii?Q?o//6gqv7JEMFp+KozwNOWN8h0XZT/z5NLO0ax9NRee3PmGYgZgBfqwi4XmtD?= =?us-ascii?Q?h0LiwAjjU13dITnyIr1p8KfzovIGV7GQk5YYmwrL/6KfOJlavVcXu6LvtXqd?= =?us-ascii?Q?FpzgDiumuVk72qOJGJugv+0OA5XINSkjI6MaKUGgJtviofyIod9ePBG599Zl?= =?us-ascii?Q?pr34sDsjuji1Pbm/8oye7Ko+kx6FXZcCVdaYGfiyv2+7OwbTupoNKxb6gdas?= =?us-ascii?Q?L05T/hdUmN2+gcqNZOZx0rvpqHBfRgJlqJC35mxUhT8jADLwBttvPxL9uVoe?= =?us-ascii?Q?YnONZN0DEJsMRHYJt3jH/n+wc1Lt1QKc9fZCJ96ZT5vo4QUa/wYE7m1LZsj9?= =?us-ascii?Q?j7THxFPL51CJpr8iO8M=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 456c5b86-d0f5-4d87-4a79-08dbb9232c82 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2023 15:14:52.6912 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7q0lxdwV/pQoAAaraUeMzdxpP7v5u8lcyb0eRGwvr+t6jog4UkvCDllzkN6YrdAqztKjFYh5jzY8sWWXWWJXog== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR04MB9829 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Implement trace event support to enhance logging functionality for register access and the transfer control descriptor (TCD) context. This will enable more comprehensive monitoring and analysis of system activities Signed-off-by: Frank Li --- drivers/dma/Makefile | 6 +- drivers/dma/fsl-edma-common.c | 2 + drivers/dma/fsl-edma-common.h | 29 +++++++- drivers/dma/fsl-edma-trace.c | 4 + drivers/dma/fsl-edma-trace.h | 134 ++++++++++++++++++++++++++++++++++ 5 files changed, 169 insertions(+), 6 deletions(-) create mode 100644 drivers/dma/fsl-edma-trace.c create mode 100644 drivers/dma/fsl-edma-trace.h diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile index a51c6397bcad0..40b2dd554e5dc 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile @@ -32,10 +32,12 @@ obj-$(CONFIG_DW_DMAC_CORE) +=3D dw/ obj-$(CONFIG_DW_EDMA) +=3D dw-edma/ obj-$(CONFIG_EP93XX_DMA) +=3D ep93xx_dma.o fsl-edma-debugfs-$(CONFIG_DEBUG_FS) :=3D fsl-edma-debugfs.o +CFLAGS_fsl-edma-trace.o :=3D -I$(src) +fsl-edma-trace-$(CONFIG_TRACING) :=3D fsl-edma-trace.o obj-$(CONFIG_FSL_DMA) +=3D fsldma.o -fsl-edma-objs :=3D fsl-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y) +fsl-edma-objs :=3D fsl-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y)= ${fsl-edma-trace-y} obj-$(CONFIG_FSL_EDMA) +=3D fsl-edma.o -mcf-edma-objs :=3D mcf-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y) +mcf-edma-objs :=3D mcf-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y)= ${fsl-edma-trace-y} obj-$(CONFIG_MCF_EDMA) +=3D mcf-edma.o obj-$(CONFIG_FSL_QDMA) +=3D fsl-qdma.o obj-$(CONFIG_FSL_RAID) +=3D fsl_raid.o diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index a0f5741abcc47..0182e2695fdc0 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -521,6 +521,8 @@ void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, csr |=3D EDMA_TCD_CSR_START; =20 tcd->csr =3D cpu_to_le16(csr); + + trace_edma_fill_tcd(fsl_chan->edma, tcd); } =20 static struct fsl_edma_desc *fsl_edma_alloc_desc(struct fsl_edma_chan *fsl= _chan, diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index ecaba563d4897..a9e27110ac7d7 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -234,6 +234,9 @@ struct fsl_edma_engine { edma_writel(chan->edma, val, \ (void __iomem *)&(container_of(chan->tcd, struct fsl_edma3_ch_reg, tc= d)->__name)) =20 +/* Need after struct defination */ +#include "fsl-edma-trace.h" + /* * R/W functions for big- or little-endian registers: * The eDMA controller's endian is independent of the CPU core's endian. @@ -242,18 +245,30 @@ struct fsl_edma_engine { */ static inline u32 edma_readl(struct fsl_edma_engine *edma, void __iomem *a= ddr) { + u32 val; + if (edma->big_endian) - return ioread32be(addr); + val =3D ioread32be(addr); else - return ioread32(addr); + val =3D ioread32(addr); + + trace_edma_readl(edma, addr, val); + + return val; } =20 static inline u16 edma_readw(struct fsl_edma_engine *edma, void __iomem *a= ddr) { + u16 val; + if (edma->big_endian) - return ioread16be(addr); + val =3D ioread16be(addr); else - return ioread16(addr); + val =3D ioread16(addr); + + trace_edma_readw(edma, addr, val); + + return val; } =20 static inline void edma_writeb(struct fsl_edma_engine *edma, @@ -264,6 +279,8 @@ static inline void edma_writeb(struct fsl_edma_engine *= edma, iowrite8(val, (void __iomem *)((unsigned long)addr ^ 0x3)); else iowrite8(val, addr); + + trace_edma_writeb(edma, addr, val); } =20 static inline void edma_writew(struct fsl_edma_engine *edma, @@ -274,6 +291,8 @@ static inline void edma_writew(struct fsl_edma_engine *= edma, iowrite16be(val, (void __iomem *)((unsigned long)addr ^ 0x2)); else iowrite16(val, addr); + + trace_edma_writew(edma, addr, val); } =20 static inline void edma_writel(struct fsl_edma_engine *edma, @@ -283,6 +302,8 @@ static inline void edma_writel(struct fsl_edma_engine *= edma, iowrite32be(val, addr); else iowrite32(val, addr); + + trace_edma_writel(edma, addr, val); } =20 static inline struct fsl_edma_chan *to_fsl_edma_chan(struct dma_chan *chan) diff --git a/drivers/dma/fsl-edma-trace.c b/drivers/dma/fsl-edma-trace.c new file mode 100644 index 0000000000000..28300ad80bb75 --- /dev/null +++ b/drivers/dma/fsl-edma-trace.c @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 + +#define CREATE_TRACE_POINTS +#include "fsl-edma-common.h" diff --git a/drivers/dma/fsl-edma-trace.h b/drivers/dma/fsl-edma-trace.h new file mode 100644 index 0000000000000..e982651c682f1 --- /dev/null +++ b/drivers/dma/fsl-edma-trace.h @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2023 NXP. + */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM fsl_edma + +#if !defined(__LINUX_FSL_EDMA_TRACE) || defined(TRACE_HEADER_MULTI_READ) +#define __LINUX_FSL_EDMA_TRACE + +#include +#include + +DECLARE_EVENT_CLASS(edma_log_io, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value), + TP_STRUCT__entry( + __field(struct fsl_edma_engine *, edma) + __field(void __iomem *, addr) + __field(u32, value) + ), + TP_fast_assign( + __entry->edma =3D edma; + __entry->addr =3D addr; + __entry->value =3D value; + ), + TP_printk("offset %08lx: value %08x", + __entry->addr - __entry->edma->membase, __entry->value) +); + +DEFINE_EVENT(edma_log_io, edma_readl, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_writel, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_readw, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_writew, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_readb, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_writeb, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DECLARE_EVENT_CLASS(edma_log_tcd, + TP_PROTO(struct fsl_edma_engine *edma, struct fsl_edma_hw_tcd *tcd), + TP_ARGS(edma, tcd), + TP_STRUCT__entry( + __field(struct fsl_edma_engine *, edma) + __field(u32, saddr) + __field(u16, soff) + __field(u16, attr) + __field(u32, nbytes) + __field(u32, slast) + __field(u32, daddr) + __field(u16, doff) + __field(u16, citer) + __field(u32, dlast_sga) + __field(u16, csr) + __field(u16, biter) + + ), + TP_fast_assign( + __entry->edma =3D edma; + __entry->saddr =3D tcd->saddr, + __entry->soff =3D tcd->soff, + __entry->attr =3D tcd->attr, + __entry->nbytes =3D tcd->nbytes, + __entry->slast =3D tcd->slast, + __entry->daddr =3D tcd->daddr, + __entry->doff =3D tcd->doff, + __entry->citer =3D tcd->citer, + __entry->dlast_sga =3D tcd->dlast_sga, + __entry->csr =3D tcd->csr, + __entry->biter =3D tcd->biter; + ), + TP_printk("\n=3D=3D=3D=3D TCD =3D=3D=3D=3D=3D\n" + " saddr: 0x%08x\n" + " soff: 0x%04x\n" + " attr: 0x%04x\n" + " nbytes: 0x%08x\n" + " slast: 0x%08x\n" + " daddr: 0x%08x\n" + " doff: 0x%04x\n" + " citer: 0x%04x\n" + " dlast: 0x%08x\n" + " csr: 0x%04x\n" + " biter: 0x%04x\n", + __entry->saddr, + __entry->soff, + __entry->attr, + __entry->nbytes, + __entry->slast, + __entry->daddr, + __entry->doff, + __entry->citer, + __entry->dlast_sga, + __entry->csr, + __entry->biter) +); + +DEFINE_EVENT(edma_log_tcd, edma_fill_tcd, + TP_PROTO(struct fsl_edma_engine *edma, struct fsl_edma_hw_tcd *tcd), + TP_ARGS(edma, tcd) +); + +#endif + +/* this part must be outside header guard */ + +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . + +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE fsl-edma-trace + +#include --=20 2.34.1