summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-12-18 22:20:48 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-12-18 22:32:08 +0100
commitc8f2b97a7a96f2c7bd09dca1f9f9e64b42947458 (patch)
tree36d647452ee47f02eb4e07b86f405895cb2b6fff
parent15589f166a1b291111092a8d84a6fadc571c9f05 (diff)
drm/i915: A ppgtt story, part 2 (read the first part first!)story-for-ickle
So in our last installement we left with the question where real ppgtt get cleanup. They don't, and we can quite simply prove that by disabling all the ->cleanup functions. Besides cleanup code for the global gtt and the cleanup code for the aliasing ppgtt there's simply no caller of the this vfunc left. I think I know why Ben was struggling with OOM. This thing isn't even a sieve any more, it just drops at all on the floor ... [Again, this patch compiles warning-free. In both patches the #if blocks only ever comment out one single function.]
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c4
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_gtt.c22
3 files changed, 19 insertions, 9 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index ee9502b88df3..28714ffdd213 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -1692,7 +1692,7 @@ out_mtrrfree:
out_gtt:
list_del(&dev_priv->gtt.base.global_link);
drm_mm_takedown(&dev_priv->gtt.base.mm);
- dev_priv->gtt.base.cleanup(&dev_priv->gtt.base);
+ //dev_priv->gtt.base.cleanup(&dev_priv->gtt.base);
out_regs:
intel_uncore_fini(dev);
pci_iounmap(dev->pdev, dev_priv->regs);
@@ -1794,7 +1794,7 @@ int i915_driver_unload(struct drm_device *dev)
destroy_workqueue(dev_priv->wq);
pm_qos_remove_request(&dev_priv->pm_qos);
- dev_priv->gtt.base.cleanup(&dev_priv->gtt.base);
+ //dev_priv->gtt.base.cleanup(&dev_priv->gtt.base);
intel_uncore_fini(dev);
if (dev_priv->regs != NULL)
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 90b0e8fe308e..c6dc9c59ae06 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -621,7 +621,7 @@ struct i915_address_space {
struct sg_table *st,
unsigned int first_entry,
enum i915_cache_level cache_level);
- void (*cleanup)(struct i915_address_space *vm);
+ //void (*cleanup)(struct i915_address_space *vm);
};
/* The Graphics Translation Table is the way in which GEN hardware translates a
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 675b0136dc88..6313ae47cbd3 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -318,6 +318,7 @@ static void gen8_ppgtt_insert_entries(struct i915_address_space *vm,
kunmap_atomic(pt_vaddr);
}
+#if 0
static void gen8_ppgtt_cleanup(struct i915_address_space *vm)
{
struct i915_hw_ppgtt *ppgtt =
@@ -349,6 +350,7 @@ static void gen8_ppgtt_cleanup(struct i915_address_space *vm)
__free_pages(ppgtt->gen8_pt_pages, get_order(ppgtt->num_pt_pages << PAGE_SHIFT));
__free_pages(ppgtt->pd_pages, get_order(ppgtt->num_pd_pages << PAGE_SHIFT));
}
+#endif
/**
* GEN8 legacy ppgtt programming is accomplished through 4 PDP registers with a
@@ -390,7 +392,7 @@ static int gen8_ppgtt_init(struct i915_hw_ppgtt *ppgtt, uint64_t size)
ppgtt->switch_mm = gen8_mm_switch;
ppgtt->base.clear_range = gen8_ppgtt_clear_range;
ppgtt->base.insert_entries = gen8_ppgtt_insert_entries;
- ppgtt->base.cleanup = gen8_ppgtt_cleanup;
+ //ppgtt->base.cleanup = gen8_ppgtt_cleanup;
ppgtt->base.start = 0;
ppgtt->base.total = ppgtt->num_pt_pages * GEN8_PTES_PER_PAGE * PAGE_SIZE;
@@ -456,7 +458,7 @@ static int gen8_ppgtt_init(struct i915_hw_ppgtt *ppgtt, uint64_t size)
return 0;
err_out:
- ppgtt->base.cleanup(&ppgtt->base);
+ //ppgtt->base.cleanup(&ppgtt->base);
return ret;
}
@@ -818,6 +820,7 @@ static void gen6_ppgtt_insert_entries(struct i915_address_space *vm,
kunmap_atomic(pt_vaddr);
}
+#if 0
static void gen6_ppgtt_cleanup(struct i915_address_space *vm)
{
struct i915_hw_ppgtt *ppgtt =
@@ -841,6 +844,7 @@ static void gen6_ppgtt_cleanup(struct i915_address_space *vm)
kfree(ppgtt->pt_pages);
kfree(ppgtt);
}
+#endif
static int gen6_ppgtt_init(struct i915_hw_ppgtt *ppgtt)
{
@@ -891,7 +895,7 @@ alloc:
BUG();
ppgtt->base.clear_range = gen6_ppgtt_clear_range;
ppgtt->base.insert_entries = gen6_ppgtt_insert_entries;
- ppgtt->base.cleanup = gen6_ppgtt_cleanup;
+ //ppgtt->base.cleanup = gen6_ppgtt_cleanup;
ppgtt->base.scratch = dev_priv->gtt.base.scratch;
ppgtt->base.start = 0;
ppgtt->base.total = GEN6_PPGTT_PD_ENTRIES * I915_PPGTT_PT_ENTRIES * PAGE_SIZE;
@@ -1515,6 +1519,7 @@ static int setup_scratch_page(struct drm_device *dev)
return 0;
}
+#if 0
static void teardown_scratch_page(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
@@ -1526,6 +1531,7 @@ static void teardown_scratch_page(struct drm_device *dev)
put_page(page);
__free_page(page);
}
+#endif
static inline unsigned int gen6_get_total_gtt_size(u16 snb_gmch_ctl)
{
@@ -1697,6 +1703,7 @@ static int gen6_gmch_probe(struct drm_device *dev,
return ret;
}
+#if 0
static void gen6_gmch_remove(struct i915_address_space *vm)
{
@@ -1706,6 +1713,7 @@ static void gen6_gmch_remove(struct i915_address_space *vm)
iounmap(gtt->gsm);
teardown_scratch_page(vm->dev);
}
+#endif
static int i915_gmch_probe(struct drm_device *dev,
size_t *gtt_total,
@@ -1730,10 +1738,12 @@ static int i915_gmch_probe(struct drm_device *dev,
return 0;
}
+#if 0
static void i915_gmch_remove(struct i915_address_space *vm)
{
intel_gmch_remove();
}
+#endif
int i915_gem_gtt_init(struct drm_device *dev)
{
@@ -1743,10 +1753,10 @@ int i915_gem_gtt_init(struct drm_device *dev)
if (INTEL_INFO(dev)->gen <= 5) {
gtt->gtt_probe = i915_gmch_probe;
- gtt->base.cleanup = i915_gmch_remove;
+ //gtt->base.cleanup = i915_gmch_remove;
} else if (INTEL_INFO(dev)->gen < 8) {
gtt->gtt_probe = gen6_gmch_probe;
- gtt->base.cleanup = gen6_gmch_remove;
+ //gtt->base.cleanup = gen6_gmch_remove;
if (IS_HASWELL(dev) && dev_priv->ellc_size)
gtt->base.pte_encode = iris_pte_encode;
else if (IS_HASWELL(dev))
@@ -1759,7 +1769,7 @@ int i915_gem_gtt_init(struct drm_device *dev)
gtt->base.pte_encode = snb_pte_encode;
} else {
dev_priv->gtt.gtt_probe = gen8_gmch_probe;
- dev_priv->gtt.base.cleanup = gen6_gmch_remove;
+ //dev_priv->gtt.base.cleanup = gen6_gmch_remove;
}
ret = gtt->gtt_probe(dev, &gtt->base.total, &gtt->stolen_size,