dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] clean up drm agp
@ 2010-04-14 10:16 Daniel Vetter
  2010-04-14 10:16 ` [PATCH 1/3] drm: kill drm_agp_chipset_flush Daniel Vetter
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Daniel Vetter @ 2010-04-14 10:16 UTC (permalink / raw)
  To: dri-devel; +Cc: intel-gfx, Daniel Vetter

Hi all,

This is a small series to cleanup some cruft I've stumbled upon while crawling
through the intel agp/gtt stuff.

The first patch is part of my intel-gtt crusade. To avoid merge conflicts
it would be great if this could go into drm-core-next before Eric's
rebasing his drm-intel-next on it (due to my make-gem-embeddable work).

Tested on my agp rv570 and my i945 with no ill effects.

Please review and merge.

Thanks, Daniel

Daniel Vetter (3):
  drm: kill drm_agp_chipset_flush
  drm: drop return value of drm_free_agp
  drm: kill agp indirection mess

 drivers/gpu/drm/drm_agpsupport.c |   47 +++----------------------------------
 drivers/gpu/drm/drm_memory.c     |   14 +++--------
 drivers/gpu/drm/i915/i915_gem.c  |    8 +++---
 include/drm/drmP.h               |    8 +-----
 4 files changed, 13 insertions(+), 64 deletions(-)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/3] drm: kill drm_agp_chipset_flush
  2010-04-14 10:16 [PATCH 0/3] clean up drm agp Daniel Vetter
@ 2010-04-14 10:16 ` Daniel Vetter
  2010-04-14 10:16 ` [PATCH 2/3] drm: drop return value of drm_free_agp Daniel Vetter
  2010-04-14 10:16 ` [PATCH 3/3] drm: kill agp indirection mess Daniel Vetter
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Vetter @ 2010-04-14 10:16 UTC (permalink / raw)
  To: dri-devel; +Cc: intel-gfx, Daniel Vetter

This is only used by the gem code in the i915 drm driver. Not point
in abstracting this simple call. Furthermore I want to integrate the
gtt handling from intel-agp much tighter with the gem code in the
drm module, so this indirection through the agp will vanish, anyway.
The reason for this is a rather gross amount of fragile code duplication
between these two parts of the kernel intel graphics driver.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/drm_agpsupport.c |    7 -------
 drivers/gpu/drm/i915/i915_gem.c  |    8 ++++----
 include/drm/drmP.h               |    1 -
 3 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/drm_agpsupport.c b/drivers/gpu/drm/drm_agpsupport.c
index ba38e01..54cfbc4 100644
--- a/drivers/gpu/drm/drm_agpsupport.c
+++ b/drivers/gpu/drm/drm_agpsupport.c
@@ -497,11 +497,4 @@ drm_agp_bind_pages(struct drm_device *dev,
 	return mem;
 }
 EXPORT_SYMBOL(drm_agp_bind_pages);
-
-void drm_agp_chipset_flush(struct drm_device *dev)
-{
-	agp_flush_chipset(dev->agp->bridge);
-}
-EXPORT_SYMBOL(drm_agp_chipset_flush);
-
 #endif /* __OS_HAS_AGP */
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 47c46ed..6e71b5b 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1901,7 +1901,7 @@ i915_gem_flush(struct drm_device *dev,
 				     invalidate_domains, flush_domains);
 
 	if (flush_domains & I915_GEM_DOMAIN_CPU)
-		drm_agp_chipset_flush(dev);
+		agp_flush_chipset(dev->agp->bridge);
 
 	if ((invalidate_domains | flush_domains) & I915_GEM_GPU_DOMAINS) {
 		/*
@@ -2795,7 +2795,7 @@ i915_gem_object_flush_cpu_write_domain(struct drm_gem_object *obj)
 		return;
 
 	i915_gem_clflush_object(obj);
-	drm_agp_chipset_flush(dev);
+	agp_flush_chipset(dev->agp->bridge);
 	old_write_domain = obj->write_domain;
 	obj->write_domain = 0;
 
@@ -4962,7 +4962,7 @@ void i915_gem_detach_phys_object(struct drm_device *dev,
 		kunmap_atomic(dst, KM_USER0);
 	}
 	drm_clflush_pages(obj_priv->pages, page_count);
-	drm_agp_chipset_flush(dev);
+	agp_flush_chipset(dev->agp->bridge);
 
 	i915_gem_object_put_pages(obj);
 out:
@@ -5047,7 +5047,7 @@ i915_gem_phys_pwrite(struct drm_device *dev, struct drm_gem_object *obj,
 	if (ret)
 		return -EFAULT;
 
-	drm_agp_chipset_flush(dev);
+	agp_flush_chipset(dev->agp->bridge);
 	return 0;
 }
 
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index c1b9871..12ffa05 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1341,7 +1341,6 @@ extern DRM_AGP_MEM *drm_agp_allocate_memory(struct agp_bridge_data *bridge, size
 extern int drm_agp_free_memory(DRM_AGP_MEM * handle);
 extern int drm_agp_bind_memory(DRM_AGP_MEM * handle, off_t start);
 extern int drm_agp_unbind_memory(DRM_AGP_MEM * handle);
-extern void drm_agp_chipset_flush(struct drm_device *dev);
 
 				/* Stub support (drm_stub.h) */
 extern int drm_setmaster_ioctl(struct drm_device *dev, void *data,
-- 
1.6.6.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] drm: drop return value of drm_free_agp
  2010-04-14 10:16 [PATCH 0/3] clean up drm agp Daniel Vetter
  2010-04-14 10:16 ` [PATCH 1/3] drm: kill drm_agp_chipset_flush Daniel Vetter
@ 2010-04-14 10:16 ` Daniel Vetter
  2010-04-14 10:16 ` [PATCH 3/3] drm: kill agp indirection mess Daniel Vetter
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Vetter @ 2010-04-14 10:16 UTC (permalink / raw)
  To: dri-devel; +Cc: intel-gfx, Daniel Vetter

No caller (rightly) cares about it, so drop it.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/drm_memory.c |    4 ++--
 include/drm/drmP.h           |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/drm_memory.c b/drivers/gpu/drm/drm_memory.c
index e4865f9..84f0f52 100644
--- a/drivers/gpu/drm/drm_memory.c
+++ b/drivers/gpu/drm/drm_memory.c
@@ -106,9 +106,9 @@ DRM_AGP_MEM *drm_alloc_agp(struct drm_device * dev, int pages, u32 type)
 }
 
 /** Wrapper around agp_free_memory() */
-int drm_free_agp(DRM_AGP_MEM * handle, int pages)
+void drm_free_agp(DRM_AGP_MEM * handle, int pages)
 {
-	return drm_agp_free_memory(handle) ? 0 : -EINVAL;
+	drm_agp_free_memory(handle);
 }
 EXPORT_SYMBOL(drm_free_agp);
 
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 12ffa05..a32ed3c 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1160,8 +1160,8 @@ extern int drm_mem_info(char *buf, char **start, off_t offset,
 			int request, int *eof, void *data);
 extern void *drm_realloc(void *oldpt, size_t oldsize, size_t size, int area);
 
+extern void drm_free_agp(DRM_AGP_MEM * handle, int pages);
 extern DRM_AGP_MEM *drm_alloc_agp(struct drm_device *dev, int pages, u32 type);
-extern int drm_free_agp(DRM_AGP_MEM * handle, int pages);
 extern int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start);
 extern DRM_AGP_MEM *drm_agp_bind_pages(struct drm_device *dev,
 				       struct page **pages,
-- 
1.6.6.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] drm: kill agp indirection mess
  2010-04-14 10:16 [PATCH 0/3] clean up drm agp Daniel Vetter
  2010-04-14 10:16 ` [PATCH 1/3] drm: kill drm_agp_chipset_flush Daniel Vetter
  2010-04-14 10:16 ` [PATCH 2/3] drm: drop return value of drm_free_agp Daniel Vetter
@ 2010-04-14 10:16 ` Daniel Vetter
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Vetter @ 2010-04-14 10:16 UTC (permalink / raw)
  To: dri-devel; +Cc: intel-gfx, Daniel Vetter

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@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 54cfbc4..ce2ff1d 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 84f0f52..08550d6 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);
 
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index a32ed3c..7392d04 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1161,7 +1161,6 @@ extern int drm_mem_info(char *buf, char **start, off_t offset,
 extern void *drm_realloc(void *oldpt, size_t oldsize, size_t size, int area);
 
 extern void drm_free_agp(DRM_AGP_MEM * handle, int pages);
-extern DRM_AGP_MEM *drm_alloc_agp(struct drm_device *dev, int pages, u32 type);
 extern int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start);
 extern DRM_AGP_MEM *drm_agp_bind_pages(struct drm_device *dev,
 				       struct page **pages,
@@ -1337,10 +1336,6 @@ extern int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
 extern int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
 extern int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
 			struct drm_file *file_priv);
-extern DRM_AGP_MEM *drm_agp_allocate_memory(struct agp_bridge_data *bridge, size_t pages, u32 type);
-extern int drm_agp_free_memory(DRM_AGP_MEM * handle);
-extern int drm_agp_bind_memory(DRM_AGP_MEM * handle, off_t start);
-extern int drm_agp_unbind_memory(DRM_AGP_MEM * handle);
 
 				/* Stub support (drm_stub.h) */
 extern int drm_setmaster_ioctl(struct drm_device *dev, void *data,
-- 
1.6.6.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-04-14 10:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-14 10:16 [PATCH 0/3] clean up drm agp Daniel Vetter
2010-04-14 10:16 ` [PATCH 1/3] drm: kill drm_agp_chipset_flush Daniel Vetter
2010-04-14 10:16 ` [PATCH 2/3] drm: drop return value of drm_free_agp Daniel Vetter
2010-04-14 10:16 ` [PATCH 3/3] drm: kill agp indirection mess Daniel Vetter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).