From nobody Tue Apr 7 15:28:03 2026 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (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 E8A613A0B1B for ; Thu, 26 Feb 2026 09:22:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772097771; cv=none; b=Iftw/sgx1RwlOngEuAGhPtdRxJpobCSUMecpxpdQbNz8/560JKNk4UC9K5EmQ0C/FrsVHK0yxkROI4REZ98NYy57UwX+0/PnHJ0zvn2nTGR/pPaxmlg0x++vkHAXg5GJjnRGgqv5Gbx1DQyeXNbQm2sKpax5v5EGriFEjedDqUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772097771; c=relaxed/simple; bh=uwSQmlLedA0XM/MofT/WPTTrwO/hP/xkkFLlNhjroMI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=goAbOH1mYEGb1sOJCXNx8pBQyzIEeJPllr/xhDz9q3EhWgXI84JhJcUWsUl5pn40kuNMSBVTk9f6PNSTuXTWpIZriovVsvFB5/6BgmT+degWX0wvPx7JiK3WHW5sWwkCoiiWRTR2mp83Ky3oOkcuGxXDehbe4qRdIKv8xFWKoi4= 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=BslHiaBp; arc=none smtp.client-ip=209.85.210.170 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="BslHiaBp" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-824adc96ad2so713677b3a.3 for ; Thu, 26 Feb 2026 01:22:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772097767; x=1772702567; 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=XPrx9KTPgR+h13PjCahv5Y+K3yQbrf8iaR2zrkCxJ1A=; b=BslHiaBp5aqv41Fhtnpb6OwULPA1lSUZHTvhTzKxxXowPPaTWnSgAZ5RQor2gutlj/ t5HQdoR8T0Vka4ZzJabXeO/T0lNVSpFdaTTkyUc5ZK205SSOY6ROOGFNHuaeAbKxcXET givDLLeyOdCRCDaqniza8Y/7OISAMnggi173M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772097767; x=1772702567; 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=XPrx9KTPgR+h13PjCahv5Y+K3yQbrf8iaR2zrkCxJ1A=; b=jvYwn+/3pdrZSTtyNT3tYwPW1psQloVPgAqQTSO0YVJS0ZIPA9k1LK38Qv11Bjp6hW xADttQg3Vzl4kUgmHd393/4buAqc38oWQUWAbpiEbK5QbYKohuQwixco/DfskEKxLY1D 5LuNPFYMQ2jPfwObiEeYkVzGUlX5fMmTrj/2fK2kgsXIXkx6UWczzotjFMg66xJ51cij N7/3V8F7ASP/0xZvd0Xj52ISXIO+OkKJnh14FJIXSvX96U4SMfa/skVRm2oJgfa9crDb k85RHxaio3bGHiwo3lDoxRI1IUcDHEtXyFff5MbC4bLYNLl+Jcpnb3G/xwHXu1frMZy8 bu8g== X-Forwarded-Encrypted: i=1; AJvYcCVPq713Wq3QB8vBHWjUp1p/RX+F2jHJlilUm7TV14EvURcaQQCesvg6RmVB+7bboN4YmO84/sgm3rPSI+Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yz97Y227gWKo3+x94IYAZm4KM7+jZ0xXiku2/AjZilRVMHcldj4 X+0OTOeVSssEHM84L241Kkv7MVIba4+NDr6yBxnBvvva3GHBgaiUr5kRay/QykKMEA== X-Gm-Gg: ATEYQzxyeLUiwxj95rNUZphukXyrY93eRJdve8jBnkIAujzAj3I+nVAa/9FUH41BHPm ard658h8HBBwkYlSzWdchUjuI0zWldp/pbbJT66cDzKc50B4wRngMvgYU7+u8hIFfBJlqgQYnVP eU3+Wy/mEyMjpBL3kraNSJVx/VUq5iJAu32Gr+2dNi3BAZHzg2bj2J9uLL7ch+aBhh6N6vBUm3C dzV4810BOJ+K6eIvZpdhmGbcc1zfzvuXIvTsj5J/Tp2l56VjWcvNp8ICK6ovP+kKwWiYbYO2Lw6 pRxVT2nLwkq3KnnHJeah8L0dUU7aAzjGxnZFHWz/VvjrfgXKMo/KyQd/MghuSNAECR+qFfv4KLO /M79Fo0Cs1AURM7n71VoAPq11kFJCAy7IBuesBj4dwiA/RFPXY/5jIPhh2nHKbCye1bUV2Elr8Z fiowXEnCmHAQqcEjekeiMoaj5cThQYiSRvTDGakxGYQC+IAGvTCQfC5lFwSuGEb27QdpA3/puTa OO0qIbW X-Received: by 2002:a05:6a20:c90d:b0:38b:e9eb:b12c with SMTP id adf61e73a8af0-39545ee6537mr17910465637.31.1772097767231; Thu, 26 Feb 2026 01:22:47 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:bf01:7f64:477a:2f97]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6f46c2sm19024205ad.89.2026.02.26.01.22.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 01:22:46 -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 , Bartosz Golaszewski Subject: [PATCH v2] PCI/pwrctrl: Do not power off on pwrctrl device removal Date: Thu, 26 Feb 2026 17:22:33 +0800 Message-ID: <20260226092234.3859740-1-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.414.gf7e9f6c205-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 Reviewed-by: Manivannan Sadhasivam --- Changes since v1: - Keep the release function for the PCI slot driver to free the regulators 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 | 1 - 2 files changed, 13 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..b87639253ae2 100644 --- a/drivers/pci/pwrctrl/slot.c +++ b/drivers/pci/pwrctrl/slot.c @@ -63,7 +63,6 @@ static void devm_slot_pwrctrl_release(void *data) { struct slot_pwrctrl *slot =3D data; =20 - slot_pwrctrl_power_off(&slot->pwrctrl); regulator_bulk_free(slot->num_supplies, slot->supplies); } =20 --=20 2.53.0.414.gf7e9f6c205-goog