diff options
Diffstat (limited to 'linux-core/drm_agpsupport.c')
| -rw-r--r-- | linux-core/drm_agpsupport.c | 16 | 
1 files changed, 14 insertions, 2 deletions
| diff --git a/linux-core/drm_agpsupport.c b/linux-core/drm_agpsupport.c index b68efc64..7c50f411 100644 --- a/linux-core/drm_agpsupport.c +++ b/linux-core/drm_agpsupport.c @@ -541,11 +541,15 @@ static int drm_agp_bind_ttm(struct drm_ttm_backend *backend,  		container_of(backend, struct drm_agp_ttm_backend, backend);  	DRM_AGP_MEM *mem = agp_be->mem;  	int ret; +	int snooped = (bo_mem->flags & DRM_BO_FLAG_CACHED) && !(bo_mem->flags & DRM_BO_FLAG_CACHED_MAPPED);  	DRM_DEBUG("drm_agp_bind_ttm\n");  	mem->is_flushed = TRUE; -	mem->type = (bo_mem->flags & DRM_BO_FLAG_CACHED) ? AGP_USER_CACHED_MEMORY : -		AGP_USER_MEMORY; +	mem->type = AGP_USER_MEMORY; +	/* CACHED MAPPED implies not snooped memory */ +	if (snooped) +		mem->type = AGP_USER_CACHED_MEMORY; +  	ret = drm_agp_bind_memory(mem, bo_mem->mm_node->start);  	if (ret) {  		DRM_ERROR("AGP Bind memory failed\n"); @@ -650,4 +654,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 */ | 
