Commit 31856c8c authored by Zack Rusin's avatar Zack Rusin

drm/vmwgfx: Remove stealth mode

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: default avatarZack Rusin <zackr@vmware.com>
Reviewed-by: default avatarMartin Krastev <krastevm@vmware.com>
Reviewed-by: default avatarRoland Scheidegger <sroland@vmware.com>
Link: https://patchwork.freedesktop.org/patch/414043/?series=85516&rev=2
parent 93dd8561
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <linux/mem_encrypt.h> #include <linux/mem_encrypt.h>
#include <drm/drm_drv.h> #include <drm/drm_drv.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_ioctl.h> #include <drm/drm_ioctl.h>
#include <drm/drm_sysfs.h> #include <drm/drm_sysfs.h>
#include <drm/ttm/ttm_bo_driver.h> #include <drm/ttm/ttm_bo_driver.h>
...@@ -841,19 +842,9 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) ...@@ -841,19 +842,9 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
dev->dev_private = dev_priv; dev->dev_private = dev_priv;
ret = pci_request_regions(pdev, "vmwgfx probe"); ret = pci_request_regions(pdev, "vmwgfx probe");
dev_priv->stealth = (ret != 0); if (ret) {
if (dev_priv->stealth) { DRM_ERROR("Failed reserving PCI regions.\n");
/** goto out_no_device;
* 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 (dev_priv->capabilities & SVGA_CAP_IRQMASK) { if (dev_priv->capabilities & SVGA_CAP_IRQMASK) {
...@@ -1002,10 +993,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) ...@@ -1002,10 +993,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
if (dev_priv->capabilities & SVGA_CAP_IRQMASK) if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
vmw_irq_uninstall(dev_priv->dev); vmw_irq_uninstall(dev_priv->dev);
out_no_irq: out_no_irq:
if (dev_priv->stealth) pci_release_regions(pdev);
pci_release_region(pdev, 2);
else
pci_release_regions(pdev);
out_no_device: out_no_device:
ttm_object_device_release(&dev_priv->tdev); ttm_object_device_release(&dev_priv->tdev);
out_err4: out_err4:
...@@ -1054,10 +1042,7 @@ static void vmw_driver_unload(struct drm_device *dev) ...@@ -1054,10 +1042,7 @@ static void vmw_driver_unload(struct drm_device *dev)
vmw_fence_manager_takedown(dev_priv->fman); vmw_fence_manager_takedown(dev_priv->fman);
if (dev_priv->capabilities & SVGA_CAP_IRQMASK) if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
vmw_irq_uninstall(dev_priv->dev); vmw_irq_uninstall(dev_priv->dev);
if (dev_priv->stealth) pci_release_regions(pdev);
pci_release_region(pdev, 2);
else
pci_release_regions(pdev);
ttm_object_device_release(&dev_priv->tdev); ttm_object_device_release(&dev_priv->tdev);
memunmap(dev_priv->mmio_virt); memunmap(dev_priv->mmio_virt);
...@@ -1511,6 +1496,10 @@ static int vmw_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -1511,6 +1496,10 @@ static int vmw_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
struct drm_device *dev; struct drm_device *dev;
int ret; int ret;
ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "svgadrmfb");
if (ret)
return ret;
ret = pci_enable_device(pdev); ret = pci_enable_device(pdev);
if (ret) if (ret)
return ret; return ret;
......
...@@ -590,11 +590,6 @@ struct vmw_private { ...@@ -590,11 +590,6 @@ struct vmw_private {
struct mutex cmdbuf_mutex; struct mutex cmdbuf_mutex;
struct mutex binding_mutex; struct mutex binding_mutex;
/**
* Operating mode.
*/
bool stealth;
bool enable_fb; bool enable_fb;
spinlock_t svga_lock; spinlock_t svga_lock;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment