gma500: Kill spare kref
We are using the underlying kref in the GEM object so we don't need our own Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
99d8f0349b
commit
f0017b1049
@ -231,7 +231,6 @@ static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
|
|||||||
struct psb_fbdev *fbdev = info->par;
|
struct psb_fbdev *fbdev = info->par;
|
||||||
struct psb_framebuffer *psbfb = &fbdev->pfb;
|
struct psb_framebuffer *psbfb = &fbdev->pfb;
|
||||||
char *fb_screen_base = NULL;
|
char *fb_screen_base = NULL;
|
||||||
struct drm_device *dev = psbfb->base.dev;
|
|
||||||
|
|
||||||
if (vma->vm_pgoff != 0)
|
if (vma->vm_pgoff != 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -303,8 +303,6 @@ struct gtt_range *psb_gtt_alloc_range(struct drm_device *dev, int len,
|
|||||||
gt->in_gart = backed;
|
gt->in_gart = backed;
|
||||||
/* Ensure this is set for non GEM objects */
|
/* Ensure this is set for non GEM objects */
|
||||||
gt->gem.dev = dev;
|
gt->gem.dev = dev;
|
||||||
kref_init(>->kref);
|
|
||||||
|
|
||||||
ret = allocate_resource(dev_priv->gtt_mem, >->resource,
|
ret = allocate_resource(dev_priv->gtt_mem, >->resource,
|
||||||
len, start, end, PAGE_SIZE, NULL, NULL);
|
len, start, end, PAGE_SIZE, NULL, NULL);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
@ -316,18 +314,15 @@ struct gtt_range *psb_gtt_alloc_range(struct drm_device *dev, int len,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* psb_gtt_destroy - final free up of a gtt
|
* psb_gtt_free_range - release GTT address space
|
||||||
* @kref: the kref of the gtt
|
* @dev: our DRM device
|
||||||
|
* @gt: a mapping created with psb_gtt_alloc_range
|
||||||
*
|
*
|
||||||
* Called from the kernel kref put when the final reference to our
|
* Release a resource that was allocated with psb_gtt_alloc_range. If the object
|
||||||
* GTT object is dropped. At that point we can free up the resources.
|
* has been pinned by mmap users we clean this up here currently.
|
||||||
*
|
|
||||||
* For now we handle mmap clean up here to work around limits in GEM
|
|
||||||
*/
|
*/
|
||||||
static void psb_gtt_destroy(struct kref *kref)
|
void psb_gtt_free_range(struct drm_device *dev, struct gtt_range *gt)
|
||||||
{
|
{
|
||||||
struct gtt_range *gt = container_of(kref, struct gtt_range, kref);
|
|
||||||
|
|
||||||
/* Undo the mmap pin if we are destroying the object */
|
/* Undo the mmap pin if we are destroying the object */
|
||||||
if (gt->mmapping) {
|
if (gt->mmapping) {
|
||||||
psb_gtt_unpin(gt);
|
psb_gtt_unpin(gt);
|
||||||
@ -338,30 +333,6 @@ static void psb_gtt_destroy(struct kref *kref)
|
|||||||
kfree(gt);
|
kfree(gt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* psb_gtt_kref_put - drop reference to a GTT object
|
|
||||||
* @gt: the GT being dropped
|
|
||||||
*
|
|
||||||
* Drop a reference to a psb gtt
|
|
||||||
*/
|
|
||||||
void psb_gtt_kref_put(struct gtt_range *gt)
|
|
||||||
{
|
|
||||||
kref_put(>->kref, psb_gtt_destroy);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* psb_gtt_free_range - release GTT address space
|
|
||||||
* @dev: our DRM device
|
|
||||||
* @gt: a mapping created with psb_gtt_alloc_range
|
|
||||||
*
|
|
||||||
* Release a resource that was allocated with psb_gtt_alloc_range
|
|
||||||
*/
|
|
||||||
void psb_gtt_free_range(struct drm_device *dev, struct gtt_range *gt)
|
|
||||||
{
|
|
||||||
psb_gtt_kref_put(gt);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
struct psb_gtt *psb_gtt_alloc(struct drm_device *dev)
|
struct psb_gtt *psb_gtt_alloc(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
struct psb_gtt *tmp = kzalloc(sizeof(*tmp), GFP_KERNEL);
|
struct psb_gtt *tmp = kzalloc(sizeof(*tmp), GFP_KERNEL);
|
||||||
|
@ -44,7 +44,6 @@ extern void psb_gtt_takedown(struct drm_device *dev);
|
|||||||
struct gtt_range {
|
struct gtt_range {
|
||||||
struct resource resource; /* Resource for our allocation */
|
struct resource resource; /* Resource for our allocation */
|
||||||
u32 offset; /* GTT offset of our object */
|
u32 offset; /* GTT offset of our object */
|
||||||
struct kref kref; /* Can probably go FIXME - GEM kref will do */
|
|
||||||
struct drm_gem_object gem; /* GEM high level stuff */
|
struct drm_gem_object gem; /* GEM high level stuff */
|
||||||
int in_gart; /* Currently in the GART (ref ct) */
|
int in_gart; /* Currently in the GART (ref ct) */
|
||||||
bool stolen; /* Backed from stolen RAM */
|
bool stolen; /* Backed from stolen RAM */
|
||||||
|
Loading…
Reference in New Issue
Block a user