[PATCH 02/12] PCI/ACPI: Add PERST# Assertion Delay _DSM method
Gupta, Anshuman
anshuman.gupta at intel.com
Thu Apr 3 05:59:35 UTC 2025
> -----Original Message-----
> From: Bjorn Helgaas <helgaas at kernel.org>
> Sent: Wednesday, April 2, 2025 12:01 AM
> To: Gupta, Anshuman <anshuman.gupta at intel.com>
> Cc: intel-xe at lists.freedesktop.org; linux-acpi at vger.kernel.org; linux-
> pci at vger.kernel.org; rafael at kernel.org; lenb at kernel.org;
> bhelgaas at google.com; ilpo.jarvinen at linux.intel.com; De Marchi, Lucas
> <lucas.demarchi at intel.com>; Vivi, Rodrigo <rodrigo.vivi at intel.com>; Nilawar,
> Badal <badal.nilawar at intel.com>; Gupta, Varun <varun.gupta at intel.com>;
> ville.syrjala at linux.intel.com; Shankar, Uma <uma.shankar at intel.com>
> Subject: Re: [PATCH 02/12] PCI/ACPI: Add PERST# Assertion Delay _DSM
> method
>
> On Tue, Apr 01, 2025 at 09:02:15PM +0530, Anshuman Gupta wrote:
> > Implement _DSM Method 11 as per PCI firmware specs section 4.6.11 Rev
> > 3.3.
>
> "PCI Firmware r3.3, sec 4.6.11" so the citation is major to minor.
>
> "0xb" or "0Bh" to match spec usage.
Thanks for review,
will fix it.
>
> > Signed-off-by: Anshuman Gupta <anshuman.gupta at intel.com>
> > ---
> > drivers/pci/pci-acpi.c | 53
> ++++++++++++++++++++++++++++++++++++++++
> > include/linux/pci-acpi.h | 7 ++++++
> > 2 files changed, 60 insertions(+)
> >
> > diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c index
> > ebd49e43457e..04149f037664 100644
> > --- a/drivers/pci/pci-acpi.c
> > +++ b/drivers/pci/pci-acpi.c
> > @@ -1499,6 +1499,59 @@ int pci_acpi_request_d3cold_aux_power(struct
> > pci_dev *dev, u32 requested_power) }
> > EXPORT_SYMBOL(pci_acpi_request_d3cold_aux_power);
> >
> > +/**
> > + * pci_acpi_add_perst_assertion_delay - Request PERST# delay via ACPI
> > +DSM
> > + * @dev: PCI device instance
> > + * @delay_us: Requested delay_us
> > + *
> > + * This function sends a request to the host BIOS via ACPI _DSM to
> > +grant the
> > + * required PERST# delay for the specified PCI device. It evaluates
> > +the _DSM
> > + * to request the PERST# delay and handles the response accordingly.
> > + *
> > + * Return: returns 0 on success and errno on failure.
> > + */
> > +int pci_acpi_add_perst_assertion_delay(struct pci_dev *dev, u32
> > +delay_us) {
> > + union acpi_object in_obj = {
> > + .integer.type = ACPI_TYPE_INTEGER,
> > + .integer.value = delay_us,
> > + };
> > +
> > + union acpi_object *out_obj;
> > + acpi_handle handle;
> > + int result, ret = -EINVAL;
> > +
> > + if (!dev || !ACPI_HANDLE(&dev->dev))
> > + return -EINVAL;
> > +
> > + handle = ACPI_HANDLE(&dev->dev);
>
> acpi_check_dsm().
Will fix it same as patch1
>
> > + out_obj = acpi_evaluate_dsm_typed(handle, &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;
> > +
> > + if (result == delay_us) {
> > + dev_info(&dev->dev, "PERST# Assertion Delay set to"
> > + "%u microseconds\n", delay_us);
>
> pci_info().
>
> Join these into a single string, even though they won't fit in a line without
> wrapping. This is to make them easier to grep for when a user reports seeing
> the message. (Do this on the previous patch too, where I forgot to mention
> it.)
there was comment in RFC to warp the line with in 80.
Will join the string.
Thanks,
Anshuman
>
> > + ret = 0;
> > + } else if (result == 0) {
> > + dev_warn(&dev->dev, "PERST# Assertion Delay request
> failed,"
> > + "no previous valid request\n");
> > + } else {
> > + dev_warn(&dev->dev,
> > + "PERST# Assertion Delay request failed"
> > + "Previous valid delay: %u microseconds\n", result);
> > + }
> > +
> > + ACPI_FREE(out_obj);
> > + return ret;
> > +}
> > +EXPORT_SYMBOL(pci_acpi_add_perst_assertion_delay);
More information about the Intel-xe
mailing list