From nobody Sun Feb 8 03:57:07 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 1E22A308F33 for ; Fri, 30 Jan 2026 07:13:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769757182; cv=none; b=lfGVpNUzYqFpCl69xD7fZwtFTtGbaoi+yEsYyKMfJMIseCmLTnXGCujdPy3Ggzeou6MF+5dBd/HTOuy0I9JXn/ebBIA2gg1+UzVJZehQTVwFi5HzyFK7K8kqVX/Ckbu3aO6NCj5V1ze/RhVkBaOgJe4BIrwdwsqmQNRoxYGUO/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769757182; c=relaxed/simple; bh=vVxHFH6Yc8NWRiRG32Mnm8241KHahA48nTKLUwCZR9w=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=GcUtPeFg+LnJhuVvG+jPZQjw/9cWba18z5+WLPSA3FBD1cyxG2k+77Y0pw9t3zLWQhjfYCqQsBR15/LrXol7gaOqPrQSBFOtARIHql+d9QEv7vqn9VKkPYKI2GAI4EOjiWlOXex+IROcM/1FlkPjsNURgmh8Y5HY6UzttFGJ6tM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QBGItkWb; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QBGItkWb" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-42fbbc3df8fso1337040f8f.2 for ; Thu, 29 Jan 2026 23:13:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769757179; x=1770361979; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=qOWxZQdmNaToaPwUEH1k3Iwm/h1XYwVGWPJU1KGWwqo=; b=QBGItkWbI6HDwaFF8McF008WgMtJIQZJzk41LQxqenxSxlP4cy0MCRaIcy+/vq4PtX nbf7A66rOPLN4PD0j9fUG/iF5Nn/B8Fs2PEwYesh7CHeGKDIB2M4dA9LHBuhURNDGcCb 5evE63VGZWDCc5hEQeTYCkuQjhd/e7+5MXW8rHdCjr8jltq3HXECgnCCngQd44RoPIjW XvRPZYl9Q4naSEFHUVRKLmMoL//lwSXbHLo6wmQrVzabmfn/GwnWf4U0qgRAkUVjtk5/ RQMZ6Makap6YdiTN0O49cTuOwLD1pTFx9w3j9ICgwVLYk2rNKdX2Gw9FSbddh4zqutmz PbIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769757179; x=1770361979; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=qOWxZQdmNaToaPwUEH1k3Iwm/h1XYwVGWPJU1KGWwqo=; b=lK46PapEmLXhgSoK7s/J9oH5zUjqRJuOKVp2PZRinXTsmXmaRpR6VV0PnvSqU+clvf ehMbgN55KF5CIa57Sa+oPotZHmzCKi05acxx19JYJkptM7sho2SkFt+7gfsJHAHtEw6V X4NHNznFACnItR9vksFENO6eOC3aW42DYD3yUc6Zq3u5nTF6Z4YnCWxGNjyEklheVDL1 YG3ZasDoyux3AfdCvYGKsL1Yu15heWgsi90xEOKkF76e3+7THL1vrMureWHWPINU06L6 tnvEVdgtFXbHvtALbanDFLLj4ZHm89uEExuP2KPBpH6lGgrXjcSIEJVppIgWFtM6Zk/V cQrA== X-Forwarded-Encrypted: i=1; AJvYcCVtOHrkDwGH5m0gvN9eZiQP9yVL5vtkZQP4qDaunoCFiIkEOq2KPgLKpEkQS6TBjrtaLNWZFC3HTWkjjuQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxVDpit1ngVx3hHieM0HQjX6RZMoewg81ERwioAflEseNvV3eG8 UIWMHzr7S5nypFlr4V4sQdCX+QY85ytnx6e54wBQD1S0SeNlEQMHiEKi X-Gm-Gg: AZuq6aLWVt5sTtcvRXXJEs8L5FBtBoPWp9kmBzHCdZUVKTcp3x3z+9fRbK6UF8hzlQi OQQUvZyvtTPJVhJzF3WHDp0uvMTkHhOK6tzslbWEasOgNTJmyfv1c88bu5ObyhZleHLuooeSXlX 3WM74EToCLZ7ZbHev6gleQJZQpz4CiR7iKa3O9QWCeja888s2O/9o5p12hBWGOJNOnc5MmH7rED sn68KDylIeh4kaS1A0npCckS+a0sqGBraimSFpRNn6FZng2KKGOU2nR+Sm8xSrgDWKbpMofVuHV clxf+iwVZxD9Kop0s3zlDlRZyPWhB22dmSofuynHVnJBSqf+rIOX4IIcfIWFzwv4pOXpsuDzj1x NJJbeo/pCEiLYGiykWEH7lCVzzGmNJYexo4XaNIQqEIWJBG4TEQW3izv7KuSwQ5oG+sNT1QkFbN fh2TYjzXLMQdZxGGeGWWC9U78k1GERE2yJ936aFHqj91S0xpA1v4Z4CDvFvQg7YJ/wqOxihhf2 X-Received: by 2002:a05:6000:430e:b0:435:a48a:1239 with SMTP id ffacd0b85a97d-435f3a79d86mr2893572f8f.14.1769757179322; Thu, 29 Jan 2026 23:12:59 -0800 (PST) Received: from emanuele-nb.int.toradex.com (93-34-120-147.ip49.fastwebnet.it. [93.34.120.147]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-435e132368csm18261389f8f.31.2026.01.29.23.12.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Jan 2026 23:12:58 -0800 (PST) From: Emanuele Ghidoli To: Francesco Dolcini , Sebastian Reichel , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Emanuele Ghidoli , linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v1] power: reset: tdx-ec-poweroff: fix restart Date: Fri, 30 Jan 2026 08:11:35 +0100 Message-ID: <20260130071208.1184239-1-ghidoliemanuele@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Emanuele Ghidoli During testing, restart occasionally failed on Toradex modules. The issue was traced to an interaction between the EC-based reset/poweroff handler and the PSCI restart handler. While the embedded controller is resetting or powering off the module, the PSCI code may still be invoked, triggering an I2C transaction to the PMIC. This can leave the PMIC I2C in a frozen state. Add a delay after issuing the EC reset or power-off command to give the controller time to complete the operation and avoid falling back to another restart/poweroff provider. Also print an error message if sending the command to the embedded controll= er fails. Fixes: 18672fe12367 ("power: reset: add Toradex Embedded Controller") Cc: stable@vger.kernel.org Signed-off-by: Emanuele Ghidoli Reviewed-by: Francesco Dolcini --- drivers/power/reset/tdx-ec-poweroff.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/power/reset/tdx-ec-poweroff.c b/drivers/power/reset/td= x-ec-poweroff.c index 3302a127fce5..8040aa03d74d 100644 --- a/drivers/power/reset/tdx-ec-poweroff.c +++ b/drivers/power/reset/tdx-ec-poweroff.c @@ -8,7 +8,10 @@ */ =20 #include +#include +#include #include +#include #include #include #include @@ -31,6 +34,8 @@ =20 #define EC_REG_MAX 0xD0 =20 +#define EC_CMD_TIMEOUT_MS 1000 + static const struct regmap_range volatile_ranges[] =3D { regmap_reg_range(EC_CMD_REG, EC_CMD_REG), }; @@ -75,6 +80,13 @@ static int tdx_ec_power_off(struct sys_off_data *data) =20 err =3D tdx_ec_cmd(regmap, EC_CMD_POWEROFF); =20 + if (err) { + dev_err(data->dev, "Failed to send power off command\n"); + } else { + mdelay(EC_CMD_TIMEOUT_MS); + WARN_ONCE(1, "Unable to power off system\n"); + } + return err ? NOTIFY_BAD : NOTIFY_DONE; } =20 @@ -85,6 +97,13 @@ static int tdx_ec_restart(struct sys_off_data *data) =20 err =3D tdx_ec_cmd(regmap, EC_CMD_RESET); =20 + if (err) { + dev_err(data->dev, "Failed to send restart command\n"); + } else { + mdelay(EC_CMD_TIMEOUT_MS); + WARN_ONCE(1, "Unable to restart system\n"); + } + return err ? NOTIFY_BAD : NOTIFY_DONE; } =20 --=20 2.43.0