You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
drm/vmwgfx: Write the driver id registers
[ Upstream commit 7f4c33778686cc2d34cb4ef65b4265eea874c159 ] Driver id registers are a new mechanism in the svga device to hint to the device which driver is running. This should not change device behavior in any way, but might be convenient to work-around specific bugs in guest drivers. Signed-off-by: Zack Rusin <zackr@vmware.com> Reviewed-by: Martin Krastev <krastevm@vmware.com> Reviewed-by: Maaz Mombasawala <mombasawalam@vmware.com> Link: https://patchwork.freedesktop.org/patch/msgid/20221022040236.616490-2-zack@kde.org Stable-dep-of: a309c7194e8a ("drm/vmwgfx: Remove rcu locks from user resources") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
96a9873188
commit
2f3313c555
@@ -25,10 +25,13 @@
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/cc_platform.h>
|
||||
|
||||
#include "vmwgfx_drv.h"
|
||||
|
||||
#include "vmwgfx_devcaps.h"
|
||||
#include "vmwgfx_mksstat.h"
|
||||
#include "vmwgfx_binding.h"
|
||||
#include "ttm_object.h"
|
||||
|
||||
#include <drm/drm_aperture.h>
|
||||
#include <drm/drm_drv.h>
|
||||
@@ -41,11 +44,11 @@
|
||||
#include <drm/ttm/ttm_placement.h>
|
||||
#include <generated/utsrelease.h>
|
||||
|
||||
#include "ttm_object.h"
|
||||
#include "vmwgfx_binding.h"
|
||||
#include "vmwgfx_devcaps.h"
|
||||
#include "vmwgfx_drv.h"
|
||||
#include "vmwgfx_mksstat.h"
|
||||
#include <linux/cc_platform.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/version.h>
|
||||
|
||||
#define VMWGFX_DRIVER_DESC "Linux drm driver for VMware graphics devices"
|
||||
|
||||
@@ -806,6 +809,27 @@ static int vmw_detect_version(struct vmw_private *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void vmw_write_driver_id(struct vmw_private *dev)
|
||||
{
|
||||
if ((dev->capabilities2 & SVGA_CAP2_DX2) != 0) {
|
||||
vmw_write(dev, SVGA_REG_GUEST_DRIVER_ID,
|
||||
SVGA_REG_GUEST_DRIVER_ID_LINUX);
|
||||
|
||||
vmw_write(dev, SVGA_REG_GUEST_DRIVER_VERSION1,
|
||||
LINUX_VERSION_MAJOR << 24 |
|
||||
LINUX_VERSION_PATCHLEVEL << 16 |
|
||||
LINUX_VERSION_SUBLEVEL);
|
||||
vmw_write(dev, SVGA_REG_GUEST_DRIVER_VERSION2,
|
||||
VMWGFX_DRIVER_MAJOR << 24 |
|
||||
VMWGFX_DRIVER_MINOR << 16 |
|
||||
VMWGFX_DRIVER_PATCHLEVEL);
|
||||
vmw_write(dev, SVGA_REG_GUEST_DRIVER_VERSION3, 0);
|
||||
|
||||
vmw_write(dev, SVGA_REG_GUEST_DRIVER_ID,
|
||||
SVGA_REG_GUEST_DRIVER_ID_SUBMIT);
|
||||
}
|
||||
}
|
||||
|
||||
static int vmw_driver_load(struct vmw_private *dev_priv, u32 pci_id)
|
||||
{
|
||||
int ret;
|
||||
@@ -1091,6 +1115,7 @@ static int vmw_driver_load(struct vmw_private *dev_priv, u32 pci_id)
|
||||
vmw_host_printf("vmwgfx: Module Version: %d.%d.%d (kernel: %s)",
|
||||
VMWGFX_DRIVER_MAJOR, VMWGFX_DRIVER_MINOR,
|
||||
VMWGFX_DRIVER_PATCHLEVEL, UTS_RELEASE);
|
||||
vmw_write_driver_id(dev_priv);
|
||||
|
||||
if (dev_priv->enable_fb) {
|
||||
vmw_fifo_resource_inc(dev_priv);
|
||||
|
||||
Reference in New Issue
Block a user