On Wed, Aug 16, 2017 at 6:00 AM, Felix Kuehling <Felix.Kuehling at amd.com> wrote: > > From: Moses Reuben <moses.reuben at amd.com> > > v2: > * Shortened headline > * Removed write_config_static_mem, it gets initialized by gfx_v?_0_gpu_init > * Renamed alloc_memory_of_scratch to set_scratch_backing_va > * Made set_scratch_backing_va a void function > * Documented set_scratch_backing in kgd_kfd_interface.h > > Signed-off-by: Moses Reuben <moses.reuben at amd.com> > Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 15 ++++++++++++++- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 16 +++++++++++++++- > drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 5 +++++ > 3 files changed, 34 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c > index d1719be..3793d7b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c > @@ -135,6 +135,8 @@ static uint16_t get_atc_vmid_pasid_mapping_pasid(struct kgd_dev *kgd, > static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid); > > static uint16_t get_fw_version(struct kgd_dev *kgd, enum kgd_engine_type type); > +static void set_scratch_backing_va(struct kgd_dev *kgd, > + uint64_t va, uint32_t vmid); > > static const struct kfd2kgd_calls kfd2kgd = { > .init_gtt_mem_allocation = alloc_gtt_mem, > @@ -159,7 +161,8 @@ static const struct kfd2kgd_calls kfd2kgd = { > .get_atc_vmid_pasid_mapping_pasid = get_atc_vmid_pasid_mapping_pasid, > .get_atc_vmid_pasid_mapping_valid = get_atc_vmid_pasid_mapping_valid, > .write_vmid_invalidate_request = write_vmid_invalidate_request, > - .get_fw_version = get_fw_version > + .get_fw_version = get_fw_version, > + .set_scratch_backing_va = set_scratch_backing_va, > }; > > struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions(void) > @@ -652,6 +655,16 @@ static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid) > WREG32(mmVM_INVALIDATE_REQUEST, 1 << vmid); > } > > +static void set_scratch_backing_va(struct kgd_dev *kgd, > + uint64_t va, uint32_t vmid) > +{ > + struct amdgpu_device *adev = (struct amdgpu_device *) kgd; > + > + lock_srbm(kgd, 0, 0, 0, vmid); > + WREG32(mmSH_HIDDEN_PRIVATE_BASE_VMID, va); > + unlock_srbm(kgd); > +} > + > static uint16_t get_fw_version(struct kgd_dev *kgd, enum kgd_engine_type type) > { > struct amdgpu_device *adev = (struct amdgpu_device *) kgd; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c > index 29a6f5d..61f6457 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c > @@ -94,6 +94,8 @@ static uint16_t get_atc_vmid_pasid_mapping_pasid(struct kgd_dev *kgd, > uint8_t vmid); > static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid); > static uint16_t get_fw_version(struct kgd_dev *kgd, enum kgd_engine_type type); > +static void set_scratch_backing_va(struct kgd_dev *kgd, > + uint64_t va, uint32_t vmid); > > static const struct kfd2kgd_calls kfd2kgd = { > .init_gtt_mem_allocation = alloc_gtt_mem, > @@ -120,12 +122,14 @@ static const struct kfd2kgd_calls kfd2kgd = { > .get_atc_vmid_pasid_mapping_valid = > get_atc_vmid_pasid_mapping_valid, > .write_vmid_invalidate_request = write_vmid_invalidate_request, > - .get_fw_version = get_fw_version > + .get_fw_version = get_fw_version, > + .set_scratch_backing_va = set_scratch_backing_va, > }; > > struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions(void) > { > return (struct kfd2kgd_calls *)&kfd2kgd; > + return (struct kfd2kgd_calls *)&kfd2kgd; > } > > static inline struct amdgpu_device *get_amdgpu_device(struct kgd_dev *kgd) > @@ -573,6 +577,16 @@ static uint32_t kgd_address_watch_get_offset(struct kgd_dev *kgd, > return 0; > } > > +static void set_scratch_backing_va(struct kgd_dev *kgd, > + uint64_t va, uint32_t vmid) > +{ > + struct amdgpu_device *adev = (struct amdgpu_device *) kgd; > + > + lock_srbm(kgd, 0, 0, 0, vmid); > + WREG32(mmSH_HIDDEN_PRIVATE_BASE_VMID, va); > + unlock_srbm(kgd); > +} > + > static uint16_t get_fw_version(struct kgd_dev *kgd, enum kgd_engine_type type) > { > struct amdgpu_device *adev = (struct amdgpu_device *) kgd; > diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > index ffafda0..2a9cc5e 100644 > --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > @@ -128,6 +128,9 @@ struct kgd2kfd_shared_resources { > * > * @get_fw_version: Returns FW versions from the header > * > + * @set_scratch_backing_va: Sets VA for scratch backing memory of a VMID. > + * Only used for no cp scheduling mode > + * > * This structure contains function pointers to services that the kgd driver > * provides to amdkfd driver. > * > @@ -199,6 +202,8 @@ struct kfd2kgd_calls { > > uint16_t (*get_fw_version)(struct kgd_dev *kgd, > enum kgd_engine_type type); > + void (*set_scratch_backing_va)(struct kgd_dev *kgd, > + uint64_t va, uint32_t vmid); > }; > > /** > -- > 2.7.4 > This patch is: Reviewed-by: Oded Gabbay <oded.gabbay at gmail.com>