From: Christian König <[email protected]>

Never activated as UAPI and it turned out that this was to inflexible.

v2 (Srini):
- Updated patch title.
- Drop use of AMDGPU_GEM_DOMAIN_MMIO_REMAP in amdgpu_ttm.c. The
  MMIO_REMAP domain bit is removed from UAPI, so keep the MMIO_REMAP BO
  allocation domain-less (bp.domain = 0) and rely on the TTM placement
  (AMDGPU_PL_MMIO_REMAP) for backing/pinning.
- Keep fdinfo/mem-stats visibility for MMIO_REMAP by classifying BOs
  based on bo->tbo.resource->mem_type == AMDGPU_PL_MMIO_REMAP, since the
  domain bit is removed.

Cc: Alex Deucher <[email protected]>
Cc: Christian König <[email protected]>
Cc: Leo Liu <[email protected]>
Cc: Ruijing Dong <[email protected]>
Cc: David (Ming Qiang) Wu <[email protected]>
Signed-off-by: Christian König <[email protected]>
Signed-off-by: Srinivasan Shanmugam <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    |  3 ---
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 21 ++++++++++-----------
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.h |  2 --
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    |  2 +-
 include/uapi/drm/amdgpu_drm.h              |  6 +-----
 5 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index a381b8ad9d29..950e3f1e83cf 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -458,9 +458,6 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void 
*data,
        /* always clear VRAM */
        flags |= AMDGPU_GEM_CREATE_VRAM_CLEARED;
 
-       if (args->in.domains & AMDGPU_GEM_DOMAIN_MMIO_REMAP)
-               return -EINVAL;
-
        /* create a gem object to contain this object in */
        if (args->in.domains & (AMDGPU_GEM_DOMAIN_GDS |
            AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA)) {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index 415d8d88bbb6..d736779ae9c3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -153,14 +153,6 @@ void amdgpu_bo_placement_from_domain(struct amdgpu_bo 
*abo, u32 domain)
                c++;
        }
 
-       if (domain & AMDGPU_GEM_DOMAIN_MMIO_REMAP) {
-               places[c].fpfn = 0;
-               places[c].lpfn = 0;
-               places[c].mem_type = AMDGPU_PL_MMIO_REMAP;
-               places[c].flags = 0;
-               c++;
-       }
-
        if (domain & AMDGPU_GEM_DOMAIN_GTT) {
                places[c].fpfn = 0;
                places[c].lpfn = 0;
@@ -1546,8 +1538,17 @@ u64 amdgpu_bo_gpu_offset_no_check(struct amdgpu_bo *bo)
  */
 uint32_t amdgpu_bo_mem_stats_placement(struct amdgpu_bo *bo)
 {
-       uint32_t domain = bo->preferred_domains & AMDGPU_GEM_DOMAIN_MASK;
+       u32 domain;
 
+       /*
+        * MMIO_REMAP is internal now, so it no longer maps from a userspace
+        * domain bit. Keep fdinfo/mem-stats visibility by checking the actual
+        * TTM placement.
+        */
+       if (bo->tbo.resource && bo->tbo.resource->mem_type == 
AMDGPU_PL_MMIO_REMAP)
+               return AMDGPU_PL_MMIO_REMAP;
+
+       domain = bo->preferred_domains & AMDGPU_GEM_DOMAIN_MASK;
        if (!domain)
                return TTM_PL_SYSTEM;
 
@@ -1566,8 +1567,6 @@ uint32_t amdgpu_bo_mem_stats_placement(struct amdgpu_bo 
*bo)
                return AMDGPU_PL_OA;
        case AMDGPU_GEM_DOMAIN_DOORBELL:
                return AMDGPU_PL_DOORBELL;
-       case AMDGPU_GEM_DOMAIN_MMIO_REMAP:
-               return AMDGPU_PL_MMIO_REMAP;
        default:
                return TTM_PL_SYSTEM;
        }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
index 52c2d1731aab..912c9afaf9e1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
@@ -168,8 +168,6 @@ static inline unsigned amdgpu_mem_type_to_domain(u32 
mem_type)
                return AMDGPU_GEM_DOMAIN_OA;
        case AMDGPU_PL_DOORBELL:
                return AMDGPU_GEM_DOMAIN_DOORBELL;
-       case AMDGPU_PL_MMIO_REMAP:
-               return AMDGPU_GEM_DOMAIN_MMIO_REMAP;
        default:
                break;
        }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 10211648d498..fc679c8e59aa 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1938,7 +1938,7 @@ static int amdgpu_ttm_alloc_mmio_remap_bo(struct 
amdgpu_device *adev)
        bp.type        = ttm_bo_type_device;
        bp.size        = AMDGPU_GPU_PAGE_SIZE;
        bp.byte_align  = AMDGPU_GPU_PAGE_SIZE;
-       bp.domain      = AMDGPU_GEM_DOMAIN_MMIO_REMAP;
+       bp.domain      = 0;
        bp.flags       = 0;
        bp.resv        = NULL;
        bp.bo_ptr_size = sizeof(struct amdgpu_bo);
diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
index 283410a19dbd..9e4692c270fe 100644
--- a/include/uapi/drm/amdgpu_drm.h
+++ b/include/uapi/drm/amdgpu_drm.h
@@ -105,8 +105,6 @@ extern "C" {
  *
  * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for
  * signalling user mode queues.
- *
- * %AMDGPU_GEM_DOMAIN_MMIO_REMAP       MMIO remap page (special mapping for 
HDP flushing).
  */
 #define AMDGPU_GEM_DOMAIN_CPU          0x1
 #define AMDGPU_GEM_DOMAIN_GTT          0x2
@@ -115,15 +113,13 @@ extern "C" {
 #define AMDGPU_GEM_DOMAIN_GWS          0x10
 #define AMDGPU_GEM_DOMAIN_OA           0x20
 #define AMDGPU_GEM_DOMAIN_DOORBELL     0x40
-#define AMDGPU_GEM_DOMAIN_MMIO_REMAP   0x80
 #define AMDGPU_GEM_DOMAIN_MASK         (AMDGPU_GEM_DOMAIN_CPU | \
                                         AMDGPU_GEM_DOMAIN_GTT | \
                                         AMDGPU_GEM_DOMAIN_VRAM | \
                                         AMDGPU_GEM_DOMAIN_GDS | \
                                         AMDGPU_GEM_DOMAIN_GWS | \
                                         AMDGPU_GEM_DOMAIN_OA | \
-                                        AMDGPU_GEM_DOMAIN_DOORBELL | \
-                                        AMDGPU_GEM_DOMAIN_MMIO_REMAP)
+                                        AMDGPU_GEM_DOMAIN_DOORBELL)
 
 /* Flag that CPU access will be required for the case of VRAM domain */
 #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED  (1 << 0)
-- 
2.34.1

Reply via email to