All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nilawar, Badal" <badal.nilawar@intel.com>
To: Bjorn Helgaas <helgaas@kernel.org>
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>, <lucas.demarchi@intel.com>,
	<rodrigo.vivi@intel.com>, <varun.gupta@intel.com>,
	<ville.syrjala@linux.intel.com>, <uma.shankar@intel.com>
Subject: Re: [PATCH v4 03/11] PCI/ACPI: Add PERST# Assertion Delay _DSM method
Date: Tue, 30 Sep 2025 15:09:19 +0530	[thread overview]
Message-ID: <deddb713-8352-47b5-9705-4cea0200d54d@intel.com> (raw)
In-Reply-To: <20250904184427.GA1271351@bhelgaas>


On 05-09-2025 00:14, Bjorn Helgaas wrote:
> On Thu, May 29, 2025 at 04:46:46PM +0530, Badal Nilawar wrote:
>> From: Anshuman Gupta <anshuman.gupta@intel.com>
>>
>> Implement _DSM Method 0Bh as per PCI firmware specs
>> section 4.6.11 Rev 3.3.
> Update citation as for the other _DSM function.
Sure.
>
>> Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
>> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
>> ---
>>   drivers/pci/pci-acpi.c   | 57 ++++++++++++++++++++++++++++++++++++++++
>>   include/linux/pci-acpi.h |  8 +++++-
>>   2 files changed, 64 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
>> index d33efba4ca94..88044491feaa 100644
>> --- a/drivers/pci/pci-acpi.c
>> +++ b/drivers/pci/pci-acpi.c
>> @@ -1531,6 +1531,63 @@ int pci_acpi_request_d3cold_aux_power(struct pci_dev *dev, u32 requested_power,
>>   }
>>   EXPORT_SYMBOL_GPL(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.
> Reword in imperative mood.
>
> Like pci_acpi_request_d3cold_aux_power(), I think the driver should
> call this with its device, not the Root Port.
Ok.
>
>> + * 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)
>> +		return -EINVAL;
>> +
>> +	handle = ACPI_HANDLE(&dev->dev);
>> +	if (!handle)
>> +		return -EINVAL;
>> +
>> +	if (!acpi_check_dsm(handle, &pci_acpi_dsm_guid, 4, 1 << DSM_PCI_PERST_ASSERTION_DELAY)) {
>> +		pci_dbg(dev, "ACPI _DSM 0%Xh not supported\n", DSM_PCI_PERST_ASSERTION_DELAY);
>> +		return -ENODEV;
>> +	}
>> +
>> +	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) {
>> +		pci_info(dev, "PERST# Assertion Delay set to %u microseconds\n", delay_us);
>> +		ret = 0;
>> +	} else if (result == 0) {
>> +		pci_warn(dev, "PERST# Assertion Delay request failed, no previous valid request\n");
>> +	} else {
>> +		pci_warn(dev, "PERST# Assertion Delay request failed, Previous valid delay: %u microseconds\n",
>> +			 result);
>> +	}
>> +
>> +	ACPI_FREE(out_obj);
>> +	return ret;
>> +}
>> +EXPORT_SYMBOL_GPL(pci_acpi_add_perst_assertion_delay);
>> +
>>   static void pci_acpi_set_external_facing(struct pci_dev *dev)
>>   {
>>   	u8 val;
>> diff --git a/include/linux/pci-acpi.h b/include/linux/pci-acpi.h
>> index 6079306ad754..e53d4893cf56 100644
>> --- a/include/linux/pci-acpi.h
>> +++ b/include/linux/pci-acpi.h
>> @@ -122,6 +122,7 @@ extern const guid_t pci_acpi_dsm_guid;
>>   #define DSM_PCI_POWER_ON_RESET_DELAY		0x08
>>   #define DSM_PCI_DEVICE_READINESS_DURATIONS	0x09
>>   #define DSM_PCI_D3COLD_AUX_POWER_LIMIT		0x0A
>> +#define DSM_PCI_PERST_ASSERTION_DELAY		0x0B
>>   
>>   #ifdef CONFIG_PCIE_EDR
>>   void pci_acpi_add_edr_notifier(struct pci_dev *pdev);
>> @@ -135,7 +136,7 @@ int pci_acpi_set_companion_lookup_hook(struct acpi_device *(*func)(struct pci_de
>>   void pci_acpi_clear_companion_lookup_hook(void);
>>   int pci_acpi_request_d3cold_aux_power(struct pci_dev *dev, u32 requested_power,
>>   				      u32 *retry_interval);
>> -
>> +int pci_acpi_add_perst_assertion_delay(struct pci_dev *dev, u32 delay_us);
>>   #else	/* CONFIG_ACPI */
>>   static inline void acpi_pci_add_bus(struct pci_bus *bus) { }
>>   static inline void acpi_pci_remove_bus(struct pci_bus *bus) { }
>> @@ -144,6 +145,11 @@ static inline int pci_acpi_request_d3cold_aux_power(struct pci_dev *dev, u32 req
>>   {
>>   	return -EOPNOTSUPP;
>>   }
>> +
>> +static inline int pci_acpi_add_perst_assertion_delay(struct pci_dev *dev, u32 delay_us)
> Wrap to fit in 80 columns like the rest of the file.

Ok.

Thanks,
Badal

>> +{
>> +	return -EOPNOTSUPP;
>> +}
>>   #endif	/* CONFIG_ACPI */
>>   
>>   #endif	/* _PCI_ACPI_H_ */
>> -- 
>> 2.34.1
>>

  reply	other threads:[~2025-09-30  9:39 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-29 11:16 [PATCH v4 00/11] VRAM Self Refresh Badal Nilawar
2025-05-29 11:16 ` [PATCH v4 01/11] PCI/ACPI: Add D3cold Aux Power Limit_DSM method Badal Nilawar
2025-05-29 21:36   ` Sathyanarayanan Kuppuswamy
2025-09-02  6:04     ` Nilawar, Badal
2025-07-02 11:08   ` Rafael J. Wysocki
2025-09-02  6:17     ` Nilawar, Badal
2025-09-02  8:10     ` Nilawar, Badal
2025-09-04 18:30   ` Bjorn Helgaas
2025-09-30  6:11     ` Nilawar, Badal
2025-05-29 11:16 ` [PATCH v4 02/11] PCI/ACPI: Per root port allow one Aux power limit request Badal Nilawar
2025-05-29 21:41   ` Sathyanarayanan Kuppuswamy
2025-07-02 11:11     ` Rafael J. Wysocki
2025-07-02 14:03       ` Sathyanarayanan Kuppuswamy
2025-07-02 11:21   ` Rafael J. Wysocki
2025-09-02  8:43     ` Nilawar, Badal
2025-07-02 11:28   ` Ilpo Järvinen
2025-09-02  8:53     ` Nilawar, Badal
2025-09-04 18:36   ` Bjorn Helgaas
2025-09-30  9:36     ` Nilawar, Badal
2025-05-29 11:16 ` [PATCH v4 03/11] PCI/ACPI: Add PERST# Assertion Delay _DSM method Badal Nilawar
2025-05-29 21:57   ` Sathyanarayanan Kuppuswamy
2025-07-02 11:25     ` Rafael J. Wysocki
2025-09-02  8:22       ` Nilawar, Badal
2025-09-04 18:44   ` Bjorn Helgaas
2025-09-30  9:39     ` Nilawar, Badal [this message]
2025-05-29 11:16 ` [PATCH v4 04/11] drm/xe/vrsr: Introduce flag has_vrsr Badal Nilawar
2025-06-06  9:38   ` [v4,04/11] " Poosa, Karthik
2025-05-29 11:16 ` [PATCH v4 05/11] drm/xe/vrsr: Detect VRSR Capability Badal Nilawar
2025-05-29 11:16 ` [PATCH v4 06/11] drm/xe/vrsr: Initialize VRSR feature Badal Nilawar
2025-06-24 10:28   ` [v4,06/11] " Poosa, Karthik
2025-09-03 13:39     ` Nilawar, Badal
2025-09-04 13:42       ` Poosa, Karthik
2025-05-29 11:16 ` [PATCH v4 07/11] drm/xe/vrsr: Enable VRSR on default VGA boot device Badal Nilawar
2025-06-06 13:07   ` Jani Nikula
2025-09-03 14:18     ` Nilawar, Badal
2025-05-29 11:16 ` [PATCH v4 08/11] drm/xe/vrsr: Refactor d3cold.allowed to a enum Badal Nilawar
2025-06-24 10:41   ` [v4,08/11] " Poosa, Karthik
2025-05-29 11:16 ` [PATCH v4 09/11] drm/xe/pm: D3Cold target state Badal Nilawar
2025-06-24 11:10   ` [v4,09/11] " Poosa, Karthik
2025-05-29 11:16 ` [PATCH v4 10/11] drm/xe/vrsr: Enable VRSR Badal Nilawar
2025-06-24 11:45   ` [v4,10/11] " Poosa, Karthik
2025-09-03 14:16     ` Nilawar, Badal
2025-09-04  6:01       ` Poosa, Karthik
2025-05-29 11:16 ` [PATCH v4 11/11] drm/xe/vrsr: Introduce a debugfs node named vrsr_capable Badal Nilawar
2025-06-24 11:14   ` [v4,11/11] " Poosa, Karthik
2025-05-29 11:36 ` ✗ CI.Patch_applied: failure for VRAM Self Refresh (rev4) Patchwork

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=deddb713-8352-47b5-9705-4cea0200d54d@intel.com \
    --to=badal.nilawar@intel.com \
    --cc=anshuman.gupta@intel.com \
    --cc=bhelgaas@google.com \
    --cc=helgaas@kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.