All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Murray <andrew.murray@arm.com>
To: Mathieu Poirier <mathieu.poirier@linaro.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: coresight@lists.linaro.org, Sudeep Holla <sudeep.holla@arm.com>,
	Leo Yan <leo.yan@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	Mike Leach <mike.leach@linaro.org>
Subject: [PATCH] coresight: etm4x: lazily allocate memory for save_state
Date: Fri, 12 Jul 2019 16:00:56 +0100	[thread overview]
Message-ID: <20190712150056.15775-1-andrew.murray@arm.com> (raw)
In-Reply-To: <20190711160114.634-6-andrew.murray@arm.com>

I had intended to lazily allocate memory for the save_state structure when
it is first used. Following is a patch that I will squash into "[PATCH v3 5/6]
coresight: etm4x: save/restore state across CPU low power states" on my
next respin. I thought I'd share it here to get some feedback along with
the rest of v3.

Thanks,

Andrew Murray

---
 drivers/hwtracing/coresight/coresight-etm4x.c | 14 +++++++++++---
 drivers/hwtracing/coresight/coresight-etm4x.h |  2 +-
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-etm4x.c b/drivers/hwtracing/coresight/coresight-etm4x.c
index b0bd8158bf13..cd02372194bc 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x.c
@@ -1112,6 +1112,13 @@ static int etm4_cpu_save(struct etmv4_drvdata *drvdata)
 	struct etmv4_save_state *state;
 	struct device *etm_dev = &drvdata->csdev->dev;
 
+	if (!drvdata->save_state) {
+		drvdata->save_state = devm_kmalloc(etm_dev,
+				sizeof(struct etmv4_save_state), GFP_KERNEL);
+		if (!drvdata->save_state)
+			return -ENOMEM;
+	}
+
 	/*
 	 * As recommended by 3.4.1 ("The procedure when powering down the PE")
 	 * of ARM IHI 0064D
@@ -1134,7 +1141,7 @@ static int etm4_cpu_save(struct etmv4_drvdata *drvdata)
 		goto out;
 	}
 
-	state = &drvdata->save_state;
+	state = drvdata->save_state;
 
 	state->trcprgctlr = readl(drvdata->base + TRCPRGCTLR);
 	state->trcprocselr = readl(drvdata->base + TRCPROCSELR);
@@ -1234,9 +1241,10 @@ static int etm4_cpu_save(struct etmv4_drvdata *drvdata)
 static void etm4_cpu_restore(struct etmv4_drvdata *drvdata)
 {
 	int i;
-	struct etmv4_save_state *state;
+	struct etmv4_save_state *state = drvdata->save_state;
 
-	state = &drvdata->save_state;
+	if (WARN_ON_ONCE(!state))
+		return;
 
 	CS_UNLOCK(drvdata->base);
 
diff --git a/drivers/hwtracing/coresight/coresight-etm4x.h b/drivers/hwtracing/coresight/coresight-etm4x.h
index c31634c64f87..a70cafbbb8cf 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x.h
+++ b/drivers/hwtracing/coresight/coresight-etm4x.h
@@ -441,7 +441,7 @@ struct etmv4_drvdata {
 	bool				atbtrig;
 	bool				lpoverride;
 	struct etmv4_config		config;
-	struct etmv4_save_state		save_state;
+	struct etmv4_save_state		*save_state;
 	bool				state_needs_restore;
 };
 
-- 
2.21.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-07-12 15:02 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-11 16:01 [PATCH v3 0/6] coresight: etm4x: save/restore ETMv4 context across CPU low power states Andrew Murray
2019-07-11 16:01 ` [PATCH v3 1/6] coresight: etm4x: remove superfluous setting of os_unlock Andrew Murray
2019-07-11 16:01 ` [PATCH v3 2/6] coresight: etm4x: use explicit barriers on enable/disable Andrew Murray
2019-07-11 16:01   ` Andrew Murray
2019-07-11 16:01 ` [PATCH v3 3/6] coresight: etm4x: use module_param instead of module_param_named Andrew Murray
2019-07-11 16:01 ` [PATCH v3 4/6] coresight: etm4x: improve clarity of etm4_os_unlock comment Andrew Murray
2019-07-11 16:01 ` [PATCH v3 5/6] coresight: etm4x: save/restore state across CPU low power states Andrew Murray
2019-07-12 15:00   ` Andrew Murray [this message]
2019-07-22 20:32     ` [PATCH] coresight: etm4x: lazily allocate memory for save_state Mathieu Poirier
2019-07-23  9:05       ` Suzuki K Poulose
2019-07-26 11:24         ` Andrew Murray
2019-07-30 10:15           ` Suzuki K Poulose
2019-07-15 14:22   ` [PATCH v3 5/6] coresight: etm4x: save/restore state across CPU low power states Mike Leach
2019-07-16 11:50     ` Andrew Murray
2019-07-16 14:43       ` Mike Leach
2019-07-15 23:04   ` Mathieu Poirier
2019-07-16 11:52     ` Andrew Murray
2019-07-11 16:01 ` [PATCH v3 6/6] dt-bindings: arm: coresight: Add support for coresight-needs-save-restore Andrew Murray

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190712150056.15775-1-andrew.murray@arm.com \
    --to=andrew.murray@arm.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=coresight@lists.linaro.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mathieu.poirier@linaro.org \
    --cc=mike.leach@linaro.org \
    --cc=sudeep.holla@arm.com \
    --cc=suzuki.poulose@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.