Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp1688939pxb; Wed, 9 Feb 2022 02:14:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJz5yQWqjh2oZh510bFo+UUIZfGg+9NXNy0kIjBsk3KXM9/2bicZbKdHd/js49YllXDyfqSZ X-Received: by 2002:a17:902:d2ce:: with SMTP id n14mr1425036plc.20.1644401697538; Wed, 09 Feb 2022 02:14:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644401697; cv=none; d=google.com; s=arc-20160816; b=f5SwEsktgBBj1N2vE+RTSwsmN/e7BgR/ou2/kvQe2oB3HaViXj7B9rqL9iwRjzrMF5 0q59hxWb/0DDlknWB3LlDP1dwus78tZ02+Z1WDYwM5uyoEC2sfNl5UiTOoyUahOrEA/k /F+/ptL1aDx9uNARPhgR7hUEPca3MIFUNnVvquRpflHf7gzhd0idyzpqbzQusZdRjTdj pwHk7adYEsTDGNVBDkPDnwt3e67OL7veqZcARpcDF665vHSRmiW5X1evv+NxnbRA9V2W EDXi/tqMgW9zIvL0yjtgCfto1qp1nyU2NWKN1f/wX3pu1/TKNreWN4cZvhSAvTZe5iq0 mqkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:mail-followup-to:message-id:subject:cc:to:from:date :dkim-signature; bh=BXt38BIb4BsxmoILV2hS+yHc+uwdusfiide0L8IIR1w=; b=rKwLM4HPzdlH+XROn55V7B6zLB/F3Jeca8umXFxMVPZqCWd/7si9wxOBzTPLxcw6/o EFH8jBtOxMAEAlDAIGXKeSei8/NKCxraEr3c1PhdazKjB/5dTtBoikl58Lj9AQv8KBsK YUjreZkR9qpGUKl8c2vUA7p4W4G+uFg/wBMTsp8l0M4KwXT7PCz8jh/pRPfN4okDeHLC Rqzn3lR2q/NMfBRiit1CEdrYe8qga+gkwqbtEf4aO7/EF6gq/l0omF7nnhAG9q3ngWIZ PMjRoE3bsguumKcQ+7Mqy1BACdbU8sJhQzH5Ldf8tBLWCOelRgeSCxq2134uddvussZm f8vQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=QPvCr8f7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id j17si6848103plx.316.2022.02.09.02.14.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Feb 2022 02:14:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=QPvCr8f7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 254A8E04ADBD; Wed, 9 Feb 2022 01:16:37 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377063AbiBHN62 (ORCPT + 99 others); Tue, 8 Feb 2022 08:58:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237437AbiBHN60 (ORCPT ); Tue, 8 Feb 2022 08:58:26 -0500 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 746D2C03FED0 for ; Tue, 8 Feb 2022 05:58:25 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id l67-20020a1c2546000000b00353951c3f62so1708910wml.5 for ; Tue, 08 Feb 2022 05:58:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=date:from:to:cc:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to; bh=BXt38BIb4BsxmoILV2hS+yHc+uwdusfiide0L8IIR1w=; b=QPvCr8f7gt0O2rdEekCD8+qTME+d1PPtM0V5sOWL3bUEB8tbWqHQQDQ4TK0TBubO1/ OOeEGgPCuJi+N1RI7D4rz4v3o5dPlS3VWgT0fLpjup8sX3RJ+yes9sgJrZvn60nLCDBO DiPyhjP+yvCnkh9C4e9Cc1T/AnlWS7qMHGwtA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to; bh=BXt38BIb4BsxmoILV2hS+yHc+uwdusfiide0L8IIR1w=; b=FZhwJmsG7aUD/X1BEwwG8WFHsnCoTFVf+K+1UHBYRL7LpqeoZIR9uEcO2ediGaBS1J XvcQK+RbybiGNUMYdzalu8j9+xybpMbrWaKx1PfxwYC133T3gpAWcQugBGFvnz0vb8eg fFE2rw8eybD4qotWh5s11WS3JCVRJ/hrEj1rCSGR/RjUJwTDmZc4A4HQS+xUpTFYJ790 q11de+xSrLw+Trr2IIzmf9zqCAQ8MHOINhETW6BDyO2oqGN8oDaCLQF75I8/LT/YkXcq w4RbtagxYXztOInTipE/iJnlHoNqs/kRiPuRUqot8o0h34SDUn6UV283MlLw0W7jt9P7 gDtA== X-Gm-Message-State: AOAM532FpJtOtr1obBfgAJALhyLQSClUfqcr7Orjaii2QY4gcD9oCMot RCnA9ZIhLJQvQdA91o4+NUS/FQ== X-Received: by 2002:a05:600c:3848:: with SMTP id s8mr1230909wmr.151.1644328704022; Tue, 08 Feb 2022 05:58:24 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id k6sm3370850wms.14.2022.02.08.05.58.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Feb 2022 05:58:23 -0800 (PST) Date: Tue, 8 Feb 2022 14:58:21 +0100 From: Daniel Vetter To: Sam Ravnborg Cc: Daniel Vetter , DRI Development , linux-fbdev@vger.kernel.org, Du Cheng , Tetsuo Handa , Intel Graphics Development , LKML , Claudio Suarez , Greg Kroah-Hartman , Daniel Vetter Subject: Re: [PATCH 18/21] fbcon: untangle fbcon_exit Message-ID: Mail-Followup-To: Sam Ravnborg , DRI Development , linux-fbdev@vger.kernel.org, Du Cheng , Tetsuo Handa , Intel Graphics Development , LKML , Claudio Suarez , Greg Kroah-Hartman , Daniel Vetter References: <20220131210552.482606-1-daniel.vetter@ffwll.ch> <20220131210552.482606-19-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Operating-System: Linux phenom 5.10.0-8-amd64 X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 04, 2022 at 09:06:38PM +0100, Sam Ravnborg wrote: > Hi Daniel, > > On Mon, Jan 31, 2022 at 10:05:49PM +0100, Daniel Vetter wrote: > > There's a bunch of confusions going on here: > > - The deferred fbcon setup notifier should only be cleaned up from > > fb_console_exit(), to be symmetric with fb_console_init() > > - We also need to make sure we don't race with the work, which means > > temporarily dropping the console lock (or we can deadlock) > > - That also means no point in clearing deferred_takeover, we are > > unloading everything anyway. > > - Finally rename fbcon_exit to fbcon_release_all and move it, since > > that's what's it doing when being called from consw->con_deinit > > through fbcon_deinit. > > > > Signed-off-by: Daniel Vetter > > Cc: Daniel Vetter > > Cc: Greg Kroah-Hartman > > Cc: Claudio Suarez > > Cc: Du Cheng > > Cc: Tetsuo Handa > > --- > > drivers/video/fbdev/core/fbcon.c | 63 ++++++++++++++++---------------- > > 1 file changed, 32 insertions(+), 31 deletions(-) > > > > diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c > > index 5c14e24d14a1..22581952b4fd 100644 > > --- a/drivers/video/fbdev/core/fbcon.c > > +++ b/drivers/video/fbdev/core/fbcon.c > > @@ -185,7 +185,6 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var, > > int unit); > > static void fbcon_modechanged(struct fb_info *info); > > static void fbcon_set_all_vcs(struct fb_info *info); > > -static void fbcon_exit(void); > > > > static struct device *fbcon_device; > > > > @@ -1149,6 +1148,27 @@ static void fbcon_free_font(struct fbcon_display *p, bool freefont) > > > > static void set_vc_hi_font(struct vc_data *vc, bool set); > > > > +static void fbcon_release_all(void) > > +{ > > + struct fb_info *info; > > + int i, j, mapped; > > + > > + for_each_registered_fb(i) { > > + mapped = 0; > > + info = registered_fb[i]; > > + > > + for (j = first_fb_vc; j <= last_fb_vc; j++) { > > + if (con2fb_map[j] == i) { > > + mapped = 1; > > + con2fb_map[j] = -1; > > + } > > + } > > + > > + if (mapped) > > + fbcon_release(info); > > + } > > +} > > + > > static void fbcon_deinit(struct vc_data *vc) > > { > > struct fbcon_display *p = &fb_display[vc->vc_num]; > > @@ -1188,7 +1208,7 @@ static void fbcon_deinit(struct vc_data *vc) > > set_vc_hi_font(vc, false); > > > > if (!con_is_bound(&fb_con)) > > - fbcon_exit(); > > + fbcon_release_all(); > > > > if (vc->vc_num == logo_shown) > > logo_shown = FBCON_LOGO_CANSHOW; > > @@ -3316,34 +3336,6 @@ static void fbcon_start(void) > > #endif > > } > > > > -static void fbcon_exit(void) > > -{ > > - struct fb_info *info; > > - int i, j, mapped; > > - > > -#ifdef CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER > > - if (deferred_takeover) { > > - dummycon_unregister_output_notifier(&fbcon_output_nb); > > - deferred_takeover = false; > > - } > > -#endif > > - > > - for_each_registered_fb(i) { > > - mapped = 0; > > - info = registered_fb[i]; > > - > > - for (j = first_fb_vc; j <= last_fb_vc; j++) { > > - if (con2fb_map[j] == i) { > > - mapped = 1; > > - con2fb_map[j] = -1; > > - } > > - } > > - > > - if (mapped) > > - fbcon_release(info); > > - } > > -} > > - > > void __init fb_console_init(void) > > { > > int i; > > @@ -3383,10 +3375,19 @@ static void __exit fbcon_deinit_device(void) > > > > void __exit fb_console_exit(void) > > { > > +#ifdef CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER > > + console_lock(); > > + if (deferred_takeover) > > + dummycon_unregister_output_notifier(&fbcon_output_nb); > > + console_unlock(); > > + > > + cancel_work_sync(&fbcon_deferred_takeover_work); > > +#endif > > + > > console_lock(); > > fbcon_deinit_device(); > > device_destroy(fb_class, MKDEV(0, 0)); > > - fbcon_exit(); > > + > We loose the call to fbcon_release_all() here. > We have part of the old fbcon_exit() above, but miss the release parts. > > Maybe I missed something obvious? Ah yes that's the entire point of this change. The release_all in the fbcon exit path was only needed when fbcon was a separate module indepedent from core fb.ko. Which means it was possible to unload fbcon while having fbdev drivers registered. But since we've merged them that has become impossible, so by the time the fb.ko module can be unloaded, there's guaranteed to be no fbdev drivers left. And hence removing them is pointless. Ack with that explainer added to the commit message? -Daniel > > The rest looks fine. > > Sam > > > do_unregister_con_driver(&fb_con); > > console_unlock(); > > } > > -- > > 2.33.0 -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch