drm/amdkfd: Consolidate duplicated bo alloc flags
authorYong Zhao <Yong.Zhao@amd.com>
Wed, 4 Mar 2020 17:38:59 +0000 (12:38 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 10 Mar 2020 19:54:34 +0000 (15:54 -0400)
ALLOC_MEM_FLAGS_* used are the same as the KFD_IOC_ALLOC_MEM_FLAGS_*,
but they are interweavedly used in kernel driver, resulting in bad
readability. For example, KFD_IOC_ALLOC_MEM_FLAGS_COHERENT is not
referenced in kernel, and it functions implicitly in kernel through
ALLOC_MEM_FLAGS_COHERENT, causing unnecessary confusion.

Replace all occurrences of ALLOC_MEM_FLAGS_* with
KFD_IOC_ALLOC_MEM_FLAGS_* to solve the problem.

Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
drivers/gpu/drm/amd/amdkfd/kfd_process.c
drivers/gpu/drm/amd/include/kgd_kfd_interface.h

index 726c91ab6761711123f878c43505bf897cecdccb..abfbe89e805ef2f4ef89585b12f41a9066273fd3 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/module.h>
 #include <linux/dma-buf.h>
 #include "amdgpu_xgmi.h"
+#include <uapi/linux/kfd_ioctl.h>
 
 static const unsigned int compute_vmid_bitmap = 0xFF00;
 
@@ -501,10 +502,11 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd,
                                           metadata_size, &metadata_flags);
        if (flags) {
                *flags = (bo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM) ?
-                       ALLOC_MEM_FLAGS_VRAM : ALLOC_MEM_FLAGS_GTT;
+                               KFD_IOC_ALLOC_MEM_FLAGS_VRAM
+                               : KFD_IOC_ALLOC_MEM_FLAGS_GTT;
 
                if (bo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED)
-                       *flags |= ALLOC_MEM_FLAGS_PUBLIC;
+                       *flags |= KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC;
        }
 
 out_put:
index e4481caed648a7cb1c4510536e2aed0195f01ae7..9dff792c929036701e78af5f19f24463e9f6448b 100644 (file)
@@ -29,6 +29,7 @@
 #include "amdgpu_vm.h"
 #include "amdgpu_amdkfd.h"
 #include "amdgpu_dma_buf.h"
+#include <uapi/linux/kfd_ioctl.h>
 
 /* BO flag to indicate a KFD userptr BO */
 #define AMDGPU_AMDKFD_USERPTR_BO (1ULL << 63)
@@ -400,18 +401,18 @@ static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync)
 static uint64_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem)
 {
        struct amdgpu_device *bo_adev = amdgpu_ttm_adev(mem->bo->tbo.bdev);
-       bool coherent = mem->alloc_flags & ALLOC_MEM_FLAGS_COHERENT;
+       bool coherent = mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_COHERENT;
        uint32_t mapping_flags;
 
        mapping_flags = AMDGPU_VM_PAGE_READABLE;
-       if (mem->alloc_flags & ALLOC_MEM_FLAGS_WRITABLE)
+       if (mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_WRITABLE)
                mapping_flags |= AMDGPU_VM_PAGE_WRITEABLE;
-       if (mem->alloc_flags & ALLOC_MEM_FLAGS_EXECUTABLE)
+       if (mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_EXECUTABLE)
                mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE;
 
        switch (adev->asic_type) {
        case CHIP_ARCTURUS:
-               if (mem->alloc_flags & ALLOC_MEM_FLAGS_VRAM) {
+               if (mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM) {
                        if (bo_adev == adev)
                                mapping_flags |= coherent ?
                                        AMDGPU_VM_MTYPE_CC : AMDGPU_VM_MTYPE_RW;
@@ -1160,24 +1161,24 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
        /*
         * Check on which domain to allocate BO
         */
-       if (flags & ALLOC_MEM_FLAGS_VRAM) {
+       if (flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM) {
                domain = alloc_domain = AMDGPU_GEM_DOMAIN_VRAM;
                alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
-               alloc_flags |= (flags & ALLOC_MEM_FLAGS_PUBLIC) ?
+               alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
                        AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED :
                        AMDGPU_GEM_CREATE_NO_CPU_ACCESS;
-       } else if (flags & ALLOC_MEM_FLAGS_GTT) {
+       } else if (flags & KFD_IOC_ALLOC_MEM_FLAGS_GTT) {
                domain = alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
                alloc_flags = 0;
-       } else if (flags & ALLOC_MEM_FLAGS_USERPTR) {
+       } else if (flags & KFD_IOC_ALLOC_MEM_FLAGS_USERPTR) {
                domain = AMDGPU_GEM_DOMAIN_GTT;
                alloc_domain = AMDGPU_GEM_DOMAIN_CPU;
                alloc_flags = 0;
                if (!offset || !*offset)
                        return -EINVAL;
                user_addr = untagged_addr(*offset);
-       } else if (flags & (ALLOC_MEM_FLAGS_DOORBELL |
-                       ALLOC_MEM_FLAGS_MMIO_REMAP)) {
+       } else if (flags & (KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL |
+                       KFD_IOC_ALLOC_MEM_FLAGS_MMIO_REMAP)) {
                domain = AMDGPU_GEM_DOMAIN_GTT;
                alloc_domain = AMDGPU_GEM_DOMAIN_CPU;
                bo_type = ttm_bo_type_sg;
@@ -1198,7 +1199,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
        }
        INIT_LIST_HEAD(&(*mem)->bo_va_list);
        mutex_init(&(*mem)->lock);
-       (*mem)->aql_queue = !!(flags & ALLOC_MEM_FLAGS_AQL_QUEUE_MEM);
+       (*mem)->aql_queue = !!(flags & KFD_IOC_ALLOC_MEM_FLAGS_AQL_QUEUE_MEM);
 
        /* Workaround for AQL queue wraparound bug. Map the same
         * memory twice. That means we only actually allocate half
@@ -1680,10 +1681,12 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd,
 
        INIT_LIST_HEAD(&(*mem)->bo_va_list);
        mutex_init(&(*mem)->lock);
+       
        (*mem)->alloc_flags =
                ((bo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM) ?
-                ALLOC_MEM_FLAGS_VRAM : ALLOC_MEM_FLAGS_GTT) |
-               ALLOC_MEM_FLAGS_WRITABLE | ALLOC_MEM_FLAGS_EXECUTABLE;
+               KFD_IOC_ALLOC_MEM_FLAGS_VRAM : KFD_IOC_ALLOC_MEM_FLAGS_GTT)
+               | KFD_IOC_ALLOC_MEM_FLAGS_WRITABLE
+               | KFD_IOC_ALLOC_MEM_FLAGS_EXECUTABLE;
 
        (*mem)->bo = amdgpu_bo_ref(bo);
        (*mem)->va = va;
index c92285fbba8a9178d81224db5d1c18d71704d659..fe0cd49d4ea7ce1708dfc00e2388a4bd18dd8c9b 100644 (file)
@@ -327,10 +327,10 @@ err_alloc_mem:
 static int kfd_process_device_reserve_ib_mem(struct kfd_process_device *pdd)
 {
        struct qcm_process_device *qpd = &pdd->qpd;
-       uint32_t flags = ALLOC_MEM_FLAGS_GTT |
-                        ALLOC_MEM_FLAGS_NO_SUBSTITUTE |
-                        ALLOC_MEM_FLAGS_WRITABLE |
-                        ALLOC_MEM_FLAGS_EXECUTABLE;
+       uint32_t flags = KFD_IOC_ALLOC_MEM_FLAGS_GTT |
+                       KFD_IOC_ALLOC_MEM_FLAGS_NO_SUBSTITUTE |
+                       KFD_IOC_ALLOC_MEM_FLAGS_WRITABLE |
+                       KFD_IOC_ALLOC_MEM_FLAGS_EXECUTABLE;
        void *kaddr;
        int ret;
 
@@ -697,8 +697,9 @@ static int kfd_process_device_init_cwsr_dgpu(struct kfd_process_device *pdd)
 {
        struct kfd_dev *dev = pdd->dev;
        struct qcm_process_device *qpd = &pdd->qpd;
-       uint32_t flags = ALLOC_MEM_FLAGS_GTT |
-               ALLOC_MEM_FLAGS_NO_SUBSTITUTE | ALLOC_MEM_FLAGS_EXECUTABLE;
+       uint32_t flags = KFD_IOC_ALLOC_MEM_FLAGS_GTT
+                       | KFD_IOC_ALLOC_MEM_FLAGS_NO_SUBSTITUTE
+                       | KFD_IOC_ALLOC_MEM_FLAGS_EXECUTABLE;
        void *kaddr;
        int ret;
 
index 0cee79d56075101426dbe4d99251e9fd44a94abf..a3c238c39ef57233d76465419da5876ba6e886db 100644 (file)
@@ -167,27 +167,6 @@ struct tile_config {
 
 #define KFD_MAX_NUM_OF_QUEUES_PER_DEVICE_DEFAULT 4096
 
-/*
- * Allocation flag domains
- * NOTE: This must match the corresponding definitions in kfd_ioctl.h.
- */
-#define ALLOC_MEM_FLAGS_VRAM           (1 << 0)
-#define ALLOC_MEM_FLAGS_GTT            (1 << 1)
-#define ALLOC_MEM_FLAGS_USERPTR                (1 << 2)
-#define ALLOC_MEM_FLAGS_DOORBELL       (1 << 3)
-#define ALLOC_MEM_FLAGS_MMIO_REMAP     (1 << 4)
-
-/*
- * Allocation flags attributes/access options.
- * NOTE: This must match the corresponding definitions in kfd_ioctl.h.
- */
-#define ALLOC_MEM_FLAGS_WRITABLE       (1 << 31)
-#define ALLOC_MEM_FLAGS_EXECUTABLE     (1 << 30)
-#define ALLOC_MEM_FLAGS_PUBLIC         (1 << 29)
-#define ALLOC_MEM_FLAGS_NO_SUBSTITUTE  (1 << 28) /* TODO */
-#define ALLOC_MEM_FLAGS_AQL_QUEUE_MEM  (1 << 27)
-#define ALLOC_MEM_FLAGS_COHERENT       (1 << 26) /* For GFXv9 or later */
-
 /**
  * struct kfd2kgd_calls
  *