All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oliver Upton <oliver.upton@linux.dev>
To: kvmarm@lists.linux.dev
Cc: Marc Zyngier <maz@kernel.org>, Joey Gouly <joey.gouly@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Zenghui Yu <yuzenghui@huawei.com>,
	Mingwei Zhang <mizhang@google.com>,
	Colton Lewis <coltonlewis@google.com>,
	Raghavendra Rao Ananta <rananta@google.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Janne Grunau <j@jannau.net>,
	Oliver Upton <oliver.upton@linux.dev>
Subject: [PATCH v3 07/14] KVM: arm64: Use guard() to cleanup usage of arm_pmus_lock
Date: Wed,  5 Mar 2025 12:26:34 -0800	[thread overview]
Message-ID: <20250305202641.428114-8-oliver.upton@linux.dev> (raw)
In-Reply-To: <20250305202641.428114-1-oliver.upton@linux.dev>

Get rid of some goto label patterns by using guard() to drop the
arm_pmus_lock when returning from a function.

Tested-by: Janne Grunau <j@jannau.net>
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
---
 arch/arm64/kvm/pmu-emul.c | 23 ++++++++---------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/arch/arm64/kvm/pmu-emul.c b/arch/arm64/kvm/pmu-emul.c
index 120f48136a0f..fee3d0003d54 100644
--- a/arch/arm64/kvm/pmu-emul.c
+++ b/arch/arm64/kvm/pmu-emul.c
@@ -790,26 +790,23 @@ void kvm_host_pmu_init(struct arm_pmu *pmu)
 	if (!pmuv3_implemented(kvm_arm_pmu_get_pmuver_limit()))
 		return;
 
-	mutex_lock(&arm_pmus_lock);
+	guard(mutex)(&arm_pmus_lock);
 
 	entry = kmalloc(sizeof(*entry), GFP_KERNEL);
 	if (!entry)
-		goto out_unlock;
+		return;
 
 	entry->arm_pmu = pmu;
 	list_add_tail(&entry->entry, &arm_pmus);
-
-out_unlock:
-	mutex_unlock(&arm_pmus_lock);
 }
 
 static struct arm_pmu *kvm_pmu_probe_armpmu(void)
 {
-	struct arm_pmu *tmp, *pmu = NULL;
 	struct arm_pmu_entry *entry;
+	struct arm_pmu *pmu;
 	int cpu;
 
-	mutex_lock(&arm_pmus_lock);
+	guard(mutex)(&arm_pmus_lock);
 
 	/*
 	 * It is safe to use a stale cpu to iterate the list of PMUs so long as
@@ -830,17 +827,13 @@ static struct arm_pmu *kvm_pmu_probe_armpmu(void)
 	 */
 	cpu = raw_smp_processor_id();
 	list_for_each_entry(entry, &arm_pmus, entry) {
-		tmp = entry->arm_pmu;
+		pmu = entry->arm_pmu;
 
-		if (cpumask_test_cpu(cpu, &tmp->supported_cpus)) {
-			pmu = tmp;
-			break;
-		}
+		if (cpumask_test_cpu(cpu, &pmu->supported_cpus))
+			return pmu;
 	}
 
-	mutex_unlock(&arm_pmus_lock);
-
-	return pmu;
+	return NULL;
 }
 
 static u64 __compute_pmceid(struct arm_pmu *pmu, bool pmceid1)
-- 
2.39.5


  parent reply	other threads:[~2025-03-05 20:27 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-05 20:26 [PATCH v3 00/14] KVM: arm64: FEAT_PMUv3 on Apple hardware Oliver Upton
2025-03-05 20:26 ` [PATCH v3 01/14] drivers/perf: apple_m1: Refactor event select/filter configuration Oliver Upton
2025-03-05 20:26 ` [PATCH v3 02/14] drivers/perf: apple_m1: Support host/guest event filtering Oliver Upton
2025-03-05 20:26 ` [PATCH v3 03/14] KVM: arm64: Compute PMCEID from arm_pmu's event bitmaps Oliver Upton
2025-03-05 20:26 ` [PATCH v3 04/14] KVM: arm64: Always support SW_INCR PMU event Oliver Upton
2025-03-05 20:26 ` [PATCH v3 05/14] KVM: arm64: Use a cpucap to determine if system supports FEAT_PMUv3 Oliver Upton
2025-03-06 20:49   ` kernel test robot
2025-03-05 20:26 ` [PATCH v3 06/14] KVM: arm64: Drop kvm_arm_pmu_available static key Oliver Upton
2025-03-05 20:26 ` Oliver Upton [this message]
2025-03-05 20:26 ` [PATCH v3 08/14] KVM: arm64: Move PMUVer filtering into KVM code Oliver Upton
2025-03-05 20:26 ` [PATCH v3 09/14] KVM: arm64: Compute synthetic sysreg ESR for Apple PMUv3 traps Oliver Upton
2025-03-05 20:26 ` [PATCH v3 10/14] KVM: arm64: Advertise PMUv3 if IMPDEF traps are present Oliver Upton
2025-03-05 20:26 ` [PATCH v3 11/14] KVM: arm64: Remap PMUv3 events onto hardware Oliver Upton
2025-03-05 20:26 ` [PATCH v3 12/14] drivers/perf: apple_m1: Provide helper for mapping PMUv3 events Oliver Upton
2025-03-05 20:30 ` [PATCH v3 13/14] KVM: arm64: Provide 1 event counter on IMPDEF hardware Oliver Upton
2025-03-05 20:30 ` [PATCH v3 14/14] arm64: Enable IMP DEF PMUv3 traps on Apple M* Oliver Upton
2025-03-10 13:13 ` [PATCH v3 00/14] KVM: arm64: FEAT_PMUv3 on Apple hardware Marc Zyngier
2025-03-11 23:44 ` Oliver Upton

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=20250305202641.428114-8-oliver.upton@linux.dev \
    --to=oliver.upton@linux.dev \
    --cc=catalin.marinas@arm.com \
    --cc=coltonlewis@google.com \
    --cc=j@jannau.net \
    --cc=joey.gouly@arm.com \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=mizhang@google.com \
    --cc=rananta@google.com \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    --cc=yuzenghui@huawei.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.