Received: by 2002:ac0:aa62:0:0:0:0:0 with SMTP id w31-v6csp1426065ima; Sun, 21 Oct 2018 11:26:56 -0700 (PDT) X-Google-Smtp-Source: ACcGV60VkU84FdC3VbnhqfAV10iN5+mLUV+parfsADtVJDohQfWLYwZbg5D+Am51S2PaHBGvLjmU X-Received: by 2002:a63:ac02:: with SMTP id v2-v6mr40141102pge.414.1540146416316; Sun, 21 Oct 2018 11:26:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540146416; cv=none; d=google.com; s=arc-20160816; b=YPED0hNyYGKr8WX634EZOJAkYHaWHfkLr10Llyd6KGQ4U4NEupau1FFOZjKt3OQmxI +QGNZpv6SooOAnvKA9YIjr+fuw7fX/uRjbbINw7YD9GQtAajGGVrytbOruA34Wj3XURI A20JY1s1vYLoBgRQoEWu9550OS4nCi2BS0G3H0R3H1tJZIaNorhm0OYlmC7JnQvGueOn FhvVbJ++pqkYSlWLnoaDAIxtQwGyr+ZfgdAIUraJO79to95BUvZDdGbXLHag5pAw0BSM N67SG9F4PHYor664wlalFmSTPD3KmEdE8cdHEJOs2OLwXPw+Ho4dpXY/pKmS1nVB7rEj lCag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=LHi7ghLXIuTdqREk+dKrUGvv93rYkBZejnvIvRVWX4U=; b=AG9R7+y7/SHIWW6AZ0ukgw9zzr7+E5eDX6Zz/KkW4e28KY3ZrltdKOCdTqDQA7apz5 4YHBncjvxjOEDpU1QyPUyNPQzizf0qHkspgCERVqjRfthsd5Zx4iVE3EyTXSq6X6EYTF LZEa0zTAXMZVGHgik12la2tUIPL0qbBn3RF1ofowVPB7hDZtBG/9JLjDy0WkxkQymEeU AW7qKVsIYmQQkH5ZJv2OrylP+AFGEdHyUYLnOy2LfeM0GFfUs+epxInqZ4kK3f37tWqY cn4Iy1Dr8UWbcWnpgEf87/QXh3GRH2Y8NFDroRh2/+7h/Rgc3JcDHaru/FDaFpFXCJ+4 SI8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=fyvU9l6t; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y5-v6si29598149pgv.38.2018.10.21.11.26.25; Sun, 21 Oct 2018 11:26:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=fyvU9l6t; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728028AbeJVCYs (ORCPT + 99 others); Sun, 21 Oct 2018 22:24:48 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:33176 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727832AbeJVCYs (ORCPT ); Sun, 21 Oct 2018 22:24:48 -0400 Received: by mail-wr1-f68.google.com with SMTP id u1-v6so6657449wrn.0 for ; Sun, 21 Oct 2018 11:09:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=LHi7ghLXIuTdqREk+dKrUGvv93rYkBZejnvIvRVWX4U=; b=fyvU9l6tbaUF143vNH3jumtR96K3QTAP/ONPQCJ5I5i3LPnLEfA2EapvPm5WidAX+h sZh+wwVaVjgkdGu4NzEBIGjvUUgChiuDgspXN6Ir0jLKJ0JMN42frZzLtodlhFys1eMl V8zhOObvJdwgxWcJ6ZwoLeeJuzxC3+VTNuRYfsflvF8Gbu5tXSv52ZjidV79LxCJmClS Q5Hxts90+Is3NusxWniRZN9FacRj4iWzFQb+bfYtqPJ0IF/TVvT8y97aXP0tBXCOMA37 GaYdJEd/h3oum1SvQLvAqpL1WVc3bVCEQCK3I1cmzGq4gYqtyiEtvMV/UjaHqd3GMP/0 6O+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LHi7ghLXIuTdqREk+dKrUGvv93rYkBZejnvIvRVWX4U=; b=GraxvN11hT5aSA+G0/X3Gx/g92mcaSbwi/lLQdrIPF36HEYj0h6uEtbkzxhrU30frk 1QgNDnR3nhpW13kXvdDbw/GE/gSJ8nep2Q6D09aBMoDrIEpX2Ddn2R9IDKw5ViPOKjwK jLPgIuGHUe+hi/JZk7bn3plxmHeFbIN4iCdpTqpsL1iVC1QWVTW4bFLaNRU8TLyZvKwx +IUKcCOMJNgTPjyoSnmlHVC1t4t9Q+Vt7r9ZmjxSElm+4f8EmV/HPA3vbt533+i9wZyh +LWEJgQQQivJIfItaBE4wu0DcoNjtb0j1ryhwo38cY6ViCdvKKAwRSlFquwPPAUunFHt JeWQ== X-Gm-Message-State: ABuFfohLuwVloVfGdIgeWeuOtJ7FZf4yPvnPeB8IzezSbjNKDofGIbVr XJucPzGW/JjeSlsTT0/YNBDw3c9ntoaVa804mhXH9g== X-Received: by 2002:adf:d4c6:: with SMTP id w6-v6mr26043487wrk.119.1540145377434; Sun, 21 Oct 2018 11:09:37 -0700 (PDT) MIME-Version: 1.0 References: <20181002084225.6z2b74qem3mywukx@pathway.suse.cz> <20181002212327.7aab0b79@vmware.local.home> <20181003091400.rgdjpjeaoinnrysx@pathway.suse.cz> <20181003133704.43a58cf5@gandalf.local.home> <20181004074442.GA12879@jagdpanzerIV> <20181004083609.kcziz2ynwi2w7lcm@pathway.suse.cz> <20181004085515.GC12879@jagdpanzerIV> In-Reply-To: <20181004085515.GC12879@jagdpanzerIV> From: Daniel Wang Date: Sun, 21 Oct 2018 11:09:22 -0700 Message-ID: Subject: Re: 4.14 backport request for dbdda842fe96f: "printk: Add console owner and waiter logic to load balance console writes" To: sergey.senozhatsky.work@gmail.com Cc: Petr Mladek , rostedt@goodmis.org, stable@vger.kernel.org, Alexander.Levin@microsoft.com, akpm@linux-foundation.org, byungchul.park@lge.com, dave.hansen@intel.com, hannes@cmpxchg.org, jack@suse.cz, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Mathieu Desnoyers , Mel Gorman , mhocko@kernel.org, pavel@ucw.cz, penguin-kernel@i-love.sakura.ne.jp, peterz@infradead.org, tj@kernel.org, torvalds@linux-foundation.org, vbabka@suse.cz, Cong Wang , Peter Feiner Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="00000000000027f3fc0578c10aa6" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --00000000000027f3fc0578c10aa6 Content-Type: text/plain; charset="UTF-8" Just got back from vacation. Thanks for the continued discussion. Just so I understand the current state. Looks like we've got a pretty good explanation of what's going on (though not completely sure), and backporting Steven's patches is still the way to go? I see that Sergey had sent an RFC series for similar things. Are those trying to solve the deadlock problem in a different way?On Thu, Oct 4, 2018 at 1:55 AM Sergey Senozhatsky wrote: > > On (10/04/18 10:36), Petr Mladek wrote: > > > > This looks like a reasonable explanation of what is happening here. > > It also explains why the console owner logic helped. > > Well, I'm still a bit puzzled, frankly speaking. I've two theories. > > Theory #1 [most likely] > > Steven is a wizard and his code cures whatever problem we throw it at. > > Theory #2 > > console_sem hand over actually spreads print out, so we don't have one CPU > doing all the printing job. Instead every CPU prints its backtrace, while the > CPU which issued all_cpus_backtrace() waits for them. So all_cpus_backtrace() > still has to wait for NR_CPUS * strlen(bakctrace), which still probably > truggers NMI panic on it at some point. The panic CPU send out stop IPI, then > it waits for foreign CPUs to ACK stop IPI request - for 10 seconds. So each > CPU prints its backtrace, then ACK stop IPI. So when panic CPU proceeds with > flush_on_panic() and emergency_reboot() uart_port->lock is unlocked. Without > the patch we probably declare NMI panic on the CPU which does all the printing > work, and panic sometimes jumps in when that CPU is in busy in > serial8250_console_write(), holding the uart_port->lock. So we can't re-enter > the 8250 driver from panic CPU and we can't reboot the system. In other > words... Steven is a wizard. > > > > serial8250_console_write() > > > { > > > if (port->sysrq) > > > locked = 0; > > > else if (oops_in_progress) > > > locked = spin_trylock_irqsave(&port->lock, flags); > > > else > > > spin_lock_irqsave(&port->lock, flags); > > > > > > ... > > > uart_console_write(port, s, count, serial8250_console_putchar); > > > ... > > > > > > if (locked) > > > spin_unlock_irqrestore(&port->lock, flags); > > > } > > > > > > Now... the problem. A theory, in fact. > > > panic() sets oops_in_progress back to zero - bust_spinlocks(0) - too soon. > > > > I see your point. I am just a bit scared of this way. Ignoring locks > > is a dangerous and painful approach in general. > > Well, I agree. But 8250 is not the only console which does ignore > uart_port lock state sometimes. Otherwise sysrq would be totally unreliable, > including emergency reboot. So it's sort of how it has been for quite some > time, I guess. We are in panic(), it's over, so we probably can ignore > uart_port->lock at this point. > > -ss -- Best, Daniel --00000000000027f3fc0578c10aa6 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIIS7QYJKoZIhvcNAQcCoIIS3jCCEtoCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg ghBTMIIEXDCCA0SgAwIBAgIOSBtqDm4P/739RPqw/wcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UE BhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExOjA4BgNVBAMTMUdsb2JhbFNpZ24gUGVy c29uYWxTaWduIFBhcnRuZXJzIENBIC0gU0hBMjU2IC0gRzIwHhcNMTYwNjE1MDAwMDAwWhcNMjEw NjE1MDAwMDAwWjBMMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEiMCAG A1UEAxMZR2xvYmFsU2lnbiBIViBTL01JTUUgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBALR23lKtjlZW/17kthzYcMHHKFgywfc4vLIjfq42NmMWbXkNUabIgS8KX4PnIFsTlD6F GO2fqnsTygvYPFBSMX4OCFtJXoikP2CQlEvO7WooyE94tqmqD+w0YtyP2IB5j4KvOIeNv1Gbnnes BIUWLFxs1ERvYDhmk+OrvW7Vd8ZfpRJj71Rb+QQsUpkyTySaqALXnyztTDp1L5d1bABJN/bJbEU3 Hf5FLrANmognIu+Npty6GrA6p3yKELzTsilOFmYNWg7L838NS2JbFOndl+ce89gM36CW7vyhszi6 6LqqzJL8MsmkP53GGhf11YMP9EkmawYouMDP/PwQYhIiUO0CAwEAAaOCASIwggEeMA4GA1UdDwEB /wQEAwIBBjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwEgYDVR0TAQH/BAgwBgEB/wIB ADAdBgNVHQ4EFgQUyzgSsMeZwHiSjLMhleb0JmLA4D8wHwYDVR0jBBgwFoAUJiSSix/TRK+xsBtt r+500ox4AAMwSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9n c3BlcnNvbmFsc2lnbnB0bnJzc2hhMmcyLmNybDBMBgNVHSAERTBDMEEGCSsGAQQBoDIBKDA0MDIG CCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzANBgkqhkiG 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 QAYIKwYBBQUHMAKGNGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2FjZXJ0L2dzaHZzbWlt ZWNhMS5jcnQwHQYDVR0OBBYEFHswV6b+EY77vBWQKD6Dmp9n2Jp7MB8GA1UdIwQYMBaAFMs4ErDH mcB4koyzIZXm9CZiwOA/MEwGA1UdIARFMEMwQQYJKwYBBAGgMgEoMDQwMgYIKwYBBQUHAgEWJmh0 dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDsGA1UdHwQ0MDIwMKAuoCyGKmh0 dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vZ3NodnNtaW1lY2ExLmNybDAOBgNVHQ8BAf8EBAMCBaAw HQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMA0GCSqGSIb3DQEBCwUAA4IBAQCKdekZm8Fn LFr+VBrtMVdmg4uKT25UuNxBxtgYJNqP/hYvkbGxHZnbTeQs63W5u+DW++SIfXI0aP1Lp34TFidR bIL+4+xzfrlWGFcPb1IBl0fdNr5mnUdluXE78N0zwUiv3qa66dwP8oVooeDmRHOHO0A20C5/24q7 GIWfW2K2CeBWRj0OI1P6XUm+unjVNzVz6fE9J91Xf13NxK9Pc647cBIP4eiHNVa7ErprHQoDevx+ OHFHle2OOiJZoAqFNvKbQSuWBg+Obv3CjPLZ7lwdB9VBg3F5qEaD+BsyHwj+kMinP7wCI+mIc1nU PcdI0z7gBtGEit9qr9qcJrdKjDlTMYICXjCCAloCAQEwXDBMMQswCQYDVQQGEwJCRTEZMBcGA1UE ChMQR2xvYmFsU2lnbiBudi1zYTEiMCAGA1UEAxMZR2xvYmFsU2lnbiBIViBTL01JTUUgQ0EgMQIM TmnftMpllv264rvDMA0GCWCGSAFlAwQCAQUAoIHUMC8GCSqGSIb3DQEJBDEiBCBmc1U2oxA3iEiu buG7yStUV7H5W9OmDEfGHDS/PlEo4jAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3 DQEJBTEPFw0xODEwMjExODA5MzdaMGkGCSqGSIb3DQEJDzFcMFowCwYJYIZIAWUDBAEqMAsGCWCG SAFlAwQBFjALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwCwYJKoZIhvcNAQEKMAsGCSqGSIb3DQEB BzALBglghkgBZQMEAgEwDQYJKoZIhvcNAQEBBQAEggEAbRL1iX2sqjgSHafuiVxykmciYbPw26kf F9ZW3eHvxy2sBjcHdSrt+rla8kbyCp4OGL+L46ebnt3BzxD7mjp2EL4zC5V6zrfo1/KXviCacV7O pP3Z3bixIHbsKBRxu0KmHNiQl8PyWEPUjgNRSzDKeRt15QRL/sxe8RW94k7Fu4o7wXZLg8KpQiTD g0GOyi9qVTCADxSIwBa9mePmipk6Bdc0trlHjDp1H/hJSZMVPYDrwwnFaZKjtMsWTs6AsZSjUl+3 pkKr3lyzWOvzYNk0nnqOE9Xer3TXOBtqFGU9/tN7Yz9bfm8VThGVOqtf0o99i2YWZ5xNIeUOtSSG Ch89JQ== --00000000000027f3fc0578c10aa6--