Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp3836220rwd; Mon, 22 May 2023 22:10:04 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ45CbWDVgCx/DuDYruc83jLaeSRbDz/J2g1atHFs0Xh0bmDISi2RZ72cMSi7YPZKhmO8IAx X-Received: by 2002:a05:6a20:d80d:b0:103:ee82:dcb0 with SMTP id iv13-20020a056a20d80d00b00103ee82dcb0mr14127836pzb.13.1684818604391; Mon, 22 May 2023 22:10:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684818604; cv=none; d=google.com; s=arc-20160816; b=ZxPhqxcpV4oq4SXihjId+RHaihSzhiIw+D+XXB4ivd045nJvV9pvDtSZfHVnr8AmsA AWwjMAuDIiRQ0G4Iodwjb2SNJftnVo8gvLOLpO4+gWKrVOrmESG9jYk8O7Ezb6t1qt1a AugegOZ4ZjXC+/I3McjcdBqGDVxMdMKX7E+pVTCfVT1Kyl6+FDcHU0cEfE4TEJIbnRCo yA2OEu2czvHDl1xa7wZzg+KAWP3Uh/G1/jyFxIBYV22lr1DiVuPGYyyhweuDBDXepNDr UB5LaeJ9L522wHwyKLEAR2VNYFn2LnOGaFMys7Vjq6yJ4oroSvMPRKWC1yeUqvw//Ftq liwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=m+e1imscgxxfdaZ4eyi90ayYqSxq81Un1Qj+za5xbdU=; b=SIilkFwFwHQAKFrY1iYelBLEwUQkmxiQ1DBJLEOmcUpyxVKtUfMrewIzC9Jspl1pjt Q9gO6MWj0BHv/eiwTgp+//7Qy7Yu3XC8n4JBQfjsR0mNGQTPp9mISV2/QfhuBbc258j8 2ksrK9cYQiT1b+ayJmKEf1Pj43L75o678UU6o4mqFKQvk4QJcqkzh4Hn6sZYbE8OQP8y 7vIfQK5/O0rZz4VB6pziqqLndO68iwy/sZ+vTL/WX8e+PwYjiTJioy1igtJmPW4LzTnp 0msi7q0wg1SsDW4d3xYkLM+/gr7OVBDei4Ba2WBjpQwGocebsdKyVNJEcy1cF2qA771+ jfyA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b5-20020a63eb45000000b005347ed33096si6043048pgk.258.2023.05.22.22.09.49; Mon, 22 May 2023 22:10:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232753AbjEWEqZ (ORCPT + 99 others); Tue, 23 May 2023 00:46:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58138 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232474AbjEWEqS (ORCPT ); Tue, 23 May 2023 00:46:18 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id E2ABDFA; Mon, 22 May 2023 21:46:16 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9A70F150C; Mon, 22 May 2023 21:47:01 -0700 (PDT) Received: from a077893.blr.arm.com (unknown [10.162.42.7]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E936B3F6C4; Mon, 22 May 2023 21:46:09 -0700 (PDT) From: Anshuman Khandual To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, coresight@lists.linaro.org, suzuki.poulose@arm.com Cc: Anshuman Khandual , Ganapatrao Kulkarni , Steve Clevenger , Rob Herring , Frank Rowand , Russell King , Greg Kroah-Hartman , "Rafael J. Wysocki" , Len Brown , Sudeep Holla , Lorenzo Pieralisi , Mathieu Poirier , Mike Leach , Leo Yan , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org Subject: [PATCH V4 1/6] coresight: etm4x: Allocate and device assign 'struct etmv4_drvdata' earlier Date: Tue, 23 May 2023 10:15:48 +0530 Message-Id: <20230523044553.1525048-2-anshuman.khandual@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230523044553.1525048-1-anshuman.khandual@arm.com> References: <20230523044553.1525048-1-anshuman.khandual@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Allocate and device assign 'struct etmv4_drvdata' earlier during the driver probe, ensuring that it can be retrieved in power management based runtime callbacks if required. This will also help in dropping iomem base address argument from the function etm4_probe() later. Cc: Mathieu Poirier Cc: Suzuki K Poulose Cc: Mike Leach Cc: Leo Yan Cc: coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Anshuman Khandual --- .../coresight/coresight-etm4x-core.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c index 4c15fae534f3..7e96293c638f 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c @@ -2046,17 +2046,14 @@ static int etm4_add_coresight_dev(struct etm4_init_arg *init_arg) static int etm4_probe(struct device *dev, void __iomem *base, u32 etm_pid) { - struct etmv4_drvdata *drvdata; + struct etmv4_drvdata *drvdata = dev_get_drvdata(dev); struct csdev_access access = { 0 }; struct etm4_init_arg init_arg = { 0 }; struct etm4_init_arg *delayed; - drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); - if (!drvdata) + if (WARN_ON(!drvdata)) return -ENOMEM; - dev_set_drvdata(dev, drvdata); - if (pm_save_enable == PARAM_PM_SAVE_FIRMWARE) pm_save_enable = coresight_loses_context_with_cpu(dev) ? PARAM_PM_SAVE_SELF_HOSTED : PARAM_PM_SAVE_NEVER; @@ -2108,6 +2105,7 @@ static int etm4_probe(struct device *dev, void __iomem *base, u32 etm_pid) static int etm4_probe_amba(struct amba_device *adev, const struct amba_id *id) { + struct etmv4_drvdata *drvdata; void __iomem *base; struct device *dev = &adev->dev; struct resource *res = &adev->res; @@ -2118,6 +2116,11 @@ static int etm4_probe_amba(struct amba_device *adev, const struct amba_id *id) if (IS_ERR(base)) return PTR_ERR(base); + drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); + if (!drvdata) + return -ENOMEM; + + dev_set_drvdata(dev, drvdata); ret = etm4_probe(dev, base, id->id); if (!ret) pm_runtime_put(&adev->dev); @@ -2127,8 +2130,14 @@ static int etm4_probe_amba(struct amba_device *adev, const struct amba_id *id) static int etm4_probe_platform_dev(struct platform_device *pdev) { + struct etmv4_drvdata *drvdata; int ret; + drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL); + if (!drvdata) + return -ENOMEM; + + dev_set_drvdata(&pdev->dev, drvdata); pm_runtime_get_noresume(&pdev->dev); pm_runtime_set_active(&pdev->dev); pm_runtime_enable(&pdev->dev); -- 2.25.1