<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Series is:</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Acked-by: Alex Deucher <alexander.deucher@amd.com><br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Huang, Ray<br>
<b>Sent:</b> Wednesday, February 20, 2019 7:51 AM<br>
<b>To:</b> Huang, Ray; amd-gfx@lists.freedesktop.org; Deucher, Alexander<br>
<b>Cc:</b> Gao, Likun; Wang, Kevin(Yang); Gui, Jack<br>
<b>Subject:</b> RE: [PATCH 000/138] The new SW SMU driver of amdgpu</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Ping.<br>
May I have your comments?<br>
<br>
Thanks,<br>
Ray<br>
<br>
> -----Original Message-----<br>
> From: amd-gfx [<a href="mailto:amd-gfx-bounces@lists.freedesktop.org">mailto:amd-gfx-bounces@lists.freedesktop.org</a>] On Behalf<br>
> Of Huang Rui<br>
> Sent: Friday, January 25, 2019 6:23 PM<br>
> To: amd-gfx@lists.freedesktop.org<br>
> Cc: Gao, Likun <Likun.Gao@amd.com>; Wang, Kevin(Yang)<br>
> <Kevin1.Wang@amd.com>; Huang, Ray <Ray.Huang@amd.com>; Gui, Jack<br>
> <Jack.Gui@amd.com><br>
> Subject: [PATCH 000/138] The new SW SMU driver of amdgpu<br>
> <br>
> Hi all,<br>
> <br>
> The series of patches are to implement a new SW SMU driver for future asics.<br>
> <br>
> Background:<br>
> The powerplay driver will be retired. The final version is for vega20 with<br>
> SMU11. However, the future asic will use the new swSMU framework to<br>
> implement as<br>
> well. Here is the first version of new sw smu driver that is basing on vega20.<br>
> <br>
> Purpose:<br>
> We would like to do re-arch for linux power codes to use a new sw SMU ip<br>
> block<br>
> for future asics. We hope to write a simple and readable framework for Linux.<br>
> <br>
> Currently, the default path is still with powerplay on vega20. So far we don’t<br>
> plan to switch default path to new swSMU design for vega20. And we can<br>
> use the<br>
> module parameter amdgpu_dpm to switch it to new SW SMU design<br>
> (modprobe amdgpu<br>
> dpm=1).<br>
> <br>
> Development Items:<br>
> - Setup new SMU IP block skeleton.<br>
> - Implement SMC firmware loading function.<br>
> - Implement SMC table data structure.<br>
> - Implement SMU v11 indirect register (MP1) read/write and SMC message<br>
> sending<br>
>   helpers.<br>
> - Implement SMU v11 SMC table initialization (read from vbios, parse,<br>
> populate,<br>
>   and write back to smc).<br>
> - Implement SMU v11 memory pool location function.<br>
> - Enable DPM feature for SMU v11 and implement DPM control callback<br>
> function.<br>
> - Enable interfaces for starting tools.<br>
> - Implement SMU v11 power control and power containment functions.<br>
> - Implement and enable SMU v11 thermal/fan control function.<br>
> - Implement SMU interfaces placeholder for DC, VCN, and KFD driver.<br>
> - Enable and align sys interface in the amdgpu_pm.c.<br>
> <br>
> So far, Kevin, Likun, Jack, and I have enabled features such as dpm, od,<br>
> thermal, and etc. with new sw smu driver. (Thanks to Kevin, Likun and Jack's<br>
> great effort!)<br>
> <br>
> Any comments are warm for us.<br>
> <br>
> Thanks & Best Regards!<br>
> Ray<br>
> <br>
> <br>
> Chengming Gui (14):<br>
>   drm/amd/powerplay: implement power_dpm_state sys interface for<br>
> SMU11<br>
>   drm/amd/powerplay: add watermarks related data structs and function<br>
>     for SMU11.<br>
>   drm/amd/powerplay: implement pp_power_profile_mode sys inerface for<br>
>     SMU11<br>
>   drm/amd/powerplay: add display_config to handle display config for<br>
>     SMU11.<br>
>   drm/amd/powerplay: add mclk_latency_table struct and smu_clocks struct<br>
>     for SMU11<br>
>   drm/amd/powerplay: add enable_umd_pstate functions for SMU11<br>
>   drm/amd/powerplay: add get_profiling_clk_mask functions for SMU11<br>
>   drm/amd/powerplay: add set_uclk_to_highest_level for SMU11<br>
>   drm/amd/powerplay: add display_config_changed for SMU11.<br>
>   drm/amd/powerplay: add apply_clock_adjust_rules for SMU11.<br>
>   drm/amd/powerplay: add vega20_notify_smc_display_config functions for<br>
>     SMU11<br>
>   drm/amd/powerplay: add vega20_find/force_higest/lowest_dpm for<br>
> SMU11<br>
>   drm/amd/powerplay: add vega20_unforce_dpm_levels for SMU11.<br>
>   drm/amd/powerplay: implement power_dpm_force_performance_level<br>
> for<br>
>     SMU11<br>
> <br>
> Huang Rui (53):<br>
>   drm/amd/powerplay: add new smu ip block<br>
>   drm/amd/powerplay: add smu11 sub block for SMU IP<br>
>   drm/amd/powerplay: add firmware loading interface<br>
>   drm/amd/powerplay: add fw load checking interface<br>
>   drm/amd/powerplay: add interface to read pptable from vbios<br>
>   drm/amd/powerplay: add placeholder of smu_initialize_pptable<br>
>   drm/amd/powerplay: add interface to init smc tables (v2)<br>
>   drm/amd/powerplay: add interface to init power (v2)<br>
>   drm/amd/powerplay: add interface to get vbios bootup values (v2)<br>
>   drm/amd/powerplay: add interface to check pptable (v2)<br>
>   drm/amd/powerplay: add interface to init fb allocations (v2)<br>
>   drm/amd/powerplay: add interface to parse pptable (v2)<br>
>   drm/amd/powerplay: add interface to populate smc pptable (v2)<br>
>   drm/amd/powerplay: add interface to check fw version (v2)<br>
>   drm/amd/powerplay: add interface to write pptable (v2)<br>
>   drm/amd/powerplay: add interface to set min dcef deep sleep (v2)<br>
>   drm/amd/powerplay: add interface to set tool table location (v2)<br>
>   drm/amd/powerplay: add interface to allocate memory pool (v2)<br>
>   drm/amd/powerplay: add interface to notify memory pool location (v2)<br>
>   drm/amd/powerplay: add interfaces for smu resume<br>
>   drm/amd/powerplay: add resume sequence placeholder for smu ip block<br>
>   drm/amdgpu: enable new smu ip block for vega20<br>
>   drm/amd/powerplay: add new ppsmc header for smu11 (v2)<br>
>   drm/amd/powerplay: add pptable header for smu11<br>
>   drm/amdgpu: update atomfirmware header for smu11<br>
>   drm/amdgpu: update new members in atomfirmware<br>
>   drm/amd/powerplay: add smu table context structure<br>
>   drm/amd/powerplay: add get atom data table helper<br>
>   drm/amdgpu: move get_index_into_master_table macro into<br>
> atomfirmware<br>
>     header<br>
>   drm/amd/powerplay: implement read_pptable_from_vbios function for<br>
>     smu11<br>
>   drm/amd/powerplay: update pptable header for smu11<br>
>   drm/amd/powerplay: add data structure of bootup values<br>
>   drm/amd/powerplay: implement get_vbios_bootup_values function for<br>
>     smu11 (v2)<br>
>   drm/amd/powerplay: implement get_clk_info_from_vbios function for<br>
>     smu11 (v2)<br>
>   drm/amd/powerplay: add vega20 pptable function file<br>
>   drm/amd/powerplay: add append_powerplay_table function<br>
>   drm/amd/powerplay: add get_max_sustainable_clock function<br>
>   drm/amd/powerplay: add the function to set deep sleep dcefclk<br>
>   drm/amd/powerplay: add two interfaces to set_active_display_count and<br>
>     store_cc6_data<br>
>   drm/amd/powerplay: add smu display configuration change function<br>
>   drm/amd/powerplay: add get_clock_by_type interface for display<br>
>   drm/amd/powerplay: add interface to get max high clocks for display<br>
>   drm/amd/powerplay: add interface to get clock by type with latency for<br>
>     display (v2)<br>
>   drm/amd/powerplay: add interface to get clock by type with voltage for<br>
>     display<br>
>   drm/amd/powerplay: add interface to request display clock voltage<br>
>   drm/amd/powerplay: add interface to get dal power level<br>
>   drm/amd/powerplay: add interface to get performance level<br>
>   drm/amd/powerplay: add interface to get current shallow sleep clocks<br>
>   drm/amd/powerplay: add interface to get current clocks for display<br>
>   drm/amd/powerplay: add interface to notify smu enable pme restore<br>
>     register<br>
>   drm/amd/powerplay: implement interface to set watermarks for clock<br>
>     ranges<br>
>   drm/amd/powerplay: remove unnecessary checking in smu_hw_fini<br>
>   drm/amd/powerplay: don't check hwmgr while using the sw smu<br>
> <br>
> Kevin Wang (38):<br>
>   drm/amd/powerplay: implement smu send message functions for smu11<br>
> (v3)<br>
>   drm/amd/powerplay: implement check_fw_status function for smu11<br>
>   drm/amd/powerplay: implement check_fw_version function for smu11<br>
>   drm/amd/powerplay: implement smu_init[fini]_smc_tables for smu11<br>
>   drm/amd/powerplay: implement smu dpm context functions for smu11<br>
>   drm/amd/powerplay: implement smu_init[fini]_power function for smu11<br>
>   drm/amd/powerplay: implement smu_init(fini)_fb_allocations function<br>
>   drm/amd/powerplay: remove header of smu_v11_0_pptable<br>
>   drm/amd/powerplay: implement smu_alloc[free]_memory pool function<br>
>   drm/amd/powerplay: implement notify_memory_pool_location function<br>
> for<br>
>     smu11<br>
>   drm/amd/powerplay: add enum smu_msg_type to header<br>
>   drm/amd/powerplay: implement smu vega20_message_map for vega20<br>
>   drm/amd/powerplay: use virtual msg index to replace asic-related msg<br>
>     index<br>
>   drm/amd/powerplay: replace SMU_MSG_XXX with PPSMC_MSG_XXX<br>
> message<br>
>     index for smu11 (v2)<br>
>   drm/amd/powerplay: implement smu_init_display for smu11<br>
>   drm/amd/powerplay: implement smu_run_afll_btc function<br>
>   drm/amd/powerplay: implement smu feature functions<br>
>   drm/amd/powerplay: implement feature get&set functions<br>
>   drm/amd/powerplay: implement smu_notify_display_change function for<br>
>     smu11<br>
>   drm/amd/powerplay: implement get_current_clk_freq for smu11<br>
>   drm/amd/powerplay: implement smu update table function<br>
>   drm/amd/powerplay: implement is_support_sw_smu function for new smu<br>
>   drm/amd/powerplay: implement sysfs of amdgpu_get_busy_percent for<br>
>     smu11<br>
>   drm/amd/powerplay: implement sysfs of pp_table for smu11<br>
>   drm/amd/powerplay: implement sensor of SCLK and MCLK for smu11<br>
>   drm/amd/powerplay: implement sensor of thermal_get_temperature for<br>
>     smu11<br>
>   drm/amd/powerplay: implement sensor of get_gpu_power for smu11<br>
>   drm/amd/powerplay: implement sensor of get_gfx_vdd for smu11<br>
>   drm/amd/powerplay: implement sensor of get feature mask<br>
>   drm/amd/powerplay: implement sysfs of get num states function<br>
>   drm/amd/powerplay: implement sysfs of pp_cur_state function<br>
>   drm/amd/powerplay: implement sysfs of pp_force_state for sw-smu<br>
>   drm/amd/powerplay: implement update enabled feature state to smc for<br>
>     smu11<br>
>   drm/amd/powerplay: hwmon don't check powerplay when sw smu is<br>
> enabled<br>
>   drm/amd/powerplay: implement uvd & vce dpm enable functions<br>
>   drm/amd/powerplay: implement sensor of uvd & vce power state for<br>
> smu11<br>
>   drm/amd/powerplay: implement dpm enable functions of uvd & vce for<br>
> smu<br>
>   drm/amd/powerplay: enable amdgpu dpm for smu<br>
> <br>
> Likun Gao (33):<br>
>   drm/amd/powerplay: init microcode for smu11<br>
>   drm/amd/powerplay: add function to parse pptable for smu11<br>
>   drm/amd/powerplay: add function to check pptable for smu11<br>
>   drm/amd/powerplay: update hw fini function to relase some memory<br>
>   drm/amd/powerplay: add function to populate smc pptable for smu11<br>
>   drm/amd/powerplay: add function to write pptable for smu11 (v2)<br>
>   drm/amd/powerplay: add function to set min dcef deep sleep for smu11<br>
>     (v2)<br>
>   drm/amd/powerplay: add function to set tool table location for smu11<br>
>     (v2)<br>
>   drm/amd/powerplay: expose the function of smu read argument<br>
>   drm/amd/powerplay: Change the allocate method of dpm context for<br>
>     smu11.<br>
>   drm/amd/powerplay: set defalut dpm table for smu<br>
>   drm/amd/powerplay: add function to populate umd state clk.<br>
>   drm/amd/powerplay: add function to get power limit for smu11 (v2)<br>
>   drm/amd/powerplay: print clock levels for smu11 (v2)<br>
>   drm/amd/powerplay: add function to get thermal range<br>
>   drm/amd/powerplay: add function to set thermal range<br>
>   drm/amd/powerplay: add function to enable thermal alert<br>
>   drm/amd/powerplay: add function to set fan table to control thermal<br>
>   drm/amd/powerplay: add function to start thermal control<br>
>   drm/amd/powerplay: upload dpm level for smu11<br>
>   drm/amd/powerplay: force clock levels for smu11<br>
>   drm/amd/powerplay: add function to store overdrive information for<br>
>     smu11<br>
>   drm/amd/powerplay: add function to set default overdrive settings<br>
>   drm/amd/powerplay: add golden dpm table to backup default DPM table<br>
>   drm/amd/powerplay: print overdrive percentage information for smu11<br>
>   drm/amd/powerplay: get overdrive clock and voltage information<br>
>   drm/amd/powerplay: add sys interface for pcie for smu<br>
>   drm/amd/powerplay: add function to update overdrive settings<br>
>   drm/amd/powerplay: add sys interface for set sclk_od/mclk_od for smu<br>
>   drm/amd/powerplay: add sys interface to set pp_od_clk_voltage for smu<br>
>   drm/amd/powerplay: adjust power state when set od_clk<br>
>   drm/amd/powerplay: dpm clk can be set only when performance level is<br>
>     manual<br>
>   drm/amd/powerplay: Unify smu handle task function<br>
> <br>
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h                |    4 +<br>
>  drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c   |   12 +-<br>
>  drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.h   |    2 +<br>
>  drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c        |    7 +-<br>
>  drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h            |   11 +-<br>
>  drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c             |  364 ++--<br>
>  drivers/gpu/drm/amd/amdgpu/soc15.c                 |    9 +-<br>
>  .../drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c   |   99 +-<br>
>  drivers/gpu/drm/amd/include/amd_shared.h           |    3 +<br>
>  drivers/gpu/drm/amd/include/atomfirmware.h         |   44 +-<br>
>  drivers/gpu/drm/amd/powerplay/Makefile             |    2 +-<br>
>  drivers/gpu/drm/amd/powerplay/amdgpu_smu.c         | 1198 +++++++++++<br>
>  drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h     |  732 +++++++<br>
>  drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h      |   89 +<br>
>  .../gpu/drm/amd/powerplay/inc/smu_v11_0_ppsmc.h    |  128 ++<br>
>  .../gpu/drm/amd/powerplay/inc/smu_v11_0_pptable.h  |  147 ++<br>
>  drivers/gpu/drm/amd/powerplay/smu_v11_0.c          | 1683<br>
> +++++++++++++++<br>
>  drivers/gpu/drm/amd/powerplay/vega20_ppt.c         | 2146<br>
> ++++++++++++++++++++<br>
>  drivers/gpu/drm/amd/powerplay/vega20_ppt.h         |  129 ++<br>
>  19 files changed, 6624 insertions(+), 185 deletions(-)<br>
>  create mode 100644 drivers/gpu/drm/amd/powerplay/amdgpu_smu.c<br>
>  create mode 100644 drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h<br>
>  create mode 100644 drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h<br>
>  create mode 100644<br>
> drivers/gpu/drm/amd/powerplay/inc/smu_v11_0_ppsmc.h<br>
>  create mode 100644<br>
> drivers/gpu/drm/amd/powerplay/inc/smu_v11_0_pptable.h<br>
>  create mode 100644 drivers/gpu/drm/amd/powerplay/smu_v11_0.c<br>
>  create mode 100644 drivers/gpu/drm/amd/powerplay/vega20_ppt.c<br>
>  create mode 100644 drivers/gpu/drm/amd/powerplay/vega20_ppt.h<br>
> <br>
> --<br>
> 2.7.4<br>
> <br>
> _______________________________________________<br>
> amd-gfx mailing list<br>
> amd-gfx@lists.freedesktop.org<br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
</div>
</span></font></div>
</body>
</html>