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

Bug#647560: [squeeze] sky2: Wake on Lan is broken on ASUS P5LD2 motherboard with Marvell 88E8053 rev 19 (Re: Cause and possible solution found)



# regression
severity 647560 important
quit

Hi,

Nick wrote:

> debian/patches/features/all/sky2/0030-sky2-dont-enable-PME-legacy-mode.
> patch
>
> Disabling the patch makes WoL work again.

Nice detective work!

> See also [...]/5676cc7bfe1e388e87843f71daa229610385b41e

Please try 3.2.14-1 or newer from sid or squeeze-backports, which
contains this patch.  You'll need to boot with "sky2.legacy_pme=1"
appended to the kernel command line (or set that parameter when
loading the sky2 module some other way, such as through modprobe.d)
for the change to take affect.  It would be interesting to hear the
results with and without that setting.  The only packages from outside
squeeze that might be needed for this test are the kernel itself,
linux-base, and initramfs-tools.

Even better would be to test the patch against a squeeze kernel,
following instructions from [1].  Patch attached.

Please also attach "dmidecode" and "acpidump" output and full "dmesg"
output from booting.

Unfortunately the sky2 driver used in Debian is currently basically at
the 2.6.35 level.  We should probably work on getting hardware support
and fixes up to 3.0.y.

Hope that helps,
Jonathan

[1] http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s4.2.2
or the corresponding page from the debian-kernel-handbook package
From: stephen hemminger <shemminger@vyatta.com>
Date: Wed, 21 Mar 2012 05:32:05 +0000
Subject: sky2: override for PCI legacy power management

[ Upstream commit 5676cc7bfe1e388e87843f71daa229610385b41e ]

Some BIOS's don't setup power management correctly (what else is
new) and don't allow use of PCI Express power control. Add a special
exception module parameter to allow working around this issue.
Based on slightly different patch by Knut Petersen.

Reported-by: Arkadiusz Miskiewicz <arekm@maven.pl>
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 drivers/net/sky2.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 9c7a89fba483..c4f82be9af89 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -96,6 +96,10 @@ static int disable_msi = 0;
 module_param(disable_msi, int, 0);
 MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
 
+static int legacy_pme = 0;
+module_param(legacy_pme, int, 0);
+MODULE_PARM_DESC(legacy_pme, "Legacy power management");
+
 static DEFINE_PCI_DEVICE_TABLE(sky2_id_table) = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) }, /* SK-9Sxx */
 	{ PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) }, /* SK-9Exx */
@@ -796,6 +800,13 @@ static void sky2_wol_init(struct sky2_port *sky2)
 	/* Disable PiG firmware */
 	sky2_write16(hw, B0_CTST, Y2_HW_WOL_OFF);
 
+	/* Needed by some broken BIOSes, use PCI rather than PCI-e for WOL */
+	if (legacy_pme) {
+		u32 reg1 = sky2_pci_read32(hw, PCI_DEV_REG1);
+		reg1 |= PCI_Y2_PME_LEGACY;
+		sky2_pci_write32(hw, PCI_DEV_REG1, reg1);
+	}
+
 	/* block receiver */
 	sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_SET);
 }
-- 
1.7.10.1


Reply to: