Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6
* 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: drm/i915: GEM on PAE has problems - disable it for now. drm/i915: Don't return busy for buffers left on the flushing list.
This commit is contained in:
@@ -717,7 +717,7 @@ static int i915_getparam(struct drm_device *dev, void *data,
|
|||||||
value = dev->pci_device;
|
value = dev->pci_device;
|
||||||
break;
|
break;
|
||||||
case I915_PARAM_HAS_GEM:
|
case I915_PARAM_HAS_GEM:
|
||||||
value = 1;
|
value = dev_priv->has_gem;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
DRM_ERROR("Unknown parameter %d\n", param->param);
|
DRM_ERROR("Unknown parameter %d\n", param->param);
|
||||||
@@ -830,6 +830,14 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
|
|||||||
|
|
||||||
dev_priv->regs = ioremap(base, size);
|
dev_priv->regs = ioremap(base, size);
|
||||||
|
|
||||||
|
#ifdef CONFIG_HIGHMEM64G
|
||||||
|
/* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */
|
||||||
|
dev_priv->has_gem = 0;
|
||||||
|
#else
|
||||||
|
/* enable GEM by default */
|
||||||
|
dev_priv->has_gem = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
i915_gem_load(dev);
|
i915_gem_load(dev);
|
||||||
|
|
||||||
/* Init HWS */
|
/* Init HWS */
|
||||||
|
@@ -106,6 +106,8 @@ struct intel_opregion {
|
|||||||
typedef struct drm_i915_private {
|
typedef struct drm_i915_private {
|
||||||
struct drm_device *dev;
|
struct drm_device *dev;
|
||||||
|
|
||||||
|
int has_gem;
|
||||||
|
|
||||||
void __iomem *regs;
|
void __iomem *regs;
|
||||||
drm_local_map_t *sarea;
|
drm_local_map_t *sarea;
|
||||||
|
|
||||||
|
@@ -2309,7 +2309,14 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
obj_priv = obj->driver_private;
|
obj_priv = obj->driver_private;
|
||||||
args->busy = obj_priv->active;
|
/* Don't count being on the flushing list against the object being
|
||||||
|
* done. Otherwise, a buffer left on the flushing list but not getting
|
||||||
|
* flushed (because nobody's flushing that domain) won't ever return
|
||||||
|
* unbusy and get reused by libdrm's bo cache. The other expected
|
||||||
|
* consumer of this interface, OpenGL's occlusion queries, also specs
|
||||||
|
* that the objects get unbusy "eventually" without any interference.
|
||||||
|
*/
|
||||||
|
args->busy = obj_priv->active && obj_priv->last_rendering_seqno != 0;
|
||||||
|
|
||||||
drm_gem_object_unreference(obj);
|
drm_gem_object_unreference(obj);
|
||||||
mutex_unlock(&dev->struct_mutex);
|
mutex_unlock(&dev->struct_mutex);
|
||||||
|
Reference in New Issue
Block a user