[Public] > -----Original Message----- > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Thomas > Zimmermann > Sent: Monday, September 30, 2024 9:03 AM > To: javierm@xxxxxxxxxx; airlied@xxxxxxxxx; simona@xxxxxxxx; > maarten.lankhorst@xxxxxxxxxxxxxxx; mripard@xxxxxxxxxx > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx; amd-gfx@xxxxxxxxxxxxxxxxxxxxx; intel- > gfx@xxxxxxxxxxxxxxxxxxxxx; intel-xe@xxxxxxxxxxxxxxxxxxxxx; Thomas Zimmermann > <tzimmermann@xxxxxxx>; Jonathan Corbet <corbet@xxxxxxx> > Subject: [PATCH 28/28] drm: Remove DRM aperture helpers > > The DRM aperture helpers are wrappers around video helpers from > <linux/aperture.h>. There are no callers of these functions. Remove them entirely. > > Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx> > Cc: Jonathan Corbet <corbet@xxxxxxx> Series is: Acked-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > Documentation/gpu/drm-internals.rst | 12 -- > MAINTAINERS | 2 - > drivers/gpu/drm/Makefile | 1 - > drivers/gpu/drm/drm_aperture.c | 192 ---------------------------- > include/drm/drm_aperture.h | 38 ------ > 5 files changed, 245 deletions(-) > delete mode 100644 drivers/gpu/drm/drm_aperture.c delete mode 100644 > include/drm/drm_aperture.h > > diff --git a/Documentation/gpu/drm-internals.rst b/Documentation/gpu/drm- > internals.rst > index 11d9a5730fb2..cb9ae282771c 100644 > --- a/Documentation/gpu/drm-internals.rst > +++ b/Documentation/gpu/drm-internals.rst > @@ -75,18 +75,6 @@ Module Initialization .. kernel-doc:: > include/drm/drm_module.h > :doc: overview > > -Managing Ownership of the Framebuffer Aperture > ----------------------------------------------- > - > -.. kernel-doc:: drivers/gpu/drm/drm_aperture.c > - :doc: overview > - > -.. kernel-doc:: include/drm/drm_aperture.h > - :internal: > - > -.. kernel-doc:: drivers/gpu/drm/drm_aperture.c > - :export: > - > Device Instance and Driver Handling > ----------------------------------- > > diff --git a/MAINTAINERS b/MAINTAINERS > index 5a0b7bfb6315..e71e12085a9f 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -7097,12 +7097,10 @@ M: Javier Martinez Canillas <javierm@xxxxxxxxxx> > L: dri-devel@xxxxxxxxxxxxxxxxxxxxx > S: Maintained > T: git https://gitlab.freedesktop.org/drm/misc/kernel.git > -F: drivers/gpu/drm/drm_aperture.c > F: drivers/gpu/drm/tiny/ofdrm.c > F: drivers/gpu/drm/tiny/simpledrm.c > F: drivers/video/aperture.c > F: drivers/video/nomodeset.c > -F: include/drm/drm_aperture.h > F: include/linux/aperture.h > F: include/video/nomodeset.h > > diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile index > 3894f43f6d47..31d8bf60a2fd 100644 > --- a/drivers/gpu/drm/Makefile > +++ b/drivers/gpu/drm/Makefile > @@ -34,7 +34,6 @@ endif > subdir-ccflags-$(CONFIG_DRM_WERROR) += -Werror > > drm-y := \ > - drm_aperture.o \ > drm_atomic.o \ > drm_atomic_uapi.o \ > drm_auth.o \ > diff --git a/drivers/gpu/drm/drm_aperture.c b/drivers/gpu/drm/drm_aperture.c deleted > file mode 100644 index 5729f3bb4398..000000000000 > --- a/drivers/gpu/drm/drm_aperture.c > +++ /dev/null > @@ -1,192 +0,0 @@ > -// SPDX-License-Identifier: MIT > - > -#include <linux/aperture.h> > -#include <linux/platform_device.h> > - > -#include <drm/drm_aperture.h> > -#include <drm/drm_drv.h> > -#include <drm/drm_print.h> > - > -/** > - * DOC: overview > - * > - * A graphics device might be supported by different drivers, but only one > - * driver can be active at any given time. Many systems load a generic > - * graphics drivers, such as EFI-GOP or VESA, early during the boot process. > - * During later boot stages, they replace the generic driver with a dedicated, > - * hardware-specific driver. To take over the device the dedicated driver > - * first has to remove the generic driver. DRM aperture functions manage > - * ownership of DRM framebuffer memory and hand-over between drivers. > - * > - * DRM drivers should call drm_aperture_remove_conflicting_framebuffers() > - * at the top of their probe function. The function removes any generic > - * driver that is currently associated with the given framebuffer memory. > - * If the framebuffer is located at PCI BAR 0, the rsp code looks as in the > - * example given below. > - * > - * .. code-block:: c > - * > - * static const struct drm_driver example_driver = { > - * ... > - * }; > - * > - * static int remove_conflicting_framebuffers(struct pci_dev *pdev) > - * { > - * resource_size_t base, size; > - * int ret; > - * > - * base = pci_resource_start(pdev, 0); > - * size = pci_resource_len(pdev, 0); > - * > - * return drm_aperture_remove_conflicting_framebuffers(base, size, > - * &example_driver); > - * } > - * > - * static int probe(struct pci_dev *pdev) > - * { > - * int ret; > - * > - * // Remove any generic drivers... > - * ret = remove_conflicting_framebuffers(pdev); > - * if (ret) > - * return ret; > - * > - * // ... and initialize the hardware. > - * ... > - * > - * drm_dev_register(); > - * > - * return 0; > - * } > - * > - * PCI device drivers should call > - * drm_aperture_remove_conflicting_pci_framebuffers() and let it detect the > - * framebuffer apertures automatically. Device drivers without knowledge of > - * the framebuffer's location shall call drm_aperture_remove_framebuffers(), > - * which removes all drivers for known framebuffer. > - * > - * Drivers that are susceptible to being removed by other drivers, such as > - * generic EFI or VESA drivers, have to register themselves as owners of their > - * given framebuffer memory. Ownership of the framebuffer memory is achieved > - * by calling devm_aperture_acquire_from_firmware(). On success, the driver > - * is the owner of the framebuffer range. The function fails if the > - * framebuffer is already owned by another driver. See below for an example. > - * > - * .. code-block:: c > - * > - * static int acquire_framebuffers(struct drm_device *dev, struct platform_device > *pdev) > - * { > - * resource_size_t base, size; > - * > - * mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - * if (!mem) > - * return -EINVAL; > - * base = mem->start; > - * size = resource_size(mem); > - * > - * return devm_acquire_aperture_from_firmware(dev, base, size); > - * } > - * > - * static int probe(struct platform_device *pdev) > - * { > - * struct drm_device *dev; > - * int ret; > - * > - * // ... Initialize the device... > - * dev = devm_drm_dev_alloc(); > - * ... > - * > - * // ... and acquire ownership of the framebuffer. > - * ret = acquire_framebuffers(dev, pdev); > - * if (ret) > - * return ret; > - * > - * drm_dev_register(dev, 0); > - * > - * return 0; > - * } > - * > - * The generic driver is now subject to forced removal by other drivers. This > - * only works for platform drivers that support hot unplug. > - * When a driver calls drm_aperture_remove_conflicting_framebuffers() et al. > - * for the registered framebuffer range, the aperture helpers call > - * platform_device_unregister() and the generic driver unloads itself. It > - * may not access the device's registers, framebuffer memory, ROM, etc > - * afterwards. > - */ > - > -/** > - * devm_aperture_acquire_from_firmware - Acquires ownership of a firmware > framebuffer > - * on behalf of a DRM driver. > - * @dev: the DRM device to own the framebuffer memory > - * @base: the framebuffer's byte offset in physical memory > - * @size: the framebuffer size in bytes > - * > - * Installs the given device as the new owner of the framebuffer. The function > - * expects the framebuffer to be provided by a platform device that has been > - * set up by firmware. Firmware can be any generic interface, such as EFI, > - * VESA, VGA, etc. If the native hardware driver takes over ownership of the > - * framebuffer range, the firmware state gets lost. Aperture helpers will then > - * unregister the platform device automatically. Acquired apertures are > - * released automatically if the underlying device goes away. > - * > - * The function fails if the framebuffer range, or parts of it, is currently > - * owned by another driver. To evict current owners, callers should use > - * drm_aperture_remove_conflicting_framebuffers() et al. before calling this > - * function. The function also fails if the given device is not a platform > - * device. > - * > - * Returns: > - * 0 on success, or a negative errno value otherwise. > - */ > -int devm_aperture_acquire_from_firmware(struct drm_device *dev, resource_size_t > base, > - resource_size_t size) > -{ > - struct platform_device *pdev; > - > - if (drm_WARN_ON(dev, !dev_is_platform(dev->dev))) > - return -EINVAL; > - > - pdev = to_platform_device(dev->dev); > - > - return devm_aperture_acquire_for_platform_device(pdev, base, size); > -} > -EXPORT_SYMBOL(devm_aperture_acquire_from_firmware); > - > -/** > - * drm_aperture_remove_conflicting_framebuffers - remove existing framebuffers in > the given range > - * @base: the aperture's base address in physical memory > - * @size: aperture size in bytes > - * @req_driver: requesting DRM driver > - * > - * This function removes graphics device drivers which use the memory range > described by > - * @base and @size. > - * > - * Returns: > - * 0 on success, or a negative errno code otherwise > - */ > -int drm_aperture_remove_conflicting_framebuffers(resource_size_t base, > resource_size_t size, > - const struct drm_driver *req_driver) > -{ > - return aperture_remove_conflicting_devices(base, size, req_driver->name); > -} > -EXPORT_SYMBOL(drm_aperture_remove_conflicting_framebuffers); > - > -/** > - * drm_aperture_remove_conflicting_pci_framebuffers - remove existing > framebuffers for PCI devices > - * @pdev: PCI device > - * @req_driver: requesting DRM driver > - * > - * This function removes graphics device drivers using the memory range > configured > - * for any of @pdev's memory bars. The function assumes that a PCI device with > - * shadowed ROM drives a primary display and so kicks out vga16fb. > - * > - * Returns: > - * 0 on success, or a negative errno code otherwise > - */ > -int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev, > - const struct drm_driver *req_driver) > -{ > - return aperture_remove_conflicting_pci_devices(pdev, req_driver->name); > -} > -EXPORT_SYMBOL(drm_aperture_remove_conflicting_pci_framebuffers); > diff --git a/include/drm/drm_aperture.h b/include/drm/drm_aperture.h deleted file > mode 100644 index cbe33b49fd5d..000000000000 > --- a/include/drm/drm_aperture.h > +++ /dev/null > @@ -1,38 +0,0 @@ > -/* SPDX-License-Identifier: MIT */ > - > -#ifndef _DRM_APERTURE_H_ > -#define _DRM_APERTURE_H_ > - > -#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, > - const struct drm_driver *req_driver); > - > -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 > - * @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. > - * > - * Returns: > - * 0 on success, or a negative errno code otherwise > - */ > -static inline int > -drm_aperture_remove_framebuffers(const struct drm_driver *req_driver) -{ > - return drm_aperture_remove_conflicting_framebuffers(0, (resource_size_t)-1, > - req_driver); > -} > - > -#endif > -- > 2.46.0