From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3C045C433EF for ; Fri, 29 Apr 2022 08:43:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355930AbiD2Iqg (ORCPT ); Fri, 29 Apr 2022 04:46:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355901AbiD2Iqa (ORCPT ); Fri, 29 Apr 2022 04:46:30 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id B4F9517E16 for ; Fri, 29 Apr 2022 01:43:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221790; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LCV3P6hCzkrdCIrNXXA9bD+9VmWpW20bTzgfHeQMSC8=; b=BcbqRfxldAHb+EN6kxuAmPKGFolmFzYPC6sKuWFjulh5WhzZVQ4hqL4IaE0Rxn1aSov/sL PktNvXwV6ZrrM6nxgjd/5ZwgbF5zQiabAp1d9cktBK1e3CrkV/PPplhuzMMAGSbIlT1Z6X pCxymv2VwBcD/7+EXGkSrl08h6yhtho= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-541-hh6H30vuNQ2GcC7ouL_ctw-1; Fri, 29 Apr 2022 04:43:09 -0400 X-MC-Unique: hh6H30vuNQ2GcC7ouL_ctw-1 Received: by mail-wr1-f72.google.com with SMTP id s8-20020adf9788000000b0020adb01dc25so2800232wrb.20 for ; Fri, 29 Apr 2022 01:43:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LCV3P6hCzkrdCIrNXXA9bD+9VmWpW20bTzgfHeQMSC8=; b=bgvRcJacABSaoyM2Gx8ztcfBazfGtX8B/af1BCfXQkkxgSLLSfa/y+Oc0gj0L90QWu AA2SP6Xz0ONoMdWF8oPD14XJP1s/W6YTfa+oAH0jLmqLmkU1QmmdZEMhoSokFKbaTn/v NqxCzH+ByY6gQ4gBMjF2BByKwGSlD6mOWsjxM2BjX4xAO/lm0rkCLviaVjs0wFeCUpjX D+Pbvw39k65RoyALta0U2sPTVRnQ2pDfRfnc2byOwIdb1kEoWX53YRUddgpcqPCBLfJk IQGv0CXHQ7GNqtspoxelde3rioV4C1X7BJ3/AmBy8yZqwq3Zi7cqc5FoC3G8xv/NXtcy MRXA== X-Gm-Message-State: AOAM532EZkuAad48qHgUwPns+qujjbr1Ysavp0+yYpXchGna1Zp6oXto NddVa3Ys7eoIeTBVOb3PDqGbR3yEDNKOpx3Xex/HuWqmaMu2XlLN7dC1ln5B8iQ9pd2ZLkOTR5O D3YLzfQ7aun0j61NGn6+ztaFZdPBacO/gIJ+BnquFA+v43p8T/Jg4htvS4bbx5EE96YS1xtJA3U Q= X-Received: by 2002:adf:d213:0:b0:20a:d703:154f with SMTP id j19-20020adfd213000000b0020ad703154fmr23745189wrh.604.1651221788155; Fri, 29 Apr 2022 01:43:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzOOGOyZ1kriuI0rWlYEm4in0LjrxkZkAvL2COz8NgHTz+Sazyk8MTmZDUo3yafUN3PdSzrKA== X-Received: by 2002:adf:d213:0:b0:20a:d703:154f with SMTP id j19-20020adfd213000000b0020ad703154fmr23745165wrh.604.1651221787882; Fri, 29 Apr 2022 01:43:07 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:07 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Javier Martinez Canillas , Daniel Vetter , David Airlie , Maarten Lankhorst , Maxime Ripard Subject: [RFC PATCH v4 01/11] drm: Add a capability flag for simple framebuffer drivers Date: Fri, 29 Apr 2022 10:42:43 +0200 Message-Id: <20220429084253.1085911-2-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The DRIVER_FIRMWARE flag denotes that a DRM driver uses a framebuffer that was initialized and provided by the system firmware for scanout. Signed-off-by: Javier Martinez Canillas --- (no changes since v1) include/drm/drm_drv.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index f6159acb8856..abab51705e36 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -94,6 +94,12 @@ enum drm_driver_feature { * synchronization of command submission. */ DRIVER_SYNCOBJ_TIMELINE =3D BIT(6), + /** + * @DRIVER_FIRMWARE: + * + * Denote a driver using a system framebuffer provided by the firmware. + */ + DRIVER_FIRMWARE =3D BIT(7), =20 /* IMPORTANT: Below are all the legacy flags, add new ones above. */ =20 --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9E1F9C433F5 for ; Fri, 29 Apr 2022 08:43:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355951AbiD2Iql (ORCPT ); Fri, 29 Apr 2022 04:46:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45228 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355906AbiD2Iqb (ORCPT ); Fri, 29 Apr 2022 04:46:31 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 0FE063879C for ; Fri, 29 Apr 2022 01:43:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221792; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fRMcUIWA7sdzgB28q5eAL1IlJEzmKZ6fC0UlacasRt0=; b=UCplvL+EkJWURtHzbVLo9qYpdMdjmn6PKm2lOzklHdcTZQTwj2xzaZUHY54waC1dvTyaOi O5yyL66zLuEm37UWSBga5JfM/ujuMzOCdNQQtV7wMCg7NNAp3SuSQD/y3iKyn5QlEb8Zej H+11p7/OjJVR6Quf/+5GGKHTkEDxajM= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-374-l-j7c1JYPxOJ7UXjlmp09w-1; Fri, 29 Apr 2022 04:43:10 -0400 X-MC-Unique: l-j7c1JYPxOJ7UXjlmp09w-1 Received: by mail-wr1-f71.google.com with SMTP id v13-20020adfc5cd000000b0020ad3580cd0so2808240wrg.10 for ; Fri, 29 Apr 2022 01:43:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fRMcUIWA7sdzgB28q5eAL1IlJEzmKZ6fC0UlacasRt0=; b=LW5r0q4KO9ec3q06gbRIIgDmEjd/gHAY4yJP5J7dlC7DnnGsKbF4qyLRlnNE4yl7b3 jLKe+8qis+zl4XqWLUK0s65te/U3ped6dtAfD3I0ofkcIBarCdxGK7xKIGUj8+t1WnX0 X1iUVlABU0tpb+fOTIx3lr/m7sZHkStKdQLSMnBxRZH5y9NFqYTo33YheX5jPwgR007J U24NHoC0W8IjZKitL+dpWScwT8rjNZ+2lbWCneDRAWIy3Pr7iNPQzzwcsMZAgwMLZwhq acQKzs2P0xNQF6FMHhrZ0pQJQ1jb8DP2lUU+ev5eveS1X8p3W0V5+0IaqihmkZ9XWoCp 7f2A== X-Gm-Message-State: AOAM531ZQ4OFIGWt6LVfPffhdNkwKebi0N6CkNwA05eYjNCEpEi1Ooaf S0jOdbF0Gne/ahg7N2t4hGzf/5LAQRtg4mrkwSBdnx2HuuyWmifs1I1PHNh1HnwQSdeAn0ZXbqn oRsXjN8aE44l/MClY+Iw1cfHzmcmMQAMqIHCgqgxFZhfH17V6sVo4nEq8ugk8aN/OHtvYERXCtL Q= X-Received: by 2002:adf:decb:0:b0:20a:c975:8eec with SMTP id i11-20020adfdecb000000b0020ac9758eecmr28945546wrn.438.1651221789496; Fri, 29 Apr 2022 01:43:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwtZEVR1B2SxYUlJMQTPPXV31wb/4bFJp+yeoC7Nu0Cucm9c+snWTdOciLZN/4zm1HB6AokFA== X-Received: by 2002:adf:decb:0:b0:20a:c975:8eec with SMTP id i11-20020adfdecb000000b0020ac9758eecmr28945524wrn.438.1651221789280; Fri, 29 Apr 2022 01:43:09 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:08 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Javier Martinez Canillas , Daniel Vetter , David Airlie , Maarten Lankhorst , Maxime Ripard Subject: [RFC PATCH v4 02/11] drm/fb-helper: Set FBINFO_MISC_FIRMWARE flag for DRIVER_FIRMWARE fb Date: Fri, 29 Apr 2022 10:42:44 +0200 Message-Id: <20220429084253.1085911-3-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The DRIVER_FIRMWARE flag denotes that a DRM driver uses a framebuffer that was initialized and provided by the system firmware for scanout. Indicate to the fbdev subsystem that the registered framebuffer is a FBINFO_MISC_FIRMWARE, so that it can handle accordingly. For example, wold hot-unplug the associated device if asked to remove conflicting framebuffers. Suggested-by: Thomas Zimmermann Signed-off-by: Javier Martinez Canillas --- (no changes since v1) drivers/gpu/drm/drm_fb_helper.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helpe= r.c index d265a73313c9..76dd11888621 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1891,6 +1891,10 @@ __drm_fb_helper_initial_config_and_unlock(struct drm= _fb_helper *fb_helper, /* don't leak any physical addresses to userspace */ info->flags |=3D FBINFO_HIDE_SMEM_START; =20 + /* Indicate that the framebuffer is provided by the firmware */ + if (drm_core_check_feature(dev, DRIVER_FIRMWARE)) + info->flags |=3D FBINFO_MISC_FIRMWARE; + /* Need to drop locks to avoid recursive deadlock in * register_framebuffer. This is ok because the only thing left to do is * register the fbdev emulation instance in kernel_fb_helper_list. */ --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76053C4332F for ; Fri, 29 Apr 2022 08:43:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355939AbiD2Iqo (ORCPT ); Fri, 29 Apr 2022 04:46:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45270 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355907AbiD2Iqb (ORCPT ); Fri, 29 Apr 2022 04:46:31 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 4B7A0C3EAC for ; Fri, 29 Apr 2022 01:43:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221793; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vubZvz77eO0eWEbWF5Lc06RI0x4vo6zT37jaMVflNHg=; b=XiAxzgHB2Dhdc8YX1ld9APi3S4VS01INXXVof4NqCySwhWEn99enr4vmtsvB8fy2HCF5lW xNGPVJutHoSqRavyUv/FgitWGyQnDzCzyxTkONI79ExgZC32XaeWip1Nk67zp6HySvcPc8 70T2XFV0AyYOO6neQTVoCHXxe+1Z+6Y= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-551-iY_5bua_PUiItje3bFtS4Q-1; Fri, 29 Apr 2022 04:43:12 -0400 X-MC-Unique: iY_5bua_PUiItje3bFtS4Q-1 Received: by mail-wm1-f71.google.com with SMTP id k16-20020a7bc310000000b0038e6cf00439so2224862wmj.0 for ; Fri, 29 Apr 2022 01:43:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vubZvz77eO0eWEbWF5Lc06RI0x4vo6zT37jaMVflNHg=; b=7X8v58dKXu/C6UIcmm6rR+hCqAQqSmj3/XAOq9mtTbOQGMynp9URwAVhib2luRAPRh sbetmUXOmQdPn2CLkHgM18hraUp6RasPg0ONU61k3dBaFbhYpDh+ts2IYyNrqO6cgFkT 4hAaS4IHUe85xkrnuTfdKvg0bpzw1LiJ5dAXg9KnBHdp1cIYhnHlu121P9erlAZj0aa/ CpRvXZswDQGWICvbK/pwBC1lB7w5J/KdxrF7u1RbH+81RyymFn+HOXCv1In+rvM+mbMF RPRXmJlcNyLzsjL2jVZT3YBqnlUSU0dbozBrBzPGnPPpDqzFwVbr3SjnXiWGD7LQOFuO xcOg== X-Gm-Message-State: AOAM532cjVQoOppFDLdNwrFWkbZoGbaXfq+Wz3njHnamajJJiqGc7kMA pHzK5vIttczzpzqcV9vtgF1htYOd6fsQ0Daeuc6e7JZUnEXwIdI3KJ71/VoBIS3asnD4LaaCfSD YOGqlsbnqekbKpycsEEPIVFIxo9IMiNNGK5xh7htsC1M+5iPixa44gCWhxZGw/AbhZfxx5QF4rJ I= X-Received: by 2002:a05:6000:c:b0:20a:df2e:2c38 with SMTP id h12-20020a056000000c00b0020adf2e2c38mr17607758wrx.481.1651221790788; Fri, 29 Apr 2022 01:43:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy0tFeN1mlsIlAflE3jz2oXywVPeAUCPmToSm7Z6Ls+OM8AB5Vsy2UusgOW1eoW8qfxPH/hvw== X-Received: by 2002:a05:6000:c:b0:20a:df2e:2c38 with SMTP id h12-20020a056000000c00b0020adf2e2c38mr17607737wrx.481.1651221790579; Fri, 29 Apr 2022 01:43:10 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:10 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Javier Martinez Canillas , Daniel Vetter , David Airlie Subject: [RFC PATCH v4 03/11] drm/simpledrm: Set the DRM_FIRMWARE capability Date: Fri, 29 Apr 2022 10:42:45 +0200 Message-Id: <20220429084253.1085911-4-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The DRIVER_FIRMWARE flag denotes that a DRM driver uses a framebuffer that was initialized and provided by the system firmware for scanout, which is the case for simpledrm. Signed-off-by: Javier Martinez Canillas --- (no changes since v1) drivers/gpu/drm/tiny/simpledrm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simple= drm.c index f5b8e864a5cd..f039419d4d36 100644 --- a/drivers/gpu/drm/tiny/simpledrm.c +++ b/drivers/gpu/drm/tiny/simpledrm.c @@ -878,7 +878,7 @@ static struct drm_driver simpledrm_driver =3D { .date =3D DRIVER_DATE, .major =3D DRIVER_MAJOR, .minor =3D DRIVER_MINOR, - .driver_features =3D DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET, + .driver_features =3D DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET | DRIVER= _FIRMWARE, .fops =3D &simpledrm_fops, }; =20 --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E084CC433EF for ; Fri, 29 Apr 2022 08:43:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355959AbiD2Iqx (ORCPT ); Fri, 29 Apr 2022 04:46:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45516 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355924AbiD2Iqf (ORCPT ); Fri, 29 Apr 2022 04:46:35 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 144F4C400A for ; Fri, 29 Apr 2022 01:43:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=q0jhE2KzgkBGMgjTP5+WkaIB21znzdT6itwPcWaa2Oc=; b=cC15IyhnMSRrGXnIQiTb6iTY3dwzngNWQEZ3/g+0wdL1nAZXonQzfC8vE83416cQ+bZ1ld DiXTPfsl5huAC1XtK9mPlF3g1JN/iFKbm6337m7ts5Bb3Xz6JPYKSjriNamSWDXYC9CQhp /I4/gOwTTZhMPETABUAor04/VdscO8E= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-496-eCdzz4NzO8-70lyr6LIjYg-1; Fri, 29 Apr 2022 04:43:13 -0400 X-MC-Unique: eCdzz4NzO8-70lyr6LIjYg-1 Received: by mail-wr1-f71.google.com with SMTP id e21-20020adfa455000000b0020ae075cf35so2828438wra.11 for ; Fri, 29 Apr 2022 01:43:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q0jhE2KzgkBGMgjTP5+WkaIB21znzdT6itwPcWaa2Oc=; b=UaZPJJo+EG6OMI7Cw6w/8ec6FB0eczXGXgCesRurS2+g/NmyxqOcLWMyZlg9Ns7EGU lktotNejOS5QPDdq5JLVBytjIekB+jQKZVxatDymL9YgKNl0zngL8VGcyMT2IY4a6cDp gcI8kSP6OvZhSjhZQrOWm/n1uaDR0zD1qPrL8+sLO7oQOJIxYPd0+6+O/QcFTY2x9MO4 oOJlhva73Bc9XGJZmEYOZ8lugcjnC3bH5ycJsctJl2twZhm/cPbTnwW6x0cc6AxofkFd Ajss7fDvAbeNTVdvTYt1stBBNVP5VYrIwzRle5YfTj7xLDn3lODZFGS7lOk2olQvYIOF cX7g== X-Gm-Message-State: AOAM5334QoXPJiV4AU/Q7HW+lM1dYg2tetdvPkZx+AXws8WAf+CzkeAL f104O+MNizP1qpeq78TsXHj+RFR2ESFO/+fMVYI523V8chSjzdUjAQFT3giHJJZw3oHDcSoeVvE T5RnjjULacGl7p117LqwFtM61V0PvKbUXwE9XQCFKjmWC5gRWGhTpvgJjFzzZKZ0ncWqhb3KLQ4 s= X-Received: by 2002:adf:f0c6:0:b0:20a:d31b:6 with SMTP id x6-20020adff0c6000000b0020ad31b0006mr24327956wro.162.1651221792197; Fri, 29 Apr 2022 01:43:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwiDzTMN+tsLyAkQvCYvCbzjZUOqN+LljnyCVjIFyMHvW0HFddAhKjNR9BnBHuyZkt2O2lUoA== X-Received: by 2002:adf:f0c6:0:b0:20a:d31b:6 with SMTP id x6-20020adff0c6000000b0020ad31b0006mr24327932wro.162.1651221791918; Fri, 29 Apr 2022 01:43:11 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:11 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Javier Martinez Canillas , Borislav Petkov , Johan Hovold , Miaoqian Lin Subject: [RFC PATCH v4 04/11] firmware: sysfb: Make sysfb_create_simplefb() return a pdev pointer Date: Fri, 29 Apr 2022 10:42:46 +0200 Message-Id: <20220429084253.1085911-5-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This function just returned 0 on success or an errno code on error, but it could be useful for sysfb_init() callers to have a pointer to the device. Signed-off-by: Javier Martinez Canillas Reviewed-by: Daniel Vetter Reviewed-by: Thomas Zimmermann --- Changes in v4: - Make sysfb_disable() to also attempt to unregister a device. Changes in v3: - Add Thomas Zimmermann's Reviewed-by tag to patch #1. Changes in v2: - Rebase on top of latest drm-misc-next and fix conflicts (Daniel Vetter). drivers/firmware/sysfb.c | 4 ++-- drivers/firmware/sysfb_simplefb.c | 16 ++++++++-------- include/linux/sysfb.h | 10 +++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/firmware/sysfb.c b/drivers/firmware/sysfb.c index 2bfbb05f7d89..b032f40a92de 100644 --- a/drivers/firmware/sysfb.c +++ b/drivers/firmware/sysfb.c @@ -46,8 +46,8 @@ static __init int sysfb_init(void) /* try to create a simple-framebuffer device */ compatible =3D sysfb_parse_mode(si, &mode); if (compatible) { - ret =3D sysfb_create_simplefb(si, &mode); - if (!ret) + pd =3D sysfb_create_simplefb(si, &mode); + if (!IS_ERR(pd)) return 0; } =20 diff --git a/drivers/firmware/sysfb_simplefb.c b/drivers/firmware/sysfb_sim= plefb.c index bda8712bfd8c..a353e27f83f5 100644 --- a/drivers/firmware/sysfb_simplefb.c +++ b/drivers/firmware/sysfb_simplefb.c @@ -57,8 +57,8 @@ __init bool sysfb_parse_mode(const struct screen_info *si, return false; } =20 -__init int sysfb_create_simplefb(const struct screen_info *si, - const struct simplefb_platform_data *mode) +__init struct platform_device *sysfb_create_simplefb(const struct screen_i= nfo *si, + const struct simplefb_platform_data *mode) { struct platform_device *pd; struct resource res; @@ -76,7 +76,7 @@ __init int sysfb_create_simplefb(const struct screen_info= *si, base |=3D (u64)si->ext_lfb_base << 32; if (!base || (u64)(resource_size_t)base !=3D base) { printk(KERN_DEBUG "sysfb: inaccessible VRAM base\n"); - return -EINVAL; + return ERR_PTR(-EINVAL); } =20 /* @@ -93,7 +93,7 @@ __init int sysfb_create_simplefb(const struct screen_info= *si, length =3D mode->height * mode->stride; if (length > size) { printk(KERN_WARNING "sysfb: VRAM smaller than advertised\n"); - return -EINVAL; + return ERR_PTR(-EINVAL); } length =3D PAGE_ALIGN(length); =20 @@ -104,11 +104,11 @@ __init int sysfb_create_simplefb(const struct screen_= info *si, res.start =3D base; res.end =3D res.start + length - 1; if (res.end <=3D res.start) - return -EINVAL; + return ERR_PTR(-EINVAL); =20 pd =3D platform_device_alloc("simple-framebuffer", 0); if (!pd) - return -ENOMEM; + return ERR_PTR(-ENOMEM); =20 sysfb_apply_efi_quirks(pd); =20 @@ -124,10 +124,10 @@ __init int sysfb_create_simplefb(const struct screen_= info *si, if (ret) goto err_put_device; =20 - return 0; + return pd; =20 err_put_device: platform_device_put(pd); =20 - return ret; + return ERR_PTR(ret); } diff --git a/include/linux/sysfb.h b/include/linux/sysfb.h index b0dcfa26d07b..708152e9037b 100644 --- a/include/linux/sysfb.h +++ b/include/linux/sysfb.h @@ -72,8 +72,8 @@ static inline void sysfb_apply_efi_quirks(struct platform= _device *pd) =20 bool sysfb_parse_mode(const struct screen_info *si, struct simplefb_platform_data *mode); -int sysfb_create_simplefb(const struct screen_info *si, - const struct simplefb_platform_data *mode); +struct platform_device *sysfb_create_simplefb(const struct screen_info *si, + const struct simplefb_platform_data *mode); =20 #else /* CONFIG_SYSFB_SIMPLE */ =20 @@ -83,10 +83,10 @@ static inline bool sysfb_parse_mode(const struct screen= _info *si, return false; } =20 -static inline int sysfb_create_simplefb(const struct screen_info *si, - const struct simplefb_platform_data *mode) +static inline struct platform_device *sysfb_create_simplefb(const struct s= creen_info *si, + const struct simplefb_platform_data *mode) { - return -EINVAL; + return ERR_PTR(-EINVAL); } =20 #endif /* CONFIG_SYSFB_SIMPLE */ --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D0368C433F5 for ; Fri, 29 Apr 2022 08:43:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355961AbiD2Iq4 (ORCPT ); Fri, 29 Apr 2022 04:46:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355941AbiD2Iqi (ORCPT ); Fri, 29 Apr 2022 04:46:38 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id BF008C400D for ; Fri, 29 Apr 2022 01:43:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221796; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sNYlvzVzM/yRIsQFJFDDE/gEOtrzgO/JKjkWbkd7amE=; b=EJLXvSwNkgQlJ0D7/lBc4b4j8eU3QBrZUN7v8LlIV+HRU5JCHsLT/w/cnNHzyU0N9jtLc7 /slcG2Gqjrk66sxaWDJ0HFmtWlhE+dQyHR8QpNbDHiU4j7RPsOgb07TgsjRZSiqAyLqfaK ZtRqAWWTX50T+Yq2uyup1eb5FhJZkx0= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-638-B0G0ayXqPuW8QqVN7EHajw-1; Fri, 29 Apr 2022 04:43:15 -0400 X-MC-Unique: B0G0ayXqPuW8QqVN7EHajw-1 Received: by mail-wm1-f70.google.com with SMTP id l33-20020a05600c1d2100b00394059572d6so2170805wms.8 for ; Fri, 29 Apr 2022 01:43:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sNYlvzVzM/yRIsQFJFDDE/gEOtrzgO/JKjkWbkd7amE=; b=E4uH8dTIXq5czD1teFQ25eqaAOS+vFd048CrW3GC+mz6PaNlVuQjDGdWUllWh2tPOD mzONokMNfvi1nUkNJpokYFKkmEu8XJuKkDtfUK0K/Kuua2WtH9wO6nSk5p/RixLWp3ra JdOlSt83ZluFcaZ+J6NiDdjOxB3nJY9GfG/ZLQRokH8hiDEPJp7YAGDYHNlLBG+tiRyy dWKVzN8c8LEtpiwy5YsORD6PvnYMs727yDkEInINJBbQbnqX874L+LcTJJtwloCxr8DN 90w5aRIQnc9BWeu4A7rlRkf4CpYo/6HwfyQfowqm6dWCaln9VBayNvQtyho7ybNk7oRM UjKA== X-Gm-Message-State: AOAM531t1b7Hcz2cJ3ASpC2EqOBeHB6ZFuzE1aWPtFu3tdFapk8cbGUP RQqEXjscW3zLEPSNXXyqMKz61aWLy7Y5Rx16W7bK10npk0qnImly5p8A+gckxfpWBJP9hMEqTEH EKc7F7XPEajIuT984Y4negxVjGgXBB8DhfS6o//YMubqC23ynva/JzfWEVvcO9DqgP4iVX49HQb I= X-Received: by 2002:a1c:2185:0:b0:38f:f4ed:f964 with SMTP id h127-20020a1c2185000000b0038ff4edf964mr2140370wmh.115.1651221793258; Fri, 29 Apr 2022 01:43:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzULH/Z8iTBu9imB6E2jhhktq6ujl1Rp03jG3ZGkP0d9/n1g3yBNXFS/dMPBVvjlH2AOcTVlQ== X-Received: by 2002:a1c:2185:0:b0:38f:f4ed:f964 with SMTP id h127-20020a1c2185000000b0038ff4edf964mr2140338wmh.115.1651221792987; Fri, 29 Apr 2022 01:43:12 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:12 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Javier Martinez Canillas , Borislav Petkov , Jonathan Corbet , linux-doc@vger.kernel.org Subject: [RFC PATCH v4 05/11] firmware: sysfb: Add helpers to unregister a pdev and disable registration Date: Fri, 29 Apr 2022 10:42:47 +0200 Message-Id: <20220429084253.1085911-6-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" These can be used by subsystems to unregister a platform device registered by sysfb and also to disable future platform device registration in sysfb. Suggested-by: Daniel Vetter Signed-off-by: Javier Martinez Canillas Reviewed-by: Daniel Vetter --- (no changes since v2) Changes in v2: - Add kernel-doc comments and include in other_interfaces.rst (Daniel Vette= r). .../driver-api/firmware/other_interfaces.rst | 6 ++ drivers/firmware/sysfb.c | 87 +++++++++++++++++-- include/linux/sysfb.h | 19 ++++ 3 files changed, 106 insertions(+), 6 deletions(-) diff --git a/Documentation/driver-api/firmware/other_interfaces.rst b/Docum= entation/driver-api/firmware/other_interfaces.rst index b81794e0cfbb..06ac89adaafb 100644 --- a/Documentation/driver-api/firmware/other_interfaces.rst +++ b/Documentation/driver-api/firmware/other_interfaces.rst @@ -13,6 +13,12 @@ EDD Interfaces .. kernel-doc:: drivers/firmware/edd.c :internal: =20 +Generic System Framebuffers Interface +------------------------------------- + +.. kernel-doc:: drivers/firmware/sysfb.c + :export: + Intel Stratix10 SoC Service Layer --------------------------------- Some features of the Intel Stratix10 SoC require a level of privilege diff --git a/drivers/firmware/sysfb.c b/drivers/firmware/sysfb.c index b032f40a92de..6768968949e6 100644 --- a/drivers/firmware/sysfb.c +++ b/drivers/firmware/sysfb.c @@ -34,21 +34,92 @@ #include #include =20 +static struct platform_device *pd; +static DEFINE_MUTEX(disable_lock); +static bool disabled; + +static bool sysfb_unregister(void) +{ + if (IS_ERR_OR_NULL(pd)) + return false; + + platform_device_unregister(pd); + pd =3D NULL; + + return true; +} + +/** + * sysfb_disable() - disable the Generic System Framebuffers support + * + * This disables the registration of system framebuffer devices that match= the + * generic drivers that make use of the system framebuffer set up by firmw= are. + * + * It also unregisters a device if this was already registered by sysfb_in= it(). + * + * Context: The function can sleep. A @disable_lock mutex is acquired to s= erialize + * against sysfb_init(), that registers a system framebuffer devi= ce and + * sysfb_try_unregister(), that tries to unregister a framebuffer= device. + */ +void sysfb_disable(void) +{ + mutex_lock(&disable_lock); + sysfb_unregister(); + disabled =3D true; + mutex_unlock(&disable_lock); +} +EXPORT_SYMBOL_GPL(sysfb_disable); + +/** + * sysfb_try_unregister() - attempt to unregister a system framebuffer dev= ice + * @dev: device to unregister + * + * This tries to unregister a system framebuffer device if this was regist= ered + * by the Generic System Framebuffers. The device will only be unregistere= d if + * it was registered by sysfb_init(), otherwise it will not be unregistere= d. + * + * Context: The function can sleep. a @load_lock mutex is acquired to seri= alize + * against sysfb_init(), that registers a simple framebuffer devi= ce and + * sysfb_disable(), that disables the Generic System Framebuffers= support. + * + * Return: + * * true - the device was unregistered successfully + * * false - the device was not unregistered + */ +bool sysfb_try_unregister(struct device *dev) +{ + bool ret =3D false; + + mutex_lock(&disable_lock); + if (IS_ERR_OR_NULL(pd) || pd !=3D to_platform_device(dev)) + goto unlock_mutex; + + ret =3D sysfb_unregister(); + +unlock_mutex: + mutex_unlock(&disable_lock); + return ret; +} +EXPORT_SYMBOL_GPL(sysfb_try_unregister); + static __init int sysfb_init(void) { struct screen_info *si =3D &screen_info; struct simplefb_platform_data mode; - struct platform_device *pd; const char *name; bool compatible; - int ret; + int ret =3D 0; + + mutex_lock(&disable_lock); + if (disabled) + goto unlock_mutex; =20 /* try to create a simple-framebuffer device */ compatible =3D sysfb_parse_mode(si, &mode); if (compatible) { pd =3D sysfb_create_simplefb(si, &mode); if (!IS_ERR(pd)) - return 0; + goto unlock_mutex; } =20 /* if the FB is incompatible, create a legacy framebuffer device */ @@ -60,8 +131,10 @@ static __init int sysfb_init(void) name =3D "platform-framebuffer"; =20 pd =3D platform_device_alloc(name, 0); - if (!pd) - return -ENOMEM; + if (!pd) { + ret =3D -ENOMEM; + goto unlock_mutex; + } =20 sysfb_apply_efi_quirks(pd); =20 @@ -73,9 +146,11 @@ static __init int sysfb_init(void) if (ret) goto err; =20 - return 0; + goto unlock_mutex; err: platform_device_put(pd); +unlock_mutex: + mutex_unlock(&disable_lock); return ret; } =20 diff --git a/include/linux/sysfb.h b/include/linux/sysfb.h index 708152e9037b..e8c0313fac8f 100644 --- a/include/linux/sysfb.h +++ b/include/linux/sysfb.h @@ -55,6 +55,25 @@ struct efifb_dmi_info { int flags; }; =20 +#ifdef CONFIG_SYSFB + +void sysfb_disable(void); +bool sysfb_try_unregister(struct device *dev); + +#else /* CONFIG_SYSFB */ + +static inline void sysfb_disable(void) +{ + +} + +static inline bool sysfb_try_unregister(struct device *dev) +{ + return false; +} + +#endif /* CONFIG_SYSFB */ + #ifdef CONFIG_EFI =20 extern struct efifb_dmi_info efifb_dmi_list[]; --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5AAFCC433EF for ; Fri, 29 Apr 2022 08:44:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351258AbiD2Ira (ORCPT ); Fri, 29 Apr 2022 04:47:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45642 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355973AbiD2Iqn (ORCPT ); Fri, 29 Apr 2022 04:46:43 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id D545213D3A for ; Fri, 29 Apr 2022 01:43:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221800; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Brj5kPf1vp2+xvAmZf1o0QRVBdqqcyn2KbRWKGy9p24=; b=KRiVholFVymGUsJpTVvPRb7NrRH3lSM7Dpu4BkTZGjdyC/9tZIVePBwlr+62hA+NISF7Vw VINAN4s3Xj253Qi0w+EcHHBibrjzlhF+NAgyvdOtOH0Fe2dE2K4+RN+Z8KcPPYfv4C8Btn s7g1jLPJFzk3JCDDNqJ2sxBbKQ3OZ50= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-575-7rR3IuisO2qrCjeAS6RisA-1; Fri, 29 Apr 2022 04:43:16 -0400 X-MC-Unique: 7rR3IuisO2qrCjeAS6RisA-1 Received: by mail-wr1-f70.google.com with SMTP id d28-20020adf9b9c000000b0020ad4a50e14so2816537wrc.3 for ; Fri, 29 Apr 2022 01:43:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Brj5kPf1vp2+xvAmZf1o0QRVBdqqcyn2KbRWKGy9p24=; b=wJHRLaLtPu2Rti5ffzZjs7maiSfUylpIt/Tx8PTzoPZP2qqpodrGjFj0wBfdghPeLA ta8zlcYEruzqh6FmdrxQn+sZ7NrhYwNMy/7z1yMfp5O/8IH9RzWprPi2l0qSnkEoXWs4 rDlZO3e54oYpnSXkawlDD+78rwZSF/1Vy9fJkKmfBeI46vfEk4GQ4z0dhYRcB244Nbko X0SX85Kwy5bCBGYeAUwkJojT5FRlY/KQkYM+oLICBaE69TGeC6o17ufdsZaaoBtOSdeN Hx8sh9iU0Y+8lBTGDWoOuLF794vZ4+ANp667DKCFdbAU86/u531kqq1aGEsyborTpl4+ AFvA== X-Gm-Message-State: AOAM530k5FK1LgzbPSgxv8uZydMh2zUcELcLk4pwtNOiamlhUE8FC2n8 M7R/3FBBGjibwjFwzgiWLHB0HvD6YtdypKtkJvEOpZdYhZMh4bwPpMpw9x+uZJnjPCqpQyUM/PX 7Cn/hR0s3Ph9ohOe2oYCZCZaXrkd/ILLcFTZpPATT7sGdtr5KfAGx70NyaXNLLP+Yfbpyfb1N4E M= X-Received: by 2002:a05:600c:1d9b:b0:393:ffc8:a09b with SMTP id p27-20020a05600c1d9b00b00393ffc8a09bmr2179627wms.40.1651221795122; Fri, 29 Apr 2022 01:43:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxrVFdFCXeRphGLRkfrU/+tc/H0r7qF9nFcGL4D+eRkGaWuTGNr1P6BVgMPY5uynZbJ2i3UmQ== X-Received: by 2002:a05:600c:1d9b:b0:393:ffc8:a09b with SMTP id p27-20020a05600c1d9b00b00393ffc8a09bmr2179599wms.40.1651221794848; Fri, 29 Apr 2022 01:43:14 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:14 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Javier Martinez Canillas , Alex Deucher , Changcheng Deng , Daniel Vetter , Helge Deller , Sam Ravnborg , Zhen Lei , linux-fbdev@vger.kernel.org Subject: [RFC PATCH v4 06/11] fbdev: Restart conflicting fb removal loop when unregistering devices Date: Fri, 29 Apr 2022 10:42:48 +0200 Message-Id: <20220429084253.1085911-7-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Drivers that want to remove registered conflicting framebuffers prior to register their own framebuffer, calls remove_conflicting_framebuffers(). This function takes the registration_lock mutex, to prevent a races when drivers register framebuffer devices. But if a conflicting framebuffer device is found, the underlaying platform device is unregistered and this will lead to the platform driver .remove callback to be called, which in turn will call to the unregister_framebuffer() that takes the same lock. To prevent this, a struct fb_info.forced_out field was used as indication to unregister_framebuffer() whether the mutex has to be grabbed or not. A cleaner solution is to drop the lock before platform_device_unregister() so unregister_framebuffer() can take it when called from the fbdev driver, and just grab the lock again after the device has been registered and do a removal loop restart. Since the framebuffer devices will already be removed, the loop would just finish when no more conflicting framebuffers are found. Suggested-by: Daniel Vetter Signed-off-by: Javier Martinez Canillas Reviewed-by: Daniel Vetter --- (no changes since v1) drivers/video/fbdev/core/fbmem.c | 22 +++++++++++++++------- include/linux/fb.h | 1 - 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fb= mem.c index 84427470367b..0bb459258df3 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1553,6 +1553,7 @@ static void do_remove_conflicting_framebuffers(struct= apertures_struct *a, { int i; =20 +restart_removal: /* check all firmware fbs and kick off if the base addr overlaps */ for_each_registered_fb(i) { struct apertures_struct *gen_aper; @@ -1585,12 +1586,23 @@ static void do_remove_conflicting_framebuffers(stru= ct apertures_struct *a, pr_warn("fb%d: no device set\n", i); do_unregister_framebuffer(registered_fb[i]); } else if (dev_is_platform(device)) { - registered_fb[i]->forced_out =3D true; + /* + * Drop the lock because if the device is unregistered, its + * driver will call to unregister_framebuffer(), that takes + * this lock. + */ + mutex_unlock(®istration_lock); platform_device_unregister(to_platform_device(device)); + mutex_lock(®istration_lock); } else { pr_warn("fb%d: cannot remove device\n", i); do_unregister_framebuffer(registered_fb[i]); } + /* + * Restart the removal loop now that the device has been + * unregistered and its associated framebuffer gone. + */ + goto restart_removal; } } } @@ -1897,13 +1909,9 @@ EXPORT_SYMBOL(register_framebuffer); void unregister_framebuffer(struct fb_info *fb_info) { - bool forced_out =3D fb_info->forced_out; - - if (!forced_out) - mutex_lock(®istration_lock); + mutex_lock(®istration_lock); do_unregister_framebuffer(fb_info); - if (!forced_out) - mutex_unlock(®istration_lock); + mutex_unlock(®istration_lock); } EXPORT_SYMBOL(unregister_framebuffer); =20 diff --git a/include/linux/fb.h b/include/linux/fb.h index f95da1af9ff6..b781bc721113 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -502,7 +502,6 @@ struct fb_info { } *apertures; =20 bool skip_vt_switch; /* no VT switch on suspend/resume required */ - bool forced_out; /* set when being removed by another driver */ }; =20 static inline struct apertures_struct *alloc_apertures(unsigned int max_nu= m) { --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6138CC433F5 for ; Fri, 29 Apr 2022 08:43:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356005AbiD2IrB (ORCPT ); Fri, 29 Apr 2022 04:47:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45516 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355954AbiD2Iqm (ORCPT ); Fri, 29 Apr 2022 04:46:42 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id CDAEBC4021 for ; Fri, 29 Apr 2022 01:43:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221799; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=32BFmTqPr/eVAc9kmYw/jW8gg2xRyq+gsg/BzILupkI=; b=efbbGifaKziD950peZYu0dwFaHcRfwOKCs1tcdZC8enxFfH3OXTOkfbGoJf0IPWhqFRiDQ +w6f7Oa/D0Dm+kB5AI2iHgwC8GM98x8LvgpvSdAecO5wT4IdK8x5xltXWNdtLYGkadl//g scsBjwqwxZ/xJMj750B2yTnjLvrAay0= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-411-hwRgAhOoMNuC614M36AGBA-1; Fri, 29 Apr 2022 04:43:17 -0400 X-MC-Unique: hwRgAhOoMNuC614M36AGBA-1 Received: by mail-wr1-f71.google.com with SMTP id n17-20020adfc611000000b0020a7e397ccaso2787756wrg.23 for ; Fri, 29 Apr 2022 01:43:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=32BFmTqPr/eVAc9kmYw/jW8gg2xRyq+gsg/BzILupkI=; b=WH9yE7/fMDnps2hxGYLgZmdZ/7PAn8b+prws4YsEHfKo+sMb6RIbDl0BoPjiuF20Uj My1Zf1zRYfGLEjZYfQRcUsT9GM4kdRXY/QghkVv/EzoJs1y8oNHs6u5I+/PP8ft3FnLs aW5Wgx4uqG7Z+gAMjAJIkCbwl7HTu7poCKHH5m3ZYjLz2Wgo5iGpniF0qxH5Xwtp6O87 ikcDU0YxfgKsPKyy856KKaujpUTnFh/9tZRV+7FAfwHptmP2z1Md/CB7tt4fMk3SvdNz EtoEXeEpMyUqum6zHyOm6Gh+rxSDAeNYOzBPzIjb8aiSXuqvgzWD0n1i7ny9bYk4LqZg gDRg== X-Gm-Message-State: AOAM530PtNfAm090E1HLszcrgnMI4QqQ2bTuSVwNqHStrUkqbcgkiSan 9H++yOIzSek1qyTnbPKj1fPzr8oZruFR1H8oUUWAYHvdMR6X7G5vC1EGmWdfzoVoSrDz3qkYI8N cvYIIWc8cQ+3QhUXz47QBP+XGY+wjXjJ/focVo3JvrcRKuI5FqYmMOsT/4XIbVo7hmK+Y/Zebqp U= X-Received: by 2002:a05:600c:29c4:b0:393:fdfa:9baf with SMTP id s4-20020a05600c29c400b00393fdfa9bafmr2106710wmd.26.1651221796345; Fri, 29 Apr 2022 01:43:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzpb9GJOon/VWE7cLIvn3hOO2k4R3a9ThVl9BjzphxKGmE7ttlSfqH3kxxBUwJ+8zmSamy6eA== X-Received: by 2002:a05:600c:29c4:b0:393:fdfa:9baf with SMTP id s4-20020a05600c29c400b00393fdfa9bafmr2106674wmd.26.1651221795966; Fri, 29 Apr 2022 01:43:15 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:15 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Javier Martinez Canillas , Alex Deucher , Changcheng Deng , Daniel Vetter , Helge Deller , Sam Ravnborg , Zhen Lei , linux-fbdev@vger.kernel.org Subject: [RFC PATCH v4 07/11] fbdev: Make sysfb to unregister its own registered devices Date: Fri, 29 Apr 2022 10:42:49 +0200 Message-Id: <20220429084253.1085911-8-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The platform devices registered in sysfb match with a firmware-based fbdev or DRM driver, that are used to have early graphics using framebuffers set up by the system firmware. Real DRM drivers later are probed and remove all conflicting framebuffers, leading to these platform devices for generic drivers to be unregistered. But the current solution has the problem that sysfb doesn't know when the device that registered is unregistered. This means that is not able to do any cleanup if needed since the device pointer may not be valid anymore. Not all platforms use sysfb to register the simple framebuffer devices, so an unregistration has to be forced by fbmem if sysfb_try_unregister() does not succeed at unregister the device. Suggested-by: Daniel Vetter Signed-off-by: Javier Martinez Canillas Reviewed-by: Daniel Vetter --- Changes in v4: - Drop call to sysfb_disable() in fbmem since is done in other places now. Changes in v2: - Explain in the commit message that fbmem has to unregister the device as fallback if a driver registered the device itself (Daniel Vetter). - Also explain that fallback in a comment in the code (Daniel Vetter). - Don't encode in fbmem the assumption that sysfb will always register platform devices (Daniel Vetter). - Add a FIXME comment about drivers registering devices (Daniel Vetter). drivers/video/fbdev/core/fbmem.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fb= mem.c index 0bb459258df3..d6ae33990f40 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1585,18 +1585,35 @@ static void do_remove_conflicting_framebuffers(stru= ct apertures_struct *a, if (!device) { pr_warn("fb%d: no device set\n", i); do_unregister_framebuffer(registered_fb[i]); - } else if (dev_is_platform(device)) { + } else { /* * Drop the lock because if the device is unregistered, its * driver will call to unregister_framebuffer(), that takes * this lock. */ mutex_unlock(®istration_lock); - platform_device_unregister(to_platform_device(device)); + /* + * First attempt the device to be unregistered by sysfb. + */ + if (!sysfb_try_unregister(device)) { + if (dev_is_platform(device)) { + /* + * FIXME: sysfb didn't register this device, the platform + * device was registered in other platform code. + */ + platform_device_unregister(to_platform_device(device)); + } else { + /* + * If is not a platform device, at least print a warning. A + * fix would add to make the code that registered the device + * to also unregister it. + */ + pr_warn("fb%d: cannot remove device\n", i); + /* call unregister_framebuffer() since the lock was dropped */ + unregister_framebuffer(registered_fb[i]); + } + } mutex_lock(®istration_lock); - } else { - pr_warn("fb%d: cannot remove device\n", i); - do_unregister_framebuffer(registered_fb[i]); } /* * Restart the removal loop now that the device has been --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96B53C433EF for ; Fri, 29 Apr 2022 08:43:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356015AbiD2IrI (ORCPT ); Fri, 29 Apr 2022 04:47:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355964AbiD2Iqn (ORCPT ); Fri, 29 Apr 2022 04:46:43 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id D57A63879C for ; Fri, 29 Apr 2022 01:43:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221800; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=u/nkZHXCBB5ZrJnB24ro/1pCmNvdbhB1vwTZ80wJLns=; b=eETKrAnUtaKf3YNwNIkU0gjWjnir1lCPhqv2nHuZC4i11qP3ZZWMZkuocy8mkQtQ7BcT5l czLU8lU43hE/CNCpxq1hZ9qeupK0I3eHT71uHbTmVV6VdX18ZPT4+Zwsg4GLvckdJ5Cz2s 49ceEQFfVrk7RjFzixtklAr+mwjVQq0= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-206-iSx-TqE1PYyrizYWHZKHSg-1; Fri, 29 Apr 2022 04:43:19 -0400 X-MC-Unique: iSx-TqE1PYyrizYWHZKHSg-1 Received: by mail-wm1-f69.google.com with SMTP id m124-20020a1c2682000000b00393fcd2722dso2221519wmm.4 for ; Fri, 29 Apr 2022 01:43:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=u/nkZHXCBB5ZrJnB24ro/1pCmNvdbhB1vwTZ80wJLns=; b=XaY2dPu/lFT6NMPZi5s+4KX4jmMSM270XPQx6bvj8HN+8yCMwKpgWcXo5Xwhmd62S/ GCNV6TKUpWUXAXVcyGsayNxCqc3EqtX0NUn7o5NjGLPY7vyzuq4R5vmQZm3FVNfPkreJ Rj9qLbWxa8xszNvnBGI+G90MqUfXLGHKgWhqikajYdXx7SGqidXMSV6lSXQceigClkTr ott98xEfYwU6RrM2AA95Ij+ebn2muftFRRY4QDNtMVjnMncrBfIcmDChQCR/tnq+ARQp vvXkVmmVMwBUaQFmeUAGdXNGIr5xKrygDgugK8ehqm+O77q5B7V6KgIFdfGYlelkqYuv gXWw== X-Gm-Message-State: AOAM532scbOI0Oj6pD6hbTLFslrUAuhzRoA7GKitLGKWjE+Yf0X62ZXV JqwtoAoEJWqpICgSOmtOMQ6D5t68V/9ZVZhioYg06ZpnxVSxgzn1nfszAxi9JXbRNKe+QuFckqe PETuaFkZtpbKzlms4cOrgv8nU3Hl+QTLdSxeKxnATT+o5Hh3nLG/XL+nDNMjSC8t/LFA5HMjDi+ E= X-Received: by 2002:adf:decb:0:b0:20a:c975:8eec with SMTP id i11-20020adfdecb000000b0020ac9758eecmr28946012wrn.438.1651221797515; Fri, 29 Apr 2022 01:43:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy8Bnodipm9XVNni3rYsFrTH34G/LMUhH0fq+PeE59BdcIE+fgw0hrkNZbBfqT2Hiuz7RWIbw== X-Received: by 2002:adf:decb:0:b0:20a:c975:8eec with SMTP id i11-20020adfdecb000000b0020ac9758eecmr28945970wrn.438.1651221797201; Fri, 29 Apr 2022 01:43:17 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:16 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Javier Martinez Canillas , Alex Deucher , Changcheng Deng , Daniel Vetter , Helge Deller , Sam Ravnborg , Zhen Lei , linux-fbdev@vger.kernel.org Subject: [RFC PATCH v4 08/11] fbdev: Fix race between sysfb and framebuffer devices registration Date: Fri, 29 Apr 2022 10:42:50 +0200 Message-Id: <20220429084253.1085911-9-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The platform devices registered by sysfb match with firmware-based DRM or fbdev drivers, that are used to have early graphics using a framebuffer provided by the system firmware. DRM or fbdev drivers later are probed and remove all conflicting framebuffe= rs, leading to these platform devices for generic drivers to be unregistered. But the current solution has a race, since the sysfb_init() function could be called after a DRM driver is probed and requested to unregister devices for drivers with conflicting framebuffes. To prevent this, disable any future sysfb platform device registration by calling sysfb_disable(), if either a framebuffer device or a DRM device is registered. Since in that case a display will already be present. Suggested-by: Daniel Vetter Signed-off-by: Javier Martinez Canillas --- (no changes since v3) Changes in v3: - Call sysfb_disable() when a fbdev framebuffer is registered rather than when conflicting framebuffers are removed (Thomas Zimmermann). - Drop Daniel Vetter's Reviewed-by tag since patch changed a lot. Changes in v2: - Explain in the commit message that fbmem has to unregister the device as fallback if a driver registered the device itself (Daniel Vetter). - Also explain that fallback in a comment in the code (Daniel Vetter). - Don't encode in fbmem the assumption that sysfb will always register platform devices (Daniel Vetter). - Add a FIXME comment about drivers registering devices (Daniel Vetter). drivers/video/fbdev/core/fbmem.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fb= mem.c index d6ae33990f40..7583296481b0 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -1903,6 +1904,17 @@ register_framebuffer(struct fb_info *fb_info) ret =3D do_register_framebuffer(fb_info); mutex_unlock(®istration_lock); =20 + /* + * If a driver registers a framebuffer device, then it can be assumed + * that a display will be present and there is no need for a generic + * driver using the firmware setup system framebuffer. + * + * Disable sysfb and prevent registering simple framebuffer devices, + * but only do it for framebuffers that are not provided by firmware. + */ + if (!(fb_info->flags & FBINFO_MISC_FIRMWARE)) + sysfb_disable(); + return ret; } EXPORT_SYMBOL(register_framebuffer); --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 918C9C433EF for ; Fri, 29 Apr 2022 08:44:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350242AbiD2IrO (ORCPT ); Fri, 29 Apr 2022 04:47:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355976AbiD2Iqn (ORCPT ); Fri, 29 Apr 2022 04:46:43 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id D265DC403B for ; Fri, 29 Apr 2022 01:43:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221802; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DTpQrVgtEus10W4LvCQhMZMxqMItEWJawYg8qRPBPlQ=; b=Te+alpM0gDDWP04g9Eb+CclTzn8Qbies7bjm78ugfy+9EVOiai0SdAavUPE/PtehsELW8c wsatFJq0u6xWzKtqjLdY61j6fqYhfs1D2CqZplxckogqI0rENeJU2mJjYudT+M+u/4S0c5 YjvgJheOFMuoMGgSeNVQBdjQ2RwKp2M= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-578-66_2LLDPPY628LoeRbkSxw-1; Fri, 29 Apr 2022 04:43:20 -0400 X-MC-Unique: 66_2LLDPPY628LoeRbkSxw-1 Received: by mail-wr1-f70.google.com with SMTP id n17-20020adfc611000000b0020a7e397ccaso2787792wrg.23 for ; Fri, 29 Apr 2022 01:43:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DTpQrVgtEus10W4LvCQhMZMxqMItEWJawYg8qRPBPlQ=; b=4FzMg2s6pksXfTI7pKLc7+TG9vUBg0HIeT+bjSoSKcfD/6cWOIdPmUXKNYCX2mV5HQ XPz5MgdW3+iZKJ17SD5bsteGLBr2RNbLK2aJH2L/9TLrcBUKIoeosrwtkOiPJcCqLOVk fltSFpOoMrRDHTFxg0i30AQ1bnlctaVKCaYB3aXtBeMGL5XHpYvr9aY8SosRGfFawWoC NoikXH8GnhWSHIQuyXzYiWUShFv2PUHc4v3xIxdb1W3CiOh4a9PibxFmQ5BqAtmDK56H VAIQveiTzf7gptMu3TL6lWqqn7RP7SubMx8w59aPadM1YBCxxCTXslzKlICXX3UC7JK5 WQ9Q== X-Gm-Message-State: AOAM531k8ghzn9Mdx6Ysae/6Ip/pVG48wFqNycdiQ52tBcbDao2W+zz4 O57i7W1CrZIfQM/fpGB0IHcLuoz99J52hu5YpJqa6qBCC0njz0wjR+a4IZ5q65iWLsBce1Ue07o c50zU4xLIWGe5lxtxu/k0dOCL7idr2fQI8ZNdlWkBMmBgBc6nl9MJoPN6DDqsPVjO2xOFVi5ij/ M= X-Received: by 2002:a05:6000:c:b0:20a:df2e:2c38 with SMTP id h12-20020a056000000c00b0020adf2e2c38mr17608235wrx.481.1651221799589; Fri, 29 Apr 2022 01:43:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyWrC4ya/rMI6HLQk7JSawGUTh/QcZs606nyrC5F9U2cmzfWUxtJf62tVPglLeePqo2GOHhKw== X-Received: by 2002:a05:6000:c:b0:20a:df2e:2c38 with SMTP id h12-20020a056000000c00b0020adf2e2c38mr17608204wrx.481.1651221799301; Fri, 29 Apr 2022 01:43:19 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:18 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Javier Martinez Canillas , Daniel Vetter , David Airlie , Maarten Lankhorst , Maxime Ripard Subject: [RFC PATCH v4 09/11] drm: Fix race between sysfb and DRM devices registration Date: Fri, 29 Apr 2022 10:42:51 +0200 Message-Id: <20220429084253.1085911-10-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The platform devices registered by sysfb match with firmware-based DRM or fbdev drivers, that are used to have early graphics using a framebuffer provided by the system firmware. DRM or fbdev drivers later are probed and remove all conflicting framebuffe= rs, leading to these platform devices for generic drivers to be unregistered. But the current solution has a race, since the sysfb_init() function could be called after a DRM driver is probed and requested to unregister devices for drivers with conflicting framebuffes. To prevent this, disable any future sysfb platform device registration by calling sysfb_disable(), if either a framebuffer device or a DRM device is registered. Since in that case a display will already be present. Suggested-by: Daniel Vetter Signed-off-by: Javier Martinez Canillas --- (no changes since v3) Changes in v3: - Call sysfb_disable() when a DRM device is registered rather than when conflicting framebuffers are removed (Thomas Zimmermann). drivers/gpu/drm/drm_drv.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 8214a0b1ab7f..e577c42861c6 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -34,6 +34,7 @@ #include #include #include +#include =20 #include #include @@ -913,6 +914,17 @@ int drm_dev_register(struct drm_device *dev, unsigned = long flags) out_unlock: if (drm_dev_needs_global_mutex(dev)) mutex_unlock(&drm_global_mutex); + + /* + * If a driver registers a DRM device, then it can be assumed that a + * display will be present and there is no need for a generic driver + * using the firmware setup system framebuffer. + * + * Disable sysfb and prevent registering simple framebuffer devices. + */ + if (!drm_core_check_feature(dev, DRIVER_FIRMWARE)) + sysfb_disable(); + return ret; } EXPORT_SYMBOL(drm_dev_register); --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 17946C433FE for ; Fri, 29 Apr 2022 08:44:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356023AbiD2IrT (ORCPT ); Fri, 29 Apr 2022 04:47:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355982AbiD2Iqn (ORCPT ); Fri, 29 Apr 2022 04:46:43 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 57BBFC42C1 for ; Fri, 29 Apr 2022 01:43:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221803; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UDplaZMb5YseJ+Hq/qs3ip7VsbbgryHldJFcbzukwP8=; b=U7i50dcwnuVcFg7vzfU0Odeyc2piyfq7FGbYmQLgAeMThQ5bcHxHu1/eKjl3TfVdokUn94 6Yib/O6obMEgArnquFQDmF3Vu/p/VAjt3VUh+PJpPcYmuJDa2iRvE5Ref8odRTBdOgDfi3 xPprOQZKM9C0AV8crvVI03LwKEVdJvU= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-580-un3qccxAMRG9j7y3rllZOg-1; Fri, 29 Apr 2022 04:43:22 -0400 X-MC-Unique: un3qccxAMRG9j7y3rllZOg-1 Received: by mail-wr1-f72.google.com with SMTP id u26-20020adfb21a000000b0020ac48a9aa4so2814706wra.5 for ; Fri, 29 Apr 2022 01:43:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UDplaZMb5YseJ+Hq/qs3ip7VsbbgryHldJFcbzukwP8=; b=IroHDyKrNjqY5CvXvHFU6W+EA6TntU5EKqv6zRZXwy5Tl3FzA5k9m4F36LT3VASp0W t26KWiAAO1aEer+2Qujr9V31hfo02i8fGFTMAWFE95dT3xhvhz9wllyxWoERhiNEULq+ yT3LBWUmTtXtRH7xtErINOHhBD4H9/zLqqCSrUwqs3izmYS0CseF8cun5TJK+qheyha8 2ICP4/yjB/sPTr6t8MfebDUixK1v7toqOHvYG+0lZDEUEJzVWfKigSK5/UaH5XMouWFw 3DODFvBGP4/al7uCrdFQgZks5ugCTmnimQlfb2+xjoBYaLyidb0Wb5exjd9yRBtFG1j4 cJWA== X-Gm-Message-State: AOAM533tsV/yTPRXnPCDnyPaUyVC2Om7Ny5WL4Vtk1DYiMVjd/OTuuio IYsV5Vqray34tciLWkhqahmB23S40Z1JcN4UqaaeivHsTOyYcBgjL2R0ju5d7O5XHBlahLKPRw/ 7VPJMr/i7Xat00D3WqWdHWD5SRky3LwChCtt5kwLxcg8EhNw/6KApIOCaAopbgHpzmmpEE7DKvL Y= X-Received: by 2002:a05:600c:502b:b0:38f:f7c6:3609 with SMTP id n43-20020a05600c502b00b0038ff7c63609mr2151336wmr.15.1651221800765; Fri, 29 Apr 2022 01:43:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyUhJr7adxWPTzLPcLhzy6SAp4kBXCJcXEMXapEUCxJwsbfEcTFBfqvmjks4+3ERNh1qQu2xw== X-Received: by 2002:a05:600c:502b:b0:38f:f7c6:3609 with SMTP id n43-20020a05600c502b00b0038ff7c63609mr2151311wmr.15.1651221800430; Fri, 29 Apr 2022 01:43:20 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:20 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , Zack Rusin , Javier Martinez Canillas , Hans de Goede , Ilya Trukhanov , Daniel Vetter , Peter Jones , linux-fbdev@vger.kernel.org, Helge Deller Subject: [RFC PATCH v4 10/11] Revert "fbdev: Prevent probing generic drivers if a FB is already registered" Date: Fri, 29 Apr 2022 10:42:52 +0200 Message-Id: <20220429084253.1085911-11-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Daniel Vetter This reverts commit fb561bf9abde49f7e00fdbf9ed2ccf2d86cac8ee. With commit 27599aacbaefcbf2af7b06b0029459bbf682000d Author: Thomas Zimmermann Date: Tue Jan 25 10:12:18 2022 +0100 fbdev: Hot-unplug firmware fb devices on forced removal this should be fixed properly and we can remove this somewhat hackish check here (e.g. this won't catch drm drivers if fbdev emulation isn't enabled). Cc: Thomas Zimmermann Cc: Zack Rusin Cc: Javier Martinez Canillas Cc: Zack Rusin Cc: Hans de Goede Cc: Ilya Trukhanov Signed-off-by: Daniel Vetter Signed-off-by: Daniel Vetter Reviewed-by: Javier Martinez Canillas Cc: Peter Jones Cc: linux-fbdev@vger.kernel.org Signed-off-by: Javier Martinez Canillas --- (no changes since v1) drivers/video/fbdev/efifb.c | 11 ----------- drivers/video/fbdev/simplefb.c | 11 ----------- 2 files changed, 22 deletions(-) diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c index ea42ba6445b2..edca3703b964 100644 --- a/drivers/video/fbdev/efifb.c +++ b/drivers/video/fbdev/efifb.c @@ -351,17 +351,6 @@ static int efifb_probe(struct platform_device *dev) char *option =3D NULL; efi_memory_desc_t md; =20 - /* - * Generic drivers must not be registered if a framebuffer exists. - * If a native driver was probed, the display hardware was already - * taken and attempting to use the system framebuffer is dangerous. - */ - if (num_registered_fb > 0) { - dev_err(&dev->dev, - "efifb: a framebuffer is already registered\n"); - return -EINVAL; - } - if (screen_info.orig_video_isVGA !=3D VIDEO_TYPE_EFI || pci_dev_disabled) return -ENODEV; =20 diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c index 94fc9c6d0411..0ef41173325a 100644 --- a/drivers/video/fbdev/simplefb.c +++ b/drivers/video/fbdev/simplefb.c @@ -413,17 +413,6 @@ static int simplefb_probe(struct platform_device *pdev) struct simplefb_par *par; struct resource *res, *mem; =20 - /* - * Generic drivers must not be registered if a framebuffer exists. - * If a native driver was probed, the display hardware was already - * taken and attempting to use the system framebuffer is dangerous. - */ - if (num_registered_fb > 0) { - dev_err(&pdev->dev, - "simplefb: a framebuffer is already registered\n"); - return -EINVAL; - } - if (fb_get_options("simplefb", NULL)) return -ENODEV; =20 --=20 2.35.1 From nobody Sun May 10 16:25:42 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0A58BC433F5 for ; Fri, 29 Apr 2022 08:44:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356065AbiD2IrX (ORCPT ); Fri, 29 Apr 2022 04:47:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355992AbiD2Iqn (ORCPT ); Fri, 29 Apr 2022 04:46:43 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A1B0BC400A for ; Fri, 29 Apr 2022 01:43:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651221804; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GpZJ4wX7kOe8KNr9fDnXvQai/0Kn9GYbVZ0gMqgfC8g=; b=WUtPRD7NE/d2gGgFbZzDswqfdQ2Qn7UBp1lfOJNdZLTleJL6QETq72ou4yhfB6FNSwpeON CTDntLz6pNyOSvTPUMNXr7iXGcADNayGBQ+8wp+M4eBhfCtrTXH5oTQ4TcDX1Wr8NXVIsC 5CJLRUBulQGCwBn6SlGTBYQy6bCJMsk= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-596-DCjSJ6POPsuQmosYLW14wg-1; Fri, 29 Apr 2022 04:43:23 -0400 X-MC-Unique: DCjSJ6POPsuQmosYLW14wg-1 Received: by mail-wm1-f72.google.com with SMTP id h65-20020a1c2144000000b0038e9ce3b29cso5597251wmh.2 for ; Fri, 29 Apr 2022 01:43:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GpZJ4wX7kOe8KNr9fDnXvQai/0Kn9GYbVZ0gMqgfC8g=; b=aJDyLYDe+Z6G+wPGACOoHkpel9YWYcW4tCOcOZh99/54SYWpWhu5xHqym35PheXOMV lz67OCh8noCDJJ62tGMEUICn5SfmiOvXrFpwFKfUUnRUzof1bGcbzsl7/8MCZB1OU/Qs QqcICSVY2E6dalA2x73EdESpgYaHYBdIAldk4D4RRCLFkdBEXA+sKNZYnxuxeoMRnW+2 cRD4vhIpg3+aUebpXdbndKiXj7uLb1sACYt/twQyuajha3KLpFChUPToOa/ZEbW40obl N0lEha+t9evQAdNjvpSDQKjPoCSsoROH1dCEH2fzlIKuuZ6txLdFMK/Rr49lt4LA1yuY 0l5g== X-Gm-Message-State: AOAM531SCC59ZjkAhPDNWn98ar7p9nul76d//L7qXiyByLohz+MjuWkg sBohwHbs8WrqlHf610WD5p09NS0MBhiYwvrD4/GRvTskuYsRHBwjwMJqOKV0iaVb0gaPc82XP9t iuvWMrq4F/ZvTiuawMV4FEkIpZ44GdA26QX+Szksv4xF7u4ozzKFMiRLAJgutGAd5bxR5yBCLE6 o= X-Received: by 2002:a05:600c:4ec6:b0:394:1f35:4c69 with SMTP id g6-20020a05600c4ec600b003941f354c69mr1752585wmq.61.1651221802322; Fri, 29 Apr 2022 01:43:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwhmIBm7Rgju2BXAxf7jfHuCnxn2Uoy7l4mQ/iKVv2qM/3Q7Bt+zoSMdfHM0/61ANAlGkIsNA== X-Received: by 2002:a05:600c:4ec6:b0:394:1f35:4c69 with SMTP id g6-20020a05600c4ec600b003941f354c69mr1752548wmq.61.1651221802012; Fri, 29 Apr 2022 01:43:22 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id f7-20020a05600c4e8700b00393f1393abfsm7199256wmq.41.2022.04.29.01.43.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Apr 2022 01:43:21 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , Greg Kroah-Hartman , Thomas Zimmermann , kernel test robot , Jens Frederich , Jon Nettleton , linux-staging@lists.linux.dev, Daniel Vetter , Javier Martinez Canillas , Daniel Vetter , Helge Deller , Matthew Wilcox , Sam Ravnborg , Tetsuo Handa , Zhen Lei , Alex Deucher , Xiyu Yang , linux-fbdev@vger.kernel.org, Zheyu Ma , Guenter Roeck , Changcheng Deng Subject: [RFC PATCH v4 11/11] fbdev: Make registered_fb[] private to fbmem.c Date: Fri, 29 Apr 2022 10:42:53 +0200 Message-Id: <20220429084253.1085911-12-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220429084253.1085911-1-javierm@redhat.com> References: <20220429084253.1085911-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Daniel Vetter Well except when the olpc dcon fbdev driver is enabled, that thing digs around in there in rather unfixable ways. Cc oldc_dcon maintainers as fyi. v2: I typoed the config name (0day) Cc: kernel test robot Cc: Jens Frederich Cc: Jon Nettleton Cc: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev Signed-off-by: Daniel Vetter Signed-off-by: Daniel Vetter Reviewed-by: Javier Martinez Canillas Cc: Daniel Vetter Cc: Helge Deller Cc: Matthew Wilcox Cc: Sam Ravnborg Cc: Tetsuo Handa Cc: Zhen Lei Cc: Alex Deucher Cc: Xiyu Yang Cc: linux-fbdev@vger.kernel.org Cc: Zheyu Ma Cc: Guenter Roeck Signed-off-by: Javier Martinez Canillas --- (no changes since v1) drivers/video/fbdev/core/fbmem.c | 8 ++++++-- include/linux/fb.h | 7 +++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fb= mem.c index 7583296481b0..1ce5b0f3abd4 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -50,10 +50,14 @@ static DEFINE_MUTEX(registration_lock); =20 struct fb_info *registered_fb[FB_MAX] __read_mostly; -EXPORT_SYMBOL(registered_fb); - int num_registered_fb __read_mostly; +#if IS_ENABLED(CONFIG_FB_OLPC_DCON) +EXPORT_SYMBOL(registered_fb); EXPORT_SYMBOL(num_registered_fb); +#endif +#define for_each_registered_fb(i) \ + for (i =3D 0; i < FB_MAX; i++) \ + if (!registered_fb[i]) {} else =20 bool fb_center_logo __read_mostly; =20 diff --git a/include/linux/fb.h b/include/linux/fb.h index b781bc721113..208bca693b33 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -623,16 +623,15 @@ extern int fb_get_color_depth(struct fb_var_screeninf= o *var, extern int fb_get_options(const char *name, char **option); extern int fb_new_modelist(struct fb_info *info); =20 +#if IS_ENABLED(CONFIG_FB_OLPC_DCON) extern struct fb_info *registered_fb[FB_MAX]; + extern int num_registered_fb; +#endif extern bool fb_center_logo; extern int fb_logo_count; extern struct class *fb_class; =20 -#define for_each_registered_fb(i) \ - for (i =3D 0; i < FB_MAX; i++) \ - if (!registered_fb[i]) {} else - static inline void lock_fb_info(struct fb_info *info) { mutex_lock(&info->lock); --=20 2.35.1