drm/aperture: Convert drivers to aperture interfaces
authorThomas Zimmermann <tzimmermann@suse.de>
Mon, 12 Apr 2021 13:10:42 +0000 (15:10 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Wed, 14 Apr 2021 07:00:04 +0000 (09:00 +0200)
Mass-convert all drivers from FB helpers to aperture interfaces. No
functional changes besides checking for returned errno codes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210412131043.5787-3-tzimmermann@suse.de
19 files changed:
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
drivers/gpu/drm/armada/armada_drv.c
drivers/gpu/drm/ast/ast_drv.c
drivers/gpu/drm/bochs/bochs_drv.c
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/meson/meson_drv.c
drivers/gpu/drm/mgag200/mgag200_drv.c
drivers/gpu/drm/msm/msm_fbdev.c
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/qxl/qxl_drv.c
drivers/gpu/drm/radeon/radeon_drv.c
drivers/gpu/drm/sun4i/sun4i_drv.c
drivers/gpu/drm/tegra/drm.c
drivers/gpu/drm/tiny/cirrus.c
drivers/gpu/drm/vboxvideo/vbox_drv.c
drivers/gpu/drm/vc4/vc4_drv.c
drivers/gpu/drm/virtio/virtgpu_drv.c
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c

index b26e2fd1c538433899a2f9ec8249317c8543e258..671ec1002230f288508a4305d16cd5c2aa5b447e 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include <drm/amdgpu_drm.h>
+#include <drm/drm_aperture.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_gem.h>
 #include <drm/drm_vblank.h>
@@ -1196,7 +1197,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
 #endif
 
        /* Get rid of things like offb */
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "amdgpudrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "amdgpudrmfb");
        if (ret)
                return ret;
 
index 44fe9f994fc5ca591f9e997ca352876a0db71791..dab0a1f0983bc0d1d373c77f34e0d363413eb773 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/of_graph.h>
 #include <linux/platform_device.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_ioctl.h>
@@ -94,9 +95,7 @@ static int armada_drm_bind(struct device *dev)
        }
 
        /* Remove early framebuffers */
-       ret = drm_fb_helper_remove_conflicting_framebuffers(NULL,
-                                                           "armada-drm-fb",
-                                                           false);
+       ret = drm_aperture_remove_framebuffers(false, "armada-drm-fb");
        if (ret) {
                dev_err(dev, "[" DRM_NAME ":%s] can't kick out simple-fb: %d\n",
                        __func__, ret);
index 01837bea18c251b9b7dcb64a553a0c08e579a1f4..5aa452b4efe690173c1b65e1c97be648b60650b8 100644 (file)
 #include <linux/module.h>
 #include <linux/pci.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
-#include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_vram_helper.h>
 #include <drm/drm_probe_helper.h>
 
@@ -89,23 +89,18 @@ static const struct pci_device_id ast_pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, ast_pciidlist);
 
-static void ast_kick_out_firmware_fb(struct pci_dev *pdev)
+static int ast_remove_conflicting_framebuffers(struct pci_dev *pdev)
 {
-       struct apertures_struct *ap;
        bool primary = false;
+       resource_size_t base, size;
 
-       ap = alloc_apertures(1);
-       if (!ap)
-               return;
-
-       ap->ranges[0].base = pci_resource_start(pdev, 0);
-       ap->ranges[0].size = pci_resource_len(pdev, 0);
-
+       base = pci_resource_start(pdev, 0);
+       size = pci_resource_len(pdev, 0);
 #ifdef CONFIG_X86
        primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW;
 #endif
-       drm_fb_helper_remove_conflicting_framebuffers(ap, "astdrmfb", primary);
-       kfree(ap);
+
+       return drm_aperture_remove_conflicting_framebuffers(base, size, primary, "astdrmfb");
 }
 
 static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
@@ -114,7 +109,9 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct drm_device *dev;
        int ret;
 
-       ast_kick_out_firmware_fb(pdev);
+       ret = ast_remove_conflicting_framebuffers(pdev);
+       if (ret)
+               return ret;
 
        ret = pcim_enable_device(pdev);
        if (ret)
index b469624fe40dee985d67a76ba3a44a0dbf153bfb..c828cadbabff20c49ae24bb9c763dbb1ef01c0fc 100644 (file)
@@ -6,6 +6,7 @@
 #include <linux/pci.h>
 
 #include <drm/drm_drv.h>
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_managed.h>
 
@@ -109,7 +110,7 @@ static int bochs_pci_probe(struct pci_dev *pdev,
                return -ENOMEM;
        }
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "bochsdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "bochsdrmfb");
        if (ret)
                return ret;
 
index 89edc796deda28e000fe3421b290514509cd869d..f4bc5386574afefe774bce9f8b03965a2bcba0be 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/pci.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_gem_framebuffer_helper.h>
@@ -313,8 +314,7 @@ static int hibmc_pci_probe(struct pci_dev *pdev,
        struct drm_device *dev;
        int ret;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev,
-                                                               "hibmcdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "hibmcdrmfb");
        if (ret)
                return ret;
 
index 8e9cb44e66e530914801b1a43c5c5a454efe41ab..e1ae7b804c0146e40172cafb37a012e3289d10c9 100644 (file)
@@ -40,6 +40,7 @@
 #include <linux/vt.h>
 #include <acpi/video.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_ioctl.h>
 #include <drm/drm_irq.h>
@@ -557,7 +558,7 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
        if (ret)
                goto err_perf;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "inteldrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "inteldrmfb");
        if (ret)
                goto err_ggtt;
 
index 453d8b4c5763d9b65665ad8cca3ab0dfd0d8f4b2..66de3f4f72226121106ef48e1ca17a78a8895cf9 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/platform_device.h>
 #include <linux/soc/amlogic/meson-canvas.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
@@ -156,23 +157,6 @@ static void meson_vpu_init(struct meson_drm *priv)
        writel_relaxed(value, priv->io_base + _REG(VPU_WRARB_MODE_L2C1));
 }
 
-static void meson_remove_framebuffers(void)
-{
-       struct apertures_struct *ap;
-
-       ap = alloc_apertures(1);
-       if (!ap)
-               return;
-
-       /* The framebuffer can be located anywhere in RAM */
-       ap->ranges[0].base = 0;
-       ap->ranges[0].size = ~0;
-
-       drm_fb_helper_remove_conflicting_framebuffers(ap, "meson-drm-fb",
-                                                     false);
-       kfree(ap);
-}
-
 struct meson_drm_soc_attr {
        struct meson_drm_soc_limits limits;
        const struct soc_device_attribute *attrs;
@@ -297,8 +281,13 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
                }
        }
 
-       /* Remove early framebuffers (ie. simplefb) */
-       meson_remove_framebuffers();
+       /*
+        * Remove early framebuffers (ie. simplefb). The framebuffer can be
+        * located anywhere in RAM
+        */
+       ret = drm_aperture_remove_framebuffers(false, "meson-drm-fb");
+       if (ret)
+               goto free_drm;
 
        ret = drmm_mode_config_init(drm);
        if (ret)
index 4e4c105f9a50865d62139440bf6722b17ed80bb5..a701d956325717fb2bf99f0fc93cc325388f209e 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/pci.h>
 #include <linux/vmalloc.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_file.h>
 #include <drm/drm_ioctl.h>
@@ -341,7 +342,9 @@ mgag200_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct drm_device *dev;
        int ret;
 
-       drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "mgag200drmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "mgag200drmfb");
+       if (ret)
+               return ret;
 
        ret = pcim_enable_device(pdev);
        if (ret)
index 678dba1725a6321ca065bd1dba5a8a5edfca7954..227404077e39127fddb4c722c3ec9cc050d844c6 100644 (file)
@@ -4,6 +4,7 @@
  * Author: Rob Clark <robdclark@gmail.com>
  */
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
@@ -168,7 +169,9 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev)
        }
 
        /* the fw fb could be anywhere in memory */
-       drm_fb_helper_remove_conflicting_framebuffers(NULL, "msm", false);
+       ret = drm_aperture_remove_framebuffers(false, "msm");
+       if (ret)
+               goto fini;
 
        ret = drm_fb_helper_initial_config(helper, 32);
        if (ret)
index 9766218a99ca4154c4755f6d944a2cd81e889a8c..3204fc0a90d26b93ea106929f14624b9a027580f 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/vga_switcheroo.h>
 #include <linux/mmu_notifier.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_gem_ttm_helper.h>
 #include <drm/drm_ioctl.h>
@@ -737,7 +738,7 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
        nvkm_device_del(&device);
 
        /* Remove conflicting drivers (vesafb, efifb etc). */
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "nouveaufb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "nouveaufb");
        if (ret)
                return ret;
 
index db92eec07d969e6f76289616ac3e3870afc4f1f4..bba0fc39028cd7548360854f2e1d76e0ccb7f303 100644 (file)
  */
 
 #include "qxl_drv.h"
+
 #include <linux/console.h>
 #include <linux/module.h>
 #include <linux/pci.h>
+#include <linux/vgaarb.h>
 
 #include <drm/drm.h>
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_file.h>
@@ -93,7 +96,7 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (ret)
                return ret;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "qxl");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "qxl");
        if (ret)
                goto disable_pci;
 
index efeb115ae70ece1ccb52dcfd877cb9e7e2d01820..8885e849717d929a6ee73620a4476b5d25c38bb5 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/mmu_notifier.h>
 #include <linux/pci.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_agpsupport.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
@@ -330,7 +331,7 @@ static int radeon_pci_probe(struct pci_dev *pdev,
                return -EPROBE_DEFER;
 
        /* Get rid of things like offb */
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "radeondrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "radeondrmfb");
        if (ret)
                return ret;
 
index 91502937f26d4fba84bac97664c41121de8b0a62..af335f58bdfc3723893c560875c7a937db7fb054 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/of_reserved_mem.h>
 #include <linux/platform_device.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_cma_helper.h>
@@ -99,7 +100,9 @@ static int sun4i_drv_bind(struct device *dev)
        drm->irq_enabled = true;
 
        /* Remove early framebuffers (ie. simplefb) */
-       drm_fb_helper_remove_conflicting_framebuffers(NULL, "sun4i-drm-fb", false);
+       ret = drm_aperture_remove_framebuffers(false, "sun4i-drm-fb");
+       if (ret)
+               goto cleanup_mode_config;
 
        sun4i_framebuffer_init(drm);
 
index 90709c38c993245bc9148365fdb01ee2df221405..e32c0dcf2762c78c6b20d04892b3925f58aaf17b 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_debugfs.h>
@@ -1198,8 +1199,7 @@ static int host1x_drm_probe(struct host1x_device *dev)
 
        drm_mode_config_reset(drm);
 
-       err = drm_fb_helper_remove_conflicting_framebuffers(NULL, "tegradrmfb",
-                                                           false);
+       err = drm_aperture_remove_framebuffers(false, "tegradrmfb");
        if (err < 0)
                goto hub;
 
index ad922c3ec681501eba2ed906856f0e615a41d423..e3afb45d9a5c1caaba203d02f724e8859297863c 100644 (file)
@@ -24,6 +24,7 @@
 #include <video/cirrus.h>
 #include <video/vga.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_atomic_state_helper.h>
 #include <drm/drm_connector.h>
@@ -549,7 +550,7 @@ static int cirrus_pci_probe(struct pci_dev *pdev,
        struct cirrus_device *cirrus;
        int ret;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "cirrusdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "cirrusdrmfb");
        if (ret)
                return ret;
 
index e534896b6cfd16f1e4dcb680260f5565b35cadf2..6d4b32da9866245b45a1932d339393f0e718b23d 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/pci.h>
 #include <linux/vt_kern.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
@@ -42,7 +43,7 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (!vbox_check_supported(VBE_DISPI_ID_HGSMI))
                return -ENODEV;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "vboxvideodrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "vboxvideodrmfb");
        if (ret)
                return ret;
 
index 556ad0f02a0db56913f3dc2ade1984b6c1308ac9..68ac0e7489a9845bee7fbad6ea05200e9ba1b31a 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_cma_helper.h>
@@ -266,7 +267,9 @@ static int vc4_drm_bind(struct device *dev)
        if (ret)
                goto unbind_all;
 
-       drm_fb_helper_remove_conflicting_framebuffers(NULL, "vc4drmfb", false);
+       ret = drm_aperture_remove_framebuffers(false, "vc4drmfb");
+       if (ret)
+               goto unbind_all;
 
        ret = vc4_kms_load(drm);
        if (ret < 0)
index a21dc3ad6f88802ffa72ecb75ecaee70b387bcdc..33bf5f53ae31c0c0aace25c192d7471dc4513ae5 100644 (file)
@@ -31,6 +31,7 @@
 #include <linux/pci.h>
 
 #include <drm/drm.h>
+#include <drm/drm_aperture.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_file.h>
@@ -50,13 +51,16 @@ static int virtio_gpu_pci_quirk(struct drm_device *dev, struct virtio_device *vd
        const char *pname = dev_name(&pdev->dev);
        bool vga = (pdev->class >> 8) == PCI_CLASS_DISPLAY_VGA;
        char unique[20];
+       int ret;
 
        DRM_INFO("pci: %s detected at %s\n",
                 vga ? "virtio-vga" : "virtio-gpu-pci",
                 pname);
-       if (vga)
-               drm_fb_helper_remove_conflicting_pci_framebuffers(pdev,
-                                                                 "virtiodrmfb");
+       if (vga) {
+               ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "virtiodrmfb");
+               if (ret)
+                       return ret;
+       }
 
        /*
         * Normally the drm_dev_set_unique() call is done by core DRM.
index 4e41d8221f069afe6517a2b78ec78a932ed04b73..997dadce3a73e017f111456c55589bc5f9105f27 100644 (file)
@@ -31,8 +31,8 @@
 #include <linux/pci.h>
 #include <linux/mem_encrypt.h>
 
+#include <drm/drm_aperture.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>
@@ -1491,7 +1491,7 @@ static int vmw_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct vmw_private *vmw;
        int ret;
 
-       ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "svgadrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "svgadrmfb");
        if (ret)
                return ret;