--- initial
+++ final
@@ -1,86 +1,86 @@
 static int qxlfb_create(struct qxl_fbdev *qfbdev, struct drm_fb_helper_surface_size *sizes) {
   struct qxl_device *qdev = qfbdev->qdev;
   struct fb_info *info;
   struct drm_framebuffer *fb = NULL;
   struct drm_mode_fb_cmd2 mode_cmd;
   struct drm_gem_object *gobj = NULL;
   struct qxl_bo *qbo = NULL;
   int ret;
   int size;
   int bpp = sizes->surface_bpp;
   int depth = sizes->surface_depth;
   void *shadow;
   mode_cmd.width = sizes->surface_width;
   mode_cmd.height = sizes->surface_height;
   mode_cmd.pitches[0] = ALIGN(mode_cmd.width * ((bpp + 1) / 8), 64);
   mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth);
   ret = qxlfb_create_pinned_object(qfbdev, &mode_cmd, &gobj);
   if (ret < 0) return ret;
   qbo = gem_to_qxl_bo(gobj);
   QXL_INFO(qdev, "%s: %dx%d %d\n", __func__, mode_cmd.width, mode_cmd.height, mode_cmd.pitches[0]);
   shadow = vmalloc(mode_cmd.pitches[0] * mode_cmd.height);
   /* TODO: what's the usual response to memory allocation errors? */
   BUG_ON(!shadow);
   QXL_INFO(qdev, "surface0 at gpu offset %lld, mmap_offset %lld (virt %p, shadow %p)\n", qxl_bo_gpu_offset(qbo), qxl_bo_mmap_offset(qbo), qbo->kptr, shadow);
   size = mode_cmd.pitches[0] * mode_cmd.height;
   info = drm_fb_helper_alloc_fbi(&qfbdev->helper);
   if (IS_ERR(info)) {
     ret = PTR_ERR(info);
     goto out_unref;
   }
   info->par = qfbdev;
   qxl_framebuffer_init(qdev->ddev, &qfbdev->qfb, &mode_cmd, gobj, &qxlfb_fb_funcs);
   fb = &qfbdev->qfb.base;
   /* setup helper with fb data */
   qfbdev->helper.fb = fb;
   qfbdev->shadow = shadow;
   strcpy(info->fix.id, "qxldrmfb");
-  drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth);
+  drm_fb_helper_fill_fix(info, fb->pitches[0], fb->format->depth);
   info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_COPYAREA | FBINFO_HWACCEL_FILLRECT;
   info->fbops = &qxlfb_ops;
   /*
    * TODO: using gobj->size in various places in this function. Not sure
    * what the difference between the different sizes is.
    */
   info->fix.smem_start = qdev->vram_base; /* TODO - correct? */
   info->fix.smem_len = gobj->size;
   info->screen_base = qfbdev->shadow;
   info->screen_size = gobj->size;
   drm_fb_helper_fill_var(info, &qfbdev->helper, sizes->fb_width, sizes->fb_height);
   /* setup aperture base/size for vesafb takeover */
   info->apertures->ranges[0].base = qdev->ddev->mode_config.fb_base;
   info->apertures->ranges[0].size = qdev->vram_size;
   info->fix.mmio_start = 0;
   info->fix.mmio_len = 0;
   if (info->screen_base == NULL) {
     ret = -ENOSPC;
     goto out_destroy_fbi;
   }
 #ifdef CONFIG_DRM_FBDEV_EMULATION
   info->fbdefio = &qxl_defio;
   fb_deferred_io_init(info);
 #endif
   qdev->fbdev_info = info;
   qdev->fbdev_qfb = &qfbdev->qfb;
   DRM_INFO("fb mappable at 0x%lX, size %lu\n", info->fix.smem_start, (unsigned long)info->screen_size);
-  DRM_INFO("fb: depth %d, pitch %d, width %d, height %d\n", fb->depth, fb->pitches[0], fb->width, fb->height);
+  DRM_INFO("fb: depth %d, pitch %d, width %d, height %d\n", fb->format->depth, fb->pitches[0], fb->width, fb->height);
   return 0;
 out_destroy_fbi:
   drm_fb_helper_release_fbi(&qfbdev->helper);
 out_unref:
   if (qbo) {
     ret = qxl_bo_reserve(qbo, false);
     if (likely(ret == 0)) {
       qxl_bo_kunmap(qbo);
       qxl_bo_unpin(qbo);
       qxl_bo_unreserve(qbo);
     }
   }
   if (fb && ret) {
     drm_gem_object_unreference_unlocked(gobj);
     drm_framebuffer_cleanup(fb);
     kfree(fb);
   }
   drm_gem_object_unreference_unlocked(gobj);
   return ret;
 }<sep>@@
struct drm_framebuffer *fb;
@@
- fb->depth
+ fb->format->depth

@@
struct drm_framebuffer *fb;
@@
- (fb->format->depth)
+ fb->format->depth