Am 11.01.2017 um 11:43 schrieb Monk Liu: > and implement CSA functions in this file > > Change-Id: Ife0eff7b13b8b5946f005a39f6ecb8db1cb72c38 > Signed-off-by: Monk Liu <Monk.Liu at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 8 ++++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 3 +++ > 2 files changed, 11 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h > index 0d821d9..b65bedc 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h > @@ -28,11 +28,19 @@ > #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 */ > + > /* 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; Similar to the GDS address inside the VMs I think the code actually using it should calculate it from the BO address. > }; > > +#define AMDGPU_CSA_SIZE (8 * 1024) > +#define AMDGPU_CSA_VADDR (AMDGPU_VA_RESERVED_SIZE - AMDGPU_CSA_SIZE) > + > #define amdgpu_sriov_enabled(adev) \ > ((adev)->virt.caps & AMDGPU_SRIOV_CAPS_ENABLE_IOV) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > index 42a629b..42f1ec1 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > @@ -111,6 +111,9 @@ struct amdgpu_vm { > > /* client id */ > u64 client_id; > + /* each VM will map on CSA */ > + struct ttm_validate_buffer csa_tv; The validate buffer is only temporarily used during mapping the CSA into the VM. So please put that one the stack in that function. Apart from that the patch looks good to me, Christian. > + struct amdgpu_bo_va *csa_bo_va; > }; > > struct amdgpu_vm_id {