Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 803d89ad authored by Christopher James Halse Rogers's avatar Christopher James Halse Rogers Committed by Alex Deucher
Browse files

drm/amdgpu: Refuse to pin or change acceptable domains of prime BOs to VRAM. (v2)



Migration to VRAM will break the sharing, resulting in rendering on the exporting GPU never becoming
visible on the importing GPU.

v2: Don't pin BOs to GTT. Instead, refuse to migrate them out of GTT.

Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarChristopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 1769152a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -729,6 +729,11 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
		break;
	}
	case AMDGPU_GEM_OP_SET_PLACEMENT:
		if (robj->prime_shared_count && (args->value & AMDGPU_GEM_DOMAIN_VRAM)) {
			r = -EINVAL;
			amdgpu_bo_unreserve(robj);
			break;
		}
		if (amdgpu_ttm_tt_get_usermm(robj->tbo.ttm)) {
			r = -EPERM;
			amdgpu_bo_unreserve(robj);
+4 −0
Original line number Diff line number Diff line
@@ -650,6 +650,10 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
	if (WARN_ON_ONCE(min_offset > max_offset))
		return -EINVAL;

	/* A shared bo cannot be migrated to VRAM */
	if (bo->prime_shared_count && (domain == AMDGPU_GEM_DOMAIN_VRAM))
		return -EINVAL;

	if (bo->pin_count) {
		uint32_t mem_type = bo->tbo.mem.mem_type;