14e4:16bc SD card slot not working on Acer Aspire One 756
diff mbox

Message ID 51A463D2.7000400@huawei.com
State Not Applicable
Headers show

Commit Message

Yijing Wang May 28, 2013, 7:59 a.m. UTC
According to boot dmesg.
We found "ACPI FADT declares the system doesn't support PCIe ASPM, so disable it", so FADT dictate no aspm support in this platform.
Matthew pcie_clear_aspm() to acpi_pci_root_add() when acpi_pci_osc_control_set() return success.
Unfortunately in your machine, acpi_pci_osc_control_set() return failed, so system missing the pcie_clear_aspm();
So we should move pci_clear_aspm() out of ACPI_SUCCESS() check.

Stefan, can you help test the attached patch in 3.10-rcx?

Thanks!
Yijing.

On 2013/5/28 13:21, Stefan Frings wrote:
> 14e4:16bc SD card slot not working on Acer Aspire One 756
> 
> The memory card read (Broadcaom BCM57765) does not work on Aver Aspire One 756 because Linux enabled ASPM L1 on the PCIe channel since a related change in Kernel 3.0.20. Please change the code so that only APSN L0s is enabled on that machine on the PCIe channel 00:1c.2.
> 
> Until a solution is available, I use the following command as a workaround: sudo setpci -s 00:1c.2 0x50.B=0x41
> 
> Description of the change that introduced the problem: https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=6cac12dfab9c57a4f76821412224b226a9b08dff
> 
> The full problem description with log files and result of my bisecting can be found in the Ubuntu Bug L#1178131.
> 
> Link to the Ubuntu Bug report: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1178131
> 
> The problem is still present in Kernel 3.10-rc1, rc2 and rc3.
> Kernels before 3.0.20 are NOT affected by the problem.
> The first problematic Linux version is 3.0.20.
> 
> Steps to reproduce:
> 
> - Boot Linux with any Kernel after 3.0.19 (Using Gnome 3 Desktop)
> - Insert any memory card into the card reader
> - Problem: nothing happens
> - Problem: In dmesg, the mmc driver reports communication timeouts for the card reader
> - Remove the memory card
> - Enter sudo setpci -s 00:1c.2 0x50.B=0x41 (This disables ASPM L1)
> - Insert the memory card
> - Result: It gets detected immediately. Gnome pop-ups a related notification window.
> - Remove the memory card
> - Enter sudo setpci -s 00:1c.2 0x50.B=0x43 (this is the value that the Linux Kernel sets during boot)
> - Insert the memory card
> - Problem: The card is not detected
>

Patch
diff mbox

From deec1ca8eb80cea58beadb1404abb163426956f3 Mon Sep 17 00:00:00 2001
From: Yijing Wang <wangyijing@huawei.com>
Date: Tue, 28 May 2013 16:02:55 +0800
Subject: [PATCH] PCI: move pcie_clear_aspm() out of ACPI_SUCCESS() checking

We should move pcie_clear_aspm() out of ACPI_SUCCESS() checking
in acpi_pci_root_add(), because if FADT dictate no aspm support,
and acpi_pci_osc_control_set() get _OSC control fail. We will
miss aspm clear here.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
---
 drivers/acpi/pci_root.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
index f6c0998..632c6e3 100644
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -506,13 +506,6 @@  static int acpi_pci_root_add(struct acpi_device *device,
 		if (ACPI_SUCCESS(status)) {
 			dev_info(&device->dev,
 				"ACPI _OSC control (0x%02x) granted\n", flags);
-			if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
-				/*
-				 * We have ASPM control, but the FADT indicates
-				 * that it's unsupported. Clear it.
-				 */
-				pcie_clear_aspm(root->bus);
-			}
 		} else {
 			dev_info(&device->dev,
 				"ACPI _OSC request failed (%s), "
@@ -522,6 +515,13 @@  static int acpi_pci_root_add(struct acpi_device *device,
 				"disabling ASPM\n");
 			pcie_no_aspm();
 		}
+		if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
+			/*
+			 * We have ASPM control, but the FADT indicates
+			 * that it's unsupported. Clear it.
+			 */
+			pcie_clear_aspm(root->bus);
+		}
 	} else {
 		dev_info(&device->dev,
 			 "Unable to request _OSC control "
-- 
1.7.1