drm: inline drm_agp_destroy
Wrapping a kfree is pointless. v2: Add a comment to the kerneldoc for drm_agp_init to explain where the kfree happens as requested by David. Note that for modeset drivers agp cleanup is fairly complicated anyway: The drm_agp_clear is a noop and drivers must call drm_agp_release on their own. Which they all seem to do properly. Cc: David Herrmann <dh.herrmann@gmail.com> Reviewed-by: David Herrmann <dh.herrmann@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
committed by
Dave Airlie
parent
2c695fa044
commit
d6e4b28b60
@@ -393,6 +393,9 @@ int drm_agp_free_ioctl(struct drm_device *dev, void *data,
|
|||||||
* Gets the drm_agp_t structure which is made available by the agpgart module
|
* Gets the drm_agp_t structure which is made available by the agpgart module
|
||||||
* via the inter_module_* functions. Creates and initializes a drm_agp_head
|
* via the inter_module_* functions. Creates and initializes a drm_agp_head
|
||||||
* structure.
|
* structure.
|
||||||
|
*
|
||||||
|
* Note that final cleanup of the kmalloced structure is directly done in
|
||||||
|
* drm_pci_agp_destroy.
|
||||||
*/
|
*/
|
||||||
struct drm_agp_head *drm_agp_init(struct drm_device *dev)
|
struct drm_agp_head *drm_agp_init(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
@@ -459,21 +462,6 @@ void drm_agp_clear(struct drm_device *dev)
|
|||||||
dev->agp->enabled = 0;
|
dev->agp->enabled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* drm_agp_destroy - Destroy AGP head
|
|
||||||
* @dev: DRM device
|
|
||||||
*
|
|
||||||
* Destroy resources that were previously allocated via drm_agp_initp. Caller
|
|
||||||
* must ensure to clean up all AGP resources before calling this. See
|
|
||||||
* drm_agp_clear().
|
|
||||||
*
|
|
||||||
* Call this to destroy AGP heads allocated via drm_agp_init().
|
|
||||||
*/
|
|
||||||
void drm_agp_destroy(struct drm_agp_head *agp)
|
|
||||||
{
|
|
||||||
kfree(agp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Binds a collection of pages into AGP memory at the given offset, returning
|
* Binds a collection of pages into AGP memory at the given offset, returning
|
||||||
* the AGP memory structure containing them.
|
* the AGP memory structure containing them.
|
||||||
|
|||||||
@@ -281,7 +281,7 @@ static void drm_pci_agp_destroy(struct drm_device *dev)
|
|||||||
if (dev->agp) {
|
if (dev->agp) {
|
||||||
arch_phys_wc_del(dev->agp->agp_mtrr);
|
arch_phys_wc_del(dev->agp->agp_mtrr);
|
||||||
drm_agp_clear(dev);
|
drm_agp_clear(dev);
|
||||||
drm_agp_destroy(dev->agp);
|
kfree(dev->agp);
|
||||||
dev->agp = NULL;
|
dev->agp = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ DRM_AGP_MEM *drm_agp_bind_pages(struct drm_device *dev,
|
|||||||
uint32_t type);
|
uint32_t type);
|
||||||
|
|
||||||
struct drm_agp_head *drm_agp_init(struct drm_device *dev);
|
struct drm_agp_head *drm_agp_init(struct drm_device *dev);
|
||||||
void drm_agp_destroy(struct drm_agp_head *agp);
|
|
||||||
void drm_agp_clear(struct drm_device *dev);
|
void drm_agp_clear(struct drm_device *dev);
|
||||||
int drm_agp_acquire(struct drm_device *dev);
|
int drm_agp_acquire(struct drm_device *dev);
|
||||||
int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
|
int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
|
||||||
@@ -76,10 +75,6 @@ static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void drm_agp_destroy(struct drm_agp_head *agp)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void drm_agp_clear(struct drm_device *dev)
|
static inline void drm_agp_clear(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user