[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