From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757921AbaEFNiv (ORCPT ); Tue, 6 May 2014 09:38:51 -0400 Received: from cantor2.suse.de ([195.135.220.15]:37983 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754502AbaEFNit (ORCPT ); Tue, 6 May 2014 09:38:49 -0400 Date: Tue, 06 May 2014 15:38:47 +0200 Message-ID: From: Takashi Iwai To: David Herrmann Cc: Daniel Vetter , dri-devel , Linux Kernel Mailing List Subject: Re: Atomicity in KMS panic notifier In-Reply-To: References: User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/24.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At Tue, 6 May 2014 15:32:21 +0200, David Herrmann wrote: > > Hi > > On Tue, May 6, 2014 at 3:27 PM, Takashi Iwai wrote: > > At Mon, 5 May 2014 16:52:45 +0200, > > Daniel Vetter wrote: > >> > >> On Mon, May 5, 2014 at 4:48 PM, Takashi Iwai wrote: > >> > > >> > The current problem I see is that the rest of panic notifier chain > >> > won't be called once when we hit the problem in KMS notifier. So, > >> > this bug in KMS influences on the rest panic behavior. > >> > > >> > Maybe a hackish solution would be to keep KMS notifier at the end of > >> > notifier chain so that it crashes at last. I don't like this either, > >> > but... > >> > >> You need to do that with both the kms panic notifier in > >> drm_fb_helper.c and with the fbcon panic notifier. And iirc there's > >> also a console->unblank call somewhere which _also_ can end up in > >> ->set_par. But I'm not sure anymore when exactly that one is run, I've > >> tried hard to forget this all ;-) > > > > Looking back at the code again, it seems that fbcon has no panic > > notifier. It has own notifier chain, but it's a private chain that > > isn't called by the panic. So, we can forget about fbcon, at least (I > > hope). > > fbcon is called through the VT or fbdev layer, which is called by > bust_spinlocks(1) via either unblank_screen() or console_unblank(). You mean bust_spinlocks(0), right? void __attribute__((weak)) bust_spinlocks(int yes) { if (yes) { ++oops_in_progress; } else { #ifdef CONFIG_VT unblank_screen(); #endif console_unblank(); if (--oops_in_progress == 0) wake_up_klogd(); } } bust_spinlocks(0) is called after the notifier chain, and it's almost at the end of panic(). Takashi