VULN_CHECK_I913V6 GiddlmZddlddlZddlmZddlZddlZddl Z ejjZ GddejZy))base)*N)commandsceZdZdZfdZdZdZedZdZ dZ dZ dd Z e d d d Zed ddZe dd dZedddZxZS) VideoPluginaf Sets various power saving features on video cards. Radeon cards are supported. The powersave level can be specified by using the [option]`radeon_powersave` option. Supported values are: * `default` * `auto` * `low` * `mid` * `high` * `dynpm` * `dpm-battery` * `dpm-balanced` * `dpm-perfomance` For additional detail, see link:https://www.x.org/wiki/RadeonFeature/#kmspowermanagementoptions[KMS Power Management Options]. NOTE: This plug-in is experimental and the option might change in future releases. .Setting powersave level for the Radeon video card to high ==== ---- [video] radeon_powersave=high ---- ==== Mobile hardware with amdgpu driven eDP panels can be configured with the [option]`panel_power_savings` option. This accepts a value range from 0 to 4, where 4 is the highest power savings but will trade off color accuracy. c,tt| |i|yN)superr__init__)selfargskwargs __class__s ?/usr/lib/python3.12/site-packages/tuned/plugins/plugin_video.pyr zVideoPlugin.__init__/s T#T4V4cd|_t|_t|_|jj dj dD]l}|j|j}|D]J}tjj||s&|jj|jLnt|_y)NTdrmzcard*-*)_devices_supportedset _free_devices_assigned_devices_hardware_inventory get_devicesmatch_sys_name_filessys_nameospathexistsaddr_cmd)r deviceattrsattrs r _init_deviceszVideoPlugin._init_devices2s $u$5$((44U;JJ9Uf ;;v '5t ww~~eDk" FOO,V j$)rc`|Dcgc]}|jjd| c}Scc}w)Nr)r get_device)r devicesxs r_get_device_objectszVideoPlugin._get_device_objects?s-AH IA$ " " - -eQ 7 II Is#+c dddS)N)radeon_powersavepanel_power_savings)r s r_get_config_optionszVideoPlugin._get_config_optionsBs rc d|_d|_y)NFT)_has_dynamic_tuning_has_static_tuningr instances r_instance_initzVideoPlugin._instance_initIs!&( $(rcyr r/r4s r_instance_cleanupzVideoPlugin._instance_cleanupMsrc(d|zd|zd|zd|zdS)Nz%/sys/class/drm/%s/device/power_methodz&/sys/class/drm/%s/device/power_profilez(/sys/class/drm/%s/device/power_dpm_statez,/sys/class/drm/%s/amdgpu/panel_power_savings)methodprofile dpm_stater.r/)r r#s rrzVideoPlugin._filesPs,5>6?:VCH6Q  rcztjj|j|dsyt |j ||}||k(rt jd|d||St j|d||s.|jj|j|d|r|Sy)zTApply the target value to the panel_power_savings file if it doesn't already have itr.Nzpanel_power_savings for z already z panel_power_savings -> ) rrr rint_get_panel_power_savingsloginfor" write_to_file)r r#targetr5simcurrents rapply_panel_power_saving_targetz+VideoPlugin.apply_panel_power_saving_targetXs  F+,AB C  --fh? @' 88/5v> =((VV <=DII # #DKK$78M$NPV W = rr-T) per_devicec|j|}ttjdd|j }t j j|ds|stjd|zy|D]S}|dvrq|r |jj|dd|rtjgnds@|jj|d||rtjgndsu|cS|d k(r:|r|jj|dd |rtjgndsy |d vr|r|td d} |jj|dd |rtjgnds|jj|d | |rtjgnds9|cS|stjdyy)Nz#(\s*:\s*)|(\s+)|(\s*;\s*)|(\s*,\s*) r:)radeon_powersave is not supported on '%s')defaultautolowmidhighr;Fno_errordynpm)z dpm-batteryz dpm-balancedzdpm-performancedpm-dpmr<z$Invalid option for radeon_powersave.)rstrresubsplitrrr r@debugr"rBerrnoENOENTlenwarning) r valuer#r5rDremove sys_filesvavstates r_set_radeon_powersavez!VideoPlugin._set_radeon_powersavemskk&!) 2668#u EFLLN"  (+ , II9FBC  a 44   8!4i#)%,,u ! 6 iii 2A$*5<<.7 W   8!4g#)%,,u ! 6 ??  s6{|_U  8!4e#)%,,u ! 6 iii 4e$*5<<.7 [[78 3 4 rc|j|}tjj|dstj d|zy|j j|d|j}|dk(r,|j j|djS|dk(r|S|dk(r/d|j j|djzSy) Nr:rJrPr;rRrTrSr<) rrrr r@rYr" read_filestrip)r r#r5ignore_missingr`r:s r_get_radeon_powersavez!VideoPlugin._get_radeon_powersaveskk&!)  (+ ,99 86 AB  99  y2^  L R R T& y ))  i 2 3 9 9 ;;  =  499&&y'=>DDF FF rr.c t|d}|t ddvr|j ||||Stjd|zy#t$rtjd|zYywxYw)z!Set the panel_power_savings value z(Invalid value %s for panel_power_savingsNr)r> ValueErrorr@r]rangerF)r r^r#r5rDr_s r_set_panel_power_savingsz$VideoPlugin._set_panel_power_savingsst ub>5 eAqk  . .vuh LL;;9EAB  ;;9EAB s A !A-,A-ctjj|j|dstj d|zy|j|d}|j j||jS)z)Get the current panel_power_savings valuer.z,panel_power_savings is not supported on '%s'NrP) rrr rr@rYr"rfrg)r r#r5rhfnames rr?z$VideoPlugin._get_panel_power_savingsso  F+,AB C99 ;f DE  ++f 3 4%   U^  < B B DDr)F)__name__ __module__ __qualname____doc__r r&r+ classmethodr0r6r8rrF command_setrd command_getriror? __classcell__)rs@rrr s!F5 J %* T2!3!F ! " #5 6 #$E%Err)r decorators tuned.logstunedtuned.utils.commandsrrrZrVlogsgetr@Pluginrr/rrrs>)  jjnnkE$++kEr