]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
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 c080ba15ae775bbfbfb1cf5376ef8cd6f06bb4de..d2673119e0d1e69140e5732808e206390267905d 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 4a64f1b9ec4de78287aae634ef65bff44bae6da6..8e3e98f13db49bb2f9d815a2b1bd7b6046bf5625 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 5aa452b4efe690173c1b65e1c97be648b60650b8..86d5cd7b6318ca1eaeee08f25e69619b6a07d3a4 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 c828cadbabff20c49ae24bb9c763dbb1ef01c0fc..0d232b44ecd780e491d5a4e101cec178eebf0e5b 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 9335d9d6cf9ae82c219276e6847fbbcf8e4c2852..9ac39cf1169445331f24907eba18c0dd934252c3 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 f8ef711bbe5dadd837e19099bfc09ed5239c0550..d2628956dca3fc9bdbeb3966155581917e9c1d55 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 eb06c92c4bfdc2f280934fee8b2c71a61e064a5b..cd818a6291835d93412337e01a9d31b2e5caf7f0 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 850b499c71c8e0b4ca7f8e79f13670c35c18012e..62327c15f4572299603e0bc65bf6e96c10182b6c 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 66de3f4f72226121106ef48e1ca17a78a8895cf9..4f9bc3793744be7ec6509f755c1bfa355dc1bf3c 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 a701d956325717fb2bf99f0fc93cc325388f209e..36d1bfb3213f4f1f5835f3ce1ca2b29c7603a681 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 227404077e39127fddb4c722c3ec9cc050d844c6..67fae60f2fa525f29ed48a211a6ab0fc4e96cbc1 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 1cb14e99a60c47ebf3471b3e31f831ebad23e147..5e1ff870823b28964d070ba0caad5eb132e37936 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 854e6c5a563ffdf045f1017d625a7a5bf107ea1b..31f4c86ceb99c5c02122c778fd71064372f28c93 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 8cd135fa6dcd7357faf7351546ff08ab0b8c78c2..82ee8244c9b37cccf5035db29b15fdfeccdfdc1b 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 c8e60fd9ff242f92eb16d8412634e5257e690ca7..bfba9793d238db3d4da02c40b50fb13a5c640099 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 570f3af25e8626b7789818d43f091efe7ec02f57..54dd562e294ce356a898bdbebf0f67d65bff5d58 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 8d27c21ddf48a3e0ebe9205a00fa98b693266aa6..8c6069b33160ea3da8421791b7cf43ed115ab1d0 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 42611dacde8802a81d7507bca4f6285d4bb26c85..a8b476a59c0d5081f1207c365307f931a5986780 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 6d4b32da9866245b45a1932d339393f0e718b23d..879a2445cc443f7d05b08c6b228c01e56afe8d9e 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 8a60fb8ad3708fe39c2df9f19b91ea02e3cf1507..73335feb712f9de24f728e1410a3b3f7b9e8063a 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 ca77edbc5ea0ab023eb5273313dd6cf5b774461f..ed85a78632563e366bf9b6bde7baa7bc7a566ecb 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 086dc75e7b42bd2730c67a5a6dfdf7e29117c4d9..40864ce19ae1838d5d72f292224eba2324aa4dfa 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 6c148078780c76287d67d96bbcafe1fdce9eb24d..7096703c3949348710f8b4c3afbc13541c4f65c2 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