Am 09.01.2017 um 09:02 schrieb Monk Liu:
Change-Id: Ife0eff7b13b8b5946f005a39f6ecb8db1cb72c38
Signed-off-by: Monk Liu <monk....@amd.com>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 19 +++++++++++++++++++
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h   |  2 ++
  2 files changed, 21 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
index 0d821d9..5aa7f0c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
@@ -28,9 +28,28 @@
  #define AMDGPU_SRIOV_CAPS_ENABLE_IOV   (1 << 1) /* sr-iov is enabled on this 
GPU */
  #define AMDGPU_SRIOV_CAPS_IS_VF        (1 << 2) /* this GPU is a virtual 
function */
  #define AMDGPU_PASSTHROUGH_MODE        (1 << 3) /* thw whole GPU is pass 
through for VM */
+
+struct amdgpu_vm;
  /* GPU virtualization */
  struct amdgpu_virt {
        uint32_t caps;
+       uint32_t csa_size;
+       struct amdgpu_bo *csa_obj;
+       uint64_t csa_vmid0_addr;
+       uint64_t gds_vmid0_addr;
+       int (*allocate_csa)(struct amdgpu_device *adev);
+       void (*deallocate_csa)(struct amdgpu_device *adev);
+       int (*map_csa)(struct amdgpu_device *adev, struct amdgpu_vm *vm);
+       void (*unmap_csa)(struct amdgpu_device *adev, struct amdgpu_vm *vm);

Why callbacks for this?

+};
+
+struct amdgpu_vm_virt {
+       /* each VM will map on CSA */
+       struct ttm_validate_buffer csa_tv;
+       struct amdgpu_bo_va *csa_bo_va;

Please put that directly into the amdgpu_vm structure.

+       /* virtual MC address of CSA & GDS for each VM */
+       uint64_t vm_csa_addr;
+       uint64_t vm_gds_addr;

That should be constant, shouldn't it?

Regards,
Christian.

  };
#define amdgpu_sriov_enabled(adev) \
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
index 42a629b..27cbcbc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
@@ -29,6 +29,7 @@
  #include "gpu_scheduler.h"
  #include "amdgpu_sync.h"
  #include "amdgpu_ring.h"
+#include "amdgpu_virt.h"
struct amdgpu_bo_va;
  struct amdgpu_job;
@@ -111,6 +112,7 @@ struct amdgpu_vm {
/* client id */
        u64                     client_id;
+       struct amdgpu_vm_virt   vm_virt;
  };
struct amdgpu_vm_id {


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to