lp:~sforshee/powerd/fix-display-timing
- Get this branch:
- bzr branch lp:~sforshee/powerd/fix-display-timing
Branch merges
- Ricardo Salveti (community): Approve
- PS Jenkins bot: Approve (continuous-integration)
- Kevin DuBois (community): Approve (testing)
-
Diff: 350 lines (+139/-65)5 files modifiedCMakeLists.txt (+3/-0)
libsuspend/earlysuspend.c (+98/-3)
src/display.c (+9/-60)
src/power-request.c (+27/-2)
src/powerd-internal.h (+2/-0)
Related bugs
Related blueprints
Branch information
Recent revisions
- 107. By Seth Forshee
-
libsuspend: Fix earlysuspend error checking on writes
earlysuspend_
{enter, exit}() could wait on the framebuffer state
to change in some cases when the write to /sys/power/state
failed. Erroneously waiting on the framebuffer state to change
could potentially block mainloop execution indefinitely, so be
conservative about doing so. Only wait if exactly the expected
number of bytes is written. - 106. By Seth Forshee
-
display: Don't monitor wait_for_
fb_{sleep, wake} directly Now that powerd's entering and exiting of suspend are synchronous
wrt the kernel's suspending and resuming of the display device,
the display code no longer needs to monitor these files directly.
Instead it can just ask whether or not suspend is currently
active and expect the display device state to match the system
state. Since suspend/resume and display on/off all happen on the
mainloop, this is race-free.The current interfaces are insufficient for what the display code
needs to do here, as they reflect the power state visible to the
system and this doesn't always match the actual suspend state.
Add a new interface, powerd_suspend_ active( ), to allow the
display code to inquire directly about the suspend state. Use
this new interface instead of the framebuffer sleep/wake status,
and remove monitoring of wait_for_fb_{sleep, wake} in the display
code as it is no longer used.A callback into the display code is also needed to inform it of
transitioning out of suspend since the display device may be
suspended when a request comes in to turn on the display. Add
this callback, which schedules work on the main loop to power
on the display if needed, and call it after exiting suspend. - 105. By Seth Forshee
-
libsuspend: Make earlysuspend enter/exit with kernel early suspend processing
When writing to /sys/power/state with a kernel using the
earlysuspend implementation the kernel will queue up processing
for the request on a separate kernel thread. The work done here
can included suspending and resuming certain devices without
freezing userspace tasks.This is causing issues with the display handling on mako. The
display is one of the devices suspended and resumed while
userspace is active, and the kernel exports the status of the
device via the /sys/power/wait_for_ fb_{sleep, wake,status} files.
However, the early suspend / late resume processing is slow
enough that mashing on the power button quickly can cause powerd
to get ahead of the kernel suspend workqueue, causing us to turn
the display off and then back on _before_ the kernel has gotten
around to suspending the display device. The kernel reports that
the display device is awake, powerd tries to turn it on, but
then the kernel tries to suspend it. This leads to failed
requests to the display driver and sometims some sort of deadlock
situation (due to apparent bugs in the display driver).To avoid this, make entering and exiting suspend synchronous with
the kernel's internal suspend work. The only window we have into
this is via the wait_for_fb_* files. When the earlysuspend
implementation is detected a thread is launched to monitor the
status of these files and set an internal state variable. Any
request to enter/exit suspend will block until the framebuffer is
in the desired state, ensuring that at least the display device
has been suspended or resumed before returning to the caller.
Since entering/exiting resume and turning the display on/off are
all handled on the main loop this prevents any attempts to
modify the state of the display until the device has transitioned
to its new state. - 104. By Ricardo Salveti
-
Using pkg-config files from hybris, and depending on latest version
.Approved by Sergio Schvezov, PS Jenkins bot.
- 103. By PS Jenkins bot
-
Releasing 0.13+13.
10.20131010- 0ubuntu1 (revision 102 from lp:powerd). Approved by PS Jenkins bot.
- 102. By Ricardo Mendoza
-
Under Mir, only suspend if Mir is still alive; this is to prevent the GPU state and the display server expectations getting out of sync when starting up.
- 101. By PS Jenkins bot
-
Releasing 0.13+13.
10.20131009- 0ubuntu1 (revision 100 from lp:powerd). Approved by PS Jenkins bot.
- 100. By Ricardo Mendoza
-
Use power HAL to signal power subsystems to resume quickly as user interaction is expected. Fixes: https:/
/bugs.launchpad .net/bugs/ 1233257. Approved by Ricardo Salveti, PS Jenkins bot.
- 99. By PS Jenkins bot
-
Releasing 0.13+13.
10.20131007. 1-0ubuntu1 (revision 98 from lp:powerd). Approved by PS Jenkins bot.
- 98. By Seth Forshee
-
Don't reset the activity timer for touch events if the screen is of (LP: #1234743).
Approved by PS Jenkins bot, Matthew Fischer.
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)
- Stacked on:
- lp:powerd