diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 29 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 2 |
3 files changed, 17 insertions, 16 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index dbe0f88ad3d0..2ecfcc2ef408 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -673,7 +673,7 @@ int i915_resume(struct drm_device *dev) | |||
673 | return 0; | 673 | return 0; |
674 | } | 674 | } |
675 | 675 | ||
676 | static int i8xx_do_reset(struct drm_device *dev, u8 flags) | 676 | static int i8xx_do_reset(struct drm_device *dev) |
677 | { | 677 | { |
678 | struct drm_i915_private *dev_priv = dev->dev_private; | 678 | struct drm_i915_private *dev_priv = dev->dev_private; |
679 | 679 | ||
@@ -710,7 +710,7 @@ static int i965_reset_complete(struct drm_device *dev) | |||
710 | return gdrst & 0x1; | 710 | return gdrst & 0x1; |
711 | } | 711 | } |
712 | 712 | ||
713 | static int i965_do_reset(struct drm_device *dev, u8 flags) | 713 | static int i965_do_reset(struct drm_device *dev) |
714 | { | 714 | { |
715 | u8 gdrst; | 715 | u8 gdrst; |
716 | 716 | ||
@@ -720,20 +720,22 @@ static int i965_do_reset(struct drm_device *dev, u8 flags) | |||
720 | * triggers the reset; when done, the hardware will clear it. | 720 | * triggers the reset; when done, the hardware will clear it. |
721 | */ | 721 | */ |
722 | pci_read_config_byte(dev->pdev, I965_GDRST, &gdrst); | 722 | pci_read_config_byte(dev->pdev, I965_GDRST, &gdrst); |
723 | pci_write_config_byte(dev->pdev, I965_GDRST, gdrst | flags | 0x1); | 723 | pci_write_config_byte(dev->pdev, I965_GDRST, |
724 | gdrst | GRDOM_RENDER | 0x1); | ||
724 | 725 | ||
725 | return wait_for(i965_reset_complete(dev), 500); | 726 | return wait_for(i965_reset_complete(dev), 500); |
726 | } | 727 | } |
727 | 728 | ||
728 | static int ironlake_do_reset(struct drm_device *dev, u8 flags) | 729 | static int ironlake_do_reset(struct drm_device *dev) |
729 | { | 730 | { |
730 | struct drm_i915_private *dev_priv = dev->dev_private; | 731 | struct drm_i915_private *dev_priv = dev->dev_private; |
731 | u32 gdrst = I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR); | 732 | u32 gdrst = I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR); |
732 | I915_WRITE(MCHBAR_MIRROR_BASE + ILK_GDSR, gdrst | flags | 0x1); | 733 | I915_WRITE(MCHBAR_MIRROR_BASE + ILK_GDSR, |
734 | gdrst | GRDOM_RENDER | 0x1); | ||
733 | return wait_for(I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) & 0x1, 500); | 735 | return wait_for(I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) & 0x1, 500); |
734 | } | 736 | } |
735 | 737 | ||
736 | static int gen6_do_reset(struct drm_device *dev, u8 flags) | 738 | static int gen6_do_reset(struct drm_device *dev) |
737 | { | 739 | { |
738 | struct drm_i915_private *dev_priv = dev->dev_private; | 740 | struct drm_i915_private *dev_priv = dev->dev_private; |
739 | int ret; | 741 | int ret; |
@@ -768,7 +770,7 @@ static int gen6_do_reset(struct drm_device *dev, u8 flags) | |||
768 | return ret; | 770 | return ret; |
769 | } | 771 | } |
770 | 772 | ||
771 | static int intel_gpu_reset(struct drm_device *dev, u8 flags) | 773 | static int intel_gpu_reset(struct drm_device *dev) |
772 | { | 774 | { |
773 | struct drm_i915_private *dev_priv = dev->dev_private; | 775 | struct drm_i915_private *dev_priv = dev->dev_private; |
774 | int ret = -ENODEV; | 776 | int ret = -ENODEV; |
@@ -776,16 +778,16 @@ static int intel_gpu_reset(struct drm_device *dev, u8 flags) | |||
776 | switch (INTEL_INFO(dev)->gen) { | 778 | switch (INTEL_INFO(dev)->gen) { |
777 | case 7: | 779 | case 7: |
778 | case 6: | 780 | case 6: |
779 | ret = gen6_do_reset(dev, flags); | 781 | ret = gen6_do_reset(dev); |
780 | break; | 782 | break; |
781 | case 5: | 783 | case 5: |
782 | ret = ironlake_do_reset(dev, flags); | 784 | ret = ironlake_do_reset(dev); |
783 | break; | 785 | break; |
784 | case 4: | 786 | case 4: |
785 | ret = i965_do_reset(dev, flags); | 787 | ret = i965_do_reset(dev); |
786 | break; | 788 | break; |
787 | case 2: | 789 | case 2: |
788 | ret = i8xx_do_reset(dev, flags); | 790 | ret = i8xx_do_reset(dev); |
789 | break; | 791 | break; |
790 | } | 792 | } |
791 | 793 | ||
@@ -806,7 +808,6 @@ static int intel_gpu_reset(struct drm_device *dev, u8 flags) | |||
806 | /** | 808 | /** |
807 | * i915_reset - reset chip after a hang | 809 | * i915_reset - reset chip after a hang |
808 | * @dev: drm device to reset | 810 | * @dev: drm device to reset |
809 | * @flags: reset domains | ||
810 | * | 811 | * |
811 | * Reset the chip. Useful if a hang is detected. Returns zero on successful | 812 | * Reset the chip. Useful if a hang is detected. Returns zero on successful |
812 | * reset or otherwise an error code. | 813 | * reset or otherwise an error code. |
@@ -819,7 +820,7 @@ static int intel_gpu_reset(struct drm_device *dev, u8 flags) | |||
819 | * - re-init interrupt state | 820 | * - re-init interrupt state |
820 | * - re-init display | 821 | * - re-init display |
821 | */ | 822 | */ |
822 | int i915_reset(struct drm_device *dev, u8 flags) | 823 | int i915_reset(struct drm_device *dev) |
823 | { | 824 | { |
824 | drm_i915_private_t *dev_priv = dev->dev_private; | 825 | drm_i915_private_t *dev_priv = dev->dev_private; |
825 | int ret; | 826 | int ret; |
@@ -838,7 +839,7 @@ int i915_reset(struct drm_device *dev, u8 flags) | |||
838 | if (get_seconds() - dev_priv->last_gpu_reset < 5) | 839 | if (get_seconds() - dev_priv->last_gpu_reset < 5) |
839 | DRM_ERROR("GPU hanging too fast, declaring wedged!\n"); | 840 | DRM_ERROR("GPU hanging too fast, declaring wedged!\n"); |
840 | else | 841 | else |
841 | ret = intel_gpu_reset(dev, flags); | 842 | ret = intel_gpu_reset(dev); |
842 | 843 | ||
843 | dev_priv->last_gpu_reset = get_seconds(); | 844 | dev_priv->last_gpu_reset = get_seconds(); |
844 | if (ret) { | 845 | if (ret) { |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index c070a2b3f049..e03a4f80c5c9 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -1153,7 +1153,7 @@ extern long i915_compat_ioctl(struct file *filp, unsigned int cmd, | |||
1153 | extern int i915_emit_box(struct drm_device *dev, | 1153 | extern int i915_emit_box(struct drm_device *dev, |
1154 | struct drm_clip_rect *box, | 1154 | struct drm_clip_rect *box, |
1155 | int DR1, int DR4); | 1155 | int DR1, int DR4); |
1156 | extern int i915_reset(struct drm_device *dev, u8 flags); | 1156 | extern int i915_reset(struct drm_device *dev); |
1157 | extern unsigned long i915_chipset_val(struct drm_i915_private *dev_priv); | 1157 | extern unsigned long i915_chipset_val(struct drm_i915_private *dev_priv); |
1158 | extern unsigned long i915_mch_val(struct drm_i915_private *dev_priv); | 1158 | extern unsigned long i915_mch_val(struct drm_i915_private *dev_priv); |
1159 | extern unsigned long i915_gfx_val(struct drm_i915_private *dev_priv); | 1159 | extern unsigned long i915_gfx_val(struct drm_i915_private *dev_priv); |
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 8334550fccf4..722cdfc59a9a 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
@@ -758,7 +758,7 @@ static void i915_error_work_func(struct work_struct *work) | |||
758 | if (atomic_read(&dev_priv->mm.wedged)) { | 758 | if (atomic_read(&dev_priv->mm.wedged)) { |
759 | DRM_DEBUG_DRIVER("resetting chip\n"); | 759 | DRM_DEBUG_DRIVER("resetting chip\n"); |
760 | kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, reset_event); | 760 | kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, reset_event); |
761 | if (!i915_reset(dev, GRDOM_RENDER)) { | 761 | if (!i915_reset(dev)) { |
762 | atomic_set(&dev_priv->mm.wedged, 0); | 762 | atomic_set(&dev_priv->mm.wedged, 0); |
763 | kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, reset_done_event); | 763 | kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, reset_done_event); |
764 | } | 764 | } |