[Intel-xe] [PATCH 03/12] drm/xe: Use managed pci_enable_device
Michał Winiarski
michal.winiarski at intel.com
Wed Nov 8 00:33:35 UTC 2023
Xe uses devres for most of its driver-lifetime resources, use it for pci
device as well.
Signed-off-by: Michał Winiarski <michal.winiarski at intel.com>
---
drivers/gpu/drm/xe/xe_pci.c | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 84f3e4d901502..f6f7ac390164c 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -662,6 +662,11 @@ static void xe_pci_remove(struct pci_dev *pdev)
pci_set_drvdata(pdev, NULL);
}
+void xe_pci_clear_master(void *pdev)
+{
+ pci_clear_master(pdev);
+}
+
static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
const struct xe_device_desc *desc = (const void *)ent->driver_data;
@@ -690,23 +695,25 @@ 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);
+ devm_add_action(&pdev->dev, xe_pci_clear_master, pdev);
err = xe_info_init(xe, desc, subplatform_desc);
if (err)
- goto err_pci_disable;
+ return err;
xe_display_probe(xe);
@@ -733,16 +740,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;
}
#ifdef CONFIG_PM_SLEEP
--
2.42.0
More information about the Intel-xe
mailing list