diff options
Diffstat (limited to 'drivers/gpu/drm')
29 files changed, 182 insertions, 1372 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h index db16b3e83694..cf62f43a03da 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h @@ -269,7 +269,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(  		struct kgd_dev *kgd, struct kgd_mem *mem, void *drm_priv,  		uint64_t *size);  int amdgpu_amdkfd_gpuvm_map_memory_to_gpu( -		struct kgd_dev *kgd, struct kgd_mem *mem, void *drm_priv, bool *table_freed); +		struct kgd_dev *kgd, struct kgd_mem *mem, void *drm_priv);  int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(  		struct kgd_dev *kgd, struct kgd_mem *mem, void *drm_priv);  int amdgpu_amdkfd_gpuvm_sync_memory( diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index 3b8e1ee8c475..4fb15750b9bb 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -1057,8 +1057,7 @@ static void unmap_bo_from_gpuvm(struct kgd_mem *mem,  static int update_gpuvm_pte(struct kgd_mem *mem,  			    struct kfd_mem_attachment *entry, -			    struct amdgpu_sync *sync, -			    bool *table_freed) +			    struct amdgpu_sync *sync)  {  	struct amdgpu_bo_va *bo_va = entry->bo_va;  	struct amdgpu_device *adev = entry->adev; @@ -1069,7 +1068,7 @@ static int update_gpuvm_pte(struct kgd_mem *mem,  		return ret;  	/* Update the page tables  */ -	ret = amdgpu_vm_bo_update(adev, bo_va, false, table_freed); +	ret = amdgpu_vm_bo_update(adev, bo_va, false);  	if (ret) {  		pr_err("amdgpu_vm_bo_update failed\n");  		return ret; @@ -1081,8 +1080,7 @@ static int update_gpuvm_pte(struct kgd_mem *mem,  static int map_bo_to_gpuvm(struct kgd_mem *mem,  			   struct kfd_mem_attachment *entry,  			   struct amdgpu_sync *sync, -			   bool no_update_pte, -			   bool *table_freed) +			   bool no_update_pte)  {  	int ret; @@ -1099,7 +1097,7 @@ static int map_bo_to_gpuvm(struct kgd_mem *mem,  	if (no_update_pte)  		return 0; -	ret = update_gpuvm_pte(mem, entry, sync, table_freed); +	ret = update_gpuvm_pte(mem, entry, sync);  	if (ret) {  		pr_err("update_gpuvm_pte() failed\n");  		goto update_gpuvm_pte_failed; @@ -1393,8 +1391,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(  		domain = alloc_domain = AMDGPU_GEM_DOMAIN_VRAM;  		alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;  		alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ? -			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : -			AMDGPU_GEM_CREATE_NO_CPU_ACCESS; +			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;  	} else if (flags & KFD_IOC_ALLOC_MEM_FLAGS_GTT) {  		domain = alloc_domain = AMDGPU_GEM_DOMAIN_GTT;  		alloc_flags = 0; @@ -1597,8 +1594,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(  }  int amdgpu_amdkfd_gpuvm_map_memory_to_gpu( -		struct kgd_dev *kgd, struct kgd_mem *mem, -		void *drm_priv, bool *table_freed) +		struct kgd_dev *kgd, struct kgd_mem *mem, void *drm_priv)  {  	struct amdgpu_device *adev = get_amdgpu_device(kgd);  	struct amdgpu_vm *avm = drm_priv_to_vm(drm_priv); @@ -1686,7 +1682,7 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(  			 entry->va, entry->va + bo_size, entry);  		ret = map_bo_to_gpuvm(mem, entry, ctx.sync, -				      is_invalid_userptr, table_freed); +				      is_invalid_userptr);  		if (ret) {  			pr_err("Failed to map bo to gpuvm\n");  			goto out_unreserve; @@ -2136,7 +2132,7 @@ static int validate_invalid_user_pages(struct amdkfd_process_info *process_info)  				continue;  			kfd_mem_dmaunmap_attachment(mem, attachment); -			ret = update_gpuvm_pte(mem, attachment, &sync, NULL); +			ret = update_gpuvm_pte(mem, attachment, &sync);  			if (ret) {  				pr_err("%s: update PTE failed\n", __func__);  				/* make sure this gets validated again */ @@ -2342,7 +2338,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef)  				continue;  			kfd_mem_dmaunmap_attachment(mem, attachment); -			ret = update_gpuvm_pte(mem, attachment, &sync_obj, NULL); +			ret = update_gpuvm_pte(mem, attachment, &sync_obj);  			if (ret) {  				pr_debug("Memory eviction: update PTE failed. Try again\n");  				goto validate_map_fail; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 76fe5b71e35d..30fa1f61e0e5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c @@ -781,7 +781,7 @@ static int amdgpu_cs_vm_handling(struct amdgpu_cs_parser *p)  	if (r)  		return r; -	r = amdgpu_vm_bo_update(adev, fpriv->prt_va, false, NULL); +	r = amdgpu_vm_bo_update(adev, fpriv->prt_va, false);  	if (r)  		return r; @@ -792,7 +792,7 @@ static int amdgpu_cs_vm_handling(struct amdgpu_cs_parser *p)  	if (amdgpu_mcbp || amdgpu_sriov_vf(adev)) {  		bo_va = fpriv->csa_va;  		BUG_ON(!bo_va); -		r = amdgpu_vm_bo_update(adev, bo_va, false, NULL); +		r = amdgpu_vm_bo_update(adev, bo_va, false);  		if (r)  			return r; @@ -811,7 +811,7 @@ static int amdgpu_cs_vm_handling(struct amdgpu_cs_parser *p)  		if (bo_va == NULL)  			continue; -		r = amdgpu_vm_bo_update(adev, bo_va, false, NULL); +		r = amdgpu_vm_bo_update(adev, bo_va, false);  		if (r)  			return r; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 71beb0db0125..abb928894eac 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -1168,6 +1168,7 @@ static const struct pci_device_id pciidlist[] = {  	{0x1002, 0x734F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI14},  	/* Renoir */ +	{0x1002, 0x15E7, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU},  	{0x1002, 0x1636, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU},  	{0x1002, 0x1638, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU},  	{0x1002, 0x164C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU}, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index b3404c43a911..d0d9bc445d7b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -612,7 +612,7 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev,  	if (operation == AMDGPU_VA_OP_MAP ||  	    operation == AMDGPU_VA_OP_REPLACE) { -		r = amdgpu_vm_bo_update(adev, bo_va, false, NULL); +		r = amdgpu_vm_bo_update(adev, bo_va, false);  		if (r)  			goto error;  	} diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c index 32ce0e679dc7..83af307e97cd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c @@ -278,6 +278,21 @@ static bool amdgpu_msi_ok(struct amdgpu_device *adev)  	return true;  } +static void amdgpu_restore_msix(struct amdgpu_device *adev) +{ +	u16 ctrl; + +	pci_read_config_word(adev->pdev, adev->pdev->msix_cap + PCI_MSIX_FLAGS, &ctrl); +	if (!(ctrl & PCI_MSIX_FLAGS_ENABLE)) +		return; + +	/* VF FLR */ +	ctrl &= ~PCI_MSIX_FLAGS_ENABLE; +	pci_write_config_word(adev->pdev, adev->pdev->msix_cap + PCI_MSIX_FLAGS, ctrl); +	ctrl |= PCI_MSIX_FLAGS_ENABLE; +	pci_write_config_word(adev->pdev, adev->pdev->msix_cap + PCI_MSIX_FLAGS, ctrl); +} +  /**   * amdgpu_irq_init - initialize interrupt handling   * @@ -569,6 +584,9 @@ void amdgpu_irq_gpu_reset_resume_helper(struct amdgpu_device *adev)  {  	int i, j, k; +	if (amdgpu_sriov_vf(adev)) +		amdgpu_restore_msix(adev); +  	for (i = 0; i < AMDGPU_IRQ_CLIENTID_MAX; ++i) {  		if (!adev->irq.client[i].sources)  			continue; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index c13b02caf8c3..fc66aca28594 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -809,7 +809,7 @@ static int amdgpu_ras_enable_all_features(struct amdgpu_device *adev,  /* query/inject/cure begin */  int amdgpu_ras_query_error_status(struct amdgpu_device *adev, -	struct ras_query_if *info) +				  struct ras_query_if *info)  {  	struct ras_manager *obj = amdgpu_ras_find_obj(adev, &info->head);  	struct ras_err_data err_data = {0, 0, 0, NULL}; @@ -1043,17 +1043,32 @@ int amdgpu_ras_error_inject(struct amdgpu_device *adev,  	return ret;  } -/* get the total error counts on all IPs */ -void amdgpu_ras_query_error_count(struct amdgpu_device *adev, -				  unsigned long *ce_count, -				  unsigned long *ue_count) +/** + * amdgpu_ras_query_error_count -- Get error counts of all IPs + * adev: pointer to AMD GPU device + * ce_count: pointer to an integer to be set to the count of correctible errors. + * ue_count: pointer to an integer to be set to the count of uncorrectible + * errors. + * + * If set, @ce_count or @ue_count, count and return the corresponding + * error counts in those integer pointers. Return 0 if the device + * supports RAS. Return -EOPNOTSUPP if the device doesn't support RAS. + */ +int amdgpu_ras_query_error_count(struct amdgpu_device *adev, +				 unsigned long *ce_count, +				 unsigned long *ue_count)  {  	struct amdgpu_ras *con = amdgpu_ras_get_context(adev);  	struct ras_manager *obj;  	unsigned long ce, ue;  	if (!adev->ras_enabled || !con) -		return; +		return -EOPNOTSUPP; + +	/* Don't count since no reporting. +	 */ +	if (!ce_count && !ue_count) +		return 0;  	ce = 0;  	ue = 0; @@ -1061,9 +1076,11 @@ void amdgpu_ras_query_error_count(struct amdgpu_device *adev,  		struct ras_query_if info = {  			.head = obj->head,  		}; +		int res; -		if (amdgpu_ras_query_error_status(adev, &info)) -			return; +		res = amdgpu_ras_query_error_status(adev, &info); +		if (res) +			return res;  		ce += info.ce_count;  		ue += info.ue_count; @@ -1074,6 +1091,8 @@ void amdgpu_ras_query_error_count(struct amdgpu_device *adev,  	if (ue_count)  		*ue_count = ue; + +	return 0;  }  /* query/inject/cure end */ @@ -2137,9 +2156,10 @@ static void amdgpu_ras_counte_dw(struct work_struct *work)  	/* Cache new values.  	 */ -	amdgpu_ras_query_error_count(adev, &ce_count, &ue_count); -	atomic_set(&con->ras_ce_count, ce_count); -	atomic_set(&con->ras_ue_count, ue_count); +	if (amdgpu_ras_query_error_count(adev, &ce_count, &ue_count) == 0) { +		atomic_set(&con->ras_ce_count, ce_count); +		atomic_set(&con->ras_ue_count, ue_count); +	}  	pm_runtime_mark_last_busy(dev->dev);  Out: @@ -2312,9 +2332,10 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev,  	/* Those are the cached values at init.  	 */ -	amdgpu_ras_query_error_count(adev, &ce_count, &ue_count); -	atomic_set(&con->ras_ce_count, ce_count); -	atomic_set(&con->ras_ue_count, ue_count); +	if (amdgpu_ras_query_error_count(adev, &ce_count, &ue_count) == 0) { +		atomic_set(&con->ras_ce_count, ce_count); +		atomic_set(&con->ras_ue_count, ue_count); +	}  	return 0;  cleanup: diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h index 256cea5d34f2..b504ed8c9b50 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h @@ -490,9 +490,9 @@ int amdgpu_ras_request_reset_on_boot(struct amdgpu_device *adev,  void amdgpu_ras_resume(struct amdgpu_device *adev);  void amdgpu_ras_suspend(struct amdgpu_device *adev); -void amdgpu_ras_query_error_count(struct amdgpu_device *adev, -				  unsigned long *ce_count, -				  unsigned long *ue_count); +int amdgpu_ras_query_error_count(struct amdgpu_device *adev, +				 unsigned long *ce_count, +				 unsigned long *ue_count);  /* error handling functions */  int amdgpu_ras_add_bad_pages(struct amdgpu_device *adev, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 79cfa2d68487..078c068937fe 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -1758,7 +1758,7 @@ int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev,  	r = vm->update_funcs->commit(¶ms, fence);  	if (table_freed) -		*table_freed = *table_freed || params.table_freed; +		*table_freed = params.table_freed;  error_unlock:  	amdgpu_vm_eviction_unlock(vm); @@ -1816,7 +1816,6 @@ void amdgpu_vm_get_memory(struct amdgpu_vm *vm, uint64_t *vram_mem,   * @adev: amdgpu_device pointer   * @bo_va: requested BO and VM object   * @clear: if true clear the entries - * @table_freed: return true if page table is freed   *   * Fill in the page table entries for @bo_va.   * @@ -1824,7 +1823,7 @@ void amdgpu_vm_get_memory(struct amdgpu_vm *vm, uint64_t *vram_mem,   * 0 for success, -EINVAL for failure.   */  int amdgpu_vm_bo_update(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, -			bool clear, bool *table_freed) +			bool clear)  {  	struct amdgpu_bo *bo = bo_va->base.bo;  	struct amdgpu_vm *vm = bo_va->base.vm; @@ -1903,7 +1902,7 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va,  						resv, mapping->start,  						mapping->last, update_flags,  						mapping->offset, mem, -						pages_addr, last_update, table_freed); +						pages_addr, last_update, NULL);  		if (r)  			return r;  	} @@ -2155,7 +2154,7 @@ int amdgpu_vm_handle_moved(struct amdgpu_device *adev,  	list_for_each_entry_safe(bo_va, tmp, &vm->moved, base.vm_status) {  		/* Per VM BOs never need to bo cleared in the page tables */ -		r = amdgpu_vm_bo_update(adev, bo_va, false, NULL); +		r = amdgpu_vm_bo_update(adev, bo_va, false);  		if (r)  			return r;  	} @@ -2174,7 +2173,7 @@ int amdgpu_vm_handle_moved(struct amdgpu_device *adev,  		else  			clear = true; -		r = amdgpu_vm_bo_update(adev, bo_va, clear, NULL); +		r = amdgpu_vm_bo_update(adev, bo_va, clear);  		if (r)  			return r; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h index ddb85a85cbba..f8fa653d4da7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h @@ -406,7 +406,7 @@ int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev,  				struct dma_fence **fence, bool *free_table);  int amdgpu_vm_bo_update(struct amdgpu_device *adev,  			struct amdgpu_bo_va *bo_va, -			bool clear, bool *table_freed); +			bool clear);  bool amdgpu_vm_evictable(struct amdgpu_bo *bo);  void amdgpu_vm_bo_invalidate(struct amdgpu_device *adev,  			     struct amdgpu_bo *bo, bool evicted); diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c index 33324427b555..7e0d8c092c7e 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c @@ -766,7 +766,7 @@ static const struct amdgpu_irq_src_funcs dce_virtual_crtc_irq_funcs = {  static void dce_virtual_set_irq_funcs(struct amdgpu_device *adev)  { -	adev->crtc_irq.num_types = AMDGPU_CRTC_IRQ_VBLANK6 + 1; +	adev->crtc_irq.num_types = adev->mode_info.num_crtc;  	adev->crtc_irq.funcs = &dce_virtual_crtc_irq_funcs;  } diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c index 3ee481557fc9..ff2307d7ee0f 100644 --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c @@ -252,7 +252,7 @@ static void xgpu_ai_mailbox_flr_work(struct work_struct *work)  	 * otherwise the mailbox msg will be ruined/reseted by  	 * the VF FLR.  	 */ -	if (!down_read_trylock(&adev->reset_sem)) +	if (!down_write_trylock(&adev->reset_sem))  		return;  	amdgpu_virt_fini_data_exchange(adev); @@ -268,7 +268,7 @@ static void xgpu_ai_mailbox_flr_work(struct work_struct *work)  flr_done:  	atomic_set(&adev->in_gpu_reset, 0); -	up_read(&adev->reset_sem); +	up_write(&adev->reset_sem);  	/* Trigger recovery for world switch failure if no TDR */  	if (amdgpu_device_should_recover_gpu(adev) diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c index 48e588d3c409..9f7aac435d69 100644 --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c @@ -273,7 +273,7 @@ static void xgpu_nv_mailbox_flr_work(struct work_struct *work)  	 * otherwise the mailbox msg will be ruined/reseted by  	 * the VF FLR.  	 */ -	if (!down_read_trylock(&adev->reset_sem)) +	if (!down_write_trylock(&adev->reset_sem))  		return;  	amdgpu_virt_fini_data_exchange(adev); @@ -289,7 +289,7 @@ static void xgpu_nv_mailbox_flr_work(struct work_struct *work)  flr_done:  	atomic_set(&adev->in_gpu_reset, 0); -	up_read(&adev->reset_sem); +	up_write(&adev->reset_sem);  	/* Trigger recovery for world switch failure if no TDR */  	if (amdgpu_device_should_recover_gpu(adev) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 67541c30327a..e48acdd03c1a 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -1393,7 +1393,6 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep,  	long err = 0;  	int i;  	uint32_t *devices_arr = NULL; -	bool table_freed = false;  	dev = kfd_device_by_id(GET_GPU_ID(args->handle));  	if (!dev) @@ -1451,8 +1450,7 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep,  			goto get_mem_obj_from_handle_failed;  		}  		err = amdgpu_amdkfd_gpuvm_map_memory_to_gpu( -			peer->kgd, (struct kgd_mem *)mem, -			peer_pdd->drm_priv, &table_freed); +			peer->kgd, (struct kgd_mem *)mem, peer_pdd->drm_priv);  		if (err) {  			pr_err("Failed to map to gpu %d/%d\n",  			       i, args->n_devices); @@ -1470,17 +1468,16 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep,  	}  	/* Flush TLBs after waiting for the page table updates to complete */ -	if (table_freed) { -		for (i = 0; i < args->n_devices; i++) { -			peer = kfd_device_by_id(devices_arr[i]); -			if (WARN_ON_ONCE(!peer)) -				continue; -			peer_pdd = kfd_get_process_device_data(peer, p); -			if (WARN_ON_ONCE(!peer_pdd)) -				continue; -			kfd_flush_tlb(peer_pdd, TLB_FLUSH_LEGACY); -		} +	for (i = 0; i < args->n_devices; i++) { +		peer = kfd_device_by_id(devices_arr[i]); +		if (WARN_ON_ONCE(!peer)) +			continue; +		peer_pdd = kfd_get_process_device_data(peer, p); +		if (WARN_ON_ONCE(!peer_pdd)) +			continue; +		kfd_flush_tlb(peer_pdd, TLB_FLUSH_LEGACY);  	} +  	kfree(devices_arr);  	return err; @@ -1568,27 +1565,10 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep,  		}  		args->n_success = i+1;  	} -	mutex_unlock(&p->mutex); - -	err = amdgpu_amdkfd_gpuvm_sync_memory(dev->kgd, (struct kgd_mem *) mem, true); -	if (err) { -		pr_debug("Sync memory failed, wait interrupted by user signal\n"); -		goto sync_memory_failed; -	} - -	/* Flush TLBs after waiting for the page table updates to complete */ -	for (i = 0; i < args->n_devices; i++) { -		peer = kfd_device_by_id(devices_arr[i]); -		if (WARN_ON_ONCE(!peer)) -			continue; -		peer_pdd = kfd_get_process_device_data(peer, p); -		if (WARN_ON_ONCE(!peer_pdd)) -			continue; -		kfd_flush_tlb(peer_pdd, TLB_FLUSH_HEAVYWEIGHT); -	} -  	kfree(devices_arr); +	mutex_unlock(&p->mutex); +  	return 0;  bind_process_to_device_failed: @@ -1596,7 +1576,6 @@ get_mem_obj_from_handle_failed:  unmap_memory_from_gpu_failed:  	mutex_unlock(&p->mutex);  copy_from_user_failed: -sync_memory_failed:  	kfree(devices_arr);  	return err;  } diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c index 21ec8a18cad2..8a2c6fc438c0 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -714,8 +714,7 @@ static int kfd_process_alloc_gpuvm(struct kfd_process_device *pdd,  	if (err)  		goto err_alloc_mem; -	err = amdgpu_amdkfd_gpuvm_map_memory_to_gpu(kdev->kgd, mem, -			pdd->drm_priv, NULL); +	err = amdgpu_amdkfd_gpuvm_map_memory_to_gpu(kdev->kgd, mem, pdd->drm_priv);  	if (err)  		goto err_map_mem; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c index 9a71d8919bd6..c7b364e4a287 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c @@ -2375,21 +2375,27 @@ static bool svm_range_skip_recover(struct svm_range *prange)  static void  svm_range_count_fault(struct amdgpu_device *adev, struct kfd_process *p, -		      struct svm_range *prange, int32_t gpuidx) +		      int32_t gpuidx)  {  	struct kfd_process_device *pdd; -	if (gpuidx == MAX_GPU_INSTANCE) -		/* fault is on different page of same range -		 * or fault is skipped to recover later -		 */ -		pdd = svm_range_get_pdd_by_adev(prange, adev); -	else -		/* fault recovered -		 * or fault cannot recover because GPU no access on the range -		 */ -		pdd = kfd_process_device_from_gpuidx(p, gpuidx); +	/* fault is on different page of same range +	 * or fault is skipped to recover later +	 * or fault is on invalid virtual address +	 */ +	if (gpuidx == MAX_GPU_INSTANCE) { +		uint32_t gpuid; +		int r; +		r = kfd_process_gpuid_from_kgd(p, adev, &gpuid, &gpuidx); +		if (r < 0) +			return; +	} + +	/* fault is recovered +	 * or fault cannot recover because GPU no access on the range +	 */ +	pdd = kfd_process_device_from_gpuidx(p, gpuidx);  	if (pdd)  		WRITE_ONCE(pdd->faults, pdd->faults + 1);  } @@ -2525,7 +2531,7 @@ out_unlock_svms:  	mutex_unlock(&svms->lock);  	mmap_read_unlock(mm); -	svm_range_count_fault(adev, p, prange, gpuidx); +	svm_range_count_fault(adev, p, gpuidx);  	mmput(mm);  out: diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 01e1062dc235..d3a2a5ff57e9 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -9191,7 +9191,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)  #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) ||		\  	defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)  	/* restore the backlight level */ -	if (dm->backlight_dev) +	if (dm->backlight_dev && (amdgpu_dm_backlight_get_level(dm) != dm->brightness[0]))  		amdgpu_dm_backlight_set_level(dm, dm->brightness[0]);  #endif  	/* diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn31/dcn31_smu.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn31/dcn31_smu.c index 66db5e988bc1..dad4a4c18bcf 100644 --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn31/dcn31_smu.c +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn31/dcn31_smu.c @@ -31,8 +31,8 @@  #include "dcn31_smu.h"  #include "yellow_carp_offset.h" -#include "mp/mp_13_0_1_offset.h" -#include "mp/mp_13_0_1_sh_mask.h" +#include "mp/mp_13_0_2_offset.h" +#include "mp/mp_13_0_2_sh_mask.h"  #define REG(reg_name) \  	(MP0_BASE.instance[0].segment[reg ## reg_name ## _BASE_IDX] + reg ## reg_name) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c index b8832bdde2bc..6da226bf11d5 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c @@ -1620,11 +1620,12 @@ enum dc_status dpcd_configure_lttpr_mode(struct dc_link *link, struct link_train  {  	enum dc_status status = DC_OK; -	if (lt_settings->lttpr_mode == LTTPR_MODE_NON_TRANSPARENT) -		status = configure_lttpr_mode_non_transparent(link, lt_settings); -	else +	if (lt_settings->lttpr_mode == LTTPR_MODE_TRANSPARENT)  		status = configure_lttpr_mode_transparent(link); +	else if (lt_settings->lttpr_mode == LTTPR_MODE_NON_TRANSPARENT) +		status = configure_lttpr_mode_non_transparent(link, lt_settings); +  	return status;  } @@ -1784,7 +1785,6 @@ bool perform_link_training_with_retries(  		link_enc = stream->link_enc;  	else  		link_enc = link->link_enc; -	ASSERT(link_enc);  	/* We need to do this before the link training to ensure the idle pattern in SST  	 * mode will be sent right after the link training diff --git a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c index fc1fc1a4bf8b..836864a5a5dc 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c +++ b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c @@ -390,7 +390,7 @@ void dcn31_update_info_frame(struct pipe_ctx *pipe_ctx)  	is_hdmi_tmds = dc_is_hdmi_tmds_signal(pipe_ctx->stream->signal);  	is_dp = dc_is_dp_signal(pipe_ctx->stream->signal); -	if (!is_hdmi_tmds) +	if (!is_hdmi_tmds && !is_dp)  		return;  	if (is_hdmi_tmds) diff --git a/drivers/gpu/drm/amd/include/asic_reg/mp/mp_13_0_1_offset.h b/drivers/gpu/drm/amd/include/asic_reg/mp/mp_13_0_1_offset.h deleted file mode 100644 index dfacc6b5d89d..000000000000 --- a/drivers/gpu/drm/amd/include/asic_reg/mp/mp_13_0_1_offset.h +++ /dev/null @@ -1,355 +0,0 @@ -/* - * Copyright 2020 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * - */ -#ifndef _mp_13_0_1_OFFSET_HEADER -#define _mp_13_0_1_OFFSET_HEADER - - - -// addressBlock: mp_SmuMp0_SmnDec -// base address: 0x0 -#define regMP0_SMN_C2PMSG_32                                                                            0x0060 -#define regMP0_SMN_C2PMSG_32_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_33                                                                            0x0061 -#define regMP0_SMN_C2PMSG_33_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_34                                                                            0x0062 -#define regMP0_SMN_C2PMSG_34_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_35                                                                            0x0063 -#define regMP0_SMN_C2PMSG_35_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_36                                                                            0x0064 -#define regMP0_SMN_C2PMSG_36_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_37                                                                            0x0065 -#define regMP0_SMN_C2PMSG_37_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_38                                                                            0x0066 -#define regMP0_SMN_C2PMSG_38_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_39                                                                            0x0067 -#define regMP0_SMN_C2PMSG_39_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_40                                                                            0x0068 -#define regMP0_SMN_C2PMSG_40_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_41                                                                            0x0069 -#define regMP0_SMN_C2PMSG_41_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_42                                                                            0x006a -#define regMP0_SMN_C2PMSG_42_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_43                                                                            0x006b -#define regMP0_SMN_C2PMSG_43_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_44                                                                            0x006c -#define regMP0_SMN_C2PMSG_44_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_45                                                                            0x006d -#define regMP0_SMN_C2PMSG_45_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_46                                                                            0x006e -#define regMP0_SMN_C2PMSG_46_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_47                                                                            0x006f -#define regMP0_SMN_C2PMSG_47_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_48                                                                            0x0070 -#define regMP0_SMN_C2PMSG_48_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_49                                                                            0x0071 -#define regMP0_SMN_C2PMSG_49_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_50                                                                            0x0072 -#define regMP0_SMN_C2PMSG_50_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_51                                                                            0x0073 -#define regMP0_SMN_C2PMSG_51_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_52                                                                            0x0074 -#define regMP0_SMN_C2PMSG_52_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_53                                                                            0x0075 -#define regMP0_SMN_C2PMSG_53_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_54                                                                            0x0076 -#define regMP0_SMN_C2PMSG_54_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_55                                                                            0x0077 -#define regMP0_SMN_C2PMSG_55_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_56                                                                            0x0078 -#define regMP0_SMN_C2PMSG_56_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_57                                                                            0x0079 -#define regMP0_SMN_C2PMSG_57_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_58                                                                            0x007a -#define regMP0_SMN_C2PMSG_58_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_59                                                                            0x007b -#define regMP0_SMN_C2PMSG_59_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_60                                                                            0x007c -#define regMP0_SMN_C2PMSG_60_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_61                                                                            0x007d -#define regMP0_SMN_C2PMSG_61_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_62                                                                            0x007e -#define regMP0_SMN_C2PMSG_62_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_63                                                                            0x007f -#define regMP0_SMN_C2PMSG_63_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_64                                                                            0x0080 -#define regMP0_SMN_C2PMSG_64_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_65                                                                            0x0081 -#define regMP0_SMN_C2PMSG_65_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_66                                                                            0x0082 -#define regMP0_SMN_C2PMSG_66_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_67                                                                            0x0083 -#define regMP0_SMN_C2PMSG_67_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_68                                                                            0x0084 -#define regMP0_SMN_C2PMSG_68_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_69                                                                            0x0085 -#define regMP0_SMN_C2PMSG_69_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_70                                                                            0x0086 -#define regMP0_SMN_C2PMSG_70_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_71                                                                            0x0087 -#define regMP0_SMN_C2PMSG_71_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_72                                                                            0x0088 -#define regMP0_SMN_C2PMSG_72_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_73                                                                            0x0089 -#define regMP0_SMN_C2PMSG_73_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_74                                                                            0x008a -#define regMP0_SMN_C2PMSG_74_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_75                                                                            0x008b -#define regMP0_SMN_C2PMSG_75_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_76                                                                            0x008c -#define regMP0_SMN_C2PMSG_76_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_77                                                                            0x008d -#define regMP0_SMN_C2PMSG_77_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_78                                                                            0x008e -#define regMP0_SMN_C2PMSG_78_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_79                                                                            0x008f -#define regMP0_SMN_C2PMSG_79_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_80                                                                            0x0090 -#define regMP0_SMN_C2PMSG_80_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_81                                                                            0x0091 -#define regMP0_SMN_C2PMSG_81_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_82                                                                            0x0092 -#define regMP0_SMN_C2PMSG_82_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_83                                                                            0x0093 -#define regMP0_SMN_C2PMSG_83_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_84                                                                            0x0094 -#define regMP0_SMN_C2PMSG_84_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_85                                                                            0x0095 -#define regMP0_SMN_C2PMSG_85_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_86                                                                            0x0096 -#define regMP0_SMN_C2PMSG_86_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_87                                                                            0x0097 -#define regMP0_SMN_C2PMSG_87_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_88                                                                            0x0098 -#define regMP0_SMN_C2PMSG_88_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_89                                                                            0x0099 -#define regMP0_SMN_C2PMSG_89_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_90                                                                            0x009a -#define regMP0_SMN_C2PMSG_90_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_91                                                                            0x009b -#define regMP0_SMN_C2PMSG_91_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_92                                                                            0x009c -#define regMP0_SMN_C2PMSG_92_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_93                                                                            0x009d -#define regMP0_SMN_C2PMSG_93_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_94                                                                            0x009e -#define regMP0_SMN_C2PMSG_94_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_95                                                                            0x009f -#define regMP0_SMN_C2PMSG_95_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_96                                                                            0x00a0 -#define regMP0_SMN_C2PMSG_96_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_97                                                                            0x00a1 -#define regMP0_SMN_C2PMSG_97_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_98                                                                            0x00a2 -#define regMP0_SMN_C2PMSG_98_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_99                                                                            0x00a3 -#define regMP0_SMN_C2PMSG_99_BASE_IDX                                                                   0 -#define regMP0_SMN_C2PMSG_100                                                                           0x00a4 -#define regMP0_SMN_C2PMSG_100_BASE_IDX                                                                  0 -#define regMP0_SMN_C2PMSG_101                                                                           0x00a5 -#define regMP0_SMN_C2PMSG_101_BASE_IDX                                                                  0 -#define regMP0_SMN_C2PMSG_102                                                                           0x00a6 -#define regMP0_SMN_C2PMSG_102_BASE_IDX                                                                  0 -#define regMP0_SMN_C2PMSG_103                                                                           0x00a7 -#define regMP0_SMN_C2PMSG_103_BASE_IDX                                                                  0 -#define regMP0_SMN_IH_CREDIT                                                                            0x00c1 -#define regMP0_SMN_IH_CREDIT_BASE_IDX                                                                   0 -#define regMP0_SMN_IH_SW_INT                                                                            0x00c2 -#define regMP0_SMN_IH_SW_INT_BASE_IDX                                                                   0 -#define regMP0_SMN_IH_SW_INT_CTRL                                                                       0x00c3 -#define regMP0_SMN_IH_SW_INT_CTRL_BASE_IDX                                                              0 - - -// addressBlock: mp_SmuMp1_SmnDec -// base address: 0x0 -#define regMP1_SMN_C2PMSG_32                                                                            0x0260 -#define regMP1_SMN_C2PMSG_32_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_33                                                                            0x0261 -#define regMP1_SMN_C2PMSG_33_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_34                                                                            0x0262 -#define regMP1_SMN_C2PMSG_34_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_35                                                                            0x0263 -#define regMP1_SMN_C2PMSG_35_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_36                                                                            0x0264 -#define regMP1_SMN_C2PMSG_36_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_37                                                                            0x0265 -#define regMP1_SMN_C2PMSG_37_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_38                                                                            0x0266 -#define regMP1_SMN_C2PMSG_38_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_39                                                                            0x0267 -#define regMP1_SMN_C2PMSG_39_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_40                                                                            0x0268 -#define regMP1_SMN_C2PMSG_40_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_41                                                                            0x0269 -#define regMP1_SMN_C2PMSG_41_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_42                                                                            0x026a -#define regMP1_SMN_C2PMSG_42_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_43                                                                            0x026b -#define regMP1_SMN_C2PMSG_43_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_44                                                                            0x026c -#define regMP1_SMN_C2PMSG_44_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_45                                                                            0x026d -#define regMP1_SMN_C2PMSG_45_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_46                                                                            0x026e -#define regMP1_SMN_C2PMSG_46_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_47                                                                            0x026f -#define regMP1_SMN_C2PMSG_47_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_48                                                                            0x0270 -#define regMP1_SMN_C2PMSG_48_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_49                                                                            0x0271 -#define regMP1_SMN_C2PMSG_49_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_50                                                                            0x0272 -#define regMP1_SMN_C2PMSG_50_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_51                                                                            0x0273 -#define regMP1_SMN_C2PMSG_51_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_52                                                                            0x0274 -#define regMP1_SMN_C2PMSG_52_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_53                                                                            0x0275 -#define regMP1_SMN_C2PMSG_53_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_54                                                                            0x0276 -#define regMP1_SMN_C2PMSG_54_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_55                                                                            0x0277 -#define regMP1_SMN_C2PMSG_55_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_56                                                                            0x0278 -#define regMP1_SMN_C2PMSG_56_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_57                                                                            0x0279 -#define regMP1_SMN_C2PMSG_57_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_58                                                                            0x027a -#define regMP1_SMN_C2PMSG_58_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_59                                                                            0x027b -#define regMP1_SMN_C2PMSG_59_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_60                                                                            0x027c -#define regMP1_SMN_C2PMSG_60_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_61                                                                            0x027d -#define regMP1_SMN_C2PMSG_61_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_62                                                                            0x027e -#define regMP1_SMN_C2PMSG_62_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_63                                                                            0x027f -#define regMP1_SMN_C2PMSG_63_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_64                                                                            0x0280 -#define regMP1_SMN_C2PMSG_64_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_65                                                                            0x0281 -#define regMP1_SMN_C2PMSG_65_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_66                                                                            0x0282 -#define regMP1_SMN_C2PMSG_66_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_67                                                                            0x0283 -#define regMP1_SMN_C2PMSG_67_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_68                                                                            0x0284 -#define regMP1_SMN_C2PMSG_68_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_69                                                                            0x0285 -#define regMP1_SMN_C2PMSG_69_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_70                                                                            0x0286 -#define regMP1_SMN_C2PMSG_70_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_71                                                                            0x0287 -#define regMP1_SMN_C2PMSG_71_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_72                                                                            0x0288 -#define regMP1_SMN_C2PMSG_72_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_73                                                                            0x0289 -#define regMP1_SMN_C2PMSG_73_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_74                                                                            0x028a -#define regMP1_SMN_C2PMSG_74_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_75                                                                            0x028b -#define regMP1_SMN_C2PMSG_75_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_76                                                                            0x028c -#define regMP1_SMN_C2PMSG_76_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_77                                                                            0x028d -#define regMP1_SMN_C2PMSG_77_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_78                                                                            0x028e -#define regMP1_SMN_C2PMSG_78_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_79                                                                            0x028f -#define regMP1_SMN_C2PMSG_79_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_80                                                                            0x0290 -#define regMP1_SMN_C2PMSG_80_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_81                                                                            0x0291 -#define regMP1_SMN_C2PMSG_81_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_82                                                                            0x0292 -#define regMP1_SMN_C2PMSG_82_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_83                                                                            0x0293 -#define regMP1_SMN_C2PMSG_83_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_84                                                                            0x0294 -#define regMP1_SMN_C2PMSG_84_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_85                                                                            0x0295 -#define regMP1_SMN_C2PMSG_85_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_86                                                                            0x0296 -#define regMP1_SMN_C2PMSG_86_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_87                                                                            0x0297 -#define regMP1_SMN_C2PMSG_87_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_88                                                                            0x0298 -#define regMP1_SMN_C2PMSG_88_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_89                                                                            0x0299 -#define regMP1_SMN_C2PMSG_89_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_90                                                                            0x029a -#define regMP1_SMN_C2PMSG_90_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_91                                                                            0x029b -#define regMP1_SMN_C2PMSG_91_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_92                                                                            0x029c -#define regMP1_SMN_C2PMSG_92_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_93                                                                            0x029d -#define regMP1_SMN_C2PMSG_93_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_94                                                                            0x029e -#define regMP1_SMN_C2PMSG_94_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_95                                                                            0x029f -#define regMP1_SMN_C2PMSG_95_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_96                                                                            0x02a0 -#define regMP1_SMN_C2PMSG_96_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_97                                                                            0x02a1 -#define regMP1_SMN_C2PMSG_97_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_98                                                                            0x02a2 -#define regMP1_SMN_C2PMSG_98_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_99                                                                            0x02a3 -#define regMP1_SMN_C2PMSG_99_BASE_IDX                                                                   0 -#define regMP1_SMN_C2PMSG_100                                                                           0x02a4 -#define regMP1_SMN_C2PMSG_100_BASE_IDX                                                                  0 -#define regMP1_SMN_C2PMSG_101                                                                           0x02a5 -#define regMP1_SMN_C2PMSG_101_BASE_IDX                                                                  0 -#define regMP1_SMN_C2PMSG_102                                                                           0x02a6 -#define regMP1_SMN_C2PMSG_102_BASE_IDX                                                                  0 -#define regMP1_SMN_C2PMSG_103                                                                           0x02a7 -#define regMP1_SMN_C2PMSG_103_BASE_IDX                                                                  0 -#define regMP1_SMN_IH_CREDIT                                                                            0x02c1 -#define regMP1_SMN_IH_CREDIT_BASE_IDX                                                                   0 -#define regMP1_SMN_IH_SW_INT                                                                            0x02c2 -#define regMP1_SMN_IH_SW_INT_BASE_IDX                                                                   0 -#define regMP1_SMN_IH_SW_INT_CTRL                                                                       0x02c3 -#define regMP1_SMN_IH_SW_INT_CTRL_BASE_IDX                                                              0 -#define regMP1_SMN_FPS_CNT                                                                              0x02c4 -#define regMP1_SMN_FPS_CNT_BASE_IDX                                                                     0 -#define regMP1_SMN_EXT_SCRATCH0                                                                         0x0340 -#define regMP1_SMN_EXT_SCRATCH0_BASE_IDX                                                                0 -#define regMP1_SMN_EXT_SCRATCH1                                                                         0x0341 -#define regMP1_SMN_EXT_SCRATCH1_BASE_IDX                                                                0 -#define regMP1_SMN_EXT_SCRATCH2                                                                         0x0342 -#define regMP1_SMN_EXT_SCRATCH2_BASE_IDX                                                                0 -#define regMP1_SMN_EXT_SCRATCH3                                                                         0x0343 -#define regMP1_SMN_EXT_SCRATCH3_BASE_IDX                                                                0 -#define regMP1_SMN_EXT_SCRATCH4                                                                         0x0344 -#define regMP1_SMN_EXT_SCRATCH4_BASE_IDX                                                                0 -#define regMP1_SMN_EXT_SCRATCH5                                                                         0x0345 -#define regMP1_SMN_EXT_SCRATCH5_BASE_IDX                                                                0 -#define regMP1_SMN_EXT_SCRATCH6                                                                         0x0346 -#define regMP1_SMN_EXT_SCRATCH6_BASE_IDX                                                                0 -#define regMP1_SMN_EXT_SCRATCH7                                                                         0x0347 -#define regMP1_SMN_EXT_SCRATCH7_BASE_IDX                                                                0 - - -#endif diff --git a/drivers/gpu/drm/amd/include/asic_reg/mp/mp_13_0_1_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/mp/mp_13_0_1_sh_mask.h deleted file mode 100644 index 2d5e8b58e693..000000000000 --- a/drivers/gpu/drm/amd/include/asic_reg/mp/mp_13_0_1_sh_mask.h +++ /dev/null @@ -1,531 +0,0 @@ -/* - * Copyright 2020 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * - */ -#ifndef _mp_13_0_1_SH_MASK_HEADER -#define _mp_13_0_1_SH_MASK_HEADER - - -// addressBlock: mp_SmuMp0_SmnDec -//MP0_SMN_C2PMSG_32 -#define MP0_SMN_C2PMSG_32__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_32__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_33 -#define MP0_SMN_C2PMSG_33__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_33__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_34 -#define MP0_SMN_C2PMSG_34__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_34__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_35 -#define MP0_SMN_C2PMSG_35__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_35__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_36 -#define MP0_SMN_C2PMSG_36__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_36__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_37 -#define MP0_SMN_C2PMSG_37__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_37__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_38 -#define MP0_SMN_C2PMSG_38__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_38__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_39 -#define MP0_SMN_C2PMSG_39__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_39__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_40 -#define MP0_SMN_C2PMSG_40__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_40__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_41 -#define MP0_SMN_C2PMSG_41__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_41__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_42 -#define MP0_SMN_C2PMSG_42__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_42__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_43 -#define MP0_SMN_C2PMSG_43__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_43__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_44 -#define MP0_SMN_C2PMSG_44__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_44__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_45 -#define MP0_SMN_C2PMSG_45__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_45__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_46 -#define MP0_SMN_C2PMSG_46__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_46__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_47 -#define MP0_SMN_C2PMSG_47__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_47__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_48 -#define MP0_SMN_C2PMSG_48__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_48__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_49 -#define MP0_SMN_C2PMSG_49__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_49__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_50 -#define MP0_SMN_C2PMSG_50__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_50__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_51 -#define MP0_SMN_C2PMSG_51__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_51__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_52 -#define MP0_SMN_C2PMSG_52__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_52__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_53 -#define MP0_SMN_C2PMSG_53__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_53__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_54 -#define MP0_SMN_C2PMSG_54__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_54__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_55 -#define MP0_SMN_C2PMSG_55__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_55__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_56 -#define MP0_SMN_C2PMSG_56__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_56__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_57 -#define MP0_SMN_C2PMSG_57__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_57__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_58 -#define MP0_SMN_C2PMSG_58__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_58__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_59 -#define MP0_SMN_C2PMSG_59__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_59__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_60 -#define MP0_SMN_C2PMSG_60__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_60__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_61 -#define MP0_SMN_C2PMSG_61__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_61__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_62 -#define MP0_SMN_C2PMSG_62__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_62__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_63 -#define MP0_SMN_C2PMSG_63__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_63__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_64 -#define MP0_SMN_C2PMSG_64__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_64__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_65 -#define MP0_SMN_C2PMSG_65__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_65__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_66 -#define MP0_SMN_C2PMSG_66__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_66__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_67 -#define MP0_SMN_C2PMSG_67__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_67__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_68 -#define MP0_SMN_C2PMSG_68__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_68__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_69 -#define MP0_SMN_C2PMSG_69__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_69__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_70 -#define MP0_SMN_C2PMSG_70__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_70__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_71 -#define MP0_SMN_C2PMSG_71__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_71__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_72 -#define MP0_SMN_C2PMSG_72__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_72__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_73 -#define MP0_SMN_C2PMSG_73__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_73__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_74 -#define MP0_SMN_C2PMSG_74__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_74__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_75 -#define MP0_SMN_C2PMSG_75__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_75__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_76 -#define MP0_SMN_C2PMSG_76__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_76__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_77 -#define MP0_SMN_C2PMSG_77__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_77__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_78 -#define MP0_SMN_C2PMSG_78__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_78__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_79 -#define MP0_SMN_C2PMSG_79__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_79__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_80 -#define MP0_SMN_C2PMSG_80__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_80__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_81 -#define MP0_SMN_C2PMSG_81__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_81__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_82 -#define MP0_SMN_C2PMSG_82__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_82__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_83 -#define MP0_SMN_C2PMSG_83__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_83__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_84 -#define MP0_SMN_C2PMSG_84__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_84__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_85 -#define MP0_SMN_C2PMSG_85__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_85__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_86 -#define MP0_SMN_C2PMSG_86__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_86__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_87 -#define MP0_SMN_C2PMSG_87__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_87__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_88 -#define MP0_SMN_C2PMSG_88__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_88__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_89 -#define MP0_SMN_C2PMSG_89__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_89__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_90 -#define MP0_SMN_C2PMSG_90__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_90__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_91 -#define MP0_SMN_C2PMSG_91__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_91__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_92 -#define MP0_SMN_C2PMSG_92__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_92__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_93 -#define MP0_SMN_C2PMSG_93__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_93__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_94 -#define MP0_SMN_C2PMSG_94__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_94__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_95 -#define MP0_SMN_C2PMSG_95__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_95__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_96 -#define MP0_SMN_C2PMSG_96__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_96__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_97 -#define MP0_SMN_C2PMSG_97__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_97__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_98 -#define MP0_SMN_C2PMSG_98__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_98__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_99 -#define MP0_SMN_C2PMSG_99__CONTENT__SHIFT                                                                     0x0 -#define MP0_SMN_C2PMSG_99__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP0_SMN_C2PMSG_100 -#define MP0_SMN_C2PMSG_100__CONTENT__SHIFT                                                                    0x0 -#define MP0_SMN_C2PMSG_100__CONTENT_MASK                                                                      0xFFFFFFFFL -//MP0_SMN_C2PMSG_101 -#define MP0_SMN_C2PMSG_101__CONTENT__SHIFT                                                                    0x0 -#define MP0_SMN_C2PMSG_101__CONTENT_MASK                                                                      0xFFFFFFFFL -//MP0_SMN_C2PMSG_102 -#define MP0_SMN_C2PMSG_102__CONTENT__SHIFT                                                                    0x0 -#define MP0_SMN_C2PMSG_102__CONTENT_MASK                                                                      0xFFFFFFFFL -//MP0_SMN_C2PMSG_103 -#define MP0_SMN_C2PMSG_103__CONTENT__SHIFT                                                                    0x0 -#define MP0_SMN_C2PMSG_103__CONTENT_MASK                                                                      0xFFFFFFFFL -//MP0_SMN_IH_CREDIT -#define MP0_SMN_IH_CREDIT__CREDIT_VALUE__SHIFT                                                                0x0 -#define MP0_SMN_IH_CREDIT__CLIENT_ID__SHIFT                                                                   0x10 -#define MP0_SMN_IH_CREDIT__CREDIT_VALUE_MASK                                                                  0x00000003L -#define MP0_SMN_IH_CREDIT__CLIENT_ID_MASK                                                                     0x00FF0000L -//MP0_SMN_IH_SW_INT -#define MP0_SMN_IH_SW_INT__ID__SHIFT                                                                          0x0 -#define MP0_SMN_IH_SW_INT__VALID__SHIFT                                                                       0x8 -#define MP0_SMN_IH_SW_INT__ID_MASK                                                                            0x000000FFL -#define MP0_SMN_IH_SW_INT__VALID_MASK                                                                         0x00000100L -//MP0_SMN_IH_SW_INT_CTRL -#define MP0_SMN_IH_SW_INT_CTRL__INT_MASK__SHIFT                                                               0x0 -#define MP0_SMN_IH_SW_INT_CTRL__INT_ACK__SHIFT                                                                0x8 -#define MP0_SMN_IH_SW_INT_CTRL__INT_MASK_MASK                                                                 0x00000001L -#define MP0_SMN_IH_SW_INT_CTRL__INT_ACK_MASK                                                                  0x00000100L - - -// addressBlock: mp_SmuMp1Pub_CruDec -//MP1_FIRMWARE_FLAGS -#define MP1_FIRMWARE_FLAGS__INTERRUPTS_ENABLED__SHIFT                                                         0x0 -#define MP1_FIRMWARE_FLAGS__RESERVED__SHIFT                                                                   0x1 -#define MP1_FIRMWARE_FLAGS__INTERRUPTS_ENABLED_MASK                                                           0x00000001L -#define MP1_FIRMWARE_FLAGS__RESERVED_MASK                                                                     0xFFFFFFFEL - - -// addressBlock: mp_SmuMp1_SmnDec -//MP1_SMN_C2PMSG_32 -#define MP1_SMN_C2PMSG_32__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_32__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_33 -#define MP1_SMN_C2PMSG_33__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_33__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_34 -#define MP1_SMN_C2PMSG_34__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_34__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_35 -#define MP1_SMN_C2PMSG_35__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_35__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_36 -#define MP1_SMN_C2PMSG_36__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_36__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_37 -#define MP1_SMN_C2PMSG_37__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_37__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_38 -#define MP1_SMN_C2PMSG_38__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_38__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_39 -#define MP1_SMN_C2PMSG_39__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_39__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_40 -#define MP1_SMN_C2PMSG_40__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_40__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_41 -#define MP1_SMN_C2PMSG_41__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_41__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_42 -#define MP1_SMN_C2PMSG_42__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_42__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_43 -#define MP1_SMN_C2PMSG_43__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_43__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_44 -#define MP1_SMN_C2PMSG_44__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_44__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_45 -#define MP1_SMN_C2PMSG_45__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_45__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_46 -#define MP1_SMN_C2PMSG_46__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_46__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_47 -#define MP1_SMN_C2PMSG_47__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_47__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_48 -#define MP1_SMN_C2PMSG_48__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_48__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_49 -#define MP1_SMN_C2PMSG_49__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_49__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_50 -#define MP1_SMN_C2PMSG_50__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_50__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_51 -#define MP1_SMN_C2PMSG_51__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_51__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_52 -#define MP1_SMN_C2PMSG_52__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_52__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_53 -#define MP1_SMN_C2PMSG_53__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_53__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_54 -#define MP1_SMN_C2PMSG_54__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_54__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_55 -#define MP1_SMN_C2PMSG_55__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_55__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_56 -#define MP1_SMN_C2PMSG_56__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_56__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_57 -#define MP1_SMN_C2PMSG_57__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_57__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_58 -#define MP1_SMN_C2PMSG_58__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_58__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_59 -#define MP1_SMN_C2PMSG_59__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_59__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_60 -#define MP1_SMN_C2PMSG_60__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_60__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_61 -#define MP1_SMN_C2PMSG_61__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_61__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_62 -#define MP1_SMN_C2PMSG_62__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_62__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_63 -#define MP1_SMN_C2PMSG_63__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_63__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_64 -#define MP1_SMN_C2PMSG_64__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_64__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_65 -#define MP1_SMN_C2PMSG_65__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_65__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_66 -#define MP1_SMN_C2PMSG_66__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_66__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_67 -#define MP1_SMN_C2PMSG_67__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_67__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_68 -#define MP1_SMN_C2PMSG_68__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_68__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_69 -#define MP1_SMN_C2PMSG_69__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_69__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_70 -#define MP1_SMN_C2PMSG_70__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_70__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_71 -#define MP1_SMN_C2PMSG_71__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_71__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_72 -#define MP1_SMN_C2PMSG_72__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_72__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_73 -#define MP1_SMN_C2PMSG_73__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_73__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_74 -#define MP1_SMN_C2PMSG_74__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_74__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_75 -#define MP1_SMN_C2PMSG_75__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_75__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_76 -#define MP1_SMN_C2PMSG_76__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_76__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_77 -#define MP1_SMN_C2PMSG_77__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_77__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_78 -#define MP1_SMN_C2PMSG_78__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_78__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_79 -#define MP1_SMN_C2PMSG_79__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_79__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_80 -#define MP1_SMN_C2PMSG_80__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_80__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_81 -#define MP1_SMN_C2PMSG_81__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_81__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_82 -#define MP1_SMN_C2PMSG_82__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_82__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_83 -#define MP1_SMN_C2PMSG_83__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_83__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_84 -#define MP1_SMN_C2PMSG_84__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_84__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_85 -#define MP1_SMN_C2PMSG_85__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_85__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_86 -#define MP1_SMN_C2PMSG_86__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_86__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_87 -#define MP1_SMN_C2PMSG_87__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_87__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_88 -#define MP1_SMN_C2PMSG_88__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_88__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_89 -#define MP1_SMN_C2PMSG_89__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_89__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_90 -#define MP1_SMN_C2PMSG_90__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_90__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_91 -#define MP1_SMN_C2PMSG_91__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_91__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_92 -#define MP1_SMN_C2PMSG_92__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_92__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_93 -#define MP1_SMN_C2PMSG_93__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_93__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_94 -#define MP1_SMN_C2PMSG_94__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_94__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_95 -#define MP1_SMN_C2PMSG_95__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_95__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_96 -#define MP1_SMN_C2PMSG_96__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_96__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_97 -#define MP1_SMN_C2PMSG_97__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_97__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_98 -#define MP1_SMN_C2PMSG_98__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_98__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_99 -#define MP1_SMN_C2PMSG_99__CONTENT__SHIFT                                                                     0x0 -#define MP1_SMN_C2PMSG_99__CONTENT_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_C2PMSG_100 -#define MP1_SMN_C2PMSG_100__CONTENT__SHIFT                                                                    0x0 -#define MP1_SMN_C2PMSG_100__CONTENT_MASK                                                                      0xFFFFFFFFL -//MP1_SMN_C2PMSG_101 -#define MP1_SMN_C2PMSG_101__CONTENT__SHIFT                                                                    0x0 -#define MP1_SMN_C2PMSG_101__CONTENT_MASK                                                                      0xFFFFFFFFL -//MP1_SMN_C2PMSG_102 -#define MP1_SMN_C2PMSG_102__CONTENT__SHIFT                                                                    0x0 -#define MP1_SMN_C2PMSG_102__CONTENT_MASK                                                                      0xFFFFFFFFL -//MP1_SMN_C2PMSG_103 -#define MP1_SMN_C2PMSG_103__CONTENT__SHIFT                                                                    0x0 -#define MP1_SMN_C2PMSG_103__CONTENT_MASK                                                                      0xFFFFFFFFL -//MP1_SMN_IH_CREDIT -#define MP1_SMN_IH_CREDIT__CREDIT_VALUE__SHIFT                                                                0x0 -#define MP1_SMN_IH_CREDIT__CLIENT_ID__SHIFT                                                                   0x10 -#define MP1_SMN_IH_CREDIT__CREDIT_VALUE_MASK                                                                  0x00000003L -#define MP1_SMN_IH_CREDIT__CLIENT_ID_MASK                                                                     0x00FF0000L -//MP1_SMN_IH_SW_INT -#define MP1_SMN_IH_SW_INT__ID__SHIFT                                                                          0x0 -#define MP1_SMN_IH_SW_INT__VALID__SHIFT                                                                       0x8 -#define MP1_SMN_IH_SW_INT__ID_MASK                                                                            0x000000FFL -#define MP1_SMN_IH_SW_INT__VALID_MASK                                                                         0x00000100L -//MP1_SMN_IH_SW_INT_CTRL -#define MP1_SMN_IH_SW_INT_CTRL__INT_MASK__SHIFT                                                               0x0 -#define MP1_SMN_IH_SW_INT_CTRL__INT_ACK__SHIFT                                                                0x8 -#define MP1_SMN_IH_SW_INT_CTRL__INT_MASK_MASK                                                                 0x00000001L -#define MP1_SMN_IH_SW_INT_CTRL__INT_ACK_MASK                                                                  0x00000100L -//MP1_SMN_FPS_CNT -#define MP1_SMN_FPS_CNT__COUNT__SHIFT                                                                         0x0 -#define MP1_SMN_FPS_CNT__COUNT_MASK                                                                           0xFFFFFFFFL -//MP1_SMN_EXT_SCRATCH0 -#define MP1_SMN_EXT_SCRATCH0__DATA__SHIFT                                                                     0x0 -#define MP1_SMN_EXT_SCRATCH0__DATA_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_EXT_SCRATCH1 -#define MP1_SMN_EXT_SCRATCH1__DATA__SHIFT                                                                     0x0 -#define MP1_SMN_EXT_SCRATCH1__DATA_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_EXT_SCRATCH2 -#define MP1_SMN_EXT_SCRATCH2__DATA__SHIFT                                                                     0x0 -#define MP1_SMN_EXT_SCRATCH2__DATA_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_EXT_SCRATCH3 -#define MP1_SMN_EXT_SCRATCH3__DATA__SHIFT                                                                     0x0 -#define MP1_SMN_EXT_SCRATCH3__DATA_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_EXT_SCRATCH4 -#define MP1_SMN_EXT_SCRATCH4__DATA__SHIFT                                                                     0x0 -#define MP1_SMN_EXT_SCRATCH4__DATA_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_EXT_SCRATCH5 -#define MP1_SMN_EXT_SCRATCH5__DATA__SHIFT                                                                     0x0 -#define MP1_SMN_EXT_SCRATCH5__DATA_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_EXT_SCRATCH6 -#define MP1_SMN_EXT_SCRATCH6__DATA__SHIFT                                                                     0x0 -#define MP1_SMN_EXT_SCRATCH6__DATA_MASK                                                                       0xFFFFFFFFL -//MP1_SMN_EXT_SCRATCH7 -#define MP1_SMN_EXT_SCRATCH7__DATA__SHIFT                                                                     0x0 -#define MP1_SMN_EXT_SCRATCH7__DATA_MASK                                                                       0xFFFFFFFFL - - -#endif diff --git a/drivers/gpu/drm/amd/pm/inc/smu_v13_0.h b/drivers/gpu/drm/amd/pm/inc/smu_v13_0.h index 6119a36b2cba..3fea2430dec0 100644 --- a/drivers/gpu/drm/amd/pm/inc/smu_v13_0.h +++ b/drivers/gpu/drm/amd/pm/inc/smu_v13_0.h @@ -26,6 +26,7 @@  #include "amdgpu_smu.h"  #define SMU13_DRIVER_IF_VERSION_INV 0xFFFFFFFF +#define SMU13_DRIVER_IF_VERSION_YELLOW_CARP 0x03  #define SMU13_DRIVER_IF_VERSION_ALDE 0x07  /* MP Apertures */ diff --git a/drivers/gpu/drm/amd/pm/inc/smu_v13_0_1.h b/drivers/gpu/drm/amd/pm/inc/smu_v13_0_1.h deleted file mode 100644 index b6c976a4d578..000000000000 --- a/drivers/gpu/drm/amd/pm/inc/smu_v13_0_1.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2020 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - */ -#ifndef __SMU_V13_0_1_H__ -#define __SMU_V13_0_1_H__ - -#include "amdgpu_smu.h" - -#define SMU13_0_1_DRIVER_IF_VERSION_INV 0xFFFFFFFF -#define SMU13_0_1_DRIVER_IF_VERSION_YELLOW_CARP 0x3 - -/* MP Apertures */ -#define MP0_Public			0x03800000 -#define MP0_SRAM			0x03900000 -#define MP1_Public			0x03b00000 -#define MP1_SRAM			0x03c00004 - -/* address block */ -#define smnMP1_FIRMWARE_FLAGS		0x3010024 - - -#if defined(SWSMU_CODE_LAYER_L2) || defined(SWSMU_CODE_LAYER_L3) - -int smu_v13_0_1_check_fw_status(struct smu_context *smu); - -int smu_v13_0_1_check_fw_version(struct smu_context *smu); - -int smu_v13_0_1_fini_smc_tables(struct smu_context *smu); - -int smu_v13_0_1_get_vbios_bootup_values(struct smu_context *smu); - -int smu_v13_0_1_set_default_dpm_tables(struct smu_context *smu); - -int smu_v13_0_1_set_driver_table_location(struct smu_context *smu); - -int smu_v13_0_1_gfx_off_control(struct smu_context *smu, bool enable); -#endif -#endif diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c index 388c5cb5c647..0a5d46ac9ccd 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c @@ -1528,6 +1528,7 @@ int smu_v11_0_baco_set_state(struct smu_context *smu, enum smu_baco_state state)  		case CHIP_SIENNA_CICHLID:  		case CHIP_NAVY_FLOUNDER:  		case CHIP_DIMGREY_CAVEFISH: +		case CHIP_BEIGE_GOBY:  			if (amdgpu_runtime_pm == 2)  				ret = smu_cmn_send_smc_msg_with_param(smu,  								      SMU_MSG_EnterBaco, diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/Makefile b/drivers/gpu/drm/amd/pm/swsmu/smu13/Makefile index 9b3a8503f5cd..d4c4c495762c 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/Makefile +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/Makefile @@ -23,7 +23,7 @@  # Makefile for the 'smu manager' sub-component of powerplay.  # It provides the smu management services for the driver. -SMU13_MGR = smu_v13_0.o aldebaran_ppt.o smu_v13_0_1.o yellow_carp_ppt.o +SMU13_MGR = smu_v13_0.o aldebaran_ppt.o yellow_carp_ppt.o  AMD_SWSMU_SMU13MGR = $(addprefix $(AMD_SWSMU_PATH)/smu13/,$(SMU13_MGR)) diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c index a3dc7194aaf8..a421ba85bd6d 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c @@ -210,6 +210,9 @@ int smu_v13_0_check_fw_version(struct smu_context *smu)  	case CHIP_ALDEBARAN:  		smu->smc_driver_if_version = SMU13_DRIVER_IF_VERSION_ALDE;  		break; +	case CHIP_YELLOW_CARP: +		smu->smc_driver_if_version = SMU13_DRIVER_IF_VERSION_YELLOW_CARP; +		break;  	default:  		dev_err(smu->adev->dev, "smu unsupported asic type:%d.\n", smu->adev->asic_type);  		smu->smc_driver_if_version = SMU13_DRIVER_IF_VERSION_INV; @@ -694,6 +697,27 @@ failed:  	return ret;  } +int smu_v13_0_gfx_off_control(struct smu_context *smu, bool enable) +{ +	int ret = 0; +	struct amdgpu_device *adev = smu->adev; + +	switch (adev->asic_type) { +	case CHIP_YELLOW_CARP: +		if (!(adev->pm.pp_feature & PP_GFXOFF_MASK)) +			return 0; +		if (enable) +			ret = smu_cmn_send_smc_msg(smu, SMU_MSG_AllowGfxOff, NULL); +		else +			ret = smu_cmn_send_smc_msg(smu, SMU_MSG_DisallowGfxOff, NULL); +		break; +	default: +		break; +	} + +	return ret; +} +  int smu_v13_0_system_features_control(struct smu_context *smu,  				      bool en)  { diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_1.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_1.c deleted file mode 100644 index 61917b49f2bf..000000000000 --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_1.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright 2020 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -//#include <linux/reboot.h> - -#define SWSMU_CODE_LAYER_L3 - -#include "amdgpu.h" -#include "amdgpu_smu.h" -#include "smu_v13_0_1.h" -#include "soc15_common.h" -#include "smu_cmn.h" -#include "atomfirmware.h" -#include "amdgpu_atomfirmware.h" -#include "amdgpu_atombios.h" -#include "atom.h" - -#include "asic_reg/mp/mp_13_0_1_offset.h" -#include "asic_reg/mp/mp_13_0_1_sh_mask.h" - -/* - * DO NOT use these for err/warn/info/debug messages. - * Use dev_err, dev_warn, dev_info and dev_dbg instead. - * They are more MGPU friendly. - */ -#undef pr_err -#undef pr_warn -#undef pr_info -#undef pr_debug - -int smu_v13_0_1_check_fw_status(struct smu_context *smu) -{ -	struct amdgpu_device *adev = smu->adev; -	uint32_t mp1_fw_flags; - -	mp1_fw_flags = RREG32_PCIE(MP1_Public | -				   (smnMP1_FIRMWARE_FLAGS & 0xffffffff)); - -	if ((mp1_fw_flags & MP1_FIRMWARE_FLAGS__INTERRUPTS_ENABLED_MASK) >> -	    MP1_FIRMWARE_FLAGS__INTERRUPTS_ENABLED__SHIFT) -		return 0; - -	return -EIO; -} - -int smu_v13_0_1_check_fw_version(struct smu_context *smu) -{ -	uint32_t if_version = 0xff, smu_version = 0xff; -	uint16_t smu_major; -	uint8_t smu_minor, smu_debug; -	int ret = 0; - -	ret = smu_cmn_get_smc_version(smu, &if_version, &smu_version); -	if (ret) -		return ret; - -	smu_major = (smu_version >> 16) & 0xffff; -	smu_minor = (smu_version >> 8) & 0xff; -	smu_debug = (smu_version >> 0) & 0xff; - -	switch (smu->adev->asic_type) { -	case CHIP_YELLOW_CARP: -		smu->smc_driver_if_version = SMU13_0_1_DRIVER_IF_VERSION_YELLOW_CARP; -		break; - -	default: -		dev_err(smu->adev->dev, "smu unsupported asic type:%d.\n", smu->adev->asic_type); -		smu->smc_driver_if_version = SMU13_0_1_DRIVER_IF_VERSION_INV; -		break; -	} - -	dev_info(smu->adev->dev, "smu fw reported version = 0x%08x (%d.%d.%d)\n", -			 smu_version, smu_major, smu_minor, smu_debug); - -	/* -	 * 1. if_version mismatch is not critical as our fw is designed -	 * to be backward compatible. -	 * 2. New fw usually brings some optimizations. But that's visible -	 * only on the paired driver. -	 * Considering above, we just leave user a warning message instead -	 * of halt driver loading. -	 */ -	if (if_version != smu->smc_driver_if_version) { -		dev_info(smu->adev->dev, "smu driver if version = 0x%08x, smu fw if version = 0x%08x, " -			 "smu fw version = 0x%08x (%d.%d.%d)\n", -			 smu->smc_driver_if_version, if_version, -			 smu_version, smu_major, smu_minor, smu_debug); -		dev_warn(smu->adev->dev, "SMU driver if version not matched\n"); -	} - -	return ret; -} - -int smu_v13_0_1_fini_smc_tables(struct smu_context *smu) -{ -	struct smu_table_context *smu_table = &smu->smu_table; - -	kfree(smu_table->clocks_table); -	smu_table->clocks_table = NULL; - -	kfree(smu_table->metrics_table); -	smu_table->metrics_table = NULL; - -	kfree(smu_table->watermarks_table); -	smu_table->watermarks_table = NULL; - -	return 0; -} - -static int smu_v13_0_1_atom_get_smu_clockinfo(struct amdgpu_device *adev, -						uint8_t clk_id, -						uint8_t syspll_id, -						uint32_t *clk_freq) -{ -	struct atom_get_smu_clock_info_parameters_v3_1 input = {0}; -	struct atom_get_smu_clock_info_output_parameters_v3_1 *output; -	int ret, index; - -	input.clk_id = clk_id; -	input.syspll_id = syspll_id; -	input.command = GET_SMU_CLOCK_INFO_V3_1_GET_CLOCK_FREQ; -	index = get_index_into_master_table(atom_master_list_of_command_functions_v2_1, -					    getsmuclockinfo); - -	ret = amdgpu_atom_execute_table(adev->mode_info.atom_context, index, -					(uint32_t *)&input); -	if (ret) -		return -EINVAL; - -	output = (struct atom_get_smu_clock_info_output_parameters_v3_1 *)&input; -	*clk_freq = le32_to_cpu(output->atom_smu_outputclkfreq.smu_clock_freq_hz) / 10000; - -	return 0; -} - -int smu_v13_0_1_get_vbios_bootup_values(struct smu_context *smu) -{ -	int ret, index; -	uint16_t size; -	uint8_t frev, crev; -	struct atom_common_table_header *header; -	struct atom_firmware_info_v3_4 *v_3_4; -	struct atom_firmware_info_v3_3 *v_3_3; -	struct atom_firmware_info_v3_1 *v_3_1; - -	index = get_index_into_master_table(atom_master_list_of_data_tables_v2_1, -					    firmwareinfo); - -	ret = amdgpu_atombios_get_data_table(smu->adev, index, &size, &frev, &crev, -					     (uint8_t **)&header); -	if (ret) -		return ret; - -	if (header->format_revision != 3) { -		dev_err(smu->adev->dev, "unknown atom_firmware_info version! for smu13\n"); -		return -EINVAL; -	} - -	switch (header->content_revision) { -	case 0: -	case 1: -	case 2: -		v_3_1 = (struct atom_firmware_info_v3_1 *)header; -		smu->smu_table.boot_values.revision = v_3_1->firmware_revision; -		smu->smu_table.boot_values.gfxclk = v_3_1->bootup_sclk_in10khz; -		smu->smu_table.boot_values.uclk = v_3_1->bootup_mclk_in10khz; -		smu->smu_table.boot_values.socclk = 0; -		smu->smu_table.boot_values.dcefclk = 0; -		smu->smu_table.boot_values.vddc = v_3_1->bootup_vddc_mv; -		smu->smu_table.boot_values.vddci = v_3_1->bootup_vddci_mv; -		smu->smu_table.boot_values.mvddc = v_3_1->bootup_mvddc_mv; -		smu->smu_table.boot_values.vdd_gfx = v_3_1->bootup_vddgfx_mv; -		smu->smu_table.boot_values.cooling_id = v_3_1->coolingsolution_id; -		break; -	case 3: -		v_3_3 = (struct atom_firmware_info_v3_3 *)header; -		smu->smu_table.boot_values.revision = v_3_3->firmware_revision; -		smu->smu_table.boot_values.gfxclk = v_3_3->bootup_sclk_in10khz; -		smu->smu_table.boot_values.uclk = v_3_3->bootup_mclk_in10khz; -		smu->smu_table.boot_values.socclk = 0; -		smu->smu_table.boot_values.dcefclk = 0; -		smu->smu_table.boot_values.vddc = v_3_3->bootup_vddc_mv; -		smu->smu_table.boot_values.vddci = v_3_3->bootup_vddci_mv; -		smu->smu_table.boot_values.mvddc = v_3_3->bootup_mvddc_mv; -		smu->smu_table.boot_values.vdd_gfx = v_3_3->bootup_vddgfx_mv; -		smu->smu_table.boot_values.cooling_id = v_3_3->coolingsolution_id; -		break; -	case 4: -	default: -		v_3_4 = (struct atom_firmware_info_v3_4 *)header; -		smu->smu_table.boot_values.revision = v_3_4->firmware_revision; -		smu->smu_table.boot_values.gfxclk = v_3_4->bootup_sclk_in10khz; -		smu->smu_table.boot_values.uclk = v_3_4->bootup_mclk_in10khz; -		smu->smu_table.boot_values.socclk = 0; -		smu->smu_table.boot_values.dcefclk = 0; -		smu->smu_table.boot_values.vddc = v_3_4->bootup_vddc_mv; -		smu->smu_table.boot_values.vddci = v_3_4->bootup_vddci_mv; -		smu->smu_table.boot_values.mvddc = v_3_4->bootup_mvddc_mv; -		smu->smu_table.boot_values.vdd_gfx = v_3_4->bootup_vddgfx_mv; -		smu->smu_table.boot_values.cooling_id = v_3_4->coolingsolution_id; -		break; -	} - -	smu->smu_table.boot_values.format_revision = header->format_revision; -	smu->smu_table.boot_values.content_revision = header->content_revision; - -	smu_v13_0_1_atom_get_smu_clockinfo(smu->adev, -					(uint8_t)SMU11_SYSPLL0_SOCCLK_ID, -					(uint8_t)0, -					&smu->smu_table.boot_values.socclk); - -	smu_v13_0_1_atom_get_smu_clockinfo(smu->adev, -					(uint8_t)SMU11_SYSPLL0_DCEFCLK_ID, -					(uint8_t)0, -					&smu->smu_table.boot_values.dcefclk); - -	smu_v13_0_1_atom_get_smu_clockinfo(smu->adev, -					(uint8_t)SMU11_SYSPLL0_ECLK_ID, -					(uint8_t)0, -					&smu->smu_table.boot_values.eclk); - -	smu_v13_0_1_atom_get_smu_clockinfo(smu->adev, -					(uint8_t)SMU11_SYSPLL0_VCLK_ID, -					(uint8_t)0, -					&smu->smu_table.boot_values.vclk); - -	smu_v13_0_1_atom_get_smu_clockinfo(smu->adev, -					(uint8_t)SMU11_SYSPLL0_DCLK_ID, -					(uint8_t)0, -					&smu->smu_table.boot_values.dclk); - -	if ((smu->smu_table.boot_values.format_revision == 3) && -	    (smu->smu_table.boot_values.content_revision >= 2)) -		smu_v13_0_1_atom_get_smu_clockinfo(smu->adev, -						(uint8_t)SMU11_SYSPLL1_0_FCLK_ID, -						(uint8_t)SMU11_SYSPLL1_2_ID, -						&smu->smu_table.boot_values.fclk); - -	return 0; -} - -int smu_v13_0_1_set_default_dpm_tables(struct smu_context *smu) -{ -	struct smu_table_context *smu_table = &smu->smu_table; - -	return smu_cmn_update_table(smu, SMU_TABLE_DPMCLOCKS, 0, smu_table->clocks_table, false); -} - -int smu_v13_0_1_set_driver_table_location(struct smu_context *smu) -{ -	struct smu_table *driver_table = &smu->smu_table.driver_table; -	int ret = 0; - -	if (!driver_table->mc_address) -		return 0; - -	ret = smu_cmn_send_smc_msg_with_param(smu, -			SMU_MSG_SetDriverDramAddrHigh, -			upper_32_bits(driver_table->mc_address), -			NULL); - -	if (ret) -		return ret; - -	ret = smu_cmn_send_smc_msg_with_param(smu, -			SMU_MSG_SetDriverDramAddrLow, -			lower_32_bits(driver_table->mc_address), -			NULL); - -	return ret; -} - -int smu_v13_0_1_gfx_off_control(struct smu_context *smu, bool enable) -{ -	int ret = 0; -	struct amdgpu_device *adev = smu->adev; - -	switch (adev->asic_type) { -	case CHIP_YELLOW_CARP: -		if (!(adev->pm.pp_feature & PP_GFXOFF_MASK)) -			return 0; -		if (enable) -			ret = smu_cmn_send_smc_msg(smu, SMU_MSG_AllowGfxOff, NULL); -		else -			ret = smu_cmn_send_smc_msg(smu, SMU_MSG_DisallowGfxOff, NULL); -		break; -	default: -		break; -	} - -	return ret; -} diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c index 18a1ffdca227..0cfeb9fc7c03 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c @@ -25,7 +25,7 @@  #include "amdgpu.h"  #include "amdgpu_smu.h" -#include "smu_v13_0_1.h" +#include "smu_v13_0.h"  #include "smu13_driver_if_yellow_carp.h"  #include "yellow_carp_ppt.h"  #include "smu_v13_0_1_ppsmc.h" @@ -186,6 +186,22 @@ err0_out:  	return -ENOMEM;  } +static int yellow_carp_fini_smc_tables(struct smu_context *smu) +{ +	struct smu_table_context *smu_table = &smu->smu_table; + +	kfree(smu_table->clocks_table); +	smu_table->clocks_table = NULL; + +	kfree(smu_table->metrics_table); +	smu_table->metrics_table = NULL; + +	kfree(smu_table->watermarks_table); +	smu_table->watermarks_table = NULL; + +	return 0; +} +  static int yellow_carp_system_features_control(struct smu_context *smu, bool en)  {  	struct smu_feature *feature = &smu->smu_feature; @@ -282,13 +298,9 @@ static int yellow_carp_mode_reset(struct smu_context *smu, int type)  	if (index < 0)  		return index == -EACCES ? 0 : index; -	mutex_lock(&smu->message_lock); - -	ret = smu_cmn_send_msg_without_waiting(smu, (uint16_t)index, type); - -	mutex_unlock(&smu->message_lock); - -	mdelay(10); +	ret = smu_cmn_send_smc_msg_with_param(smu, (uint16_t)index, type, NULL); +	if (ret) +		dev_err(smu->adev->dev, "Failed to mode reset!\n");  	return ret;  } @@ -659,6 +671,13 @@ static ssize_t yellow_carp_get_gpu_metrics(struct smu_context *smu,  	return sizeof(struct gpu_metrics_v2_1);  } +static int yellow_carp_set_default_dpm_tables(struct smu_context *smu) +{ +	struct smu_table_context *smu_table = &smu->smu_table; + +	return smu_cmn_update_table(smu, SMU_TABLE_DPMCLOCKS, 0, smu_table->clocks_table, false); +} +  static int yellow_carp_od_edit_dpm_table(struct smu_context *smu, enum PP_OD_DPM_TABLE_COMMAND type,  					long input[], uint32_t size)  { @@ -1203,17 +1222,17 @@ static int yellow_carp_set_fine_grain_gfx_freq_parameters(struct smu_context *sm  }  static const struct pptable_funcs yellow_carp_ppt_funcs = { -	.check_fw_status = smu_v13_0_1_check_fw_status, -	.check_fw_version = smu_v13_0_1_check_fw_version, +	.check_fw_status = smu_v13_0_check_fw_status, +	.check_fw_version = smu_v13_0_check_fw_version,  	.init_smc_tables = yellow_carp_init_smc_tables, -	.fini_smc_tables = smu_v13_0_1_fini_smc_tables, -	.get_vbios_bootup_values = smu_v13_0_1_get_vbios_bootup_values, +	.fini_smc_tables = yellow_carp_fini_smc_tables, +	.get_vbios_bootup_values = smu_v13_0_get_vbios_bootup_values,  	.system_features_control = yellow_carp_system_features_control,  	.send_smc_msg_with_param = smu_cmn_send_smc_msg_with_param,  	.send_smc_msg = smu_cmn_send_smc_msg,  	.dpm_set_vcn_enable = yellow_carp_dpm_set_vcn_enable,  	.dpm_set_jpeg_enable = yellow_carp_dpm_set_jpeg_enable, -	.set_default_dpm_table = smu_v13_0_1_set_default_dpm_tables, +	.set_default_dpm_table = yellow_carp_set_default_dpm_tables,  	.read_sensor = yellow_carp_read_sensor,  	.is_dpm_running = yellow_carp_is_dpm_running,  	.set_watermarks_table = yellow_carp_set_watermarks_table, @@ -1222,8 +1241,8 @@ static const struct pptable_funcs yellow_carp_ppt_funcs = {  	.get_gpu_metrics = yellow_carp_get_gpu_metrics,  	.get_enabled_mask = smu_cmn_get_enabled_32_bits_mask,  	.get_pp_feature_mask = smu_cmn_get_pp_feature_mask, -	.set_driver_table_location = smu_v13_0_1_set_driver_table_location, -	.gfx_off_control = smu_v13_0_1_gfx_off_control, +	.set_driver_table_location = smu_v13_0_set_driver_table_location, +	.gfx_off_control = smu_v13_0_gfx_off_control,  	.post_init = yellow_carp_post_smu_init,  	.mode2_reset = yellow_carp_mode2_reset,  	.get_dpm_ultimate_freq = yellow_carp_get_dpm_ultimate_freq, | 
