bochs: ignore device if there isn't enougth memory
authorGerd Hoffmann <kraxel@redhat.com>
Tue, 16 Dec 2014 11:29:59 +0000 (12:29 +0100)
committerGerd Hoffmann <kraxel@redhat.com>
Tue, 20 Sep 2016 12:25:35 +0000 (14:25 +0200)
The qemu stdvga can be configured with a wide range of video memory,
from 1 MB to 256 MB (default is 16 MB).  In case it is configured
with only 1 or 2 MB it isn't really usable with bochsdrm, due to
depths other than 32bpp not being supported so that isn't enough
memory for a reasonable sized framebuffer.  So skip the device
and let vgacon or vesafb+fbcon handle the it.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
drivers/gpu/drm/bochs/bochs_drv.c

index abace82de6eac2de22b747ff54a5612443f69647..aaae5e50d7c84b5fa931457369bf2b1aa6f833d1 100644 (file)
@@ -162,8 +162,15 @@ static int bochs_kick_out_firmware_fb(struct pci_dev *pdev)
 static int bochs_pci_probe(struct pci_dev *pdev,
                           const struct pci_device_id *ent)
 {
+       unsigned long fbsize;
        int ret;
 
+       fbsize = pci_resource_len(pdev, 0);
+       if (fbsize < 4 * 1024 * 1024) {
+               DRM_ERROR("less than 4 MB video memory, ignoring device\n");
+               return -ENOMEM;
+       }
+
        ret = bochs_kick_out_firmware_fb(pdev);
        if (ret)
                return ret;