linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Anshuman Gupta <anshuman.gupta@intel.com>
To: intel-xe@lists.freedesktop.org, linux-acpi@vger.kernel.org,
	linux-pci@vger.kernel.org
Cc: rafael@kernel.org, lenb@kernel.org, bhelgaas@google.com,
	ilpo.jarvinen@linux.intel.com, lucas.demarchi@intel.com,
	rodrigo.vivi@intel.com, badal.nilawar@intel.com,
	anshuman.gupta@intel.com, varun.gupta@intel.com,
	ville.syrjala@linux.intel.com, uma.shankar@intel.com
Subject: [PATCH 08/12] drm/xe: Add PCIe ACPI Aux Power notifier
Date: Tue,  1 Apr 2025 21:02:21 +0530	[thread overview]
Message-ID: <20250401153225.96379-9-anshuman.gupta@intel.com> (raw)
In-Reply-To: <20250401153225.96379-1-anshuman.gupta@intel.com>

Register PCIe ACPI notifier block and mark vrsr_capable
false in the notifier callback. This will ensure that
BMG GPU does not explode if any other PCIe child device
(under same Root Port) aux power request returns
with No main power removal.

Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
---
 drivers/gpu/drm/xe/xe_device_types.h |  3 ++
 drivers/gpu/drm/xe/xe_pm.c           | 41 ++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index fd9dea207580..9aacd5af7d0f 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -517,6 +517,9 @@ struct xe_device {
 		struct mutex lock;
 	} d3cold;
 
+	/** @nb: PCI ACPI Aux power notifier */
+	struct notifier_block nb;
+
 	/** @pmt: Support the PMT driver callback interface */
 	struct {
 		/** @pmt.lock: protect access for telemetry data */
diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
index 364b937e0ded..ea93923d6671 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -87,6 +87,41 @@ static struct lockdep_map xe_pm_runtime_nod3cold_map = {
 };
 #endif
 
+static int aux_pwr_notifier(struct notifier_block *nb,
+			    unsigned long val, void *data)
+{
+	struct pci_dev *root_pdev = data;
+	struct pci_dev *pdev;
+	struct xe_device *xe;
+
+	xe = container_of(nb, struct xe_device, nb);
+
+	pdev = pcie_find_root_port(to_pci_dev(xe->drm.dev));
+	if (!pdev)
+		return -EINVAL;
+
+	if (root_pdev != pdev)
+		return 0;
+
+	xe_pm_runtime_get(xe);
+
+	if (val == ACPI_NO_MAIN_PW_REMOVAL) {
+		drm_err(&xe->drm, "PCIe core blocked the removal of Main Supply\n");
+		xe->d3cold.vrsr_capable = false;
+	}
+
+	xe_pm_runtime_put(xe);
+
+	return 0;
+}
+
+static void xe_pm_vrsr_fini(void *arg)
+{
+	struct xe_device *xe = arg;
+
+	pci_acpi_unregister_aux_power_notifier(&xe->nb);
+}
+
 /**
  * xe_rpm_reclaim_safe() - Whether runtime resume can be done from reclaim context
  * @xe: The xe device.
@@ -295,6 +330,12 @@ static int pci_acpi_aux_power_setup(struct xe_device *xe)
 		return ret;
 
 	ret = pci_acpi_add_perst_assertion_delay(root_pdev, perst_delay);
+	if (ret)
+		return ret;
+
+	xe->nb.notifier_call = aux_pwr_notifier;
+	pci_acpi_register_aux_power_notifier(&xe->nb);
+	devm_add_action_or_reset(xe->drm.dev, xe_pm_vrsr_fini, xe);
 
 	return ret;
 }
-- 
2.43.0


  parent reply	other threads:[~2025-04-01 15:36 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-01 15:32 [PATCH 00/12] VRAM Self Refresh Anshuman Gupta
2025-04-01 15:32 ` [PATCH 01/12] PCI/ACPI: Add D3cold Aux Power Limit_DSM method Anshuman Gupta
2025-04-01 18:25   ` Bjorn Helgaas
2025-04-02 10:59     ` Rafael J. Wysocki
2025-04-03  5:25     ` Gupta, Anshuman
2025-04-01 15:32 ` [PATCH 02/12] PCI/ACPI: Add PERST# Assertion Delay _DSM method Anshuman Gupta
2025-04-01 18:30   ` Bjorn Helgaas
2025-04-03  5:59     ` Gupta, Anshuman
2025-04-02 11:06   ` Rafael J. Wysocki
2025-04-02 14:21     ` Bjorn Helgaas
2025-04-02 14:52       ` Rafael J. Wysocki
2025-04-02 15:50         ` Bjorn Helgaas
2025-04-02 17:51           ` Rafael J. Wysocki
2025-04-02 18:48             ` Bjorn Helgaas
2025-04-02 19:36               ` Rafael J. Wysocki
2025-04-08 20:48                 ` Bjorn Helgaas
2025-04-09 12:30                   ` Rafael J. Wysocki
2025-04-09 14:47                     ` Bjorn Helgaas
2025-04-09 16:28                       ` Rafael J. Wysocki
2025-04-01 15:32 ` [PATCH 03/12] PCI/ACPI: Add aux power grant notifier Anshuman Gupta
2025-04-01 20:13   ` Bjorn Helgaas
2025-04-02 11:23     ` Rafael J. Wysocki
2025-04-03 11:30       ` Gupta, Anshuman
2025-04-03 13:34         ` Rafael J. Wysocki
2025-04-03 16:08           ` Gupta, Anshuman
2025-04-03 18:15             ` Rafael J. Wysocki
2025-04-04 12:53               ` Gupta, Anshuman
2025-04-08 13:01                 ` Rafael J. Wysocki
2025-04-03  7:56     ` Gupta, Anshuman
2025-04-03 13:48       ` Rafael J. Wysocki
2025-04-01 15:32 ` [PATCH 04/12] drm/xe/vrsr: Introduce flag has_vrsr Anshuman Gupta
2025-04-01 15:32 ` [PATCH 05/12] drm/xe/vrsr: Detect VRSR Capability Anshuman Gupta
2025-04-01 15:32 ` [PATCH 06/12] drm/xe/vrsr: Initialize VRSR feature Anshuman Gupta
2025-04-01 19:56   ` Bjorn Helgaas
2025-04-03  6:09     ` Gupta, Anshuman
2025-04-01 15:32 ` [PATCH 07/12] drm/xe/vrsr: Enable VRSR on default VGA boot device Anshuman Gupta
2025-04-01 15:32 ` Anshuman Gupta [this message]
2025-04-01 15:32 ` [PATCH 09/12] drm/xe/vrsr: Refactor d3cold.allowed to a enum Anshuman Gupta
2025-04-01 15:32 ` [PATCH 10/12] drm/xe/pm: D3Cold target state Anshuman Gupta
2025-04-02 10:28   ` [10/12] " Poosa, Karthik
2025-04-01 15:32 ` [PATCH 11/12] drm/xe/vrsr: Enable VRSR Anshuman Gupta
2025-04-01 15:32 ` [PATCH 12/12] drm/xe/vrsr: Introduce a debugfs node named vrsr_capable Anshuman Gupta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250401153225.96379-9-anshuman.gupta@intel.com \
    --to=anshuman.gupta@intel.com \
    --cc=badal.nilawar@intel.com \
    --cc=bhelgaas@google.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lucas.demarchi@intel.com \
    --cc=rafael@kernel.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=uma.shankar@intel.com \
    --cc=varun.gupta@intel.com \
    --cc=ville.syrjala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).