int oldidx, int found)
 {
        struct fbcon_ops *ops = oldinfo->fbcon_par;
-       int err = 0;
+       int err = 0, ret;
 
        if (oldinfo->fbops->fb_release &&
            oldinfo->fbops->fb_release(oldinfo, 0)) {
                  newinfo in an undefined state. Thus, a call to
                  fb_set_par() may be needed for the newinfo.
                */
-               if (newinfo->fbops->fb_set_par)
-                       newinfo->fbops->fb_set_par(newinfo);
+               if (newinfo->fbops->fb_set_par) {
+                       ret = newinfo->fbops->fb_set_par(newinfo);
+
+                       if (ret)
+                               printk(KERN_ERR "con2fb_release_oldinfo: "
+                                       "detected unhandled fb_set_par error, "
+                                       "error code %d\n", ret);
+               }
        }
 
        return err;
                                int unit, int show_logo)
 {
        struct fbcon_ops *ops = info->fbcon_par;
+       int ret;
 
        ops->currcon = fg_console;
 
-       if (info->fbops->fb_set_par && !(ops->flags & FBCON_FLAGS_INIT))
-               info->fbops->fb_set_par(info);
+       if (info->fbops->fb_set_par && !(ops->flags & FBCON_FLAGS_INIT)) {
+               ret = info->fbops->fb_set_par(info);
+
+               if (ret)
+                       printk(KERN_ERR "con2fb_init_display: detected "
+                               "unhandled fb_set_par error, "
+                               "error code %d\n", ret);
+       }
 
        ops->flags |= FBCON_FLAGS_INIT;
        ops->graphics = 0;
        struct vc_data *svc = *default_mode;
        struct display *t, *p = &fb_display[vc->vc_num];
        int logo = 1, new_rows, new_cols, rows, cols, charcnt = 256;
-       int cap;
+       int cap, ret;
 
        if (info_idx == -1 || info == NULL)
            return;
         */
        if (CON_IS_VISIBLE(vc) && vc->vc_mode == KD_TEXT) {
                if (info->fbops->fb_set_par &&
-                   !(ops->flags & FBCON_FLAGS_INIT))
-                       info->fbops->fb_set_par(info);
+                   !(ops->flags & FBCON_FLAGS_INIT)) {
+                       ret = info->fbops->fb_set_par(info);
+
+                       if (ret)
+                               printk(KERN_ERR "fbcon_init: detected "
+                                       "unhandled fb_set_par error, "
+                                       "error code %d\n", ret);
+               }
+
                ops->flags |= FBCON_FLAGS_INIT;
        }
 
        struct fbcon_ops *ops;
        struct display *p = &fb_display[vc->vc_num];
        struct fb_var_screeninfo var;
-       int i, prev_console, charcnt = 256;
+       int i, ret, prev_console, charcnt = 256;
 
        info = registered_fb[con2fb_map[vc->vc_num]];
        ops = info->fbcon_par;
 
        if (old_info != NULL && (old_info != info ||
                                 info->flags & FBINFO_MISC_ALWAYS_SETPAR)) {
-               if (info->fbops->fb_set_par)
-                       info->fbops->fb_set_par(info);
+               if (info->fbops->fb_set_par) {
+                       ret = info->fbops->fb_set_par(info);
+
+                       if (ret)
+                               printk(KERN_ERR "fbcon_switch: detected "
+                                       "unhandled fb_set_par error, "
+                                       "error code %d\n", ret);
+               }
 
                if (old_info != info)
                        fbcon_del_cursor_timer(old_info);
 
                        goto done;
 
                if ((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_NOW) {
+                       struct fb_var_screeninfo old_var;
                        struct fb_videomode mode;
 
                        if (info->fbops->fb_get_caps) {
                                        goto done;
                        }
 
+                       old_var = info->var;
                        info->var = *var;
 
-                       if (info->fbops->fb_set_par)
-                               info->fbops->fb_set_par(info);
+                       if (info->fbops->fb_set_par) {
+                               ret = info->fbops->fb_set_par(info);
+
+                               if (ret) {
+                                       info->var = old_var;
+                                       printk(KERN_WARNING "detected "
+                                               "fb_set_par error, "
+                                               "error code: %d\n", ret);
+                                       goto done;
+                               }
+                       }
 
                        fb_pan_display(info, &info->var);
                        fb_set_cmap(&info->cmap, info);