diff mbox

Massive power regression going 3.4->3.5

Message ID 1343662024.4531.1.camel@dabdike.int.hansenpartnership.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

James Bottomley July 30, 2012, 3:27 p.m. UTC
On Mon, 2012-07-30 at 16:03 +0100, James Bottomley wrote:
> On Mon, 2012-07-30 at 10:38 -0400, Alan Stern wrote:
> > On Mon, 30 Jul 2012, James Bottomley wrote:
> > 
> > > On Sun, 2012-07-29 at 21:25 +0200, Rafael J. Wysocki wrote:
> > > > On Sunday, July 29, 2012, Rafael J. Wysocki wrote:
> > > > > On Sunday, July 29, 2012, James Bottomley wrote:
> > > > > > On Sat, 2012-07-28 at 22:29 +0200, Rafael J. Wysocki wrote:
> > > > > > > On Saturday, July 28, 2012, Rafael J. Wysocki wrote:
> > > > > > > > On Saturday, July 28, 2012, James Bottomley wrote:
> > > > > > > > > One of the great things about the 3.4 kernel was the massive increase in
> > > > > > > > > power savings on my x220i laptop.  With full PCI suspend, it could get
> > > > > > > > > down to 6.5W in idle with a dim screen, provided I used powertop 2.0 to
> > > > > > > > > activate all the tunings).  I just upgraded to 3.5 (the openSUSE
> > > > > > > > > tumbleweed kernel) and all the power savings are gone.  Now it's back to
> > > > > > > > > its previous behaviour of idle somewhere between 16-18W.
> > 
> > > I'm trying to bisect this, but I've got stuck around here:
> > > 
> > > git bisect bad 2f78d8e249973f1eeb88315e6444e616c60177ae
> > > git bisect good 28f3d717618156c0dcd2f497d791b578a7931d87
> > > 
> > > That's around the drm tree ... unfortunately that broke a lot of the
> > > basics of my i915 based system (compositing and resolution) as I step
> > > into it.
> > 
> > Have you tried comparing the /sys/devices/.../power/runtime_status 
> > contents under 3.4 and 3.5?  That might show which devices aren't 
> > getting suspended properly.
> 
> I can try .. there are rather a lot of them:
> 
> jejb@dabdike> find /sys/devices -name runtime_status|wc -l
> 569

Curiously, there's only 561 files in 3.5

Here's a diff of the sorted list on 3.4.6 against 3.5.  The same number
of devices are in the suspended state on each (17)

James

---



--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Alan Stern July 30, 2012, 3:55 p.m. UTC | #1
On Mon, 30 Jul 2012, James Bottomley wrote:

> > > > That's around the drm tree ... unfortunately that broke a lot of the
> > > > basics of my i915 based system (compositing and resolution) as I step
> > > > into it.
> > > 
> > > Have you tried comparing the /sys/devices/.../power/runtime_status 
> > > contents under 3.4 and 3.5?  That might show which devices aren't 
> > > getting suspended properly.
> > 
> > I can try .. there are rather a lot of them:
> > 
> > jejb@dabdike> find /sys/devices -name runtime_status|wc -l
> > 569
> 
> Curiously, there's only 561 files in 3.5
> 
> Here's a diff of the sorted list on 3.4.6 against 3.5.  The same number
> of devices are in the suspended state on each (17)
> 
> James
> 
> ---
> 
> --- /home/jejb/runtime_status_result.txt	2012-07-30 16:08:43.411283023 +0100
> +++ /home/jejb/runtime_status_result-3.5.txt	2012-07-30 16:23:03.838170836 +0100

In many cases it looks like the only difference is that the device 
numbering got changed slightly.  Like here:

> -/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-8/power/runtime_status
> +/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-6/power/runtime_status
>  unsupported

In some cases, the new kernel config simply doesn't include some of the 
old devices.  Like here:

> -/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/usb_device/usbdev1.3/power/runtime_status
> -unsupported

The usbdev things are class devices that are basically just aliases for 
the real ones.

And then there was a device added by the new kernel:

> +/sys/devices/virtual/watchdog/watchdog0/power/runtime_status
> +unsupported

These leaves a few devices missing from the new kernel.  I don't know 
what the implications are:

> -/sys/devices/pci0000:00/0000:00:02.0/i2c-6/power/runtime_status
> -unsupported
> -/sys/devices/pci0000:00/0000:00:02.0/i2c-7/power/runtime_status
> -unsupported

> -/sys/devices/platform/iTCO_wdt/power/runtime_status
> -unsupported

But since they say "unsupported", presumably they aren't relevant for 
runtime PM.

That accounts for everything.  So it looks like the difference may not
lie in the Runtime PM area.  It may be something (such as drm?)  that
implements its own powersaving mechanism.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
James Bottomley July 30, 2012, 3:57 p.m. UTC | #2
On Mon, 2012-07-30 at 11:55 -0400, Alan Stern wrote:
> On Mon, 30 Jul 2012, James Bottomley wrote:
> 
> > > > > That's around the drm tree ... unfortunately that broke a lot of the
> > > > > basics of my i915 based system (compositing and resolution) as I step
> > > > > into it.
> > > > 
> > > > Have you tried comparing the /sys/devices/.../power/runtime_status 
> > > > contents under 3.4 and 3.5?  That might show which devices aren't 
> > > > getting suspended properly.
> > > 
> > > I can try .. there are rather a lot of them:
> > > 
> > > jejb@dabdike> find /sys/devices -name runtime_status|wc -l
> > > 569
> > 
> > Curiously, there's only 561 files in 3.5
> > 
> > Here's a diff of the sorted list on 3.4.6 against 3.5.  The same number
> > of devices are in the suspended state on each (17)
> > 
> > James
> > 
> > ---
> > 
> > --- /home/jejb/runtime_status_result.txt	2012-07-30 16:08:43.411283023 +0100
> > +++ /home/jejb/runtime_status_result-3.5.txt	2012-07-30 16:23:03.838170836 +0100
> 
> In many cases it looks like the only difference is that the device 
> numbering got changed slightly.  Like here:
> 
> > -/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-8/power/runtime_status
> > +/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-6/power/runtime_status
> >  unsupported
> 
> In some cases, the new kernel config simply doesn't include some of the 
> old devices.  Like here:
> 
> > -/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/usb_device/usbdev1.3/power/runtime_status
> > -unsupported
> 
> The usbdev things are class devices that are basically just aliases for 
> the real ones.
> 
> And then there was a device added by the new kernel:
> 
> > +/sys/devices/virtual/watchdog/watchdog0/power/runtime_status
> > +unsupported
> 
> These leaves a few devices missing from the new kernel.  I don't know 
> what the implications are:
> 
> > -/sys/devices/pci0000:00/0000:00:02.0/i2c-6/power/runtime_status
> > -unsupported
> > -/sys/devices/pci0000:00/0000:00:02.0/i2c-7/power/runtime_status
> > -unsupported
> 
> > -/sys/devices/platform/iTCO_wdt/power/runtime_status
> > -unsupported
> 
> But since they say "unsupported", presumably they aren't relevant for 
> runtime PM.
> 
> That accounts for everything.  So it looks like the difference may not
> lie in the Runtime PM area.  It may be something (such as drm?)  that
> implements its own powersaving mechanism.

Yes, as I said in the thread: the bisect identifies the DRM tree, but I
can't fully bisect it because that tree steps back beyond the 3.4 power
savings changes.

James


--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

--- /home/jejb/runtime_status_result.txt	2012-07-30 16:08:43.411283023 +0100
+++ /home/jejb/runtime_status_result-3.5.txt	2012-07-30 16:23:03.838170836 +0100
@@ -224,15 +224,15 @@ 
 active
 /sys/devices/pci0000:00/0000:00:02.0/backlight/acpi_video0/power/runtime_status
 unsupported
-/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-8/power/runtime_status
+/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-6/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/power/runtime_status
 unsupported
-/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-2/i2c-9/power/runtime_status
+/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-2/i2c-7/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-2/power/runtime_status
 unsupported
-/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-3/i2c-10/power/runtime_status
+/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-3/i2c-8/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-3/power/runtime_status
 unsupported
@@ -266,10 +266,6 @@ 
 unsupported
 /sys/devices/pci0000:00/0000:00:02.0/i2c-5/power/runtime_status
 unsupported
-/sys/devices/pci0000:00/0000:00:02.0/i2c-6/power/runtime_status
-unsupported
-/sys/devices/pci0000:00/0000:00:02.0/i2c-7/power/runtime_status
-unsupported
 /sys/devices/pci0000:00/0000:00:02.0/power/runtime_status
 active
 /sys/devices/pci0000:00/0000:00:16.0/power/runtime_status
@@ -290,7 +286,7 @@ 
 suspended
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/bluetooth/hci0/power/runtime_status
 unsupported
-/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/bluetooth/hci0/rfkill2/power/runtime_status
+/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/bluetooth/hci0/rfkill1/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/ep_02/power/runtime_status
 unsupported
@@ -318,8 +314,6 @@ 
 unsupported
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/power/runtime_status
 suspended
-/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/usb_device/usbdev1.3/power/runtime_status
-unsupported
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/1-1.6:1.0/ep_81/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/1-1.6:1.0/input/input9/event9/power/runtime_status
@@ -336,20 +330,14 @@ 
 unsupported
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/power/runtime_status
 suspended
-/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/usb_device/usbdev1.4/power/runtime_status
-unsupported
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/ep_00/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/power/runtime_status
 suspended
-/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/usb_device/usbdev1.2/power/runtime_status
-unsupported
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/ep_00/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:1a.0/usb1/power/runtime_status
 suspended
-/sys/devices/pci0000:00/0000:00:1a.0/usb1/usb_device/usbdev1.1/power/runtime_status
-unsupported
 /sys/devices/pci0000:00/0000:00:1b.0/input/input10/event10/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:1b.0/input/input10/power/runtime_status
@@ -398,7 +386,7 @@ 
 active
 /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/power/runtime_status
 unsupported
-/sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/rfkill1/power/runtime_status
+/sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/rfkill2/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/phy0-led/power/runtime_status
 unsupported
@@ -438,14 +426,10 @@ 
 unsupported
 /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/power/runtime_status
 suspended
-/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/usb_device/usbdev2.2/power/runtime_status
-unsupported
 /sys/devices/pci0000:00/0000:00:1d.0/usb2/ep_00/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:1d.0/usb2/power/runtime_status
 suspended
-/sys/devices/pci0000:00/0000:00:1d.0/usb2/usb_device/usbdev2.1/power/runtime_status
-unsupported
 /sys/devices/pci0000:00/0000:00:1f.0/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:1f.2/ata1/ata_port/ata1/power/runtime_status
@@ -568,7 +552,7 @@ 
 active
 /sys/devices/pci0000:00/0000:00:1f.2/power/runtime_status
 active
-/sys/devices/pci0000:00/0000:00:1f.3/i2c-11/power/runtime_status
+/sys/devices/pci0000:00/0000:00:1f.3/i2c-9/power/runtime_status
 unsupported
 /sys/devices/pci0000:00/0000:00:1f.3/power/runtime_status
 active
@@ -616,13 +600,11 @@ 
 unsupported
 /sys/devices/platform/i8042/serio1/serio2/power/runtime_status
 unsupported
-/sys/devices/platform/iTCO_wdt/power/runtime_status
-unsupported
 /sys/devices/platform/microcode/power/runtime_status
 unsupported
-/sys/devices/platform/pcspkr/input/input8/event8/power/runtime_status
+/sys/devices/platform/pcspkr/input/input7/event7/power/runtime_status
 unsupported
-/sys/devices/platform/pcspkr/input/input8/power/runtime_status
+/sys/devices/platform/pcspkr/input/input7/power/runtime_status
 unsupported
 /sys/devices/platform/pcspkr/power/runtime_status
 unsupported
@@ -648,9 +630,9 @@ 
 unsupported
 /sys/devices/platform/serial8250/tty/ttyS7/power/runtime_status
 unsupported
-/sys/devices/platform/thinkpad_acpi/input/input7/event7/power/runtime_status
+/sys/devices/platform/thinkpad_acpi/input/input8/event8/power/runtime_status
 unsupported
-/sys/devices/platform/thinkpad_acpi/input/input7/power/runtime_status
+/sys/devices/platform/thinkpad_acpi/input/input8/power/runtime_status
 unsupported
 /sys/devices/platform/thinkpad_acpi/leds/tpacpi::power/power/runtime_status
 unsupported
@@ -1114,6 +1096,8 @@ 
 unsupported
 /sys/devices/virtual/vtconsole/vtcon1/power/runtime_status
 unsupported
+/sys/devices/virtual/watchdog/watchdog0/power/runtime_status
+unsupported
 /sys/devices/virtual/wmi/05901221-D566-11D1-B2F0-00A0C9062910/power/runtime_status
 unsupported
 /sys/devices/virtual/wmi/2651D9FD-911C-4B69-B94E-D0DED5963BD7/power/runtime_status