Hi all,

On Mon, 1 Feb 2021 12:30:12 +1100 Stephen Rothwell <s...@canb.auug.org.au> 
wrote:
> 
> Today's linux-next merge of the drm tree got a conflict in:
> 
>   drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
> 
> between commit:
> 
>   a119f87b86bc ("Revert "drm/amdgpu/swsmu: drop set_fan_speed_percent (v2)"")
> 
> from Linus' tree and commit:
> 
>   d8a0b8dd690b ("drm/amd/pm: add pptable_funcs documentation (v3)")
> 
> from the drm tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
> 
> diff --cc drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
> index 0d797fa9f5cc,a087e00382e6..000000000000
> --- a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
> +++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
> @@@ -551,39 -924,199 +924,201 @@@ struct pptable_funcs 
>       int (*display_clock_voltage_request)(struct smu_context *smu, struct
>                                            pp_display_clock_request
>                                            *clock_req);
> + 
> +     /**
> +      * @get_fan_control_mode: Get the current fan control mode.
> +      */
>       uint32_t (*get_fan_control_mode)(struct smu_context *smu);
> + 
> +     /**
> +      * @set_fan_control_mode: Set the fan control mode.
> +      */
>       int (*set_fan_control_mode)(struct smu_context *smu, uint32_t mode);
> + 
>  +    int (*set_fan_speed_percent)(struct smu_context *smu, uint32_t speed);
> ++
> +     /**
> +      * @set_fan_speed_rpm: Set a static fan speed in RPM.
> +      */
>       int (*set_fan_speed_rpm)(struct smu_context *smu, uint32_t speed);
> + 
> +     /**
> +      * @set_xgmi_pstate: Set inter-chip global memory interconnect pstate.
> +      * &pstate: Pstate to set. D0 if Nonzero, D3 otherwise.
> +      */
>       int (*set_xgmi_pstate)(struct smu_context *smu, uint32_t pstate);
> + 
> +     /**
> +      * @gfx_off_control: Enable/disable graphics engine poweroff.
> +      */
>       int (*gfx_off_control)(struct smu_context *smu, bool enable);
> + 
> + 
> +     /**
> +      * @get_gfx_off_status: Get graphics engine poweroff status.
> +      *
> +      * Return:
> +      * 0 - GFXOFF(default).
> +      * 1 - Transition out of GFX State.
> +      * 2 - Not in GFXOFF.
> +      * 3 - Transition into GFXOFF.
> +      */
>       uint32_t (*get_gfx_off_status)(struct smu_context *smu);
> + 
> +     /**
> +      * @register_irq_handler: Register interupt request handlers.
> +      */
>       int (*register_irq_handler)(struct smu_context *smu);
> + 
> +     /**
> +      * @set_azalia_d3_pme: Wake the audio decode engine from d3 sleep.
> +      */
>       int (*set_azalia_d3_pme)(struct smu_context *smu);
> + 
> +     /**
> +      * @get_max_sustainable_clocks_by_dc: Get a copy of the max sustainable
> +      *                                    clock speeds table.
> +      *
> +      * Provides a way for the display component (DC) to get the max
> +      * sustainable clocks from the SMU.
> +      */
>       int (*get_max_sustainable_clocks_by_dc)(struct smu_context *smu, struct 
> pp_smu_nv_clock_table *max_clocks);
> + 
> +     /**
> +      * @baco_is_support: Check if GPU supports BACO (Bus Active, Chip Off).
> +      */
>       bool (*baco_is_support)(struct smu_context *smu);
> + 
> +     /**
> +      * @baco_get_state: Get the current BACO state.
> +      *
> +      * Return: Current BACO state.
> +      */
>       enum smu_baco_state (*baco_get_state)(struct smu_context *smu);
> + 
> +     /**
> +      * @baco_set_state: Enter/exit BACO.
> +      */
>       int (*baco_set_state)(struct smu_context *smu, enum smu_baco_state 
> state);
> + 
> +     /**
> +      * @baco_enter: Enter BACO.
> +      */
>       int (*baco_enter)(struct smu_context *smu);
> + 
> +     /**
> +      * @baco_exit: Exit Baco.
> +      */
>       int (*baco_exit)(struct smu_context *smu);
> + 
> +     /**
> +      * @mode1_reset_is_support: Check if GPU supports mode1 reset.
> +      */
>       bool (*mode1_reset_is_support)(struct smu_context *smu);
> + 
> +     /**
> +      * @mode1_reset: Perform mode1 reset.
> +      *
> +      * Complete GPU reset.
> +      */
>       int (*mode1_reset)(struct smu_context *smu);
> + 
> +     /**
> +      * @mode2_reset: Perform mode2 reset.
> +      *
> +      * Mode2 reset generally does not reset as many IPs as mode1 reset. The
> +      * IPs reset varies by asic.
> +      */
>       int (*mode2_reset)(struct smu_context *smu);
> + 
> +     /**
> +      * @get_dpm_ultimate_freq: Get the hard frequency range of a clock
> +      *                         domain in MHz.
> +      */
>       int (*get_dpm_ultimate_freq)(struct smu_context *smu, enum smu_clk_type 
> clk_type, uint32_t *min, uint32_t *max);
> + 
> +     /**
> +      * @set_soft_freq_limited_range: Set the soft frequency range of a clock
> +      *                               domain in MHz.
> +      */
>       int (*set_soft_freq_limited_range)(struct smu_context *smu, enum 
> smu_clk_type clk_type, uint32_t min, uint32_t max);
> + 
> +     /**
> +      * @set_power_source: Notify the SMU of the current power source.
> +      */
>       int (*set_power_source)(struct smu_context *smu, enum 
> smu_power_src_type power_src);
> + 
> +     /**
> +      * @log_thermal_throttling_event: Print a thermal throttling warning to
> +      *                                the system's log.
> +      */
>       void (*log_thermal_throttling_event)(struct smu_context *smu);
> + 
> +     /**
> +      * @get_pp_feature_mask: Print a human readable table of enabled
> +      *                       features to buffer.
> +      */
>       size_t (*get_pp_feature_mask)(struct smu_context *smu, char *buf);
> + 
> +     /**
> +      * @set_pp_feature_mask: Request the SMU enable/disable features to
> +      *                       match those enabled in &new_mask.
> +      */
>       int (*set_pp_feature_mask)(struct smu_context *smu, uint64_t new_mask);
> + 
> +     /**
> +      * @get_gpu_metrics: Get a copy of the GPU metrics table from the SMU.
> +      *
> +      * Return: Size of &table
> +      */
>       ssize_t (*get_gpu_metrics)(struct smu_context *smu, void **table);
> + 
> +     /**
> +      * @enable_mgpu_fan_boost: Enable multi-GPU fan boost.
> +      */
>       int (*enable_mgpu_fan_boost)(struct smu_context *smu);
> + 
> +     /**
> +      * @gfx_ulv_control: Enable/disable ultra low voltage.
> +      */
>       int (*gfx_ulv_control)(struct smu_context *smu, bool enablement);
> + 
> +     /**
> +      * @deep_sleep_control: Enable/disable deep sleep.
> +      */
>       int (*deep_sleep_control)(struct smu_context *smu, bool enablement);
> + 
> +     /**
> +      * @get_fan_parameters: Get fan parameters.
> +      *
> +      * Get maximum fan speed from the power play table.
> +      */
>       int (*get_fan_parameters)(struct smu_context *smu);
> + 
> +     /**
> +      * @post_init: Helper function for asic specific workarounds.
> +      */
>       int (*post_init)(struct smu_context *smu);
> + 
> +     /**
> +      * @interrupt_work: Work task scheduled from SMU interrupt handler.
> +      */
>       void (*interrupt_work)(struct smu_context *smu);
> + 
> +     /**
> +      * @gpo_control: Enable/disable graphics power optimization if 
> supported.
> +      */
>       int (*gpo_control)(struct smu_context *smu, bool enablement);
> + 
> +     /**
> +      * @gfx_state_change_set: Send the current graphics state to the SMU.
> +      */
>       int (*gfx_state_change_set)(struct smu_context *smu, uint32_t state);
> + 
> +     /**
> +      * @set_fine_grain_gfx_freq_parameters: Set fine grain graphics clock
> +      *                                      parameters to defaults.
> +      */
>       int (*set_fine_grain_gfx_freq_parameters)(struct smu_context *smu);
>   };
>   

With the merge window about to open, this is a reminder that this
conflict still exists.

-- 
Cheers,
Stephen Rothwell

Attachment: pgpwxH4mgcRea.pgp
Description: OpenPGP digital signature

Reply via email to