drm/aperture: Pass DRM driver structure instead of driver name
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 29 Jun 2021 13:58:33 +0000 (15:58 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Thu, 1 Jul 2021 09:11:55 +0000 (11:11 +0200)
Print the name of the DRM driver when taking over fbdev devices. Makes
the output to dmesg more consistent. Note that the driver name is only
used for printing a string to the kernel log. No UAPI is affected by this
change.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Nirmoy Das <nirmoy.das@amd.com>
Acked-by: Chen-Yu Tsai <wens@csie.org> # sun4i
Acked-by: Neil Armstrong <narmstrong@baylibre.com> # meson
Link: https://patchwork.freedesktop.org/patch/msgid/20210629135833.22679-1-tzimmermann@suse.de
23 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/drm_aperture.c
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
drivers/gpu/drm/hyperv/hyperv_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/rockchip/rockchip_drm_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
include/drm/drm_aperture.h

index c080ba1..d267311 100644 (file)
@@ -1263,7 +1263,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
 #endif
 
        /* Get rid of things like offb */
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "amdgpudrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &amdgpu_kms_driver);
        if (ret)
                return ret;
 
index 4a64f1b..8e3e98f 100644 (file)
@@ -95,7 +95,7 @@ static int armada_drm_bind(struct device *dev)
        }
 
        /* Remove early framebuffers */
-       ret = drm_aperture_remove_framebuffers(false, "armada-drm-fb");
+       ret = drm_aperture_remove_framebuffers(false, &armada_drm_driver);
        if (ret) {
                dev_err(dev, "[" DRM_NAME ":%s] can't kick out simple-fb: %d\n",
                        __func__, ret);
index 5aa452b..86d5cd7 100644 (file)
@@ -100,7 +100,7 @@ static int ast_remove_conflicting_framebuffers(struct pci_dev *pdev)
        primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW;
 #endif
 
-       return drm_aperture_remove_conflicting_framebuffers(base, size, primary, "astdrmfb");
+       return drm_aperture_remove_conflicting_framebuffers(base, size, primary, &ast_driver);
 }
 
 static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
index c828cad..0d232b4 100644 (file)
@@ -110,7 +110,7 @@ static int bochs_pci_probe(struct pci_dev *pdev,
                return -ENOMEM;
        }
 
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "bochsdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &bochs_driver);
        if (ret)
                return ret;
 
index 9335d9d..9ac39cf 100644 (file)
  *
  * .. code-block:: c
  *
+ *     static const struct drm_driver example_driver = {
+ *             ...
+ *     };
+ *
  *     static int remove_conflicting_framebuffers(struct pci_dev *pdev)
  *     {
  *             bool primary = false;
@@ -46,7 +50,7 @@
  *     #endif
  *
  *             return drm_aperture_remove_conflicting_framebuffers(base, size, primary,
- *                                                                 "example driver");
+ *                                                                 &example_driver);
  *     }
  *
  *     static int probe(struct pci_dev *pdev)
@@ -274,7 +278,7 @@ static void drm_aperture_detach_drivers(resource_size_t base, resource_size_t si
  * @base: the aperture's base address in physical memory
  * @size: aperture size in bytes
  * @primary: also kick vga16fb if present
- * @name: requesting driver name
+ * @req_driver: requesting DRM driver
  *
  * This function removes graphics device drivers which use memory range described by
  * @base and @size.
@@ -283,7 +287,7 @@ static void drm_aperture_detach_drivers(resource_size_t base, resource_size_t si
  * 0 on success, or a negative errno code otherwise
  */
 int drm_aperture_remove_conflicting_framebuffers(resource_size_t base, resource_size_t size,
-                                                bool primary, const char *name)
+                                                bool primary, const struct drm_driver *req_driver)
 {
 #if IS_REACHABLE(CONFIG_FB)
        struct apertures_struct *a;
@@ -296,7 +300,7 @@ int drm_aperture_remove_conflicting_framebuffers(resource_size_t base, resource_
        a->ranges[0].base = base;
        a->ranges[0].size = size;
 
-       ret = remove_conflicting_framebuffers(a, name, primary);
+       ret = remove_conflicting_framebuffers(a, req_driver->name, primary);
        kfree(a);
 
        if (ret)
@@ -312,7 +316,7 @@ EXPORT_SYMBOL(drm_aperture_remove_conflicting_framebuffers);
 /**
  * drm_aperture_remove_conflicting_pci_framebuffers - remove existing framebuffers for PCI devices
  * @pdev: PCI device
- * @name: requesting driver name
+ * @req_driver: requesting DRM driver
  *
  * This function removes graphics device drivers using memory range configured
  * for any of @pdev's memory bars. The function assumes that PCI device with
@@ -321,7 +325,8 @@ EXPORT_SYMBOL(drm_aperture_remove_conflicting_framebuffers);
  * Returns:
  * 0 on success, or a negative errno code otherwise
  */
-int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev, const char *name)
+int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev,
+                                                    const struct drm_driver *req_driver)
 {
        resource_size_t base, size;
        int bar, ret = 0;
@@ -339,7 +344,7 @@ int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev, const
         * otherwise the vga fbdev driver falls over.
         */
 #if IS_REACHABLE(CONFIG_FB)
-       ret = remove_conflicting_pci_framebuffers(pdev, name);
+       ret = remove_conflicting_pci_framebuffers(pdev, req_driver->name);
 #endif
        if (ret == 0)
                ret = vga_remove_vgacon(pdev);
index f8ef711..d262895 100644 (file)
@@ -313,7 +313,7 @@ static int hibmc_pci_probe(struct pci_dev *pdev,
        struct drm_device *dev;
        int ret;
 
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "hibmcdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &hibmc_driver);
        if (ret)
                return ret;
 
index eb06c92..cd818a6 100644 (file)
@@ -82,7 +82,7 @@ static int hyperv_setup_gen1(struct hyperv_drm_device *hv)
                return -ENODEV;
        }
 
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "hypervdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &hyperv_driver);
        if (ret) {
                drm_err(dev, "Not able to remove boot fb\n");
                return ret;
@@ -127,7 +127,7 @@ static int hyperv_setup_gen2(struct hyperv_drm_device *hv,
        drm_aperture_remove_conflicting_framebuffers(screen_info.lfb_base,
                                                     screen_info.lfb_size,
                                                     false,
-                                                    "hypervdrmfb");
+                                                    &hyperv_driver);
 
        hv->fb_size = (unsigned long)hv->mmio_megabytes * 1024 * 1024;
 
index 850b499..62327c1 100644 (file)
@@ -562,7 +562,7 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
        if (ret)
                goto err_perf;
 
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "inteldrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, dev_priv->drm.driver);
        if (ret)
                goto err_ggtt;
 
index 66de3f4..4f9bc37 100644 (file)
@@ -285,7 +285,7 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
         * Remove early framebuffers (ie. simplefb). The framebuffer can be
         * located anywhere in RAM
         */
-       ret = drm_aperture_remove_framebuffers(false, "meson-drm-fb");
+       ret = drm_aperture_remove_framebuffers(false, &meson_driver);
        if (ret)
                goto free_drm;
 
index a701d95..36d1bfb 100644 (file)
@@ -342,7 +342,7 @@ mgag200_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct drm_device *dev;
        int ret;
 
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "mgag200drmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &mgag200_driver);
        if (ret)
                return ret;
 
index 2274040..67fae60 100644 (file)
@@ -169,7 +169,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev)
        }
 
        /* the fw fb could be anywhere in memory */
-       ret = drm_aperture_remove_framebuffers(false, "msm");
+       ret = drm_aperture_remove_framebuffers(false, dev->driver);
        if (ret)
                goto fini;
 
index 1cb14e9..5e1ff87 100644 (file)
@@ -736,7 +736,7 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
        nvkm_device_del(&device);
 
        /* Remove conflicting drivers (vesafb, efifb etc). */
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "nouveaufb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &driver_pci);
        if (ret)
                return ret;
 
index 854e6c5..31f4c86 100644 (file)
@@ -95,7 +95,7 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (ret)
                return ret;
 
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "qxl");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &qxl_driver);
        if (ret)
                goto disable_pci;
 
index 8cd135f..82ee824 100644 (file)
@@ -330,7 +330,7 @@ static int radeon_pci_probe(struct pci_dev *pdev,
                return -EPROBE_DEFER;
 
        /* Get rid of things like offb */
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "radeondrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &kms_driver);
        if (ret)
                return ret;
 
index c8e60fd..bfba979 100644 (file)
@@ -116,7 +116,7 @@ static int rockchip_drm_bind(struct device *dev)
        int ret;
 
        /* Remove existing drivers that may own the framebuffer memory. */
-       ret = drm_aperture_remove_framebuffers(false, "rockchip-drm-fb");
+       ret = drm_aperture_remove_framebuffers(false, &rockchip_drm_driver);
        if (ret) {
                DRM_DEV_ERROR(dev,
                              "Failed to remove existing framebuffers - %d.\n",
index 570f3af..54dd562 100644 (file)
@@ -98,7 +98,7 @@ static int sun4i_drv_bind(struct device *dev)
                goto cleanup_mode_config;
 
        /* Remove early framebuffers (ie. simplefb) */
-       ret = drm_aperture_remove_framebuffers(false, "sun4i-drm-fb");
+       ret = drm_aperture_remove_framebuffers(false, &sun4i_drv_driver);
        if (ret)
                goto cleanup_mode_config;
 
index 8d27c21..8c6069b 100644 (file)
@@ -1197,7 +1197,7 @@ static int host1x_drm_probe(struct host1x_device *dev)
 
        drm_mode_config_reset(drm);
 
-       err = drm_aperture_remove_framebuffers(false, "tegradrmfb");
+       err = drm_aperture_remove_framebuffers(false, &tegra_drm_driver);
        if (err < 0)
                goto hub;
 
index 42611da..a8b476a 100644 (file)
@@ -550,7 +550,7 @@ static int cirrus_pci_probe(struct pci_dev *pdev,
        struct cirrus_device *cirrus;
        int ret;
 
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "cirrusdrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &cirrus_driver);
        if (ret)
                return ret;
 
index 6d4b32d..879a244 100644 (file)
@@ -43,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_aperture_remove_conflicting_pci_framebuffers(pdev, "vboxvideodrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &driver);
        if (ret)
                return ret;
 
index 8a60fb8..73335fe 100644 (file)
@@ -265,7 +265,7 @@ static int vc4_drm_bind(struct device *dev)
        if (ret)
                goto unbind_all;
 
-       ret = drm_aperture_remove_framebuffers(false, "vc4drmfb");
+       ret = drm_aperture_remove_framebuffers(false, &vc4_drm_driver);
        if (ret)
                goto unbind_all;
 
index ca77edb..ed85a78 100644 (file)
@@ -57,7 +57,7 @@ static int virtio_gpu_pci_quirk(struct drm_device *dev, struct virtio_device *vd
                 vga ? "virtio-vga" : "virtio-gpu-pci",
                 pname);
        if (vga) {
-               ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "virtiodrmfb");
+               ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &driver);
                if (ret)
                        return ret;
        }
index 086dc75..40864ce 100644 (file)
@@ -1574,7 +1574,7 @@ static int vmw_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct vmw_private *vmw;
        int ret;
 
-       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "svgadrmfb");
+       ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &driver);
        if (ret)
                return ret;
 
index 6c14807..7096703 100644 (file)
@@ -6,20 +6,22 @@
 #include <linux/types.h>
 
 struct drm_device;
+struct drm_driver;
 struct pci_dev;
 
 int devm_aperture_acquire_from_firmware(struct drm_device *dev, resource_size_t base,
                                        resource_size_t size);
 
 int drm_aperture_remove_conflicting_framebuffers(resource_size_t base, resource_size_t size,
-                                                bool primary, const char *name);
+                                                bool primary, const struct drm_driver *req_driver);
 
-int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev, const char *name);
+int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev,
+                                                    const struct drm_driver *req_driver);
 
 /**
  * drm_aperture_remove_framebuffers - remove all existing framebuffers
  * @primary: also kick vga16fb if present
- * @name: requesting driver name
+ * @req_driver: requesting DRM driver
  *
  * This function removes all graphics device drivers. Use this function on systems
  * that can have their framebuffer located anywhere in memory.
@@ -27,9 +29,11 @@ int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev, const
  * Returns:
  * 0 on success, or a negative errno code otherwise
  */
-static inline int drm_aperture_remove_framebuffers(bool primary, const char *name)
+static inline int
+drm_aperture_remove_framebuffers(bool primary, const struct drm_driver *req_driver)
 {
-       return drm_aperture_remove_conflicting_framebuffers(0, (resource_size_t)-1, primary, name);
+       return drm_aperture_remove_conflicting_framebuffers(0, (resource_size_t)-1, primary,
+                                                           req_driver);
 }
 
 #endif