drm/amdgpu: Relocate kgd2kfd function declaration
Subsystems (3)
PATCH 1/3 drm/amdgpu: Relocate kgd2kfd function declaration
Since amdkfd is merged into amdgpu module and amdgpu can access amdkfd directly, move declaration of kgd2kfd functions from kfd_priv.h to amdgpu_amdkfd.h
--- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 43 ++++++++++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 20 ++++++++++- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 ++ drivers/gpu/drm/amd/amdkfd/kfd_module.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 22 ------------ drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 3 -- 7 files changed, 66 insertions(+), 27 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +43 -0
@@ -619,4 +619,47 @@ struct kfd2kgd_calls *amdgpu_amdkfd_gfx_9_0_get_functions(void) {return NULL ; } + +struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd,struct pci_dev *pdev, +const struct kfd2kgd_calls *f2g) +{ +return NULL ; +} + +bool kgd2kfd_device_init (struct kfd_dev *kfd, +const struct kgd2kfd_shared_resources *gpu_resources) +{ +return false; +} + +void kgd2kfd_device_exit (struct kfd_dev *kfd) +{ +} + +void kgd2kfd_exit (void ) +{ +} + +void kgd2kfd_suspend (struct kfd_dev *kfd) +{ +} + +int kgd2kfd_resume (struct kfd_dev *kfd) +{ +return 0 ; +} + +int kgd2kfd_pre_reset (struct kfd_dev *kfd) +{ +return 0 ; +} + +int kgd2kfd_post_reset (struct kfd_dev *kfd) +{ +return 0 ; +} + +void kgd2kfd_interrupt (struct kfd_dev *kfd,const void *ih_ring_entry) +{ +}#endif
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +19 -1
@@ -33,7 +33,6 @@#include "amdgpu_sync.h" #include "amdgpu_vm.h" -extern const struct kgd2kfd_calls *kgd2kfd;extern uint64_t amdgpu_amdkfd_total_mem_size;struct amdgpu_device ;
@@ -214,4 +213,23 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd,void amdgpu_amdkfd_gpuvm_init_mem_limits (void );void amdgpu_amdkfd_unreserve_memory_limit (struct amdgpu_bo *bo); +/* KGD2KFD callbacks */ +int kgd2kfd_init (unsigned interface_version, +const struct kgd2kfd_calls **g2f); +void kgd2kfd_exit (void ); +struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd,struct pci_dev *pdev, +const struct kfd2kgd_calls *f2g); +bool kgd2kfd_device_init (struct kfd_dev *kfd, +const struct kgd2kfd_shared_resources *gpu_resources); +void kgd2kfd_device_exit (struct kfd_dev *kfd); +void kgd2kfd_suspend (struct kfd_dev *kfd); +int kgd2kfd_resume (struct kfd_dev *kfd); +int kgd2kfd_pre_reset (struct kfd_dev *kfd); +int kgd2kfd_post_reset (struct kfd_dev *kfd); +void kgd2kfd_interrupt (struct kfd_dev *kfd,const void *ih_ring_entry); +int kgd2kfd_quiesce_mm (struct mm_struct *mm); +int kgd2kfd_resume_mm (struct mm_struct *mm); +int kgd2kfd_schedule_evict_and_restore_process (struct mm_struct *mm, +struct dma_fence *fence); +#endif /* AMDGPU_AMDKFD_H_INCLUDED */
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c +1 -0
@@ -31,6 +31,7 @@static const struct dma_fence_ops amdkfd_fence_ops;static atomic_t fence_seq =ATOMIC_INIT (0 ); +extern const struct kgd2kfd_calls *kgd2kfd;/* Eviction Fence * Fence helper functions to deal with KFD memory eviction.
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2 -0
@@ -44,6 +44,8 @@*/ #define AMDGPU_USERPTR_RESTORE_DELAY_MS 1 +extern const struct kgd2kfd_calls *kgd2kfd; +/* Impose limit on how much memory KFD can use */ static struct { uint64_t max_system_mem_limit;
drivers/gpu/drm/amd/amdkfd/kfd_module.c +1 -1
@@ -23,6 +23,7 @@#include <linux/sched.h> #include <linux/device.h> #include "kfd_priv.h" +#include "amdgpu_amdkfd.h" static const struct kgd2kfd_calls kgd2kfd = { .exit = kgd2kfd_exit,
@@ -104,7 +105,6 @@ int kgd2kfd_init(unsigned int interface_version,return 0 ; } -EXPORT_SYMBOL (kgd2kfd_init);void kgd2kfd_exit (void ) {
drivers/gpu/drm/amd/amdkfd/kfd_priv.h +0 -22
@@ -266,14 +266,6 @@ struct kfd_dev {bool pci_atomic_requested; }; -/* KGD2KFD callbacks */ -void kgd2kfd_exit (void ); -struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd, -struct pci_dev *pdev,const struct kfd2kgd_calls *f2g); -bool kgd2kfd_device_init (struct kfd_dev *kfd, -const struct kgd2kfd_shared_resources *gpu_resources); -void kgd2kfd_device_exit (struct kfd_dev *kfd); -enum kfd_mempool {KFD_MEMPOOL_SYSTEM_CACHEABLE =1 ,KFD_MEMPOOL_SYSTEM_WRITECOMBINE =2 ,
@@ -541,11 +533,6 @@ struct qcm_process_device {/* Approx. time before evicting the process again */ #define PROCESS_ACTIVE_TIME_MS 10 -int kgd2kfd_quiesce_mm (struct mm_struct *mm); -int kgd2kfd_resume_mm (struct mm_struct *mm); -int kgd2kfd_schedule_evict_and_restore_process (struct mm_struct *mm, -struct dma_fence *fence); -/* 8 byte handle containing GPU ID in the most significant 4 bytes and * idr_handle in the least significant 4 bytes */
@@ -800,20 +787,11 @@ int kfd_numa_node_to_apic_id(int numa_node_id);/* Interrupts */ int kfd_interrupt_init (struct kfd_dev *dev);void kfd_interrupt_exit (struct kfd_dev *dev); -void kgd2kfd_interrupt (struct kfd_dev *kfd,const void *ih_ring_entry);bool enqueue_ih_ring_entry (struct kfd_dev *kfd,const void *ih_ring_entry);bool interrupt_is_wanted (struct kfd_dev *dev,const uint32_t *ih_ring_entry,uint32_t *patched_ihre,bool *flag); -/* Power Management */ -void kgd2kfd_suspend (struct kfd_dev *kfd); -int kgd2kfd_resume (struct kfd_dev *kfd); - -/* GPU reset */ -int kgd2kfd_pre_reset (struct kfd_dev *kfd); -int kgd2kfd_post_reset (struct kfd_dev *kfd); -/* amdkfd Apertures */ int kfd_init_apertures (struct kfd_process *process);
drivers/gpu/drm/amd/include/kgd_kfd_interface.h +0 -3
@@ -379,7 +379,4 @@ struct kgd2kfd_calls { int (*post_reset)(struct kfd_dev *kfd); }; -int kgd2kfd_init (unsigned interface_version, -const struct kgd2kfd_calls **g2f); -#endif /* KGD_KFD_INTERFACE_H_INCLUDED */
Signature · 6 lines
2.7.4 _______________________________________________ amd-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/amd-gfx
A message that is not in the archive (sent off-list or not yet received): 1544800921-15780-1-git-send-email-Amber.Lin-5C7GfCeVMHo@public.gmane.org
PATCH 2/3 drm/amdgpu: Simply kgd2kfd interface
After amdkfd is merged into amdgpu module, amdgpu can call amdkfd functions directly.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 26 ++++++++++-------------- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 3 +-- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 6 ++---- 3 files changed, 14 insertions(+), 21 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +11 -15
@@ -61,17 +61,13 @@ int amdgpu_amdkfd_init(void)void amdgpu_amdkfd_fini (void ) { -if (kgd2kfd) - kgd2kfd->exit (); +kgd2kfd_exit (); }void amdgpu_amdkfd_device_probe (struct amdgpu_device *adev) {const struct kfd2kgd_calls *kfd2kgd; -if (!kgd2kfd) -return ; -switch (adev->asic_type) {#ifdef CONFIG_DRM_AMDGPU_CIK case CHIP_KAVERI :
@@ -98,8 +94,8 @@ void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev)return ; } - adev->kfd.dev = kgd2kfd->probe ((struct kgd_dev *)adev, - adev->pdev, kfd2kgd); + adev->kfd.dev =kgd2kfd_probe ((struct kgd_dev *)adev, + adev->pdev, kfd2kgd);if (adev->kfd.dev) amdgpu_amdkfd_total_mem_size += adev->gmc.real_vram_size;
@@ -182,7 +178,7 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev) &gpu_resources.doorbell_start_offset);if (adev->asic_type <CHIP_VEGA10 ) { - kgd2kfd->device_init (adev->kfd.dev, &gpu_resources); +kgd2kfd_device_init (adev->kfd.dev, &gpu_resources);return ; }
@@ -211,14 +207,14 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev) gpu_resources.reserved_doorbell_mask =0x1e0 ; gpu_resources.reserved_doorbell_val =0x0e0 ; - kgd2kfd->device_init (adev->kfd.dev, &gpu_resources); +kgd2kfd_device_init (adev->kfd.dev, &gpu_resources); } }void amdgpu_amdkfd_device_fini (struct amdgpu_device *adev) {if (adev->kfd.dev) { - kgd2kfd->device_exit (adev->kfd.dev); +kgd2kfd_device_exit (adev->kfd.dev); adev->kfd.dev =NULL ; } }
@@ -227,13 +223,13 @@ void amdgpu_amdkfd_interrupt(struct amdgpu_device *adev, const void *ih_ring_entry) {if (adev->kfd.dev) - kgd2kfd->interrupt (adev->kfd.dev, ih_ring_entry); +kgd2kfd_interrupt (adev->kfd.dev, ih_ring_entry); }void amdgpu_amdkfd_suspend (struct amdgpu_device *adev) {if (adev->kfd.dev) - kgd2kfd->suspend (adev->kfd.dev); +kgd2kfd_suspend (adev->kfd.dev); }int amdgpu_amdkfd_resume (struct amdgpu_device *adev)
@@ -241,7 +237,7 @@ int amdgpu_amdkfd_resume(struct amdgpu_device *adev)int r =0 ;if (adev->kfd.dev) - r = kgd2kfd->resume (adev->kfd.dev); + r =kgd2kfd_resume (adev->kfd.dev);return r; }
@@ -251,7 +247,7 @@ int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev)int r =0 ;if (adev->kfd.dev) - r = kgd2kfd->pre_reset (adev->kfd.dev); + r =kgd2kfd_pre_reset (adev->kfd.dev);return r; }
@@ -261,7 +257,7 @@ int amdgpu_amdkfd_post_reset(struct amdgpu_device *adev)int r =0 ;if (adev->kfd.dev) - r = kgd2kfd->post_reset (adev->kfd.dev); + r =kgd2kfd_post_reset (adev->kfd.dev);return r; }
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c +1 -2
@@ -31,7 +31,6 @@static const struct dma_fence_ops amdkfd_fence_ops;static atomic_t fence_seq =ATOMIC_INIT (0 ); -extern const struct kgd2kfd_calls *kgd2kfd;/* Eviction Fence * Fence helper functions to deal with KFD memory eviction.
@@ -123,7 +122,7 @@ static bool amdkfd_fence_enable_signaling(struct dma_fence *f)if (dma_fence_is_signaled (f))return true; -if (!kgd2kfd->schedule_evict_and_restore_process (fence->mm, f)) +if (!kgd2kfd_schedule_evict_and_restore_process (fence->mm, f))return true;return false;
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2 -4
@@ -44,8 +44,6 @@*/ #define AMDGPU_USERPTR_RESTORE_DELAY_MS 1 -extern const struct kgd2kfd_calls *kgd2kfd; -/* Impose limit on how much memory KFD can use */ static struct { uint64_t max_system_mem_limit;
@@ -1792,7 +1790,7 @@ int amdgpu_amdkfd_evict_userptr(struct kgd_mem *mem, evicted_bos =atomic_inc_return (&process_info->evicted_bos);if (evicted_bos ==1 ) {/* First eviction, stop the queues */ - r = kgd2kfd->quiesce_mm (mm); + r =kgd2kfd_quiesce_mm (mm);if (r)pr_err ("Failed to quiesce KFD\n" ); schedule_delayed_work(&process_info->restore_userptr_work,
@@ -2084,7 +2082,7 @@ static void amdgpu_amdkfd_restore_userptr_worker(struct work_struct *work) evicted_bos) goto unlock_out; evicted_bos =0 ; -if (kgd2kfd->resume_mm (mm)) { +if (kgd2kfd_resume_mm (mm)) {pr_err ("%s: Failed to resume KFD\n" , __func__);/* No recovery from this failure. Probably the CP is * hanging. No point trying again.
Signature · 6 lines
2.7.4 _______________________________________________ amd-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/amd-gfx
PATCH 3/3 drm/amdgpu: Remove kgd2kfd function pointers
In reply to a message not in the archivekgd2kfd function pointers and global kgd2kfd pointer are no longer in use.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 7 +--- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 3 +- drivers/gpu/drm/amd/amdkfd/kfd_module.c | 29 +------------- drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 50 ------------------------- 4 files changed, 4 insertions(+), 85 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +1 -6
@@ -28,8 +28,6 @@#include <linux/module.h> #include <linux/dma-buf.h> -const struct kgd2kfd_calls *kgd2kfd; -static const unsigned int compute_vmid_bitmap =0xFF00 ;/* Total memory size in system memory and all GPU VRAM. Used to
@@ -47,12 +45,9 @@ int amdgpu_amdkfd_init(void) amdgpu_amdkfd_total_mem_size *= si.mem_unit;#ifdef CONFIG_HSA_AMD - ret =kgd2kfd_init (KFD_INTERFACE_VERSION , &kgd2kfd); -if (ret) - kgd2kfd =NULL ; + ret =kgd2kfd_init ();amdgpu_amdkfd_gpuvm_init_mem_limits ();#else - kgd2kfd =NULL ; ret = -ENOENT ;#endif
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +1 -2
@@ -214,8 +214,7 @@ void amdgpu_amdkfd_gpuvm_init_mem_limits(void);void amdgpu_amdkfd_unreserve_memory_limit (struct amdgpu_bo *bo);/* KGD2KFD callbacks */ -int kgd2kfd_init (unsigned interface_version, -const struct kgd2kfd_calls **g2f); +int kgd2kfd_init (void );void kgd2kfd_exit (void );struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd,struct pci_dev *pdev,const struct kfd2kgd_calls *f2g);
drivers/gpu/drm/amd/amdkfd/kfd_module.c +2 -27
@@ -25,22 +25,6 @@#include "kfd_priv.h" #include "amdgpu_amdkfd.h" -static const struct kgd2kfd_calls kgd2kfd = { - .exit = kgd2kfd_exit, - .probe = kgd2kfd_probe, - .device_init = kgd2kfd_device_init, - .device_exit = kgd2kfd_device_exit, - .interrupt = kgd2kfd_interrupt, - .suspend = kgd2kfd_suspend, - .resume = kgd2kfd_resume, - .quiesce_mm = kgd2kfd_quiesce_mm, - .resume_mm = kgd2kfd_resume_mm, - .schedule_evict_and_restore_process = - kgd2kfd_schedule_evict_and_restore_process, - .pre_reset = kgd2kfd_pre_reset, - .post_reset = kgd2kfd_post_reset, -}; -static int kfd_init (void ) {int err;
@@ -92,18 +76,9 @@ static void kfd_exit(void)kfd_chardev_exit (); } -int kgd2kfd_init (unsigned int interface_version, -const struct kgd2kfd_calls **g2f) +int kgd2kfd_init () { -int err; - - err =kfd_init (); -if (err) -return err; - - *g2f = &kgd2kfd; - -return 0 ; +return kfd_init (); }void kgd2kfd_exit (void )
drivers/gpu/drm/amd/include/kgd_kfd_interface.h +0 -50
60 lines not on this page · raw message
Signature · 6 lines
2.7.4 _______________________________________________ amd-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/amd-gfx
The series is Reviewed-by: Felix Kuehling <[email protected]>
Quoted 205 lines · Amber
Since amdkfd is merged into amdgpu module and amdgpu can access amdkfd directly, move declaration of kgd2kfd functions from
kfd_priv.htoamdgpu_amdkfd.hSigned-off-by Amber Lin <[email protected]>--- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 43 ++++++++++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 20 ++++++++++- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 ++ drivers/gpu/drm/amd/amdkfd/kfd_module.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 22 ------------ drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 3 -- 7 files changed, 66 insertions(+), 27 deletions(-)drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +43
-0@@ -619,4 +619,47 @@ struct kfd2kgd_calls *amdgpu_amdkfd_gfx_9_0_get_functions(void) {return NULL ; } + +struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd,struct pci_dev *pdev, +const struct kfd2kgd_calls *f2g) +{ +return NULL ; +} + +bool kgd2kfd_device_init (struct kfd_dev *kfd, +const struct kgd2kfd_shared_resources *gpu_resources) +{ +return false; +} + +void kgd2kfd_device_exit (struct kfd_dev *kfd) +{ +} + +void kgd2kfd_exit (void ) +{ +} + +void kgd2kfd_suspend (struct kfd_dev *kfd) +{ +} + +int kgd2kfd_resume (struct kfd_dev *kfd) +{ +return 0 ; +} + +int kgd2kfd_pre_reset (struct kfd_dev *kfd) +{ +return 0 ; +} + +int kgd2kfd_post_reset (struct kfd_dev *kfd) +{ +return 0 ; +} + +void kgd2kfd_interrupt (struct kfd_dev *kfd,const void *ih_ring_entry) +{ +}#endif drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +19
-1@@ -33,7 +33,6 @@#include "amdgpu_sync.h" #include "amdgpu_vm.h" -extern const struct kgd2kfd_calls *kgd2kfd;extern uint64_t amdgpu_amdkfd_total_mem_size;struct amdgpu_device ;@@ -214,4 +213,23 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd,void amdgpu_amdkfd_gpuvm_init_mem_limits (void );void amdgpu_amdkfd_unreserve_memory_limit (struct amdgpu_bo *bo); +/* KGD2KFD callbacks */ +int kgd2kfd_init (unsigned interface_version, +const struct kgd2kfd_calls **g2f); +void kgd2kfd_exit (void ); +struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd,struct pci_dev *pdev, +const struct kfd2kgd_calls *f2g); +bool kgd2kfd_device_init (struct kfd_dev *kfd, +const struct kgd2kfd_shared_resources *gpu_resources); +void kgd2kfd_device_exit (struct kfd_dev *kfd); +void kgd2kfd_suspend (struct kfd_dev *kfd); +int kgd2kfd_resume (struct kfd_dev *kfd); +int kgd2kfd_pre_reset (struct kfd_dev *kfd); +int kgd2kfd_post_reset (struct kfd_dev *kfd); +void kgd2kfd_interrupt (struct kfd_dev *kfd,const void *ih_ring_entry); +int kgd2kfd_quiesce_mm (struct mm_struct *mm); +int kgd2kfd_resume_mm (struct mm_struct *mm); +int kgd2kfd_schedule_evict_and_restore_process (struct mm_struct *mm, +struct dma_fence *fence); +#endif /* AMDGPU_AMDKFD_H_INCLUDED */ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c +1
-0@@ -31,6 +31,7 @@static const struct dma_fence_ops amdkfd_fence_ops;static atomic_t fence_seq =ATOMIC_INIT (0 ); +extern const struct kgd2kfd_calls *kgd2kfd;/* Eviction Fence * Fence helper functions to deal with KFD memory eviction. drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2
-0@@ -44,6 +44,8 @@*/ #define AMDGPU_USERPTR_RESTORE_DELAY_MS 1 +extern const struct kgd2kfd_calls *kgd2kfd; +/* Impose limit on how much memory KFD can use */ static struct { uint64_t max_system_mem_limit;drivers/gpu/drm/amd/amdkfd/kfd_module.c +1
-1@@ -23,6 +23,7 @@#include <linux/sched.h> #include <linux/device.h> #include "kfd_priv.h" +#include "amdgpu_amdkfd.h" static const struct kgd2kfd_calls kgd2kfd = { .exit = kgd2kfd_exit,@@ -104,7 +105,6 @@ int kgd2kfd_init(unsigned int interface_version,return 0 ; } -EXPORT_SYMBOL (kgd2kfd_init);void kgd2kfd_exit (void ) {drivers/gpu/drm/amd/amdkfd/kfd_priv.h +0
-22@@ -266,14 +266,6 @@ struct kfd_dev {bool pci_atomic_requested; }; -/* KGD2KFD callbacks */ -void kgd2kfd_exit (void ); -struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd, -struct pci_dev *pdev,const struct kfd2kgd_calls *f2g); -bool kgd2kfd_device_init (struct kfd_dev *kfd, -const struct kgd2kfd_shared_resources *gpu_resources); -void kgd2kfd_device_exit (struct kfd_dev *kfd); -enum kfd_mempool {KFD_MEMPOOL_SYSTEM_CACHEABLE =1 ,KFD_MEMPOOL_SYSTEM_WRITECOMBINE =2 ,@@ -541,11 +533,6 @@ struct qcm_process_device {/* Approx. time before evicting the process again */ #define PROCESS_ACTIVE_TIME_MS 10 -int kgd2kfd_quiesce_mm (struct mm_struct *mm); -int kgd2kfd_resume_mm (struct mm_struct *mm); -int kgd2kfd_schedule_evict_and_restore_process (struct mm_struct *mm, -struct dma_fence *fence); -/* 8 byte handle containing GPU ID in the most significant 4 bytes and * idr_handle in the least significant 4 bytes */ @@ -800,20 +787,11 @@ int kfd_numa_node_to_apic_id(int numa_node_id);/* Interrupts */ int kfd_interrupt_init (struct kfd_dev *dev);void kfd_interrupt_exit (struct kfd_dev *dev); -void kgd2kfd_interrupt (struct kfd_dev *kfd,const void *ih_ring_entry);bool enqueue_ih_ring_entry (struct kfd_dev *kfd,const void *ih_ring_entry);bool interrupt_is_wanted (struct kfd_dev *dev,const uint32_t *ih_ring_entry,uint32_t *patched_ihre,bool *flag); -/* Power Management */ -void kgd2kfd_suspend (struct kfd_dev *kfd); -int kgd2kfd_resume (struct kfd_dev *kfd); - -/* GPU reset */ -int kgd2kfd_pre_reset (struct kfd_dev *kfd); -int kgd2kfd_post_reset (struct kfd_dev *kfd); -/* amdkfd Apertures */ int kfd_init_apertures (struct kfd_process *process);drivers/gpu/drm/amd/include/kgd_kfd_interface.h +0
-0
drivers/gpu/drm/amd/include/kgd_kfd_interface.h struct kgd2kfd_calls { · line 382
Quoted 7 lines
drivers/gpu/drm/amd/include/kgd_kfd_interface.h +0
-3@@ -379,7 +379,4 @@ struct kgd2kfd_calls { int (*post_reset)(struct kfd_dev *kfd); }; -int kgd2kfd_init (unsigned interface_version, -const struct kgd2kfd_calls **g2f); -#endif /* KGD_KFD_INTERFACE_H_INCLUDED */
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Am 14.12.18 um 16:22 schrieb Lin, Amber:
Quoted 5 lines
Since amdkfd is merged into amdgpu module and amdgpu can access amdkfd directly, move declaration of kgd2kfd functions from
kfd_priv.htoamdgpu_amdkfd.hSigned-off-by Amber Lin <[email protected]>
Yes, please. If it's not committed yet Acked-by: Christian König <[email protected]> for the series.
Quoted 200 lines
--- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 43 ++++++++++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 20 ++++++++++- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 ++ drivers/gpu/drm/amd/amdkfd/kfd_module.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 22 ------------ drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 3 -- 7 files changed, 66 insertions(+), 27 deletions(-)drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +43
-0@@ -619,4 +619,47 @@ struct kfd2kgd_calls *amdgpu_amdkfd_gfx_9_0_get_functions(void) {return NULL ; } + +struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd,struct pci_dev *pdev, +const struct kfd2kgd_calls *f2g) +{ +return NULL ; +} + +bool kgd2kfd_device_init (struct kfd_dev *kfd, +const struct kgd2kfd_shared_resources *gpu_resources) +{ +return false; +} + +void kgd2kfd_device_exit (struct kfd_dev *kfd) +{ +} + +void kgd2kfd_exit (void ) +{ +} + +void kgd2kfd_suspend (struct kfd_dev *kfd) +{ +} + +int kgd2kfd_resume (struct kfd_dev *kfd) +{ +return 0 ; +} + +int kgd2kfd_pre_reset (struct kfd_dev *kfd) +{ +return 0 ; +} + +int kgd2kfd_post_reset (struct kfd_dev *kfd) +{ +return 0 ; +} + +void kgd2kfd_interrupt (struct kfd_dev *kfd,const void *ih_ring_entry) +{ +}#endif drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +19
-1@@ -33,7 +33,6 @@#include "amdgpu_sync.h" #include "amdgpu_vm.h" -extern const struct kgd2kfd_calls *kgd2kfd;extern uint64_t amdgpu_amdkfd_total_mem_size;struct amdgpu_device ;@@ -214,4 +213,23 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd,void amdgpu_amdkfd_gpuvm_init_mem_limits (void );void amdgpu_amdkfd_unreserve_memory_limit (struct amdgpu_bo *bo); +/* KGD2KFD callbacks */ +int kgd2kfd_init (unsigned interface_version, +const struct kgd2kfd_calls **g2f); +void kgd2kfd_exit (void ); +struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd,struct pci_dev *pdev, +const struct kfd2kgd_calls *f2g); +bool kgd2kfd_device_init (struct kfd_dev *kfd, +const struct kgd2kfd_shared_resources *gpu_resources); +void kgd2kfd_device_exit (struct kfd_dev *kfd); +void kgd2kfd_suspend (struct kfd_dev *kfd); +int kgd2kfd_resume (struct kfd_dev *kfd); +int kgd2kfd_pre_reset (struct kfd_dev *kfd); +int kgd2kfd_post_reset (struct kfd_dev *kfd); +void kgd2kfd_interrupt (struct kfd_dev *kfd,const void *ih_ring_entry); +int kgd2kfd_quiesce_mm (struct mm_struct *mm); +int kgd2kfd_resume_mm (struct mm_struct *mm); +int kgd2kfd_schedule_evict_and_restore_process (struct mm_struct *mm, +struct dma_fence *fence); +#endif /* AMDGPU_AMDKFD_H_INCLUDED */ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c +1
-0@@ -31,6 +31,7 @@static const struct dma_fence_ops amdkfd_fence_ops;static atomic_t fence_seq =ATOMIC_INIT (0 ); +extern const struct kgd2kfd_calls *kgd2kfd;/* Eviction Fence * Fence helper functions to deal with KFD memory eviction. drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2
-0@@ -44,6 +44,8 @@*/ #define AMDGPU_USERPTR_RESTORE_DELAY_MS 1 +extern const struct kgd2kfd_calls *kgd2kfd; +/* Impose limit on how much memory KFD can use */ static struct { uint64_t max_system_mem_limit;drivers/gpu/drm/amd/amdkfd/kfd_module.c +1
-1@@ -23,6 +23,7 @@#include <linux/sched.h> #include <linux/device.h> #include "kfd_priv.h" +#include "amdgpu_amdkfd.h" static const struct kgd2kfd_calls kgd2kfd = { .exit = kgd2kfd_exit,@@ -104,7 +105,6 @@ int kgd2kfd_init(unsigned int interface_version,return 0 ; } -EXPORT_SYMBOL (kgd2kfd_init);void kgd2kfd_exit (void ) {drivers/gpu/drm/amd/amdkfd/kfd_priv.h +0
-22@@ -266,14 +266,6 @@ struct kfd_dev {bool pci_atomic_requested; }; -/* KGD2KFD callbacks */ -void kgd2kfd_exit (void ); -struct kfd_dev *kgd2kfd_probe (struct kgd_dev *kgd, -struct pci_dev *pdev,const struct kfd2kgd_calls *f2g); -bool kgd2kfd_device_init (struct kfd_dev *kfd, -const struct kgd2kfd_shared_resources *gpu_resources); -void kgd2kfd_device_exit (struct kfd_dev *kfd); -enum kfd_mempool {KFD_MEMPOOL_SYSTEM_CACHEABLE =1 ,KFD_MEMPOOL_SYSTEM_WRITECOMBINE =2 ,@@ -541,11 +533,6 @@ struct qcm_process_device {/* Approx. time before evicting the process again */ #define PROCESS_ACTIVE_TIME_MS 10 -int kgd2kfd_quiesce_mm (struct mm_struct *mm); -int kgd2kfd_resume_mm (struct mm_struct *mm); -int kgd2kfd_schedule_evict_and_restore_process (struct mm_struct *mm, -struct dma_fence *fence); -/* 8 byte handle containing GPU ID in the most significant 4 bytes and * idr_handle in the least significant 4 bytes */ @@ -800,20 +787,11 @@ int kfd_numa_node_to_apic_id(int numa_node_id);/* Interrupts */ int kfd_interrupt_init (struct kfd_dev *dev);void kfd_interrupt_exit (struct kfd_dev *dev); -void kgd2kfd_interrupt (struct kfd_dev *kfd,const void *ih_ring_entry);bool enqueue_ih_ring_entry (struct kfd_dev *kfd,const void *ih_ring_entry);bool interrupt_is_wanted (struct kfd_dev *dev,const uint32_t *ih_ring_entry,uint32_t *patched_ihre,bool *flag); -/* Power Management */ -void kgd2kfd_suspend (struct kfd_dev *kfd); -int kgd2kfd_resume (struct kfd_dev *kfd); - -/* GPU reset */ -int kgd2kfd_pre_reset (struct kfd_dev *kfd); -int kgd2kfd_post_reset (struct kfd_dev *kfd); -/* amdkfd Apertures */ int kfd_init_apertures (struct kfd_process *process);drivers/gpu/drm/amd/include/kgd_kfd_interface.h +0
-0
drivers/gpu/drm/amd/include/kgd_kfd_interface.h struct kgd2kfd_calls { · line 382
Quoted 7 lines
drivers/gpu/drm/amd/include/kgd_kfd_interface.h +0
-3@@ -379,7 +379,4 @@ struct kgd2kfd_calls { int (*post_reset)(struct kfd_dev *kfd); }; -int kgd2kfd_init (unsigned interface_version, -const struct kgd2kfd_calls **g2f); -#endif /* KGD_KFD_INTERFACE_H_INCLUDED */
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx