]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm/xe/irq: remove xe_irq_shutdown
authorIlia Levi <illevi@habana.ai>
Thu, 6 Jun 2024 12:47:05 +0000 (15:47 +0300)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Wed, 26 Jun 2024 22:25:22 +0000 (18:25 -0400)
The cleanup is done by devres in irq_uninstall.

Commit bbc9651fe9f4 ("drm/xe/irq: move irq_uninstall over to devm")
resolved the ordering issue where irq_uninstall (registered with drmm)
was called after pci_free_irq_vectors (registered with devm upon calling
pci_alloc_irq_vectors). This happened because drmm action list is
registered with devm very early in the init flow - before
pci_alloc_irq_vectors.

Now that irq_uninstall is registered with devm, it will be called before
pci_free_irq_vectors and we can remove xe_irq_shutdown.

Signed-off-by: Ilia Levi <illevi@habana.ai>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240606124705.822451-1-illevi@habana.ai
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_device.c
drivers/gpu/drm/xe/xe_irq.c
drivers/gpu/drm/xe/xe_irq.h

index ca5e8435485a0767a4fa2f8955d105979effb32e..cfda7cb5df2cea3104082603b88fc02327065373 100644 (file)
@@ -634,16 +634,16 @@ int xe_device_probe(struct xe_device *xe)
 
        err = xe_device_set_has_flat_ccs(xe);
        if (err)
-               goto err_irq_shutdown;
+               goto err;
 
        err = xe_vram_probe(xe);
        if (err)
-               goto err_irq_shutdown;
+               goto err;
 
        for_each_tile(tile, xe, id) {
                err = xe_tile_init_noalloc(tile);
                if (err)
-                       goto err_irq_shutdown;
+                       goto err;
        }
 
        /* Allocate and map stolen after potential VRAM resize */
@@ -657,7 +657,7 @@ int xe_device_probe(struct xe_device *xe)
         */
        err = xe_display_init_noaccel(xe);
        if (err)
-               goto err_irq_shutdown;
+               goto err;
 
        for_each_gt(gt, xe, id) {
                last_gt = id;
@@ -708,8 +708,6 @@ err_fini_gt:
                        break;
        }
 
-err_irq_shutdown:
-       xe_irq_shutdown(xe);
 err:
        xe_display_fini(xe);
        return err;
@@ -740,8 +738,6 @@ void xe_device_remove(struct xe_device *xe)
 
        for_each_gt(gt, xe, id)
                xe_gt_remove(gt);
-
-       xe_irq_shutdown(xe);
 }
 
 void xe_device_shutdown(struct xe_device *xe)
index ab3d5b7a1e8c78a78e4e8693a964a646d65672ee..85733f993d090c62cb889c6852f131ab07993229 100644 (file)
@@ -738,11 +738,6 @@ free_irq_handler:
        return err;
 }
 
-void xe_irq_shutdown(struct xe_device *xe)
-{
-       irq_uninstall(xe);
-}
-
 void xe_irq_suspend(struct xe_device *xe)
 {
        int irq = to_pci_dev(xe->drm.dev)->irq;
index bc42bc90d96766cf042e11adc072facb7e982bc8..067514e13675bafbfa5e3bbee6e7c443c764a807 100644 (file)
@@ -11,7 +11,6 @@ struct xe_tile;
 struct xe_gt;
 
 int xe_irq_install(struct xe_device *xe);
-void xe_irq_shutdown(struct xe_device *xe);
 void xe_irq_suspend(struct xe_device *xe);
 void xe_irq_resume(struct xe_device *xe);
 void xe_irq_enable_hwe(struct xe_gt *gt);