Skip to content

Commit

Permalink
drm/i915: extract l3_parity substruct from dev_priv
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Daniel Vetter committed Nov 11, 2012
1 parent 231f42a commit a4da4fa
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 13 deletions.
10 changes: 7 additions & 3 deletions drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;

/**
Expand Down Expand Up @@ -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;

Expand All @@ -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;

Expand Down
8 changes: 4 additions & 4 deletions drivers/gpu/drm/i915/i915_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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 */
Expand Down
6 changes: 3 additions & 3 deletions drivers/gpu/drm/i915/i915_irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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 */
Expand Down
6 changes: 3 additions & 3 deletions drivers/gpu/drm/i915/i915_sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);

Expand Down

0 comments on commit a4da4fa

Please sign in to comment.