diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 39 | 
1 files changed, 33 insertions, 6 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index e4277298cf1a..78089f2f79f5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -24,7 +24,7 @@  #include <drm/amdgpu_drm.h>  #include <drm/drm_drv.h> -#include <drm/drm_fbdev_generic.h> +#include <drm/drm_fbdev_ttm.h>  #include <drm/drm_gem.h>  #include <drm/drm_managed.h>  #include <drm/drm_pciids.h> @@ -129,6 +129,7 @@ enum AMDGPU_DEBUG_MASK {  	AMDGPU_DEBUG_LARGEBAR = BIT(1),  	AMDGPU_DEBUG_DISABLE_GPU_SOFT_RECOVERY = BIT(2),  	AMDGPU_DEBUG_USE_VRAM_FW_BUF = BIT(3), +	AMDGPU_DEBUG_ENABLE_RAS_ACA = BIT(4),  };  unsigned int amdgpu_vram_limit = UINT_MAX; @@ -197,6 +198,7 @@ int amdgpu_discovery = -1;  int amdgpu_mes;  int amdgpu_mes_log_enable = 0;  int amdgpu_mes_kiq; +int amdgpu_uni_mes = 1;  int amdgpu_noretry = -1;  int amdgpu_force_asic_type = -1;  int amdgpu_tmz = -1; /* auto */ @@ -214,6 +216,7 @@ uint amdgpu_debug_mask;  int amdgpu_agp = -1; /* auto */  int amdgpu_wbrf = -1;  int amdgpu_damage_clips = -1; /* auto */ +int amdgpu_umsch_mm_fwlog;  static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work); @@ -687,6 +690,15 @@ MODULE_PARM_DESC(mes_kiq,  module_param_named(mes_kiq, amdgpu_mes_kiq, int, 0444);  /** + * DOC: uni_mes (int) + * Enable Unified Micro Engine Scheduler. This is a new engine pipe for unified scheduler. + * (0 = disabled (default), 1 = enabled) + */ +MODULE_PARM_DESC(uni_mes, +	"Enable Unified Micro Engine Scheduler (0 = disabled, 1 = enabled(default)"); +module_param_named(uni_mes, amdgpu_uni_mes, int, 0444); + +/**   * DOC: noretry (int)   * Disable XNACK retry in the SQ by default on GFXv9 hardware. On ASICs that   * do not support per-process XNACK this also disables retry page faults. @@ -925,7 +937,7 @@ module_param_named(freesync_video, amdgpu_freesync_vid_mode, uint, 0444);   * GPU reset method (-1 = auto (default), 0 = legacy, 1 = mode0, 2 = mode1, 3 = mode2, 4 = baco)   */  MODULE_PARM_DESC(reset_method, "GPU reset method (-1 = auto (default), 0 = legacy, 1 = mode0, 2 = mode1, 3 = mode2, 4 = baco/bamaco)"); -module_param_named(reset_method, amdgpu_reset_method, int, 0444); +module_param_named(reset_method, amdgpu_reset_method, int, 0644);  /**   * DOC: bad_page_threshold (int) Bad page threshold is specifies the @@ -966,6 +978,13 @@ MODULE_PARM_DESC(umsch_mm,  module_param_named(umsch_mm, amdgpu_umsch_mm, int, 0444);  /** + * DOC: umsch_mm_fwlog (int) + * Enable umschfw log output for debugging, the default is disabled. + */ +MODULE_PARM_DESC(umsch_mm_fwlog, "Enable umschfw log(0 = disable (default value), 1 = enable)"); +module_param_named(umsch_mm_fwlog, amdgpu_umsch_mm_fwlog, int, 0444); + +/**   * DOC: smu_pptable_id (int)   * Used to override pptable id. id = 0 use VBIOS pptable.   * id > 0 use the soft pptable with specicfied id. @@ -2174,6 +2193,11 @@ static void amdgpu_init_debug_options(struct amdgpu_device *adev)  		pr_info("debug: place fw in vram for frontdoor loading\n");  		adev->debug_use_vram_fw_buf = true;  	} + +	if (amdgpu_debug_mask & AMDGPU_DEBUG_ENABLE_RAS_ACA) { +		pr_info("debug: enable RAS ACA\n"); +		adev->debug_enable_ras_aca = true; +	}  }  static unsigned long amdgpu_fix_asic_type(struct pci_dev *pdev, unsigned long flags) @@ -2318,9 +2342,9 @@ retry_init:  	    !list_empty(&adev_to_drm(adev)->mode_config.connector_list)) {  		/* select 8 bpp console on low vram cards */  		if (adev->gmc.real_vram_size <= (32*1024*1024)) -			drm_fbdev_generic_setup(adev_to_drm(adev), 8); +			drm_fbdev_ttm_setup(adev_to_drm(adev), 8);  		else -			drm_fbdev_generic_setup(adev_to_drm(adev), 32); +			drm_fbdev_ttm_setup(adev_to_drm(adev), 32);  	}  	ret = amdgpu_debugfs_init(adev); @@ -2481,6 +2505,7 @@ static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work)  	/* Use a common context, just need to make sure full reset is done */  	set_bit(AMDGPU_SKIP_HW_RESET, &reset_context.flags); +	set_bit(AMDGPU_SKIP_COREDUMP, &reset_context.flags);  	r = amdgpu_do_asic_reset(&device_list, &reset_context);  	if (r) { @@ -2744,7 +2769,8 @@ static int amdgpu_pmops_runtime_suspend(struct device *dev)  		drm_dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF;  	} else if (adev->pm.rpm_mode == AMDGPU_RUNPM_BOCO) {  		/* nothing to do */ -	} else if (adev->pm.rpm_mode == AMDGPU_RUNPM_BACO) { +	} else if ((adev->pm.rpm_mode == AMDGPU_RUNPM_BACO) || +			(adev->pm.rpm_mode == AMDGPU_RUNPM_BAMACO)) {  		amdgpu_device_baco_enter(drm_dev);  	} @@ -2784,7 +2810,8 @@ static int amdgpu_pmops_runtime_resume(struct device *dev)  		 * PCI core handles it for _PR3.  		 */  		pci_set_master(pdev); -	} else if (adev->pm.rpm_mode == AMDGPU_RUNPM_BACO) { +	} else if ((adev->pm.rpm_mode == AMDGPU_RUNPM_BACO) || +			(adev->pm.rpm_mode == AMDGPU_RUNPM_BAMACO)) {  		amdgpu_device_baco_exit(drm_dev);  	}  	ret = amdgpu_device_resume(drm_dev, false); |