From nobody Sat Jun 13 20:30:08 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F03BC156C6A for ; Tue, 5 May 2026 15:38:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777995532; cv=none; b=GnLojE1QFoNED5SVIKAnDBX3I1+vznkP7jlYh5nBO8+h62QZU2m2Lum9ILvwQr58SyiaO+VN1/g+EhmKZ/XnFJVg7KSYqaJwubvKLOguJAUUfOGKp+DKabUjr1XHJ9bk0hNe272wr9xnFAp42/xNnQ4i1zCQ705kPFXv6Jh9J/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777995532; c=relaxed/simple; bh=Uw4gVumTzC3TttZtfvlRUdfTsKOVfvFCcVvIUmXHW3o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=cN14qVkhIJ7/utXkPn0+Ao0Qkoh2q5oQvfyMnHXT8UOpBpJauNXQL20ezurzFIdDHaU168eLqZOe9DGXCG5a4YSRyV5EfeAPugTGGVnCIkTvYdWQANLy0gGwIVevoZ1tnATeEdZkRSx6RspWAg6nyW79+m0SLRc0H35rNXLYEDA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=Af7bgKqR; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Af7bgKqR" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-488ba840146so47613935e9.1 for ; Tue, 05 May 2026 08:38:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777995529; x=1778600329; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=F5OauRSHd3xC4EBGk+Y08SbUQli2Y6pPm8j7dgQwIdk=; b=Af7bgKqR6TlOb8nReRBp91fC/zHiuuXhJoGgdhnqC/kexmqzx+eGqp++CvjeD/2rQ4 IEQWBQszceTGmNK7EEezEX08kpBohvWgvDT+jxBqcFEBG1lMd4/eFF6mriIcOQLTXHnz 2UzcNSdcQlfYldbp2hcvZBnO45GnpoKNanenMgcm2EnLkS1ehIFXfqLQBiu60cTf1esC bIUWGBA0/Cx/Z68w7MTqn+c7GieWsmpF1APJ6TDHBLTE4ed9GnDPc7C0wv6eA6E/Vjbs 9OpzjtzmTQ7dvieyTDH5g6ruBceIp4Pv9eBRhzuoxYg7frUhe17zXlnZdrhpBiX1nn+X lJYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777995529; x=1778600329; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=F5OauRSHd3xC4EBGk+Y08SbUQli2Y6pPm8j7dgQwIdk=; b=ffpdJwPnNUpFrPbmkmjZirhzvvhFACBuI3rOwJ7wOpFpm5pKVtHPEvVtd+jxUsTRNA SpOyjD8Okm05xJ7ZVt4bnaNAgEXv4Cp6xzRqGXuf7PyXPnxIoBL8TfXsKdcq2XozqoUR hG16Yl8iEQEL8lAsEvb3wbHPfzjTQC1waUk8+ovSywJ4QhQsH972quXjiluDHZZFhMbn X4991It8r2DMvtnjqHpnzXSIraJijqxaSaCi2EKS1fqH6gXBHSIIhnrquBf7xKujN9ZQ W+LBWLl+NUywfvHxUw/keY7eHlsx4cXXRZ1J9rwjCAasCO3Ll9TXi9NgCFHZtAALB6/T qwvA== X-Forwarded-Encrypted: i=1; AFNElJ97MOWUaqw+b+2X9tvnw1JbLzPrrONwaGDSggRXSQLguz1i6UMP3/hhl8WgD/ElqYtvDT0DJNJFM4ccjRE=@vger.kernel.org X-Gm-Message-State: AOJu0YyWsuXCJp75G2TWSGY8DWBGK+XrlwfFZJW0xpQ/7qFSOwOhQCOA Hr2/0zt+JbyGtUgIN2iNbn2owMbqQ24ELX1mLczJe9i16gVeEvNdebHQWsDijhbRjnw= X-Gm-Gg: AeBDiesVgYyiTPxDpkWNdpBTAkArxbJeeE7/MW4zKtscB7daNxi+gToHK33ZKUyuoAB 4FbzlvoW1eklqiBqg23JtsqpbXw4me9sQbWSGEhyi9NN/tPo+C/ztaYR19N1p5EvqHAGc9g7be+ 4PTELbzM24Hm8EOpQMHEPRJG9dwqCukZ6xiYsBZJAnry/p6xAgC5n+iJ8WyE6o5c6hOL6QgVrr3 cSFXXIyTHwzi3GqxqaBgOaw/PCnEVi9pZw40gR16htLVOcKxOIvTPu8cX3ZOVXxemEB4V4Jxfqv Z4P6aKyBBu/dM7+1of05Z28R0TkTul027LS/bECnuvOoUXCgmXID+yawoGYiH4UILjOupKhNKLH HExZP9rfZNH94vyfWZkoAl8e6lctPsFXAQcbKr98rHE42HkugRsXamlho5qhyuEsuPiRUgbKAeS Z+44WLmF92SCEAXzfrhTqsZETBDFR6MQDnvQcMkJ28+5Y= X-Received: by 2002:a05:600c:6097:b0:489:201c:dc46 with SMTP id 5b1f17b1804b1-48d188d5da9mr58933595e9.12.1777995529262; Tue, 05 May 2026 08:38:49 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45055f2487dsm5272365f8f.35.2026.05.05.08.38.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 08:38:48 -0700 (PDT) From: James Clark Date: Tue, 05 May 2026 16:38:30 +0100 Subject: [PATCH v2] coresight: ete: Always save state on power down Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260505-james-cs-ete-pm_save_enable-v2-1-d39c1f1e0e96@linaro.org> X-B4-Tracking: v=1; b=H4sIAPUO+mkC/33NQQ6CMBCF4auQWTumlIriynsYQoY6QA20pCWNh nB3K4lbl/9bfG+FwN5wgGu2gudognE2hTxkoAeyPaN5pAYpZCmUFPikiQPqgLwwzlMTKHLDltq RUXFVKS5O+kEakjB77sxr1+916sGExfn3fhbz7/pzL3/dmKNAfaZKaCo7VbS30Vjy7uh8D/W2b R+KlwzexwAAAA== To: Suzuki K Poulose , Mike Leach , Leo Yan , Alexander Shishkin , Mathieu Poirier Cc: coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, James Clark X-Mailer: b4 0.14.0 System register ETMs and ETE are unlikely to be preserved on CPU power down. The ETE DT binding also never documented "arm,coresight-loses-context-with-cpu" so nobody would have legitimately been able to use that binding to fix it and ACPI has no such binding at all. Fix it by hard coding the setting for sysreg ETMs (ETE is always sysreg) or ACPI boots. This fixes the following error when using Coresight with ACPI on the FVP which supports CPU PM: coresight ete0: External agent took claim tag WARNING: drivers/hwtracing/coresight/coresight-core.c:248 at coresight_di= sclaim_device_unlocked+0xe0/0xe8, CPU#0: perf/117 Fixes: 35e1c9163e02 ("coresight: ete: Add support for ETE tracing") Signed-off-by: James Clark --- Fix PM save on ETE, which is an issue that showed up on the FVP when booted with ACPI and the newly enabled idle states. --- Changes in v2: - Expand rule to also save for ACPI and sysreg ETMs. Now module param is only read for MMIO ETMs and DT. - Drop change to save the result in drvdata as the single global is simpler. - Link to v1: https://lore.kernel.org/r/20260428-james-cs-ete-pm_save_enabl= e-v1-0-c7a90ca6f43b@linaro.org --- drivers/hwtracing/coresight/coresight-etm4x-core.c | 42 +++++++++++++++---= ---- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/h= wtracing/coresight/coresight-etm4x-core.c index d565a73f0042..b6b46c2f8ee8 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c @@ -56,10 +56,14 @@ MODULE_PARM_DESC(boot_enable, "Enable tracing on boot"); #define PARAM_PM_SAVE_NEVER 1 /* never save any state */ #define PARAM_PM_SAVE_SELF_HOSTED 2 /* save self-hosted state only */ =20 +/* + * Save option for ETM4. ETE, sysreg ETM4s and ACPI boots ignore this opti= on and + * will always save. + */ static int pm_save_enable =3D PARAM_PM_SAVE_FIRMWARE; module_param(pm_save_enable, int, 0444); MODULE_PARM_DESC(pm_save_enable, - "Save/restore state on power down: 1 =3D never, 2 =3D self-hosted"); + "Save/restore state on power down: 1 =3D never, 2 =3D self-hosted. MMIO a= nd DT only."); =20 static struct etmv4_drvdata *etmdrvdata[NR_CPUS]; static void etm4_set_default_config(struct etmv4_config *config); @@ -2212,6 +2216,17 @@ static void etm4_pm_clear(void) } } =20 +static bool etm4x_always_pm_save(struct device *dev, struct csdev_access *= csa) +{ + /* + * Only IO mem ETM devices will benefit from skipping PM save and only + * DT has the option to control it, not ACPI. Otherwise system register + * based ETMs and ETEs will always lose context on CPU power down, so + * always save. + */ + return !csa->io_mem || is_acpi_device_node(dev_fwnode(dev)); +} + static int etm4_add_coresight_dev(struct etm4_init_arg *init_arg) { int ret; @@ -2248,6 +2263,20 @@ static int etm4_add_coresight_dev(struct etm4_init_a= rg *init_arg) =20 etm4_set_default(&drvdata->config); =20 + if (etm4x_always_pm_save(dev, init_arg->csa)) + pm_save_enable =3D PARAM_PM_SAVE_SELF_HOSTED; + else if (pm_save_enable =3D=3D PARAM_PM_SAVE_FIRMWARE) + pm_save_enable =3D coresight_loses_context_with_cpu(dev) ? + PARAM_PM_SAVE_SELF_HOSTED : PARAM_PM_SAVE_NEVER; + + if (pm_save_enable !=3D PARAM_PM_SAVE_NEVER) { + drvdata->save_state =3D devm_kmalloc(dev, + sizeof(struct etmv4_save_state), + GFP_KERNEL); + if (!drvdata->save_state) + return -ENOMEM; + } + pdata =3D coresight_get_platform_data(dev); if (IS_ERR(pdata)) return PTR_ERR(pdata); @@ -2305,17 +2334,6 @@ static int etm4_probe(struct device *dev) if (ret) return ret; =20 - if (pm_save_enable =3D=3D PARAM_PM_SAVE_FIRMWARE) - pm_save_enable =3D coresight_loses_context_with_cpu(dev) ? - PARAM_PM_SAVE_SELF_HOSTED : PARAM_PM_SAVE_NEVER; - - if (pm_save_enable !=3D PARAM_PM_SAVE_NEVER) { - drvdata->save_state =3D devm_kmalloc(dev, - sizeof(struct etmv4_save_state), GFP_KERNEL); - if (!drvdata->save_state) - return -ENOMEM; - } - raw_spin_lock_init(&drvdata->spinlock); =20 drvdata->cpu =3D coresight_get_cpu(dev); --- base-commit: 971f3474f8898ae8bbab19a9b547819a5e6fbcf1 change-id: 20260420-james-cs-ete-pm_save_enable-4e994e35cdac Best regards, --=20 James Clark