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