Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp486952ybb; Fri, 3 Apr 2020 06:37:12 -0700 (PDT) X-Google-Smtp-Source: APiQypJd1UnV+HAK8RcQ4mTO0GCDep9sT68zNKTw/E7nzsl8IojPYGKFgpxI4enadQnKG8fjoRs0 X-Received: by 2002:a4a:41ce:: with SMTP id x197mr6719855ooa.77.1585921031900; Fri, 03 Apr 2020 06:37:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585921031; cv=none; d=google.com; s=arc-20160816; b=vMCIt7Ldide7DZADbLk4VUg1ngEpihVpuPBbOQHlApUKZIAzOpcBzm5rxmC5XL4cZR 5ib1PLz4WUxL3lMt7ee2MKId71KvQaQ0EK03tivXXxV7V2NxdXYewRKeyJlDWHvV2UkJ FC8UkX4NUwUZs77jaC4UcUMmLLhdm9VBv9/CtXYVXHFd7jPmeEMynkq9Y2x003BINs8K Am2QiRjN0aY74ErTX1vdWV7Tw+ZdUFaf7Js4mOesdm95YQbLIILmTpuYpon3Adait51H rwHGvEbKWvy58xmS9POKecnr2Lg3Ds8rMztUlKSJ2eLOHoEwiKsempn/kHQ0gjFXCeNn udfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:to:from:dkim-signature; bh=fGV3n8t+9BV7JTkRPUzZ2QXHvp25yaVJAKZtXq13X1k=; b=RBT6eUHCnQ2UQg1hnDQbPXGFHQy97FvFr8DiKO8aUP1bA9pO52CO/KYtcTqyZASm4Q rzneuk2gfhupq5OFY5Xbc2DEA3bHDa7n50JArJwH3gqWBMjdc1YDQy4HXlfeeJ5csi90 gw5UNzzIy8L9QK47tn8gW8a1NgPYzxI2RNFKJaeH+9OVmVpLPue/5y9WVFMkpNmT0zhq zh3SPOUaYtSELjT/wxH+6X1WaVqjiPGnfSOx50wNPyKZEVzOpf0lstAmSf0KYXrMOt7q LDPMGMIuqzpojWsQ2l57fN+ZSmdyXwRKfBbDiSsqC3GZ8Z0z+H36DPdoOtdvjF1WPVQ9 OIXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@soleen.com header.s=google header.b=QbzBh9e+; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k137si3659831oih.226.2020.04.03.06.36.58; Fri, 03 Apr 2020 06:37:11 -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=@soleen.com header.s=google header.b=QbzBh9e+; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390834AbgDCNf4 (ORCPT + 99 others); Fri, 3 Apr 2020 09:35:56 -0400 Received: from mail-qk1-f196.google.com ([209.85.222.196]:40016 "EHLO mail-qk1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390822AbgDCNfz (ORCPT ); Fri, 3 Apr 2020 09:35:55 -0400 Received: by mail-qk1-f196.google.com with SMTP id z15so1710266qki.7 for ; Fri, 03 Apr 2020 06:35:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=soleen.com; s=google; h=from:to:subject:date:message-id:in-reply-to:references; bh=fGV3n8t+9BV7JTkRPUzZ2QXHvp25yaVJAKZtXq13X1k=; b=QbzBh9e+W+8iOpYg0+rGGGiU6KrpTT42G5riwwro+9vvy+mAOclzJDqQGKBZYWFEVK 0Y7WR7UKpFVgrB3UlLssjLQQzJS+DC8MZcX0LIiatPACJpJ/IqNvk+3mVyLsad+BkABl n4C0d9q5ZWEo6kYiRHX6nLpp3Z0zK5ruBmCa6xPv5CHirh0N7zn4YyotF0XL5gewijuw LjM2AbR6gi+RgiCqfmIKvxyZoUGjhmkxg2Lw5UqdtblJJiV4a0gcKOhwdmszBnSgL1sy n38Z1/glMlD6Q8ic0OU5MbyRrf5kzkmUZspLb4aGPEEhX/KArbhSuncZKrFdxWMofvj1 YXAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=fGV3n8t+9BV7JTkRPUzZ2QXHvp25yaVJAKZtXq13X1k=; b=unfs+Tj8xt3cn4lFTn+9xdiYmWWxoPJ4fiBZcMdaZIyN+Qx5ZFRF2iozpXJLpbEIu4 a1th2nU7lRcjAC0Yes8d1/9Dm/suYOVlVhP79PJ4mkOS7lidpOl1CFZY+RPc1VJa4uey tzbjL2RnQe7kmMmP2Q5kMdDkkW4KD/Pe15wfMyw3hy40grHPZyF7iwOa4uEPPjdvCWl1 taJnUzRf8/Zohwj/i5xksCTbtx5B3zznVMGsWjQSEvJwx5iRvaZGEkOqoHqk+FiJjViB aqXVSlwIbmklZuvh+o5kKDFUJXRvg9iunh/T6PnagDpsEaYesQCqJDGqSMp07oF9V09G /d1Q== X-Gm-Message-State: AGi0Pub8AMki2jPr+bTo7a1X8Etd2Zi1/O0sICAATje9GgbQvuGngsvF nqG26aTs0OfB0Aokzr005d36/U7Yywo= X-Received: by 2002:ae9:dd02:: with SMTP id r2mr8129764qkf.180.1585920953238; Fri, 03 Apr 2020 06:35:53 -0700 (PDT) Received: from localhost.localdomain (c-73-69-118-222.hsd1.nh.comcast.net. [73.69.118.222]) by smtp.gmail.com with ESMTPSA id 17sm6210799qkm.105.2020.04.03.06.35.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Apr 2020 06:35:52 -0700 (PDT) From: Pavel Tatashin To: linux-kernel@vger.kernel.org, akpm@linux-foundation.org, mhocko@suse.com, linux-mm@kvack.org, dan.j.williams@intel.com, shile.zhang@linux.alibaba.com, daniel.m.jordan@oracle.com, pasha.tatashin@soleen.com, ktkhai@virtuozzo.com, david@redhat.com, jmorris@namei.org, sashal@kernel.org, vbabka@suse.cz Subject: [PATCH v3 1/3] mm: call touch_nmi_watchdog() on max order boundaries in deferred init Date: Fri, 3 Apr 2020 09:35:47 -0400 Message-Id: <20200403133549.14338-2-pasha.tatashin@soleen.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200403133549.14338-1-pasha.tatashin@soleen.com> References: <20200403133549.14338-1-pasha.tatashin@soleen.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Daniel Jordan deferred_init_memmap() disables interrupts the entire time, so it calls touch_nmi_watchdog() periodically to avoid soft lockup splats. Soon it will run with interrupts enabled, at which point cond_resched() should be used instead. deferred_grow_zone() makes the same watchdog calls through code shared with deferred init but will continue to run with interrupts disabled, so it can't call cond_resched(). Pull the watchdog calls up to these two places to allow the first to be changed later, independently of the second. The frequency reduces from twice per pageblock (init and free) to once per max order block. Fixes: 3a2d7fa8a3d5 ("mm: disable interrupts while initializing deferred pages") Cc: stable@vger.kernel.org # 4.17+ Signed-off-by: Daniel Jordan Signed-off-by: Pavel Tatashin Reviewed-by: David Hildenbrand Acked-by: Michal Hocko Acked-by: Vlastimil Babka --- mm/page_alloc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 3c4eb750a199..e8ff6a176164 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1639,7 +1639,6 @@ static void __init deferred_free_pages(unsigned long pfn, } else if (!(pfn & nr_pgmask)) { deferred_free_range(pfn - nr_free, nr_free); nr_free = 1; - touch_nmi_watchdog(); } else { nr_free++; } @@ -1669,7 +1668,6 @@ static unsigned long __init deferred_init_pages(struct zone *zone, continue; } else if (!page || !(pfn & nr_pgmask)) { page = pfn_to_page(pfn); - touch_nmi_watchdog(); } else { page++; } @@ -1809,8 +1807,10 @@ static int __init deferred_init_memmap(void *data) * that we can avoid introducing any issues with the buddy * allocator. */ - while (spfn < epfn) + while (spfn < epfn) { nr_pages += deferred_init_maxorder(&i, zone, &spfn, &epfn); + touch_nmi_watchdog(); + } zone_empty: pgdat_resize_unlock(pgdat, &flags); @@ -1894,6 +1894,7 @@ deferred_grow_zone(struct zone *zone, unsigned int order) first_deferred_pfn = spfn; nr_pages += deferred_init_maxorder(&i, zone, &spfn, &epfn); + touch_nmi_watchdog(); /* We should only stop along section boundaries */ if ((first_deferred_pfn ^ spfn) < PAGES_PER_SECTION) -- 2.17.1