On Mon, Aug 23, 2010 at 4:53 PM, Daniel Vetter <daniel.vetter at ffwll.ch>
wrote:
> There's no point in jumping through two indirections. So kill one
> and call the kernels agp functions directly.
>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
> ?drivers/gpu/drm/drm_agpsupport.c | ? 40 +++----------------------------------
> ?drivers/gpu/drm/drm_memory.c ? ? | ? 12 ++--------
> ?include/drm/drmP.h ? ? ? ? ? ? ? | ? ?5 ----
> ?3 files changed, 7 insertions(+), 50 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_agpsupport.c
> b/drivers/gpu/drm/drm_agpsupport.c
> index ba38e01..252fdb9 100644
> --- a/drivers/gpu/drm/drm_agpsupport.c
> +++ b/drivers/gpu/drm/drm_agpsupport.c
> @@ -193,7 +193,7 @@ int drm_agp_enable_ioctl(struct drm_device *dev, void
> *data,
> ?* \return zero on success or a negative number on failure.
> ?*
> ?* Verifies the AGP device is present and has been acquired, allocates the
> - * memory via alloc_agp() and creates a drm_agp_mem entry for it.
> + * memory via agp_allocate_memory() and creates a drm_agp_mem entry for it.
> ?*/
> ?int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request)
> ?{
> @@ -211,7 +211,7 @@ int drm_agp_alloc(struct drm_device *dev, struct
> drm_agp_buffer *request)
>
> ? ? ? ?pages = (request->size + PAGE_SIZE - 1) / PAGE_SIZE;
> ? ? ? ?type = (u32) request->type;
> - ? ? ? if (!(memory = drm_alloc_agp(dev, pages, type))) {
> + ? ? ? if (!(memory = agp_allocate_memory(dev->agp->bridge, pages, type))) {
> ? ? ? ? ? ? ? ?kfree(entry);
> ? ? ? ? ? ? ? ?return -ENOMEM;
> ? ? ? ?}
> @@ -423,38 +423,6 @@ struct drm_agp_head *drm_agp_init(struct drm_device *dev)
> ? ? ? ?return head;
> ?}
>
> -/** Calls agp_allocate_memory() */
> -DRM_AGP_MEM *drm_agp_allocate_memory(struct agp_bridge_data * bridge,
> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?size_t pages, u32 type)
> -{
> - ? ? ? return agp_allocate_memory(bridge, pages, type);
> -}
> -
> -/** Calls agp_free_memory() */
> -int drm_agp_free_memory(DRM_AGP_MEM * handle)
> -{
> - ? ? ? if (!handle)
> - ? ? ? ? ? ? ? return 0;
> - ? ? ? agp_free_memory(handle);
> - ? ? ? return 1;
> -}
> -
> -/** Calls agp_bind_memory() */
> -int drm_agp_bind_memory(DRM_AGP_MEM * handle, off_t start)
> -{
> - ? ? ? if (!handle)
> - ? ? ? ? ? ? ? return -EINVAL;
> - ? ? ? return agp_bind_memory(handle, start);
> -}
> -
> -/** Calls agp_unbind_memory() */
> -int drm_agp_unbind_memory(DRM_AGP_MEM * handle)
> -{
> - ? ? ? if (!handle)
> - ? ? ? ? ? ? ? return -EINVAL;
> - ? ? ? return agp_unbind_memory(handle);
> -}
> -
> ?/**
> ?* Binds a collection of pages into AGP memory at the given offset, returning
> ?* the AGP memory structure containing them.
> @@ -474,7 +442,7 @@ drm_agp_bind_pages(struct drm_device *dev,
>
> ? ? ? ?DRM_DEBUG("\n");
>
> - ? ? ? mem = drm_agp_allocate_memory(dev->agp->bridge, num_pages,
> + ? ? ? mem = agp_allocate_memory(dev->agp->bridge, num_pages,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?type);
> ? ? ? ?if (mem == NULL) {
> ? ? ? ? ? ? ? ?DRM_ERROR("Failed to allocate memory for %ld pages\n",
> @@ -487,7 +455,7 @@ drm_agp_bind_pages(struct drm_device *dev,
> ? ? ? ?mem->page_count = num_pages;
>
> ? ? ? ?mem->is_flushed = true;
> - ? ? ? ret = drm_agp_bind_memory(mem, gtt_offset / PAGE_SIZE);
> + ? ? ? ret = agp_bind_memory(mem, gtt_offset / PAGE_SIZE);
> ? ? ? ?if (ret != 0) {
> ? ? ? ? ? ? ? ?DRM_ERROR("Failed to bind AGP memory: %d\n", ret);
> ? ? ? ? ? ? ? ?agp_free_memory(mem);
> diff --git a/drivers/gpu/drm/drm_memory.c b/drivers/gpu/drm/drm_memory.c
> index 70ca27e..c9b8050 100644
> --- a/drivers/gpu/drm/drm_memory.c
> +++ b/drivers/gpu/drm/drm_memory.c
> @@ -99,29 +99,23 @@ static void *agp_remap(unsigned long offset, unsigned
> long size,
> ? ? ? ?return addr;
> ?}
>
> -/** Wrapper around agp_allocate_memory() */
> -DRM_AGP_MEM *drm_alloc_agp(struct drm_device * dev, int pages, u32 type)
> -{
> - ? ? ? return drm_agp_allocate_memory(dev->agp->bridge, pages, type);
> -}
> -
> ?/** Wrapper around agp_free_memory() */
> ?void drm_free_agp(DRM_AGP_MEM * handle, int pages)
> ?{
> - ? ? ? drm_agp_free_memory(handle);
> + ? ? ? agp_free_memory(handle);
> ?}
> ?EXPORT_SYMBOL(drm_free_agp);
>
> ?/** Wrapper around agp_bind_memory() */
> ?int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start)
> ?{
> - ? ? ? return drm_agp_bind_memory(handle, start);
> + ? ? ? return agp_bind_memory(handle, start);
> ?}
>
> ?/** Wrapper around agp_unbind_memory() */
> ?int drm_unbind_agp(DRM_AGP_MEM * handle)
> ?{
> - ? ? ? return drm_agp_unbind_memory(handle);
> + ? ? ? return agp_unbind_memory(handle);
> ?}
> ?EXPORT_SYMBOL(drm_unbind_agp);
Any reason to keep these last three wrappers around?
Kristian