drm/i915: Remove unused i915->ggtt
authorAndi Shyti <andi.shyti@linux.intel.com>
Sun, 19 Dec 2021 21:25:00 +0000 (23:25 +0200)
committerMatt Roper <matthew.d.roper@intel.com>
Wed, 5 Jan 2022 18:49:02 +0000 (10:49 -0800)
The reference to the GGTT from the private date is not used
anymore. Remove it.

The ggtt in the root gt will now be dynamically allocated and the
deallocation handled by the drmm_* managed allocation.

Suggested-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Sujaritha Sundaresan <sujaritha.sundaresan@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211219212500.61432-7-andi.shyti@linux.intel.com
drivers/gpu/drm/i915/gt/intel_gt.c
drivers/gpu/drm/i915/gt/intel_gt.h
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
drivers/gpu/drm/i915/selftests/i915_vma.c
drivers/gpu/drm/i915/selftests/mock_gem_device.c
drivers/gpu/drm/i915/selftests/mock_gtt.c
drivers/gpu/drm/i915/selftests/mock_gtt.h

index 446e56ce7f704a4e46cb96e6f0d30a2f35220096..3ebf8136e44bd92e8c3b69ad82ccf64d5670363e 100644 (file)
@@ -3,6 +3,8 @@
  * Copyright © 2019 Intel Corporation
  */
 
+#include <drm/drm_managed.h>
+
 #include "intel_gt_debugfs.h"
 
 #include "gem/i915_gem_lmem.h"
@@ -83,9 +85,11 @@ int intel_gt_probe_lmem(struct intel_gt *gt)
        return 0;
 }
 
-void intel_gt_init_hw_early(struct intel_gt *gt, struct i915_ggtt *ggtt)
+int intel_gt_assign_ggtt(struct intel_gt *gt)
 {
-       gt->ggtt = ggtt;
+       gt->ggtt = drmm_kzalloc(&gt->i915->drm, sizeof(*gt->ggtt), GFP_KERNEL);
+
+       return gt->ggtt ? 0 : -ENOMEM;
 }
 
 static const struct intel_mmio_range icl_l3bank_steering_table[] = {
index 3ace129eb2af49970fb124a8fe0eb04200fbe82d..94e1bac8c0cc1dc023a650e5bb91f722aea2c0f8 100644 (file)
@@ -36,7 +36,7 @@ static inline struct intel_gt *huc_to_gt(struct intel_huc *huc)
 
 void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915);
 void __intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915);
-void intel_gt_init_hw_early(struct intel_gt *gt, struct i915_ggtt *ggtt);
+int intel_gt_assign_ggtt(struct intel_gt *gt);
 int intel_gt_probe_lmem(struct intel_gt *gt);
 int intel_gt_init_mmio(struct intel_gt *gt);
 int __must_check intel_gt_init_hw(struct intel_gt *gt);
index c23a27e02e9536ef2a0fca59f20d96d3cf72632d..d61b4a3016f8c498c61e94759b5a6ed93676009d 100644 (file)
@@ -569,7 +569,9 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
 
        i915_perf_init(dev_priv);
 
-       intel_gt_init_hw_early(to_gt(dev_priv), &dev_priv->ggtt);
+       ret = intel_gt_assign_ggtt(to_gt(dev_priv));
+       if (ret)
+               goto err_perf;
 
        ret = i915_ggtt_probe_hw(dev_priv);
        if (ret)
index bce55d1081b3bd1e19a6cdf2c6385157f7784c6c..63a579e952b9ef9a8aa80906381cbe5302fae8ef 100644 (file)
@@ -1008,8 +1008,6 @@ struct drm_i915_private {
        struct drm_atomic_state *modeset_restore_state;
        struct drm_modeset_acquire_ctx reset_ctx;
 
-       struct i915_ggtt ggtt; /* VM representing the global address space */
-
        struct i915_gem_mm mm;
 
        /* Kernel Modesetting */
index 462bb39347a2537ce42f6c0f35a1d8a47e410947..357ced0b88e777e7a118b5f8f13319bd32b1c97a 100644 (file)
@@ -1737,26 +1737,28 @@ int i915_gem_gtt_mock_selftests(void)
                SUBTEST(igt_gtt_insert),
        };
        struct drm_i915_private *i915;
-       struct i915_ggtt *ggtt;
+       struct intel_gt *gt;
        int err;
 
        i915 = mock_gem_device();
        if (!i915)
                return -ENOMEM;
 
-       ggtt = kmalloc(sizeof(*ggtt), GFP_KERNEL);
-       if (!ggtt) {
-               err = -ENOMEM;
+       /* allocate the ggtt */
+       err = intel_gt_assign_ggtt(to_gt(i915));
+       if (err)
                goto out_put;
-       }
-       mock_init_ggtt(i915, ggtt);
 
-       err = i915_subtests(tests, ggtt);
+       gt = to_gt(i915);
+
+       mock_init_ggtt(gt);
+
+       err = i915_subtests(tests, gt->ggtt);
 
        mock_device_flush(i915);
        i915_gem_drain_freed_objects(i915);
-       mock_fini_ggtt(ggtt);
-       kfree(ggtt);
+       mock_fini_ggtt(gt->ggtt);
+
 out_put:
        mock_destroy_device(i915);
        return err;
index 5ba0f1052eee7f88768be4e0064762ef3084e52f..de37cfa4c65f1531c8629f6cb0c3e976b9b67043 100644 (file)
@@ -922,26 +922,28 @@ int i915_vma_mock_selftests(void)
                SUBTEST(igt_vma_partial),
        };
        struct drm_i915_private *i915;
-       struct i915_ggtt *ggtt;
+       struct intel_gt *gt;
        int err;
 
        i915 = mock_gem_device();
        if (!i915)
                return -ENOMEM;
 
-       ggtt = kmalloc(sizeof(*ggtt), GFP_KERNEL);
-       if (!ggtt) {
-               err = -ENOMEM;
+       /* allocate the ggtt */
+       err = intel_gt_assign_ggtt(to_gt(i915));
+       if (err)
                goto out_put;
-       }
-       mock_init_ggtt(i915, ggtt);
 
-       err = i915_subtests(tests, ggtt);
+       gt = to_gt(i915);
+
+       mock_init_ggtt(gt);
+
+       err = i915_subtests(tests, gt->ggtt);
 
        mock_device_flush(i915);
        i915_gem_drain_freed_objects(i915);
-       mock_fini_ggtt(ggtt);
-       kfree(ggtt);
+       mock_fini_ggtt(gt->ggtt);
+
 out_put:
        mock_destroy_device(i915);
        return err;
index 0b469ae0f47454a3995f6ff5efffe28228e0b856..28a0f054009a6f4217116b284ac3b97ac60feca6 100644 (file)
@@ -194,8 +194,13 @@ struct drm_i915_private *mock_gem_device(void)
 
        mock_init_contexts(i915);
 
-       mock_init_ggtt(i915, &i915->ggtt);
-       to_gt(i915)->vm = i915_vm_get(&i915->ggtt.vm);
+       /* allocate the ggtt */
+       ret = intel_gt_assign_ggtt(to_gt(i915));
+       if (ret)
+               goto err_unlock;
+
+       mock_init_ggtt(to_gt(i915));
+       to_gt(i915)->vm = i915_vm_get(&to_gt(i915)->ggtt->vm);
 
        mkwrite_device_info(i915)->platform_engine_mask = BIT(0);
        to_gt(i915)->info.engine_mask = BIT(0);
index 1802baf80a17a11f3f453025581ba4a779ec667b..7863d0f4bbd7f01a4930c64dea450579f637b41c 100644 (file)
@@ -104,12 +104,12 @@ static void mock_unbind_ggtt(struct i915_address_space *vm,
 {
 }
 
-void mock_init_ggtt(struct drm_i915_private *i915, struct i915_ggtt *ggtt)
+void mock_init_ggtt(struct intel_gt *gt)
 {
-       memset(ggtt, 0, sizeof(*ggtt));
+       struct i915_ggtt *ggtt = gt->ggtt;
 
-       ggtt->vm.gt = to_gt(i915);
-       ggtt->vm.i915 = i915;
+       ggtt->vm.gt = gt;
+       ggtt->vm.i915 = gt->i915;
        ggtt->vm.is_ggtt = true;
 
        ggtt->gmadr = (struct resource) DEFINE_RES_MEM(0, 2048 * PAGE_SIZE);
@@ -128,7 +128,6 @@ void mock_init_ggtt(struct drm_i915_private *i915, struct i915_ggtt *ggtt)
        ggtt->vm.vma_ops.unbind_vma  = mock_unbind_ggtt;
 
        i915_address_space_init(&ggtt->vm, VM_CLASS_GGTT);
-       to_gt(i915)->ggtt = ggtt;
 }
 
 void mock_fini_ggtt(struct i915_ggtt *ggtt)
index e3f224f43beb6fbd83bb07ce98a58dad315cee32..d6eb90bd7f3f09e86110faaa26d29ffa7c8cd657 100644 (file)
@@ -27,8 +27,9 @@
 
 struct drm_i915_private;
 struct i915_ggtt;
+struct intel_gt;
 
-void mock_init_ggtt(struct drm_i915_private *i915, struct i915_ggtt *ggtt);
+void mock_init_ggtt(struct intel_gt *gt);
 void mock_fini_ggtt(struct i915_ggtt *ggtt);
 
 struct i915_ppgtt *mock_ppgtt(struct drm_i915_private *i915, const char *name);