drm/i915: extract l3_parity substruct from dev_priv
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 2 Nov 2012 18:55:07 +0000 (19:55 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 11 Nov 2012 22:51:40 +0000 (23:51 +0100)
Pretty astonishing how far apart these two members landed ... Especially since
I've already removed almost 200 lines in between.

Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_sysfs.c

index ad3c4c134e2d88810aebbee9426d1654c4673cbb..135b9db552792352dd3af0c428b9b17f6fde2813 100644 (file)
@@ -599,6 +599,11 @@ struct i915_dri1_state {
        uint32_t counter;
 };
 
+struct intel_l3_parity {
+       u32 *remap_info;
+       struct work_struct error_work;
+};
+
 typedef struct drm_i915_private {
        struct drm_device *dev;
 
@@ -760,8 +765,6 @@ typedef struct drm_i915_private {
                /** PPGTT used for aliasing the PPGTT with the GTT */
                struct i915_hw_ppgtt *aliasing_ppgtt;
 
-               u32 *l3_remap_info;
-
                struct shrinker inactive_shrinker;
 
                /**
@@ -865,6 +868,8 @@ typedef struct drm_i915_private {
 
        bool mchbar_need_disable;
 
+       struct intel_l3_parity l3_parity;
+
        /* gen6+ rps state */
        struct intel_gen6_power_mgmt rps;
 
@@ -887,7 +892,6 @@ typedef struct drm_i915_private {
        struct drm_property *broadcast_rgb_property;
        struct drm_property *force_audio_property;
 
-       struct work_struct parity_error_work;
        bool hw_contexts_disabled;
        uint32_t hw_context_size;
 
index 7dd103447b426785a94475755f61042da33d6faa..d8eaebfea93e4128b4354d488900eb5fa4e960d4 100644 (file)
@@ -3831,7 +3831,7 @@ void i915_gem_l3_remap(struct drm_device *dev)
        if (!IS_IVYBRIDGE(dev))
                return;
 
-       if (!dev_priv->mm.l3_remap_info)
+       if (!dev_priv->l3_parity.remap_info)
                return;
 
        misccpctl = I915_READ(GEN7_MISCCPCTL);
@@ -3840,12 +3840,12 @@ void i915_gem_l3_remap(struct drm_device *dev)
 
        for (i = 0; i < GEN7_L3LOG_SIZE; i += 4) {
                u32 remap = I915_READ(GEN7_L3LOG_BASE + i);
-               if (remap && remap != dev_priv->mm.l3_remap_info[i/4])
+               if (remap && remap != dev_priv->l3_parity.remap_info[i/4])
                        DRM_DEBUG("0x%x was already programmed to %x\n",
                                  GEN7_L3LOG_BASE + i, remap);
-               if (remap && !dev_priv->mm.l3_remap_info[i/4])
+               if (remap && !dev_priv->l3_parity.remap_info[i/4])
                        DRM_DEBUG_DRIVER("Clearing remapped register\n");
-               I915_WRITE(GEN7_L3LOG_BASE + i, dev_priv->mm.l3_remap_info[i/4]);
+               I915_WRITE(GEN7_L3LOG_BASE + i, dev_priv->l3_parity.remap_info[i/4]);
        }
 
        /* Make sure all the writes land before disabling dop clock gating */
index b92e6bfbb97c556efac1d1f9c2ce4079341d3279..2c40127573e2ab6634b65a5b4d9cffeb6751cec8 100644 (file)
@@ -409,7 +409,7 @@ static void gen6_pm_rps_work(struct work_struct *work)
 static void ivybridge_parity_work(struct work_struct *work)
 {
        drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t,
-                                                   parity_error_work);
+                                                   l3_parity.error_work);
        u32 error_status, row, bank, subbank;
        char *parity_event[5];
        uint32_t misccpctl;
@@ -473,7 +473,7 @@ static void ivybridge_handle_parity_error(struct drm_device *dev)
        I915_WRITE(GTIMR, dev_priv->gt_irq_mask);
        spin_unlock_irqrestore(&dev_priv->irq_lock, flags);
 
-       queue_work(dev_priv->wq, &dev_priv->parity_error_work);
+       queue_work(dev_priv->wq, &dev_priv->l3_parity.error_work);
 }
 
 static void snb_gt_irq_handler(struct drm_device *dev,
@@ -2681,7 +2681,7 @@ void intel_irq_init(struct drm_device *dev)
        INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
        INIT_WORK(&dev_priv->error_work, i915_error_work_func);
        INIT_WORK(&dev_priv->rps.work, gen6_pm_rps_work);
-       INIT_WORK(&dev_priv->parity_error_work, ivybridge_parity_work);
+       INIT_WORK(&dev_priv->l3_parity.error_work, ivybridge_parity_work);
 
        dev->driver->get_vblank_counter = i915_get_vblank_counter;
        dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */
index 903eebd2117a41437837131adb46811ce858fbdd..9700ae96ec193691dc610d4fbdc38f1507bc9d9e 100644 (file)
@@ -162,7 +162,7 @@ i915_l3_write(struct file *filp, struct kobject *kobj,
        if (ret)
                return ret;
 
-       if (!dev_priv->mm.l3_remap_info) {
+       if (!dev_priv->l3_parity.remap_info) {
                temp = kzalloc(GEN7_L3LOG_SIZE, GFP_KERNEL);
                if (!temp) {
                        mutex_unlock(&drm_dev->struct_mutex);
@@ -182,9 +182,9 @@ i915_l3_write(struct file *filp, struct kobject *kobj,
         * at this point it is left as a TODO.
        */
        if (temp)
-               dev_priv->mm.l3_remap_info = temp;
+               dev_priv->l3_parity.remap_info = temp;
 
-       memcpy(dev_priv->mm.l3_remap_info + (offset/4),
+       memcpy(dev_priv->l3_parity.remap_info + (offset/4),
               buf + (offset/4),
               count);