• Sinclair Yeh's avatar
    drm/vmwgfx: Work around mode set failure in 2D VMs · 7c20d213
    Sinclair Yeh authored
    In a low-memory 2D VM, fbdev can take up a large percentage of
    available memory, making them unavailable for other DRM clients.
    
    Since we do not take fbdev into account when filtering modes,
    we end up claiming to support more modes than we actually do.
    
    As a result, users get a black screen when setting a mode too
    large for current available memory.  In a low-memory VM
    configuration, users can get a black screen for a mode as low
    as 1024x768.
    
    The current mode filtering mechanism keys off of
    SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB, i.e. the maximum amount
    of surface memory we have.  Since this value is a performance
    suggestion, not a hard limit, and since there should not be much
    of a performance impact for a 2D VM, rather than filtering out
    more modes, we will just allow ourselves to exceed the SVGA's
    performance suggestion.
    
    Also changed assumed bpp to 32 from 16 to make sure we can
    actually support all the modes listed.
    Signed-off-by: default avatarSinclair Yeh <syeh@vmware.com>
    Reviewed-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
    Cc: <stable@vger.kernel.org>
    7c20d213
vmwgfx_kms.c 60.5 KB