drm/vmwgfx: Fail to initialize on broken configs
authorZack Rusin <zackr@vmware.com>
Fri, 5 Nov 2021 19:38:44 +0000 (15:38 -0400)
committerZack Rusin <zackr@vmware.com>
Wed, 1 Dec 2021 16:58:34 +0000 (11:58 -0500)
Some of our hosts have a bug where rescaning a pci bus results in stale
fifo memory being mapped on the host. This makes any fifo communication
impossible resulting in various kernel crashes.

Instead of unexpectedly crashing, predictably fail to load the driver
which will preserve the system.

Fixes: fb1d9738ca05 ("drm/vmwgfx: Add DRM driver for VMware Virtual GPU")
Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Martin Krastev <krastevm@vmware.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211105193845.258816-4-zackr@vmware.com
drivers/gpu/drm/vmwgfx/vmwgfx_cmd.c

index 67db472d3493c0fa49ee95b5eaa78e09f70001b9..a3bfbb6c3e14aa30a6431293c46252294b5668ac 100644 (file)
@@ -145,6 +145,13 @@ struct vmw_fifo_state *vmw_fifo_create(struct vmw_private *dev_priv)
                 (unsigned int) max,
                 (unsigned int) min,
                 (unsigned int) fifo->capabilities);
+
+       if (unlikely(min >= max)) {
+               drm_warn(&dev_priv->drm,
+                        "FIFO memory is not usable. Driver failed to initialize.");
+               return ERR_PTR(-ENXIO);
+       }
+
        return fifo;
 }