Commit 5724f899 authored by Deepak Rawat's avatar Deepak Rawat

drm/vmwgfx: Add a new define for vmwgfx user-space debugging

Error messages or debugging message reported during user-space command
submission should not be printed to dmesg by default. So add a new
preprocessor define called VMW_DEBUG_USER which translates to
DRM_DEBUG_DRIVER.

v2: Use VMW_DEBUG_USER instead of using DRM_DEBUG_DRIVER directly.
Signed-off-by: default avatarDeepak Rawat <drawat@vmware.com>
Reviewed-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
parent d01316d0
...@@ -751,7 +751,7 @@ static int vmw_context_define(struct drm_device *dev, void *data, ...@@ -751,7 +751,7 @@ static int vmw_context_define(struct drm_device *dev, void *data,
int ret; int ret;
if (!dev_priv->has_dx && dx) { if (!dev_priv->has_dx && dx) {
DRM_ERROR("DX contexts not supported by device.\n"); VMW_DEBUG_USER("DX contexts not supported by device.\n");
return -EINVAL; return -EINVAL;
} }
......
...@@ -1313,6 +1313,20 @@ int vmw_host_get_guestinfo(const char *guest_info_param, ...@@ -1313,6 +1313,20 @@ int vmw_host_get_guestinfo(const char *guest_info_param,
char *buffer, size_t *length); char *buffer, size_t *length);
int vmw_host_log(const char *log); int vmw_host_log(const char *log);
/* VMW logging */
/**
* VMW_DEBUG_USER - Debug output for user-space debugging.
*
* @fmt: printf() like format string.
*
* This macro is for logging user-space error and debugging messages for e.g.
* command buffer execution errors due to malformed commands, invalid context,
* etc.
*/
#define VMW_DEBUG_USER(fmt, ...) \
DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)
/** /**
* Inline helper functions * Inline helper functions
*/ */
......
This diff is collapsed.
...@@ -188,7 +188,7 @@ int vmw_get_cap_3d_ioctl(struct drm_device *dev, void *data, ...@@ -188,7 +188,7 @@ int vmw_get_cap_3d_ioctl(struct drm_device *dev, void *data,
struct vmw_fpriv *vmw_fp = vmw_fpriv(file_priv); struct vmw_fpriv *vmw_fp = vmw_fpriv(file_priv);
if (unlikely(arg->pad64 != 0 || arg->max_size == 0)) { if (unlikely(arg->pad64 != 0 || arg->max_size == 0)) {
DRM_ERROR("Illegal GET_3D_CAP argument.\n"); VMW_DEBUG_USER("Illegal GET_3D_CAP argument.\n");
return -EINVAL; return -EINVAL;
} }
...@@ -268,7 +268,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data, ...@@ -268,7 +268,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data,
return 0; return 0;
if (clips_ptr == NULL) { if (clips_ptr == NULL) {
DRM_ERROR("Variable clips_ptr must be specified.\n"); VMW_DEBUG_USER("Variable clips_ptr must be specified.\n");
ret = -EINVAL; ret = -EINVAL;
goto out_clips; goto out_clips;
} }
...@@ -291,7 +291,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data, ...@@ -291,7 +291,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data,
fb = drm_framebuffer_lookup(dev, file_priv, arg->fb_id); fb = drm_framebuffer_lookup(dev, file_priv, arg->fb_id);
if (!fb) { if (!fb) {
DRM_ERROR("Invalid framebuffer id.\n"); VMW_DEBUG_USER("Invalid framebuffer id.\n");
ret = -ENOENT; ret = -ENOENT;
goto out_no_fb; goto out_no_fb;
} }
...@@ -351,7 +351,7 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data, ...@@ -351,7 +351,7 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data,
return 0; return 0;
if (clips_ptr == NULL) { if (clips_ptr == NULL) {
DRM_ERROR("Argument clips_ptr must be specified.\n"); VMW_DEBUG_USER("Argument clips_ptr must be specified.\n");
ret = -EINVAL; ret = -EINVAL;
goto out_clips; goto out_clips;
} }
...@@ -374,14 +374,14 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data, ...@@ -374,14 +374,14 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data,
fb = drm_framebuffer_lookup(dev, file_priv, arg->fb_id); fb = drm_framebuffer_lookup(dev, file_priv, arg->fb_id);
if (!fb) { if (!fb) {
DRM_ERROR("Invalid framebuffer id.\n"); VMW_DEBUG_USER("Invalid framebuffer id.\n");
ret = -ENOENT; ret = -ENOENT;
goto out_no_fb; goto out_no_fb;
} }
vfb = vmw_framebuffer_to_vfb(fb); vfb = vmw_framebuffer_to_vfb(fb);
if (!vfb->bo) { if (!vfb->bo) {
DRM_ERROR("Framebuffer not buffer backed.\n"); VMW_DEBUG_USER("Framebuffer not buffer backed.\n");
ret = -EINVAL; ret = -EINVAL;
goto out_no_ttm_lock; goto out_no_ttm_lock;
} }
......
...@@ -865,14 +865,13 @@ static int vmw_shader_define(struct drm_device *dev, struct drm_file *file_priv, ...@@ -865,14 +865,13 @@ static int vmw_shader_define(struct drm_device *dev, struct drm_file *file_priv,
ret = vmw_user_bo_lookup(tfile, buffer_handle, ret = vmw_user_bo_lookup(tfile, buffer_handle,
&buffer, NULL); &buffer, NULL);
if (unlikely(ret != 0)) { if (unlikely(ret != 0)) {
DRM_ERROR("Could not find buffer for shader " VMW_DEBUG_USER("Couldn't find buffer for shader creation.\n");
"creation.\n");
return ret; return ret;
} }
if ((u64)buffer->base.num_pages * PAGE_SIZE < if ((u64)buffer->base.num_pages * PAGE_SIZE <
(u64)size + (u64)offset) { (u64)size + (u64)offset) {
DRM_ERROR("Illegal buffer- or shader size.\n"); VMW_DEBUG_USER("Illegal buffer- or shader size.\n");
ret = -EINVAL; ret = -EINVAL;
goto out_bad_arg; goto out_bad_arg;
} }
...@@ -886,7 +885,7 @@ static int vmw_shader_define(struct drm_device *dev, struct drm_file *file_priv, ...@@ -886,7 +885,7 @@ static int vmw_shader_define(struct drm_device *dev, struct drm_file *file_priv,
shader_type = SVGA3D_SHADERTYPE_PS; shader_type = SVGA3D_SHADERTYPE_PS;
break; break;
default: default:
DRM_ERROR("Illegal shader type.\n"); VMW_DEBUG_USER("Illegal shader type.\n");
ret = -EINVAL; ret = -EINVAL;
goto out_bad_arg; goto out_bad_arg;
} }
......
...@@ -239,17 +239,17 @@ vmw_simple_resource_lookup(struct ttm_object_file *tfile, ...@@ -239,17 +239,17 @@ vmw_simple_resource_lookup(struct ttm_object_file *tfile,
base = ttm_base_object_lookup(tfile, handle); base = ttm_base_object_lookup(tfile, handle);
if (!base) { if (!base) {
DRM_ERROR("Invalid %s handle 0x%08lx.\n", VMW_DEBUG_USER("Invalid %s handle 0x%08lx.\n",
func->res_func.type_name, func->res_func.type_name,
(unsigned long) handle); (unsigned long) handle);
return ERR_PTR(-ESRCH); return ERR_PTR(-ESRCH);
} }
if (ttm_base_object_type(base) != func->ttm_res_type) { if (ttm_base_object_type(base) != func->ttm_res_type) {
ttm_base_object_unref(&base); ttm_base_object_unref(&base);
DRM_ERROR("Invalid type of %s handle 0x%08lx.\n", VMW_DEBUG_USER("Invalid type of %s handle 0x%08lx.\n",
func->res_func.type_name, func->res_func.type_name,
(unsigned long) handle); (unsigned long) handle);
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
......
...@@ -338,12 +338,12 @@ int vmw_view_add(struct vmw_cmdbuf_res_manager *man, ...@@ -338,12 +338,12 @@ int vmw_view_add(struct vmw_cmdbuf_res_manager *man,
if (cmd_size != vmw_view_define_sizes[view_type] + if (cmd_size != vmw_view_define_sizes[view_type] +
sizeof(SVGA3dCmdHeader)) { sizeof(SVGA3dCmdHeader)) {
DRM_ERROR("Illegal view create command size.\n"); VMW_DEBUG_USER("Illegal view create command size.\n");
return -EINVAL; return -EINVAL;
} }
if (!vmw_view_id_ok(user_key, view_type)) { if (!vmw_view_id_ok(user_key, view_type)) {
DRM_ERROR("Illegal view add view id.\n"); VMW_DEBUG_USER("Illegal view add view id.\n");
return -EINVAL; return -EINVAL;
} }
...@@ -352,8 +352,7 @@ int vmw_view_add(struct vmw_cmdbuf_res_manager *man, ...@@ -352,8 +352,7 @@ int vmw_view_add(struct vmw_cmdbuf_res_manager *man,
ret = ttm_mem_global_alloc(vmw_mem_glob(dev_priv), size, &ttm_opt_ctx); ret = ttm_mem_global_alloc(vmw_mem_glob(dev_priv), size, &ttm_opt_ctx);
if (ret) { if (ret) {
if (ret != -ERESTARTSYS) if (ret != -ERESTARTSYS)
DRM_ERROR("Out of graphics memory for view" DRM_ERROR("Out of graphics memory for view creation\n");
" creation.\n");
return ret; return ret;
} }
...@@ -413,7 +412,7 @@ int vmw_view_remove(struct vmw_cmdbuf_res_manager *man, ...@@ -413,7 +412,7 @@ int vmw_view_remove(struct vmw_cmdbuf_res_manager *man,
struct vmw_resource **res_p) struct vmw_resource **res_p)
{ {
if (!vmw_view_id_ok(user_key, view_type)) { if (!vmw_view_id_ok(user_key, view_type)) {
DRM_ERROR("Illegal view remove view id.\n"); VMW_DEBUG_USER("Illegal view remove view id.\n");
return -EINVAL; return -EINVAL;
} }
......
...@@ -748,11 +748,10 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data, ...@@ -748,11 +748,10 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
ttm_round_pot(num_sizes * sizeof(struct drm_vmw_size)) + ttm_round_pot(num_sizes * sizeof(struct drm_vmw_size)) +
ttm_round_pot(num_sizes * sizeof(struct vmw_surface_offset)); ttm_round_pot(num_sizes * sizeof(struct vmw_surface_offset));
desc = svga3dsurface_get_desc(req->format); desc = svga3dsurface_get_desc(req->format);
if (unlikely(desc->block_desc == SVGA3DBLOCKDESC_NONE)) { if (unlikely(desc->block_desc == SVGA3DBLOCKDESC_NONE)) {
DRM_ERROR("Invalid surface format for surface creation.\n"); VMW_DEBUG_USER("Invalid format %d for surface creation.\n",
DRM_ERROR("Format requested is: %d\n", req->format); req->format);
return -EINVAL; return -EINVAL;
} }
...@@ -764,8 +763,7 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data, ...@@ -764,8 +763,7 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
size, &ctx); size, &ctx);
if (unlikely(ret != 0)) { if (unlikely(ret != 0)) {
if (ret != -ERESTARTSYS) if (ret != -ERESTARTSYS)
DRM_ERROR("Out of graphics memory for surface" DRM_ERROR("Out of graphics memory for surface.\n");
" creation.\n");
goto out_unlock; goto out_unlock;
} }
...@@ -939,12 +937,12 @@ vmw_surface_handle_reference(struct vmw_private *dev_priv, ...@@ -939,12 +937,12 @@ vmw_surface_handle_reference(struct vmw_private *dev_priv,
ret = -EINVAL; ret = -EINVAL;
base = ttm_base_object_lookup_for_ref(dev_priv->tdev, handle); base = ttm_base_object_lookup_for_ref(dev_priv->tdev, handle);
if (unlikely(!base)) { if (unlikely(!base)) {
DRM_ERROR("Could not find surface to reference.\n"); VMW_DEBUG_USER("Could not find surface to reference.\n");
goto out_no_lookup; goto out_no_lookup;
} }
if (unlikely(ttm_base_object_type(base) != VMW_RES_SURFACE)) { if (unlikely(ttm_base_object_type(base) != VMW_RES_SURFACE)) {
DRM_ERROR("Referenced object is not a surface.\n"); VMW_DEBUG_USER("Referenced object is not a surface.\n");
goto out_bad_resource; goto out_bad_resource;
} }
...@@ -1022,8 +1020,8 @@ int vmw_surface_reference_ioctl(struct drm_device *dev, void *data, ...@@ -1022,8 +1020,8 @@ int vmw_surface_reference_ioctl(struct drm_device *dev, void *data,
ret = copy_to_user(user_sizes, &srf->base_size, ret = copy_to_user(user_sizes, &srf->base_size,
sizeof(srf->base_size)); sizeof(srf->base_size));
if (unlikely(ret != 0)) { if (unlikely(ret != 0)) {
DRM_ERROR("copy_to_user failed %p %u\n", VMW_DEBUG_USER("copy_to_user failed %p %u\n", user_sizes,
user_sizes, srf->num_sizes); srf->num_sizes);
ttm_ref_object_base_unref(tfile, base->handle, TTM_REF_USAGE); ttm_ref_object_base_unref(tfile, base->handle, TTM_REF_USAGE);
ret = -EFAULT; ret = -EFAULT;
} }
...@@ -1405,16 +1403,16 @@ int vmw_surface_gb_priv_define(struct drm_device *dev, ...@@ -1405,16 +1403,16 @@ int vmw_surface_gb_priv_define(struct drm_device *dev,
if (for_scanout) { if (for_scanout) {
if (!svga3dsurface_is_screen_target_format(format)) { if (!svga3dsurface_is_screen_target_format(format)) {
DRM_ERROR("Invalid Screen Target surface format."); VMW_DEBUG_USER("Invalid Screen Target surface format.");
return -EINVAL; return -EINVAL;
} }
if (size.width > dev_priv->texture_max_width || if (size.width > dev_priv->texture_max_width ||
size.height > dev_priv->texture_max_height) { size.height > dev_priv->texture_max_height) {
DRM_ERROR("%ux%u\n, exceeds max surface size %ux%u", VMW_DEBUG_USER("%ux%u\n, exceeds max surface size %ux%u",
size.width, size.height, size.width, size.height,
dev_priv->texture_max_width, dev_priv->texture_max_width,
dev_priv->texture_max_height); dev_priv->texture_max_height);
return -EINVAL; return -EINVAL;
} }
} else { } else {
...@@ -1422,14 +1420,14 @@ int vmw_surface_gb_priv_define(struct drm_device *dev, ...@@ -1422,14 +1420,14 @@ int vmw_surface_gb_priv_define(struct drm_device *dev,
desc = svga3dsurface_get_desc(format); desc = svga3dsurface_get_desc(format);
if (unlikely(desc->block_desc == SVGA3DBLOCKDESC_NONE)) { if (unlikely(desc->block_desc == SVGA3DBLOCKDESC_NONE)) {
DRM_ERROR("Invalid surface format.\n"); VMW_DEBUG_USER("Invalid surface format.\n");
return -EINVAL; return -EINVAL;
} }
} }
/* array_size must be null for non-GL3 host. */ /* array_size must be null for non-GL3 host. */
if (array_size > 0 && !dev_priv->has_dx) { if (array_size > 0 && !dev_priv->has_dx) {
DRM_ERROR("Tried to create DX surface on non-DX host.\n"); VMW_DEBUG_USER("Tried to create DX surface on non-DX host.\n");
return -EINVAL; return -EINVAL;
} }
...@@ -1651,7 +1649,7 @@ vmw_gb_surface_define_internal(struct drm_device *dev, ...@@ -1651,7 +1649,7 @@ vmw_gb_surface_define_internal(struct drm_device *dev,
if (ret == 0) { if (ret == 0) {
if (res->backup->base.num_pages * PAGE_SIZE < if (res->backup->base.num_pages * PAGE_SIZE <
res->backup_size) { res->backup_size) {
DRM_ERROR("Surface backup buffer too small.\n"); VMW_DEBUG_USER("Surface backup buffer too small.\n");
vmw_bo_unreference(&res->backup); vmw_bo_unreference(&res->backup);
ret = -EINVAL; ret = -EINVAL;
goto out_unlock; goto out_unlock;
......
...@@ -325,8 +325,7 @@ int vmw_validation_add_resource(struct vmw_validation_context *ctx, ...@@ -325,8 +325,7 @@ int vmw_validation_add_resource(struct vmw_validation_context *ctx,
node = vmw_validation_mem_alloc(ctx, sizeof(*node) + priv_size); node = vmw_validation_mem_alloc(ctx, sizeof(*node) + priv_size);
if (!node) { if (!node) {
DRM_ERROR("Failed to allocate a resource validation " VMW_DEBUG_USER("Failed to allocate a resource validation entry.\n");
"entry.\n");
return -ENOMEM; return -ENOMEM;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment