From nobody Fri Sep 25 00:40:52 2026 Received: from mail-pj2-f13.google.com (mail-pj2-f13.google.com [74.125.227.141]) (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 14A253D332A for ; Fri, 18 Sep 2026 03:13:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789701226; cv=none; b=LfacEobT8ko4Xe9E6E01q9d5/UJlNwBHDC8qYfDOhmO/EKR4iwaiJQGnswwtItaLOKZy4ULuLN5dygIs61gOdRSPJZH/PAr2z2xDJunG+6+Kyvv515JTcwSj2S1kaD5fhZSxJbA0J/IPxmrCfBCZ7TxHzdzPzjGZRu35d8+iD7A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789701226; c=relaxed/simple; bh=NjLc/8TORdZon0fRfkIxyX9z0eAz0zc3Bki0New4I28=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=uYoAzVA7wUNocyIjloAuouMn3oAxoBymYLU9ARR580JZ+YdDcJl/qKa/TvepabbWBk+Yr4LAukR865Vvs70T8Lmanfkgeh1LgQCwpyibOWo/EABjY9n1ouTIdVGp+IYU9CvHR6WY8oQfoaSOg5nNQ4qteujelwem3vpyK3qKIn0= 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=heqx2FWO; arc=none smtp.client-ip=74.125.227.141 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="heqx2FWO" Received: by mail-pj2-f13.google.com with SMTP id 98e67ed59e1d1-396ccb65437so220493a91.3 for ; Thu, 17 Sep 2026 20:13:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789701217; x=1790306017; 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:content-type; bh=CKFxldesfAj8FdEDKAwfFPd/txX/9A+5mA0y6fZJndM=; b=heqx2FWOCghTSUMFUuasFLqTjgj0Sje9zetpQa8ncnWz6V2wvd65Rh7qgmgBGz1nWO gUTZzX/gMOe0LGEXiwZhUTfvhxBIWaeReKmd7YPV6d8+/lH7HOmBhdUZ9txV9IF/zszv JOchZmu/UKMP17vLBQ0ZtG3RUcTs6cmwCXPwA80/nVMefrkRGp+/wwthR7Zzxqkc81zN DV1puxp+UAIRfvUn/jhMx1e4eVde7SQrLm2/nZqJ72nRdb7IY681wy4UK7UCNj9RzRm2 5YBXKKQCqjzH09ZAIRzE6o9GctHIxMYHhpMtSDqsj6fqIxMi5Fx4dd/1N2f2gyEBRZe0 mkvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789701217; x=1790306017; 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:content-type; bh=CKFxldesfAj8FdEDKAwfFPd/txX/9A+5mA0y6fZJndM=; b=U61iROAGuZzVeKJ2oCB9qP1sYdyCtOPaDDvmNkfF7EFiFBERXvXv47C6DgAUoptarE D/aJgZNfuacX0Z9s9qRsngTuW9zJcZgktvFMoiCuHSryMKLSKBO2+4ZpUfv/EwIPWfXp yWn6Q+p+Hjrd7S7pNmtZH/CsX0L6dJPGXNQofNauitcnhOghGiZs1sJR6MY/gYJ7CUaa 3kyfgjg7HDYI011kYI1s8PI953L/tKXAxOYoO/zcEOqGelDZ9NpC07NKSJYKv6jizwQy IIC/F00jw0MF/S9c5Z5flS9I/62w0Bt0aVEd2nOVeLsKiuz8hLQgLxDInfWw+Gn050PO pBdQ== X-Forwarded-Encrypted: i=1; AKwUvByzUkY7Jo+xQXKupBhGlwY4GAZPkUlSdPzVr7v8PxurgwADTTAmvXf/DSgYdWknHDEENd3gt0RvDlgmhko=@vger.kernel.org X-Gm-Message-State: AFuF++lG032ZLWRfD6Y4tC8Mnox6aw3uWMZawaDGQsWs+h7F0fgH6ag8 8I9j1QQ/rQ2qrmkHG6w3lusoMDDIV/tiPN78mhI3Vw/3zjOP4lqlv6Ko X-Gm-Gg: AYBFou1CRXocO7h9MWf8GvgIyDXOJy1+5jUz6CF8Nb6fniM7TuMM7yOdAnvnB6qJGFw IJqZXqgXRwqlmCS/2hiyMfUIvwdns5ztAcQco64NRJpa+cZz7UfaGyI5YONmK1k7LWbzTGCke5B pWn0LGMlzqYBm4c17PW02HNNE8gWkHlm86w7mso2D8G5u5I51wRk/pFLPGo2AkXKk5MRQobcsvc jTGhmMxFcIb3rUrrMlxelm2ynL3t9Xgu8nhGmCRKUeXF7M0jIDPBP4pRtNwKIJwR3kHMFhcw3PB tpKQ0ieoKw6RuetpEn3jaHs5BbKRKrImkV96xphSf8blfWY7sWvoriq3lv8E57JxYdqGHfsQ8Wx mS0nR2xVnWenCpmNbuQZnIQ0BX5hEb/NI38yAculu5pxHon+6WZktCxtNxUSAMVBB1wRJJzxa6e H0I6rmKdn/IdIA86i2Um3BI6djJyz95wRznUUyoWxdiVXISh8KL36JEg== X-Received: by 2002:a17:90b:54c4:b0:39e:4c7f:7308 with SMTP id 98e67ed59e1d1-39e55071981mr2385940a91.31.1789701217262; Thu, 17 Sep 2026 20:13:37 -0700 (PDT) Received: from lgs.. ([2001:250:5800:1002::de93]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39e5a0e860asm827971a91.1.2026.09.17.20.13.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 20:13:36 -0700 (PDT) From: Guangshuo Li To: Ulf Hansson , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Bartosz Golaszewski , Andy Shevchenko , Greg Kroah-Hartman , Guangshuo Li , Wentao Liang , Miaoqian Lin , Shawn Guo , Lucas Stach , Dong Aisheng , linux-pm@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org Subject: [PATCH] pmdomain: imx: gpc: remove all initialized power domains Date: Fri, 18 Sep 2026 11:13:22 +0800 Message-ID: <20260918031323.3376849-1-lgs201920130244@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" imx_gpc_old_dt_init() initializes all power domains described by of_id_data->num_domains. Its probe failure path removes all of these domains, but imx_gpc_remove() only removes the PU and ARM domains. On SoCs with more than two domains, such as i.MX6SL and i.MX6SX, the additional DISPLAY and PCI generic power domains can remain registered after the GPC driver is removed. Remove all initialized power domains in reverse order. Keep releasing the PU clocks immediately after the PU domain has been successfully removed. This issue was found by manual code inspection. Fixes: 5a42d1198901 ("soc: imx: gpc: fix imx6sl gpc power domain regression= ") Cc: stable@vger.kernel.org Signed-off-by: Guangshuo Li --- drivers/pmdomain/imx/gpc.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/pmdomain/imx/gpc.c b/drivers/pmdomain/imx/gpc.c index abca5f449a22..5766e3b40470 100644 --- a/drivers/pmdomain/imx/gpc.c +++ b/drivers/pmdomain/imx/gpc.c @@ -502,8 +502,10 @@ static int imx_gpc_probe(struct platform_device *pdev) =20 static void imx_gpc_remove(struct platform_device *pdev) { + const struct imx_gpc_dt_data *of_id_data =3D + device_get_match_data(&pdev->dev); struct device_node *pgc_node; - int ret; + int i, ret; =20 pgc_node =3D of_get_child_by_name(pdev->dev.of_node, "pgc"); =20 @@ -519,19 +521,18 @@ static void imx_gpc_remove(struct platform_device *pd= ev) if (!pgc_node) { of_genpd_del_provider(pdev->dev.of_node); =20 - ret =3D pm_genpd_remove(&imx_gpc_domains[GPC_PGC_DOMAIN_PU].base); - if (ret) { - dev_err(&pdev->dev, "Failed to remove PU power domain (%pe)\n", - ERR_PTR(ret)); - return; - } - imx_pgc_put_clocks(&imx_gpc_domains[GPC_PGC_DOMAIN_PU]); + for (i =3D of_id_data->num_domains - 1; i >=3D 0; i--) { + ret =3D pm_genpd_remove(&imx_gpc_domains[i].base); + if (ret) { + dev_err(&pdev->dev, + "Failed to remove %s power domain (%pe)\n", + imx_gpc_domains[i].base.name, + ERR_PTR(ret)); + return; + } =20 - ret =3D pm_genpd_remove(&imx_gpc_domains[GPC_PGC_DOMAIN_ARM].base); - if (ret) { - dev_err(&pdev->dev, "Failed to remove ARM power domain (%pe)\n", - ERR_PTR(ret)); - return; + if (i =3D=3D GPC_PGC_DOMAIN_PU) + imx_pgc_put_clocks(&imx_gpc_domains[i]); } } =20 --=20 2.43.0