From: Bjorn Helgaas <helgaas@kernel.org>
To: "Nilawar, Badal" <badal.nilawar@intel.com>
Cc: intel-xe@lists.freedesktop.org, linux-acpi@vger.kernel.org,
linux-pci@vger.kernel.org, anshuman.gupta@intel.com,
rafael@kernel.org, lenb@kernel.org, bhelgaas@google.com,
ilpo.jarvinen@linux.intel.com, rodrigo.vivi@intel.com,
varun.gupta@intel.com, ville.syrjala@linux.intel.com,
uma.shankar@intel.com, karthik.poosa@intel.com,
matthew.auld@intel.com, sk.anirban@intel.com,
raag.jadav@intel.com
Subject: Re: [PATCH v6 02/12] PCI/ACPI: Add PERST# Assertion Delay _DSM method
Date: Thu, 22 Jan 2026 17:27:33 -0600 [thread overview]
Message-ID: <20260122232733.GA46175@bhelgaas> (raw)
In-Reply-To: <531f2fe7-7a17-42cc-8747-ea122fe1c95f@intel.com>
On Tue, Jan 20, 2026 at 09:29:16PM +0530, Nilawar, Badal wrote:
> On 15-01-2026 01:25, Bjorn Helgaas wrote:
> > On Tue, Jan 13, 2026 at 10:12:03PM +0530, Badal Nilawar wrote:
> > > From: Anshuman Gupta <anshuman.gupta@intel.com>
> > >
> > > Implement _DSM Method 0Bh as per PCI Firmware r3.3, sec 4.6.10, to request
> > > fixed delay in timing between the time the PME_TO_Ack message is received
> > > at the PCI Express Downstream Port that originated the PME_Turn_Off
> > > message, and the time the platform asserts PERST# to the slot during the
> > > corresponding Endpoint’s or PCI Express Upstream Port’s transition to
> > > D3cold while the system is in an ACPI operational state.
> > > Host platform supporting this feature ensures that device is observing
> > > this delay in every applicable D3Cold transition.
> > > +int pci_acpi_add_perst_assertion_delay(struct pci_dev *dev, u32 delay_us)
> > > +{
> ...
> > > + if (!dev)
> > > + return -EINVAL;
Calling this with "dev == NULL" is a bug in the caller, so I don't
think we should check for this. That way we will take the NULL
pointer dereference, cause an oops, and can fix the bug. If we check
for NULL, the bug is likely to be unnoticed.
> > Sec 4.6.11 also says we should track this per Downstream Port and
> > request the maximum of delays requested by any child. So I think we
> > need to:
> >
> > - add a perst_delay in struct pci_dev
> >
> > - when we find this _DSM, set
> > bdev.perst_delay = max(bdev.perst_delay, delay_us)
> >
> > - pass bdev.perst_delay to the _DSM instead of delay_us
>
> For vrsr use case delay requested is 10ms, which is maximum allowed by this
> _DSM.
> I think we should take care of above suggestion when we implement aux power
> aggregation.
> For now, I can create another list let's call it acpi_perst_delay_list,
> similar to acpi_aux_power_list, and
> allow a only one device to request a PERST delay.
I think lists will be a maintenance headache.
> > > + handle = ACPI_HANDLE(&bdev->dev);
> > > + if (handle &&
> > > + acpi_check_dsm(handle, &pci_acpi_dsm_guid, 4,
> > > + 1 << DSM_PCI_PERST_ASSERTION_DELAY))
> > > + break;
> > > + }
> > > +
> > > + if (!bdev)
> > > + return -ENODEV;
> > > +
> > > + out_obj = acpi_evaluate_dsm_typed(ACPI_HANDLE(&bdev->dev),
> > > + &pci_acpi_dsm_guid, 4,
> > > + DSM_PCI_PERST_ASSERTION_DELAY,
> > > + &in_obj, ACPI_TYPE_INTEGER);
> > > + if (!out_obj)
> > > + return -EINVAL;
> > > +
> > > + result = out_obj->integer.value;
> > > + ACPI_FREE(out_obj);
> > > +
> > > + if (result == delay_us) {
> > > + pci_info(dev, "PERST# Assertion Delay set to %u microseconds\n", delay_us);
> >
> > I think this message should use "bdev" instead of "dev". I know the
> > request is for "dev", but the delay connected to bdev and applies to
> > all functions below the Downstream Port.
>
> Since it is set for the device which as requested I kept dev.
It's set for *all* devices below bdev, so I think the message should
give a clue about that. If we only include "dev", there is no
indication that other devices are affected. Maybe we could include
both dev and bdev?
pci_info(bdev, "PERST# assertion delay %u microseconds set as requested by %s\n",
delay_us, pci_name(bdev));
next prev parent reply other threads:[~2026-01-22 23:27 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-13 16:42 [PATCH v6 00/12] VRAM Self Refresh Badal Nilawar
2026-01-13 16:42 ` [PATCH v6 01/12] PCI/ACPI: Add D3cold Aux Power Limit_DSM method Badal Nilawar
2026-01-14 20:24 ` Bjorn Helgaas
2026-01-20 14:03 ` Nilawar, Badal
2026-01-22 20:53 ` Bjorn Helgaas
2026-01-13 16:42 ` [PATCH v6 02/12] PCI/ACPI: Add PERST# Assertion Delay _DSM method Badal Nilawar
2026-01-13 17:04 ` Manivannan Sadhasivam
2026-01-14 13:47 ` Nilawar, Badal
2026-01-14 19:55 ` Bjorn Helgaas
2026-01-14 20:19 ` Bjorn Helgaas
2026-01-20 15:59 ` Nilawar, Badal
2026-01-22 23:27 ` Bjorn Helgaas [this message]
2026-01-13 16:42 ` [PATCH v6 03/12] drm/xe/vrsr: Introduce flag has_vrsr Badal Nilawar
2026-01-13 16:42 ` [PATCH v6 04/12] drm/xe/vrsr: Detect VRSR Capability Badal Nilawar
2026-01-13 16:42 ` [PATCH v6 05/12] drm/xe/vrsr: Initialize VRSR feature Badal Nilawar
2026-01-13 16:42 ` [PATCH v6 06/12] drm/xe/vrsr: Enable VRSR on default VGA boot device Badal Nilawar
2026-01-15 14:25 ` Jani Nikula
2026-01-15 15:25 ` Rodrigo Vivi
2026-01-20 13:28 ` Nilawar, Badal
2026-01-20 13:43 ` Jani Nikula
2026-01-20 14:42 ` Shankar, Uma
2026-01-20 15:37 ` Nilawar, Badal
2026-01-20 15:07 ` Vivi, Rodrigo
2026-01-13 16:42 ` [PATCH v6 07/12] drm/xe/vrsr: Refactor d3cold.allowed to a enum Badal Nilawar
2026-01-13 16:42 ` [PATCH v6 08/12] drm/xe/pm: D3cold target state Badal Nilawar
2026-01-13 16:42 ` [PATCH v6 09/12] drm/xe/pm: Refactor PM Sleep Ops Badal Nilawar
2026-01-14 18:00 ` Bjorn Helgaas
2026-01-20 14:05 ` Nilawar, Badal
2026-01-13 16:42 ` [PATCH v6 10/12] drm/xe/vrsr: Enable VRSR Badal Nilawar
2026-01-14 18:02 ` Bjorn Helgaas
2026-01-13 16:42 ` [PATCH v6 11/12] drm/xe/pm/s2idle: Don't evict user BOs D3cold-VRSR state Badal Nilawar
2026-01-13 16:42 ` [PATCH v6 12/12] drm/xe/vrsr: Introduce a debugfs node named vrsr_capable Badal Nilawar
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=20260122232733.GA46175@bhelgaas \
--to=helgaas@kernel.org \
--cc=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=karthik.poosa@intel.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=matthew.auld@intel.com \
--cc=raag.jadav@intel.com \
--cc=rafael@kernel.org \
--cc=rodrigo.vivi@intel.com \
--cc=sk.anirban@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