lkml.org 
[lkml]   [2022]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6.0 352/862] video/aperture: Disable and unregister sysfb devices via aperture helpers
    Date
    From: Thomas Zimmermann <tzimmermann@suse.de>

    [ Upstream commit 5e01376124309b4dbd30d413f43c0d9c2f60edea ]

    Call sysfb_disable() before removing conflicting devices in aperture
    helpers. Fixes sysfb state if fbdev has been disabled.

    Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Fixes: fb84efa28a48 ("drm/aperture: Run fbdev removal before internal helpers")
    Cc: Zack Rusin <zackr@vmware.com>
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Javier Martinez Canillas <javierm@redhat.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Helge Deller <deller@gmx.de>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: Zhen Lei <thunder.leizhen@huawei.com>
    Cc: Changcheng Deng <deng.changcheng@zte.com.cn>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Maxime Ripard <mripard@kernel.org>
    Cc: dri-devel@lists.freedesktop.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20220718072322.8927-8-tzimmermann@suse.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/video/aperture.c | 14 ++++++++++++++
    drivers/video/fbdev/core/fbmem.c | 12 ------------
    2 files changed, 14 insertions(+), 12 deletions(-)

    diff --git a/drivers/video/aperture.c b/drivers/video/aperture.c
    index 538f2d40acda..d245826a9324 100644
    --- a/drivers/video/aperture.c
    +++ b/drivers/video/aperture.c
    @@ -8,6 +8,7 @@
    #include <linux/pci.h>
    #include <linux/platform_device.h>
    #include <linux/slab.h>
    +#include <linux/sysfb.h>
    #include <linux/types.h>
    #include <linux/vgaarb.h>

    @@ -286,7 +287,20 @@ int aperture_remove_conflicting_devices(resource_size_t base, resource_size_t si
    #if IS_REACHABLE(CONFIG_FB)
    struct apertures_struct *a;
    int ret;
    +#endif
    +
    + /*
    + * If a driver asked to unregister a platform device registered by
    + * sysfb, then can be assumed that this is a driver for a display
    + * that is set up by the system firmware and has a generic driver.
    + *
    + * Drivers for devices that don't have a generic driver will never
    + * ask for this, so let's assume that a real driver for the display
    + * was already probed and prevent sysfb to register devices later.
    + */
    + sysfb_disable();

    +#if IS_REACHABLE(CONFIG_FB)
    a = alloc_apertures(1);
    if (!a)
    return -ENOMEM;
    diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
    index 02b0cf2cfafe..bda4d304feb6 100644
    --- a/drivers/video/fbdev/core/fbmem.c
    +++ b/drivers/video/fbdev/core/fbmem.c
    @@ -19,7 +19,6 @@
    #include <linux/kernel.h>
    #include <linux/major.h>
    #include <linux/slab.h>
    -#include <linux/sysfb.h>
    #include <linux/mm.h>
    #include <linux/mman.h>
    #include <linux/vt.h>
    @@ -1777,17 +1776,6 @@ int remove_conflicting_framebuffers(struct apertures_struct *a,
    do_free = true;
    }

    - /*
    - * If a driver asked to unregister a platform device registered by
    - * sysfb, then can be assumed that this is a driver for a display
    - * that is set up by the system firmware and has a generic driver.
    - *
    - * Drivers for devices that don't have a generic driver will never
    - * ask for this, so let's assume that a real driver for the display
    - * was already probed and prevent sysfb to register devices later.
    - */
    - sysfb_disable();
    -
    mutex_lock(&registration_lock);
    do_remove_conflicting_framebuffers(a, name, primary);
    mutex_unlock(&registration_lock);
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-10-19 12:45    [W:2.495 / U:0.252 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site