All of lore.kernel.org
 help / color / mirror / Atom feed
* /sys/module/pcie_aspm/parameters/policy not writable?
@ 2013-07-09  1:26 Pavel Machek
  2013-07-09  4:13 ` Greg KH
  0 siblings, 1 reply; 36+ messages in thread
From: Pavel Machek @ 2013-07-09  1:26 UTC (permalink / raw)
  To: kernel list, Greg KH; +Cc: joe.lawrence, myron.stowe, bhelgaas

Hi!

My thinkpad has rather high ping latencies... and perhaps it is due to
PCIE ASPM.

Its help text says:

CONFIG_PCIEASPM:

This enables OS control over PCI Express ASPM (Active State
Power Management) and Clock Power Management. ASPM supports
state L0/L0s/L1.
...
ASPM can be disabled or enabled at runtime via
/sys/module/pcie_aspm/parameters/policy

So I tried setting the parameter, but it seems to be broken :-(

root@amd:/data/pavel# cat /sys/module/pcie_aspm/parameters/policy
[default] performance powersave 
root@amd:/data/pavel# echo performance > /sys/module/pcie_aspm/parameters/policy
bash: echo: write error: Operation not permitted
root@amd:/data/pavel# echo -n performance > /sys/module/pcie_aspm/parameters/policy
bash: echo: write error: Operation not permitted
root@amd:/data/pavel# ls -al /sys/module/pcie_aspm/parameters/policy
-rw-r--r-- 1 root root 4096 Jul  9 03:16 /sys/module/pcie_aspm/parameters/policy
root@amd:/data/pavel# cat /sys/module/pcie_aspm/parameters/policy
[default] performance powersave 
root@amd:/data/pavel# echo powersave > /sys/module/pcie_aspm/parameters/policy
bash: echo: write error: Operation not permitted
root@amd:/data/pavel# echo -n powersave > /sys/module/pcie_aspm/parameters/policy
bash: echo: write error: Operation not permitted
root@amd:/data/pavel# echo -n default > /sys/module/pcie_aspm/parameters/policy
bash: echo: write error: Operation not permitted

Hmm:

CONFIG_PCIEASPM_DEFAULT=y
# CONFIG_PCIEASPM_POWERSAVE is not set                                                     
# CONFIG_PCIEASPM_PERFORMANCE is not set                                                   

Should we avoid displaying options that can't be selected?

Thanks,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-09  1:26 /sys/module/pcie_aspm/parameters/policy not writable? Pavel Machek
@ 2013-07-09  4:13 ` Greg KH
  2013-07-09  9:14   ` Pavel Machek
  2013-07-09  9:49   ` Pavel Machek
  0 siblings, 2 replies; 36+ messages in thread
From: Greg KH @ 2013-07-09  4:13 UTC (permalink / raw)
  To: Pavel Machek; +Cc: kernel list, joe.lawrence, myron.stowe, bhelgaas

On Tue, Jul 09, 2013 at 03:26:11AM +0200, Pavel Machek wrote:
> Hi!
> 
> My thinkpad has rather high ping latencies... and perhaps it is due to
> PCIE ASPM.

Why would that be the problem?  The odds that the PCIE bus is the issue
seems strange to me.

greg k-h

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-09  4:13 ` Greg KH
@ 2013-07-09  9:14   ` Pavel Machek
  2013-07-09  9:49   ` Pavel Machek
  1 sibling, 0 replies; 36+ messages in thread
From: Pavel Machek @ 2013-07-09  9:14 UTC (permalink / raw)
  To: Greg KH; +Cc: kernel list, joe.lawrence, myron.stowe, bhelgaas

Hi!

> > My thinkpad has rather high ping latencies... and perhaps it is due to
> > PCIE ASPM.
> 
> Why would that be the problem?  The odds that the PCIE bus is the issue
> seems strange to me.

Well, I google a bit. Apparently, the issue is common on x60/t60
machine and was never fixed properly.

And indeed some patches point in that direction, in particular:

https://launchpadlibrarian.net/17463623/e1000e-0.4.1.7.diff

(It is from comment #27 here:

https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.22/+bug/42572

).

If you have any idea what else it could be...
									Pavel 
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-09  4:13 ` Greg KH
  2013-07-09  9:14   ` Pavel Machek
@ 2013-07-09  9:49   ` Pavel Machek
  2013-07-09 10:10     ` Pavel Machek
                       ` (2 more replies)
  1 sibling, 3 replies; 36+ messages in thread
From: Pavel Machek @ 2013-07-09  9:49 UTC (permalink / raw)
  To: Greg KH; +Cc: kernel list, joe.lawrence, myron.stowe, bhelgaas

On Mon 2013-07-08 21:13:21, Greg KH wrote:
> On Tue, Jul 09, 2013 at 03:26:11AM +0200, Pavel Machek wrote:
> > Hi!
> > 
> > My thinkpad has rather high ping latencies... and perhaps it is due to
> > PCIE ASPM.
> 
> Why would that be the problem?  The odds that the PCIE bus is the issue
> seems strange to me.

Aha: I guess that's why the file is not writable:

pavel@amd:~$ dmesg | grep -i aspm 
ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
e1000e 0000:02:00.0: Disabling ASPM L0s L1
pavel@amd:~$ cat /sys/module/pcie_aspm/parameters/policy
[default] performance powersave 
pavel@amd:~$ 
root@amd:~# echo -n performance >
/sys/module/pcie_aspm/parameters/policy
-su: echo: write error: Operation not permitted
root@amd:~# 

But:
1) it should not list unavailable options

2) operation not permitted seems like wrong error code for
operation not supported.

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-09  9:49   ` Pavel Machek
@ 2013-07-09 10:10     ` Pavel Machek
  2013-07-09 16:25       ` Bjorn Helgaas
  2013-07-09 16:37     ` Greg KH
  2013-07-10  4:24     ` Robert Hancock
  2 siblings, 1 reply; 36+ messages in thread
From: Pavel Machek @ 2013-07-09 10:10 UTC (permalink / raw)
  To: Greg KH; +Cc: kernel list, joe.lawrence, myron.stowe, bhelgaas

Hi!
> > > My thinkpad has rather high ping latencies... and perhaps it is due to
> > > PCIE ASPM.
> > 
> > Why would that be the problem?  The odds that the PCIE bus is the issue
> > seems strange to me.
> 
> Aha: I guess that's why the file is not writable:
> 
> pavel@amd:~$ dmesg | grep -i aspm 
> ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
> e1000e 0000:02:00.0: Disabling ASPM L0s L1
> pavel@amd:~$ cat /sys/module/pcie_aspm/parameters/policy
> [default] performance powersave 
> pavel@amd:~$ 
> root@amd:~# echo -n performance >
> /sys/module/pcie_aspm/parameters/policy
> -su: echo: write error: Operation not permitted
> root@amd:~# 
> 
> But:
> 1) it should not list unavailable options
> 
> 2) operation not permitted seems like wrong error code for
> operation not supported.

So I forcibly enabled ASPM, and now ping latencies are in normal
range... no matter how I set
/sys/module/pcie_aspm/parameters/policy. Strange.

Any ideas what correct solution is?
									Pavel
Signed-off-by: Pavel Machek <pavel@ucw.cz>
(but don't apply)

diff --git a/.config b/.config
index 149f713..d7f5a11 100644
--- a/.config
+++ b/.config
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.10.0-rc2 Kernel Configuration
+# Linux/x86 3.10.0 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -559,9 +559,9 @@ CONFIG_PCIEAER=y
 # CONFIG_PCIEAER_INJECT is not set
 CONFIG_PCIEASPM=y
 CONFIG_PCIEASPM_DEBUG=y
-CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_DEFAULT is not set
 # CONFIG_PCIEASPM_POWERSAVE is not set
-# CONFIG_PCIEASPM_PERFORMANCE is not set
+CONFIG_PCIEASPM_PERFORMANCE=y
 CONFIG_PCIE_PME=y
 CONFIG_ARCH_SUPPORTS_MSI=y
 # CONFIG_PCI_MSI is not set
@@ -1340,7 +1340,10 @@ CONFIG_MD_RAID1=y
 # CONFIG_MD_RAID456 is not set
 # CONFIG_MD_MULTIPATH is not set
 # CONFIG_MD_FAULTY is not set
-# CONFIG_BCACHE is not set
+CONFIG_BCACHE=y
+# CONFIG_BCACHE_DEBUG is not set
+# CONFIG_BCACHE_EDEBUG is not set
+# CONFIG_BCACHE_CLOSURES_DEBUG is not set
 CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_CRYPT=y
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index e4b1fb2..9a1b63e 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -382,7 +382,7 @@ static int __init acpi_pci_init(void)
 
 	if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
 		printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
-		pcie_no_aspm();
+//		pcie_no_aspm();
 	}
 
 	ret = register_acpi_bus_type(&acpi_pci_bus);


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-09 10:10     ` Pavel Machek
@ 2013-07-09 16:25       ` Bjorn Helgaas
  2013-07-10 13:29         ` Pavel Machek
  0 siblings, 1 reply; 36+ messages in thread
From: Bjorn Helgaas @ 2013-07-09 16:25 UTC (permalink / raw)
  To: Pavel Machek; +Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe

On Tue, Jul 9, 2013 at 4:10 AM, Pavel Machek <pavel@ucw.cz> wrote:
> Hi!
>> > > My thinkpad has rather high ping latencies... and perhaps it is due to
>> > > PCIE ASPM.
>> >
>> > Why would that be the problem?  The odds that the PCIE bus is the issue
>> > seems strange to me.
>>
>> Aha: I guess that's why the file is not writable:
>>
>> pavel@amd:~$ dmesg | grep -i aspm
>> ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
>> e1000e 0000:02:00.0: Disabling ASPM L0s L1
>> pavel@amd:~$ cat /sys/module/pcie_aspm/parameters/policy
>> [default] performance powersave
>> pavel@amd:~$
>> root@amd:~# echo -n performance >
>> /sys/module/pcie_aspm/parameters/policy
>> -su: echo: write error: Operation not permitted
>> root@amd:~#
>>
>> But:
>> 1) it should not list unavailable options
>>
>> 2) operation not permitted seems like wrong error code for
>> operation not supported.
>
> So I forcibly enabled ASPM, and now ping latencies are in normal
> range... no matter how I set
> /sys/module/pcie_aspm/parameters/policy. Strange.
>
> Any ideas what correct solution is?
>                                                                         Pavel
> Signed-off-by: Pavel Machek <pavel@ucw.cz>
> (but don't apply)
>
> diff --git a/.config b/.config
> index 149f713..d7f5a11 100644
> --- a/.config
> +++ b/.config
> @@ -1,6 +1,6 @@
>  #
>  # Automatically generated file; DO NOT EDIT.
> -# Linux/x86 3.10.0-rc2 Kernel Configuration
> +# Linux/x86 3.10.0 Kernel Configuration
>  #
>  # CONFIG_64BIT is not set
>  CONFIG_X86_32=y
> @@ -559,9 +559,9 @@ CONFIG_PCIEAER=y
>  # CONFIG_PCIEAER_INJECT is not set
>  CONFIG_PCIEASPM=y
>  CONFIG_PCIEASPM_DEBUG=y
> -CONFIG_PCIEASPM_DEFAULT=y
> +# CONFIG_PCIEASPM_DEFAULT is not set
>  # CONFIG_PCIEASPM_POWERSAVE is not set
> -# CONFIG_PCIEASPM_PERFORMANCE is not set
> +CONFIG_PCIEASPM_PERFORMANCE=y
>  CONFIG_PCIE_PME=y
>  CONFIG_ARCH_SUPPORTS_MSI=y
>  # CONFIG_PCI_MSI is not set
> @@ -1340,7 +1340,10 @@ CONFIG_MD_RAID1=y
>  # CONFIG_MD_RAID456 is not set
>  # CONFIG_MD_MULTIPATH is not set
>  # CONFIG_MD_FAULTY is not set
> -# CONFIG_BCACHE is not set
> +CONFIG_BCACHE=y
> +# CONFIG_BCACHE_DEBUG is not set
> +# CONFIG_BCACHE_EDEBUG is not set
> +# CONFIG_BCACHE_CLOSURES_DEBUG is not set
>  CONFIG_BLK_DEV_DM=y
>  # CONFIG_DM_DEBUG is not set
>  CONFIG_DM_CRYPT=y
> diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
> index e4b1fb2..9a1b63e 100644
> --- a/drivers/pci/pci-acpi.c
> +++ b/drivers/pci/pci-acpi.c
> @@ -382,7 +382,7 @@ static int __init acpi_pci_init(void)
>
>         if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
>                 printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
> -               pcie_no_aspm();
> +//             pcie_no_aspm();
>         }
>
>         ret = register_acpi_bus_type(&acpi_pci_bus);

Hi Pavel,

Interesting.  Can you collect dmesg and "lspci -vvv" output for both
cases (high ping latency and normal ping latency)?  Also, how much
difference does this make in ping latency?  If ASPM is enabled for a
device, e.g., your NIC, the link may be put in a low power state when
the device is idle.  It takes time to exit that low power state, of
course, but I would expect that time to be in the microsecond time and
probably not observable via ping.

Bjorn

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-09  9:49   ` Pavel Machek
  2013-07-09 10:10     ` Pavel Machek
@ 2013-07-09 16:37     ` Greg KH
  2013-07-09 17:15       ` Pavel Machek
  2013-07-10  4:24     ` Robert Hancock
  2 siblings, 1 reply; 36+ messages in thread
From: Greg KH @ 2013-07-09 16:37 UTC (permalink / raw)
  To: Pavel Machek; +Cc: kernel list, joe.lawrence, myron.stowe, bhelgaas

On Tue, Jul 09, 2013 at 11:49:06AM +0200, Pavel Machek wrote:
> On Mon 2013-07-08 21:13:21, Greg KH wrote:
> > On Tue, Jul 09, 2013 at 03:26:11AM +0200, Pavel Machek wrote:
> > > Hi!
> > > 
> > > My thinkpad has rather high ping latencies... and perhaps it is due to
> > > PCIE ASPM.
> > 
> > Why would that be the problem?  The odds that the PCIE bus is the issue
> > seems strange to me.
> 
> Aha: I guess that's why the file is not writable:
> 
> pavel@amd:~$ dmesg | grep -i aspm 
> ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
> e1000e 0000:02:00.0: Disabling ASPM L0s L1
> pavel@amd:~$ cat /sys/module/pcie_aspm/parameters/policy
> [default] performance powersave 
> pavel@amd:~$ 
> root@amd:~# echo -n performance >
> /sys/module/pcie_aspm/parameters/policy
> -su: echo: write error: Operation not permitted
> root@amd:~# 
> 
> But:
> 1) it should not list unavailable options

It's a module parameter, you can't control if they are present or not
dynamically.

> 2) operation not permitted seems like wrong error code for
> operation not supported.

Then what should it be?

greg k-h

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-09 16:37     ` Greg KH
@ 2013-07-09 17:15       ` Pavel Machek
  0 siblings, 0 replies; 36+ messages in thread
From: Pavel Machek @ 2013-07-09 17:15 UTC (permalink / raw)
  To: Greg KH; +Cc: kernel list, joe.lawrence, myron.stowe, bhelgaas

Hi!

> > > > My thinkpad has rather high ping latencies... and perhaps it is due to
> > > > PCIE ASPM.
> > > 
> > > Why would that be the problem?  The odds that the PCIE bus is the issue
> > > seems strange to me.
> > 
> > Aha: I guess that's why the file is not writable:
> > 
> > pavel@amd:~$ dmesg | grep -i aspm 
> > ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
> > e1000e 0000:02:00.0: Disabling ASPM L0s L1
> > pavel@amd:~$ cat /sys/module/pcie_aspm/parameters/policy
> > [default] performance powersave 
> > pavel@amd:~$ 
> > root@amd:~# echo -n performance >
> > /sys/module/pcie_aspm/parameters/policy
> > -su: echo: write error: Operation not permitted
> > root@amd:~# 
> > 
> > But:
> > 1) it should not list unavailable options
> 
> It's a module parameter, you can't control if they are present or not
> dynamically.
> 
> > 2) operation not permitted seems like wrong error code for
> > operation not supported.
> 
> Then what should it be?

I'd vote for EOPNOTSUPP /* Operation not supported on transport
endpoint */ ... its certainly closer. EIO would also be an option.
You are right we do not have really suitable errno.

Operation not permitted is bad because it made me think that kernel
denied the request for some reason, not that hardware does not support it.

Thanks,
								Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-09  9:49   ` Pavel Machek
  2013-07-09 10:10     ` Pavel Machek
  2013-07-09 16:37     ` Greg KH
@ 2013-07-10  4:24     ` Robert Hancock
  2 siblings, 0 replies; 36+ messages in thread
From: Robert Hancock @ 2013-07-10  4:24 UTC (permalink / raw)
  To: Pavel Machek; +Cc: Greg KH, kernel list, joe.lawrence, myron.stowe, bhelgaas

On 07/09/2013 03:49 AM, Pavel Machek wrote:
> On Mon 2013-07-08 21:13:21, Greg KH wrote:
>> On Tue, Jul 09, 2013 at 03:26:11AM +0200, Pavel Machek wrote:
>>> Hi!
>>>
>>> My thinkpad has rather high ping latencies... and perhaps it is due to
>>> PCIE ASPM.
>>
>> Why would that be the problem?  The odds that the PCIE bus is the issue
>> seems strange to me.
>
> Aha: I guess that's why the file is not writable:
>
> pavel@amd:~$ dmesg | grep -i aspm
> ACPI FADT declares the system doesn't support PCIe ASPM, so disable it

IIRC, this message is somewhat misleading. When that FADT flag is set by 
the BIOS, the kernel doesn't so much disable ASPM as disable the 
kernel's control over ASPM. I believe this was to match Windows behavior.

> e1000e 0000:02:00.0: Disabling ASPM L0s L1

And given that, I think this message may also be misleading, as the 
kernel won't touch the device's ASPM state. Force-enabling ASPM may 
actually be allowing the driver to disable ASPM on the device.

I seem to recall a recent thread on this about another device.. maybe we 
need to allow drivers to explicitly disable ASPM if it's enabled even if 
the FADT flag is set?

> pavel@amd:~$ cat /sys/module/pcie_aspm/parameters/policy
> [default] performance powersave
> pavel@amd:~$
> root@amd:~# echo -n performance >
> /sys/module/pcie_aspm/parameters/policy
> -su: echo: write error: Operation not permitted
> root@amd:~#
>
> But:
> 1) it should not list unavailable options
>
> 2) operation not permitted seems like wrong error code for
> operation not supported.
>
> 									Pavel
>


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-09 16:25       ` Bjorn Helgaas
@ 2013-07-10 13:29         ` Pavel Machek
  2013-07-10 19:57           ` Bjorn Helgaas
  0 siblings, 1 reply; 36+ messages in thread
From: Pavel Machek @ 2013-07-10 13:29 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe

[-- Attachment #1: Type: text/plain, Size: 1879 bytes --]

Hi!

> >> But:
> >> 1) it should not list unavailable options
> >>
> >> 2) operation not permitted seems like wrong error code for
> >> operation not supported.
> >
> > So I forcibly enabled ASPM, and now ping latencies are in normal
> > range... no matter how I set
> > /sys/module/pcie_aspm/parameters/policy. Strange.
> >
> > Any ideas what correct solution is?
> >                                                                         Pavel
> > Signed-off-by: Pavel Machek <pavel@ucw.cz>
> > (but don't apply)
...
> > diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
> > index e4b1fb2..9a1b63e 100644
> > --- a/drivers/pci/pci-acpi.c
> > +++ b/drivers/pci/pci-acpi.c
> > @@ -382,7 +382,7 @@ static int __init acpi_pci_init(void)
> >
> >         if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
> >                 printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
> > -               pcie_no_aspm();
> > +//             pcie_no_aspm();
> >         }
> >
> >         ret = register_acpi_bus_type(&acpi_pci_bus);
> 
> Hi Pavel,
> 
> Interesting.  Can you collect dmesg and "lspci -vvv" output for both
> cases (high ping latency and normal ping latency)?  

Will do. Results are in attachment (200KB...)

> Also, how much
> difference does this make in ping latency?  

The ping latency goes from 100msec range to <2msec.

> If ASPM is enabled for a
> device, e.g., your NIC, the link may be put in a low power state when
> the device is idle.  It takes time to exit that low power state, of
> course, but I would expect that time to be in the microsecond time and
> probably not observable via ping.

I'd hope so. 100msec ping makes ssh unpleasant to use.

Thanks,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: delme.gz --]
[-- Type: application/octet-stream, Size: 39205 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-10 13:29         ` Pavel Machek
@ 2013-07-10 19:57           ` Bjorn Helgaas
  2013-07-10 22:21             ` Wyborny, Carolyn
                               ` (3 more replies)
  0 siblings, 4 replies; 36+ messages in thread
From: Bjorn Helgaas @ 2013-07-10 19:57 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

[+cc Jeff, Jesse, et al, e1000-devel]

Holy cow, you guys have a lot of folks listed in MAINTAINERS for Intel
drivers :)  This is an ASPM question, if that helps narrow down the
folks interested.

On Wed, Jul 10, 2013 at 7:29 AM, Pavel Machek <pavel@ucw.cz> wrote:
> Hi!
>
>> >> But:
>> >> 1) it should not list unavailable options
>> >>
>> >> 2) operation not permitted seems like wrong error code for
>> >> operation not supported.
>> >
>> > So I forcibly enabled ASPM, and now ping latencies are in normal
>> > range... no matter how I set
>> > /sys/module/pcie_aspm/parameters/policy. Strange.
>> >
>> > Any ideas what correct solution is?
>> >                                                                         Pavel
>> > Signed-off-by: Pavel Machek <pavel@ucw.cz>
>> > (but don't apply)
> ...
>> > diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
>> > index e4b1fb2..9a1b63e 100644
>> > --- a/drivers/pci/pci-acpi.c
>> > +++ b/drivers/pci/pci-acpi.c
>> > @@ -382,7 +382,7 @@ static int __init acpi_pci_init(void)
>> >
>> >         if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
>> >                 printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
>> > -               pcie_no_aspm();
>> > +//             pcie_no_aspm();
>> >         }
>> >
>> >         ret = register_acpi_bus_type(&acpi_pci_bus);
>>
>> Hi Pavel,
>>
>> Interesting.  Can you collect dmesg and "lspci -vvv" output for both
>> cases (high ping latency and normal ping latency)?
>
> Will do. Results are in attachment (200KB...)
>
>> Also, how much
>> difference does this make in ping latency?
>
> The ping latency goes from 100msec range to <2msec.
>
>> If ASPM is enabled for a
>> device, e.g., your NIC, the link may be put in a low power state when
>> the device is idle.  It takes time to exit that low power state, of
>> course, but I would expect that time to be in the microsecond time and
>> probably not observable via ping.
>
> I'd hope so. 100msec ping makes ssh unpleasant to use.

Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
3945ABG.  I'm pretty sure the problem he's reporting is with the
82573L.  Ping times are bad (~100msec) when ASPM is enabled, as
reported by lspci.

On Pavel's system, the FADT says we shouldn't enable OSPM control of
ASPM (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One
effect is that we don't blacklist the pre-1.1 82573L device, which I
think results in it being left with the BIOS configuration, which
apparently has ASPM enabled.  (Pavel, could you confirm the BIOS
config, e.g., with "pci=earlydump"?)

e1000e claims to disable ASPM, but because aspm_disabled is set, the
driver's call to pci_disable_link_state_locked() actually does nothing
[1].

I experimented [2] with Windows and found that when a driver requests
PciASPMOptOut, Windows will not touch ASPM config if the _OSC method
fails, i.e., the BIOS declines to grant ASPM control to the OS.
However, I do not know if Windows similarly ignores PciASPMOptOut when
the FADT ACPI_FADT_NO_ASPM bit is set.

The PCI core has failed spectacularly at providing useful ASPM
interfaces.  Do you Intel folks have any suggestions about how to
resolve this?  I assume that the Windows driver for the 82573L must
disable ASPM somehow, even though ACPI_FADT_NO_ASPM is set.  Does it
just use brute-force, as in the version of __e1000e_disable_aspm()
that's used when CONFIG_PCIEASPM is not set?

Bjorn

[1] We just merged 2add0ec1, which adds a "can't disable ASPM; OS
doesn't have ASPM control" message in this case, but I don't think
Pavel's kernel has this change.  It doesn't change the behavior
anyway.

[2] https://bugzilla.kernel.org/show_bug.cgi?id=57331

^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-10 19:57           ` Bjorn Helgaas
@ 2013-07-10 22:21             ` Wyborny, Carolyn
  2013-07-10 22:57                 ` Bjorn Helgaas
  2013-07-12 11:03             ` Pavel Machek
                               ` (2 subsequent siblings)
  3 siblings, 1 reply; 36+ messages in thread
From: Wyborny, Carolyn @ 2013-07-10 22:21 UTC (permalink / raw)
  To: Bjorn Helgaas, Pavel Machek
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Kirsher,
	Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore, Donald C,
	Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck, Alexander H,
	Ronciak, John, Dave, Tushar N, e1000-devel

> -----Original Message-----
> From: Bjorn Helgaas [mailto:bhelgaas@google.com]
[..]

> Holy cow, you guys have a lot of folks listed in MAINTAINERS for Intel drivers :)
> This is an ASPM question, if that helps narrow down the folks interested.

Well, we try to have everyone involved, I guess.  I work on the server parts in the e1000e driver which includes 82573/4 and 82583.

[..]
> Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
> 3945ABG.  I'm pretty sure the problem he's reporting is with the 82573L.  Ping
> times are bad (~100msec) when ASPM is enabled, as reported by lspci.
> 
> On Pavel's system, the FADT says we shouldn't enable OSPM control of ASPM
> (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One effect is that
> we don't blacklist the pre-1.1 82573L device, which I think results in it being left
> with the BIOS configuration, which apparently has ASPM enabled.  (Pavel, could
> you confirm the BIOS config, e.g., with "pci=earlydump"?)
>
> e1000e claims to disable ASPM, but because aspm_disabled is set, the driver's
> call to pci_disable_link_state_locked() actually does nothing [1].

Yes, this is the problem we run into.  It would help if the call to pci_disable_link_state_locked() returned an error if ASPM is not disabled as requested so that drivers can then do the brute force disabling of it themselves.

> 
> I experimented [2] with Windows and found that when a driver requests
> PciASPMOptOut, Windows will not touch ASPM config if the _OSC method fails,
> i.e., the BIOS declines to grant ASPM control to the OS.
> However, I do not know if Windows similarly ignores PciASPMOptOut when the
> FADT ACPI_FADT_NO_ASPM bit is set.
> 
> The PCI core has failed spectacularly at providing useful ASPM interfaces.  Do
> you Intel folks have any suggestions about how to resolve this?  I assume that
> the Windows driver for the 82573L must disable ASPM somehow, even though
> ACPI_FADT_NO_ASPM is set.  Does it just use brute-force, as in the version of
> __e1000e_disable_aspm() that's used when CONFIG_PCIEASPM is not set? 

My friends in our Windows development team told me that the driver doesn't try to disable  ASPM basically because we can't.  I'm not sure if the same issue presents in Windows the same way or not.

Hope this helps.

Carolyn

Carolyn Wyborny 
Linux Development 
Networking Division 
Intel Corporation 

> 
> Bjorn
> 
> [1] We just merged 2add0ec1, which adds a "can't disable ASPM; OS doesn't
> have ASPM control" message in this case, but I don't think Pavel's kernel has this
> change.  It doesn't change the behavior anyway.
> 
> [2] https://bugzilla.kernel.org/show_bug.cgi?id=57331

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-10 22:21             ` Wyborny, Carolyn
@ 2013-07-10 22:57                 ` Bjorn Helgaas
  0 siblings, 0 replies; 36+ messages in thread
From: Bjorn Helgaas @ 2013-07-10 22:57 UTC (permalink / raw)
  To: Wyborny, Carolyn
  Cc: Pavel Machek, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel,
	linux-pci

[+cc linux-pci]

On Wed, Jul 10, 2013 at 10:21:32PM +0000, Wyborny, Carolyn wrote:
> > -----Original Message-----
> > From: Bjorn Helgaas [mailto:bhelgaas@google.com]
> [..]
> 
> > Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
> > 3945ABG.  I'm pretty sure the problem he's reporting is with the 82573L.  Ping
> > times are bad (~100msec) when ASPM is enabled, as reported by lspci.
> > 
> > On Pavel's system, the FADT says we shouldn't enable OSPM control of ASPM
> > (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One effect is that
> > we don't blacklist the pre-1.1 82573L device, which I think results in it being left
> > with the BIOS configuration, which apparently has ASPM enabled.  (Pavel, could
> > you confirm the BIOS config, e.g., with "pci=earlydump"?)
> >
> > e1000e claims to disable ASPM, but because aspm_disabled is set, the driver's
> > call to pci_disable_link_state_locked() actually does nothing [1].
> 
> Yes, this is the problem we run into.  It would help if the call to pci_disable_link_state_locked() returned an error if ASPM is not disabled as requested so that drivers can then do the brute force disabling of it themselves.

I considered returning an error, but resisted because I think drivers
will just handle the error by doing the brute-force disable themselves,
and then we might as well drop the pci_disable_link_state() interface
completely.

I proposed a patch [3] a while ago that made pci_disable_link_state()
turn off ASPM unconditionally.  That would have the same effect as
returning failure and having drivers disable ASPM themselves.  But
Rafael and Matthew thought it was too risky [4] (and I think they're
probably right because it does not match the Windows behavior).

So by extension, I guess it would also be risky to return an error and
have the driver disable ASPM.

> > I experimented [2] with Windows and found that when a driver requests
> > PciASPMOptOut, Windows will not touch ASPM config if the _OSC method fails,
> > i.e., the BIOS declines to grant ASPM control to the OS.
> > However, I do not know if Windows similarly ignores PciASPMOptOut when the
> > FADT ACPI_FADT_NO_ASPM bit is set.
> > 
> > The PCI core has failed spectacularly at providing useful ASPM interfaces.  Do
> > you Intel folks have any suggestions about how to resolve this?  I assume that
> > the Windows driver for the 82573L must disable ASPM somehow, even though
> > ACPI_FADT_NO_ASPM is set.  Does it just use brute-force, as in the version of
> > __e1000e_disable_aspm() that's used when CONFIG_PCIEASPM is not set? 
> 
> My friends in our Windows development team told me that the driver doesn't try to disable  ASPM basically because we can't.  I'm not sure if the same issue presents in Windows the same way or not.

So the Windows driver *never* disables ASPM, not even with its own
register writes?  So on a machine like Pavel's, it would run with ASPM
enabled?  (I'm assuming his BIOS leaves ASPM enabled; hopefully Pavel
can confirm that.)

If the Windows driver works with ASPM enabled but the Linux driver on the
same hardware requires ASPM to be disabled, it sounds like the Linux
driver just needs to be fixed.

[3] https://lkml.kernel.org/r/20130510225257.GA10847@google.com
[4] https://lkml.kernel.org/r/20130516225535.GA27962@google.com

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
@ 2013-07-10 22:57                 ` Bjorn Helgaas
  0 siblings, 0 replies; 36+ messages in thread
From: Bjorn Helgaas @ 2013-07-10 22:57 UTC (permalink / raw)
  To: Wyborny, Carolyn
  Cc: Pavel Machek, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel,
	linux-pci

[+cc linux-pci]

On Wed, Jul 10, 2013 at 10:21:32PM +0000, Wyborny, Carolyn wrote:
> > -----Original Message-----
> > From: Bjorn Helgaas [mailto:bhelgaas@google.com]
> [..]
> 
> > Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
> > 3945ABG.  I'm pretty sure the problem he's reporting is with the 82573L.  Ping
> > times are bad (~100msec) when ASPM is enabled, as reported by lspci.
> > 
> > On Pavel's system, the FADT says we shouldn't enable OSPM control of ASPM
> > (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One effect is that
> > we don't blacklist the pre-1.1 82573L device, which I think results in it being left
> > with the BIOS configuration, which apparently has ASPM enabled.  (Pavel, could
> > you confirm the BIOS config, e.g., with "pci=earlydump"?)
> >
> > e1000e claims to disable ASPM, but because aspm_disabled is set, the driver's
> > call to pci_disable_link_state_locked() actually does nothing [1].
> 
> Yes, this is the problem we run into.  It would help if the call to pci_disable_link_state_locked() returned an error if ASPM is not disabled as requested so that drivers can then do the brute force disabling of it themselves.

I considered returning an error, but resisted because I think drivers
will just handle the error by doing the brute-force disable themselves,
and then we might as well drop the pci_disable_link_state() interface
completely.

I proposed a patch [3] a while ago that made pci_disable_link_state()
turn off ASPM unconditionally.  That would have the same effect as
returning failure and having drivers disable ASPM themselves.  But
Rafael and Matthew thought it was too risky [4] (and I think they're
probably right because it does not match the Windows behavior).

So by extension, I guess it would also be risky to return an error and
have the driver disable ASPM.

> > I experimented [2] with Windows and found that when a driver requests
> > PciASPMOptOut, Windows will not touch ASPM config if the _OSC method fails,
> > i.e., the BIOS declines to grant ASPM control to the OS.
> > However, I do not know if Windows similarly ignores PciASPMOptOut when the
> > FADT ACPI_FADT_NO_ASPM bit is set.
> > 
> > The PCI core has failed spectacularly at providing useful ASPM interfaces.  Do
> > you Intel folks have any suggestions about how to resolve this?  I assume that
> > the Windows driver for the 82573L must disable ASPM somehow, even though
> > ACPI_FADT_NO_ASPM is set.  Does it just use brute-force, as in the version of
> > __e1000e_disable_aspm() that's used when CONFIG_PCIEASPM is not set? 
> 
> My friends in our Windows development team told me that the driver doesn't try to disable  ASPM basically because we can't.  I'm not sure if the same issue presents in Windows the same way or not.

So the Windows driver *never* disables ASPM, not even with its own
register writes?  So on a machine like Pavel's, it would run with ASPM
enabled?  (I'm assuming his BIOS leaves ASPM enabled; hopefully Pavel
can confirm that.)

If the Windows driver works with ASPM enabled but the Linux driver on the
same hardware requires ASPM to be disabled, it sounds like the Linux
driver just needs to be fixed.

[3] https://lkml.kernel.org/r/20130510225257.GA10847@google.com
[4] https://lkml.kernel.org/r/20130516225535.GA27962@google.com

^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-10 22:57                 ` Bjorn Helgaas
@ 2013-07-11 17:45                   ` Wyborny, Carolyn
  -1 siblings, 0 replies; 36+ messages in thread
From: Wyborny, Carolyn @ 2013-07-11 17:45 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Pavel Machek, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel,
	linux-pci



> -----Original Message-----
> From: Bjorn Helgaas [mailto:bhelgaas@google.com]
> Sent: Wednesday, July 10, 2013 3:57 PM
> To: Wyborny, Carolyn
> Cc: Pavel Machek; Greg KH; kernel list; Joe Lawrence; Myron Stowe; Kirsher,
> Jeffrey T; Brandeburg, Jesse; Allan, Bruce W; Skidmore, Donald C; Rose, Gregory
> V; Waskiewicz Jr, Peter P; Duyck, Alexander H; Ronciak, John; Dave, Tushar N;
> e1000-devel@lists.sourceforge.net; linux-pci@vger.kernel.org
> Subject: Re: /sys/module/pcie_aspm/parameters/policy not writable?
> 
> [+cc linux-pci]
> 
> On Wed, Jul 10, 2013 at 10:21:32PM +0000, Wyborny, Carolyn wrote:
> > > -----Original Message-----
> > > From: Bjorn Helgaas [mailto:bhelgaas@google.com]
> > [..]
> >
> > > Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel
> > > PRO/Wireless 3945ABG.  I'm pretty sure the problem he's reporting is
> > > with the 82573L.  Ping times are bad (~100msec) when ASPM is enabled, as
> reported by lspci.
> > >
> > > On Pavel's system, the FADT says we shouldn't enable OSPM control of
> > > ASPM (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One
> > > effect is that we don't blacklist the pre-1.1 82573L device, which I
> > > think results in it being left with the BIOS configuration, which
> > > apparently has ASPM enabled.  (Pavel, could you confirm the BIOS
> > > config, e.g., with "pci=earlydump"?)
> > >
> > > e1000e claims to disable ASPM, but because aspm_disabled is set, the
> > > driver's call to pci_disable_link_state_locked() actually does nothing [1].
> >
> > Yes, this is the problem we run into.  It would help if the call to
> pci_disable_link_state_locked() returned an error if ASPM is not disabled as
> requested so that drivers can then do the brute force disabling of it themselves.
> 
> I considered returning an error, but resisted because I think drivers will just
> handle the error by doing the brute-force disable themselves, and then we might
> as well drop the pci_disable_link_state() interface completely.
> 
> I proposed a patch [3] a while ago that made pci_disable_link_state() turn off
> ASPM unconditionally.  That would have the same effect as returning failure and
> having drivers disable ASPM themselves.  But Rafael and Matthew thought it was
> too risky [4] (and I think they're probably right because it does not match the
> Windows behavior).
> 
> So by extension, I guess it would also be risky to return an error and have the
> driver disable ASPM.
> 
> > > I experimented [2] with Windows and found that when a driver
> > > requests PciASPMOptOut, Windows will not touch ASPM config if the
> > > _OSC method fails, i.e., the BIOS declines to grant ASPM control to the OS.
> > > However, I do not know if Windows similarly ignores PciASPMOptOut
> > > when the FADT ACPI_FADT_NO_ASPM bit is set.
> > >
> > > The PCI core has failed spectacularly at providing useful ASPM
> > > interfaces.  Do you Intel folks have any suggestions about how to
> > > resolve this?  I assume that the Windows driver for the 82573L must
> > > disable ASPM somehow, even though ACPI_FADT_NO_ASPM is set.  Does it
> > > just use brute-force, as in the version of
> > > __e1000e_disable_aspm() that's used when CONFIG_PCIEASPM is not set?
> >
> > My friends in our Windows development team told me that the driver doesn't
> try to disable  ASPM basically because we can't.  I'm not sure if the same issue
> presents in Windows the same way or not.
> 
> So the Windows driver *never* disables ASPM, not even with its own register
> writes?  So on a machine like Pavel's, it would run with ASPM enabled?  (I'm
> assuming his BIOS leaves ASPM enabled; hopefully Pavel can confirm that.
> 
> If the Windows driver works with ASPM enabled but the Linux driver on the same
> hardware requires ASPM to be disabled, it sounds like the Linux driver just needs
> to be fixed.

So, to clarify, Windows *does* have a problem with these parts if ASPM cannot be disabled.  We tell users to disable ASPM  with these parts.  There are systems that have BIOS that do not truly disable ASPM even if the user tries, even with Windows and the symptoms are as bad as Linux, there's no big difference there.  The difference is that Windows doesn't interact with the BIOS very much and the Windows driver cannot access PCIconfig space as we can with Linux.  

I would argue for the error message so that drivers are not brute-forcing the change unless they have to.  Today, a solution would be for us to just skip the pcie_disable_link_state call altogether, since we can't guarantee it will work  and just brute force it no matter what and perhaps we should consider doing this.  But I think not having the error message would make it more likely to skip the call altogether.  Can you explain more why you think proving an error message or doing the force disabling in the function,if unable to complete the disabling, is risky?

Thanks,

Carolyn
  
> 
> [3] https://lkml.kernel.org/r/20130510225257.GA10847@google.com
> [4] https://lkml.kernel.org/r/20130516225535.GA27962@google.com

^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: /sys/module/pcie_aspm/parameters/policy not writable?
@ 2013-07-11 17:45                   ` Wyborny, Carolyn
  0 siblings, 0 replies; 36+ messages in thread
From: Wyborny, Carolyn @ 2013-07-11 17:45 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Pavel Machek, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel,
	linux-pci



> -----Original Message-----
> From: Bjorn Helgaas [mailto:bhelgaas@google.com]
> Sent: Wednesday, July 10, 2013 3:57 PM
> To: Wyborny, Carolyn
> Cc: Pavel Machek; Greg KH; kernel list; Joe Lawrence; Myron Stowe; Kirsher,
> Jeffrey T; Brandeburg, Jesse; Allan, Bruce W; Skidmore, Donald C; Rose, Gregory
> V; Waskiewicz Jr, Peter P; Duyck, Alexander H; Ronciak, John; Dave, Tushar N;
> e1000-devel@lists.sourceforge.net; linux-pci@vger.kernel.org
> Subject: Re: /sys/module/pcie_aspm/parameters/policy not writable?
> 
> [+cc linux-pci]
> 
> On Wed, Jul 10, 2013 at 10:21:32PM +0000, Wyborny, Carolyn wrote:
> > > -----Original Message-----
> > > From: Bjorn Helgaas [mailto:bhelgaas@google.com]
> > [..]
> >
> > > Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel
> > > PRO/Wireless 3945ABG.  I'm pretty sure the problem he's reporting is
> > > with the 82573L.  Ping times are bad (~100msec) when ASPM is enabled, as
> reported by lspci.
> > >
> > > On Pavel's system, the FADT says we shouldn't enable OSPM control of
> > > ASPM (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One
> > > effect is that we don't blacklist the pre-1.1 82573L device, which I
> > > think results in it being left with the BIOS configuration, which
> > > apparently has ASPM enabled.  (Pavel, could you confirm the BIOS
> > > config, e.g., with "pci=earlydump"?)
> > >
> > > e1000e claims to disable ASPM, but because aspm_disabled is set, the
> > > driver's call to pci_disable_link_state_locked() actually does nothing [1].
> >
> > Yes, this is the problem we run into.  It would help if the call to
> pci_disable_link_state_locked() returned an error if ASPM is not disabled as
> requested so that drivers can then do the brute force disabling of it themselves.
> 
> I considered returning an error, but resisted because I think drivers will just
> handle the error by doing the brute-force disable themselves, and then we might
> as well drop the pci_disable_link_state() interface completely.
> 
> I proposed a patch [3] a while ago that made pci_disable_link_state() turn off
> ASPM unconditionally.  That would have the same effect as returning failure and
> having drivers disable ASPM themselves.  But Rafael and Matthew thought it was
> too risky [4] (and I think they're probably right because it does not match the
> Windows behavior).
> 
> So by extension, I guess it would also be risky to return an error and have the
> driver disable ASPM.
> 
> > > I experimented [2] with Windows and found that when a driver
> > > requests PciASPMOptOut, Windows will not touch ASPM config if the
> > > _OSC method fails, i.e., the BIOS declines to grant ASPM control to the OS.
> > > However, I do not know if Windows similarly ignores PciASPMOptOut
> > > when the FADT ACPI_FADT_NO_ASPM bit is set.
> > >
> > > The PCI core has failed spectacularly at providing useful ASPM
> > > interfaces.  Do you Intel folks have any suggestions about how to
> > > resolve this?  I assume that the Windows driver for the 82573L must
> > > disable ASPM somehow, even though ACPI_FADT_NO_ASPM is set.  Does it
> > > just use brute-force, as in the version of
> > > __e1000e_disable_aspm() that's used when CONFIG_PCIEASPM is not set?
> >
> > My friends in our Windows development team told me that the driver doesn't
> try to disable  ASPM basically because we can't.  I'm not sure if the same issue
> presents in Windows the same way or not.
> 
> So the Windows driver *never* disables ASPM, not even with its own register
> writes?  So on a machine like Pavel's, it would run with ASPM enabled?  (I'm
> assuming his BIOS leaves ASPM enabled; hopefully Pavel can confirm that.
> 
> If the Windows driver works with ASPM enabled but the Linux driver on the same
> hardware requires ASPM to be disabled, it sounds like the Linux driver just needs
> to be fixed.

So, to clarify, Windows *does* have a problem with these parts if ASPM cannot be disabled.  We tell users to disable ASPM  with these parts.  There are systems that have BIOS that do not truly disable ASPM even if the user tries, even with Windows and the symptoms are as bad as Linux, there's no big difference there.  The difference is that Windows doesn't interact with the BIOS very much and the Windows driver cannot access PCIconfig space as we can with Linux.  

I would argue for the error message so that drivers are not brute-forcing the change unless they have to.  Today, a solution would be for us to just skip the pcie_disable_link_state call altogether, since we can't guarantee it will work  and just brute force it no matter what and perhaps we should consider doing this.  But I think not having the error message would make it more likely to skip the call altogether.  Can you explain more why you think proving an error message or doing the force disabling in the function,if unable to complete the disabling, is risky?

Thanks,

Carolyn
  
> 
> [3] https://lkml.kernel.org/r/20130510225257.GA10847@google.com
> [4] https://lkml.kernel.org/r/20130516225535.GA27962@google.com

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-10 19:57           ` Bjorn Helgaas
  2013-07-10 22:21             ` Wyborny, Carolyn
@ 2013-07-12 11:03             ` Pavel Machek
  2013-07-12 11:11             ` Pavel Machek
  2013-08-01  6:19             ` Jeff Kirsher
  3 siblings, 0 replies; 36+ messages in thread
From: Pavel Machek @ 2013-07-12 11:03 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

Hi!

> [+cc Jeff, Jesse, et al, e1000-devel]
> 
> Holy cow, you guys have a lot of folks listed in MAINTAINERS for Intel
> drivers :)  This is an ASPM question, if that helps narrow down the
> folks interested.
> 
> On Wed, Jul 10, 2013 at 7:29 AM, Pavel Machek <pavel@ucw.cz> wrote:
> > Hi!
> >
> >> >> But:
> >> >> 1) it should not list unavailable options
> >> >>
> >> >> 2) operation not permitted seems like wrong error code for
> >> >> operation not supported.
> >> >
> >> > So I forcibly enabled ASPM, and now ping latencies are in normal
> >> > range... no matter how I set
> >> > /sys/module/pcie_aspm/parameters/policy. Strange.
> >> >
> >> > Any ideas what correct solution is?
> >> >                                                                         Pavel
> >> > Signed-off-by: Pavel Machek <pavel@ucw.cz>
> >> > (but don't apply)
> > ...
> >> > diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
> >> > index e4b1fb2..9a1b63e 100644
> >> > --- a/drivers/pci/pci-acpi.c
> >> > +++ b/drivers/pci/pci-acpi.c
> >> > @@ -382,7 +382,7 @@ static int __init acpi_pci_init(void)
> >> >
> >> >         if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
> >> >                 printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
> >> > -               pcie_no_aspm();
> >> > +//             pcie_no_aspm();
> >> >         }
> >> >
> >> >         ret = register_acpi_bus_type(&acpi_pci_bus);
> >>
> >> Hi Pavel,
> >>
> >> Interesting.  Can you collect dmesg and "lspci -vvv" output for both
> >> cases (high ping latency and normal ping latency)?
> >
> > Will do. Results are in attachment (200KB...)
> >
> >> Also, how much
> >> difference does this make in ping latency?
> >
> > The ping latency goes from 100msec range to <2msec.
> >
> >> If ASPM is enabled for a
> >> device, e.g., your NIC, the link may be put in a low power state when
> >> the device is idle.  It takes time to exit that low power state, of
> >> course, but I would expect that time to be in the microsecond time and
> >> probably not observable via ping.
> >
> > I'd hope so. 100msec ping makes ssh unpleasant to use.
> 
> Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
> 3945ABG.  I'm pretty sure the problem he's reporting is with the
> 82573L.  Ping times are bad (~100msec) when ASPM is enabled, as
> reported by lspci.
> 
> On Pavel's system, the FADT says we shouldn't enable OSPM control of
> ASPM (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One
> effect is that we don't blacklist the pre-1.1 82573L device, which I
> think results in it being left with the BIOS configuration, which
> apparently has ASPM enabled.  (Pavel, could you confirm the BIOS
> config, e.g., with "pci=earlydump"?)

Here you go. It has the "aspm-disable-forced" change, so that ethernet
is usable, but that only affects boot later...


nitializing cgroup subsys cpu
Linux version 3.10.0+ (pavel@amd) (gcc version 4.4.5 (Debian 4.4.5-8) ) #290 SMP Fri Jul 12 12:37:00 CEST 2013
Disabled fast string operations
e820: BIOS-provided physical RAM map:
BIOS-e820: [mem 0x0000000000000000-0x000000000009efff] usable
BIOS-e820: [mem 0x000000000009f000-0x000000000009ffff] reserved
BIOS-e820: [mem 0x00000000000d2000-0x00000000000d3fff] reserved
BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
BIOS-e820: [mem 0x0000000000100000-0x000000007f6cffff] usable
BIOS-e820: [mem 0x000000007f6d0000-0x000000007f6defff] ACPI data
BIOS-e820: [mem 0x000000007f6df000-0x000000007f6fffff] ACPI NVS
BIOS-e820: [mem 0x000000007f700000-0x000000007fffffff] reserved
BIOS-e820: [mem 0x00000000f0000000-0x00000000f3ffffff] reserved
BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
BIOS-e820: [mem 0x00000000fed00000-0x00000000fed003ff] reserved
BIOS-e820: [mem 0x00000000fed14000-0x00000000fed19fff] reserved
BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed8ffff] reserved
BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
BIOS-e820: [mem 0x00000000ff800000-0x00000000ffffffff] reserved
Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
pci 0000:00:00.0 config space:
  00: 86 80 a0 27 06 01 90 20 03 00 00 06 00 00 00 00
  10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 17 20
  30: 00 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 00
  40: 01 90 d1 fe 01 40 d1 fe 05 00 00 f0 01 80 d1 fe
  50: 00 00 30 00 19 00 00 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 10 11 11 01 30 11 11 00 ff 03 00 00 80 1a 39 00
  a0: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 04 01 00 00
  e0: 09 00 09 51 02 04 0a 90 0e 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 03 00 10 00 00 00
pci 0000:00:02.0 config space:
  00: 86 80 a2 27 03 00 90 00 03 00 00 03 00 00 80 00
  10: 00 00 10 ee 01 18 00 00 08 00 00 d0 00 00 20 ee
  20: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 1a 20
  30: 00 00 00 00 90 00 00 00 00 00 00 00 0b 01 00 00
  40: 00 00 00 00 48 00 00 00 09 00 09 51 02 04 0a 90
  50: 0e 00 30 00 19 00 00 00 00 00 00 00 00 00 80 7f
  60: 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 05 d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 01 00 22 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 03 00 64 34 ff 00 00 00 86 0f 03 00 00 00 00 00
pci 0000:00:02.1 config space:
  00: 86 80 a6 27 03 00 90 00 03 00 80 03 00 00 80 00
  10: 00 00 18 ee 00 00 00 00 00 00 00 00 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 1a 20
  30: 00 00 00 00 d0 00 00 00 00 00 00 00 00 00 00 00
  40: 00 00 00 00 48 00 00 00 09 00 09 51 02 04 0a 90
  50: 0e 00 30 00 19 00 00 00 00 00 00 00 00 00 80 7f
  60: 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 01 00 22 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 03 00 64 34 ff 00 00 00 86 0f 03 00 00 00 00 00
pci 0000:00:1b.0 config space:
  00: 86 80 d8 27 06 01 10 00 02 00 03 04 10 00 00 00
  10: 04 00 24 ee 00 00 00 00 00 00 00 00 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 10 20
  30: 00 00 00 00 50 00 00 00 00 00 00 00 0b 02 00 00
  40: 03 00 00 03 07 00 00 00 00 00 00 00 00 80 00 00
  50: 01 60 42 c8 00 00 00 00 00 00 00 00 00 00 00 00
  60: 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 10 00 91 00 00 00 00 00 00 08 10 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1c.0 config space:
  00: 86 80 d0 27 07 01 10 00 02 00 04 06 10 00 81 00
  10: 00 00 00 00 00 00 00 00 00 02 02 00 20 20 00 20
  20: 00 ee 00 ee f1 ff 01 00 00 00 00 00 00 00 00 00
  30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 01 04 00
  40: 10 80 41 01 c0 0f 00 00 00 00 11 00 11 2c 11 01
  50: 42 00 11 30 e0 a0 10 00 00 00 48 01 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 05 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 0d a0 00 00 aa 17 11 20 00 00 00 00 00 00 00 00
  a0: 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 80 00 11 00 00 00 00 00
  e0: 00 0f c7 00 06 07 08 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1c.1 config space:
  00: 86 80 d2 27 07 01 10 00 02 00 04 06 10 00 81 00
  10: 00 00 00 00 00 00 00 00 00 03 03 00 30 40 00 20
  20: 00 ec f0 ed 01 e4 01 e4 00 00 00 00 00 00 00 00
  30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 02 04 00
  40: 10 80 41 01 c0 0f 00 00 00 00 10 00 11 2c 11 02
  50: 42 00 11 30 e0 a0 18 00 00 00 48 01 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 05 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 0d a0 00 00 aa 17 11 20 00 00 00 00 00 00 00 00
  a0: 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 80 00 11 00 00 00 00 00
  e0: 00 0f c7 00 06 07 08 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1c.2 config space:
  00: 86 80 d4 27 07 01 10 00 02 00 04 06 10 00 81 00
  10: 00 00 00 00 00 00 00 00 00 04 0b 00 50 60 00 20
  20: 00 e8 f0 e9 11 e4 11 e4 00 00 00 00 00 00 00 00
  30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 03 04 00
  40: 10 80 41 01 c0 0f 00 00 00 00 10 00 11 4c 11 03
  50: 00 00 01 10 e0 a0 20 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 05 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 0d a0 00 00 aa 17 11 20 00 00 00 00 00 00 00 00
  a0: 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 80 00 11 00 00 00 00 00
  e0: 00 00 c7 00 06 07 08 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1c.3 config space:
  00: 86 80 d6 27 07 01 10 00 02 00 04 06 10 00 81 00
  10: 00 00 00 00 00 00 00 00 00 0c 13 00 70 80 00 20
  20: 00 ea f0 eb 21 e4 21 e4 00 00 00 00 00 00 00 00
  30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 04 04 00
  40: 10 80 41 01 c0 0f 00 00 00 00 10 00 11 4c 11 04
  50: 00 00 01 10 e0 a0 28 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 05 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 0d a0 00 00 aa 17 11 20 00 00 00 00 00 00 00 00
  a0: 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 80 00 11 00 00 00 00 00
  e0: 00 00 c7 00 06 07 08 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1d.0 config space:
  00: 86 80 c8 27 05 00 80 02 02 00 03 0c 00 00 80 00
  10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  20: 21 18 00 00 00 00 00 00 00 00 00 00 aa 17 0a 20
  30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 3b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1d.1 config space:
  00: 86 80 c9 27 05 00 80 02 02 00 03 0c 00 00 00 00
  10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  20: 41 18 00 00 00 00 00 00 00 00 00 00 aa 17 0a 20
  30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 02 00 00
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1d.2 config space:
  00: 86 80 ca 27 05 00 80 02 02 00 03 0c 00 00 00 00
  10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  20: 61 18 00 00 00 00 00 00 00 00 00 00 aa 17 0a 20
  30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 03 00 00
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1d.3 config space:
  00: 86 80 cb 27 05 00 80 02 02 00 03 0c 00 00 00 00
  10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  20: 81 18 00 00 00 00 00 00 00 00 00 00 aa 17 0a 20
  30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 04 00 00
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1d.7 config space:
  00: 86 80 cc 27 06 01 90 02 02 20 03 0c 00 00 00 00
  10: 00 40 44 ee 00 00 00 00 00 00 00 00 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 0b 20
  30: 00 00 00 00 50 00 00 00 00 00 00 00 0b 04 00 00
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 01 58 c2 c9 00 00 00 00 0a 00 a0 20 00 00 00 00
  60: 20 20 ff 01 00 00 00 00 01 00 00 00 00 00 0c c0
  70: 00 00 d5 3f 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 aa ff 00 ff 00 ff 00 20 00 00 88
  e0: 00 00 00 00 db b6 6d 00 00 00 00 00 00 00 00 00
  f0: 00 80 00 09 88 85 40 00 86 0f 02 00 06 17 02 20
pci 0000:00:1e.0 config space:
  00: 86 80 48 24 05 00 10 00 e2 01 04 06 00 00 01 00
  10: 00 00 00 00 00 00 00 00 00 15 18 20 90 c0 80 22
  20: 30 e4 f0 e7 01 e0 f1 e3 00 00 00 00 00 00 00 00
  30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 00 00 00
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00
  50: 0d 00 00 00 aa 17 13 20 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1f.0 config space:
  00: 86 80 b9 27 07 00 10 02 02 00 01 06 00 00 80 00
  10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 09 20
  30: 00 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 00
  40: 01 10 00 00 80 00 00 00 81 11 00 00 10 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 0b 0b 0b 0b d2 00 00 00 0b 0b 0b 0b 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 10 02 0f 1f 01 16 7c 00 e1 15 0c 00 81 16 1c 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 24 02 02 00 00 00 00 00 13 00 00 e7 00 03 00 00
  b0: 00 00 f0 00 00 00 00 00 00 00 00 01 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 44 12 11 00 67 45 00 00 c0 ff 00 00 01 00 00 00
  e0: 09 00 0c 10 b4 02 24 17 00 00 00 00 00 00 00 00
  f0: 01 c0 d1 fe 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1f.1 config space:
  00: 86 80 df 27 05 00 88 02 02 8a 01 01 00 00 00 00
  10: 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00
  20: 11 18 00 00 00 00 00 00 00 00 00 00 aa 17 0c 20
  30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00
  40: 00 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1f.2 config space:
  00: 86 80 c5 27 07 00 b0 02 02 01 06 01 00 00 00 00
  10: d1 18 00 00 c5 18 00 00 c9 18 00 00 c1 18 00 00
  20: b1 18 00 00 00 44 44 ee 00 00 00 00 aa 17 0d 20
  30: 00 00 00 00 80 00 00 00 00 00 00 00 0b 02 00 00
  40: 07 a3 00 80 00 00 00 00 01 00 02 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 01 00 02 40 00 00 00 00 00 00 00 00 00 00 00 00
  80: 05 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 40 00 11 10 80 01 00 4a 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:00:1f.3 config space:
  00: 86 80 da 27 01 01 80 02 02 00 05 0c 00 00 00 00
  10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  20: e1 18 00 00 00 00 00 00 00 00 00 00 aa 17 0f 20
  30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00
  40: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
pci 0000:02:00.0 config space:
  00: 86 80 9a 10 07 01 10 00 00 00 00 02 10 00 00 00
  10: 00 00 00 ee 00 00 00 00 01 20 00 00 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 7e 20
  30: 00 00 00 00 c8 00 00 00 00 00 00 00 0b 01 00 00
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 01 d0 22 c8 00 20 00 0f
  d0: 05 e0 80 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 10 00 01 00 c1 0c 00 00 10 28 1a 00 11 1c 07 00
  f0: 42 01 11 10 00 00 00 00 00 00 00 00 00 00 00 00
pci 0000:03:00.0 config space:
  00: 86 80 27 42 06 01 10 00 02 00 80 02 10 00 00 00
  10: 00 00 f0 ed 00 00 00 00 00 00 00 00 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 10 10
  30: 00 00 00 00 c8 00 00 00 00 00 00 00 0b 01 00 00
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  c0: 00 00 00 00 00 00 00 00 01 d0 22 c8 00 00 00 0d
  d0: 05 e0 80 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: 10 00 11 00 c0 0e 00 00 10 08 1b 00 11 1c 07 00
  f0: 42 01 11 10 00 00 00 00 00 00 00 00 00 00 00 00
pci 0000:15:00.0 config space:
  00: 80 11 76 04 07 00 10 02 b4 00 07 06 00 00 82 00
  10: 00 00 30 e4 dc 00 00 02 15 16 18 b0 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 80 07
  40: aa 17 1c 20 e1 03 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 01 00 a0 04 00 00 00 00 63 04 63 04 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 f0 00 00 00 00 00
  b0: 00 00 00 00 00 00 00 b2 00 30 00 00 00 00 00 00
  c0: aa 17 1c 20 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 0a fe
  e0: 00 40 c0 24 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
pci 0000:15:00.1 config space:
  00: 80 11 52 05 06 00 10 02 09 10 00 0c 00 00 80 00
  10: 00 10 30 e4 00 00 00 00 00 00 00 00 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 1e 20
  30: 00 00 00 00 dc 00 00 00 00 00 00 00 0b 02 02 04
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 00 80 80 16 00 00 00 00 00 20 00 00 66 66 32 12
  90: 48 60 66 10 00 00 02 00 50 00 00 00 00 01 18 00
  a0: 00 00 00 00 00 00 00 00 20 00 00 00 aa 17 1e 20
  b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 04
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 c8
  e0: 00 40 00 48 00 00 00 00 00 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
pci 0000:15:00.2 config space:
  00: 80 11 22 08 06 00 10 02 18 00 05 08 00 00 80 00
  10: 00 18 30 e4 00 00 00 00 00 00 00 00 00 00 00 00
  20: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 1d 20
  30: 00 00 00 00 80 00 00 00 00 00 00 00 0b 03 00 00
  40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  80: 01 00 02 fe 00 40 00 48 00 00 00 00 00 00 00 00
  90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  a0: 00 00 00 00 00 00 00 00 00 00 00 00 aa 17 1d 20
  b0: 00 00 02 00 00 00 00 00 00 00 00 00 a0 00 00 00
  c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  e0: a1 21 80 01 00 00 00 00 40 00 00 00 00 00 00 00
  f0: 00 00 00 00 00 00 00 00 c3 00 20 02 00 00 00 00
SMBIOS 2.4 present.
DMI: LENOVO 17097HU/17097HU, BIOS 7BETD3WW (2.14 ) 10/04/2007
e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
e820: remove [mem 0x000a0000-0x000fffff] usable
e820: last_pfn = 0x7f6d0 max_arch_pfn = 0x100000
MTRR default type: uncachable
MTRR fixed ranges enabled:
  00000-9FFFF write-back
  A0000-BFFFF uncachable
  C0000-CFFFF write-protect
  D0000-DBFFF uncachable
  DC000-DFFFF write-back
  E0000-FFFFF write-protect
MTRR variable ranges enabled:
  0 base 000000000 mask F80000000 write-back
  1 base 07F700000 mask FFFF00000 uncachable
  2 base 07F800000 mask FFF800000 uncachable
  3 disabled
  4 disabled
  5 disabled
  6 disabled
  7 disabled
PAT not supported by CPU.
initial memory mapped: [mem 0x00000000-0x017fffff]
Base memory trampoline at [c009b000] 9b000 size 16384
init_memory_mapping: [mem 0x00000000-0x000fffff]
 [mem 0x00000000-0x000fffff] page 4k
init_memory_mapping: [mem 0x37000000-0x373fffff]
 [mem 0x37000000-0x373fffff] page 4k
BRK [0x01212000, 0x01212fff] PGTABLE
init_memory_mapping: [mem 0x30000000-0x36ffffff]
 [mem 0x30000000-0x36ffffff] page 4k
BRK [0x01213000, 0x01213fff] PGTABLE
BRK [0x01214000, 0x01214fff] PGTABLE
BRK [0x01215000, 0x01215fff] PGTABLE
BRK [0x01216000, 0x01216fff] PGTABLE
init_memory_mapping: [mem 0x00100000-0x2fffffff]
 [mem 0x00100000-0x2fffffff] page 4k
init_memory_mapping: [mem 0x37400000-0x377fdfff]
 [mem 0x37400000-0x377fdfff] page 4k
ACPI: RSDP 000f67c0 00024 (v02 LENOVO)
ACPI: XSDT 7f6d191c 00084 (v01 LENOVO TP-7B    00002140  LTP 00000000)
ACPI: FACP 7f6d1a00 000F4 (v03 LENOVO TP-7B    00002140 LNVO 00000001)
ACPI BIOS Bug: Warning: 32/64X length mismatch in FADT/Gpe1Block: 0/32 (20130328/tbfadt-572)
ACPI BIOS Bug: Warning: Optional FADT field Gpe1Block has zero address or length: 0x000000000000102C/0x0 (20130328/tbfadt-603)
ACPI: DSDT 7f6d1d90 0CFB9 (v01 LENOVO TP-7B    00002140 MSFT 0100000E)
ACPI: FACS 7f6f4000 00040
ACPI: SSDT 7f6d1bb4 001DC (v01 LENOVO TP-7B    00002140 MSFT 0100000E)
ACPI: ECDT 7f6ded49 00052 (v01 LENOVO TP-7B    00002140 LNVO 00000001)
ACPI: TCPA 7f6ded9b 00032 (v02 LENOVO TP-7B    00002140 LNVO 00000001)
ACPI: APIC 7f6dedcd 00068 (v01 LENOVO TP-7B    00002140 LNVO 00000001)
ACPI: MCFG 7f6dee35 0003C (v01 LENOVO TP-7B    00002140 LNVO 00000001)
ACPI: HPET 7f6dee71 00038 (v01 LENOVO TP-7B    00002140 LNVO 00000001)
ACPI: BOOT 7f6defd8 00028 (v01 LENOVO TP-7B    00002140  LTP 00000001)
ACPI: SSDT 7f6f2645 0025F (v01 LENOVO TP-7B    00002140 INTL 20050513)
ACPI: SSDT 7f6f28a4 000A6 (v01 LENOVO TP-7B    00002140 INTL 20050513)
ACPI: SSDT 7f6f294a 004F7 (v01 LENOVO TP-7B    00002140 INTL 20050513)
ACPI: SSDT 7f6f2e41 001D8 (v01 LENOVO TP-7B    00002140 INTL 20050513)
ACPI: Local APIC address 0xfee00000
1150MB HIGHMEM available.
887MB LOWMEM available.
  mapped low ram: 0 - 377fe000
  low ram: 0 - 377fe000
Zone ranges:
  DMA      [mem 0x00001000-0x00ffffff]
  Normal   [mem 0x01000000-0x377fdfff]
  HighMem  [mem 0x377fe000-0x7f6cffff]
Movable zone start for each node
Early memory node ranges
  node   0: [mem 0x00001000-0x0009efff]
  node   0: [mem 0x00100000-0x7f6cffff]
On node 0 totalpages: 521838
free_area_init_node: node 0, pgdat c0c7cec0, node_mem_map f613f024
  DMA zone: 36 pages used for memmap
  DMA zone: 0 pages reserved
  DMA zone: 3998 pages, LIFO batch:0
  Normal zone: 1962 pages used for memmap
  Normal zone: 223230 pages, LIFO batch:31
  HighMem zone: 2590 pages used for memmap
  HighMem zone: 294610 pages, LIFO batch:31
Using APIC driver default
ACPI: PM-Timer IO Port: 0x1008
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
Using ACPI (MADT) for SMP configuration information
ACPI: HPET id: 0x8086a201 base: 0xfed00000
smpboot: Allowing 2 CPUs, 0 hotplug CPUs
nr_irqs_gsi: 40
PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
PM: Registered nosave memory: 00000000000a0000 - 00000000000d2000
PM: Registered nosave memory: 00000000000d2000 - 00000000000d4000
PM: Registered nosave memory: 00000000000d4000 - 00000000000dc000
PM: Registered nosave memory: 00000000000dc000 - 0000000000100000
e820: [mem 0x80000000-0xefffffff] available for PCI devices
setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1
PERCPU: Embedded 13 pages/cpu @f77c2000 s28992 r0 d24256 u53248
pcpu-alloc: s28992 r0 d24256 u53248 alloc=13*4096
pcpu-alloc: [0] 0 [0] 1 
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 519840
Kernel command line: BOOT_IMAGE=(hd0,2)/l/linux-good/arch/x86/boot/bzImage root=/dev/sda3 resume=/dev/sda1 psmouse.psmouse_proto=imps psmouse_proto=imps psmouse.proto=imps acpi_sleep=s3_bios,s3_mode no_console_suspend i915.modeset=1 video=inteldrmfb:mode=1024x768 fbcon=scrollback:64k pci=earlydump
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Initializing CPU#0
Initializing HighMem for node 0 (000377fe:0007f6d0)
Memory: 2050576k/2087744k available (7550k kernel code, 36776k reserved, 3294k data, 452k init, 1178440k highmem)
virtual kernel memory layout:
    fixmap  : 0xffe6e000 - 0xfffff000   (1604 kB)
    pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
    vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
    lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
      .init : 0xc0c98000 - 0xc0d09000   ( 452 kB)
      .data : 0xc095f932 - 0xc0c97500   (3294 kB)
      .text : 0xc0200000 - 0xc095f932   (7550 kB)
Checking if this processor honours the WP bit even in supervisor mode...Ok.
Hierarchical RCU implementation.
	RCU dyntick-idle grace-period acceleration is enabled.
	RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2.
NR_IRQS:2304 nr_irqs:512 16
CPU 0 irqstacks, hard=f5c1a000 soft=f5c1c000
Console: colour VGA+ 80x25
console [tty0] enabled
Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
... MAX_LOCKDEP_SUBCLASSES:  8
... MAX_LOCK_DEPTH:          48
... MAX_LOCKDEP_KEYS:        8191
... CLASSHASH_SIZE:          4096
... MAX_LOCKDEP_ENTRIES:     16384
... MAX_LOCKDEP_CHAINS:      32768
... CHAINHASH_SIZE:          16384
 memory used by lock dependency info: 3551 kB
 per task-struct memory footprint: 1152 bytes
ODEBUG: 10 of 10 active objects replaced
hpet clockevent registered
tsc: Fast TSC calibration using PIT
tsc: Detected 1828.779 MHz processor
Calibrating delay loop (skipped), value calculated using timer frequency.. 3657.55 BogoMIPS (lpj=7315116)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
Disabled fast string operations
CPU: Physical Processor ID: 0
CPU: Processor Core ID: 0
Last level iTLB entries: 4KB 128, 2MB 0, 4MB 2
Last level dTLB entries: 4KB 128, 2MB 0, 4MB 8
tlb_flushall_shift: 6
debug: unmapping init [mem 0xc0d09000-0xc0d0ffff]
ACPI: Core revision 20130328
ACPI: All ACPI Tables successfully acquired
Enabling APIC mode:  Flat.  Using 1 I/O APICs
..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
smpboot: CPU0: Genuine Intel(R) CPU           T2400  @ 1.83GHz (fam: 06, model: 0e, stepping: 08)
Performance Events: Core events, core PMU driver.
... version:                1
... bit width:              40
... generic registers:      2
... value mask:             000000ffffffffff
... max period:             000000007fffffff
... fixed-purpose events:   0
... event mask:             0000000000000003
NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
SMP alternatives: lockdep: fixing up alternatives
CPU 1 irqstacks, hard=f5dce000 soft=f5dd0000
smpboot: Booting Node   0, Processors  #1 OK
Initializing CPU#1
Disabled fast string operations
TSC synchronization [CPU#0 -> CPU#1]:
Measured 579909 cycles TSC warp between CPUs, turning off TSC clock.
tsc: Marking TSC unstable due to check_tsc_sync_source failed
Brought up 2 CPUs
smpboot: Total of 2 processors activated (7315.11 BogoMIPS)
devtmpfs: initialized
PM: Registering ACPI NVS region [mem 0x7f6df000-0x7f6fffff] (135168 bytes)
NET: Registered protocol family 16
ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
ACPI: bus type PCI registered
acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf0000000-0xf3ffffff] (base 0xf0000000)
PCI: MMCONFIG at [mem 0xf0000000-0xf3ffffff] reserved in E820
PCI: Using MMCONFIG for extended config space
PCI: Using configuration type 1 for base access
bio: create slab <bio-0> at 0
ACPI: Added _OSI(Module Device)
ACPI: Added _OSI(Processor Device)
ACPI: Added _OSI(3.0 _SCP Extensions)
ACPI: Added _OSI(Processor Aggregator Device)
ACPI: EC: EC description table is found, configuring boot EC
ACPI: SSDT 7f6f1d26 00240 (v01  PmRef  Cpu0Ist 00000100 INTL 20050513)
ACPI: Dynamic OEM Table Load:
ACPI: SSDT   (null) 00240 (v01  PmRef  Cpu0Ist 00000100 INTL 20050513)
ACPI: SSDT 7f6f1feb 0065A (v01  PmRef  Cpu0Cst 00000100 INTL 20050513)
ACPI: Dynamic OEM Table Load:
ACPI: SSDT   (null) 0065A (v01  PmRef  Cpu0Cst 00000100 INTL 20050513)
ACPI: SSDT 7f6f1c5e 000C8 (v01  PmRef  Cpu1Ist 00000100 INTL 20050513)
ACPI: Dynamic OEM Table Load:
ACPI: SSDT   (null) 000C8 (v01  PmRef  Cpu1Ist 00000100 INTL 20050513)
ACPI: SSDT 7f6f1f66 00085 (v01  PmRef  Cpu1Cst 00000100 INTL 20050513)
ACPI: Dynamic OEM Table Load:
ACPI: SSDT   (null) 00085 (v01  PmRef  Cpu1Cst 00000100 INTL 20050513)
ACPI: Interpreter enabled
ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20130328/hwxface-568)
ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20130328/hwxface-568)
ACPI: (supports S0 S3 S4 S5)
ACPI: Using IOAPIC for interrupt routing
PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug
ACPI: ACPI Dock Station Driver: 3 docks/bays found
ACPI: Power Resource [PUBS] (on)
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
acpi PNP0A08:00: host bridge window [io  0x0000-0x0cf7] (ignored)
acpi PNP0A08:00: host bridge window [io  0x0d00-0xffff] (ignored)
acpi PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored)
acpi PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored)
acpi PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored)
acpi PNP0A08:00: host bridge window [mem 0x80000000-0xfebfffff] (ignored)
acpi PNP0A08:00: host bridge window [mem 0xfed40000-0xfed40fff] (ignored)
PCI: root bus 00: using default resources
acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 00-3f] only partially covers this bridge
PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [bus 00-ff]
pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
pci_bus 0000:00: root bus resource [mem 0x00000000-0xffffffff]
pci 0000:00:00.0: [8086:27a0] type 00 class 0x060000
pci 0000:00:02.0: [8086:27a2] type 00 class 0x030000
pci 0000:00:02.0: reg 10: [mem 0xee100000-0xee17ffff]
pci 0000:00:02.0: reg 14: [io  0x1800-0x1807]
pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff pref]
pci 0000:00:02.0: reg 1c: [mem 0xee200000-0xee23ffff]
pci 0000:00:02.1: [8086:27a6] type 00 class 0x038000
pci 0000:00:02.1: reg 10: [mem 0xee180000-0xee1fffff]
pci 0000:00:1b.0: [8086:27d8] type 00 class 0x040300
pci 0000:00:1b.0: reg 10: [mem 0xee240000-0xee243fff 64bit]
pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
pci 0000:00:1b.0: System wakeup disabled by ACPI
pci 0000:00:1c.0: [8086:27d0] type 01 class 0x060400
pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
pci 0000:00:1c.0: System wakeup disabled by ACPI
pci 0000:00:1c.1: [8086:27d2] type 01 class 0x060400
pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
pci 0000:00:1c.1: System wakeup disabled by ACPI
pci 0000:00:1c.2: [8086:27d4] type 01 class 0x060400
pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
pci 0000:00:1c.2: System wakeup disabled by ACPI
pci 0000:00:1c.3: [8086:27d6] type 01 class 0x060400
pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
pci 0000:00:1c.3: System wakeup disabled by ACPI
pci 0000:00:1d.0: [8086:27c8] type 00 class 0x0c0300
pci 0000:00:1d.0: reg 20: [io  0x1820-0x183f]
pci 0000:00:1d.0: System wakeup disabled by ACPI
pci 0000:00:1d.1: [8086:27c9] type 00 class 0x0c0300
pci 0000:00:1d.1: reg 20: [io  0x1840-0x185f]
pci 0000:00:1d.1: System wakeup disabled by ACPI
pci 0000:00:1d.2: [8086:27ca] type 00 class 0x0c0300
pci 0000:00:1d.2: reg 20: [io  0x1860-0x187f]
pci 0000:00:1d.2: System wakeup disabled by ACPI
pci 0000:00:1d.3: [8086:27cb] type 00 class 0x0c0300
pci 0000:00:1d.3: reg 20: [io  0x1880-0x189f]
pci 0000:00:1d.7: [8086:27cc] type 00 class 0x0c0320
pci 0000:00:1d.7: reg 10: [mem 0xee444000-0xee4443ff]
pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
pci 0000:00:1d.7: System wakeup disabled by ACPI
pci 0000:00:1e.0: [8086:2448] type 01 class 0x060401
pci 0000:00:1e.0: System wakeup disabled by ACPI
pci 0000:00:1f.0: [8086:27b9] type 00 class 0x060100
pci 0000:00:1f.0: quirk: [io  0x1000-0x107f] claimed by ICH6 ACPI/GPIO/TCO
pci 0000:00:1f.0: quirk: [io  0x1180-0x11bf] claimed by ICH6 GPIO
pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 1600 (mask 007f)
pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 15e0 (mask 000f)
pci 0000:00:1f.0: ICH7 LPC Generic IO decode 3 PIO at 1680 (mask 001f)
pci 0000:00:1f.1: [8086:27df] type 00 class 0x01018a
pci 0000:00:1f.1: reg 10: [io  0x0000-0x0007]
pci 0000:00:1f.1: reg 14: [io  0x0000-0x0003]
pci 0000:00:1f.1: reg 18: [io  0x0000-0x0007]
pci 0000:00:1f.1: reg 1c: [io  0x0000-0x0003]
pci 0000:00:1f.1: reg 20: [io  0x1810-0x181f]
pci 0000:00:1f.2: [8086:27c5] type 00 class 0x010601
pci 0000:00:1f.2: reg 10: [io  0x18d0-0x18d7]
pci 0000:00:1f.2: reg 14: [io  0x18c4-0x18c7]
pci 0000:00:1f.2: reg 18: [io  0x18c8-0x18cf]
pci 0000:00:1f.2: reg 1c: [io  0x18c0-0x18c3]
pci 0000:00:1f.2: reg 20: [io  0x18b0-0x18bf]
pci 0000:00:1f.2: reg 24: [mem 0xee444400-0xee4447ff]
pci 0000:00:1f.2: PME# supported from D3hot
pci 0000:00:1f.3: [8086:27da] type 00 class 0x0c0500
pci 0000:00:1f.3: reg 20: [io  0x18e0-0x18ff]
pci 0000:02:00.0: [8086:109a] type 00 class 0x020000
pci 0000:02:00.0: reg 10: [mem 0xee000000-0xee01ffff]
pci 0000:02:00.0: reg 18: [io  0x2000-0x201f]
pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
pci 0000:02:00.0: disabling ASPM on pre-1.1 PCIe device.  You can enable it with 'pcie_aspm=force'
pci 0000:00:1c.0: PCI bridge to [bus 02]
pci 0000:00:1c.0:   bridge window [io  0x2000-0x2fff]
pci 0000:00:1c.0:   bridge window [mem 0xee000000-0xee0fffff]
pci 0000:03:00.0: [8086:4227] type 00 class 0x028000
pci 0000:03:00.0: reg 10: [mem 0xedf00000-0xedf00fff]
pci 0000:03:00.0: PME# supported from D0 D3hot D3cold
pci 0000:03:00.0: disabling ASPM on pre-1.1 PCIe device.  You can enable it with 'pcie_aspm=force'
pci 0000:00:1c.1: PCI bridge to [bus 03]
pci 0000:00:1c.1:   bridge window [io  0x3000-0x4fff]
pci 0000:00:1c.1:   bridge window [mem 0xec000000-0xedffffff]
pci 0000:00:1c.1:   bridge window [mem 0xe4000000-0xe40fffff 64bit pref]
acpiphp: Slot [1] registered
pci 0000:00:1c.2: PCI bridge to [bus 04-0b]
pci 0000:00:1c.2:   bridge window [io  0x5000-0x6fff]
pci 0000:00:1c.2:   bridge window [mem 0xe8000000-0xe9ffffff]
pci 0000:00:1c.2:   bridge window [mem 0xe4100000-0xe41fffff 64bit pref]
pci 0000:00:1c.3: PCI bridge to [bus 0c-13]
pci 0000:00:1c.3:   bridge window [io  0x7000-0x8fff]
pci 0000:00:1c.3:   bridge window [mem 0xea000000-0xebffffff]
pci 0000:00:1c.3:   bridge window [mem 0xe4200000-0xe42fffff 64bit pref]
pci 0000:15:00.0: [1180:0476] type 02 class 0x060700
pci 0000:15:00.0: reg 10: [mem 0xe4300000-0xe4300fff]
pci 0000:15:00.0: supports D1 D2
pci 0000:15:00.0: PME# supported from D0 D1 D2 D3hot D3cold
pci 0000:15:00.1: [1180:0552] type 00 class 0x0c0010
pci 0000:15:00.1: reg 10: [mem 0xe4301000-0xe43017ff]
pci 0000:15:00.1: PME# supported from D0 D3hot D3cold
pci 0000:15:00.2: [1180:0822] type 00 class 0x080500
pci 0000:15:00.2: reg 10: [mem 0xe4301800-0xe43018ff]
pci 0000:15:00.2: supports D1 D2
pci 0000:15:00.2: PME# supported from D0 D1 D2 D3hot D3cold
pci 0000:00:1e.0: PCI bridge to [bus 15-18] (subtractive decode)
pci 0000:00:1e.0:   bridge window [io  0x9000-0xcfff]
pci 0000:00:1e.0:   bridge window [mem 0xe4300000-0xe7ffffff]
pci 0000:00:1e.0:   bridge window [mem 0xe0000000-0xe3ffffff 64bit pref]
pci 0000:00:1e.0:   bridge window [io  0x0000-0xffff] (subtractive decode)
pci 0000:00:1e.0:   bridge window [mem 0x00000000-0xffffffff] (subtractive decode)
pci_bus 0000:16: busn_res: can not insert [bus 16-ff] under [bus 15-18] (conflicts with (null) [bus 15-18])
pci_bus 0000:16: busn_res: [bus 16-ff] end is updated to 17
pci_bus 0000:00: on NUMA node 0
acpi PNP0A08:00: Unable to request _OSC control (_OSC support mask: 0x0f)
ACPI: Enabled 2 GPEs in block 00 to 1F
acpi root: \_SB_.PCI0 notify handler is installed
Found 1 acpi root devices
ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62
vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
vgaarb: loaded
vgaarb: bridge control possible 0000:00:02.0
SCSI subsystem initialized
ACPI: bus type ATA registered
libata version 3.00 loaded.
ACPI: bus type USB registered
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
PTP clock support registered
EDAC MC: Ver: 3.0.0
Advanced Linux Sound Architecture Driver Initialized.
PCI: Using ACPI for IRQ routing
PCI: pci_cache_line_size set to 64 bytes
e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff]
e820: reserve RAM buffer [mem 0x7f6d0000-0x7fffffff]
Bluetooth: Core ver 2.16
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
------------[ cut here ]------------
WARNING: at net/wireless/reg.c:434 regulatory_init+0x92/0xff()
db.txt is empty, you should update it...
Modules linked in:
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.0+ #290
Hardware name: LENOVO 17097HU/17097HU, BIOS 7BETD3WW (2.14 ) 10/04/2007
 000001b2 f5d31e98 c095a48c f5d31ec0 c022c96f c0bd2964 f5d31eec 000001b2
 c0ccb800 c0ccb800 00000000 c0ccb6a3 f5d31f14 f5d31ed8 c022ca0e 00000009
 f5d31ed0 c0bd2964 f5d31eec f5d31f18 c0ccb800 c0bc9760 000001b2 c0bd2964
Call Trace:
 [<c095a48c>] dump_stack+0x16/0x18
 [<c022c96f>] warn_slowpath_common+0x5f/0x80
 [<c0ccb800>] ? regulatory_init+0x92/0xff
 [<c0ccb800>] ? regulatory_init+0x92/0xff
 [<c0ccb6a3>] ? cache_initialize+0x86/0x86
 [<c022ca0e>] warn_slowpath_fmt+0x2e/0x30
 [<c0ccb800>] regulatory_init+0x92/0xff
 [<c0ccb6fe>] cfg80211_init+0x5b/0xcb
 [<c0ccad9f>] ? bt_init+0x5d/0x87
 [<c0200182>] do_one_initcall+0xb2/0x170
 [<c0c9857f>] kernel_init_freeable+0xec/0x18c
 [<c0c9861f>] ? kernel_init_freeable+0x18c/0x18c
 [<c094c7cb>] kernel_init+0xb/0xd0
 [<c095e437>] ret_from_kernel_thread+0x1b/0x28
 [<c094c7c0>] ? rest_init+0xb0/0xb0
---[ end trace 081613cec593b52e ]---
cfg80211: Calling CRDA to update world regulatory domain
Switching to clocksource hpet
pnp: PnP ACPI init
ACPI: bus type PNP registered
system 00:00: [mem 0x00000000-0x0009ffff] could not be reserved
system 00:00: [mem 0x000c0000-0x000c3fff] could not be reserved
system 00:00: [mem 0x000c4000-0x000c7fff] could not be reserved
system 00:00: [mem 0x000c8000-0x000cbfff] has been reserved
system 00:00: [mem 0x000cc000-0x000cffff] could not be reserved
system 00:00: [mem 0x000d0000-0x000d3fff] could not be reserved
system 00:00: [mem 0x000dc000-0x000dffff] could not be reserved
system 00:00: [mem 0x000e0000-0x000e3fff] could not be reserved
system 00:00: [mem 0x000e4000-0x000e7fff] could not be reserved
system 00:00: [mem 0x000e8000-0x000ebfff] could not be reserved
system 00:00: [mem 0x000ec000-0x000effff] could not be reserved
system 00:00: [mem 0x000f0000-0x000fffff] could not be reserved
system 00:00: [mem 0x00100000-0x7fffffff] could not be reserved
system 00:00: [mem 0xfec00000-0xfed3ffff] could not be reserved
system 00:00: [mem 0xfed41000-0xffffffff] could not be reserved
system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active)
system 00:01: [io  0x164e-0x164f] has been reserved
system 00:01: [io  0x1000-0x107f] has been reserved
system 00:01: [io  0x1180-0x11bf] has been reserved
system 00:01: [io  0x0800-0x080f] has been reserved
system 00:01: [io  0x15e0-0x15ef] has been reserved
system 00:01: [io  0x1600-0x165f] could not be reserved
system 00:01: [mem 0xf0000000-0xf3ffffff] has been reserved
system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved
system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved
system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved
system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved
system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:02: Plug and Play ACPI device, IDs PNP0103 (active)
pnp 00:03: [dma 4]
pnp 00:03: Plug and Play ACPI device, IDs PNP0200 (active)
pnp 00:04: Plug and Play ACPI device, IDs PNP0800 (active)
pnp 00:05: Plug and Play ACPI device, IDs PNP0c04 (active)
pnp 00:06: Plug and Play ACPI device, IDs PNP0b00 (active)
pnp 00:07: Plug and Play ACPI device, IDs PNP0303 (active)
pnp 00:08: Plug and Play ACPI device, IDs IBM3780 PNP0f13 (active)
pnp 00:09: [dma 3]
pnp 00:09: Plug and Play ACPI device, IDs IBM0071 PNP0511 (active)
pnp 00:0a: Plug and Play ACPI device, IDs ATM1200 PNP0c31 (active)
pnp: PnP ACPI: found 11 devices
ACPI: bus type PNP unregistered
pci 0000:00:1c.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 02] add_size 200000
pci 0000:00:1c.0: res[9]=[mem 0x00100000-0x000fffff 64bit pref] get_res_add_size add_size 200000
pci 0000:00:1c.0: BAR 9: assigned [mem 0x80000000-0x801fffff 64bit pref]
pci 0000:00:1c.0: PCI bridge to [bus 02]
pci 0000:00:1c.0:   bridge window [io  0x2000-0x2fff]
pci 0000:00:1c.0:   bridge window [mem 0xee000000-0xee0fffff]
pci 0000:00:1c.0:   bridge window [mem 0x80000000-0x801fffff 64bit pref]
pci 0000:00:1c.1: PCI bridge to [bus 03]
pci 0000:00:1c.1:   bridge window [io  0x3000-0x4fff]
pci 0000:00:1c.1:   bridge window [mem 0xec000000-0xedffffff]
pci 0000:00:1c.1:   bridge window [mem 0xe4000000-0xe40fffff 64bit pref]
pci 0000:00:1c.2: PCI bridge to [bus 04-0b]
pci 0000:00:1c.2:   bridge window [io  0x5000-0x6fff]
pci 0000:00:1c.2:   bridge window [mem 0xe8000000-0xe9ffffff]
pci 0000:00:1c.2:   bridge window [mem 0xe4100000-0xe41fffff 64bit pref]
pci 0000:00:1c.3: PCI bridge to [bus 0c-13]
pci 0000:00:1c.3:   bridge window [io  0x7000-0x8fff]
pci 0000:00:1c.3:   bridge window [mem 0xea000000-0xebffffff]
pci 0000:00:1c.3:   bridge window [mem 0xe4200000-0xe42fffff 64bit pref]
pci 0000:15:00.0: res[9]=[mem 0x04000000-0x03ffffff pref] get_res_add_size add_size 4000000
pci 0000:15:00.0: res[10]=[mem 0x04000000-0x03ffffff] get_res_add_size add_size 4000000
pci 0000:15:00.0: res[7]=[io  0x0100-0x00ff] get_res_add_size add_size 100
pci 0000:15:00.0: res[8]=[io  0x0100-0x00ff] get_res_add_size add_size 100
pci 0000:15:00.0: BAR 9: assigned [mem 0xe0000000-0xe3ffffff pref]
pci 0000:15:00.0: BAR 10: assigned [mem 0x84000000-0x87ffffff]
pci 0000:15:00.0: BAR 7: assigned [io  0x9000-0x90ff]
pci 0000:15:00.0: BAR 8: assigned [io  0x9400-0x94ff]
pci 0000:15:00.0: CardBus bridge to [bus 16-17]
pci 0000:15:00.0:   bridge window [io  0x9000-0x90ff]
pci 0000:15:00.0:   bridge window [io  0x9400-0x94ff]
pci 0000:15:00.0:   bridge window [mem 0xe0000000-0xe3ffffff pref]
pci 0000:15:00.0:   bridge window [mem 0x84000000-0x87ffffff]
pci 0000:00:1e.0: PCI bridge to [bus 15-18]
pci 0000:00:1e.0:   bridge window [io  0x9000-0xcfff]
pci 0000:00:1e.0:   bridge window [mem 0xe4300000-0xe7ffffff]
pci 0000:00:1e.0:   bridge window [mem 0xe0000000-0xe3ffffff 64bit pref]
pci 0000:00:1e.0: enabling device (0005 -> 0007)
pci 0000:00:1e.0: setting latency timer to 64
pci 0000:15:00.0: setting latency timer to 64
pci_bus 0000:00: resource 4 [io  0x0000-0xffff]
pci_bus 0000:00: resource 5 [mem 0x00000000-0xffffffff]
pci_bus 0000:02: resource 0 [io  0x2000-0x2fff]
pci_bus 0000:02: resource 1 [mem 0xee000000-0xee0fffff]
pci_bus 0000:02: resource 2 [mem 0x80000000-0x801fffff 64bit pref]
pci_bus 0000:03: resource 0 [io  0x3000-0x4fff]
pci_bus 0000:03: resource 1 [mem 0xec000000-0xedffffff]
pci_bus 0000:03: resource 2 [mem 0xe4000000-0xe40fffff 64bit pref]
pci_bus 0000:04: resource 0 [io  0x5000-0x6fff]
pci_bus 0000:04: resource 1 [mem 0xe8000000-0xe9ffffff]
pci_bus 0000:04: resource 2 [mem 0xe4100000-0xe41fffff 64bit pref]
pci_bus 0000:0c: resource 0 [io  0x7000-0x8fff]
pci_bus 0000:0c: resource 1 [mem 0xea000000-0xebffffff]
pci_bus 0000:0c: resource 2 [mem 0xe4200000-0xe42fffff 64bit pref]
pci_bus 0000:15: resource 0 [io  0x9000-0xcfff]
pci_bus 0000:15: resource 1 [mem 0xe4300000-0xe7ffffff]
pci_bus 0000:15: resource 2 [mem 0xe0000000-0xe3ffffff 64bit pref]
pci_bus 0000:15: resource 4 [io  0x0000-0xffff]
pci_bus 0000:15: resource 5 [mem 0x00000000-0xffffffff]
pci_bus 0000:16: resource 0 [io  0x9000-0x90ff]
pci_bus 0000:16: resource 1 [io  0x9400-0x94ff]
pci_bus 0000:16: resource 2 [mem 0xe0000000-0xe3ffffff pref]
pci_bus 0000:16: resource 3 [mem 0x84000000-0x87ffffff]
NET: Registered protocol family 2
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 6, 294912 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP: reno registered
UDP hash table entries: 512 (order: 3, 40960 bytes)
UDP-Lite hash table entries: 512 (order: 3, 40960 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
pci 0000:00:02.0: Boot video device
pci 0000:00:1d.0: power state changed by ACPI to D0
pci 0000:00:1d.0: uhci_check_and_reset_hc: legsup = 0x2000
pci 0000:00:1d.0: Performing full reset
pci 0000:00:1d.1: uhci_check_and_reset_hc: legsup = 0x2000
pci 0000:00:1d.1: Performing full reset
pci 0000:00:1d.2: power state changed by ACPI to D0
pci 0000:00:1d.2: uhci_check_and_reset_hc: legsup = 0x2000
pci 0000:00:1d.2: Performing full reset
pci 0000:00:1d.3: uhci_check_and_reset_hc: legsup = 0x2000
pci 0000:00:1d.3: Performing full reset
PCI: CLS 64 bytes, default 64
Simple Boot Flag at 0x35 set to 0x1
bounce pool size: 64 pages
NTFS driver 2.1.30 [Flags: R/W].
fuse init (API version 7.22)
msgmni has been set to 1703
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
acpiphp_ibm: ibm_acpiphp_init: acpi_walk_namespace failed
intel_idle: does not run on family 6 model 14
ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
ACPI: AC Adapter [AC] (off-line)
input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0
ACPI: Lid Switch [LID]
input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input1
ACPI: Sleep Button [SLPB]
input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
ACPI: Power Button [PWRF]
acpi device:02: registered as cooling_device0
ACPI: Video Device [VID] (multi-head: yes  rom: no  post: no)
input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:00/input/input3
ACPI: Requesting acpi_cpufreq
ACPI: acpi_idle registered with cpuidle
thermal LNXTHERM:00: registered as thermal_zone0
ACPI: Thermal Zone [THM0] (68 C)
thermal LNXTHERM:01: registered as thermal_zone1
ACPI: Thermal Zone [THM1] (68 C)
GHES: HEST is not enabled!
ERST DBG: ERST support is disabled.
ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared
ACPI: Battery Slot [BAT0] (battery present)
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a NS16550A
lp: driver loaded but no devices found
Non-volatile memory driver v1.3
intel_rng: FWH not detected
Linux agpgart interface v0.103
agpgart-intel 0000:00:00.0: Intel 945GM Chipset
agpgart-intel 0000:00:00.0: detected gtt size: 262144K total, 262144K mappable
agpgart-intel 0000:00:00.0: detected 8192K stolen memory
agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
[drm] Initialized drm 1.1.0 20060810
[drm] Memory usable by graphics device = 256M
i915 0000:00:02.0: setting latency timer to 64
[drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[drm] Driver supports precise vblank timestamp query.
vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[drm] initialized overlay support
fbcon: inteldrmfb (fb0) is primary device
Console: switching to colour frame buffer device 102x42
i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
i915 0000:00:02.0: registered panic notifier
[drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
usbcore: registered new interface driver udl
loop: module loaded
nbd: registered device at major 43
ahci 0000:00:1f.2: version 3.0
ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 4 ports 1.5 Gbps 0x1 impl SATA mode
ahci 0000:00:1f.2: flags: 64bit ncq pm led clo pio slum part 
ahci 0000:00:1f.2: setting latency timer to 64
scsi0 : ahci
scsi1 : ahci
scsi2 : ahci
scsi3 : ahci
ata1: SATA max UDMA/133 abar m1024@0xee444400 port 0xee444500 irq 16
ata2: DUMMY
ata3: DUMMY
ata4: DUMMY
ata_piix 0000:00:1f.1: version 2.13
ata_piix 0000:00:1f.1: setting latency timer to 64
scsi4 : ata_piix
scsi5 : ata_piix
ata5: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x1810 irq 14
ata6: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x1818 irq 15
ata6: port disabled--ignoring
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
e1000e: Copyright(c) 1999 - 2013 Intel Corporation.
e1000e 0000:02:00.0: Disabling ASPM L0s L1
e1000e 0000:02:00.0: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
e1000e 0000:02:00.0 eth0: (PCI Express:2.5GT/s:Width x1) 00:16:d3:25:19:04
e1000e 0000:02:00.0 eth0: Intel(R) PRO/1000 Network Connection
e1000e 0000:02:00.0 eth0: MAC: 2, PHY: 2, PBA No: 005302-003
PPP generic driver version 2.4.2
PPP BSD Compression module registered
PPP Deflate Compression module registered
SLIP: version 0.8.4-NET3.019-NEWTTY (dynamic channels, max=256).
CSLIP: code copyright 1989 Regents of the University of California.
iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:ds
iwl3945: Copyright(c) 2003-2011 Intel Corporation
iwl3945 0000:03:00.0: Tunable channels: 11 802.11bg, 13 802.11a channels
iwl3945 0000:03:00.0: Detected Intel Wireless WiFi Link 3945ABG
ieee80211 phy0: Selected rate control algorithm 'iwl-3945-rs'
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
usbcore: registered new interface driver ax88179_178a
usbcore: registered new interface driver cdc_ether
usbcore: registered new interface driver net1080
usbcore: registered new interface driver cdc_subset
usbcore: registered new interface driver zaurus
usbcore: registered new interface driver cdc_ncm
yenta_cardbus 0000:15:00.0: CardBus bridge found [17aa:201c]
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (SET FEATURES) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (SECURITY FREEZE LOCK) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (SET FEATURES) filtered out
ata1.00: ATA-8: ST9500325AS, 0001SDM1, max UDMA/133
ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32)
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 (SET FEATURES) succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (SECURITY FREEZE LOCK) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (SET FEATURES) filtered out
ata1.00: configured for UDMA/133
scsi 0:0:0:0: Direct-Access     ATA      ST9500325AS      0001 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
sd 0:0:0:0: Attached scsi generic sg0 type 0
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
 sda: sda1 sda2 sda3 sda4
sd 0:0:0:0: [sda] Attached SCSI disk
yenta_cardbus 0000:15:00.0: ISA IRQ mask 0x0cb8, PCI irq 16
yenta_cardbus 0000:15:00.0: Socket status: 30000006
yenta_cardbus 0000:15:00.0: pcmcia: parent PCI bridge window: [io  0x9000-0xcfff]
yenta_cardbus 0000:15:00.0: pcmcia: parent PCI bridge window: [mem 0xe4300000-0xe7ffffff]
pcmcia_socket pcmcia_socket0: cs: memory probe 0xe4300000-0xe7ffffff:
 excluding 0xe4300000-0xe46cffff
yenta_cardbus 0000:15:00.0: pcmcia: parent PCI bridge window: [mem 0xe0000000-0xe3ffffff 64bit pref]
pcmcia_socket pcmcia_socket0: cs: memory probe 0xe0000000-0xe3ffffff:
 excluding 0xe0000000-0xe3ffffff
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci_hcd: block sizes: qh 64 qtd 96 itd 160 sitd 96
ehci-pci: EHCI PCI platform driver
ehci-pci 0000:00:1d.7: setting latency timer to 64
ehci-pci 0000:00:1d.7: EHCI Host Controller
ehci-pci 0000:00:1d.7: new USB bus registered, assigned bus number 1
ehci-pci 0000:00:1d.7: debug port 1
ehci-pci 0000:00:1d.7: reset hcs_params 0x104208 dbg=1 cc=4 pcc=2 ordered !ppc ports=8
ehci-pci 0000:00:1d.7: reset hcc_params 6871 thresh 7 uframes 1024 64 bit addr
ehci-pci 0000:00:1d.7: reset command 0080022 (park)=0 ithresh=8 Async period=1024 Reset HALT
ehci-pci 0000:00:1d.7: cache line size of 64 is not supported
ehci-pci 0000:00:1d.7: supports USB remote wakeup
ehci-pci 0000:00:1d.7: irq 19, io mem 0xee444000
ehci-pci 0000:00:1d.7: init command 0010001 (park)=0 ithresh=1 period=1024 RUN
ehci-pci 0000:00:1d.7: USB 2.0 started, EHCI 1.00
usb usb1: default language 0x0409
usb usb1: udev 1, busnum 1, minor = 0
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: EHCI Host Controller
usb usb1: Manufacturer: Linux 3.10.0+ ehci_hcd
usb usb1: SerialNumber: 0000:00:1d.7
usb usb1: usb_probe_device
usb usb1: configuration #1 chosen from 1 choice
usb usb1: adding 1-0:1.0 (config #1, interface 0)
hub 1-0:1.0: usb_probe_interface
hub 1-0:1.0: usb_probe_interface - got id
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 8 ports detected
hub 1-0:1.0: standalone hub
hub 1-0:1.0: no power switching (usb 1.0)
hub 1-0:1.0: individual port over-current protection
hub 1-0:1.0: power on to power good time: 20ms
hub 1-0:1.0: local power source is good
hub 1-0:1.0: trying to enable port power on non-switchable hub
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
ohci_hcd: block sizes: ed 64 td 64
uhci_hcd: USB Universal Host Controller Interface driver
uhci_hcd 0000:00:1d.0: setting latency timer to 64
uhci_hcd 0000:00:1d.0: UHCI Host Controller
uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
uhci_hcd 0000:00:1d.0: detected 2 ports
uhci_hcd 0000:00:1d.0: uhci_check_and_reset_hc: cmd = 0x0000
uhci_hcd 0000:00:1d.0: Performing full reset
uhci_hcd 0000:00:1d.0: supports USB remote wakeup
uhci_hcd 0000:00:1d.0: irq 16, io base 0x00001820
usb usb2: default language 0x0409
usb usb2: udev 1, busnum 2, minor = 128
usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: UHCI Host Controller
usb usb2: Manufacturer: Linux 3.10.0+ uhci_hcd
usb usb2: SerialNumber: 0000:00:1d.0
usb usb2: usb_probe_device
usb usb2: configuration #1 chosen from 1 choice
usb usb2: adding 2-0:1.0 (config #1, interface 0)
hub 2-0:1.0: usb_probe_interface
hub 2-0:1.0: usb_probe_interface - got id
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
hub 2-0:1.0: standalone hub
hub 2-0:1.0: no power switching (usb 1.0)
hub 2-0:1.0: individual port over-current protection
hub 2-0:1.0: power on to power good time: 2ms
hub 2-0:1.0: local power source is good
hub 2-0:1.0: trying to enable port power on non-switchable hub
uhci_hcd 0000:00:1d.0: FS/LS companion for 0000:00:1d.7
uhci_hcd 0000:00:1d.1: setting latency timer to 64
uhci_hcd 0000:00:1d.1: UHCI Host Controller
uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3
uhci_hcd 0000:00:1d.1: detected 2 ports
uhci_hcd 0000:00:1d.1: uhci_check_and_reset_hc: cmd = 0x0000
uhci_hcd 0000:00:1d.1: Performing full reset
uhci_hcd 0000:00:1d.1: supports USB remote wakeup
uhci_hcd 0000:00:1d.1: irq 17, io base 0x00001840
usb usb3: default language 0x0409
usb usb3: udev 1, busnum 3, minor = 256
usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb3: Product: UHCI Host Controller
usb usb3: Manufacturer: Linux 3.10.0+ uhci_hcd
usb usb3: SerialNumber: 0000:00:1d.1
usb usb3: usb_probe_device
usb usb3: configuration #1 chosen from 1 choice
usb usb3: adding 3-0:1.0 (config #1, interface 0)
hub 3-0:1.0: usb_probe_interface
hub 3-0:1.0: usb_probe_interface - got id
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 2 ports detected
hub 3-0:1.0: standalone hub
hub 3-0:1.0: no power switching (usb 1.0)
hub 3-0:1.0: individual port over-current protection
hub 3-0:1.0: power on to power good time: 2ms
hub 3-0:1.0: local power source is good
hub 3-0:1.0: trying to enable port power on non-switchable hub
uhci_hcd 0000:00:1d.1: FS/LS companion for 0000:00:1d.7
uhci_hcd 0000:00:1d.2: setting latency timer to 64
uhci_hcd 0000:00:1d.2: UHCI Host Controller
ehci-pci 0000:00:1d.7: GetStatus port:7 status 001803 0  ACK POWER sig=j CSC CONNECT
hub 1-0:1.0: port 7: status 0501 change 0001
ehci-pci 0000:00:1d.7: GetStatus port:8 status 001803 0  ACK POWER sig=j CSC CONNECT
hub 1-0:1.0: port 8: status 0501 change 0001
uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4
uhci_hcd 0000:00:1d.2: detected 2 ports
uhci_hcd 0000:00:1d.2: uhci_check_and_reset_hc: cmd = 0x0000
uhci_hcd 0000:00:1d.2: Performing full reset
uhci_hcd 0000:00:1d.2: supports USB remote wakeup
uhci_hcd 0000:00:1d.2: irq 18, io base 0x00001860
usb usb4: default language 0x0409
usb usb4: udev 1, busnum 4, minor = 384
usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb4: Product: UHCI Host Controller
usb usb4: Manufacturer: Linux 3.10.0+ uhci_hcd
usb usb4: SerialNumber: 0000:00:1d.2
usb usb4: usb_probe_device
usb usb4: configuration #1 chosen from 1 choice
usb usb4: adding 4-0:1.0 (config #1, interface 0)
hub 4-0:1.0: usb_probe_interface
hub 4-0:1.0: usb_probe_interface - got id
hub 4-0:1.0: USB hub found
hub 4-0:1.0: 2 ports detected
hub 4-0:1.0: standalone hub
hub 4-0:1.0: no power switching (usb 1.0)
hub 4-0:1.0: individual port over-current protection
hub 4-0:1.0: power on to power good time: 2ms
hub 4-0:1.0: local power source is good
hub 4-0:1.0: trying to enable port power on non-switchable hub
uhci_hcd 0000:00:1d.2: FS/LS companion for 0000:00:1d.7
uhci_hcd 0000:00:1d.3: setting latency timer to 64
uhci_hcd 0000:00:1d.3: UHCI Host Controller
uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 5
uhci_hcd 0000:00:1d.3: detected 2 ports
uhci_hcd 0000:00:1d.3: uhci_check_and_reset_hc: cmd = 0x0000
uhci_hcd 0000:00:1d.3: Performing full reset
uhci_hcd 0000:00:1d.3: irq 19, io base 0x00001880
hub 2-0:1.0: state 7 ports 2 chg 0000 evt 0000
hub 2-0:1.0: hub_suspend
usb usb2: bus auto-suspend, wakeup 1
usb usb2: suspend_rh
usb usb5: default language 0x0409
usb usb5: udev 1, busnum 5, minor = 512
usb usb5: New USB device found, idVendor=1d6b, idProduct=0001
usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb5: Product: UHCI Host Controller
usb usb5: Manufacturer: Linux 3.10.0+ uhci_hcd
usb usb5: SerialNumber: 0000:00:1d.3
usb usb5: usb_probe_device
usb usb5: configuration #1 chosen from 1 choice
usb usb5: adding 5-0:1.0 (config #1, interface 0)
hub 5-0:1.0: usb_probe_interface
hub 5-0:1.0: usb_probe_interface - got id
hub 5-0:1.0: USB hub found
hub 5-0:1.0: 2 ports detected
hub 5-0:1.0: standalone hub
hub 5-0:1.0: no power switching (usb 1.0)
hub 5-0:1.0: individual port over-current protection
hub 5-0:1.0: power on to power good time: 2ms
hub 5-0:1.0: local power source is good
hub 5-0:1.0: trying to enable port power on non-switchable hub
uhci_hcd 0000:00:1d.3: FS/LS companion for 0000:00:1d.7
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
usbcore: registered new interface driver usblp
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver ums-sddr09
hub 3-0:1.0: state 7 ports 2 chg 0000 evt 0000
hub 3-0:1.0: hub_suspend
usb usb3: bus auto-suspend, wakeup 1
usb usb3: suspend_rh
usbcore: registered new interface driver usbserial
hub 1-0:1.0: state 7 ports 8 chg 0180 evt 0000
hub 1-0:1.0: port 7, status 0501, change 0000, 480 Mb/s
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver ftdi_sio
usbserial: USB Serial support registered for FTDI USB Serial Device
usbcore: registered new interface driver option
usbserial: USB Serial support registered for GSM modem (1-port)
usbcore: registered new interface driver pl2303
usbserial: USB Serial support registered for pl2303
driver ftdi-elan
usbcore: registered new interface driver ftdi-elan
i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
serio: i8042 KBD port at 0x60,0x64 irq 1
ehci-pci 0000:00:1d.7: port 7 full speed --> companion
ehci-pci 0000:00:1d.7: GetStatus port:7 status 003801 0  ACK POWER OWNER sig=j CONNECT
hub 1-0:1.0: port_wait_reset: err = -16
hub 1-0:1.0: port 7 not enabled, trying reset again...
serio: i8042 AUX port at 0x60,0x64 irq 12
mousedev: PS/2 mouse device common for all mice
input: PC Speaker as /devices/platform/pcspkr/input/input4
rtc_cmos 00:06: RTC can wake from S4
rtc_cmos 00:06: rtc core: registered rtc_cmos as rtc0
uhci_hcd 0000:00:1d.3: port 1 portsc 009b,00
hub 5-0:1.0: port 1: status 0101 change 0003
uhci_hcd 0000:00:1d.3: port 2 portsc 008a,00
rtc_cmos 00:06: alarms up to one month, y3k, 114 bytes nvram, hpet irqs
md: raid0 personality registered for level 0
input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input5
md: raid1 personality registered for level 1
device-mapper: ioctl: 4.24.0-ioctl (2013-01-15) initialised: dm-devel@redhat.com
Bluetooth: HCI UART driver ver 2.2
Bluetooth: HCI H4 protocol initialized
Bluetooth: HCI BCSP protocol initialized
usbcore: registered new interface driver btusb
lguest: mapped switcher at ffe68000
cpuidle: using governor ladder
cpuidle: using governor menu
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pci 0000:15:00.2: SDHCI controller found [1180:0822] (rev 18)
sdhci-pci 0000:15:00.2: Will use DMA mode even though HW doesn't fully claim to support it.
sdhci-pci 0000:15:00.2: setting latency timer to 64
sdhci-pci 0000:15:00.2: Will use DMA mode even though HW doesn't fully claim to support it.
mmc0: SDHCI controller on PCI [0000:15:00.2] using DMA
hidraw: raw HID events driver (C) Jiri Kosina
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
thinkpad_acpi: ThinkPad ACPI Extras v0.24
thinkpad_acpi: http://ibm-acpi.sf.net/
thinkpad_acpi: ThinkPad BIOS 7BETD3WW (2.14 ), EC 7BHT40WW-1.13
thinkpad_acpi: Lenovo ThinkPad X60, model 17097HU
thinkpad_acpi: WARNING: Outdated ThinkPad BIOS/EC firmware
thinkpad_acpi: WARNING: This firmware may be missing critical bug fixes and/or important features
thinkpad_acpi: detected a 8-level brightness capable ThinkPad
thinkpad_acpi: ACPI backlight control delay disabled
thinkpad_acpi: radio switch found; radios are enabled
thinkpad_acpi: This ThinkPad has standard ACPI backlight brightness control, supported by the ACPI video driver
thinkpad_acpi: Disabling thinkpad-acpi brightness events by default...
sdhci-pci 0000:15:00.2: Will use DMA mode even though HW doesn't fully claim to support it.
ehci-pci 0000:00:1d.7: GetStatus port:7 status 003002 0  ACK POWER OWNER sig=se0 CSC
hub 1-0:1.0: port 8, status 0501, change 0000, 480 Mb/s
thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
thinkpad_acpi: warning: userspace override of important firmware LEDs is enabled
input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input6
thinkpad_acpi: Standard ACPI backlight interface available, not loading native one
sdhci-pci 0000:15:00.2: Will use DMA mode even though HW doesn't fully claim to support it.
thinkpad_acpi: volume: disabled as there is no ALSA support in this kernel
ehci-pci 0000:00:1d.7: port 8 full speed --> companion
ehci-pci 0000:00:1d.7: GetStatus port:8 status 003801 0  ACK POWER OWNER sig=j CONNECT
hub 1-0:1.0: port_wait_reset: err = -16
hub 1-0:1.0: port 8 not enabled, trying reset again...
input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input7
hda_intel: probe_mask set to 0x1 for device 17aa:2010
sdhci-pci 0000:15:00.2: Will use DMA mode even though HW doesn't fully claim to support it.
usbcore: registered new interface driver snd-usb-audio
nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP: cubic registered
NET: Registered protocol family 17
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP filters: protocol multicast
Bluetooth: BNEP socket layer initialized
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
Bluetooth: HIDP socket layer initialized
Using IPI No-Shortcut mode
PM: Checking hibernation image partition /dev/sda1
PM: Hibernation image partition 8:1 present
PM: Looking for hibernation image.
sdhci-pci 0000:15:00.2: Will use DMA mode even though HW doesn't fully claim to support it.
ehci-pci 0000:00:1d.7: GetStatus port:8 status 003002 0  ACK POWER OWNER sig=se0 CSC
hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0000
hub 1-0:1.0: state 7 ports 8 chg 0000 evt 0180
ehci-pci 0000:00:1d.7: GetStatus port:7 status 003002 0  ACK POWER OWNER sig=se0 CSC
hub 1-0:1.0: port 7, status 0100, change 0001, 12 Mb/s
hub 4-0:1.0: hub_suspend
usb usb4: bus auto-suspend, wakeup 1
usb usb4: suspend_rh
PM: Image not found (code -22)
PM: Hibernation image not present or could not be loaded.
rtc_cmos 00:06: setting system clock to 2013-07-12 10:58:37 UTC (1373626717)
ALSA device list:
  #0: HDA Intel at 0xee240000 irq 17
md: Waiting for all devices to be available before autodetect
md: If you don't use raid, use raid=noautodetect
md: Autodetecting RAID arrays.
md: Scanned 0 and added 0 devices.
md: autorun ...
md: ... autorun DONE.
kjournald starting.  Commit interval 5 seconds
EXT3-fs (sda3): mounted filesystem with ordered data mode
VFS: Mounted root (ext3 filesystem) readonly on device 8:3.
hub 1-0:1.0: debounce: port 7: total 100ms stable 100ms status 0x100
ehci-pci 0000:00:1d.7: GetStatus port:8 status 003002 0  ACK POWER OWNER sig=se0 CSC
hub 1-0:1.0: port 8, status 0100, change 0001, 12 Mb/s
devtmpfs: mounted
debug: unmapping init [mem 0xc0c98000-0xc0d08fff]
Write protecting the kernel text: 7552k
Write protecting the kernel read-only data: 2772k
hub 1-0:1.0: debounce: port 8: total 100ms stable 100ms status 0x100
hub 5-0:1.0: state 7 ports 2 chg 0002 evt 0004
hub 5-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
hub 1-0:1.0: hub_suspend
usb usb1: bus auto-suspend, wakeup 1
ehci-pci 0000:00:1d.7: suspend root hub
hub 5-0:1.0: port_wait_reset: err = -16
hub 5-0:1.0: port 1 not enabled, trying reset again...
usb 5-1: new full-speed USB device number 2 using uhci_hcd
usb 5-1: skipped 1 descriptor after interface
usb 5-1: default language 0x0409
usb 5-1: udev 2, busnum 5, minor = 513
usb 5-1: New USB device found, idVendor=0a5c, idProduct=2110
usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 5-1: Product: BCM2045B
usb 5-1: Manufacturer: Broadcom Corp
usb 5-1: usb_probe_device
usb 5-1: configuration #1 chosen from 1 choice
usb 5-1: adding 5-1:1.0 (config #1, interface 0)
btusb 5-1:1.0: usb_probe_interface
btusb 5-1:1.0: usb_probe_interface - got id
usb 5-1: adding 5-1:1.1 (config #1, interface 1)
uhci_hcd 0000:00:1d.3: reserve dev 2 ep81-INT, period 1, phase 0, 23 us
usb 5-1: adding 5-1:1.2 (config #1, interface 2)
btusb 5-1:1.2: usb_probe_interface
btusb 5-1:1.2: usb_probe_interface - got id
usb 5-1: adding 5-1:1.3 (config #1, interface 3)
btusb 5-1:1.3: usb_probe_interface
btusb 5-1:1.3: usb_probe_interface - got id
uhci_hcd 0000:00:1d.3: port 2 portsc 0093,00
hub 5-0:1.0: port 2, status 0101, change 0001, 12 Mb/s
hub 5-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x101
usb 5-2: new full-speed USB device number 3 using uhci_hcd
usb 5-2: ep0 maxpacket = 8
usb 5-2: default language 0x0409
usb 5-2: udev 3, busnum 5, minor = 514
usb 5-2: New USB device found, idVendor=0483, idProduct=2016
usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 5-2: Product: Biometric Coprocessor
usb 5-2: Manufacturer: STMicroelectronics
usb 5-2: usb_probe_device
usb 5-2: configuration #1 chosen from 1 choice
usb 5-2: adding 5-2:1.0 (config #1, interface 0)
hub 5-0:1.0: state 7 ports 2 chg 0000 evt 0002
udev[1721]: starting version 164
pcmcia_socket pcmcia_socket0: cs: memory probe 0x0c0000-0x0fffff:
 excluding 0xc0000-0xd3fff 0xdc000-0xfffff
pcmcia_socket pcmcia_socket0: cs: memory probe 0xa0000000-0xa0ffffff:
 clean.
pcmcia_socket pcmcia_socket0: cs: memory probe 0x60000000-0x60ffffff:
 excluding 0x60000000-0x60ffffff
uhci_hcd 0000:00:1d.3: release dev 2 ep81-INT, period 1, phase 0, 23 us
Adding 779148k swap on /dev/sda1.  Priority:-1 extents:1 across:779148k 
EXT3-fs (sda3): warning: maximal mount count reached, running e2fsck is recommended
EXT3-fs (sda3): using internal journal
kjournald starting.  Commit interval 5 seconds
EXT3-fs (sda2): using internal journal
EXT3-fs (sda2): mounted filesystem with ordered data mode
EXT3-fs (sda4): error: can't find ext3 filesystem on dev sda4.
input: ACPI Virtual Keyboard Device as /devices/virtual/input/input8
iwl3945 0000:03:00.0: loaded firmware version 15.32.2.9
uhci_hcd 0000:00:1d.3: reserve dev 2 ep81-INT, period 1, phase 0, 23 us
sshd (3273): /proc/3273/oom_adj is deprecated, please use /proc/3273/oom_score_adj instead.
wlan0: authenticate with 00:11:95:05:30:d7
wlan0: send auth to 00:11:95:05:30:d7 (try 1/3)
wlan0: authenticated
iwl3945 0000:03:00.0 wlan0: disabling HT as WMM/QoS is not supported by the AP
iwl3945 0000:03:00.0 wlan0: disabling VHT as WMM/QoS is not supported by the AP
wlan0: associate with 00:11:95:05:30:d7 (try 1/3)
wlan0: RX AssocResp from 00:11:95:05:30:d7 (capab=0x401 status=0 aid=3)
wlan0: associated

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-10 19:57           ` Bjorn Helgaas
  2013-07-10 22:21             ` Wyborny, Carolyn
  2013-07-12 11:03             ` Pavel Machek
@ 2013-07-12 11:11             ` Pavel Machek
  2013-07-19 17:46               ` Bjorn Helgaas
  2013-08-01  6:19             ` Jeff Kirsher
  3 siblings, 1 reply; 36+ messages in thread
From: Pavel Machek @ 2013-07-12 11:11 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

Hi!

> [+cc Jeff, Jesse, et al, e1000-devel]
> 
> Holy cow, you guys have a lot of folks listed in MAINTAINERS for Intel
> drivers :)  This is an ASPM question, if that helps narrow down the
> folks interested.

> >> If ASPM is enabled for a
> >> device, e.g., your NIC, the link may be put in a low power state when
> >> the device is idle.  It takes time to exit that low power state, of
> >> course, but I would expect that time to be in the microsecond time and
> >> probably not observable via ping.
> >
> > I'd hope so. 100msec ping makes ssh unpleasant to use.
> 
> Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
> 3945ABG.  I'm pretty sure the problem he's reporting is with the
> 82573L.  Ping times are bad (~100msec) when ASPM is enabled, as
> reported by lspci.

Yep. Wired ethernet has the problems.

> On Pavel's system, the FADT says we shouldn't enable OSPM control of
> ASPM (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One
> effect is that we don't blacklist the pre-1.1 82573L device, which I
> think results in it being left with the BIOS configuration, which
> apparently has ASPM enabled.  (Pavel, could you confirm the BIOS
> config, e.g., with "pci=earlydump"?)

Dump sent in another mail.

> e1000e claims to disable ASPM, but because aspm_disabled is set, the
> driver's call to pci_disable_link_state_locked() actually does nothing
> [1].
> 
> I experimented [2] with Windows and found that when a driver requests
> PciASPMOptOut, Windows will not touch ASPM config if the _OSC method
> fails, i.e., the BIOS declines to grant ASPM control to the OS.
> However, I do not know if Windows similarly ignores PciASPMOptOut when
> the FADT ACPI_FADT_NO_ASPM bit is set.

Ok, so we get copy of Windows, including the problem :-(.

> [1] We just merged 2add0ec1, which adds a "can't disable ASPM; OS
> doesn't have ASPM control" message in this case, but I don't think
> Pavel's kernel has this change.  It doesn't change the behavior
> anyway.

Oops.

Ok, so we have BIOS on x60 that sets up hardware in a way that does
not work... and then tells us we must not do ASPM, so we don't fix it.
 
One option would be "always disable ASPM, even if BIOS tells us it is
not supported".

Other option would be "add explicit blacklist for x60, disable ASPM
there.".

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-10 22:57                 ` Bjorn Helgaas
@ 2013-07-12 11:52                   ` Pavel Machek
  -1 siblings, 0 replies; 36+ messages in thread
From: Pavel Machek @ 2013-07-12 11:52 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Wyborny, Carolyn, Greg KH, kernel list, Joe Lawrence,
	Myron Stowe, Kirsher, Jeffrey T, Brandeburg, Jesse, Allan,
	Bruce W, Skidmore, Donald C, Rose, Gregory V, Waskiewicz Jr,
	Peter P, Duyck, Alexander H, Ronciak, John, Dave, Tushar N,
	e1000-devel, linux-pci, Rafael J. Wysocki, mjg59

Hi!

> > > Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
> > > 3945ABG.  I'm pretty sure the problem he's reporting is with the 82573L.  Ping
> > > times are bad (~100msec) when ASPM is enabled, as reported by lspci.
> > > 
> > > On Pavel's system, the FADT says we shouldn't enable OSPM control of ASPM
> > > (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One effect is that
> > > we don't blacklist the pre-1.1 82573L device, which I think results in it being left
> > > with the BIOS configuration, which apparently has ASPM enabled.  (Pavel, could
> > > you confirm the BIOS config, e.g., with "pci=earlydump"?)
> > >
> > > e1000e claims to disable ASPM, but because aspm_disabled is set, the driver's
> > > call to pci_disable_link_state_locked() actually does nothing [1].
> > 
> > Yes, this is the problem we run into.  It would help if the call to pci_disable_link_state_locked() returned an error if ASPM is not disabled as requested so that drivers can then do the brute force disabling of it themselves.
> 
> I considered returning an error, but resisted because I think drivers
> will just handle the error by doing the brute-force disable themselves,
> and then we might as well drop the pci_disable_link_state() interface
> completely.

What is that? Yes, if function does not perform what it was asked to
do, it should return an error. Anything else is antisocial.

If drivers will attempt to do something _more_ antisocial (like doing
PCI bit banging) we can surely catch it during review.

[Actually, the functions seem to have "force" parameter. Should we
just let e1000e/iwlwifi set the force? They _know_ hardware will not
work properly with the ASPM.] 

> I proposed a patch [3] a while ago that made pci_disable_link_state()
> turn off ASPM unconditionally.  That would have the same effect as
> returning failure and having drivers disable ASPM themselves.  But
> Rafael and Matthew thought it was too risky [4] (and I think they're
> probably right because it does not match the Windows behavior).

Well, I believe "patch might be risky" is trumped by "this ethernet
card is not usable". 

> So by extension, I guess it would also be risky to return an error and
> have the driver disable ASPM.

It does not seem like clean conclusion to me.

Doing force-disabling on selected hardware that needs it (x60+e1000e)
is certainly less risky than changing behaviour for all the 1000
notebooks out there.

So yes, you should be returning error.

At the very least, e1000e and iwlwifi could warn the user loudly and
maybe even disable the interface.

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
@ 2013-07-12 11:52                   ` Pavel Machek
  0 siblings, 0 replies; 36+ messages in thread
From: Pavel Machek @ 2013-07-12 11:52 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Wyborny, Carolyn, Greg KH, kernel list, Joe Lawrence,
	Myron Stowe, Kirsher, Jeffrey T, Brandeburg, Jesse, Allan,
	Bruce W, Skidmore, Donald C, Rose, Gregory V, Waskiewicz Jr,
	Peter P, Duyck, Alexander H, Ronciak, John, Dave, Tushar N,
	e1000-devel, linux-pci, Rafael J. Wysocki, mjg59

Hi!

> > > Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
> > > 3945ABG.  I'm pretty sure the problem he's reporting is with the 82573L.  Ping
> > > times are bad (~100msec) when ASPM is enabled, as reported by lspci.
> > > 
> > > On Pavel's system, the FADT says we shouldn't enable OSPM control of ASPM
> > > (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One effect is that
> > > we don't blacklist the pre-1.1 82573L device, which I think results in it being left
> > > with the BIOS configuration, which apparently has ASPM enabled.  (Pavel, could
> > > you confirm the BIOS config, e.g., with "pci=earlydump"?)
> > >
> > > e1000e claims to disable ASPM, but because aspm_disabled is set, the driver's
> > > call to pci_disable_link_state_locked() actually does nothing [1].
> > 
> > Yes, this is the problem we run into.  It would help if the call to pci_disable_link_state_locked() returned an error if ASPM is not disabled as requested so that drivers can then do the brute force disabling of it themselves.
> 
> I considered returning an error, but resisted because I think drivers
> will just handle the error by doing the brute-force disable themselves,
> and then we might as well drop the pci_disable_link_state() interface
> completely.

What is that? Yes, if function does not perform what it was asked to
do, it should return an error. Anything else is antisocial.

If drivers will attempt to do something _more_ antisocial (like doing
PCI bit banging) we can surely catch it during review.

[Actually, the functions seem to have "force" parameter. Should we
just let e1000e/iwlwifi set the force? They _know_ hardware will not
work properly with the ASPM.] 

> I proposed a patch [3] a while ago that made pci_disable_link_state()
> turn off ASPM unconditionally.  That would have the same effect as
> returning failure and having drivers disable ASPM themselves.  But
> Rafael and Matthew thought it was too risky [4] (and I think they're
> probably right because it does not match the Windows behavior).

Well, I believe "patch might be risky" is trumped by "this ethernet
card is not usable". 

> So by extension, I guess it would also be risky to return an error and
> have the driver disable ASPM.

It does not seem like clean conclusion to me.

Doing force-disabling on selected hardware that needs it (x60+e1000e)
is certainly less risky than changing behaviour for all the 1000
notebooks out there.

So yes, you should be returning error.

At the very least, e1000e and iwlwifi could warn the user loudly and
maybe even disable the interface.

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-12 11:11             ` Pavel Machek
@ 2013-07-19 17:46               ` Bjorn Helgaas
  2013-07-24 15:19                 ` Wyborny, Carolyn
  2013-07-31 23:53                 ` Bjorn Helgaas
  0 siblings, 2 replies; 36+ messages in thread
From: Bjorn Helgaas @ 2013-07-19 17:46 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

On Fri, Jul 12, 2013 at 5:11 AM, Pavel Machek <pavel@ucw.cz> wrote:
>> Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
>> 3945ABG.  I'm pretty sure the problem he's reporting is with the
>> 82573L.  Ping times are bad (~100msec) when ASPM is enabled, as
>> reported by lspci.
>
> Yep. Wired ethernet has the problems.
>
>> On Pavel's system, the FADT says we shouldn't enable OSPM control of
>> ASPM (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One
>> effect is that we don't blacklist the pre-1.1 82573L device, which I
>> think results in it being left with the BIOS configuration, which
>> apparently has ASPM enabled.  (Pavel, could you confirm the BIOS
>> config, e.g., with "pci=earlydump"?)
>
> Dump sent in another mail.

Thanks for the dmesg log.  It confirms that the BIOS left ASPM L1
enabled on your 82573L device.  The PCIe cap is at 0xe0 per previous
lspci output, and the Link Control register at 0xf0 contains 0x0142,
which means ASPM L1, Common Clock, and Clock PM are enabled.

> Ok, so we get copy of Windows, including the problem :-(.

Just to make sure I understand you correctly: I think you are saying
that the NIC has the same problem under Windows.

> Ok, so we have BIOS on x60 that sets up hardware in a way that does
> not work... and then tells us we must not do ASPM, so we don't fix it.
>
> One option would be "always disable ASPM, even if BIOS tells us it is
> not supported".

Yes.  We considered this route, but it didn't seem safe in general.
The problem is that the BIOS isn't actually telling us that ASPM is
not supported.  Rather, it is telling us that we "must not enable OSPM
ASPM control".  That means we can't touch ASPM control at all, whether
to enable or disable.  We have to assume the BIOS itself is managing
ASPM, and if the OS tries to manage ASPM it will cause conflicts.

> Other option would be "add explicit blacklist for x60, disable ASPM
> there.".

We *could* consider something like this, since its scope is limited.
But since the problem also occurs with Windows, it's pretty likely
that there's a BIOS update to fix it.  I notice on the X60 support
page that there are several versions newer than what you're running.

Bjorn

^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-19 17:46               ` Bjorn Helgaas
@ 2013-07-24 15:19                 ` Wyborny, Carolyn
  2013-07-28 13:51                   ` Pavel Machek
  2013-07-31 23:53                 ` Bjorn Helgaas
  1 sibling, 1 reply; 36+ messages in thread
From: Wyborny, Carolyn @ 2013-07-24 15:19 UTC (permalink / raw)
  To: Bjorn Helgaas, Pavel Machek
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Kirsher,
	Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore, Donald C,
	Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck, Alexander H,
	Ronciak, John, Dave, Tushar N, e1000-devel

> -----Original Message-----
> From: Bjorn Helgaas [mailto:bhelgaas@google.com]
[..}
>
> We *could* consider something like this, since its scope is limited.
> But since the problem also occurs with Windows, it's pretty likely that there's a
> BIOS update to fix it.  I notice on the X60 support page that there are several
> versions newer than what you're running.
> 
> Bjorn

I believe that some BIOS don't allow user control on this feature, thus we end up unable to disable it from driverspace or from userspace, with the method we use today in this scenario.

I have a patch almost ready that attempts to disable using the pci_disable_link_state() call but then checks again to see if its still enabled and if not, then changes the pci config space on the devices on either side of the pcie link.  I plan to send it to this list for Pavel's testing as soon as I have it finished, at worst end of week.

Thanks,

Carolyn

Carolyn Wyborny 
Linux Development 
Networking Division 
Intel Corporation 



^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-24 15:19                 ` Wyborny, Carolyn
@ 2013-07-28 13:51                   ` Pavel Machek
  2013-08-01 14:55                     ` Wyborny, Carolyn
  2013-08-01 15:55                     ` Wyborny, Carolyn
  0 siblings, 2 replies; 36+ messages in thread
From: Pavel Machek @ 2013-07-28 13:51 UTC (permalink / raw)
  To: Wyborny, Carolyn
  Cc: Bjorn Helgaas, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel

On Wed 2013-07-24 15:19:55, Wyborny, Carolyn wrote:
> > -----Original Message-----
> > From: Bjorn Helgaas [mailto:bhelgaas@google.com]
> [..}
> >
> > We *could* consider something like this, since its scope is limited.
> > But since the problem also occurs with Windows, it's pretty likely that there's a
> > BIOS update to fix it.  I notice on the X60 support page that there are several
> > versions newer than what you're running.
> > 
> > Bjorn
> 
> I believe that some BIOS don't allow user control on this feature, thus we end up unable to disable it from driverspace or from userspace, with the method we use today in this scenario.
> 
> I have a patch almost ready that attempts to disable using the pci_disable_link_state() call but then checks again to see if its still enabled and if not, then changes the pci config space on the devices on either side of the pcie link.  I plan to send it to this list for Pavel's testing as soon as I have it finished, at worst end of week.
> 

If there's patch, I'll gladly try it :-). Thanks,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-19 17:46               ` Bjorn Helgaas
  2013-07-24 15:19                 ` Wyborny, Carolyn
@ 2013-07-31 23:53                 ` Bjorn Helgaas
  2013-08-01 14:57                   ` Wyborny, Carolyn
  2013-08-01 20:00                   ` Pavel Machek
  1 sibling, 2 replies; 36+ messages in thread
From: Bjorn Helgaas @ 2013-07-31 23:53 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

On Fri, Jul 19, 2013 at 11:46 AM, Bjorn Helgaas <bhelgaas@google.com> wrote:

> Just to make sure I understand you correctly: I think you are saying
> that the NIC has the same problem under Windows.

Can you confirm or deny that the same problem occurs with Windows?

> But since the problem also occurs with Windows, it's pretty likely
> that there's a BIOS update to fix it.  I notice on the X60 support
> page that there are several versions newer than what you're running.

Do you have any interest in trying a newer BIOS to see if it's fixed
there?  If not, I understand; BIOS updates are a hassle at best.
You're running BIOS 2.14, and it looks like the current BIOS for an
X60 1709 7HU is 2.19 (from http://support.lenovo.com).

Carolyn's patch will likely work, at least most of the time, but I
think there's a small possibility that it could cause a conflict
between the BIOS and the OS over ASPM control, so I'm not 100% in
support of that approach.  A conflict may not happen on your machine,
and not on my machine, but it may happen somewhere, and if it does
happen, it's likely to be rare and difficult to debug.

Bjorn

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-10 19:57           ` Bjorn Helgaas
                               ` (2 preceding siblings ...)
  2013-07-12 11:11             ` Pavel Machek
@ 2013-08-01  6:19             ` Jeff Kirsher
  3 siblings, 0 replies; 36+ messages in thread
From: Jeff Kirsher @ 2013-08-01  6:19 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Pavel Machek, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Jesse Brandeburg, Bruce Allan, e1000-devel

[-- Attachment #1: Type: text/plain, Size: 4353 bytes --]

On Wed, 2013-07-10 at 13:57 -0600, Bjorn Helgaas wrote:
> [+cc Jeff, Jesse, et al, e1000-devel]
> 
> Holy cow, you guys have a lot of folks listed in MAINTAINERS for Intel
> drivers :)  This is an ASPM question, if that helps narrow down the
> folks interested.

Bruce Allan is the e1000e maintainer, I have trimmed down the
recipients.  If you simply add e1000-devel mailing list, that will get
to all of us and we can respond accordingly.

I need to put together a patch to remove PJ because he is no longer in
our group.

> 
> On Wed, Jul 10, 2013 at 7:29 AM, Pavel Machek <pavel@ucw.cz> wrote:
> > Hi!
> >
> >> >> But:
> >> >> 1) it should not list unavailable options
> >> >>
> >> >> 2) operation not permitted seems like wrong error code for
> >> >> operation not supported.
> >> >
> >> > So I forcibly enabled ASPM, and now ping latencies are in normal
> >> > range... no matter how I set
> >> > /sys/module/pcie_aspm/parameters/policy. Strange.
> >> >
> >> > Any ideas what correct solution is?
> >> >                                                                         Pavel
> >> > Signed-off-by: Pavel Machek <pavel@ucw.cz>
> >> > (but don't apply)
> > ...
> >> > diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
> >> > index e4b1fb2..9a1b63e 100644
> >> > --- a/drivers/pci/pci-acpi.c
> >> > +++ b/drivers/pci/pci-acpi.c
> >> > @@ -382,7 +382,7 @@ static int __init acpi_pci_init(void)
> >> >
> >> >         if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
> >> >                 printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
> >> > -               pcie_no_aspm();
> >> > +//             pcie_no_aspm();
> >> >         }
> >> >
> >> >         ret = register_acpi_bus_type(&acpi_pci_bus);
> >>
> >> Hi Pavel,
> >>
> >> Interesting.  Can you collect dmesg and "lspci -vvv" output for both
> >> cases (high ping latency and normal ping latency)?
> >
> > Will do. Results are in attachment (200KB...)
> >
> >> Also, how much
> >> difference does this make in ping latency?
> >
> > The ping latency goes from 100msec range to <2msec.
> >
> >> If ASPM is enabled for a
> >> device, e.g., your NIC, the link may be put in a low power state when
> >> the device is idle.  It takes time to exit that low power state, of
> >> course, but I would expect that time to be in the microsecond time and
> >> probably not observable via ping.
> >
> > I'd hope so. 100msec ping makes ssh unpleasant to use.
> 
> Pavel's ThinkPad X60 has two NICs: Intel 82573L and Intel PRO/Wireless
> 3945ABG.  I'm pretty sure the problem he's reporting is with the
> 82573L.  Ping times are bad (~100msec) when ASPM is enabled, as
> reported by lspci.
> 
> On Pavel's system, the FADT says we shouldn't enable OSPM control of
> ASPM (ACPI_FADT_NO_ASPM is set), so we set "aspm_disabled = 1".  One
> effect is that we don't blacklist the pre-1.1 82573L device, which I
> think results in it being left with the BIOS configuration, which
> apparently has ASPM enabled.  (Pavel, could you confirm the BIOS
> config, e.g., with "pci=earlydump"?)
> 
> e1000e claims to disable ASPM, but because aspm_disabled is set, the
> driver's call to pci_disable_link_state_locked() actually does nothing
> [1].
> 
> I experimented [2] with Windows and found that when a driver requests
> PciASPMOptOut, Windows will not touch ASPM config if the _OSC method
> fails, i.e., the BIOS declines to grant ASPM control to the OS.
> However, I do not know if Windows similarly ignores PciASPMOptOut when
> the FADT ACPI_FADT_NO_ASPM bit is set.
> 
> The PCI core has failed spectacularly at providing useful ASPM
> interfaces.  Do you Intel folks have any suggestions about how to
> resolve this?  I assume that the Windows driver for the 82573L must
> disable ASPM somehow, even though ACPI_FADT_NO_ASPM is set.  Does it
> just use brute-force, as in the version of __e1000e_disable_aspm()
> that's used when CONFIG_PCIEASPM is not set?
> 
> Bjorn
> 
> [1] We just merged 2add0ec1, which adds a "can't disable ASPM; OS
> doesn't have ASPM control" message in this case, but I don't think
> Pavel's kernel has this change.  It doesn't change the behavior
> anyway.
> 
> [2] https://bugzilla.kernel.org/show_bug.cgi?id=57331



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-28 13:51                   ` Pavel Machek
@ 2013-08-01 14:55                     ` Wyborny, Carolyn
  2013-08-01 15:55                     ` Wyborny, Carolyn
  1 sibling, 0 replies; 36+ messages in thread
From: Wyborny, Carolyn @ 2013-08-01 14:55 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Bjorn Helgaas, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel

[-- Attachment #1: Type: text/plain, Size: 4792 bytes --]

[..] 
> If there's patch, I'll gladly try it :-). Thanks,
> 
								Pavel
Thanks Pavel,

It ended up taking more time than I thought.  The checking of whether ASPM is really enabled or not is, unfortunately, not as straightforward as I thought initially, so we ended up rewriting the function a bit.  In this patch we try to use the pci_disable_link_state_locked() call, but if it fails, we then write to pci config space of the device to disable it.

Please let me know if this actually disables the ASPM for your 82574 parts or not.  We can still continue the discussion on whether this is the best approach or not, or what else could be done.

This patch attempts to work around a problem found with some systems where the call to pci_diable_link_state_locked() fails.  As a result, ASPM is not, in fact, disabled.  Changing disable aspm code to check if state actually is disabled after the call and, if not, try another way to disable it.

Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
---

 drivers/net/ethernet/intel/e1000e/netdev.c |   86 ++++++++++++++++++++--------
 1 files changed, 60 insertions(+), 26 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index e6d2c0f..bc3025b 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -64,8 +64,6 @@ static int debug = -1;  module_param(debug, int, 0);  MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
 
-static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state);
-
 static const struct e1000_info *e1000_info_tbl[] = {
 	[board_82571]		= &e1000_82571_info,
 	[board_82572]		= &e1000_82572_info,
@@ -6019,38 +6017,74 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)
 	return 0;
 }
 
-#ifdef CONFIG_PCIEASPM
-static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
+/**
+ * e1000e_disable_aspm - Disable ASPM states
+ * @pdev: pointer to PCI device struct
+ * @state: bit-mask of ASPM states to disable
+ *
+ * Some devices *must* have certain ASPM states disabled per hardware errata.
+ **/
+static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
 {
+	struct pci_dev *parent = pdev->bus->self;
+	u16 aspm_dis_mask = 0;
+	u16 pdev_aspmc, parent_aspmc;
+
+	switch (state) {
+	case PCIE_LINK_STATE_L0S:
+	case PCIE_LINK_STATE_L0S + PCIE_LINK_STATE_L1:
+		aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L0S;
+		/* fall-through - can't have L1 without L0s */
+	case PCIE_LINK_STATE_L1:
+		aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L1;
+		break;
+	default:
+		return;
+	}
+
+	pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &pdev_aspmc);
+	pdev_aspmc &= PCI_EXP_LNKCTL_ASPMC;
+
+	if (parent) {
+		pcie_capability_read_word(parent, PCI_EXP_LNKCTL,
+					  &parent_aspmc);
+		parent_aspmc &= PCI_EXP_LNKCTL_ASPMC;
+	}
+
+	/* Nothing to do if the ASPM states to be disabled already are */
+	if (!(pdev_aspmc & aspm_dis_mask) &&
+	    (!parent || !(parent_aspmc & aspm_dis_mask)))
+		return;
+
+	dev_info(&pdev->dev, "Disabling ASPM %s %s\n",
+		 (aspm_dis_mask & pdev_aspmc & PCI_EXP_LNKCTL_ASPM_L0S) ?
+		 "L0s" : "",
+		 (aspm_dis_mask & pdev_aspmc & PCI_EXP_LNKCTL_ASPM_L1) ?
+		 "L1" : "");
+
+#ifdef CONFIG_PCIEASPM
 	pci_disable_link_state_locked(pdev, state); -} -#else -static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state) -{
-	u16 aspm_ctl = 0;
 
-	if (state & PCIE_LINK_STATE_L0S)
-		aspm_ctl |= PCI_EXP_LNKCTL_ASPM_L0S;
-	if (state & PCIE_LINK_STATE_L1)
-		aspm_ctl |= PCI_EXP_LNKCTL_ASPM_L1;
+	/* Double-check ASPM control.  If not disabled by the above, the
+	 * BIOS is preventing that from happening (or CONFIG_PCIEASPM is
+	 * not enabled); override by writing PCI config space directly.
+	 */
+	pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &pdev_aspmc);
+	pdev_aspmc &= PCI_EXP_LNKCTL_ASPMC;
+
+	if (!(aspm_dis_mask & pdev_aspmc))
+		return;
+	}
+#endif
 
 	/* Both device and parent should have the same ASPM setting.
 	 * Disable ASPM in downstream component first and then upstream.
 	 */
-	pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, aspm_ctl);
-
-	if (pdev->bus->self)
-		pcie_capability_clear_word(pdev->bus->self, PCI_EXP_LNKCTL,
-					   aspm_ctl);
-}
-#endif
-static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state) -{
-	dev_info(&pdev->dev, "Disabling ASPM %s %s\n",
-		 (state & PCIE_LINK_STATE_L0S) ? "L0s" : "",
-		 (state & PCIE_LINK_STATE_L1) ? "L1" : "");
+	pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, aspm_dis_mask);
 
-	__e1000e_disable_aspm(pdev, state);
+	if (parent)
+		pcie_capability_clear_word(parent, PCI_EXP_LNKCTL,
+					   aspm_dis_mask);
 }
 
 #ifdef CONFIG_PM


[-- Attachment #2: Type: message/rfc822, Size: 7062 bytes --]

From: "Wyborny, Carolyn" <carolyn.wyborny@intel.com>
To: "Wyborny, Carolyn" <carolyn.wyborny@intel.com>
Subject: [NET-NEXT PATCH] e1000e: Add code to check for failure of pci_disable_link_state call
Date: Thu, 1 Aug 2013 14:50:45 +0000
Message-ID: <20130801145006.26259.67384.stgit@localhost6.localdomain6>

This patch attempts to work around a problem found with some systems where the call to pci_diable_link_state_locked() fails.  As a result, ASPM is not, in fact, disabled.  Changing disable aspm code to check if state actually is disabled after the call and, if not, try another way to disable it.

Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
---

 drivers/net/ethernet/intel/e1000e/netdev.c |   86 ++++++++++++++++++++--------
 1 files changed, 60 insertions(+), 26 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index e6d2c0f..bc3025b 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -64,8 +64,6 @@ static int debug = -1;
 module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
 
-static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state);
-
 static const struct e1000_info *e1000_info_tbl[] = {
 	[board_82571]		= &e1000_82571_info,
 	[board_82572]		= &e1000_82572_info,
@@ -6019,38 +6017,74 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)
 	return 0;
 }
 
-#ifdef CONFIG_PCIEASPM
-static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
+/**
+ * e1000e_disable_aspm - Disable ASPM states
+ * @pdev: pointer to PCI device struct
+ * @state: bit-mask of ASPM states to disable
+ *
+ * Some devices *must* have certain ASPM states disabled per hardware errata.
+ **/
+static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
 {
+	struct pci_dev *parent = pdev->bus->self;
+	u16 aspm_dis_mask = 0;
+	u16 pdev_aspmc, parent_aspmc;
+
+	switch (state) {
+	case PCIE_LINK_STATE_L0S:
+	case PCIE_LINK_STATE_L0S + PCIE_LINK_STATE_L1:
+		aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L0S;
+		/* fall-through - can't have L1 without L0s */
+	case PCIE_LINK_STATE_L1:
+		aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L1;
+		break;
+	default:
+		return;
+	}
+
+	pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &pdev_aspmc);
+	pdev_aspmc &= PCI_EXP_LNKCTL_ASPMC;
+
+	if (parent) {
+		pcie_capability_read_word(parent, PCI_EXP_LNKCTL,
+					  &parent_aspmc);
+		parent_aspmc &= PCI_EXP_LNKCTL_ASPMC;
+	}
+
+	/* Nothing to do if the ASPM states to be disabled already are */
+	if (!(pdev_aspmc & aspm_dis_mask) &&
+	    (!parent || !(parent_aspmc & aspm_dis_mask)))
+		return;
+
+	dev_info(&pdev->dev, "Disabling ASPM %s %s\n",
+		 (aspm_dis_mask & pdev_aspmc & PCI_EXP_LNKCTL_ASPM_L0S) ?
+		 "L0s" : "",
+		 (aspm_dis_mask & pdev_aspmc & PCI_EXP_LNKCTL_ASPM_L1) ?
+		 "L1" : "");
+
+#ifdef CONFIG_PCIEASPM
 	pci_disable_link_state_locked(pdev, state);
-}
-#else
-static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
-{
-	u16 aspm_ctl = 0;
 
-	if (state & PCIE_LINK_STATE_L0S)
-		aspm_ctl |= PCI_EXP_LNKCTL_ASPM_L0S;
-	if (state & PCIE_LINK_STATE_L1)
-		aspm_ctl |= PCI_EXP_LNKCTL_ASPM_L1;
+	/* Double-check ASPM control.  If not disabled by the above, the
+	 * BIOS is preventing that from happening (or CONFIG_PCIEASPM is
+	 * not enabled); override by writing PCI config space directly.
+	 */
+	pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &pdev_aspmc);
+	pdev_aspmc &= PCI_EXP_LNKCTL_ASPMC;
+
+	if (!(aspm_dis_mask & pdev_aspmc))
+		return;
+	}
+#endif
 
 	/* Both device and parent should have the same ASPM setting.
 	 * Disable ASPM in downstream component first and then upstream.
 	 */
-	pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, aspm_ctl);
-
-	if (pdev->bus->self)
-		pcie_capability_clear_word(pdev->bus->self, PCI_EXP_LNKCTL,
-					   aspm_ctl);
-}
-#endif
-static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
-{
-	dev_info(&pdev->dev, "Disabling ASPM %s %s\n",
-		 (state & PCIE_LINK_STATE_L0S) ? "L0s" : "",
-		 (state & PCIE_LINK_STATE_L1) ? "L1" : "");
+	pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, aspm_dis_mask);
 
-	__e1000e_disable_aspm(pdev, state);
+	if (parent)
+		pcie_capability_clear_word(parent, PCI_EXP_LNKCTL,
+					   aspm_dis_mask);
 }
 
 #ifdef CONFIG_PM


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* RE: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-31 23:53                 ` Bjorn Helgaas
@ 2013-08-01 14:57                   ` Wyborny, Carolyn
  2013-08-01 19:33                     ` Bjorn Helgaas
  2013-08-01 20:00                   ` Pavel Machek
  1 sibling, 1 reply; 36+ messages in thread
From: Wyborny, Carolyn @ 2013-08-01 14:57 UTC (permalink / raw)
  To: Bjorn Helgaas, Pavel Machek
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Kirsher,
	Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore, Donald C,
	Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck, Alexander H,
	Ronciak, John, Dave, Tushar N, e1000-devel

> -----Original Message-----
> From: Bjorn Helgaas [mailto:bhelgaas@google.com]
> Sent: Wednesday, July 31, 2013 4:53 PM
> To: Pavel Machek
> Cc: Greg KH; kernel list; Joe Lawrence; Myron Stowe; Kirsher, Jeffrey T;
> Brandeburg, Jesse; Allan, Bruce W; Wyborny, Carolyn; Skidmore, Donald C;
> Rose, Gregory V; Waskiewicz Jr, Peter P; Duyck, Alexander H; Ronciak, John;
> Dave, Tushar N; e1000-devel@lists.sourceforge.net
> Subject: Re: /sys/module/pcie_aspm/parameters/policy not writable?
> 
> On Fri, Jul 19, 2013 at 11:46 AM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> 
> > Just to make sure I understand you correctly: I think you are saying
> > that the NIC has the same problem under Windows.
> 
> Can you confirm or deny that the same problem occurs with Windows?

In our testing here we saw the same problem with Windows.
> 
> > But since the problem also occurs with Windows, it's pretty likely
> > that there's a BIOS update to fix it.  I notice on the X60 support
> > page that there are several versions newer than what you're running.
> 
> Do you have any interest in trying a newer BIOS to see if it's fixed there?  If not, I
> understand; BIOS updates are a hassle at best.
> You're running BIOS 2.14, and it looks like the current BIOS for an
> X60 1709 7HU is 2.19 (from http://support.lenovo.com).
> 
> Carolyn's patch will likely work, at least most of the time, but I think there's a
> small possibility that it could cause a conflict between the BIOS and the OS over
> ASPM control, so I'm not 100% in support of that approach.  A conflict may not
> happen on your machine, and not on my machine, but it may happen
> somewhere, and if it does happen, it's likely to be rare and difficult to debug.
> 
I've proposed a patch for Pavel to test.  I understand your position, but do you have any other proposal?  We have a severe hw problem we are trying alleviate as best we can.  

Pavel, were you also able to try the updated BIOS to see if that resolved the issue without my patch?

Thanks,

Carolyn


^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-28 13:51                   ` Pavel Machek
  2013-08-01 14:55                     ` Wyborny, Carolyn
@ 2013-08-01 15:55                     ` Wyborny, Carolyn
  2013-08-02  0:39                       ` Pavel Machek
  1 sibling, 1 reply; 36+ messages in thread
From: Wyborny, Carolyn @ 2013-08-01 15:55 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Bjorn Helgaas, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel

[-- Attachment #1: Type: text/plain, Size: 5656 bytes --]

> -----Original Message-----
> From: Wyborny, Carolyn
> Sent: Thursday, August 01, 2013 7:56 AM
> To: 'Pavel Machek'
> Cc: Bjorn Helgaas; Greg KH; kernel list; Joe Lawrence; Myron Stowe; Kirsher,
> Jeffrey T; Brandeburg, Jesse; Allan, Bruce W; Skidmore, Donald C; Rose, Gregory
> V; Waskiewicz Jr, Peter P; Duyck, Alexander H; Ronciak, John; Dave, Tushar N;
> e1000-devel@lists.sourceforge.net
> Subject: RE: /sys/module/pcie_aspm/parameters/policy not writable?
> 
> [..]
> > If there's patch, I'll gladly try it :-). Thanks,
> >
> 								Pavel
> Thanks Pavel,

Minor fix.  Missed a bracket removal  Please use this  for your testing instead.

Thanks,

Carolyn
> 
> It ended up taking more time than I thought.  The checking of whether ASPM is
> really enabled or not is, unfortunately, not as straightforward as I thought
> initially, so we ended up rewriting the function a bit.  In this patch we try to use
> the pci_disable_link_state_locked() call, but if it fails, we then write to pci config
> space of the device to disable it.
> 
> Please let me know if this actually disables the ASPM for your 82574 parts or
> not.  We can still continue the discussion on whether this is the best approach or
> not, or what else could be done.
> 
> This patch attempts to work around a problem found with some systems where
> the call to pci_diable_link_state_locked() fails.  As a result, ASPM is not, in fact,
> disabled.  Changing disable aspm code to check if state actually is disabled after
> the call and, if not, try another way to disable it.
> 
> Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
> ---
> 
>  drivers/net/ethernet/intel/e1000e/netdev.c |   86 ++++++++++++++++++++------
> --
>  1 files changed, 60 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c
> b/drivers/net/ethernet/intel/e1000e/netdev.c
> index e6d2c0f..bc3025b 100644
> --- a/drivers/net/ethernet/intel/e1000e/netdev.c
> +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
> @@ -64,8 +64,6 @@ static int debug = -1;  module_param(debug, int, 0);
> MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
> 
> -static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state);
> -
>  static const struct e1000_info *e1000_info_tbl[] = {
>  	[board_82571]		= &e1000_82571_info,
>  	[board_82572]		= &e1000_82572_info,
> @@ -6019,38 +6017,74 @@ static int __e1000_shutdown(struct pci_dev *pdev,
> bool runtime)
>  	return 0;
>  }
> 
> -#ifdef CONFIG_PCIEASPM
> -static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
> +/**
> + * e1000e_disable_aspm - Disable ASPM states
> + * @pdev: pointer to PCI device struct
> + * @state: bit-mask of ASPM states to disable
> + *
> + * Some devices *must* have certain ASPM states disabled per hardware
> errata.
> + **/
> +static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
>  {
> +	struct pci_dev *parent = pdev->bus->self;
> +	u16 aspm_dis_mask = 0;
> +	u16 pdev_aspmc, parent_aspmc;
> +
> +	switch (state) {
> +	case PCIE_LINK_STATE_L0S:
> +	case PCIE_LINK_STATE_L0S + PCIE_LINK_STATE_L1:
> +		aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L0S;
> +		/* fall-through - can't have L1 without L0s */
> +	case PCIE_LINK_STATE_L1:
> +		aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L1;
> +		break;
> +	default:
> +		return;
> +	}
> +
> +	pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &pdev_aspmc);
> +	pdev_aspmc &= PCI_EXP_LNKCTL_ASPMC;
> +
> +	if (parent) {
> +		pcie_capability_read_word(parent, PCI_EXP_LNKCTL,
> +					  &parent_aspmc);
> +		parent_aspmc &= PCI_EXP_LNKCTL_ASPMC;
> +	}
> +
> +	/* Nothing to do if the ASPM states to be disabled already are */
> +	if (!(pdev_aspmc & aspm_dis_mask) &&
> +	    (!parent || !(parent_aspmc & aspm_dis_mask)))
> +		return;
> +
> +	dev_info(&pdev->dev, "Disabling ASPM %s %s\n",
> +		 (aspm_dis_mask & pdev_aspmc &
> PCI_EXP_LNKCTL_ASPM_L0S) ?
> +		 "L0s" : "",
> +		 (aspm_dis_mask & pdev_aspmc & PCI_EXP_LNKCTL_ASPM_L1)
> ?
> +		 "L1" : "");
> +
> +#ifdef CONFIG_PCIEASPM
>  	pci_disable_link_state_locked(pdev, state); -} -#else -static void
> __e1000e_disable_aspm(struct pci_dev *pdev, u16 state) -{
> -	u16 aspm_ctl = 0;
> 
> -	if (state & PCIE_LINK_STATE_L0S)
> -		aspm_ctl |= PCI_EXP_LNKCTL_ASPM_L0S;
> -	if (state & PCIE_LINK_STATE_L1)
> -		aspm_ctl |= PCI_EXP_LNKCTL_ASPM_L1;
> +	/* Double-check ASPM control.  If not disabled by the above, the
> +	 * BIOS is preventing that from happening (or CONFIG_PCIEASPM is
> +	 * not enabled); override by writing PCI config space directly.
> +	 */
> +	pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &pdev_aspmc);
> +	pdev_aspmc &= PCI_EXP_LNKCTL_ASPMC;
> +
> +	if (!(aspm_dis_mask & pdev_aspmc))
> +		return;
> +#endif
> 
>  	/* Both device and parent should have the same ASPM setting.
>  	 * Disable ASPM in downstream component first and then upstream.
>  	 */
> -	pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, aspm_ctl);
> -
> -	if (pdev->bus->self)
> -		pcie_capability_clear_word(pdev->bus->self, PCI_EXP_LNKCTL,
> -					   aspm_ctl);
> -}
> -#endif
> -static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state) -{
> -	dev_info(&pdev->dev, "Disabling ASPM %s %s\n",
> -		 (state & PCIE_LINK_STATE_L0S) ? "L0s" : "",
> -		 (state & PCIE_LINK_STATE_L1) ? "L1" : "");
> +	pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, aspm_dis_mask);
> 
> -	__e1000e_disable_aspm(pdev, state);
> +	if (parent)
> +		pcie_capability_clear_word(parent, PCI_EXP_LNKCTL,
> +					   aspm_dis_mask);
>  }
> 
>  #ifdef CONFIG_PM


[-- Attachment #2: Type: message/rfc822, Size: 7287 bytes --]

From: "Wyborny, Carolyn" <carolyn.wyborny@intel.com>
To: "Wyborny, Carolyn" <carolyn.wyborny@intel.com>
Subject: [NET-NEXT PATCH v2] e1000e: Add code to check for failure of pci_disable_link_state call
Date: Thu, 1 Aug 2013 15:54:10 +0000
Message-ID: <20130801155330.29064.92207.stgit@localhost6.localdomain6>

This patch attempts to work around a problem found with some systems where the call to pci_diable_link_state_locked() fails.  As a result, ASPM is not, in fact, disabled.  Changing disable aspm code to check if state actually is disabled after the call and, if not, try another way to disable it.

Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
---
v2 - fix mistaken extra bracket.

 drivers/net/ethernet/intel/e1000e/netdev.c |   85 +++++++++++++++++++---------
 1 files changed, 59 insertions(+), 26 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index e6d2c0f..c301468 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -64,8 +64,6 @@ static int debug = -1;
 module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
 
-static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state);
-
 static const struct e1000_info *e1000_info_tbl[] = {
 	[board_82571]		= &e1000_82571_info,
 	[board_82572]		= &e1000_82572_info,
@@ -6019,38 +6017,73 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)
 	return 0;
 }
 
-#ifdef CONFIG_PCIEASPM
-static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
+/**
+ * e1000e_disable_aspm - Disable ASPM states
+ * @pdev: pointer to PCI device struct
+ * @state: bit-mask of ASPM states to disable
+ *
+ * Some devices *must* have certain ASPM states disabled per hardware errata.
+ **/
+static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
 {
+	struct pci_dev *parent = pdev->bus->self;
+	u16 aspm_dis_mask = 0;
+	u16 pdev_aspmc, parent_aspmc;
+
+	switch (state) {
+	case PCIE_LINK_STATE_L0S:
+	case PCIE_LINK_STATE_L0S + PCIE_LINK_STATE_L1:
+		aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L0S;
+		/* fall-through - can't have L1 without L0s */
+	case PCIE_LINK_STATE_L1:
+		aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L1;
+		break;
+	default:
+		return;
+	}
+
+	pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &pdev_aspmc);
+	pdev_aspmc &= PCI_EXP_LNKCTL_ASPMC;
+
+	if (parent) {
+		pcie_capability_read_word(parent, PCI_EXP_LNKCTL,
+					  &parent_aspmc);
+		parent_aspmc &= PCI_EXP_LNKCTL_ASPMC;
+	}
+
+	/* Nothing to do if the ASPM states to be disabled already are */
+	if (!(pdev_aspmc & aspm_dis_mask) &&
+	    (!parent || !(parent_aspmc & aspm_dis_mask)))
+		return;
+
+	dev_info(&pdev->dev, "Disabling ASPM %s %s\n",
+		 (aspm_dis_mask & pdev_aspmc & PCI_EXP_LNKCTL_ASPM_L0S) ?
+		 "L0s" : "",
+		 (aspm_dis_mask & pdev_aspmc & PCI_EXP_LNKCTL_ASPM_L1) ?
+		 "L1" : "");
+
+#ifdef CONFIG_PCIEASPM
 	pci_disable_link_state_locked(pdev, state);
-}
-#else
-static void __e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
-{
-	u16 aspm_ctl = 0;
 
-	if (state & PCIE_LINK_STATE_L0S)
-		aspm_ctl |= PCI_EXP_LNKCTL_ASPM_L0S;
-	if (state & PCIE_LINK_STATE_L1)
-		aspm_ctl |= PCI_EXP_LNKCTL_ASPM_L1;
+	/* Double-check ASPM control.  If not disabled by the above, the
+	 * BIOS is preventing that from happening (or CONFIG_PCIEASPM is
+	 * not enabled); override by writing PCI config space directly.
+	 */
+	pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &pdev_aspmc);
+	pdev_aspmc &= PCI_EXP_LNKCTL_ASPMC;
+
+	if (!(aspm_dis_mask & pdev_aspmc))
+		return;
+#endif
 
 	/* Both device and parent should have the same ASPM setting.
 	 * Disable ASPM in downstream component first and then upstream.
 	 */
-	pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, aspm_ctl);
-
-	if (pdev->bus->self)
-		pcie_capability_clear_word(pdev->bus->self, PCI_EXP_LNKCTL,
-					   aspm_ctl);
-}
-#endif
-static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state)
-{
-	dev_info(&pdev->dev, "Disabling ASPM %s %s\n",
-		 (state & PCIE_LINK_STATE_L0S) ? "L0s" : "",
-		 (state & PCIE_LINK_STATE_L1) ? "L1" : "");
+	pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, aspm_dis_mask);
 
-	__e1000e_disable_aspm(pdev, state);
+	if (parent)
+		pcie_capability_clear_word(parent, PCI_EXP_LNKCTL,
+					   aspm_dis_mask);
 }
 
 #ifdef CONFIG_PM


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-08-01 14:57                   ` Wyborny, Carolyn
@ 2013-08-01 19:33                     ` Bjorn Helgaas
  0 siblings, 0 replies; 36+ messages in thread
From: Bjorn Helgaas @ 2013-08-01 19:33 UTC (permalink / raw)
  To: Wyborny, Carolyn
  Cc: Pavel Machek, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel

On Thu, Aug 1, 2013 at 8:57 AM, Wyborny, Carolyn
<carolyn.wyborny@intel.com> wrote:
>> -----Original Message-----
>> From: Bjorn Helgaas [mailto:bhelgaas@google.com]
>> Sent: Wednesday, July 31, 2013 4:53 PM
>> To: Pavel Machek
>> Cc: Greg KH; kernel list; Joe Lawrence; Myron Stowe; Kirsher, Jeffrey T;
>> Brandeburg, Jesse; Allan, Bruce W; Wyborny, Carolyn; Skidmore, Donald C;
>> Rose, Gregory V; Waskiewicz Jr, Peter P; Duyck, Alexander H; Ronciak, John;
>> Dave, Tushar N; e1000-devel@lists.sourceforge.net
>> Subject: Re: /sys/module/pcie_aspm/parameters/policy not writable?
>>
>> On Fri, Jul 19, 2013 at 11:46 AM, Bjorn Helgaas <bhelgaas@google.com> wrote:
>>
>> > Just to make sure I understand you correctly: I think you are saying
>> > that the NIC has the same problem under Windows.
>>
>> Can you confirm or deny that the same problem occurs with Windows?
>
> In our testing here we saw the same problem with Windows.
>>
>> > But since the problem also occurs with Windows, it's pretty likely
>> > that there's a BIOS update to fix it.  I notice on the X60 support
>> > page that there are several versions newer than what you're running.
>>
>> Do you have any interest in trying a newer BIOS to see if it's fixed there?  If not, I
>> understand; BIOS updates are a hassle at best.
>> You're running BIOS 2.14, and it looks like the current BIOS for an
>> X60 1709 7HU is 2.19 (from http://support.lenovo.com).
>>
>> Carolyn's patch will likely work, at least most of the time, but I think there's a
>> small possibility that it could cause a conflict between the BIOS and the OS over
>> ASPM control, so I'm not 100% in support of that approach.  A conflict may not
>> happen on your machine, and not on my machine, but it may happen
>> somewhere, and if it does happen, it's likely to be rare and difficult to debug.
>>
> I've proposed a patch for Pavel to test.  I understand your position, but do you have any other proposal?  We have a severe hw problem we are trying alleviate as best we can.

I think the safest route is to change the BIOS so it either leaves
ASPM disabled, or enables it but grants control to the OS.  It seems
way too risky in general for the BIOS to enable ASPM and tell the OS
"you can't change this."  There's no way the BIOS can know about
device errata that may make ASPM unsafe.

If the same problem happens on Windows, I can hardly believe the BIOS
would pass Windows logo testing or that customers would tolerate it,
so I would think vendors would step up and update the BIOS.  This is a
built-in device, for goodness sake!  It's not like this is some random
plug-in device that the vendor might not have tested.

At a minimum, I think it would be good if the driver logged a warning
about "ASPM enabled and device may not work; check for BIOS update" so
future issues would be easier to debug.  For the reason above, I'm not
comfortable forcing the disable in the PCI core.  It *might* make
sense to forcibly disable ASPM in the driver if you're willing to take
the risk of conflicts, but I think you should also log a warning in
that case so you have a clue if a conflict does turn up somewhere.

Bjorn

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-07-31 23:53                 ` Bjorn Helgaas
  2013-08-01 14:57                   ` Wyborny, Carolyn
@ 2013-08-01 20:00                   ` Pavel Machek
  2013-08-01 20:27                     ` Bjorn Helgaas
  1 sibling, 1 reply; 36+ messages in thread
From: Pavel Machek @ 2013-08-01 20:00 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

Hi!

> > But since the problem also occurs with Windows, it's pretty likely
> > that there's a BIOS update to fix it.  I notice on the X60 support
> > page that there are several versions newer than what you're running.
> 
> Do you have any interest in trying a newer BIOS to see if it's fixed
> there?  If not, I understand; BIOS updates are a hassle at best.
> You're running BIOS 2.14, and it looks like the current BIOS for an
> X60 1709 7HU is 2.19 (from http://support.lenovo.com).

I'm lost at the lenovo pages :-(. And frankly I'd prefer not to touch
the BIOS.

> Carolyn's patch will likely work, at least most of the time, but I
> think there's a small possibility that it could cause a conflict
> between the BIOS and the OS over ASPM control, so I'm not 100% in
> support of that approach.  A conflict may not happen on your
> machine,

Can we base it on DMI  whitelist?
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-08-01 20:00                   ` Pavel Machek
@ 2013-08-01 20:27                     ` Bjorn Helgaas
  2013-08-02  1:02                       ` Pavel Machek
  2013-08-02  2:13                       ` Pavel Machek
  0 siblings, 2 replies; 36+ messages in thread
From: Bjorn Helgaas @ 2013-08-01 20:27 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

On Thu, Aug 1, 2013 at 2:00 PM, Pavel Machek <pavel@ucw.cz> wrote:
> Hi!
>
>> > But since the problem also occurs with Windows, it's pretty likely
>> > that there's a BIOS update to fix it.  I notice on the X60 support
>> > page that there are several versions newer than what you're running.
>>
>> Do you have any interest in trying a newer BIOS to see if it's fixed
>> there?  If not, I understand; BIOS updates are a hassle at best.
>> You're running BIOS 2.14, and it looks like the current BIOS for an
>> X60 1709 7HU is 2.19 (from http://support.lenovo.com).
>
> I'm lost at the lenovo pages :-(. And frankly I'd prefer not to touch
> the BIOS.

I tried to provide a complete link, but the web site isn't amenable to
that.  I found it by selecting the "Drivers & Software" section,
entering "X60" as the machine type, selecting "ThinkPad X60 (1709)"
and going to the "BIOS" section.  I was surprised how easy it was :)

>> Carolyn's patch will likely work, at least most of the time, but I
>> think there's a small possibility that it could cause a conflict
>> between the BIOS and the OS over ASPM control, so I'm not 100% in
>> support of that approach.  A conflict may not happen on your
>> machine,
>
> Can we base it on DMI  whitelist?

I don't think we can know a priori whether a machine (even your
machine) is susceptible to a conflict.  But if Carolyn forcibly
disables it in the driver, she can structure that with a whitelist or
whatever she thinks is best.

Bjorn

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-08-01 15:55                     ` Wyborny, Carolyn
@ 2013-08-02  0:39                       ` Pavel Machek
  2013-08-02 14:58                         ` Wyborny, Carolyn
  0 siblings, 1 reply; 36+ messages in thread
From: Pavel Machek @ 2013-08-02  0:39 UTC (permalink / raw)
  To: Wyborny, Carolyn
  Cc: Bjorn Helgaas, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel

Hi!

> > > If there's patch, I'll gladly try it :-). Thanks,
> > >
> > 								Pavel
> > Thanks Pavel,
> 
> Minor fix.  Missed a bracket removal  Please use this  for your testing instead.
> 

Seems to work here. (I did testing on 3.11-rc, but that should not
change things.) Latencies are in expected range.

Tested-by: Pavel Machek <pavel@ucw.cz>

Thanks,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-08-01 20:27                     ` Bjorn Helgaas
@ 2013-08-02  1:02                       ` Pavel Machek
  2013-08-02  2:13                       ` Pavel Machek
  1 sibling, 0 replies; 36+ messages in thread
From: Pavel Machek @ 2013-08-02  1:02 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

Hi!

> >> > But since the problem also occurs with Windows, it's pretty likely
> >> > that there's a BIOS update to fix it.  I notice on the X60 support
> >> > page that there are several versions newer than what you're running.
> >>
> >> Do you have any interest in trying a newer BIOS to see if it's fixed
> >> there?  If not, I understand; BIOS updates are a hassle at best.
> >> You're running BIOS 2.14, and it looks like the current BIOS for an
> >> X60 1709 7HU is 2.19 (from http://support.lenovo.com).
> >
> > I'm lost at the lenovo pages :-(. And frankly I'd prefer not to touch
> > the BIOS.
> 
> I tried to provide a complete link, but the web site isn't amenable to
> that.  I found it by selecting the "Drivers & Software" section,
> entering "X60" as the machine type, selecting "ThinkPad X60 (1709)"
> and going to the "BIOS" section.  I was surprised how easy it was :)

Ok, got it, the web pages are horible.

> >> Carolyn's patch will likely work, at least most of the time, but I
> >> think there's a small possibility that it could cause a conflict
> >> between the BIOS and the OS over ASPM control, so I'm not 100% in
> >> support of that approach.  A conflict may not happen on your
> >> machine,
> >
> > Can we base it on DMI  whitelist?
> 
> I don't think we can know a priori whether a machine (even your
> machine) is susceptible to a conflict.  But if Carolyn forcibly
> disables it in the driver, she can structure that with a whitelist or
> whatever she thinks is best.

Well, there's only one way to find out: try it. I was running with the
"enable ASPM so we can disable it" one-liner for a while, and seen no
ill effects.

Anyway, if you don't hear from me again, it means that I have a brick
(and not a notebook) and am desperately trying to get replacement
X60. Will try to flash it in few minutes.
     	   	     	    		       	      		       Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-08-01 20:27                     ` Bjorn Helgaas
  2013-08-02  1:02                       ` Pavel Machek
@ 2013-08-02  2:13                       ` Pavel Machek
  2013-08-02 13:48                         ` Bjorn Helgaas
  1 sibling, 1 reply; 36+ messages in thread
From: Pavel Machek @ 2013-08-02  2:13 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

Hi!

> >> > But since the problem also occurs with Windows, it's pretty likely
> >> > that there's a BIOS update to fix it.  I notice on the X60 support
> >> > page that there are several versions newer than what you're running.
> >>
> >> Do you have any interest in trying a newer BIOS to see if it's fixed
> >> there?  If not, I understand; BIOS updates are a hassle at best.
> >> You're running BIOS 2.14, and it looks like the current BIOS for an
> >> X60 1709 7HU is 2.19 (from http://support.lenovo.com).
> >
> > I'm lost at the lenovo pages :-(. And frankly I'd prefer not to touch
> > the BIOS.
> 
> I tried to provide a complete link, but the web site isn't amenable to
> that.  I found it by selecting the "Drivers & Software" section,
> entering "X60" as the machine type, selecting "ThinkPad X60 (1709)"
> and going to the "BIOS" section.  I was surprised how easy it was :)

Hmm. So I've update bios using 7buj28uc.iso . Reverted the patches and
yes, ping latencies are still bad:

pavel@amd:~$ ping 10.0.0.250
PING 10.0.0.250 (10.0.0.250) 56(84) bytes of data.
64 bytes from 10.0.0.250: icmp_req=1 ttl=127 time=1.05 ms
64 bytes from 10.0.0.250: icmp_req=2 ttl=127 time=0.820 ms
64 bytes from 10.0.0.250: icmp_req=3 ttl=127 time=73.5 ms
64 bytes from 10.0.0.250: icmp_req=4 ttl=127 time=7.41 ms
64 bytes from 10.0.0.250: icmp_req=5 ttl=127 time=5.25 ms
64 bytes from 10.0.0.250: icmp_req=6 ttl=127 time=1.16 ms
64 bytes from 10.0.0.250: icmp_req=7 ttl=127 time=36.3 ms
64 bytes from 10.0.0.250: icmp_req=8 ttl=127 time=1.64 ms

> >> Carolyn's patch will likely work, at least most of the time, but I
> >> think there's a small possibility that it could cause a conflict
> >> between the BIOS and the OS over ASPM control, so I'm not 100% in
> >> support of that approach.  A conflict may not happen on your
> >> machine,
> >
> > Can we base it on DMI  whitelist?
> 
> I don't think we can know a priori whether a machine (even your
> machine) is susceptible to a conflict.  But if Carolyn forcibly

We don't apriori now how broken machines are, true. There are 1000
ways BIOS can break things. And yes, it will be us breaking the specs
here. But "useful machine with OS breaking specs" is better than
"machine useless for ssh".

_If_ there's a conflict, we can try something else.

(Has someone really seen a conflict, or is it just theoretical thing?)

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-08-02  2:13                       ` Pavel Machek
@ 2013-08-02 13:48                         ` Bjorn Helgaas
  0 siblings, 0 replies; 36+ messages in thread
From: Bjorn Helgaas @ 2013-08-02 13:48 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Greg KH, kernel list, Joe Lawrence, Myron Stowe, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Tushar Dave, e1000-devel

On Thu, Aug 1, 2013 at 8:13 PM, Pavel Machek <pavel@ucw.cz> wrote:

> Hmm. So I've update bios using 7buj28uc.iso . Reverted the patches and
> yes, ping latencies are still bad:

Wow.  I can hardly believe how bad this is (assuming Windows has the
same problem).  Thanks a lot for checking this out.

>> >> Carolyn's patch will likely work, at least most of the time, but I
>> >> think there's a small possibility that it could cause a conflict
>> >> between the BIOS and the OS over ASPM control, so I'm not 100% in
>> >> support of that approach.  A conflict may not happen on your
>> >> machine,
>> >
>> > Can we base it on DMI  whitelist?
>>
>> I don't think we can know a priori whether a machine (even your
>> machine) is susceptible to a conflict.  But if Carolyn forcibly
>
> We don't apriori now how broken machines are, true. There are 1000
> ways BIOS can break things. And yes, it will be us breaking the specs
> here. But "useful machine with OS breaking specs" is better than
> "machine useless for ssh".
>
> _If_ there's a conflict, we can try something else.
>
> (Has someone really seen a conflict, or is it just theoretical thing?)

Completely theoretical, as far as I know.  I don't even know what a
conflict would look like.  Maybe some unexpected ASPM enable/disable
from SMM during suspend/resume or something.  Things like that would
likely go unnoticed anyway.

Bjorn

^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: /sys/module/pcie_aspm/parameters/policy not writable?
  2013-08-02  0:39                       ` Pavel Machek
@ 2013-08-02 14:58                         ` Wyborny, Carolyn
  0 siblings, 0 replies; 36+ messages in thread
From: Wyborny, Carolyn @ 2013-08-02 14:58 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Bjorn Helgaas, Greg KH, kernel list, Joe Lawrence, Myron Stowe,
	Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W, Skidmore,
	Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P, Duyck,
	Alexander H, Ronciak, John, Dave, Tushar N, e1000-devel



> -----Original Message-----
> From: Pavel Machek [mailto:pavel@ucw.cz]
> Sent: Thursday, August 01, 2013 5:40 PM
> To: Wyborny, Carolyn
> Cc: Bjorn Helgaas; Greg KH; kernel list; Joe Lawrence; Myron Stowe; Kirsher,
> Jeffrey T; Brandeburg, Jesse; Allan, Bruce W; Skidmore, Donald C; Rose, Gregory
> V; Waskiewicz Jr, Peter P; Duyck, Alexander H; Ronciak, John; Dave, Tushar N;
> e1000-devel@lists.sourceforge.net
> Subject: Re: /sys/module/pcie_aspm/parameters/policy not writable?
> 
> Hi!
> 
> > > > If there's patch, I'll gladly try it :-). Thanks,
> > > >
> > > 								Pavel
> > > Thanks Pavel,
> >
> > Minor fix.  Missed a bracket removal  Please use this  for your testing instead.
> >
> 
> Seems to work here. (I did testing on 3.11-rc, but that should not change things.)
> Latencies are in expected range.
> 
> Tested-by: Pavel Machek <pavel@ucw.cz>

Thanks Pavel,

I'll submit a version of this to our internal queue.

Carolyn

^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2013-08-02 14:59 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-09  1:26 /sys/module/pcie_aspm/parameters/policy not writable? Pavel Machek
2013-07-09  4:13 ` Greg KH
2013-07-09  9:14   ` Pavel Machek
2013-07-09  9:49   ` Pavel Machek
2013-07-09 10:10     ` Pavel Machek
2013-07-09 16:25       ` Bjorn Helgaas
2013-07-10 13:29         ` Pavel Machek
2013-07-10 19:57           ` Bjorn Helgaas
2013-07-10 22:21             ` Wyborny, Carolyn
2013-07-10 22:57               ` Bjorn Helgaas
2013-07-10 22:57                 ` Bjorn Helgaas
2013-07-11 17:45                 ` Wyborny, Carolyn
2013-07-11 17:45                   ` Wyborny, Carolyn
2013-07-12 11:52                 ` Pavel Machek
2013-07-12 11:52                   ` Pavel Machek
2013-07-12 11:03             ` Pavel Machek
2013-07-12 11:11             ` Pavel Machek
2013-07-19 17:46               ` Bjorn Helgaas
2013-07-24 15:19                 ` Wyborny, Carolyn
2013-07-28 13:51                   ` Pavel Machek
2013-08-01 14:55                     ` Wyborny, Carolyn
2013-08-01 15:55                     ` Wyborny, Carolyn
2013-08-02  0:39                       ` Pavel Machek
2013-08-02 14:58                         ` Wyborny, Carolyn
2013-07-31 23:53                 ` Bjorn Helgaas
2013-08-01 14:57                   ` Wyborny, Carolyn
2013-08-01 19:33                     ` Bjorn Helgaas
2013-08-01 20:00                   ` Pavel Machek
2013-08-01 20:27                     ` Bjorn Helgaas
2013-08-02  1:02                       ` Pavel Machek
2013-08-02  2:13                       ` Pavel Machek
2013-08-02 13:48                         ` Bjorn Helgaas
2013-08-01  6:19             ` Jeff Kirsher
2013-07-09 16:37     ` Greg KH
2013-07-09 17:15       ` Pavel Machek
2013-07-10  4:24     ` Robert Hancock

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.