]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/{i915,xe}: convert i915 and xe display members into pointers
authorJani Nikula <jani.nikula@intel.com>
Wed, 7 May 2025 15:22:54 +0000 (18:22 +0300)
committerJani Nikula <jani.nikula@intel.com>
Fri, 16 May 2025 08:15:16 +0000 (11:15 +0300)
As the first step towards making struct intel_display an opaque pointer
in i915 and xe drivers, convert the struct drm_i915_private and struct
xe_device display members into pointers.

Initially, add temporary struct intel_display __display members, and
point display at it to avoid dynamic allocation. In the future, we can
drop this, and switch to dynamic allocation.

The conversion is done simply with sed:

sed -i 's/&\([a-zA-Z0-9_>.-]*\)\(dev_priv\|i915\|xe\)->display\([^.]\)/\1\2->display\3/g' \
    $(git ls-files -- drivers/gpu/drm/i915 drivers/gpu/drm/xe)

sed -i 's/\(dev_priv\|i915\|xe\)->display\./\1->display->/g' \
    $(git ls-files -- drivers/gpu/drm/i915 drivers/gpu/drm/xe)

With a couple of manual tweaks on top.

v2: Initialize i915->display also in selftest mock_gem_device()

Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://lore.kernel.org/r/20250507152254.2398934-1-jani.nikula@intel.com
22 files changed:
drivers/gpu/drm/i915/display/intel_display_conversion.c
drivers/gpu/drm/i915/display/intel_dpt.c
drivers/gpu/drm/i915/display/intel_vbt_defs.h
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
drivers/gpu/drm/i915/gt/intel_gt_pm.c
drivers/gpu/drm/i915/gt/intel_reset.c
drivers/gpu/drm/i915/gt/intel_rps.c
drivers/gpu/drm/i915/gvt/cmd_parser.c
drivers/gpu/drm/i915/gvt/display.c
drivers/gpu/drm/i915/gvt/fb_decoder.c
drivers/gpu/drm/i915/gvt/handlers.c
drivers/gpu/drm/i915/i915_driver.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_getparam.c
drivers/gpu/drm/i915/i915_gpu_error.c
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/intel_clock_gating.c
drivers/gpu/drm/i915/selftests/mock_gem_device.c
drivers/gpu/drm/xe/display/xe_display.c
drivers/gpu/drm/xe/display/xe_fb_pin.c
drivers/gpu/drm/xe/xe_device_types.h

index 0578b68404da74f171df8980b13564c18fc35646..151d83fdbe379d7419fee39c437b90c5b1284edd 100644 (file)
@@ -5,7 +5,7 @@
 
 struct intel_display *__i915_to_display(struct drm_i915_private *i915)
 {
-       return &i915->display;
+       return i915->display;
 }
 
 struct intel_display *__drm_to_display(struct drm_device *drm)
index 43bd97e4f589897dff85aad3112c30f98b45155b..8684cf8e4b7f0612f7e3ca5edfb73d1dda10b593 100644 (file)
@@ -126,7 +126,7 @@ struct i915_vma *intel_dpt_pin_to_ggtt(struct i915_address_space *vm,
                                       unsigned int alignment)
 {
        struct drm_i915_private *i915 = vm->i915;
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        struct i915_dpt *dpt = i915_vm_to_dpt(vm);
        struct ref_tracker *wakeref;
        struct i915_vma *vma;
index e9b809568cd42a36ab24f8fbea8aa915e3139dac..92c04811aa28e8af90dad34a6e1614fdf74b69b8 100644 (file)
@@ -446,7 +446,7 @@ enum vbt_gmbus_ddi {
  * basically any of the fields to ensure the correct interpretation for the BDB
  * version in question.
  *
- * When we copy the child device configs to dev_priv->display.vbt.child_dev, we
+ * When we copy the child device configs to display->vbt.child_dev, we
  * reserve space for the full structure below, and initialize the tail not
  * actually present in VBT to zeros. Accessing those fields is fine, as long as
  * the default zero is taken into account, again according to the BDB version.
index 9fbf14867a2a6404228c7bbd96b256314172e1cf..b6dc3d1b9bb1316c5c2186253800dc67bfda09ee 100644 (file)
@@ -77,7 +77,7 @@ i915_gem_object_get_frontbuffer(const struct drm_i915_gem_object *obj)
  * Set object's frontbuffer pointer. If frontbuffer is already set for the
  * object keep it and return it's pointer to the caller. Please note that RCU
  * mechanism is used to handle e.g. ongoing removal of frontbuffer pointer. This
- * function is protected by i915->display.fb_tracking.lock
+ * function is protected by i915->display->fb_tracking.lock
  *
  * Return: pointer to frontbuffer which was set.
  */
index 0c723e7c71a2b45ceff50ce92a2a9f7baac8f0ff..889e61843ff3093c3285e2328ac746f336ebbdda 100644 (file)
@@ -328,7 +328,7 @@ static bool fence_is_active(const struct i915_fence_reg *fence)
 
 static struct i915_fence_reg *fence_find(struct i915_ggtt *ggtt)
 {
-       struct intel_display *display = &ggtt->vm.i915->display;
+       struct intel_display *display = ggtt->vm.i915->display;
        struct i915_fence_reg *active = NULL;
        struct i915_fence_reg *fence, *fn;
 
index 3182f19b98376fcb753ec18c3281ef42c6a1e0bd..3b77b4bb88e339d1c6bcebc75342ac81a2894db5 100644 (file)
@@ -70,7 +70,7 @@ static int __gt_unpark(struct intel_wakeref *wf)
 {
        struct intel_gt *gt = container_of(wf, typeof(*gt), wakeref);
        struct drm_i915_private *i915 = gt->i915;
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
 
        GT_TRACE(gt, "\n");
 
@@ -104,7 +104,7 @@ static int __gt_park(struct intel_wakeref *wf)
        struct intel_gt *gt = container_of(wf, typeof(*gt), wakeref);
        intel_wakeref_t wakeref = fetch_and_zero(&gt->awake);
        struct drm_i915_private *i915 = gt->i915;
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
 
        GT_TRACE(gt, "\n");
 
index dbdcfe130ad41fd465ce28a0a31d761f69a5e7a3..971fbff1211c37aa5b276e808390774c1e358659 100644 (file)
@@ -1205,7 +1205,7 @@ void intel_gt_reset(struct intel_gt *gt,
                    intel_engine_mask_t stalled_mask,
                    const char *reason)
 {
-       struct intel_display *display = &gt->i915->display;
+       struct intel_display *display = gt->i915->display;
        intel_engine_mask_t awake;
        int ret;
 
@@ -1423,7 +1423,7 @@ static void intel_gt_reset_global(struct intel_gt *gt,
        /* Use a watchdog to ensure that our reset completes */
        intel_wedge_on_timeout(&w, gt, 60 * HZ) {
                struct drm_i915_private *i915 = gt->i915;
-               struct intel_display *display = &i915->display;
+               struct intel_display *display = i915->display;
                bool need_display_reset;
                bool reset_display;
 
index c619c6e2a76f4554aaf0b5bc4e9e63b65fc93180..74658835de1ac7db5268e1e8b7313db54d7f5d90 100644 (file)
@@ -550,7 +550,7 @@ static unsigned int init_emon(struct intel_uncore *uncore)
 static bool gen5_rps_enable(struct intel_rps *rps)
 {
        struct drm_i915_private *i915 = rps_to_i915(rps);
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        struct intel_uncore *uncore = rps_to_uncore(rps);
        u8 fstart, vstart;
        u32 rgvmodectl;
@@ -620,7 +620,7 @@ static bool gen5_rps_enable(struct intel_rps *rps)
 static void gen5_rps_disable(struct intel_rps *rps)
 {
        struct drm_i915_private *i915 = rps_to_i915(rps);
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        struct intel_uncore *uncore = rps_to_uncore(rps);
        u16 rgvswctl;
 
index f25ee2953baf5282726952434597d47503f6a425..2b5094e8de5e364d3a89777b20c16c6592623e47 100644 (file)
@@ -1286,7 +1286,7 @@ static int gen8_decode_mi_display_flip(struct parser_exec_state *s,
                struct mi_display_flip_command_info *info)
 {
        struct drm_i915_private *dev_priv = s->engine->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct plane_code_mapping gen8_plane_code[] = {
                [0] = {PIPE_A, PLANE_A, PRIMARY_A_FLIP_DONE},
                [1] = {PIPE_B, PLANE_A, PRIMARY_B_FLIP_DONE},
@@ -1333,7 +1333,7 @@ static int skl_decode_mi_display_flip(struct parser_exec_state *s,
                struct mi_display_flip_command_info *info)
 {
        struct drm_i915_private *dev_priv = s->engine->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_vgpu *vgpu = s->vgpu;
        u32 dword0 = cmd_val(s, 0);
        u32 dword1 = cmd_val(s, 1);
@@ -1421,7 +1421,7 @@ static int gen8_update_plane_mmio_from_mi_display_flip(
                struct mi_display_flip_command_info *info)
 {
        struct drm_i915_private *dev_priv = s->engine->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_vgpu *vgpu = s->vgpu;
 
        set_mask_bits(&vgpu_vreg_t(vgpu, info->surf_reg), GENMASK(31, 12),
index 1e1af5e545a41562bfde828eac491deab6912b5c..b77e8f3ff75c8fe5a1282d3dbf57d7f4e7c67695 100644 (file)
@@ -69,7 +69,7 @@ static int get_edp_pipe(struct intel_vgpu *vgpu)
 static int edp_pipe_is_enabled(struct intel_vgpu *vgpu)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        if (!(vgpu_vreg_t(vgpu, TRANSCONF(display, TRANSCODER_EDP)) & TRANSCONF_ENABLE))
                return 0;
@@ -82,7 +82,7 @@ static int edp_pipe_is_enabled(struct intel_vgpu *vgpu)
 int pipe_is_enabled(struct intel_vgpu *vgpu, int pipe)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        if (drm_WARN_ON(&dev_priv->drm,
                        pipe < PIPE_A || pipe >= I915_MAX_PIPES))
@@ -183,7 +183,7 @@ static u8 dpcd_fix_data[DPCD_HEADER_SIZE] = {
 static void emulate_monitor_status_change(struct intel_vgpu *vgpu)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        int pipe;
 
        if (IS_BROXTON(dev_priv)) {
@@ -634,7 +634,7 @@ void vgpu_update_vblank_emulation(struct intel_vgpu *vgpu, bool turnon)
 static void emulate_vblank_on_pipe(struct intel_vgpu *vgpu, int pipe)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_vgpu_irq *irq = &vgpu->irq;
        int vblank_event[] = {
                [PIPE_A] = PIPE_A_VBLANK,
@@ -664,7 +664,7 @@ static void emulate_vblank_on_pipe(struct intel_vgpu *vgpu, int pipe)
 void intel_vgpu_emulate_vblank(struct intel_vgpu *vgpu)
 {
        struct drm_i915_private *i915 = vgpu->gvt->gt->i915;
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        int pipe;
 
        mutex_lock(&vgpu->vgpu_lock);
index f9f7ef131371f75912a155f7b83280259e39cfb3..4cfe8d7f368d273a295d3322c5ebc9b1805ea846 100644 (file)
@@ -154,7 +154,7 @@ static u32 intel_vgpu_get_stride(struct intel_vgpu *vgpu, int pipe,
        u32 tiled, int stride_mask, int bpp)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        u32 stride_reg = vgpu_vreg_t(vgpu, DSPSTRIDE(display, pipe)) & stride_mask;
        u32 stride = stride_reg;
@@ -211,7 +211,7 @@ int intel_vgpu_decode_primary_plane(struct intel_vgpu *vgpu,
        struct intel_vgpu_primary_plane_format *plane)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        u32 val, fmt;
        int pipe;
 
@@ -342,7 +342,7 @@ int intel_vgpu_decode_cursor_plane(struct intel_vgpu *vgpu,
        struct intel_vgpu_cursor_plane_format *plane)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        u32 val, mode, index;
        u32 alpha_plane, alpha_force;
        int pipe;
index 1344e6d20a34fdbf9e9c6462e9577968156afa3b..11cb8bf1fa4aa589b018a6df93853ce9d632d50f 100644 (file)
@@ -658,7 +658,7 @@ static u32 skl_vgpu_get_dp_bitrate(struct intel_vgpu *vgpu, enum port port)
 static void vgpu_update_refresh_rate(struct intel_vgpu *vgpu)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        enum port port;
        u32 dp_br, link_m, link_n, htotal, vtotal;
 
@@ -1022,7 +1022,7 @@ static int pri_surf_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
                void *p_data, unsigned int bytes)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        u32 pipe = DSPSURF_TO_PIPE(display, offset);
        int event = SKL_FLIP_EVENT(pipe, PLANE_PRIMARY);
 
@@ -1064,7 +1064,7 @@ static int reg50080_mmio_write(struct intel_vgpu *vgpu,
                               unsigned int bytes)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        enum pipe pipe = REG_50080_TO_PIPE(offset);
        enum plane_id plane = REG_50080_TO_PLANE(offset);
        int event = SKL_FLIP_EVENT(pipe, plane);
@@ -2200,7 +2200,7 @@ static int csfe_chicken1_mmio_write(struct intel_vgpu *vgpu,
 static int init_generic_mmio_info(struct intel_gvt *gvt)
 {
        struct drm_i915_private *dev_priv = gvt->gt->i915;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        int ret;
 
        MMIO_RING_DFH(RING_IMR, D_ALL, 0, NULL,
index 134a1c3d1f9d102f1f2826b478adf96a2747296d..5c69d14a7673e632adc8ca7735355fefaa6fcdce 100644 (file)
@@ -115,7 +115,7 @@ static const struct drm_driver i915_drm_driver;
 
 static int i915_workqueues_init(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        /*
         * The i915 workqueue is primarily used for batched retirement of
@@ -163,7 +163,7 @@ out_err:
 
 static void i915_workqueues_cleanup(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        destroy_workqueue(dev_priv->unordered_wq);
        destroy_workqueue(display->hotplug.dp_wq);
@@ -226,7 +226,7 @@ static void sanitize_gpu(struct drm_i915_private *i915)
  */
 static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        int ret = 0;
 
        if (i915_inject_probe_failure(dev_priv))
@@ -289,7 +289,7 @@ err_workqueues:
  */
 static void i915_driver_late_release(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        intel_irq_fini(dev_priv);
        intel_power_domains_cleanup(display);
@@ -317,7 +317,7 @@ static void i915_driver_late_release(struct drm_i915_private *dev_priv)
  */
 static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_gt *gt;
        int ret, i;
 
@@ -464,7 +464,7 @@ static int i915_pcode_init(struct drm_i915_private *i915)
  */
 static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
        int ret;
 
@@ -603,7 +603,7 @@ err_perf:
  */
 static void i915_driver_hw_remove(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
 
        i915_perf_fini(dev_priv);
@@ -623,7 +623,7 @@ static void i915_driver_hw_remove(struct drm_i915_private *dev_priv)
  */
 static int i915_driver_register(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_gt *gt;
        unsigned int i;
        int ret;
@@ -674,7 +674,7 @@ static int i915_driver_register(struct drm_i915_private *dev_priv)
  */
 static void i915_driver_unregister(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_gt *gt;
        unsigned int i;
 
@@ -760,6 +760,9 @@ i915_driver_create(struct pci_dev *pdev, const struct pci_device_id *ent)
        /* Set up device info and initial runtime info. */
        intel_device_info_driver_create(i915, pdev->device, match_info);
 
+       /* TODO: Allocate display dynamically. */
+       i915->display = &i915->__display;
+
        intel_display_device_probe(pdev);
 
        return i915;
@@ -794,7 +797,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                return PTR_ERR(i915);
        }
 
-       display = &i915->display;
+       display = i915->display;
 
        ret = i915_driver_early_probe(i915);
        if (ret < 0)
@@ -886,7 +889,7 @@ out_pci_disable:
 
 void i915_driver_remove(struct drm_i915_private *i915)
 {
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        intel_wakeref_t wakeref;
 
        wakeref = intel_runtime_pm_get(&i915->runtime_pm);
@@ -919,7 +922,7 @@ void i915_driver_remove(struct drm_i915_private *i915)
 static void i915_driver_release(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = to_i915(dev);
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
        intel_wakeref_t wakeref;
 
@@ -973,7 +976,7 @@ static void i915_driver_postclose(struct drm_device *dev, struct drm_file *file)
 
 void i915_driver_shutdown(struct drm_i915_private *i915)
 {
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
 
        disable_rpm_wakeref_asserts(&i915->runtime_pm);
        intel_runtime_pm_disable(&i915->runtime_pm);
@@ -1053,7 +1056,7 @@ static int i915_drm_prepare(struct drm_device *dev)
 static int i915_drm_suspend(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = to_i915(dev);
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
        pci_power_t opregion_target_state;
 
@@ -1103,7 +1106,7 @@ static int i915_drm_suspend(struct drm_device *dev)
 static int i915_drm_suspend_late(struct drm_device *dev, bool hibernation)
 {
        struct drm_i915_private *dev_priv = to_i915(dev);
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
        struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
        struct intel_gt *gt;
@@ -1175,7 +1178,7 @@ int i915_driver_suspend_switcheroo(struct drm_i915_private *i915,
 static int i915_drm_resume(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = to_i915(dev);
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_gt *gt;
        int ret, i;
 
@@ -1260,7 +1263,7 @@ static int i915_drm_resume(struct drm_device *dev)
 static int i915_drm_resume_early(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = to_i915(dev);
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
        struct intel_gt *gt;
        int ret, i;
@@ -1492,7 +1495,7 @@ static int i915_pm_restore(struct device *kdev)
 static int intel_runtime_suspend(struct device *kdev)
 {
        struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
        struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
        struct pci_dev *root_pdev;
@@ -1591,7 +1594,7 @@ static int intel_runtime_suspend(struct device *kdev)
 static int intel_runtime_resume(struct device *kdev)
 {
        struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
        struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
        struct pci_dev *root_pdev;
index 93b4c504b7100ff0c41a041139aabc43ebc44d0f..0841988c4a671d05ee5957949dc96fe55eee6617 100644 (file)
@@ -177,7 +177,8 @@ struct i915_selftest_stash {
 struct drm_i915_private {
        struct drm_device drm;
 
-       struct intel_display display;
+       struct intel_display *display;
+       struct intel_display __display; /* Transitional. Do not use directly. */
 
        /* FIXME: Device release actions should all be moved to drmm_ */
        bool do_release;
index be8149e4628179bc683a854d02ccc16113e367bb..6fcda6d7b5b7348b14b9c95e79b7970250d79081 100644 (file)
@@ -16,7 +16,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
                        struct drm_file *file_priv)
 {
        struct drm_i915_private *i915 = to_i915(dev);
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        struct pci_dev *pdev = to_pci_dev(dev->dev);
        const struct sseu_dev_info *sseu = &to_gt(i915)->info.sseu;
        drm_i915_getparam_t *param = data;
index 4f785cdbd1553a7a033a5c4b87b16d616e196d88..f434b6825fc28e3cc9caa339aca4ff52c23d47ce 100644 (file)
@@ -2067,7 +2067,7 @@ static struct i915_gpu_coredump *
 __i915_gpu_coredump(struct intel_gt *gt, intel_engine_mask_t engine_mask, u32 dump_flags)
 {
        struct drm_i915_private *i915 = gt->i915;
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        struct i915_gpu_coredump *error;
 
        /* Check if GPU capture has been disabled */
index cc05f347555ad9037af2924a07781d524a9f97e0..351928481cd9e3b490a332ff84f5a79e41e3415f 100644 (file)
@@ -230,7 +230,7 @@ out:
 static irqreturn_t valleyview_irq_handler(int irq, void *arg)
 {
        struct drm_i915_private *dev_priv = arg;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        irqreturn_t ret = IRQ_NONE;
 
        if (!intel_irqs_enabled(dev_priv))
@@ -324,7 +324,7 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg)
 static irqreturn_t cherryview_irq_handler(int irq, void *arg)
 {
        struct drm_i915_private *dev_priv = arg;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        irqreturn_t ret = IRQ_NONE;
 
        if (!intel_irqs_enabled(dev_priv))
@@ -418,7 +418,7 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg)
 static irqreturn_t ilk_irq_handler(int irq, void *arg)
 {
        struct drm_i915_private *i915 = arg;
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        void __iomem * const regs = intel_uncore_regs(&i915->uncore);
        u32 de_iir, gt_iir, de_ier, sde_ier = 0;
        irqreturn_t ret = IRQ_NONE;
@@ -507,7 +507,7 @@ static inline void gen8_master_intr_enable(void __iomem * const regs)
 static irqreturn_t gen8_irq_handler(int irq, void *arg)
 {
        struct drm_i915_private *dev_priv = arg;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        void __iomem * const regs = intel_uncore_regs(&dev_priv->uncore);
        u32 master_ctl;
 
@@ -558,7 +558,7 @@ static inline void gen11_master_intr_enable(void __iomem * const regs)
 static irqreturn_t gen11_irq_handler(int irq, void *arg)
 {
        struct drm_i915_private *i915 = arg;
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        void __iomem * const regs = intel_uncore_regs(&i915->uncore);
        struct intel_gt *gt = to_gt(i915);
        u32 master_ctl;
@@ -616,7 +616,7 @@ static inline void dg1_master_intr_enable(void __iomem * const regs)
 static irqreturn_t dg1_irq_handler(int irq, void *arg)
 {
        struct drm_i915_private * const i915 = arg;
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        struct intel_gt *gt = to_gt(i915);
        void __iomem * const regs = intel_uncore_regs(gt->uncore);
        u32 master_tile_ctl, master_ctl;
@@ -660,7 +660,7 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
 
 static void ilk_irq_reset(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_uncore *uncore = &dev_priv->uncore;
 
        gen2_irq_reset(uncore, DE_IRQ_REGS);
@@ -681,7 +681,7 @@ static void ilk_irq_reset(struct drm_i915_private *dev_priv)
 
 static void valleyview_irq_reset(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, 0);
        intel_uncore_posting_read(&dev_priv->uncore, VLV_MASTER_IER);
@@ -693,7 +693,7 @@ static void valleyview_irq_reset(struct drm_i915_private *dev_priv)
 
 static void gen8_irq_reset(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_uncore *uncore = &dev_priv->uncore;
 
        gen8_master_intr_disable(intel_uncore_regs(uncore));
@@ -705,7 +705,7 @@ static void gen8_irq_reset(struct drm_i915_private *dev_priv)
 
 static void gen11_irq_reset(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_gt *gt = to_gt(dev_priv);
        struct intel_uncore *uncore = gt->uncore;
 
@@ -720,7 +720,7 @@ static void gen11_irq_reset(struct drm_i915_private *dev_priv)
 
 static void dg1_irq_reset(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_uncore *uncore = &dev_priv->uncore;
        struct intel_gt *gt;
        unsigned int i;
@@ -740,7 +740,7 @@ static void dg1_irq_reset(struct drm_i915_private *dev_priv)
 
 static void cherryview_irq_reset(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_uncore *uncore = &dev_priv->uncore;
 
        intel_uncore_write(uncore, GEN8_MASTER_IRQ, 0);
@@ -755,7 +755,7 @@ static void cherryview_irq_reset(struct drm_i915_private *dev_priv)
 
 static void ilk_irq_postinstall(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        gen5_gt_irq_postinstall(to_gt(dev_priv));
 
@@ -764,7 +764,7 @@ static void ilk_irq_postinstall(struct drm_i915_private *dev_priv)
 
 static void valleyview_irq_postinstall(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        gen5_gt_irq_postinstall(to_gt(dev_priv));
 
@@ -776,7 +776,7 @@ static void valleyview_irq_postinstall(struct drm_i915_private *dev_priv)
 
 static void gen8_irq_postinstall(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        gen8_gt_irq_postinstall(to_gt(dev_priv));
        gen8_de_irq_postinstall(display);
@@ -786,7 +786,7 @@ static void gen8_irq_postinstall(struct drm_i915_private *dev_priv)
 
 static void gen11_irq_postinstall(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_gt *gt = to_gt(dev_priv);
        struct intel_uncore *uncore = gt->uncore;
        u32 gu_misc_masked = GEN11_GU_MISC_GSE;
@@ -802,7 +802,7 @@ static void gen11_irq_postinstall(struct drm_i915_private *dev_priv)
 
 static void dg1_irq_postinstall(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_uncore *uncore = &dev_priv->uncore;
        u32 gu_misc_masked = GEN11_GU_MISC_GSE;
        struct intel_gt *gt;
@@ -821,7 +821,7 @@ static void dg1_irq_postinstall(struct drm_i915_private *dev_priv)
 
 static void cherryview_irq_postinstall(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
 
        gen8_gt_irq_postinstall(to_gt(dev_priv));
 
@@ -894,7 +894,7 @@ static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
 
 static void i915_irq_reset(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_uncore *uncore = &dev_priv->uncore;
 
        i9xx_display_irq_reset(display);
@@ -906,7 +906,7 @@ static void i915_irq_reset(struct drm_i915_private *dev_priv)
 
 static void i915_irq_postinstall(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_uncore *uncore = &dev_priv->uncore;
        u32 enable_mask;
 
@@ -941,7 +941,7 @@ static void i915_irq_postinstall(struct drm_i915_private *dev_priv)
 static irqreturn_t i915_irq_handler(int irq, void *arg)
 {
        struct drm_i915_private *dev_priv = arg;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        irqreturn_t ret = IRQ_NONE;
 
        if (!intel_irqs_enabled(dev_priv))
@@ -996,7 +996,7 @@ static irqreturn_t i915_irq_handler(int irq, void *arg)
 
 static void i965_irq_reset(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_uncore *uncore = &dev_priv->uncore;
 
        i9xx_display_irq_reset(display);
@@ -1027,7 +1027,7 @@ static u32 i965_error_mask(struct drm_i915_private *i915)
 
 static void i965_irq_postinstall(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        struct intel_uncore *uncore = &dev_priv->uncore;
        u32 enable_mask;
 
@@ -1059,7 +1059,7 @@ static void i965_irq_postinstall(struct drm_i915_private *dev_priv)
 static irqreturn_t i965_irq_handler(int irq, void *arg)
 {
        struct drm_i915_private *dev_priv = arg;
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        irqreturn_t ret = IRQ_NONE;
 
        if (!intel_irqs_enabled(dev_priv))
@@ -1256,7 +1256,7 @@ int intel_irq_install(struct drm_i915_private *dev_priv)
  */
 void intel_irq_uninstall(struct drm_i915_private *dev_priv)
 {
-       struct intel_display *display = &dev_priv->display;
+       struct intel_display *display = dev_priv->display;
        int irq = to_pci_dev(dev_priv->drm.dev)->irq;
 
        if (drm_WARN_ON(&dev_priv->drm, !dev_priv->irqs_enabled))
index 892b1e19d94615ee0ee0c9c034285d3d675c45c1..5bbf891ccc32c5f0bd4cb2f027554dad8842593b 100644 (file)
@@ -201,7 +201,7 @@ static void ilk_init_clock_gating(struct drm_i915_private *i915)
 
 static void cpt_init_clock_gating(struct drm_i915_private *i915)
 {
-       struct intel_display *display = &i915->display;
+       struct intel_display *display = i915->display;
        enum pipe pipe;
        u32 val;
 
index a77e5b26542ce6f7f57febea13f357187a31a33b..0ea12c68cedb20974f07dc3891852e847a215d8f 100644 (file)
@@ -180,6 +180,9 @@ struct drm_i915_private *mock_gem_device(void)
        /* Set up device info and initial runtime info. */
        intel_device_info_driver_create(i915, pdev->device, &mock_info);
 
+       /* TODO: Allocate display dynamically. */
+       i915->display = &i915->__display;
+
        intel_display_device_probe(pdev);
 
        dev_pm_domain_set(&pdev->dev, &pm_domain);
index b8030492fbd10426ed4b15e5f431c36365e09c8a..699f401eff1016425c71fa85061524c3216b86c3 100644 (file)
@@ -38,7 +38,7 @@
 
 static bool has_display(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        return HAS_DISPLAY(display);
 }
@@ -86,7 +86,7 @@ static void unset_display_features(struct xe_device *xe)
 static void display_destroy(struct drm_device *dev, void *dummy)
 {
        struct xe_device *xe = to_xe_device(dev);
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        destroy_workqueue(display->hotplug.dp_wq);
 }
@@ -104,7 +104,10 @@ static void display_destroy(struct drm_device *dev, void *dummy)
  */
 int xe_display_create(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       /* TODO: Allocate display dynamically. */
+       struct intel_display *display = &xe->__display;
+
+       xe->display = &xe->__display;
 
        spin_lock_init(&display->fb_tracking.lock);
 
@@ -116,7 +119,7 @@ int xe_display_create(struct xe_device *xe)
 static void xe_display_fini_early(void *arg)
 {
        struct xe_device *xe = arg;
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -129,7 +132,7 @@ static void xe_display_fini_early(void *arg)
 
 int xe_display_init_early(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
        int err;
 
        if (!xe->info.probe_display)
@@ -173,7 +176,7 @@ err_opregion:
 static void xe_display_fini(void *arg)
 {
        struct xe_device *xe = arg;
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        intel_hpd_poll_fini(display);
        intel_hdcp_component_fini(display);
@@ -183,7 +186,7 @@ static void xe_display_fini(void *arg)
 
 int xe_display_init(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
        int err;
 
        if (!xe->info.probe_display)
@@ -198,7 +201,7 @@ int xe_display_init(struct xe_device *xe)
 
 void xe_display_register(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -209,7 +212,7 @@ void xe_display_register(struct xe_device *xe)
 
 void xe_display_unregister(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -222,7 +225,7 @@ void xe_display_unregister(struct xe_device *xe)
 
 void xe_display_irq_handler(struct xe_device *xe, u32 master_ctl)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -233,7 +236,7 @@ void xe_display_irq_handler(struct xe_device *xe, u32 master_ctl)
 
 void xe_display_irq_enable(struct xe_device *xe, u32 gu_misc_iir)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -244,7 +247,7 @@ void xe_display_irq_enable(struct xe_device *xe, u32 gu_misc_iir)
 
 void xe_display_irq_reset(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -254,7 +257,7 @@ void xe_display_irq_reset(struct xe_device *xe)
 
 void xe_display_irq_postinstall(struct xe_device *xe, struct xe_gt *gt)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -295,7 +298,7 @@ static void xe_display_flush_cleanup_work(struct xe_device *xe)
 
 static void xe_display_enable_d3cold(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -318,7 +321,7 @@ static void xe_display_enable_d3cold(struct xe_device *xe)
 
 static void xe_display_disable_d3cold(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -342,7 +345,7 @@ static void xe_display_disable_d3cold(struct xe_device *xe)
 
 void xe_display_pm_suspend(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
        bool s2idle = suspend_to_idle();
 
        if (!xe->info.probe_display)
@@ -377,7 +380,7 @@ void xe_display_pm_suspend(struct xe_device *xe)
 
 void xe_display_pm_shutdown(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -408,7 +411,7 @@ void xe_display_pm_shutdown(struct xe_device *xe)
 
 void xe_display_pm_runtime_suspend(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -423,7 +426,7 @@ void xe_display_pm_runtime_suspend(struct xe_device *xe)
 
 void xe_display_pm_suspend_late(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
        bool s2idle = suspend_to_idle();
 
        if (!xe->info.probe_display)
@@ -434,7 +437,7 @@ void xe_display_pm_suspend_late(struct xe_device *xe)
 
 void xe_display_pm_runtime_suspend_late(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -452,7 +455,7 @@ void xe_display_pm_runtime_suspend_late(struct xe_device *xe)
 
 void xe_display_pm_shutdown_late(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -467,7 +470,7 @@ void xe_display_pm_shutdown_late(struct xe_device *xe)
 
 void xe_display_pm_resume_early(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -477,7 +480,7 @@ void xe_display_pm_resume_early(struct xe_device *xe)
 
 void xe_display_pm_resume(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
@@ -512,7 +515,7 @@ void xe_display_pm_resume(struct xe_device *xe)
 
 void xe_display_pm_runtime_resume(struct xe_device *xe)
 {
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
 
        if (!xe->info.probe_display)
                return;
index e95ca979e1fe3cfc37641bc05c00a288460cf7f2..c2b4be72f7a006865157b78b59ad2b6be1befb4c 100644 (file)
@@ -389,7 +389,7 @@ static bool reuse_vma(struct intel_plane_state *new_plane_state,
 {
        struct intel_framebuffer *fb = to_intel_framebuffer(new_plane_state->hw.fb);
        struct xe_device *xe = to_xe_device(fb->base.dev);
-       struct intel_display *display = &xe->display;
+       struct intel_display *display = xe->display;
        struct i915_vma *vma;
 
        if (old_plane_state->hw.fb == new_plane_state->hw.fb &&
index 06c65dace0264ad9de2d1be96192afffd14b34eb..634ac4aa7674b0a95021bdbffdcf98cc20c8aafe 100644 (file)
@@ -587,7 +587,8 @@ struct xe_device {
         * drm_i915_private during build. After cleanup these should go away,
         * migrating to the right sub-structs
         */
-       struct intel_display display;
+       struct intel_display *display;
+       struct intel_display __display; /* Transitional. Do not use directly. */
 
        struct dram_info {
                bool wm_lv_0_adjust_needed;