]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: update perfmon measurement interfaces
authorWenjing Liu <wenjing.liu@amd.com>
Thu, 2 Oct 2025 18:20:02 +0000 (14:20 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 20 Oct 2025 22:21:56 +0000 (18:21 -0400)
[how]
The commit update interfaces for dchubbub perfmon meansurement to better
reflect our requirements.

Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h

index 843a18287c83fbf485c08bba0535554215bd32cb..2ce47c403840eaae54191c95304f7428d58a8371 100644 (file)
@@ -244,15 +244,37 @@ struct hubbub_funcs {
        bool (*program_arbiter)(struct hubbub *hubbub, struct dml2_display_arb_regs *arb_regs, bool safe_to_lower);
        void (*get_det_sizes)(struct hubbub *hubbub, uint32_t *curr_det_sizes, uint32_t *target_det_sizes);
        uint32_t (*compbuf_config_error)(struct hubbub *hubbub);
-       struct hubbub_perfmon_funcs{
-               void (*start_system_latency_measurement)(struct hubbub *hubbub);
-               void (*get_system_latency_result)(struct hubbub *hubbub, uint32_t refclk_mhz, struct hubbub_system_latencies *latencies);
-               void (*start_in_order_bandwidth_measurement)(struct hubbub *hubbub);
-               void (*get_in_order_bandwidth_result)(struct hubbub *hubbub, uint32_t refclk_mhz, uint32_t *bandwidth_mbps);
-               void (*start_urgent_ramp_latency_measurement)(struct hubbub *hubbub, const struct hubbub_urgent_latency_params *params);
-               void (*get_urgent_ramp_latency_result)(struct hubbub *hubbub, uint32_t refclk_mhz, uint32_t *latency_ns);
+       struct hubbub_perfmon_funcs {
                void (*reset)(struct hubbub *hubbub);
+               void (*start_measuring_max_memory_latency_ns)(
+                               struct hubbub *hubbub);
+               uint32_t (*get_max_memory_latency_ns)(struct hubbub *hubbub,
+                               uint32_t refclk_mhz, uint32_t *sample_count);
+               void (*start_measuring_average_memory_latency_ns)(
+                               struct hubbub *hubbub);
+               uint32_t (*get_average_memory_latency_ns)(struct hubbub *hubbub,
+                               uint32_t refclk_mhz, uint32_t *sample_count);
+               void (*start_measuring_urgent_ramp_latency_ns)(
+                               struct hubbub *hubbub,
+                               const struct hubbub_urgent_latency_params *params);
+               uint32_t (*get_urgent_ramp_latency_ns)(struct hubbub *hubbub,
+                               uint32_t refclk_mhz);
+               void (*start_measuring_unbounded_bandwidth_mbps)(
+                               struct hubbub *hubbub);
+               uint32_t (*get_unbounded_bandwidth_mbps)(struct hubbub *hubbub,
+                               uint32_t refclk_mhz, uint32_t *duration_ns);
+               void (*start_measuring_average_bandwidth_mbps)(
+                               struct hubbub *hubbub);
+               uint32_t (*get_average_bandwidth_mbps)(struct hubbub *hubbub,
+                               uint32_t refclk_mhz, uint32_t min_duration_ns,
+                               uint32_t *duration_ns);
        } perfmon;
+
+       struct hubbub_qos_funcs {
+               void (*force_display_nominal_profile)(struct hubbub *hubbub);
+               void (*force_display_urgent_profile)(struct hubbub *hubbub);
+               void (*reset_display_qos_profile)(struct hubbub *hubbub);
+       } qos;
 };
 
 struct hubbub {