Message ID | 20190730125157.884-1-andrew.murray@arm.com (mailing list archive) |
---|---|
Headers | show |
Series | coresight: etm4x: save/restore ETMv4 context across CPU low power states | expand |
Hi Andrew, On Tue, Jul 30, 2019 at 01:51:51PM +0100, Andrew Murray wrote: > Some hardware will ignore bit TRCPDCR.PU which is used to signal > to hardware that power should not be removed from the trace unit. > Let's mitigate against this by conditionally saving and restoring > the trace unit state when the CPU enters low power states. > > This patchset introduces a firmware property named > 'arm,coresight-needs-save-restore' - when this is present the > hardware state will be conditionally saved and restored. > > A module parameter 'pm_save_enable' is also introduced which can > be configured to override the firmware property. > > The hardware state is only ever saved and restored when a self-hosted > coresight is in use. > > Changes since v3: > > - Only save/restore when self-hosted is being used and detect this > without relying on the coresight registers (which may not be > available) > > - Only allocate memory for etmv4_save_state at probe time when > configuration indicates it may be used > > - Set pm_save_enable param to 0444 such that it is static after > boot > > - Save/restore TRCPDCR > > - Add missing comments to struct etm4_drvdata documentation > > - Rebased onto coresight/next (8f1f9857) > > Changes since v2: > > - Move the PM notifier block from drvdata to file static > > - Add section names to document references > > - Add additional information to commit messages > > - Remove trcdvcvr and trcdvcmr from saved state and add a comment to > describe why > > - Ensure TRCPDCR_PU is set after restore and add a comment to explain > why we bother toggling TRCPDCR_PU on save/restore > > - Reword the pm_save_enable options and add comments > > - Miscellaneous style changes > > - Move device tree binding documentation to its own patch > > Changes since v1: > > - Rebased onto coresight/next > > - Correcly pass bit number rather than BIT macro to coresight_timeout > > - Abort saving state if a timeout occurs > > - Fix completely broken pm_notify handling and unregister handler on error > > - Use state_needs_restore to ensure state is restored only once > > - Add module parameter description to existing boot_enable parameter > and use module_param instead of module_param_named > > - Add firmware bindings for coresight-needs-save-restore > > - Rename 'disable_pm_save' to 'pm_save_enable' which allows for > disabled, enabled or firmware > > - Update comment on etm4_os_lock, it incorrectly indicated that > the code unlocks the trace registers > > - Add comments to explain use of OS lock during save/restore > > - Fix incorrect error description whilst waiting for PM stable > > - Add WARN_ON_ONCE when cpu isn't as expected during save/restore > > - Various updates to commit messages > > > Andrew Murray (6): > coresight: etm4x: remove superfluous setting of os_unlock > coresight: etm4x: use explicit barriers on enable/disable > coresight: etm4x: use module_param instead of module_param_named > coresight: etm4x: improve clarity of etm4_os_unlock comment I have picked up the first 4 patches, so no need to send them with your next revision. Note that for patch 2/6 I have removed the "stable" tag as the patch doesn't apply to any of the stable tree. Since I have another one like that in my tree I will rework both patches and send them directly to Greg for stable consideration. Thanks, Mathieu > coresight: etm4x: save/restore state across CPU low power states > dt-bindings: arm: coresight: Add support for > coresight-needs-save-restore > > .../devicetree/bindings/arm/coresight.txt | 3 + > drivers/hwtracing/coresight/coresight-etm4x.c | 346 +++++++++++++++++- > drivers/hwtracing/coresight/coresight-etm4x.h | 64 ++++ > 3 files changed, 406 insertions(+), 7 deletions(-) > > -- > 2.21.0 >
On Tue, Jul 30, 2019 at 02:12:20PM -0600, Mathieu Poirier wrote: > Hi Andrew, > > On Tue, Jul 30, 2019 at 01:51:51PM +0100, Andrew Murray wrote: > > Some hardware will ignore bit TRCPDCR.PU which is used to signal > > to hardware that power should not be removed from the trace unit. > > Let's mitigate against this by conditionally saving and restoring > > the trace unit state when the CPU enters low power states. > > > > This patchset introduces a firmware property named > > 'arm,coresight-needs-save-restore' - when this is present the > > hardware state will be conditionally saved and restored. > > > > A module parameter 'pm_save_enable' is also introduced which can > > be configured to override the firmware property. > > > > The hardware state is only ever saved and restored when a self-hosted > > coresight is in use. > > > > Changes since v3: > > > > - Only save/restore when self-hosted is being used and detect this > > without relying on the coresight registers (which may not be > > available) > > > > - Only allocate memory for etmv4_save_state at probe time when > > configuration indicates it may be used > > > > - Set pm_save_enable param to 0444 such that it is static after > > boot > > > > - Save/restore TRCPDCR > > > > - Add missing comments to struct etm4_drvdata documentation > > > > - Rebased onto coresight/next (8f1f9857) > > > > Changes since v2: > > > > - Move the PM notifier block from drvdata to file static > > > > - Add section names to document references > > > > - Add additional information to commit messages > > > > - Remove trcdvcvr and trcdvcmr from saved state and add a comment to > > describe why > > > > - Ensure TRCPDCR_PU is set after restore and add a comment to explain > > why we bother toggling TRCPDCR_PU on save/restore > > > > - Reword the pm_save_enable options and add comments > > > > - Miscellaneous style changes > > > > - Move device tree binding documentation to its own patch > > > > Changes since v1: > > > > - Rebased onto coresight/next > > > > - Correcly pass bit number rather than BIT macro to coresight_timeout > > > > - Abort saving state if a timeout occurs > > > > - Fix completely broken pm_notify handling and unregister handler on error > > > > - Use state_needs_restore to ensure state is restored only once > > > > - Add module parameter description to existing boot_enable parameter > > and use module_param instead of module_param_named > > > > - Add firmware bindings for coresight-needs-save-restore > > > > - Rename 'disable_pm_save' to 'pm_save_enable' which allows for > > disabled, enabled or firmware > > > > - Update comment on etm4_os_lock, it incorrectly indicated that > > the code unlocks the trace registers > > > > - Add comments to explain use of OS lock during save/restore > > > > - Fix incorrect error description whilst waiting for PM stable > > > > - Add WARN_ON_ONCE when cpu isn't as expected during save/restore > > > > - Various updates to commit messages > > > > > > Andrew Murray (6): > > coresight: etm4x: remove superfluous setting of os_unlock > > coresight: etm4x: use explicit barriers on enable/disable > > coresight: etm4x: use module_param instead of module_param_named > > coresight: etm4x: improve clarity of etm4_os_unlock comment > > I have picked up the first 4 patches, so no need to send them with your next > revision. Note that for patch 2/6 I have removed the "stable" tag as the patch > doesn't apply to any of the stable tree. Since I have another one like that in > my tree I will rework both patches and send them directly to Greg for stable > consideration. Ah many thanks for this. Andrew Murray > > Thanks, > Mathieu > > > > coresight: etm4x: save/restore state across CPU low power states > > dt-bindings: arm: coresight: Add support for > > coresight-needs-save-restore > > > > .../devicetree/bindings/arm/coresight.txt | 3 + > > drivers/hwtracing/coresight/coresight-etm4x.c | 346 +++++++++++++++++- > > drivers/hwtracing/coresight/coresight-etm4x.h | 64 ++++ > > 3 files changed, 406 insertions(+), 7 deletions(-) > > > > -- > > 2.21.0 > >