forked from luck/tmp_suning_uos_patched
drm: Print bad user modes
Print out the modeline when we reject a bad user mode. Avoids having to guess why it was rejected. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180611193403.16118-2-ville.syrjala@linux.intel.com Reviewed-by: Harry Wentland <harry.wentland@amd.com>
This commit is contained in:
parent
b6f690ab23
commit
6ab0edf4e7
|
@ -392,10 +392,24 @@ int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state,
|
|||
memset(&state->mode, 0, sizeof(state->mode));
|
||||
|
||||
if (blob) {
|
||||
if (blob->length != sizeof(struct drm_mode_modeinfo) ||
|
||||
drm_mode_convert_umode(state->crtc->dev, &state->mode,
|
||||
blob->data))
|
||||
int ret;
|
||||
|
||||
if (blob->length != sizeof(struct drm_mode_modeinfo)) {
|
||||
DRM_DEBUG_ATOMIC("[CRTC:%d:%s] bad mode blob length: %zu\n",
|
||||
crtc->base.id, crtc->name,
|
||||
blob->length);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = drm_mode_convert_umode(crtc->dev,
|
||||
&state->mode, blob->data);
|
||||
if (ret) {
|
||||
DRM_DEBUG_ATOMIC("[CRTC:%d:%s] invalid mode (ret=%d, status=%s):\n",
|
||||
crtc->base.id, crtc->name,
|
||||
ret, drm_get_mode_status_name(state->mode.status));
|
||||
drm_mode_debug_printmodeline(&state->mode);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
state->mode_blob = drm_property_blob_get(blob);
|
||||
state->enable = true;
|
||||
|
|
|
@ -649,7 +649,9 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
|
|||
|
||||
ret = drm_mode_convert_umode(dev, mode, &crtc_req->mode);
|
||||
if (ret) {
|
||||
DRM_DEBUG_KMS("Invalid mode\n");
|
||||
DRM_DEBUG_KMS("Invalid mode (ret=%d, status=%s)\n",
|
||||
ret, drm_get_mode_status_name(mode->status));
|
||||
drm_mode_debug_printmodeline(mode);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
|
@ -56,6 +56,9 @@ int drm_mode_setcrtc(struct drm_device *dev,
|
|||
int drm_modeset_register_all(struct drm_device *dev);
|
||||
void drm_modeset_unregister_all(struct drm_device *dev);
|
||||
|
||||
/* drm_modes.c */
|
||||
const char *drm_get_mode_status_name(enum drm_mode_status status);
|
||||
|
||||
/* IOCTLs */
|
||||
int drm_mode_getresources(struct drm_device *dev,
|
||||
void *data, struct drm_file *file_priv);
|
||||
|
|
|
@ -1257,7 +1257,7 @@ static const char * const drm_mode_status_names[] = {
|
|||
|
||||
#undef MODE_STATUS
|
||||
|
||||
static const char *drm_get_mode_status_name(enum drm_mode_status status)
|
||||
const char *drm_get_mode_status_name(enum drm_mode_status status)
|
||||
{
|
||||
int index = status + 3;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user