Commit cacbbe7c authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu: move stolen memory from gmc to mman



It's more related to memory management than memory
controller.

Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 7438ae6e
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -449,10 +449,10 @@ void amdgpu_gmc_get_vbios_allocations(struct amdgpu_device *adev)
	case CHIP_VEGA10:
	case CHIP_RAVEN:
	case CHIP_RENOIR:
		adev->gmc.keep_stolen_vga_memory = true;
		adev->mman.keep_stolen_vga_memory = true;
		break;
	default:
		adev->gmc.keep_stolen_vga_memory = false;
		adev->mman.keep_stolen_vga_memory = false;
		break;
	}

@@ -466,10 +466,10 @@ void amdgpu_gmc_get_vbios_allocations(struct amdgpu_device *adev)
		size = 0;

	if (size > AMDGPU_VBIOS_VGA_ALLOCATION) {
		adev->gmc.stolen_vga_size = AMDGPU_VBIOS_VGA_ALLOCATION;
		adev->gmc.stolen_extended_size = size - adev->gmc.stolen_vga_size;
		adev->mman.stolen_vga_size = AMDGPU_VBIOS_VGA_ALLOCATION;
		adev->mman.stolen_extended_size = size - adev->mman.stolen_vga_size;
	} else {
		adev->gmc.stolen_vga_size = size;
		adev->gmc.stolen_extended_size = 0;
		adev->mman.stolen_vga_size = size;
		adev->mman.stolen_extended_size = 0;
	}
}
+0 −5
Original line number Diff line number Diff line
@@ -215,11 +215,6 @@ struct amdgpu_gmc {
	uint8_t			vram_vendor;
	uint32_t                srbm_soft_reset;
	bool			prt_warning;
	uint64_t		stolen_vga_size;
	struct amdgpu_bo	*stolen_vga_memory;
	uint64_t		stolen_extended_size;
	struct amdgpu_bo	*stolen_extended_memory;
	bool			keep_stolen_vga_memory;
	uint32_t		sdpif_register;
	/* apertures */
	u64			shared_aperture_start;
+10 −10
Original line number Diff line number Diff line
@@ -1978,16 +1978,16 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
	 * This is used for VGA emulation and pre-OS scanout buffers to
	 * avoid display artifacts while transitioning between pre-OS
	 * and driver.  */
	r = amdgpu_bo_create_kernel_at(adev, 0, adev->gmc.stolen_vga_size,
	r = amdgpu_bo_create_kernel_at(adev, 0, adev->mman.stolen_vga_size,
				       AMDGPU_GEM_DOMAIN_VRAM,
				       &adev->gmc.stolen_vga_memory,
				       &adev->mman.stolen_vga_memory,
				       NULL);
	if (r)
		return r;
	r = amdgpu_bo_create_kernel_at(adev, adev->gmc.stolen_vga_size,
				       adev->gmc.stolen_extended_size,
	r = amdgpu_bo_create_kernel_at(adev, adev->mman.stolen_vga_size,
				       adev->mman.stolen_extended_size,
				       AMDGPU_GEM_DOMAIN_VRAM,
				       &adev->gmc.stolen_extended_memory,
				       &adev->mman.stolen_extended_memory,
				       NULL);
	if (r)
		return r;
@@ -2048,9 +2048,9 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
void amdgpu_ttm_late_init(struct amdgpu_device *adev)
{
	/* return the VGA stolen memory (if any) back to VRAM */
	if (!adev->gmc.keep_stolen_vga_memory)
		amdgpu_bo_free_kernel(&adev->gmc.stolen_vga_memory, NULL, NULL);
	amdgpu_bo_free_kernel(&adev->gmc.stolen_extended_memory, NULL, NULL);
	if (!adev->mman.keep_stolen_vga_memory)
		amdgpu_bo_free_kernel(&adev->mman.stolen_vga_memory, NULL, NULL);
	amdgpu_bo_free_kernel(&adev->mman.stolen_extended_memory, NULL, NULL);
}

/**
@@ -2063,8 +2063,8 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)

	amdgpu_ttm_training_reserve_vram_fini(adev);
	/* return the stolen vga memory back to VRAM */
	if (adev->gmc.keep_stolen_vga_memory)
		amdgpu_bo_free_kernel(&adev->gmc.stolen_vga_memory, NULL, NULL);
	if (adev->mman.keep_stolen_vga_memory)
		amdgpu_bo_free_kernel(&adev->mman.stolen_vga_memory, NULL, NULL);
	/* return the IP Discovery TMR memory back to VRAM */
	amdgpu_bo_free_kernel(&adev->discovery_memory, NULL, NULL);
	amdgpu_ttm_fw_reserve_vram_fini(adev);
+6 −0
Original line number Diff line number Diff line
@@ -59,6 +59,12 @@ struct amdgpu_mman {
	struct mutex				gtt_window_lock;
	/* Scheduler entity for buffer moves */
	struct drm_sched_entity			entity;

	uint64_t		stolen_vga_size;
	struct amdgpu_bo	*stolen_vga_memory;
	uint64_t		stolen_extended_size;
	struct amdgpu_bo	*stolen_extended_memory;
	bool			keep_stolen_vga_memory;
};

struct amdgpu_copy_mem {