Am 25.10.21 um 09:57 schrieb Javier Martinez Canillas:
The logic to remove the conflicting frame buffers for fbdev devices that use a given memory range is only compiled if CONFIG_FB option is enabled. But having an ifdefery in drm_aperture_remove_conflicting_framebuffers() makes the function harder to extend. Move the logic into its own helper. Suggested-by: Thomas Zimmermann <tzimmermann@xxxxxxx> Signed-off-by: Javier Martinez Canillas <javierm@xxxxxxxxxx>
Acked-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
--- (no changes since v1) drivers/gpu/drm/drm_aperture.c | 39 ++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/drm_aperture.c b/drivers/gpu/drm/drm_aperture.c index 74bd4a76b253..1a8ed0c616d6 100644 --- a/drivers/gpu/drm/drm_aperture.c +++ b/drivers/gpu/drm/drm_aperture.c @@ -273,6 +273,30 @@ static void drm_aperture_detach_drivers(resource_size_t base, resource_size_t si mutex_unlock(&drm_apertures_lock); }+static int drm_aperture_remove_conflicting_fbdev_framebuffers(resource_size_t base,+ resource_size_t size, bool primary, + const struct drm_driver *req_driver) +{ +#if IS_REACHABLE(CONFIG_FB) + struct apertures_struct *a; + int ret; + + a = alloc_apertures(1); + if (!a) + return -ENOMEM; + + a->ranges[0].base = base; + a->ranges[0].size = size; + + ret = remove_conflicting_framebuffers(a, req_driver->name, primary); + kfree(a); + + if (ret) + return ret; +#endif + return 0; +} + /** * drm_aperture_remove_conflicting_framebuffers - remove existing framebuffers in the given range * @base: the aperture's base address in physical memory @@ -289,23 +313,12 @@ static void drm_aperture_detach_drivers(resource_size_t base, resource_size_t si int drm_aperture_remove_conflicting_framebuffers(resource_size_t base, resource_size_t size, bool primary, const struct drm_driver *req_driver) { -#if IS_REACHABLE(CONFIG_FB) - struct apertures_struct *a; int ret;- a = alloc_apertures(1);- if (!a) - return -ENOMEM; - - a->ranges[0].base = base; - a->ranges[0].size = size; - - ret = remove_conflicting_framebuffers(a, req_driver->name, primary); - kfree(a); - + ret = drm_aperture_remove_conflicting_fbdev_framebuffers(base, size, primary, + req_driver); if (ret) return ret; -#endifdrm_aperture_detach_drivers(base, size);
-- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature