Skip to content
Snippets Groups Projects
Forked from Alex Deucher / linux
Source project has a limited visibility.
  • Daniel Lezcano's avatar
    0e8f68d7
    powercap/drivers/dtpm: Add CPU energy model based support · 0e8f68d7
    Daniel Lezcano authored
    
    With the powercap dtpm controller, we are able to plug devices with
    power limitation features in the tree.
    
    The following patch introduces the CPU power limitation based on the
    energy model and the performance states.
    
    The power limitation is done at the performance domain level. If some
    CPUs are unplugged, the corresponding power will be subtracted from
    the performance domain total power.
    
    It is up to the platform to initialize the dtpm tree and add the CPU.
    
    Here is an example to create a simple tree with one root node called
    "pkg" and the CPU's performance domains.
    
    static int dtpm_register_pkg(struct dtpm_descr *descr)
    {
    	struct dtpm *pkg;
    	int ret;
    
    	pkg = dtpm_alloc(NULL);
    	if (!pkg)
    		return -ENOMEM;
    
    	ret = dtpm_register(descr->name, pkg, descr->parent);
    	if (ret)
    		return ret;
    
    	return dtpm_register_cpu(pkg);
    }
    
    static struct dtpm_descr descr = {
    	.name = "pkg",
    	.init = dtpm_register_pkg,
    };
    DTPM_DECLARE(descr);
    
    Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    Reviewed-by: default avatarLukasz Luba <lukasz.luba@arm.com>
    Tested-by: default avatarLukasz Luba <lukasz.luba@arm.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    0e8f68d7
    History
    powercap/drivers/dtpm: Add CPU energy model based support
    Daniel Lezcano authored
    
    With the powercap dtpm controller, we are able to plug devices with
    power limitation features in the tree.
    
    The following patch introduces the CPU power limitation based on the
    energy model and the performance states.
    
    The power limitation is done at the performance domain level. If some
    CPUs are unplugged, the corresponding power will be subtracted from
    the performance domain total power.
    
    It is up to the platform to initialize the dtpm tree and add the CPU.
    
    Here is an example to create a simple tree with one root node called
    "pkg" and the CPU's performance domains.
    
    static int dtpm_register_pkg(struct dtpm_descr *descr)
    {
    	struct dtpm *pkg;
    	int ret;
    
    	pkg = dtpm_alloc(NULL);
    	if (!pkg)
    		return -ENOMEM;
    
    	ret = dtpm_register(descr->name, pkg, descr->parent);
    	if (ret)
    		return ret;
    
    	return dtpm_register_cpu(pkg);
    }
    
    static struct dtpm_descr descr = {
    	.name = "pkg",
    	.init = dtpm_register_pkg,
    };
    DTPM_DECLARE(descr);
    
    Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    Reviewed-by: default avatarLukasz Luba <lukasz.luba@arm.com>
    Tested-by: default avatarLukasz Luba <lukasz.luba@arm.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>