Linux vmwgfx driver features and bug fixes
search cancel

Linux vmwgfx driver features and bug fixes


Article ID: 367554


Updated On:


VMware Desktop Hypervisor VMware vSphere ESXi


This article provides a summary of the important features and bug fixes implemented in the Linux vmwgfx driver contributed to the upstream Linux kernel. Linux distro releases are expected to include all of the changes described below through the specific version of kernel that the distro release is based. The OS vendor or community may also have back ported a subset of changes from newer linux kernels to their releases. Please contact the OS vendor or community for availability of specific patches that have been back ported from newer kernel versions.


Changes implemented by Linux kernel versions:


  1. 34bd46bcf3de drm/vmwgfx: Fix a bad merge in otable batch takedown
  2. c26d6586e97a drm/vmwgfx: Fix implicit declaration error
  3. d3fae3b3daac dma-buf: drop the _rcu postfix on function names v3
  4. 6edbd6abb783 dma-buf: rename and cleanup dma_resv_get_excl v3
  5. cb1c81467af3 drm/ttm: flip the switch for driver allocated resources v2
  6. d3bcb4b02fe9 drm/vmwgfx: switch the TTM backends to self alloc
  7. bfa3357ef9ab drm/ttm: allocate resource object instead of embedding it v2
  8. d3116756a710 drm/ttm: rename bo->mem and make it a pointer
  9. cbc5caf778ba drm/vmwgfx: Inline vmw_verify_access()
  10. e65d096f8bd8 drm/vmwgfx: Inline ttm_bo_mmap() into vmwgfx driver
  11. 527a9471878e drm/vmwgfx: Fix return value check in vmw_setup_pci_resources()
  12. 2f70cbf79e3f drm/vmwgfx: Fix memory allocation check and a leak of object fifo
  13. 523375c943e5 drm/vmwgfx: Port vmwgfx to arm64
  14. 2cd80dbd3551 drm/vmwgfx: Add basic support for SVGA3
  15. 8211783f16ea drm/vmwgfx: Remove the reservation semaphore
  16. 88509f698c4e drm/vmwgfx: Fix cpu updates of coherent multisample surfaces
  17. 75156a887b6c drm/vmwgfx: Mark a surface gpu-dirty after the SVGA3dCmdDXGenMips command
  18. 2cc8bfeeb736 drm/vmwgfx: Fix incorrect enum usage
  19. aec70c39129d drm/vmwgfx: replace idr_init() by idr_init_base()
  20. cf63561cbae7 drm/vmwgfx: use min_t to replace min
  21. ed2684e7051a gpu: drm: vmwgfx: convert comma to semicolon
  22. ae57b2190fd8 drm/vmwgfx/vmwgfx_validation: Use flexible-array member instead of zero-length array
  23. 82cc3b070350 drm/vmwgfx: Fix a typo
  24. 5dbf2fc587cb drm/vmwgfx: Make console emulation depend on DRM_FBDEV_EMULATION
  25. c777dc9e7933 drm/ttm: move the page_alignment into the BO v2
  26. d02117f8efaa drm/ttm: remove special handling for non GEM drivers
  27. 13ea9aa1e7d8 drm/ttm: fix error handling if no BO can be swapped out v4
  28. 6848c291a54f drm/aperture: Convert drivers to aperture interfaces


  1. 90e7a6de6278 lib/scatterlist: Provide a dedicated function to support table append
  2. 5f50b7659da6 drm/vmwgfx: Replace "vmw_num_pages" with "PFN_UP"
  3. bc65754ca614 drm/vmwgfx: Make use of PFN_ALIGN/PFN_UP helper macro
  4. 2bc5da528dd5 drm/vmwgfx: fix potential UAF in vmwgfx_surface.c
  5. 1cb48cf3b1da drm/vmwgfx: Use list_move_tail instead of list_del/list_add_tail in vmwgfx_cmdbuf_res.c
  6. aa841a99f240 drm/vmwgfx: Use list_move_tail instead of list_del/list_add_tail in vmwgfx_cmdbuf.c
  7. d7bd351faabe drm/vmwgfx: Remove the repeated declaration
  8. c29758cdc78a drm/vmwgfx: Use 2.19 version number to recognize mks-stats ioctls
  9. cfdc3458db8a drm/vmwgfx: Be a lot more flexible with MOB limits
  10. 2b273544f580 drm/vmwgfx: Cleanup logging
  11. f1f3e37535a0 drm/vmwgfx: Switch to using DRM_IOCTL_DEF_DRV
  12. b0fee7df43cf drm/vmwgfx: Convert to Linux IRQ interfaces
  13. 97c9bfe3f660 drm/aperture: Pass DRM driver structure instead of driver name
  14. aa3d18a344a1 drm/vmwgfx: Don't set struct drm_device.irq_enabled
  15. 9f808288ba88 drm/vmwgfx: Fix build issues in mksGuestStats discovered by the kernel test robot
  16. 46e4e5ffbc2a drm/vmwgfx: Fix a bad merge in otable batch takedown
  17. c2aaa37dc18f drm/vmwgfx: Fix a 64bit regression on svga3
  18. ebc9ac7c3dfe drm/vmwgfx: Update device headers
  19. 352a81b71ea0 drm/vmwgfx: Fix implicit declaration error
  20. baee602e5c0d drm/vmwgfx: Remove vmw_chipset
  21. b7d0949f6ce6 drm/vmwgfx: Refactor vmw_mksstat_remove_ioctl to expect pgid match with vmw_mksstat_add_ioctl to authorise removal.
  22. 8d9a8d9bd503 drm/vmwgfx: inline access to the pages from the piter
  23. f674a218c610 drm/vmwgfx: remove code that was using physical page addresses
  24. 74231041d140 drm/vmwgfx: Fix some static checker warnings
  25. a12be0277316 drm/vmwgfx: Fix subresource updates with new contexts
  26. 7a7a933edd6c drm/vmwgfx: Introduce VMware mks-guest-stats
  27. d92223ead97c drm/vmwgfx: Simplify devcaps code


  1. 0d979509539e drm/ttm: remove ttm_bo_vm_insert_huge()
  2. 16b0314aa746 dma-buf: move dma-buf symbols into the DMA_BUF module namespace
  3. f8e7bce3a661 drm: Remove redundant 'flush_workqueue()' calls
  4. e7b481857bca Revert "drm/vmwgfx: cleanup: drm_modeset_lock_all() --> DRM_MODESET_LOCK_ALL_BEGIN()"
  5. e9d1d2bb75b2 treewide: Replace the use of mem_encrypt_active() with cc_platform_has()
  6. 6b92e77156c5 drm/vmwgfx: cleanup: drm_modeset_lock_all() --> DRM_MODESET_LOCK_ALL_BEGIN()
  7. 98cca519df6d drm/ttm: cleanup ttm_resource_compat
  8. d5f45d1e2f08 drm/ttm: remove ttm_tt_destroy_common v2
  9. e54163e9184e drm/vmwgfx: unbind in vmw_ttm_unpopulate


  1. a0f90c881570 drm/vmwgfx: Fix stale file descriptors on failed usercopy
  2. 58fa0d90edde drm/vmwgfx: Fix possible usage of an uninitialized variable
  3. 50ca8cc7c0fd drm/vmwgfx: Remove unused compile options
  4. bc701a28c74e drm/vmwgfx: Remove explicit transparent hugepages support
  5. 4e07d71c0d66 drm/vmwgfx: Fix a size_t/long int format specifier mismatch
  6. 94eb7de6f4be drm/vmwgfx: Bump the minor version
  7. 9ca476acd5e8 drm/vmwgfx: Remove usage of MOBFMT_RANGE
  8. bf625870b830 drm/vmwgfx: add support for updating only offsets of constant buffers
  9. abaad3d95b51 drm/vmwgfx: Allow checking for gl43 contexts
  10. 4fb9326b96cb drm/vmwgfx: support 64 UAVs
  11. 853369df34fb drm/vmwgfx: support SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE_V2 command
  12. b05fa56425f5 drm/vmwgfx: Update device headers for GL43
  13. 24df43d93d72 drm/vmwgfx: Implement create_handle on drm_framebuffer_funcs
  14. 8afa13a0583f drm/vmwgfx: Implement DRIVER_GEM
  15. 8ad0c3fd132b drm/vmwgfx: Stop hardcoding the PCI ID
  16. f4708c16a6d7 drm/vmwgfx: Add a debug callback to mobid resource manager
  17. 8aadeb8ad874 drm/vmwgfx: Remove the dedicated memory accounting
  18. a85b1cb23091 drm/vmwgfx: Switch the internal BO's to ttm_bo_type_kernel
  19. f6be23264bba drm/vmwgfx: Introduce a new placement for MOB page tables
  20. c451af78f301 drm/vmwgfx: Fail to initialize on broken configs
  21. 28b5f3b6121b drm/vmwgfx: Release ttm memory if probe fails
  22. 826c387d0152 drm/vmwgfx: Remove the deprecated lower mem limit
  23. 2985c96485b7 drm/vmwgfx: Copy DRM hash-table code into driver
  24. 6a2d2ddf2c34 drm: Move nomodeset kernel parameter to the DRM subsystem


  1. 21d1d192890c drm/vmwgfx: Disable command buffers on svga3 without gbobjects
  2. 3059d9b9f6aa drm/vmwgfx: Initialize drm_mode_fb_cmd2
  3. 1d6595b4cd47 drm/vmwgfx: Fix fencing on SVGAv3
  4. 298799a28264 drm/vmwgfx: Fix gem refcounting and memory evictions
  5. 3f1a31ff8e3f drm/vmwgfx: remove vmw_wait_dma_fence
  6. df8d1d0abd94 drm/vmwgfx: Replace module-init boiler-plate code with DRM helpers
  7. 3f268ef06f8c drm/ttm: add back a reference to the bdev to the res manager
  8. de3688e469b0 drm/ttm: add ttm_resource_fini v2
  9. 60c9ecd705be drm/vmwgfx: Fix possible usage of an uninitialized variable
  10. 11343099d5ae drm/vmwgfx: Remove unused compile options
  11. 49d535d64d52 drm/vmwgfx: Remove explicit transparent hugepages support
  12. 72345114c96b drm/vmwgfx: Fix a size_t/long int format specifier mismatch


  1. e2d8b4289c93 fbdev: Use pageref offset for deferred-I/O writeback
  2. e80eec1b871a fbdev: Rename pagelist to pagereflist for deferred I/O
  3. 56c134f7f1b5 fbdev: Track deferred-I/O pages in pageref struct
  4. 590558510327 fbdev: Put mmap for deferred I/O into drivers
  5. 544ccad73925 drm/vmwgfx: Reserve fence slots on buffer objects in cotables
  6. af4a25bbe5e7 drm/vmwgfx: Add debugfs entries for various ttm resource managers
  7. 8bb31587820a drm/ttm: remove bo->moving
  8. b29895e18304 dma-buf: add DMA_RESV_USAGE_KERNEL v3
  9. 73511edf8b19 dma-buf: specify usage while adding fences to dma_resv obj v7
  10. 7bc80a5462c3 dma-buf: add enum dma_resv_usage v4
  11. c8d4c18bfbc4 dma-buf/drivers: make reserving a shared slot mandatory v4 
  12. 2029a6d0281c drm/vmwgfx: stop using dma_resv_excl_fence v2
  13. e36764ecf87c drm/ttm: Add a parameter to add extra pages into ttm_tt
  14. 6f6f9788d821 drm/vmwgfx: Disable command buffers on svga3 without gbobjects
  15. 8bb75aeb58bd drm/vmwgfx: validate the screen formats
  16. ab709795e386 drm/vmwgfx: Fix mob cursor allocation race
  17. 10a26e0d5fc3 drm/vmwgfx: Fix an invalid read
  18. b861de246912 drm/vmwgfx: Stop using surface dma commands on most configurations
  19. 32160e6a98f3 drm/vmwgfx: Implement MSI/MSI-X support for IRQs
  20. 5405d25b9e8e drm/vmwgfx: Initialize drm_mode_fb_cmd2
  21. 23b0e695d4ca drm/vmwgfx: Allow querying of the SVGA PCI id from the userspace
  22. c593197b6ece drm/vmwgfx: Fix fencing on SVGAv3
  23. af326e28380a drm/vmwgfx: Print capabilities early during the initialization
  24. bb30d8d8c1b0 drm/vmwgfx: Cleanup multimon initialization code
  25. 485d98d472d5 drm/vmwgfx: Add support for CursorMob and CursorBypass 4


  1. 73289afe0361 drm: Remove linux/fb.h from drm_crtc.h
  2. 207d2073c648 drm/vmwgfx: Stop using 'TRUE'
  3. 720cf96d8fec drm: Drop drm_framebuffer.h from drm_crtc.h
  4. 3507932390bb drm/ttm: move default BO destructor into VMWGFX v2


  1. 6e90293618ed drm/vmwgfx: Don't use screen objects when SEV is active
  2. ed14d225cc7c drm/vmwgfx: Fix race issue calling pin_user_pages
  3. a40c7f61d12f drm/vmwgfx: Fix memory leak in vmw_mksstat_add_ioctl()
  4. a2224f2d458a drm/vmwgfx: remove unused vmw_bo_is_vmw_bo() declaration
  5. 7fbee3eb9ab8 drm/vmwgfx: Remove unused hugepage support
  6. 05436815fdb4 drm/vmwgfx: cleanup comments
  7. ffb6260be81f drm/vmwgfx: clean up some error pointer checking
  8. 254e5e8829a9 drm: Remove unnecessary include statements of drm_plane_helper.h
  9. cce32e4e38c6 drm/atomic-helper: Remove _HELPER_ infix from DRM_PLANE_HELPER_NO_SCALING
  10. 382fc1f68132 drm/atomic-helper: Move DRM_PLANE_HELPER_NO_SCALING to atomic helpers
  11. 97216fefed6d drm/vmwgfx: Remove trailing whitespace
  12. 347987a2cf0d drm/ttm: rename and cleanup ttm_bo_init


  1. a2a04b515562 Merge tag 'drm-misc-fixes-2023-02-16' of git:// into drm-fixes
  2. a950b989ea29 drm/vmwgfx: Do not drop the reference to the handle too soon
  3. 1a6897921f52 drm/vmwgfx: Stop accessing buffer objects which failed init
  4. 262b42e02d1e treewide: fix up files incorrectly marked executable
  5. a309c7194e8a drm/vmwgfx: Remove rcu locks from user resources
  6. a594533df0f6 Merge tag 'drm-next-2022-12-13' of git://
  7. 8ab59da26bc0 drm/fb-helper: Move generic fbdev emulation into separate source file
  8. da7ffb9660c9 drm/vmwgfx: Cleanup the cursor snooping code
  9. 4cf949c7fafe drm/vmwgfx: Validate the box size for the snooped cursor
  10. e3c92eb4a84f drm/ttm: rework on ttm_resource to use size_t type
  11. 71bb70f87d63 drm/vmwgfx: Fix a sparse warning in kernel docs
  12. 148e5f5529ac drm/vmwgfx: Optimize initial sizes of cotables
  13. 4bb50606cba2 drm/vmwgfx: Add a mksstat counter for cotable resizes
  14. 2e10cdc6e85d drm/vmwgfx: Remove explicit and broken vblank handling
  15. df42523c12f8 drm/vmwgfx: Port the framebuffer code to drm fb helpers
  16. 1c8d537bbcc9 drm/vmwgfx: Do not allow invalid bpp's for dumb buffers
  17. 9da30cdd6a31 drm/vmwgfx: Remove vmwgfx_hashtab
  18. 76a9e07f270c drm/vmwgfx: Refactor ttm reference object hashtable to use linux/hashtable.
  19. bb6780aa5a1d drm/vmwgfx: Diff cursors when using cmds
  20. 92f59ac41c88 drm/vmwgfx: Support cursor surfaces with mob cursor
  21. 40f9e40b2049 drm/vmwgfx: Start diffing new mob cursors against old ones
  22. 53bc3f6fb6b3 drm/vmwgfx: Clean up cursor mobs
  23. 9e931f2e0970 drm/vmwgfx: Refactor resource validation hashtable to use linux/hashtable implementation.
  24. 931e09d8d5b4 drm/vmwgfx: Remove ttm object hashtable
  25. 43531dc661b7 drm/vmwgfx: Refactor resource manager's hashtable to use linux/hashtable implementation.
  26. 3280706369f6 drm/vmwgfx: Fix frame-size warning in vmw_mksstat_add_ioctl
  27. 7f4c33778686 drm/vmwgfx: Write the driver id registers


  1. 3822a7c40997 Merge tag 'mm-stable-2023-02-20-13-37' of git://
  2. a5c95ca18a98 Merge tag 'drm-next-2023-02-23' of git://
  3. 1c71222e5f23 mm: replace vma->vm_flags direct modifications with modifier calls
  4. aebd8f0c6f82 Merge v6.2-rc6 into drm-next
  5. b8f55f24bc82 Merge tag 'drm-misc-next-2023-01-19' of git:// into drm-next
  6. 0e18a6b49be2 Sync with v6.2-rc4
  7. 13acb368bf02 drm/ttm/vmwgfx: move ttm_bo_wait into VMWGFX
  8. 03a0a1040895 Merge tag 'drm-misc-next-2023-01-03' of git:// into drm-next
  9. f422fa7cd858 Merge tag 'drm-misc-next-2022-11-24' of git:// into drm-next
  10. a3185f91d057 drm/ttm: merge ttm_bo_api.h and ttm_bo_driver.h v2