DescriptionDisable rendering when suspending on chrome os
New chrome os devices are going to make more frequent use of the dark
resume state - a hybrid power state where several hardware devices are
left off to save power. One of these is the display. Unfortunately
this creates issues with chrome, which believes that the display is on
and attempts to render things to the screen. These calls fail in the
kernel and trigger a logical memory leak in the error handling code in
the GPU process.
In order to make this interaction more robust, have chrome stop sending
rendering requests at suspend time and restart them at resume time.
There are a few things to watch out for here. If the user has requested
that the screen be locked at suspend time then rendering cannot be
stopped until the screen locker is visible. Otherwise the contents of
the user's screen will be visible at resume time, which is a security
issue. Additionally, the suspend must be delayed until any pending
requests have been handled by the GPU process to prevent a race where
the system suspends before all requests have been processed and they end
up being processed when the system later enters dark resume, triggering
the memory leak mentioned in the previous paragraph.
BUG=chrome-os-partner:35699
Committed: https://crrev.com/40e4cd8a507016a99740011899ca4b9779cd9eef
Cr-Commit-Position: refs/heads/master@{#316946}
Patch Set 1 #Patch Set 2 : clean up #
Total comments: 10
Patch Set 3 : Delay until lock animations are complete #Patch Set 4 : Clean up comments #
Total comments: 2
Patch Set 5 : fix docstrings #Patch Set 6 : Make PowerEventObserver getter cros-specific #Messages
Total messages: 30 (9 generated)
|