FreeBSD Developer Summit: Clock and Power Domains


This is planned as a 'plan and hack' group, to finally work on clock and power domains for FreeBSD. Since ARM, PowerPC, and probably even newer Intel SoCs can have multiple clock and power managers, which may not even be a given device's bus parent, we need a way to handle each one.

The purpose of this working group is to design a power management framework that can be used not only for suspend/resume, but also for runtime dynamic power management.


By the end of this, we should have an API at least started, with some code examples that can be continued beyond the working group session. My ultimate goal of this is to get it into FreeBSD 11 before the release, so from the working group we'll have about 9 months to get it ready.



Topic Description


What we have now for power management


Where we want to go (long term)


Incremental improvements that can be made now


Let's start hacking


In order to attend you need register for the developer summit as well as by email for the session and be confirmed by the working group organizer. Follow the guidelines described on the main page or what you received by email. For questions or if in doubt ask

Please do NOT add yourself here. Your name will appear automatically once you have received the confirmation email. You need to put your name on the general developer summit attendees list though.


Username / Affiliation

Topics of Interest










Session chair



Here to learn new things



(Add a list or attach slides detailing the achieved results here.) Introduction

· Very little support currently in FreeBSD for power and clock management


· Create an API prior to FreeBSD 11 with advanced functionality.

· Both Andy Wafaa and Eric le Blan described the use in both BIG and LITTLE platforms

· Measurement should be relative (such as performance per watt) to achieve Eco-efficiency (GreenIT) standards (which are not yet well defined) Objectives of the API

· The notes of the previous BSDCan meeting were discussed, including the use of Dtrace

· Core design should include:

Use Cases

· Several use cases were looked at, and all pointed to the management of “resources”

· From the use cases, two groups of resources were identified for both clock and power management.

· For the ‘normal resources’, clock and power management include:

Work Process

· It was agreed to carry incremental builds of the API, with added functionality at each build.

· The project is forward looking; past implementation such as APM are not relevant.

First API

· The first API implements a cleaner abstraction, with the implementation of multiplanes against interfaces and not devices.

· The work is based on the current ‘suspend/resume’ functionality available in FreeBSD and implements the following processes:

· Through the use cases, several challenges emerged:

Second API

· The goal of the second API will be to integrate the management of clocks.

· It is likely to look at on/off states only as intermediate states also require a management of the power (voltage variance) External support

· Andy Wafaa very kindly committed to provide documentation and real examples of how power and clock management has been implemented at Arm Holdings, to speed up development.


201506DevSummit/ClockDomains (last edited 2018-04-01 01:13:32 by MarkLinimon)