From nobody Fri Apr 17 03:06:32 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 9794931B107 for ; Tue, 24 Feb 2026 07:13:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771917189; cv=none; b=ZH98bsaRt1bFciRzdd0vjuyzKKt8dQ6a7/zeWHwzg6SQEq2Gm7u8+56X3nKB7W7KBks2/dalXp6jFEdeesEhIYwFWTW3/w/OAGFq/d5nZeGF68qhkhwCeQfBm/hyky0K8ZjF9gEri2VUqi5eoLiM2nyanvor/IxEMg1tPNm9Lhw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771917189; c=relaxed/simple; bh=M6szfNwiniju+Dr2cdLvoennisJiRUEczX+yYFr3ltk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=m7FI3Qnb5OSGfJiG3SA3PJLfx04ZaexV9AcFikQRAClmNgqDdYgJ9PC58JKYlsftkNo+98Jz8CYagJuZZvU7EJ2Z6YMA0UoZhneyxpTi0UpJaJOFXYEImxlpIA5db3UUeHX7WHUJ9G0q74mHW6NyGhCdK9RvsUnik6tzmHTDU3I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=I364lwq1; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="I364lwq1" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2aadc18f230so31896305ad.3 for ; Mon, 23 Feb 2026 23:13:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1771917186; x=1772521986; 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=pizzEVRW6V0EJ2ofyT4vjf5lXvzg1/kqPNoavqTg+CY=; b=I364lwq1OwBFMLoBOCCwZJZdFcZyWrqj/+XiToRITlkk2gPiM0PJ2ACidF6wf/CRUd BfVppDmm9su4rJM3JvL2vEp/s2iKGKma9AbCDQEjt8JuZ52+oSp9F3pAq7NEmrZ+FhSi N4rGdh4RvbgPcysopaYfITg60q3lVhbdMQEno= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771917186; x=1772521986; 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=pizzEVRW6V0EJ2ofyT4vjf5lXvzg1/kqPNoavqTg+CY=; b=Se6OuMsZwy9KfvCewZyz1/+p9l6E9kNQqfCl5s7NRc5jaA5fT4TxpyGzG11t03l8/G HfO15I+Yfdh9JBdqsTLNgBQaPX3ccld/WTrYUWW5/dz85fWvhFNOmmScOAAQ+igshpQC ZEtJbTe7hCG1nnNTPS6EP9WJFfVX5l6Hnqzykn40Q41pdJ4s+bbqGjkex8auGLz670bl SM1S9QoTj5EJWv7sqkm1oI+MpYdOqAnCLhYy8nO73B+cPC89B5gaG4na9wy9D59QyZaF ogd3d8RT3+BZN2KE209PSODw5xmFHM/4h6did74KnUCXULmsuGPotlve0eBakKaLLKm1 y5vw== X-Forwarded-Encrypted: i=1; AJvYcCXAkcrHFJdI3pUaSIG/kvN8q6etnwDjsF2qNd/l9TMBvNGjrQsZio+effxfEDHhek67ADIcTpyvqBg+rUQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxAkZ0bCEubRKK95lnqRCpIpZVqLT1r5K1GEgqMg1QrnIpmLOsn 2kSgGewI03VI7LOsmLbB93ARRJG9tblSv8iAENL+mKd/y2ZRCuJpxR+hx+B2JmXvgrDS51dVPcW DhUs= X-Gm-Gg: ATEYQzzUnX8YKr1foZ5H/rXWcw1Iv+nOkBOwLELVUd43E5uANqHItFtCc0drKaDaqW9 lziYwKOr1GUI6yWltp1Tzy2qVEV7eq++SghwdSL2avsbAJvy7bTA2XmuUB5DG8QBzFlWNcqRjGH NsQSYo+JLZ/on/ku/Muwjlg7+sXdodGG5NthxTvcu54kMa/d+gY4uljoNyjaAuirgr/4ovPZtL6 v2hjIg4OTBWBqw1DH87Hb4SLnTCy9lJUTb8I0XjwEmWLMgY3Y5KBBAAcOGzJzorH7XZtYWqYED4 Lm1WAr4872kSQl5NLga82u0r923MTGlJIrdVgJ3whcbI8b6eJcwzr46fWOXqXnc4ti3Rh9hlADP P3EF/PD87jfthsO3TUe7sNJbb8AQ5+qBuj0k8trWdEsHpsi/89vcLdx8r3nYIY4W/bLFrB+vRy7 pCdTYrPeWGHt+i4PBkaElYdQARdL7iMxHEOVeUFcuHHWEQGfg7wYVNcxaBTp+vpvG9RMIoxOjkI xHAyeRF X-Received: by 2002:a17:903:2445:b0:2aa:ecec:a447 with SMTP id d9443c01a7336-2ad74504e77mr125733335ad.36.1771917185858; Mon, 23 Feb 2026 23:13:05 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:752d:3fd0:786d:ab57]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ad74e34452sm93026605ad.7.2026.02.23.23.13.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Feb 2026 23:13:05 -0800 (PST) From: Chen-Yu Tsai To: Bartosz Golaszewski , Manivannan Sadhasivam , Bjorn Helgaas Cc: Chen-Yu Tsai , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH] PCI/pwrctrl: Do not power off on pwrctrl device removal Date: Tue, 24 Feb 2026 15:12:56 +0800 Message-ID: <20260224071258.2654521-1-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.371.g1d285c8824-goog 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" With the move to explicit pwrctrl power on/off APIs, the caller, i.e. the PCI driver should manage the power state. The pwrctrl drivers should not try to clean up or power off when they are removed, as this might end up disabling an already disabled regulator, causing a big warning. This can be triggered if a PCI controller driver's .remove() callback calls pci_pwrctrl_destroy_devices() after pci_pwrctrl_power_off_devices(). Drop the devm cleanup parts that turn off regulators from the pwrctrl drivers. Fixes: b921aa3f8dec ("PCI/pwrctrl: Switch to pwrctrl create, power on/off, = destroy APIs") Cc: Manivannan Sadhasivam Signed-off-by: Chen-Yu Tsai Reviewed-by: Bartosz Golaszewski --- Hi, I ran into this while integrating the new pci_pwrctrl_*() API into the MediaTek driver. I am sending this separately since this change is unrelated and does not conflict with or depend on the other changes for the driver itself. I think this should be merged for fixes. drivers/pci/pwrctrl/pci-pwrctrl-pwrseq.c | 12 ------------ drivers/pci/pwrctrl/slot.c | 12 ------------ 2 files changed, 24 deletions(-) diff --git a/drivers/pci/pwrctrl/pci-pwrctrl-pwrseq.c b/drivers/pci/pwrctrl= /pci-pwrctrl-pwrseq.c index 0d0377283c37..c7e4beec160a 100644 --- a/drivers/pci/pwrctrl/pci-pwrctrl-pwrseq.c +++ b/drivers/pci/pwrctrl/pci-pwrctrl-pwrseq.c @@ -68,13 +68,6 @@ static int pwrseq_pwrctrl_power_off(struct pci_pwrctrl *= pwrctrl) return pwrseq_power_off(pwrseq->pwrseq); } =20 -static void devm_pwrseq_pwrctrl_power_off(void *data) -{ - struct pwrseq_pwrctrl *pwrseq =3D data; - - pwrseq_pwrctrl_power_off(&pwrseq->pwrctrl); -} - static int pwrseq_pwrctrl_probe(struct platform_device *pdev) { const struct pwrseq_pwrctrl_pdata *pdata; @@ -101,11 +94,6 @@ static int pwrseq_pwrctrl_probe(struct platform_device = *pdev) return dev_err_probe(dev, PTR_ERR(pwrseq->pwrseq), "Failed to get the power sequencer\n"); =20 - ret =3D devm_add_action_or_reset(dev, devm_pwrseq_pwrctrl_power_off, - pwrseq); - if (ret) - return ret; - pwrseq->pwrctrl.power_on =3D pwrseq_pwrctrl_power_on; pwrseq->pwrctrl.power_off =3D pwrseq_pwrctrl_power_off; =20 diff --git a/drivers/pci/pwrctrl/slot.c b/drivers/pci/pwrctrl/slot.c index 082af81efe25..0ad920d8596d 100644 --- a/drivers/pci/pwrctrl/slot.c +++ b/drivers/pci/pwrctrl/slot.c @@ -59,14 +59,6 @@ static int slot_pwrctrl_power_off(struct pci_pwrctrl *pw= rctrl) return 0; } =20 -static void devm_slot_pwrctrl_release(void *data) -{ - struct slot_pwrctrl *slot =3D data; - - slot_pwrctrl_power_off(&slot->pwrctrl); - regulator_bulk_free(slot->num_supplies, slot->supplies); -} - static int slot_pwrctrl_probe(struct platform_device *pdev) { struct slot_pwrctrl *slot; @@ -105,10 +97,6 @@ static int slot_pwrctrl_probe(struct platform_device *p= dev) slot->pwrctrl.power_on =3D slot_pwrctrl_power_on; slot->pwrctrl.power_off =3D slot_pwrctrl_power_off; =20 - ret =3D devm_add_action_or_reset(dev, devm_slot_pwrctrl_release, slot); - if (ret) - return ret; - pci_pwrctrl_init(&slot->pwrctrl, dev); =20 ret =3D devm_pci_pwrctrl_device_set_ready(dev, &slot->pwrctrl); --=20 2.53.0.371.g1d285c8824-goog