From patchwork Fri Jul 31 09:23:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: tip-bot2 for Nam Cao X-Patchwork-Id: 11694539 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 03D8F138C for ; Fri, 31 Jul 2020 09:23:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id BA1D622E02 for ; Fri, 31 Jul 2020 09:23:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="UxLI31FW"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="iOPgoDTR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BA1D622E02 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linutronix.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 0A0AD8D0020; Fri, 31 Jul 2020 05:23:44 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 076A78D000B; Fri, 31 Jul 2020 05:23:44 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EA7828D0020; Fri, 31 Jul 2020 05:23:43 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0109.hostedemail.com [216.40.44.109]) by kanga.kvack.org (Postfix) with ESMTP id D3EA88D000B for ; Fri, 31 Jul 2020 05:23:43 -0400 (EDT) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 91770181AC9B6 for ; Fri, 31 Jul 2020 09:23:43 +0000 (UTC) X-FDA: 77097833526.20.brick11_3f0311626f82 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin20.hostedemail.com (Postfix) with ESMTP id 6C4A8180BFBC3 for ; Fri, 31 Jul 2020 09:23:43 +0000 (UTC) X-Spam-Summary: 1,0,0,1cca277c1fdf5980,d41d8cd98f00b204,tip-bot2@linutronix.de,,RULES_HIT:41:152:355:379:800:904:960:966:967:968:973:988:989:1260:1277:1311:1313:1314:1345:1431:1437:1515:1516:1518:1535:1543:1593:1594:1711:1712:1730:1747:1777:1792:2196:2199:2393:2525:2553:2559:2563:2682:2685:2859:2933:2937:2939:2942:2945:2947:2951:2954:3022:3138:3139:3140:3141:3142:3165:3354:3865:3866:3867:3868:3870:3934:3936:3938:3941:3944:3947:3950:3953:3956:3959:4250:4321:4385:4605:5007:6238:6261:6653:7903:7974:8660:8957:9025:9163:10004:10400:11026:11473:11658:11914:12043:12160:12296:12438:12555:12679:12740:12760:12895:12986:13148:13161:13229:13230:13870:13904:14096:14097:14181:14721:21080:21365:21450:21451:21611:21627:21939:30012:30029:30045:30054:30056:30075:30090:30091,0,RBL:193.142.43.55:@linutronix.de:.lbl8.mailshell.net-64.100.201.201 62.2.6.100;04y81uioxqs633w6pdj1xtpx8wbdhopep6oqa9j3ogj4nzbf5ztzc5gidzeq78j.oswu114f14p978anhuhmweza5ja7j9ikzqsastqnfc6c9w7c5jmk6wjum9igubu.q-lbl8.mailshe ll.net-2 X-HE-Tag: brick11_3f0311626f82 X-Filterd-Recvd-Size: 5619 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by imf23.hostedemail.com (Postfix) with ESMTP for ; Fri, 31 Jul 2020 09:23:42 +0000 (UTC) Date: Fri, 31 Jul 2020 09:23:40 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1596187420; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XKcDjqjHZyOxGmKCkMgX7OQbESulfd4mhAB4oHFRsj8=; b=UxLI31FWcBWZ0fTRpQXLwx7VnXkltTNJZeJRnOa5ZksTzxoD7ympcTPcIAjYsddVMLT1tU m22WW9uTAIpURkmGbXJL2JzLa1EZ7sDLKu3lvybt8fRhc6bVo8+YHvSFdXVtZb8Wop0oH/ 2eQAM1/1ZQ36p650KBXyCg9Xa1yjnTKt6ErkK6QDkV1aUlSmWA7HO/5Mnm9J+W+lbqO5Wr iXOwqkyIJk4yovgC475OcH03ZV1G10afsT0AwYmlzL/OBWHVcWx3w1DfPMVBByCZxAzthm 86wP2zkkrwdd3+f5l5EcQyu4ac7MpD46Wfri/Z3hBCZHFbdiw1B3WitU6jNkEg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1596187420; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XKcDjqjHZyOxGmKCkMgX7OQbESulfd4mhAB4oHFRsj8=; b=iOPgoDTRj9rxOs0wKQvA1T5hhvav9gzX0D22/Rj83Ny/kkac7xuO3sx/4GWFZxk0N7mo32 eNudEzfn3kgW+pAg== From: "tip-bot2 for Paul E. McKenney" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: core/rcu] mm/mmap.c: Add cond_resched() for exit_mmap() CPU stalls Cc: Andrew Morton , , Shakeel Butt , "Joel Fernandes (Google)" , "Paul E. McKenney" , x86 , LKML MIME-Version: 1.0 Message-ID: <159618742007.4006.11207886326021221931.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails X-Rspamd-Queue-Id: 6C4A8180BFBC3 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam05 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000599, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The following commit has been merged into the core/rcu branch of tip: Commit-ID: 0a3b3c253a1eb2c7fe7f34086d46660c909abeb3 Gitweb: https://git.kernel.org/tip/0a3b3c253a1eb2c7fe7f34086d46660c909abeb3 Author: Paul E. McKenney AuthorDate: Thu, 16 Apr 2020 16:46:10 -07:00 Committer: Paul E. McKenney CommitterDate: Mon, 29 Jun 2020 11:58:49 -07:00 mm/mmap.c: Add cond_resched() for exit_mmap() CPU stalls A large process running on a heavily loaded system can encounter the following RCU CPU stall warning: rcu: INFO: rcu_sched self-detected stall on CPU rcu: 3-....: (20998 ticks this GP) idle=4ea/1/0x4000000000000002 softirq=556558/556558 fqs=5190 (t=21013 jiffies g=1005461 q=132576) NMI backtrace for cpu 3 CPU: 3 PID: 501900 Comm: aio-free-ring-w Kdump: loaded Not tainted 5.2.9-108_fbk12_rc3_3858_gb83b75af7909 #1 Hardware name: Wiwynn HoneyBadger/PantherPlus, BIOS HBM6.71 02/03/2016 Call Trace: dump_stack+0x46/0x60 nmi_cpu_backtrace.cold.3+0x13/0x50 ? lapic_can_unplug_cpu.cold.27+0x34/0x34 nmi_trigger_cpumask_backtrace+0xba/0xca rcu_dump_cpu_stacks+0x99/0xc7 rcu_sched_clock_irq.cold.87+0x1aa/0x397 ? tick_sched_do_timer+0x60/0x60 update_process_times+0x28/0x60 tick_sched_timer+0x37/0x70 __hrtimer_run_queues+0xfe/0x270 hrtimer_interrupt+0xf4/0x210 smp_apic_timer_interrupt+0x5e/0x120 apic_timer_interrupt+0xf/0x20 RIP: 0010:kmem_cache_free+0x223/0x300 Code: 88 00 00 00 0f 85 ca 00 00 00 41 8b 55 18 31 f6 f7 da 41 f6 45 0a 02 40 0f 94 c6 83 c6 05 9c 41 5e fa e8 a0 a7 01 00 41 56 9d <49> 8b 47 08 a8 03 0f 85 87 00 00 00 65 48 ff 08 e9 3d fe ff ff 65 RSP: 0018:ffffc9000e8e3da8 EFLAGS: 00000206 ORIG_RAX: ffffffffffffff13 RAX: 0000000000020000 RBX: ffff88861b9de960 RCX: 0000000000000030 RDX: fffffffffffe41e8 RSI: 000060777fe3a100 RDI: 000000000001be18 RBP: ffffea00186e7780 R08: ffffffffffffffff R09: ffffffffffffffff R10: ffff88861b9dea28 R11: ffff88887ffde000 R12: ffffffff81230a1f R13: ffff888854684dc0 R14: 0000000000000206 R15: ffff8888547dbc00 ? remove_vma+0x4f/0x60 remove_vma+0x4f/0x60 exit_mmap+0xd6/0x160 mmput+0x4a/0x110 do_exit+0x278/0xae0 ? syscall_trace_enter+0x1d3/0x2b0 ? handle_mm_fault+0xaa/0x1c0 do_group_exit+0x3a/0xa0 __x64_sys_exit_group+0x14/0x20 do_syscall_64+0x42/0x100 entry_SYSCALL_64_after_hwframe+0x44/0xa9 And on a PREEMPT=n kernel, the "while (vma)" loop in exit_mmap() can run for a very long time given a large process. This commit therefore adds a cond_resched() to this loop, providing RCU any needed quiescent states. Cc: Andrew Morton Cc: Reviewed-by: Shakeel Butt Reviewed-by: Joel Fernandes (Google) Signed-off-by: Paul E. McKenney --- mm/mmap.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/mmap.c b/mm/mmap.c index 59a4682..972f839 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -3159,6 +3159,7 @@ void exit_mmap(struct mm_struct *mm) if (vma->vm_flags & VM_ACCOUNT) nr_accounted += vma_pages(vma); vma = remove_vma(vma); + cond_resched(); } vm_unacct_memory(nr_accounted); }