mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	drm/amdgpu: put MQDs in VRAM
Reduces preemption latency. Only enable this for gfx10 and 11 for now to avoid changing behavior on gfx 8 and 9. v2: move MES MQDs into VRAM as well (YuBiao) v3: enable on gfx10, 11 only (Alex) v4: minor style changes, document why gfx10/11 only (Alex) Reviewed-by: Luben Tuikov <luben.tuikov@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
		
							parent
							
								
									967a66396e
								
							
						
					
					
						commit
						1cfb4d6121
					
				
					 3 changed files with 9 additions and 2 deletions
				
			
		| 
						 | 
					@ -382,6 +382,11 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
 | 
				
			||||||
	int r, i, j;
 | 
						int r, i, j;
 | 
				
			||||||
	struct amdgpu_kiq *kiq = &adev->gfx.kiq[xcc_id];
 | 
						struct amdgpu_kiq *kiq = &adev->gfx.kiq[xcc_id];
 | 
				
			||||||
	struct amdgpu_ring *ring = &kiq->ring;
 | 
						struct amdgpu_ring *ring = &kiq->ring;
 | 
				
			||||||
 | 
						u32 domain = AMDGPU_GEM_DOMAIN_GTT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Only enable on gfx10 and 11 for now to avoid changing behavior on older chips */
 | 
				
			||||||
 | 
						if (adev->ip_versions[GC_HWIP][0] >= IP_VERSION(10, 0, 0))
 | 
				
			||||||
 | 
							domain |= AMDGPU_GEM_DOMAIN_VRAM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* create MQD for KIQ */
 | 
						/* create MQD for KIQ */
 | 
				
			||||||
	if (!adev->enable_mes_kiq && !ring->mqd_obj) {
 | 
						if (!adev->enable_mes_kiq && !ring->mqd_obj) {
 | 
				
			||||||
| 
						 | 
					@ -413,7 +418,7 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
 | 
				
			||||||
			ring = &adev->gfx.gfx_ring[i];
 | 
								ring = &adev->gfx.gfx_ring[i];
 | 
				
			||||||
			if (!ring->mqd_obj) {
 | 
								if (!ring->mqd_obj) {
 | 
				
			||||||
				r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
 | 
									r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
 | 
				
			||||||
							    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
 | 
												    domain, &ring->mqd_obj,
 | 
				
			||||||
							    &ring->mqd_gpu_addr, &ring->mqd_ptr);
 | 
												    &ring->mqd_gpu_addr, &ring->mqd_ptr);
 | 
				
			||||||
				if (r) {
 | 
									if (r) {
 | 
				
			||||||
					dev_warn(adev->dev, "failed to create ring mqd bo (%d)", r);
 | 
										dev_warn(adev->dev, "failed to create ring mqd bo (%d)", r);
 | 
				
			||||||
| 
						 | 
					@ -435,7 +440,7 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
 | 
				
			||||||
		ring = &adev->gfx.compute_ring[j];
 | 
							ring = &adev->gfx.compute_ring[j];
 | 
				
			||||||
		if (!ring->mqd_obj) {
 | 
							if (!ring->mqd_obj) {
 | 
				
			||||||
			r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
 | 
								r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
 | 
				
			||||||
						    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
 | 
											    domain, &ring->mqd_obj,
 | 
				
			||||||
						    &ring->mqd_gpu_addr, &ring->mqd_ptr);
 | 
											    &ring->mqd_gpu_addr, &ring->mqd_ptr);
 | 
				
			||||||
			if (r) {
 | 
								if (r) {
 | 
				
			||||||
				dev_warn(adev->dev, "failed to create ring mqd bo (%d)", r);
 | 
									dev_warn(adev->dev, "failed to create ring mqd bo (%d)", r);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -901,6 +901,7 @@ static int mes_v10_1_mqd_sw_init(struct amdgpu_device *adev,
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
 | 
						r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
 | 
				
			||||||
 | 
									    AMDGPU_GEM_DOMAIN_VRAM |
 | 
				
			||||||
				    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
 | 
									    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
 | 
				
			||||||
				    &ring->mqd_gpu_addr, &ring->mqd_ptr);
 | 
									    &ring->mqd_gpu_addr, &ring->mqd_ptr);
 | 
				
			||||||
	if (r) {
 | 
						if (r) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -999,6 +999,7 @@ static int mes_v11_0_mqd_sw_init(struct amdgpu_device *adev,
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
 | 
						r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
 | 
				
			||||||
 | 
									    AMDGPU_GEM_DOMAIN_VRAM |
 | 
				
			||||||
				    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
 | 
									    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
 | 
				
			||||||
				    &ring->mqd_gpu_addr, &ring->mqd_ptr);
 | 
									    &ring->mqd_gpu_addr, &ring->mqd_ptr);
 | 
				
			||||||
	if (r) {
 | 
						if (r) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue