Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 357879
b: refs/heads/master
c: 42dcedd
h: refs/heads/master
i:
  357877: bdbd16a
  357875: 1b07d0c
  357871: 945455c
v: v3
  • Loading branch information
Chris Wilson authored and Daniel Vetter committed Nov 30, 2012
1 parent b243048 commit e86f49b
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8040513870399f1cb032cb8bc805df5042fedcdf
refs/heads/master: 42dcedd4f2e715dc0313e359c8288e6397843fff
3 changes: 3 additions & 0 deletions trunk/drivers/gpu/drm/i915/i915_dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -1736,6 +1736,9 @@ int i915_driver_unload(struct drm_device *dev)

destroy_workqueue(dev_priv->wq);

if (dev_priv->slab)
kmem_cache_destroy(dev_priv->slab);

pci_dev_put(dev_priv->bridge_dev);
kfree(dev->dev_private);

Expand Down
4 changes: 4 additions & 0 deletions trunk/drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -614,6 +614,7 @@ struct intel_l3_parity {

typedef struct drm_i915_private {
struct drm_device *dev;
struct kmem_cache *slab;

const struct intel_device_info *info;

Expand Down Expand Up @@ -1379,12 +1380,15 @@ int i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data,
int i915_gem_wait_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv);
void i915_gem_load(struct drm_device *dev);
void *i915_gem_object_alloc(struct drm_device *dev);
void i915_gem_object_free(struct drm_i915_gem_object *obj);
int i915_gem_init_object(struct drm_gem_object *obj);
void i915_gem_object_init(struct drm_i915_gem_object *obj,
const struct drm_i915_gem_object_ops *ops);
struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
size_t size);
void i915_gem_free_object(struct drm_gem_object *obj);

int __must_check i915_gem_object_pin(struct drm_i915_gem_object *obj,
uint32_t alignment,
bool map_and_fenceable,
Expand Down
28 changes: 23 additions & 5 deletions trunk/drivers/gpu/drm/i915/i915_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,18 @@ i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data,
return 0;
}

void *i915_gem_object_alloc(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
return kmem_cache_alloc(dev_priv->slab, GFP_KERNEL | __GFP_ZERO);
}

void i915_gem_object_free(struct drm_i915_gem_object *obj)
{
struct drm_i915_private *dev_priv = obj->base.dev->dev_private;
kmem_cache_free(dev_priv->slab, obj);
}

static int
i915_gem_create(struct drm_file *file,
struct drm_device *dev,
Expand All @@ -215,7 +227,7 @@ i915_gem_create(struct drm_file *file,
if (ret) {
drm_gem_object_release(&obj->base);
i915_gem_info_remove_obj(dev->dev_private, obj->base.size);
kfree(obj);
i915_gem_object_free(obj);
return ret;
}

Expand Down Expand Up @@ -3695,12 +3707,12 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
struct address_space *mapping;
u32 mask;

obj = kzalloc(sizeof(*obj), GFP_KERNEL);
obj = i915_gem_object_alloc(dev);
if (obj == NULL)
return NULL;

if (drm_gem_object_init(dev, &obj->base, size) != 0) {
kfree(obj);
i915_gem_object_free(obj);
return NULL;
}

Expand Down Expand Up @@ -3783,7 +3795,7 @@ void i915_gem_free_object(struct drm_gem_object *gem_obj)
i915_gem_info_remove_obj(dev_priv, obj->base.size);

kfree(obj->bit_17);
kfree(obj);
i915_gem_object_free(obj);
}

int
Expand Down Expand Up @@ -4101,8 +4113,14 @@ init_ring_lists(struct intel_ring_buffer *ring)
void
i915_gem_load(struct drm_device *dev)
{
int i;
drm_i915_private_t *dev_priv = dev->dev_private;
int i;

dev_priv->slab =
kmem_cache_create("i915_gem_object",
sizeof(struct drm_i915_gem_object), 0,
SLAB_HWCACHE_ALIGN,
NULL);

INIT_LIST_HEAD(&dev_priv->mm.active_list);
INIT_LIST_HEAD(&dev_priv->mm.inactive_list);
Expand Down
5 changes: 2 additions & 3 deletions trunk/drivers/gpu/drm/i915/i915_gem_dmabuf.c
Original file line number Diff line number Diff line change
Expand Up @@ -276,16 +276,15 @@ struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev,
if (IS_ERR(attach))
return ERR_CAST(attach);


obj = kzalloc(sizeof(*obj), GFP_KERNEL);
obj = i915_gem_object_alloc(dev);
if (obj == NULL) {
ret = -ENOMEM;
goto fail_detach;
}

ret = drm_gem_private_object_init(dev, &obj->base, dma_buf->size);
if (ret) {
kfree(obj);
i915_gem_object_free(obj);
goto fail_detach;
}

Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/gpu/drm/i915/i915_gem_stolen.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ _i915_gem_object_create_stolen(struct drm_device *dev,
{
struct drm_i915_gem_object *obj;

obj = kzalloc(sizeof(*obj), GFP_KERNEL);
obj = i915_gem_object_alloc(dev);
if (obj == NULL)
return NULL;

Expand All @@ -277,7 +277,7 @@ _i915_gem_object_create_stolen(struct drm_device *dev,
return obj;

cleanup:
kfree(obj);
i915_gem_object_free(obj);
return NULL;
}

Expand Down

0 comments on commit e86f49b

Please sign in to comment.