GNOME Power Management Support [PSARC/2008/021 FastTrack timeout 01/23/2008]

David Chieu dchieu at sac.sfbay.sun.com
Mon Jan 14 15:00:52 PST 2008


I am sponsoring this FastTrack for Phi Tran.

Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
	 GNOME Power Management Support
    1.2. Name of Document Author/Supplier:
	 Author:  Phi Tran
    1.3  Date of This Document:
	14 January, 2008
4. Technical Description
1. Introduction
    1.1. Project/Component Working Name:
	 GNOME Power Manager Support
    1.2. Name of Document Author/Supplier:
	 Author:  Phi Tran 
    1.3  Date of This Document:
	 1/10/07 

4. Technical Description
4.1 Details
This project enhances the battery driver (PSARC/2006/601) and
HAL (PSARC/2005/399) to provide lid, brightness, power button,
suspend, and hibernate support for Gnome Power Manager (LSARC/2007/702).

Lid
---

GPM allows the user to set actions for lid close such as suspend,
hibernate, and shutdown.  Suspend and hibernate actions will be
available if supported by the system.  In addition, the actions
will be allowed if the user is the console owner or has the appropriate
RBAC authorization. 

ACPI lid event notifications will be handled by the driver to trigger
lid sysevents if the lid is closed or opened.  HAL is notified by 
the sysevents, and GPM communicates with HAL through D-BUS.

LCD Brightness Control
----------------------

There will be two methods implemented to control LCD brightness.
The first way to control LCD brightness is by pressing the laptop
brightness hotkeys which will generate ACPI events for brightness
up or down that the battery driver will handle to change the brightness.
The driver will also generate sysevents to notify HAL about the
brightness change.  GPM communicates with HAL through D-BUS.

The second method to change brightness is through the GPM brightness
applet.  Support for the applet is handled through the HAL interfaces
which call driver ioctls to set and get the brightness levels.

In both methods, setting the brightness level will be allowed for
the user who is the console owner or has the RBAC authorization.

Power Button
------------

GPM allows for the configuration of power button actions such as
shutdown, suspend, and hibernate.  These actions will be allowed
if the system supports the action, and the user is either the console
owner or has the RBAC authorization.

Currently, power button support is handled by the power driver and
powerd.  powerd polls for the button action.  To enable GPM power
button actions, the polling will be replaced by sysevents and
HAL will handle the sysevent to notify GPM through D-BUS.  powerd 
will no longer handle the power button press.  

4.2 Interface

HAL interfaces
--------------
Interface level: Volatile

Method Name             Return    Parameters            Comments    
---------------------------------------------------------------------------
GetBrightness	      int status		Get the current brightness.
SetBrightness			    int level	Set the current brightness.
Suspend		      int status    		Put the system into ACPI S3
						state.		
Hibernate	      int status		Put the system into ACPI S4
						state.	
Shutdown	      int status
Reboot		      int status
---------------------------------------------------------------------------

Interface            Type                    Comments
--------------------------------------------------------------------------
can.suspend	     bool	The ability to suspend as determined
				by uadmin(2).
can.hibernate	     bool	The ability to hibernate as determined
				by uadmin(2).	
button.type	     string	Identifies buttons such as lid or power. 
button.has_state     bool	True if button maintains state, e.g. can be
				toggled on/off.
button.state.value   bool	State of the button, TRUE if it is enabled. 
ButtonPressed	     string	Emitted when a button is pressed such as
				power, lid, brightness-up, or brightness-down.	
laptop_panel.num_levels	int	The brightness levels supported by the 
				adapter.	
--------------------------------------------------------------------------

More information can be found in hal-spec.html of the materials
directory.

Brightness Ioctls
-----------------
Interface level: Project Private

BATT_IOC_GET_BRIGHTNESS
BATT_IOC_SET_BRIGHTNESS

Sysevents
---------
Interface level: Project Private

The EC_ACPIEV class defined in PSARC/2006/601 Battery Project will
be extended to include the following subclasses.

ESC_ACPIEV_BRIGHTNESS_UP
ESC_ACPIEV_BRIGHTNESS_DOWN
ESC_ACPIEV_POWER_BUTTON

The event attributes will be the same as existing EC_ACPIEV subclasses.

Security
--------
Interface level: Volatile

The following RBAC authorizations and profiles will be added.

Authorization Names:
solaris.system.power.:::System Power Management::help=SystemPowerMgmt.html
solaris.system.power.suspend::: Suspend the System::help=Suspend.html 
solaris.system.power.suspend.ram::: Suspend to RAM::help=SuspendToRam.html
solaris.system.power.brightness::: Control LCD Brightness::help=Brightness.html

Profiles:
System Power:::For authorized users to manage system power: auths=solaris.system.power;help=RtSystemPowerMngmnt.html
Suspend:::For authorized users to Suspend system: auths=solaris.system.power.suspend;help=RtSuspend.html
SuspendToRam:::For authorized users to Suspend to RAM: auths=solaris.system.power.suspend.ram;help=RtSuspendToRam.html
Brightness:::For authorized users to Control LCD Brightness: auths=solaris.system.power.brightness;help=RtBrightness.html

*Will consult with the audit team to enable auditing.

libpolkit interfaces
--------------------
Interface level: Volatile 

The following privileges are mapped to RBAC authorizations for the solaris
backend.

hal-power-suspend
hal-power-hibernate
hal-power-shutdown
hal-power-cpu
hal-power-brightness

4.3 References
LSARC/2007/702 Gnome Power Manager
PSARC/2007/679 CPUFreq HAL
PSARC/2006/601 Battery Project
LSARC/2006/368 D-BUS Message Bus System
PSARC/2005/399 Tamarack: Removable Media Enhancements in Solaris
HAL specification http://people.freedesktop.org/~david/hal-spec/hal-spec.html
ACPI 3.0b http://www.acpi.info/spec.htm

6. Resources and Schedule
    6.4. Steering Committee requested information
   	6.4.1. Consolidation C-team Name:
		ON
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open

6. Resources and Schedule
    6.4. Steering Committee requested information
   	6.4.1. Consolidation C-team Name:
		ON
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open




More information about the opensolaris-arc mailing list