drm/xe: Use managed pci_enable_device
authorMichał Winiarski <michal.winiarski@intel.com>
Wed, 29 Nov 2023 21:44:58 +0000 (22:44 +0100)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 21 Dec 2023 16:45:09 +0000 (11:45 -0500)
Xe uses devres for most of its driver-lifetime resources, use it for pci
device as well.

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://lore.kernel.org/r/20231129214509.1174116-3-michal.winiarski@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_pci.c

index a38fea281eb00a4d13b191dff9b3fe38e79e07ec..6aaa16b15058af28fa9c0f4379bcb8db1a450263 100644 (file)
@@ -696,25 +696,26 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (xe_display_driver_probe_defer(pdev))
                return -EPROBE_DEFER;
 
+       err = pcim_enable_device(pdev);
+       if (err)
+               return err;
+
        xe = xe_device_create(pdev, ent);
        if (IS_ERR(xe))
                return PTR_ERR(xe);
 
+       pci_set_drvdata(pdev, xe);
+
        xe_pm_assert_unbounded_bridge(xe);
        subplatform_desc = find_subplatform(xe, desc);
 
-       pci_set_drvdata(pdev, xe);
-       err = pci_enable_device(pdev);
-       if (err)
-               return err;
-
        pci_set_master(pdev);
 
        xe_sriov_probe_early(xe, desc->has_sriov);
 
        err = xe_info_init(xe, desc, subplatform_desc);
        if (err)
-               goto err_pci_disable;
+               return err;
 
        xe_display_probe(xe);
 
@@ -745,16 +746,11 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        err = xe_device_probe(xe);
        if (err)
-               goto err_pci_disable;
+               return err;
 
        xe_pm_init(xe);
 
        return 0;
-
-err_pci_disable:
-       pci_disable_device(pdev);
-
-       return err;
 }
 
 static void xe_pci_shutdown(struct pci_dev *pdev)