ugly ugly ugly ugly ugly ugly ugly ugly ugly BLECH! diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 049fc3f..f079d12 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c @@ -1095,6 +1095,8 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) resource_size_t base, size; int ret = 0, mmio_bar = IS_I9XX(dev) ? 0 : 1; + extern int i915_modeset; + /* i915 has 4 more counters */ dev->counters += 4; dev->types[6] = _DRM_STAT_IRQ; @@ -1149,6 +1151,16 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) dev->gem_flags = GFP_USER | GFP_DMA32; #endif + /* if modesetting is on by default, and we're on an unsupported + * card, disable modesetting... + */ + if (i915_modeset == -1 && IS_I8XX(dev)) { + dev->driver->driver_features &= ~DRIVER_MODESET; + /* kill minor allocated in drm_get_dev */ + if (dev->control) + drm_put_minor(&dev->control); + } + /* enable GEM by default, except on I8xx */ dev_priv->has_gem = !IS_I8XX(dev) ? 1 : 0; diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 2c01676..b0cac2a 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -36,7 +36,7 @@ #include "drm_pciids.h" #include -static unsigned int i915_modeset = -1; +int i915_modeset = -1; module_param_named(modeset, i915_modeset, int, 0400); unsigned int i915_fbpercrtc = 0;