diff options
| -rw-r--r-- | drivers/gpu/drm/i915/gvt/cmd_parser.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/gvt/gtt.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_engine_cs.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lrc.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/tegra/sor.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/vc4/vc4_irq.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/vc4/vc4_v3d.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 41 |
14 files changed, 39 insertions, 43 deletions
diff --git a/drivers/gpu/drm/i915/gvt/cmd_parser.c b/drivers/gpu/drm/i915/gvt/cmd_parser.c index 85d4c57870fb..49af94627c8a 100644 --- a/drivers/gpu/drm/i915/gvt/cmd_parser.c +++ b/drivers/gpu/drm/i915/gvt/cmd_parser.c | |||
| @@ -2777,12 +2777,12 @@ int intel_gvt_scan_and_shadow_wa_ctx(struct intel_shadow_wa_ctx *wa_ctx) | |||
| 2777 | } | 2777 | } |
| 2778 | 2778 | ||
| 2779 | static struct cmd_info *find_cmd_entry_any_ring(struct intel_gvt *gvt, | 2779 | static struct cmd_info *find_cmd_entry_any_ring(struct intel_gvt *gvt, |
| 2780 | unsigned int opcode, int rings) | 2780 | unsigned int opcode, unsigned long rings) |
| 2781 | { | 2781 | { |
| 2782 | struct cmd_info *info = NULL; | 2782 | struct cmd_info *info = NULL; |
| 2783 | unsigned int ring; | 2783 | unsigned int ring; |
| 2784 | 2784 | ||
| 2785 | for_each_set_bit(ring, (unsigned long *)&rings, I915_NUM_ENGINES) { | 2785 | for_each_set_bit(ring, &rings, I915_NUM_ENGINES) { |
| 2786 | info = find_cmd_entry(gvt, opcode, ring); | 2786 | info = find_cmd_entry(gvt, opcode, ring); |
| 2787 | if (info) | 2787 | if (info) |
| 2788 | break; | 2788 | break; |
diff --git a/drivers/gpu/drm/i915/gvt/gtt.c b/drivers/gpu/drm/i915/gvt/gtt.c index 8e331142badb..64d67ff9bf08 100644 --- a/drivers/gpu/drm/i915/gvt/gtt.c +++ b/drivers/gpu/drm/i915/gvt/gtt.c | |||
| @@ -1359,12 +1359,15 @@ static int ppgtt_handle_guest_write_page_table_bytes(void *gp, | |||
| 1359 | return ret; | 1359 | return ret; |
| 1360 | } else { | 1360 | } else { |
| 1361 | if (!test_bit(index, spt->post_shadow_bitmap)) { | 1361 | if (!test_bit(index, spt->post_shadow_bitmap)) { |
| 1362 | int type = spt->shadow_page.type; | ||
| 1363 | |||
| 1362 | ppgtt_get_shadow_entry(spt, &se, index); | 1364 | ppgtt_get_shadow_entry(spt, &se, index); |
| 1363 | ret = ppgtt_handle_guest_entry_removal(gpt, &se, index); | 1365 | ret = ppgtt_handle_guest_entry_removal(gpt, &se, index); |
| 1364 | if (ret) | 1366 | if (ret) |
| 1365 | return ret; | 1367 | return ret; |
| 1368 | ops->set_pfn(&se, vgpu->gtt.scratch_pt[type].page_mfn); | ||
| 1369 | ppgtt_set_shadow_entry(spt, &se, index); | ||
| 1366 | } | 1370 | } |
| 1367 | |||
| 1368 | ppgtt_set_post_shadow(spt, index); | 1371 | ppgtt_set_post_shadow(spt, index); |
| 1369 | } | 1372 | } |
| 1370 | 1373 | ||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 18de6569d04a..5cfba89ed586 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -467,7 +467,7 @@ static void __fence_set_priority(struct dma_fence *fence, int prio) | |||
| 467 | struct drm_i915_gem_request *rq; | 467 | struct drm_i915_gem_request *rq; |
| 468 | struct intel_engine_cs *engine; | 468 | struct intel_engine_cs *engine; |
| 469 | 469 | ||
| 470 | if (!dma_fence_is_i915(fence)) | 470 | if (dma_fence_is_signaled(fence) || !dma_fence_is_i915(fence)) |
| 471 | return; | 471 | return; |
| 472 | 472 | ||
| 473 | rq = to_request(fence); | 473 | rq = to_request(fence); |
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 333f40bc03bb..7923dfd9963c 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h | |||
| @@ -7027,6 +7027,8 @@ enum { | |||
| 7027 | #define GEN9_SLICE_COMMON_ECO_CHICKEN0 _MMIO(0x7308) | 7027 | #define GEN9_SLICE_COMMON_ECO_CHICKEN0 _MMIO(0x7308) |
| 7028 | #define DISABLE_PIXEL_MASK_CAMMING (1<<14) | 7028 | #define DISABLE_PIXEL_MASK_CAMMING (1<<14) |
| 7029 | 7029 | ||
| 7030 | #define GEN9_SLICE_COMMON_ECO_CHICKEN1 _MMIO(0x731c) | ||
| 7031 | |||
| 7030 | #define GEN7_L3SQCREG1 _MMIO(0xB010) | 7032 | #define GEN7_L3SQCREG1 _MMIO(0xB010) |
| 7031 | #define VLV_B0_WA_L3SQCREG1_VALUE 0x00D30000 | 7033 | #define VLV_B0_WA_L3SQCREG1_VALUE 0x00D30000 |
| 7032 | 7034 | ||
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c index ab5bf4e2e28e..6074e04dc99f 100644 --- a/drivers/gpu/drm/i915/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/intel_engine_cs.c | |||
| @@ -1390,6 +1390,11 @@ static int glk_init_workarounds(struct intel_engine_cs *engine) | |||
| 1390 | if (ret) | 1390 | if (ret) |
| 1391 | return ret; | 1391 | return ret; |
| 1392 | 1392 | ||
| 1393 | /* WA #0862: Userspace has to set "Barrier Mode" to avoid hangs. */ | ||
| 1394 | ret = wa_ring_whitelist_reg(engine, GEN9_SLICE_COMMON_ECO_CHICKEN1); | ||
| 1395 | if (ret) | ||
| 1396 | return ret; | ||
| 1397 | |||
| 1393 | /* WaToEnableHwFixForPushConstHWBug:glk */ | 1398 | /* WaToEnableHwFixForPushConstHWBug:glk */ |
| 1394 | WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2, | 1399 | WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2, |
| 1395 | GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION); | 1400 | GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION); |
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index d36e25607435..e71a8cd50498 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c | |||
| @@ -974,6 +974,9 @@ static void execlists_schedule(struct drm_i915_gem_request *request, int prio) | |||
| 974 | 974 | ||
| 975 | GEM_BUG_ON(prio == I915_PRIORITY_INVALID); | 975 | GEM_BUG_ON(prio == I915_PRIORITY_INVALID); |
| 976 | 976 | ||
| 977 | if (i915_gem_request_completed(request)) | ||
| 978 | return; | ||
| 979 | |||
| 977 | if (prio <= READ_ONCE(request->priotree.priority)) | 980 | if (prio <= READ_ONCE(request->priotree.priority)) |
| 978 | return; | 981 | return; |
| 979 | 982 | ||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c index a2978a37b4f3..700fc754f28a 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c | |||
| @@ -174,6 +174,7 @@ gf119_sor = { | |||
| 174 | .links = gf119_sor_dp_links, | 174 | .links = gf119_sor_dp_links, |
| 175 | .power = g94_sor_dp_power, | 175 | .power = g94_sor_dp_power, |
| 176 | .pattern = gf119_sor_dp_pattern, | 176 | .pattern = gf119_sor_dp_pattern, |
| 177 | .drive = gf119_sor_dp_drive, | ||
| 177 | .vcpi = gf119_sor_dp_vcpi, | 178 | .vcpi = gf119_sor_dp_vcpi, |
| 178 | .audio = gf119_sor_dp_audio, | 179 | .audio = gf119_sor_dp_audio, |
| 179 | .audio_sym = gf119_sor_dp_audio_sym, | 180 | .audio_sym = gf119_sor_dp_audio_sym, |
diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c index b0a1dedac802..476079f1255f 100644 --- a/drivers/gpu/drm/tegra/sor.c +++ b/drivers/gpu/drm/tegra/sor.c | |||
| @@ -2656,6 +2656,9 @@ static int tegra_sor_probe(struct platform_device *pdev) | |||
| 2656 | name, err); | 2656 | name, err); |
| 2657 | goto remove; | 2657 | goto remove; |
| 2658 | } | 2658 | } |
| 2659 | } else { | ||
| 2660 | /* fall back to the module clock on SOR0 (eDP/LVDS only) */ | ||
| 2661 | sor->clk_out = sor->clk; | ||
| 2659 | } | 2662 | } |
| 2660 | 2663 | ||
| 2661 | sor->clk_parent = devm_clk_get(&pdev->dev, "parent"); | 2664 | sor->clk_parent = devm_clk_get(&pdev->dev, "parent"); |
diff --git a/drivers/gpu/drm/vc4/vc4_irq.c b/drivers/gpu/drm/vc4/vc4_irq.c index 26eddbb62893..3dd62d75f531 100644 --- a/drivers/gpu/drm/vc4/vc4_irq.c +++ b/drivers/gpu/drm/vc4/vc4_irq.c | |||
| @@ -209,9 +209,6 @@ vc4_irq_postinstall(struct drm_device *dev) | |||
| 209 | { | 209 | { |
| 210 | struct vc4_dev *vc4 = to_vc4_dev(dev); | 210 | struct vc4_dev *vc4 = to_vc4_dev(dev); |
| 211 | 211 | ||
| 212 | /* Undo the effects of a previous vc4_irq_uninstall. */ | ||
| 213 | enable_irq(dev->irq); | ||
| 214 | |||
| 215 | /* Enable both the render done and out of memory interrupts. */ | 212 | /* Enable both the render done and out of memory interrupts. */ |
| 216 | V3D_WRITE(V3D_INTENA, V3D_DRIVER_IRQS); | 213 | V3D_WRITE(V3D_INTENA, V3D_DRIVER_IRQS); |
| 217 | 214 | ||
diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c index 622cd43840b8..493f392b3a0a 100644 --- a/drivers/gpu/drm/vc4/vc4_v3d.c +++ b/drivers/gpu/drm/vc4/vc4_v3d.c | |||
| @@ -327,6 +327,9 @@ static int vc4_v3d_runtime_resume(struct device *dev) | |||
| 327 | return ret; | 327 | return ret; |
| 328 | 328 | ||
| 329 | vc4_v3d_init_hw(vc4->dev); | 329 | vc4_v3d_init_hw(vc4->dev); |
| 330 | |||
| 331 | /* We disabled the IRQ as part of vc4_irq_uninstall in suspend. */ | ||
| 332 | enable_irq(vc4->dev->irq); | ||
| 330 | vc4_irq_postinstall(vc4->dev); | 333 | vc4_irq_postinstall(vc4->dev); |
| 331 | 334 | ||
| 332 | return 0; | 335 | return 0; |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c index 21c62a34e558..87e8af5776a3 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | |||
| @@ -2731,6 +2731,8 @@ static int vmw_cmd_dx_view_define(struct vmw_private *dev_priv, | |||
| 2731 | } | 2731 | } |
| 2732 | 2732 | ||
| 2733 | view_type = vmw_view_cmd_to_type(header->id); | 2733 | view_type = vmw_view_cmd_to_type(header->id); |
| 2734 | if (view_type == vmw_view_max) | ||
| 2735 | return -EINVAL; | ||
| 2734 | cmd = container_of(header, typeof(*cmd), header); | 2736 | cmd = container_of(header, typeof(*cmd), header); |
| 2735 | ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, | 2737 | ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, |
| 2736 | user_surface_converter, | 2738 | user_surface_converter, |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 0545740b3724..641294aef165 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | |||
| @@ -697,7 +697,6 @@ vmw_du_plane_duplicate_state(struct drm_plane *plane) | |||
| 697 | vps->pinned = 0; | 697 | vps->pinned = 0; |
| 698 | 698 | ||
| 699 | /* Mapping is managed by prepare_fb/cleanup_fb */ | 699 | /* Mapping is managed by prepare_fb/cleanup_fb */ |
| 700 | memset(&vps->guest_map, 0, sizeof(vps->guest_map)); | ||
| 701 | memset(&vps->host_map, 0, sizeof(vps->host_map)); | 700 | memset(&vps->host_map, 0, sizeof(vps->host_map)); |
| 702 | vps->cpp = 0; | 701 | vps->cpp = 0; |
| 703 | 702 | ||
| @@ -760,11 +759,6 @@ vmw_du_plane_destroy_state(struct drm_plane *plane, | |||
| 760 | 759 | ||
| 761 | 760 | ||
| 762 | /* Should have been freed by cleanup_fb */ | 761 | /* Should have been freed by cleanup_fb */ |
| 763 | if (vps->guest_map.virtual) { | ||
| 764 | DRM_ERROR("Guest mapping not freed\n"); | ||
| 765 | ttm_bo_kunmap(&vps->guest_map); | ||
| 766 | } | ||
| 767 | |||
| 768 | if (vps->host_map.virtual) { | 762 | if (vps->host_map.virtual) { |
| 769 | DRM_ERROR("Host mapping not freed\n"); | 763 | DRM_ERROR("Host mapping not freed\n"); |
| 770 | ttm_bo_kunmap(&vps->host_map); | 764 | ttm_bo_kunmap(&vps->host_map); |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h index ff9c8389ff21..cd9da2dd79af 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | |||
| @@ -175,7 +175,7 @@ struct vmw_plane_state { | |||
| 175 | int pinned; | 175 | int pinned; |
| 176 | 176 | ||
| 177 | /* For CPU Blit */ | 177 | /* For CPU Blit */ |
| 178 | struct ttm_bo_kmap_obj host_map, guest_map; | 178 | struct ttm_bo_kmap_obj host_map; |
| 179 | unsigned int cpp; | 179 | unsigned int cpp; |
| 180 | }; | 180 | }; |
| 181 | 181 | ||
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c index 90b5437fd787..b68d74888ab1 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | |||
| @@ -114,7 +114,7 @@ struct vmw_screen_target_display_unit { | |||
| 114 | bool defined; | 114 | bool defined; |
| 115 | 115 | ||
| 116 | /* For CPU Blit */ | 116 | /* For CPU Blit */ |
| 117 | struct ttm_bo_kmap_obj host_map, guest_map; | 117 | struct ttm_bo_kmap_obj host_map; |
| 118 | unsigned int cpp; | 118 | unsigned int cpp; |
| 119 | }; | 119 | }; |
| 120 | 120 | ||
| @@ -695,7 +695,8 @@ static void vmw_stdu_dmabuf_cpu_commit(struct vmw_kms_dirty *dirty) | |||
| 695 | s32 src_pitch, dst_pitch; | 695 | s32 src_pitch, dst_pitch; |
| 696 | u8 *src, *dst; | 696 | u8 *src, *dst; |
| 697 | bool not_used; | 697 | bool not_used; |
| 698 | 698 | struct ttm_bo_kmap_obj guest_map; | |
| 699 | int ret; | ||
| 699 | 700 | ||
| 700 | if (!dirty->num_hits) | 701 | if (!dirty->num_hits) |
| 701 | return; | 702 | return; |
| @@ -706,6 +707,13 @@ static void vmw_stdu_dmabuf_cpu_commit(struct vmw_kms_dirty *dirty) | |||
| 706 | if (width == 0 || height == 0) | 707 | if (width == 0 || height == 0) |
| 707 | return; | 708 | return; |
| 708 | 709 | ||
| 710 | ret = ttm_bo_kmap(&ddirty->buf->base, 0, ddirty->buf->base.num_pages, | ||
| 711 | &guest_map); | ||
| 712 | if (ret) { | ||
| 713 | DRM_ERROR("Failed mapping framebuffer for blit: %d\n", | ||
| 714 | ret); | ||
| 715 | goto out_cleanup; | ||
| 716 | } | ||
| 709 | 717 | ||
| 710 | /* Assume we are blitting from Host (display_srf) to Guest (dmabuf) */ | 718 | /* Assume we are blitting from Host (display_srf) to Guest (dmabuf) */ |
| 711 | src_pitch = stdu->display_srf->base_size.width * stdu->cpp; | 719 | src_pitch = stdu->display_srf->base_size.width * stdu->cpp; |
| @@ -713,7 +721,7 @@ static void vmw_stdu_dmabuf_cpu_commit(struct vmw_kms_dirty *dirty) | |||
| 713 | src += ddirty->top * src_pitch + ddirty->left * stdu->cpp; | 721 | src += ddirty->top * src_pitch + ddirty->left * stdu->cpp; |
| 714 | 722 | ||
| 715 | dst_pitch = ddirty->pitch; | 723 | dst_pitch = ddirty->pitch; |
| 716 | dst = ttm_kmap_obj_virtual(&stdu->guest_map, ¬_used); | 724 | dst = ttm_kmap_obj_virtual(&guest_map, ¬_used); |
| 717 | dst += ddirty->fb_top * dst_pitch + ddirty->fb_left * stdu->cpp; | 725 | dst += ddirty->fb_top * dst_pitch + ddirty->fb_left * stdu->cpp; |
| 718 | 726 | ||
| 719 | 727 | ||
| @@ -772,6 +780,7 @@ static void vmw_stdu_dmabuf_cpu_commit(struct vmw_kms_dirty *dirty) | |||
| 772 | vmw_fifo_commit(dev_priv, sizeof(*cmd)); | 780 | vmw_fifo_commit(dev_priv, sizeof(*cmd)); |
| 773 | } | 781 | } |
| 774 | 782 | ||
| 783 | ttm_bo_kunmap(&guest_map); | ||
| 775 | out_cleanup: | 784 | out_cleanup: |
| 776 | ddirty->left = ddirty->top = ddirty->fb_left = ddirty->fb_top = S32_MAX; | 785 | ddirty->left = ddirty->top = ddirty->fb_left = ddirty->fb_top = S32_MAX; |
| 777 | ddirty->right = ddirty->bottom = S32_MIN; | 786 | ddirty->right = ddirty->bottom = S32_MIN; |
| @@ -1109,9 +1118,6 @@ vmw_stdu_primary_plane_cleanup_fb(struct drm_plane *plane, | |||
| 1109 | { | 1118 | { |
| 1110 | struct vmw_plane_state *vps = vmw_plane_state_to_vps(old_state); | 1119 | struct vmw_plane_state *vps = vmw_plane_state_to_vps(old_state); |
| 1111 | 1120 | ||
| 1112 | if (vps->guest_map.virtual) | ||
| 1113 | ttm_bo_kunmap(&vps->guest_map); | ||
| 1114 | |||
| 1115 | if (vps->host_map.virtual) | 1121 | if (vps->host_map.virtual) |
| 1116 | ttm_bo_kunmap(&vps->host_map); | 1122 | ttm_bo_kunmap(&vps->host_map); |
| 1117 | 1123 | ||
| @@ -1277,33 +1283,11 @@ vmw_stdu_primary_plane_prepare_fb(struct drm_plane *plane, | |||
| 1277 | */ | 1283 | */ |
| 1278 | if (vps->content_fb_type == SEPARATE_DMA && | 1284 | if (vps->content_fb_type == SEPARATE_DMA && |
| 1279 | !(dev_priv->capabilities & SVGA_CAP_3D)) { | 1285 | !(dev_priv->capabilities & SVGA_CAP_3D)) { |
| 1280 | |||
| 1281 | struct vmw_framebuffer_dmabuf *new_vfbd; | ||
| 1282 | |||
| 1283 | new_vfbd = vmw_framebuffer_to_vfbd(new_fb); | ||
| 1284 | |||
| 1285 | ret = ttm_bo_reserve(&new_vfbd->buffer->base, false, false, | ||
| 1286 | NULL); | ||
| 1287 | if (ret) | ||
| 1288 | goto out_srf_unpin; | ||
| 1289 | |||
| 1290 | ret = ttm_bo_kmap(&new_vfbd->buffer->base, 0, | ||
| 1291 | new_vfbd->buffer->base.num_pages, | ||
| 1292 | &vps->guest_map); | ||
| 1293 | |||
| 1294 | ttm_bo_unreserve(&new_vfbd->buffer->base); | ||
| 1295 | |||
| 1296 | if (ret) { | ||
| 1297 | DRM_ERROR("Failed to map content buffer to CPU\n"); | ||
| 1298 | goto out_srf_unpin; | ||
| 1299 | } | ||
| 1300 | |||
| 1301 | ret = ttm_bo_kmap(&vps->surf->res.backup->base, 0, | 1286 | ret = ttm_bo_kmap(&vps->surf->res.backup->base, 0, |
| 1302 | vps->surf->res.backup->base.num_pages, | 1287 | vps->surf->res.backup->base.num_pages, |
| 1303 | &vps->host_map); | 1288 | &vps->host_map); |
| 1304 | if (ret) { | 1289 | if (ret) { |
| 1305 | DRM_ERROR("Failed to map display buffer to CPU\n"); | 1290 | DRM_ERROR("Failed to map display buffer to CPU\n"); |
| 1306 | ttm_bo_kunmap(&vps->guest_map); | ||
| 1307 | goto out_srf_unpin; | 1291 | goto out_srf_unpin; |
| 1308 | } | 1292 | } |
| 1309 | 1293 | ||
| @@ -1350,7 +1334,6 @@ vmw_stdu_primary_plane_atomic_update(struct drm_plane *plane, | |||
| 1350 | stdu->display_srf = vps->surf; | 1334 | stdu->display_srf = vps->surf; |
| 1351 | stdu->content_fb_type = vps->content_fb_type; | 1335 | stdu->content_fb_type = vps->content_fb_type; |
| 1352 | stdu->cpp = vps->cpp; | 1336 | stdu->cpp = vps->cpp; |
| 1353 | memcpy(&stdu->guest_map, &vps->guest_map, sizeof(vps->guest_map)); | ||
| 1354 | memcpy(&stdu->host_map, &vps->host_map, sizeof(vps->host_map)); | 1337 | memcpy(&stdu->host_map, &vps->host_map, sizeof(vps->host_map)); |
| 1355 | 1338 | ||
| 1356 | if (!stdu->defined) | 1339 | if (!stdu->defined) |
