Skip to content

Commit

Permalink
drm/vmwgfx: Remove stealth mode
Browse files Browse the repository at this point in the history
Before drm got helpers for removing conflicting pci framebuffer devices
we implemented something known as "stealth" mode which allowed vmwgfx
to run even if it couldn't reserve pci resources. We can just switch
to regular drm helpers instead of keeping the stealth mode alive as
it makes our code a lot cleaner.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Martin Krastev <krastevm@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Link: https://patchwork.freedesktop.org/patch/414043/?series=85516&rev=2
  • Loading branch information
Zack Rusin committed Jan 14, 2021
1 parent 93dd856 commit 31856c8
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 26 deletions.
31 changes: 10 additions & 21 deletions drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include <linux/mem_encrypt.h>

#include <drm/drm_drv.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_ioctl.h>
#include <drm/drm_sysfs.h>
#include <drm/ttm/ttm_bo_driver.h>
Expand Down Expand Up @@ -841,19 +842,9 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
dev->dev_private = dev_priv;

ret = pci_request_regions(pdev, "vmwgfx probe");
dev_priv->stealth = (ret != 0);
if (dev_priv->stealth) {
/**
* Request at least the mmio PCI resource.
*/

DRM_INFO("It appears like vesafb is loaded. "
"Ignore above error if any.\n");
ret = pci_request_region(pdev, 2, "vmwgfx stealth probe");
if (unlikely(ret != 0)) {
DRM_ERROR("Failed reserving the SVGA MMIO resource.\n");
goto out_no_device;
}
if (ret) {
DRM_ERROR("Failed reserving PCI regions.\n");
goto out_no_device;
}

if (dev_priv->capabilities & SVGA_CAP_IRQMASK) {
Expand Down Expand Up @@ -1002,10 +993,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
vmw_irq_uninstall(dev_priv->dev);
out_no_irq:
if (dev_priv->stealth)
pci_release_region(pdev, 2);
else
pci_release_regions(pdev);
pci_release_regions(pdev);
out_no_device:
ttm_object_device_release(&dev_priv->tdev);
out_err4:
Expand Down Expand Up @@ -1054,10 +1042,7 @@ static void vmw_driver_unload(struct drm_device *dev)
vmw_fence_manager_takedown(dev_priv->fman);
if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
vmw_irq_uninstall(dev_priv->dev);
if (dev_priv->stealth)
pci_release_region(pdev, 2);
else
pci_release_regions(pdev);
pci_release_regions(pdev);

ttm_object_device_release(&dev_priv->tdev);
memunmap(dev_priv->mmio_virt);
Expand Down Expand Up @@ -1511,6 +1496,10 @@ static int vmw_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
struct drm_device *dev;
int ret;

ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "svgadrmfb");
if (ret)
return ret;

ret = pci_enable_device(pdev);
if (ret)
return ret;
Expand Down
5 changes: 0 additions & 5 deletions drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -590,11 +590,6 @@ struct vmw_private {
struct mutex cmdbuf_mutex;
struct mutex binding_mutex;

/**
* Operating mode.
*/

bool stealth;
bool enable_fb;
spinlock_t svga_lock;

Expand Down

0 comments on commit 31856c8

Please sign in to comment.