From 17f0882d5080a2436e4351c2bf497b8e00bc8e74 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 31 Oct 2007 11:33:34 +1100 Subject: drm: add chipset flushing via agp support --- linux-core/drmP.h | 1 + linux-core/drm_agpsupport.c | 8 ++++++++ shared-core/i915_dma.c | 1 + 3 files changed, 10 insertions(+) diff --git a/linux-core/drmP.h b/linux-core/drmP.h index ac3ca4d2..c014eddf 100644 --- a/linux-core/drmP.h +++ b/linux-core/drmP.h @@ -1133,6 +1133,7 @@ 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 struct drm_ttm_backend *drm_agp_init_ttm(struct drm_device *dev); +extern void drm_agp_chipset_flush(struct drm_device *dev); /* Stub support (drm_stub.h) */ extern int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent, struct drm_driver *driver); diff --git a/linux-core/drm_agpsupport.c b/linux-core/drm_agpsupport.c index b68efc64..8c7f570e 100644 --- a/linux-core/drm_agpsupport.c +++ b/linux-core/drm_agpsupport.c @@ -650,4 +650,12 @@ struct drm_ttm_backend *drm_agp_init_ttm(struct drm_device *dev) } EXPORT_SYMBOL(drm_agp_init_ttm); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25) +void drm_agp_flush_chipset(struct drm_device *dev) +{ + agp_flush_chipset(dev->agp->bridge); +} +EXPORT_SYMBOL(drm_agp_flush_chipset); +#endif + #endif /* __OS_HAS_AGP */ diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c index 5d0c0001..18c3f0f0 100644 --- a/shared-core/i915_dma.c +++ b/shared-core/i915_dma.c @@ -1043,6 +1043,7 @@ static int i915_execbuffer(struct drm_device *dev, void *data, /* make sure all previous memory operations have passed */ DRM_MEMORYBARRIER(); + drm_agp_chipset_flush(dev); /* submit buffer */ batch->start = buffers[num_buffers-1]->offset; -- cgit v1.2.3