diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_dma.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 0d215e38606..afa8a12cd00 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
@@ -717,7 +717,7 @@ static int i915_getparam(struct drm_device *dev, void *data, | |||
717 | value = dev->pci_device; | 717 | value = dev->pci_device; |
718 | break; | 718 | break; |
719 | case I915_PARAM_HAS_GEM: | 719 | case I915_PARAM_HAS_GEM: |
720 | value = 1; | 720 | value = dev_priv->has_gem; |
721 | break; | 721 | break; |
722 | default: | 722 | default: |
723 | DRM_ERROR("Unknown parameter %d\n", param->param); | 723 | DRM_ERROR("Unknown parameter %d\n", param->param); |
@@ -830,6 +830,14 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) | |||
830 | 830 | ||
831 | dev_priv->regs = ioremap(base, size); | 831 | dev_priv->regs = ioremap(base, size); |
832 | 832 | ||
833 | #ifdef CONFIG_HIGHMEM64G | ||
834 | /* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */ | ||
835 | dev_priv->has_gem = 0; | ||
836 | #else | ||
837 | /* enable GEM by default */ | ||
838 | dev_priv->has_gem = 1; | ||
839 | #endif | ||
840 | |||
833 | i915_gem_load(dev); | 841 | i915_gem_load(dev); |
834 | 842 | ||
835 | /* Init HWS */ | 843 | /* Init HWS */ |
@@ -847,15 +855,23 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) | |||
847 | * and the registers being closely associated. | 855 | * and the registers being closely associated. |
848 | * | 856 | * |
849 | * According to chipset errata, on the 965GM, MSI interrupts may | 857 | * According to chipset errata, on the 965GM, MSI interrupts may |
850 | * be lost or delayed | 858 | * be lost or delayed, but we use them anyways to avoid |
859 | * stuck interrupts on some machines. | ||
851 | */ | 860 | */ |
852 | if (!IS_I945G(dev) && !IS_I945GM(dev) && !IS_I965GM(dev)) | 861 | if (!IS_I945G(dev) && !IS_I945GM(dev)) |
853 | pci_enable_msi(dev->pdev); | 862 | pci_enable_msi(dev->pdev); |
854 | 863 | ||
855 | intel_opregion_init(dev); | 864 | intel_opregion_init(dev); |
856 | 865 | ||
857 | spin_lock_init(&dev_priv->user_irq_lock); | 866 | spin_lock_init(&dev_priv->user_irq_lock); |
858 | 867 | ||
868 | ret = drm_vblank_init(dev, I915_NUM_PIPE); | ||
869 | |||
870 | if (ret) { | ||
871 | (void) i915_driver_unload(dev); | ||
872 | return ret; | ||
873 | } | ||
874 | |||
859 | return ret; | 875 | return ret; |
860 | } | 876 | } |
861 | 877 | ||