drm/xe: Fake pulling gt->info.engine_mask from hwconfig blob
authorMatthew Brost <matthew.brost@intel.com>
Thu, 12 Jan 2023 22:25:30 +0000 (17:25 -0500)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 12 Dec 2023 19:06:00 +0000 (14:06 -0500)
The blob doesn't fully support this yet, so fake for now to ensure our
driver load order is correct.

Once the blob supports pulling gt->info.engine_mask from the blob, this
patch can be removed.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_gt.c
drivers/gpu/drm/xe/xe_gt_types.h
drivers/gpu/drm/xe/xe_pci.c

index fd8232a4556e5f22c374a5413376926b5b1e19ad..96d0f5845d87b490132276db77a83e5e92ec2d02 100644 (file)
@@ -450,6 +450,9 @@ static int gt_fw_domain_init(struct xe_gt *gt)
        if (err)
                goto err_force_wake;
 
+       /* XXX: Fake that we pull the engine mask from hwconfig blob */
+       gt->info.engine_mask = gt->info.__engine_mask;
+
        /* Enables per hw engine IRQs */
        xe_gt_irq_postinstall(gt);
 
index c80a9215098d9e6a804cdfc74c2eeb2a6c0ee638..2dbc8cedd6305724e1750ec62816b3b6607baa5e 100644 (file)
@@ -93,6 +93,12 @@ struct xe_gt {
                u32 clock_freq;
                /** @engine_mask: mask of engines present on GT */
                u64 engine_mask;
+               /**
+                * @__engine_mask: mask of engines present on GT read from
+                * xe_pci.c, used to fake reading the engine_mask from the
+                * hwconfig blob.
+                */
+               u64 __engine_mask;
        } info;
 
        /**
index 55d8a597a0689f5b3c12d543cd4119c3ae1371ee..49f1f0489f1c8f742af99bfb49adaa9678b62b8f 100644 (file)
@@ -420,13 +420,13 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                if (id == 0) {
                        gt->info.type = XE_GT_TYPE_MAIN;
                        gt->info.vram_id = id;
-                       gt->info.engine_mask = desc->platform_engine_mask;
+                       gt->info.__engine_mask = desc->platform_engine_mask;
                        gt->mmio.adj_limit = 0;
                        gt->mmio.adj_offset = 0;
                } else {
                        gt->info.type = desc->extra_gts[id - 1].type;
                        gt->info.vram_id = desc->extra_gts[id - 1].vram_id;
-                       gt->info.engine_mask =
+                       gt->info.__engine_mask =
                                desc->extra_gts[id - 1].engine_mask;
                        gt->mmio.adj_limit =
                                desc->extra_gts[id - 1].mmio_adj_limit;