Patch "nvme-pci: look for StorageD3Enable on companion ACPI device instead" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    nvme-pci: look for StorageD3Enable on companion ACPI device instead

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     nvme-pci-look-for-storaged3enable-on-companion-acpi-.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit d488eb35bf24e2acbcb0c4da033107b1309a958a
Author: Mario Limonciello <mario.limonciello@xxxxxxx>
Date:   Fri May 28 11:02:34 2021 -0500

    nvme-pci: look for StorageD3Enable on companion ACPI device instead
    
    [ Upstream commit e21e0243e7b0f1c2a21d21f4d115f7b37175772a ]
    
    The documentation around the StorageD3Enable property hints that it
    should be made on the PCI device.  This is where newer AMD systems set
    the property and it's required for S0i3 support.
    
    So rather than look for nodes of the root port only present on Intel
    systems, switch to the companion ACPI device for all systems.
    David Box from Intel indicated this should work on Intel as well.
    
    Link: https://lore.kernel.org/linux-nvme/YK6gmAWqaRmvpJXb@xxxxxxxxxx/T/#m900552229fa455867ee29c33b854845fce80ba70
    Link: https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/power-management-for-storage-hardware-devices-intro
    Fixes: df4f9bc4fb9c ("nvme-pci: add support for ACPI StorageD3Enable property")
    Suggested-by: Liang Prike <Prike.Liang@xxxxxxx>
    Acked-by: Raul E Rangel <rrangel@xxxxxxxxxxxx>
    Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx>
    Reviewed-by: David E. Box <david.e.box@xxxxxxxxxxxxxxx>
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Stable-dep-of: e79a10652bbd ("ACPI: x86: Force StorageD3Enable on more products")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index db81403a4286c..58aad5e03d045 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -2832,10 +2832,7 @@ static unsigned long check_vendor_combination_bug(struct pci_dev *pdev)
 #ifdef CONFIG_ACPI
 static bool nvme_acpi_storage_d3(struct pci_dev *dev)
 {
-	struct acpi_device *adev;
-	struct pci_dev *root;
-	acpi_handle handle;
-	acpi_status status;
+	struct acpi_device *adev = ACPI_COMPANION(&dev->dev);
 	u8 val;
 
 	/*
@@ -2843,28 +2840,9 @@ static bool nvme_acpi_storage_d3(struct pci_dev *dev)
 	 * must use D3 to support deep platform power savings during
 	 * suspend-to-idle.
 	 */
-	root = pcie_find_root_port(dev);
-	if (!root)
-		return false;
 
-	adev = ACPI_COMPANION(&root->dev);
 	if (!adev)
 		return false;
-
-	/*
-	 * The property is defined in the PXSX device for South complex ports
-	 * and in the PEGP device for North complex ports.
-	 */
-	status = acpi_get_handle(adev->handle, "PXSX", &handle);
-	if (ACPI_FAILURE(status)) {
-		status = acpi_get_handle(adev->handle, "PEGP", &handle);
-		if (ACPI_FAILURE(status))
-			return false;
-	}
-
-	if (acpi_bus_get_device(handle, &adev))
-		return false;
-
 	if (fwnode_property_read_u8(acpi_fwnode_handle(adev), "StorageD3Enable",
 			&val))
 		return false;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux