vmw_private, so switch to using that exclusively and stop using
dev_private.
Signed-off-by: Maaz Mombasawala
---
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 2 --
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 4 ++--
3 files changed, 3 insertions(+), 5 deletions
t_fence_action_create(struct drm_file
> *file_priv,
> }
>
> event->event.base.type = DRM_VMW_EVENT_FENCE_SIGNALED;
> - event->event.base.length = sizeof(*event);
> + event->event.base.length = sizeof(event->event);
> event->event.user_dat
dev->mode_config.suggested_x_property, 0);
> drm_object_attach_property(>base,
> dev->mode_config.suggested_y_property, 0);
> +
> + vmw_du_init(>base);
> +
> return 0;
>
> err_free_unregister:
Shouldn't calls to vmw_du_init() be behind an if(vkms_enabled) condition?
Thanks,
Maaz Mombasawala
er it.
> Niels De Graef who reported it and helped to track down the poc.
>
> Fixes: 9c079b8ce8bf ("drm/vmwgfx: Adapt execbuf to the new validation api")
> Cc: # v4.20+
> Reported-by: Niels De Graef
> Signed-off-by: Zack Rusin
> Cc: Martin Krastev
> Cc: Maaz Mom
0
> FS: 7f1e8f1b4180() GS:969e75f0() knlGS:
> CS: 0010 DS: ES: CR0: 80050033
> CR2: 0028 CR3: 000104006004 CR4: 003706f0
>
> Signed-off-by: Zack Rusin
> Fixes: 485d98d472d5 ("drm/vmwgfx: Add supp
From: Maaz Mombasawala
Update vmwgfx_drm.h with SPDX-License-Identifier:
(GPL-2.0 WITH Linux-syscall-note) OR MIT
Signed-off-by: Maaz Mombasawala
Reviewed-by: Martin Krastev
Signed-off-by: Maaz Mombasawala (VMware)
---
include/uapi/drm/vmwgfx_drm.h | 1 +
1 file changed, 1 insertion
From: Maaz Mombasawala
There is no real need to have a separate pool for shareable and
non-shareable surfaces. Make all surfaces shareable, regardless of whether
the drm_vmw_surface_flag_shareable has been specified.
Signed-off-by: Maaz Mombasawala
Reviewed-by: Martin Krastev
Signed-off
LGTM!
Reviewed-by: Maaz Mombasawala
Maaz Mombasawala (VMware)
On 8/17/2023 9:13 PM, Zack Rusin wrote:
From: Zack Rusin
vmw_bo_unreference sets the input buffer to null on exit, resulting in
null ptr deref's on the subsequent drm gem put calls.
This went unnoticed because only very old
LGTM.
Reviewed-by: Maaz Mombasawala
Maaz Mombasawala (VMware)
On 6/16/2023 12:09 PM, Zack Rusin wrote:
From: Zack Rusin
For multiple commands the driver was not correctly validating the shader
stages resulting in possible kernel oopses. The validation code was only.
if ever, checking
char *fmt, ...);
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c
> b/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c
> index ca1a3fe44fa5..2651fe0ef518 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c
> @@ -1179,3 +1179,12 @@ int vmw_mksstat_remove_ioctl(struct drm_device *dev,
> void *data,
>
> return -EAGAIN;
> }
> +
> +/**
> + * vmw_disable_backdoor: Disables all backdoor communication
> + * with the hypervisor.
> + */
> +void vmw_disable_backdoor(void)
> +{
> + vmw_msg_enabled = 0;
> +}
LGTM
Reviewed-by: Maaz Mombasawala
--
Maaz Mombasawala (VMware)
ate(dev_priv, , p_vbo);
> -
> - (*p_vbo)->tbo.base.funcs = _gem_object_funcs;
> if (ret != 0)
> goto out_no_bo;
>
> + (*p_vbo)->tbo.base.funcs = _gem_object_funcs;
> +
> ret = drm_gem_handle_create(filp, &(*p_vbo)->tbo.base, handle);
> /* drop reference from allocate - handle holds it now */
> drm_gem_object_put(&(*p_vbo)->tbo.base);
LGTM!
Reviewed-by: Maaz Mombasawala
--
Maaz Mombasawala (VMware)
_surface_define_ioctl(struct drm_device *dev, void
> *data,
> goto out_unlock;
> }
> vmw_bo_reference(res->guest_memory_bo);
> - drm_gem_object_get(>guest_memory_bo->tbo.base);
> }
>
> tmp = vmw_resource_reference(>res);
LGTM!
Reviewed-by: Maaz Mombasawala
--
Maaz Mombasawala (VMware)
On 1/30/23 19:35, Zack Rusin wrote:
> From: Zack Rusin
>
> Various bits of the driver used raw ttm_buffer_object instead of the
> driver specific vmw_bo object. All those places used to duplicate
> the mapped bo caching policy of vmw_bo.
>
> Instead of duplicating all of that code and special
On 1/30/23 19:35, Zack Rusin wrote:
> From: Zack Rusin
>
> Problem with explicit placement selection in vmwgfx is that by the time
> the buffer object needs to be validated the information about which
> placement was supposed to be used is lost. To workaround this the driver
> had a bunch of
> }
>
> - if (vps->bo && ttm_kmap_obj_virtual(>bo->map, )) {
> + if (vps->bo && ttm_kmap_obj_virtual(>bo->map, _iomem)) {
> const int ret = ttm_bo_reserve(>bo->base, true, false,
> NULL);
>
> if (likely(ret == 0)) {
LGTM!
Reviewed-by: Maaz Mombasawala
--
Maaz Mombasawala (VMware)
pot_y);
> }
>
> - if (vps->bo) {
> - if (ttm_kmap_obj_virtual(>bo->map, ))
> - atomic_dec(>bo->base_mapped_count);
> - }
> -
> du->cursor_x = new_state->crtc_x + du->set_gui_x;
> du->cursor_y = new_state->crtc_y + du->set_gui_y;
>
LGTM!
Reviewed-by: Maaz Mombasawala
--
Maaz Mombasawala (VMware)
truct vmw_legacy_display_unit *ldu)
> {
> @@ -145,8 +188,7 @@ static int vmw_ldu_del_active(struct vmw_private
> *vmw_priv,
> list_del_init(>active);
> if (--(ld->num_active) == 0) {
> BUG_ON(!ld->fb);
> - if (ld->fb->unpin)
> - ld->fb->unpin(ld->fb);
> + WARN_ON(vmw_ldu_fb_unpin(ld->fb));
> ld->fb = NULL;
> }
>
> @@ -163,11 +205,10 @@ static int vmw_ldu_add_active(struct vmw_private
> *vmw_priv,
>
> BUG_ON(!ld->num_active && ld->fb);
> if (vfb != ld->fb) {
> - if (ld->fb && ld->fb->unpin)
> - ld->fb->unpin(ld->fb);
> + if (ld->fb)
> + WARN_ON(vmw_ldu_fb_unpin(ld->fb));
> vmw_svga_enable(vmw_priv);
> - if (vfb->pin)
> - vfb->pin(vfb);
> + WARN_ON(vmw_ldu_fb_pin(vfb));
> ld->fb = vfb;
> }
>
LGTM!
Reviewed-by: Maaz Mombasawala
--
Maaz Mombasawala (VMware)
On 1/30/23 19:35, Zack Rusin wrote:
> From: Zack Rusin
>
> The rest of the drivers which are using ttm have mostly standardized on
> driver_prefix_bo as the name for subclasses of the TTM buffer object.
> Make vmwgfx match the rest of the drivers and follow the same naming
> semantics.
>
> This
fx/vmwgfx_scrn.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
> @@ -445,7 +445,7 @@ vmw_sou_primary_plane_prepare_fb(struct drm_plane *plane,
> vmw_overlay_pause_all(dev_priv);
> ret = vmw_bo_create(dev_priv, size,
> _vram_placement,
> - false, true, _bo_bo_free, >bo);
> + false, true, >bo);
> vmw_overlay_resume_all(dev_priv);
> if (ret) {
> vps->bo = NULL; /* vmw_bo_init frees on error */
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
> b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
> index 108a496b5d18..93b1400aed4a 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
> @@ -893,7 +893,7 @@ int vmw_compat_shader_add(struct vmw_private *dev_priv,
> return -EINVAL;
>
> ret = vmw_bo_create(dev_priv, size, _sys_placement,
> - true, true, vmw_bo_bo_free, );
> + true, true, );
> if (unlikely(ret != 0))
> goto out;
>
LGTM!
Reviewed-by: Maaz Mombasawala
--
Maaz Mombasawala (VMware)
;
> -
> - if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET_START))
> - return -EINVAL;
> -
> - ret = vmw_bo_vm_lookup(bdev, file_priv, vma->vm_pgoff, vma_pages(vma),
> );
> - if (unlikely(ret != 0))
> - return ret;
> -
> - ret = ttm_bo_mmap_obj(vma, bo);
> - if (unlikely(ret != 0))
> - goto out_unref;
> -
> - vma->vm_ops = _vm_ops;
> -
> - /* Use VM_PFNMAP rather than VM_MIXEDMAP if not a COW mapping */
> - if (!is_cow_mapping(vma->vm_flags))
> - vma->vm_flags = (vma->vm_flags & ~VM_MIXEDMAP) | VM_PFNMAP;
> -
> - ttm_bo_put(bo); /* release extra ref taken by ttm_bo_mmap_obj() */
> -
> - return 0;
> -
> -out_unref:
> - ttm_bo_put(bo);
> - return ret;
> -}
> -
LGTM!
Reviewed-by: Maaz Mombasawala
--
Maaz Mombasawala (VMware)
LGTM.
Reviewed-by: Maaz Mombasawala
On 12/7/22 09:29, Zack Rusin wrote:
> From: Zack Rusin
>
> User resource lookups used rcu to avoid two extra atomics. Unfortunately
> the rcu paths were buggy and it was easy to make the driver crash by
> submitting command buffers fro
device *dev = _priv->drm;
> int i;
>
> + /* Screen objects won't work if GMR's aren't available */
> + if (!dev_priv->has_gmr)
> + return -ENOSYS;
> +
> if (!(dev_priv->capabilities & SVGA_CAP_SCREEN_OBJECT_2)) {
> return -ENOSYS;
> }
LGTM
--
Maaz Mombasawala (VMware)
on copies fence information to user-space. If copying fails,
> the
> * user-space struct drm_vmw_fence_rep::error member is hopefully left
--
Looks good.
Reviewed-by: Maaz Mombasawala
Maaz Mombasawala (VMware)
23 matches
Mail list logo