drm/xe: Move xe_set_dma_info outside of MMIO setup
authorMichał Winiarski <michal.winiarski@intel.com>
Wed, 29 Nov 2023 21:45:00 +0000 (22:45 +0100)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 21 Dec 2023 16:45:10 +0000 (11:45 -0500)
MMIO is going to be setup earlier during probe. Move xe_set_dma_info
outside of MMIO setup.

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://lore.kernel.org/r/20231129214509.1174116-5-michal.winiarski@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_device.c
drivers/gpu/drm/xe/xe_mmio.c

index 296260f..dcb0871 100644 (file)
@@ -353,6 +353,28 @@ static void xe_device_sanitize(struct drm_device *drm, void *arg)
                xe_gt_sanitize(gt);
 }
 
+static int xe_set_dma_info(struct xe_device *xe)
+{
+       unsigned int mask_size = xe->info.dma_mask_size;
+       int err;
+
+       dma_set_max_seg_size(xe->drm.dev, xe_sg_segment_size(xe->drm.dev));
+
+       err = dma_set_mask(xe->drm.dev, DMA_BIT_MASK(mask_size));
+       if (err)
+               goto mask_err;
+
+       err = dma_set_coherent_mask(xe->drm.dev, DMA_BIT_MASK(mask_size));
+       if (err)
+               goto mask_err;
+
+       return 0;
+
+mask_err:
+       drm_err(&xe->drm, "Can't set DMA mask/consistent mask (%d)\n", err);
+       return err;
+}
+
 int xe_device_probe(struct xe_device *xe)
 {
        struct xe_tile *tile;
@@ -367,6 +389,10 @@ int xe_device_probe(struct xe_device *xe)
        if (err)
                return err;
 
+       err = xe_set_dma_info(xe);
+       if (err)
+               return err;
+
        for_each_tile(tile, xe, id) {
                err = xe_tile_alloc(tile);
                if (err)
index 883610f..43f322c 100644 (file)
 
 #define BAR_SIZE_SHIFT 20
 
-static int xe_set_dma_info(struct xe_device *xe)
-{
-       unsigned int mask_size = xe->info.dma_mask_size;
-       int err;
-
-       dma_set_max_seg_size(xe->drm.dev, xe_sg_segment_size(xe->drm.dev));
-
-       err = dma_set_mask(xe->drm.dev, DMA_BIT_MASK(mask_size));
-       if (err)
-               goto mask_err;
-
-       err = dma_set_coherent_mask(xe->drm.dev, DMA_BIT_MASK(mask_size));
-       if (err)
-               goto mask_err;
-
-       return 0;
-
-mask_err:
-       drm_err(&xe->drm, "Can't set DMA mask/consistent mask (%d)\n", err);
-       return err;
-}
-
 static void
 _resize_bar(struct xe_device *xe, int resno, resource_size_t size)
 {
@@ -431,10 +409,6 @@ int xe_mmio_init(struct xe_device *xe)
        if (err)
                return err;
 
-       err = xe_set_dma_info(xe);
-       if (err)
-               return err;
-
        xe_mmio_probe_tiles(xe);
 
        return 0;