diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-06-20 16:54:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-06-20 16:54:22 -0400 |
commit | 8f4ce072bf4b65f47dada7e74e3d95cc900866b2 (patch) | |
tree | 659b85807ce31797d71f066c96bc9679aacdb832 | |
parent | bb16140a2cab5415ffcbb23594da9e495df1bab7 (diff) | |
parent | fcee3c73a2c51982057b93fe599b7c68e16d0636 (diff) |
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Pull drm fixes from Dave Airlie:
"A smattering of fixes,
mgag200:
don't accept modes that aren't aligned properly as hw can't do it
i915:
two regression fixes
radeon:
one query to allow userspace fixes
one oops fixer for older hw with new options enabled"
* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
drm/radeon: don't probe MST on hw we don't support it on
drm/radeon: Add RADEON_INFO_VA_UNMAP_WORKING query
drm/mgag200: Reject non-character-cell-aligned mode widths
Revert "drm/i915: Don't skip request retirement if the active list is empty"
drm/i915: Always reset vma->ggtt_view.pages cache on unbinding
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/mgag200/mgag200_mode.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_dp_mst.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_kms.c | 3 | ||||
-rw-r--r-- | include/uapi/drm/radeon_drm.h | 1 |
5 files changed, 18 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 851b585987f9..2d0995e7afc3 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -2656,6 +2656,9 @@ void i915_gem_reset(struct drm_device *dev) | |||
2656 | void | 2656 | void |
2657 | i915_gem_retire_requests_ring(struct intel_engine_cs *ring) | 2657 | i915_gem_retire_requests_ring(struct intel_engine_cs *ring) |
2658 | { | 2658 | { |
2659 | if (list_empty(&ring->request_list)) | ||
2660 | return; | ||
2661 | |||
2659 | WARN_ON(i915_verify_lists(ring->dev)); | 2662 | WARN_ON(i915_verify_lists(ring->dev)); |
2660 | 2663 | ||
2661 | /* Retire requests first as we use it above for the early return. | 2664 | /* Retire requests first as we use it above for the early return. |
@@ -3000,8 +3003,8 @@ int i915_vma_unbind(struct i915_vma *vma) | |||
3000 | } else if (vma->ggtt_view.pages) { | 3003 | } else if (vma->ggtt_view.pages) { |
3001 | sg_free_table(vma->ggtt_view.pages); | 3004 | sg_free_table(vma->ggtt_view.pages); |
3002 | kfree(vma->ggtt_view.pages); | 3005 | kfree(vma->ggtt_view.pages); |
3003 | vma->ggtt_view.pages = NULL; | ||
3004 | } | 3006 | } |
3007 | vma->ggtt_view.pages = NULL; | ||
3005 | } | 3008 | } |
3006 | 3009 | ||
3007 | drm_mm_remove_node(&vma->node); | 3010 | drm_mm_remove_node(&vma->node); |
diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c index 6e84df9369a6..ad4b9010dfb0 100644 --- a/drivers/gpu/drm/mgag200/mgag200_mode.c +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c | |||
@@ -1526,6 +1526,11 @@ static int mga_vga_mode_valid(struct drm_connector *connector, | |||
1526 | return MODE_BANDWIDTH; | 1526 | return MODE_BANDWIDTH; |
1527 | } | 1527 | } |
1528 | 1528 | ||
1529 | if ((mode->hdisplay % 8) != 0 || (mode->hsync_start % 8) != 0 || | ||
1530 | (mode->hsync_end % 8) != 0 || (mode->htotal % 8) != 0) { | ||
1531 | return MODE_H_ILLEGAL; | ||
1532 | } | ||
1533 | |||
1529 | if (mode->crtc_hdisplay > 2048 || mode->crtc_hsync_start > 4096 || | 1534 | if (mode->crtc_hdisplay > 2048 || mode->crtc_hsync_start > 4096 || |
1530 | mode->crtc_hsync_end > 4096 || mode->crtc_htotal > 4096 || | 1535 | mode->crtc_hsync_end > 4096 || mode->crtc_htotal > 4096 || |
1531 | mode->crtc_vdisplay > 2048 || mode->crtc_vsync_start > 4096 || | 1536 | mode->crtc_vdisplay > 2048 || mode->crtc_vsync_start > 4096 || |
diff --git a/drivers/gpu/drm/radeon/radeon_dp_mst.c b/drivers/gpu/drm/radeon/radeon_dp_mst.c index 2b98ed3e684d..257b10be5cda 100644 --- a/drivers/gpu/drm/radeon/radeon_dp_mst.c +++ b/drivers/gpu/drm/radeon/radeon_dp_mst.c | |||
@@ -663,12 +663,17 @@ int | |||
663 | radeon_dp_mst_probe(struct radeon_connector *radeon_connector) | 663 | radeon_dp_mst_probe(struct radeon_connector *radeon_connector) |
664 | { | 664 | { |
665 | struct radeon_connector_atom_dig *dig_connector = radeon_connector->con_priv; | 665 | struct radeon_connector_atom_dig *dig_connector = radeon_connector->con_priv; |
666 | struct drm_device *dev = radeon_connector->base.dev; | ||
667 | struct radeon_device *rdev = dev->dev_private; | ||
666 | int ret; | 668 | int ret; |
667 | u8 msg[1]; | 669 | u8 msg[1]; |
668 | 670 | ||
669 | if (!radeon_mst) | 671 | if (!radeon_mst) |
670 | return 0; | 672 | return 0; |
671 | 673 | ||
674 | if (!ASIC_IS_DCE5(rdev)) | ||
675 | return 0; | ||
676 | |||
672 | if (dig_connector->dpcd[DP_DPCD_REV] < 0x12) | 677 | if (dig_connector->dpcd[DP_DPCD_REV] < 0x12) |
673 | return 0; | 678 | return 0; |
674 | 679 | ||
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c index 7b2a7335cc5d..b0acf50d9558 100644 --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c | |||
@@ -576,6 +576,9 @@ static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
576 | if (radeon_get_allowed_info_register(rdev, *value, value)) | 576 | if (radeon_get_allowed_info_register(rdev, *value, value)) |
577 | return -EINVAL; | 577 | return -EINVAL; |
578 | break; | 578 | break; |
579 | case RADEON_INFO_VA_UNMAP_WORKING: | ||
580 | *value = true; | ||
581 | break; | ||
579 | default: | 582 | default: |
580 | DRM_DEBUG_KMS("Invalid request %d\n", info->request); | 583 | DRM_DEBUG_KMS("Invalid request %d\n", info->request); |
581 | return -EINVAL; | 584 | return -EINVAL; |
diff --git a/include/uapi/drm/radeon_drm.h b/include/uapi/drm/radeon_drm.h index 871e73f99a4d..94d44ab2fda1 100644 --- a/include/uapi/drm/radeon_drm.h +++ b/include/uapi/drm/radeon_drm.h | |||
@@ -1038,6 +1038,7 @@ struct drm_radeon_cs { | |||
1038 | #define RADEON_INFO_CURRENT_GPU_SCLK 0x22 | 1038 | #define RADEON_INFO_CURRENT_GPU_SCLK 0x22 |
1039 | #define RADEON_INFO_CURRENT_GPU_MCLK 0x23 | 1039 | #define RADEON_INFO_CURRENT_GPU_MCLK 0x23 |
1040 | #define RADEON_INFO_READ_REG 0x24 | 1040 | #define RADEON_INFO_READ_REG 0x24 |
1041 | #define RADEON_INFO_VA_UNMAP_WORKING 0x25 | ||
1041 | 1042 | ||
1042 | struct drm_radeon_info { | 1043 | struct drm_radeon_info { |
1043 | uint32_t request; | 1044 | uint32_t request; |