diff options
| author | Dave Airlie <airlied@redhat.com> | 2015-03-04 18:41:09 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2015-03-04 18:41:09 -0500 |
| commit | 7547af91868f0ea940abc25460accc4025c5ce0a (patch) | |
| tree | f7214956b6d744bd5625ec218acae44de2fbd5a5 | |
| parent | 87dc8b6cbdd9c9f39aaf215767f151b62791df5c (diff) | |
| parent | d4495cbaa5869d2ce8f4b1c9331d3a19b24eb98b (diff) | |
Merge tag 'drm-intel-next-2015-02-14' of git://anongit.freedesktop.org/drm-intel into drm-next
- use the atomic helpers for plane_upate/disable hooks (Matt Roper)
- refactor the initial plane config code (Damien)
- ppgtt prep patches for dynamic pagetable alloc (Ben Widawsky, reworked and
rebased by a lot of other people)
- framebuffer modifier support from Tvrtko Ursulin, drm core code from Rob Clark
- piles of workaround patches for skl from Damien and Nick Hoath
- vGPU support for xengt on the client side (Yu Zhang)
- and the usual smaller things all over
* tag 'drm-intel-next-2015-02-14' of git://anongit.freedesktop.org/drm-intel: (88 commits)
drm/i915: Update DRIVER_DATE to 20150214
drm/i915: Remove references to previously removed UMS config option
drm/i915/skl: Use a LRI for WaDisableDgMirrorFixInHalfSliceChicken5
drm/i915/skl: Fix always true comparison in a revision id check
drm/i915/skl: Implement WaEnableLbsSlaRetryTimerDecrement
drm/i915/skl: Implement WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken
drm/i915: Add process identifier to requests
drm/i915/skl: Implement WaBarrierPerformanceFixDisable
drm/i915/skl: Implement WaCcsTlbPrefetchDisable:skl
drm/i915/skl: Implement WaDisableChickenBitTSGBarrierAckForFFSliceCS
drm/i915/skl: Implement WaDisableHDCInvalidation
drm/i915/skl: Implement WaDisableLSQCROPERFforOCL
drm/i915/skl: Implement WaDisablePartialResolveInVc
drm/i915/skl: Introduce a SKL specific init_workarounds()
drm/i915/skl: Document that we implement WaRsClearFWBitsAtReset
drm/i915/skl: Implement WaSetGAPSunitClckGateDisable
drm/i915/skl: Make the init clock gating function skylake specific
drm/i915/skl: Provide a gen9 specific init_render_ring()
drm/i915/skl: Document the WM read latency W/A with its name
drm/i915/skl: Also detect eDRAM on SKL
...
40 files changed, 1348 insertions, 456 deletions
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index 03f1985a4bd1..249f0c9ede40 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl | |||
| @@ -3979,6 +3979,11 @@ int num_ioctls;</synopsis> | |||
| 3979 | !Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_disable_interrupts | 3979 | !Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_disable_interrupts |
| 3980 | !Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_enable_interrupts | 3980 | !Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_enable_interrupts |
| 3981 | </sect2> | 3981 | </sect2> |
| 3982 | <sect2> | ||
| 3983 | <title>Intel GVT-g Guest Support(vGPU)</title> | ||
| 3984 | !Pdrivers/gpu/drm/i915/i915_vgpu.c Intel GVT-g guest support | ||
| 3985 | !Idrivers/gpu/drm/i915/i915_vgpu.c | ||
| 3986 | </sect2> | ||
| 3982 | </sect1> | 3987 | </sect1> |
| 3983 | <sect1> | 3988 | <sect1> |
| 3984 | <title>Display Hardware Handling</title> | 3989 | <title>Display Hardware Handling</title> |
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 4dacee645153..29dbde5ecef7 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
| @@ -3272,6 +3272,12 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r) | |||
| 3272 | DRM_DEBUG_KMS("bad pitch %u for plane %d\n", r->pitches[i], i); | 3272 | DRM_DEBUG_KMS("bad pitch %u for plane %d\n", r->pitches[i], i); |
| 3273 | return -EINVAL; | 3273 | return -EINVAL; |
| 3274 | } | 3274 | } |
| 3275 | |||
| 3276 | if (r->modifier[i] && !(r->flags & DRM_MODE_FB_MODIFIERS)) { | ||
| 3277 | DRM_DEBUG_KMS("bad fb modifier %llu for plane %d\n", | ||
| 3278 | r->modifier[i], i); | ||
| 3279 | return -EINVAL; | ||
| 3280 | } | ||
| 3275 | } | 3281 | } |
| 3276 | 3282 | ||
| 3277 | return 0; | 3283 | return 0; |
| @@ -3285,7 +3291,7 @@ static struct drm_framebuffer *add_framebuffer_internal(struct drm_device *dev, | |||
| 3285 | struct drm_framebuffer *fb; | 3291 | struct drm_framebuffer *fb; |
| 3286 | int ret; | 3292 | int ret; |
| 3287 | 3293 | ||
| 3288 | if (r->flags & ~DRM_MODE_FB_INTERLACED) { | 3294 | if (r->flags & ~(DRM_MODE_FB_INTERLACED | DRM_MODE_FB_MODIFIERS)) { |
| 3289 | DRM_DEBUG_KMS("bad framebuffer flags 0x%08x\n", r->flags); | 3295 | DRM_DEBUG_KMS("bad framebuffer flags 0x%08x\n", r->flags); |
| 3290 | return ERR_PTR(-EINVAL); | 3296 | return ERR_PTR(-EINVAL); |
| 3291 | } | 3297 | } |
| @@ -3301,6 +3307,12 @@ static struct drm_framebuffer *add_framebuffer_internal(struct drm_device *dev, | |||
| 3301 | return ERR_PTR(-EINVAL); | 3307 | return ERR_PTR(-EINVAL); |
| 3302 | } | 3308 | } |
| 3303 | 3309 | ||
| 3310 | if (r->flags & DRM_MODE_FB_MODIFIERS && | ||
| 3311 | !dev->mode_config.allow_fb_modifiers) { | ||
| 3312 | DRM_DEBUG_KMS("driver does not support fb modifiers\n"); | ||
| 3313 | return ERR_PTR(-EINVAL); | ||
| 3314 | } | ||
| 3315 | |||
| 3304 | ret = framebuffer_check(r); | 3316 | ret = framebuffer_check(r); |
| 3305 | if (ret) | 3317 | if (ret) |
| 3306 | return ERR_PTR(ret); | 3318 | return ERR_PTR(ret); |
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index b1979e7bdc88..3053aab968f9 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c | |||
| @@ -837,6 +837,7 @@ void drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, | |||
| 837 | for (i = 0; i < 4; i++) { | 837 | for (i = 0; i < 4; i++) { |
| 838 | fb->pitches[i] = mode_cmd->pitches[i]; | 838 | fb->pitches[i] = mode_cmd->pitches[i]; |
| 839 | fb->offsets[i] = mode_cmd->offsets[i]; | 839 | fb->offsets[i] = mode_cmd->offsets[i]; |
| 840 | fb->modifier[i] = mode_cmd->modifier[i]; | ||
| 840 | } | 841 | } |
| 841 | drm_fb_get_bpp_depth(mode_cmd->pixel_format, &fb->depth, | 842 | drm_fb_get_bpp_depth(mode_cmd->pixel_format, &fb->depth, |
| 842 | &fb->bits_per_pixel); | 843 | &fb->bits_per_pixel); |
diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index 3785d66721f2..a6d773a61c2d 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c | |||
| @@ -321,6 +321,9 @@ static int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_ | |||
| 321 | else | 321 | else |
| 322 | req->value = 64; | 322 | req->value = 64; |
| 323 | break; | 323 | break; |
| 324 | case DRM_CAP_ADDFB2_MODIFIERS: | ||
| 325 | req->value = dev->mode_config.allow_fb_modifiers; | ||
| 326 | break; | ||
| 324 | default: | 327 | default: |
| 325 | return -EINVAL; | 328 | return -EINVAL; |
| 326 | } | 329 | } |
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index f01922591679..f025e7fae253 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile | |||
| @@ -83,6 +83,9 @@ i915-y += dvo_ch7017.o \ | |||
| 83 | intel_sdvo.o \ | 83 | intel_sdvo.o \ |
| 84 | intel_tv.o | 84 | intel_tv.o |
| 85 | 85 | ||
| 86 | # virtual gpu code | ||
| 87 | i915-y += i915_vgpu.o | ||
| 88 | |||
| 86 | # legacy horrors | 89 | # legacy horrors |
| 87 | i915-y += i915_dma.o \ | 90 | i915-y += i915_dma.o \ |
| 88 | i915_ums.o | 91 | i915_ums.o |
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 96e811fe24ca..164fa8286fb9 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
| @@ -1778,11 +1778,12 @@ static int i915_gem_framebuffer_info(struct seq_file *m, void *data) | |||
| 1778 | ifbdev = dev_priv->fbdev; | 1778 | ifbdev = dev_priv->fbdev; |
| 1779 | fb = to_intel_framebuffer(ifbdev->helper.fb); | 1779 | fb = to_intel_framebuffer(ifbdev->helper.fb); |
| 1780 | 1780 | ||
| 1781 | seq_printf(m, "fbcon size: %d x %d, depth %d, %d bpp, refcount %d, obj ", | 1781 | seq_printf(m, "fbcon size: %d x %d, depth %d, %d bpp, modifier 0x%llx, refcount %d, obj ", |
| 1782 | fb->base.width, | 1782 | fb->base.width, |
| 1783 | fb->base.height, | 1783 | fb->base.height, |
| 1784 | fb->base.depth, | 1784 | fb->base.depth, |
| 1785 | fb->base.bits_per_pixel, | 1785 | fb->base.bits_per_pixel, |
| 1786 | fb->base.modifier[0], | ||
| 1786 | atomic_read(&fb-&g | ||
