Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp7081607imm; Tue, 24 Jul 2018 08:06:41 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfp8npjNfuXZrHcBvEF7prAjn87yf5pKfc3VFa9EukMa9YtX6+e32AI9hcmIXRPiuGXmWw5 X-Received: by 2002:a62:789:: with SMTP id 9-v6mr18215387pfh.213.1532444801724; Tue, 24 Jul 2018 08:06:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532444801; cv=none; d=google.com; s=arc-20160816; b=J+kBqRf04mSHWAC36kARn46AM6EfrTVT635UrW2KywYCxZeg/N5FQp+n8y2ItZpAzA BlxcevnAoB/GT0VKIZQ9443Vg7Fbo0L0H1/RHvxQoU0WvAZ4Z+q7OXA2eVVeHq+6I6DP 4NaAr3y0zbk/+HJGYcc4IbxYW+DeUtwebGkFloV8IYmkjiyQFTfIH2L6CmpqgaPJ/Dct w34JkFvYPKJBFCJL2JHZ42Jg18QtQCwmjOtKSjRzQyIKdrFaR5EHVVq3KHJlyAiJr6BC RCN8KsBFKKTULGJvjNMdv6ThZdFHNqHmDEmTqKQFZH3n/APT/zUxDF8VJ/CBS5rAI9bn s0VQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=Z2ADzqfF2dkotkt0ffanNoOiYAjRKcmZvw/ZcQjiVvo=; b=Cg7AHGwhObWUq/OtPQGxDAomLqAzJP2h61E4xdQ6iLKkL85INBdrw42fV4hTdawBbb G91g4ofbDunFhRyXn1TTMqzC4fStQgcn4MyZXP6OGptCyugvnGCAFvZGlqZwFKTyVRiU bDObmLy2VH0ppVSQD4m5tFlm1KACdvUHZaDEr58lmVqUs3LZ4Bbgx0soyv8woQBE9qYB DPNrksLBtwUAhXNAr9DoM9Nro7nY67WHOvhTixFnXDfltTwTkKY857yusNFpU3kK8nW5 mId4o7CP+aB8OuOV3tTM98bAiuzF9HzNXBpqVnZaP9YAGhrno1BD/ZuxHQRZD9ICbwQv WRbA== ARC-Authentication-Results: i=1; mx.google.com; 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 e10-v6si12673328pge.48.2018.07.24.08.06.26; Tue, 24 Jul 2018 08:06:41 -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; 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 S2388338AbeGXQLo (ORCPT + 99 others); Tue, 24 Jul 2018 12:11:44 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:53334 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388172AbeGXQLo (ORCPT ); Tue, 24 Jul 2018 12:11:44 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 063EA80D; Tue, 24 Jul 2018 08:04:50 -0700 (PDT) Received: from edgewater-inn.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id CB7B03F237; Tue, 24 Jul 2018 08:04:49 -0700 (PDT) Received: by edgewater-inn.cambridge.arm.com (Postfix, from userid 1000) id 77AAA1AE3B5E; Tue, 24 Jul 2018 16:04:49 +0100 (BST) Date: Tue, 24 Jul 2018 16:04:49 +0100 From: Will Deacon To: Johannes Weiner Cc: Arnd Bergmann , Peter Zijlstra , Suren Baghdasaryan , Mike Galbraith , Linux Kernel Mailing List , kernel-team@fb.com, Linux-MM , Vinayak Menon , Ingo Molnar , Shakeel Butt , Catalin Marinas , Tejun Heo , cgroups@vger.kernel.org, Andrew Morton , Linus Torvalds , Christopher Lameter , Linux ARM Subject: Re: [PATCH 02/10] mm: workingset: tell cache transitions from workingset thrashing Message-ID: <20180724150448.GA25412@arm.com> References: <20180712172942.10094-1-hannes@cmpxchg.org> <20180712172942.10094-3-hannes@cmpxchg.org> <20180723152323.GA3699@cmpxchg.org> <20180723162735.GA5980@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180723162735.GA5980@cmpxchg.org> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 23, 2018 at 12:27:35PM -0400, Johannes Weiner wrote: > On Mon, Jul 23, 2018 at 05:35:35PM +0200, Arnd Bergmann wrote: > > On Mon, Jul 23, 2018 at 5:23 PM, Johannes Weiner wrote: > > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > > > index 1b18b4722420..72c9b6778b0a 100644 > > > --- a/arch/arm64/mm/init.c > > > +++ b/arch/arm64/mm/init.c > > > @@ -611,11 +611,13 @@ void __init mem_init(void) > > > BUILD_BUG_ON(TASK_SIZE_32 > TASK_SIZE_64); > > > #endif > > > > > > +#ifndef CONFIG_SPARSEMEM_VMEMMAP > > > /* > > > > I tested it on two broken configurations, and found that you have > > a typo here, it should be 'ifdef', not 'ifndef'. With that change, it > > seems to build fine. > > > > Tested-by: Arnd Bergmann > > Thanks for testing it, I don't have a cross-compile toolchain set up. > > --- Thanks Arnd, Johannes. I can pick this up for -rc7 via the arm64 tree, unless it's already queued elsewhere? Will > From 34c4c4549f09f971d2d391a8d652d56cb9b05475 Mon Sep 17 00:00:00 2001 > From: Johannes Weiner > Date: Mon, 23 Jul 2018 10:18:23 -0400 > Subject: [PATCH] arm64: fix vmemmap BUILD_BUG_ON() triggering on !vmemmap > setups > > Arnd reports the following arm64 randconfig build error with the PSI > patches that add another page flag: > > /git/arm-soc/arch/arm64/mm/init.c: In function 'mem_init': > /git/arm-soc/include/linux/compiler.h:357:38: error: call to > '__compiletime_assert_618' declared with attribute error: BUILD_BUG_ON > failed: sizeof(struct page) > (1 << STRUCT_PAGE_MAX_SHIFT) > > The additional page flag causes other information stored in > page->flags to get bumped into their own struct page member: > > #if SECTIONS_WIDTH+ZONES_WIDTH+NODES_SHIFT+LAST_CPUPID_SHIFT <= > BITS_PER_LONG - NR_PAGEFLAGS > #define LAST_CPUPID_WIDTH LAST_CPUPID_SHIFT > #else > #define LAST_CPUPID_WIDTH 0 > #endif > > #if defined(CONFIG_NUMA_BALANCING) && LAST_CPUPID_WIDTH == 0 > #define LAST_CPUPID_NOT_IN_PAGE_FLAGS > #endif > > which in turn causes the struct page size to exceed the size set in > STRUCT_PAGE_MAX_SHIFT. This value is an an estimate used to size the > VMEMMAP page array according to address space and struct page size. > > However, the check is performed - and triggers here - on a !VMEMMAP > config, which consumes an additional 22 page bits for the sparse > section id. When VMEMMAP is enabled, those bits are returned, cpupid > doesn't need its own member, and the page passes the VMEMMAP check. > > Restrict that check to the situation it was meant to check: that we > are sizing the VMEMMAP page array correctly. > > Says Arnd: > > Further experiments show that the build error already existed before, > but was only triggered with larger values of CONFIG_NR_CPU and/or > CONFIG_NODES_SHIFT that might be used in actual configurations but > not in randconfig builds. > > With longer CPU and node masks, I could recreate the problem with > kernels as old as linux-4.7 when arm64 NUMA support got added. > > Reported-by: Arnd Bergmann > Tested-by: Arnd Bergmann > Cc: stable@vger.kernel.org > Fixes: 1a2db300348b ("arm64, numa: Add NUMA support for arm64 platforms.") > Fixes: 3e1907d5bf5a ("arm64: mm: move vmemmap region right below the linear region") > Signed-off-by: Johannes Weiner > --- > arch/arm64/mm/init.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > index 1b18b4722420..86d9f9d303b0 100644 > --- a/arch/arm64/mm/init.c > +++ b/arch/arm64/mm/init.c > @@ -611,11 +611,13 @@ void __init mem_init(void) > BUILD_BUG_ON(TASK_SIZE_32 > TASK_SIZE_64); > #endif > > +#ifdef CONFIG_SPARSEMEM_VMEMMAP > /* > * Make sure we chose the upper bound of sizeof(struct page) > - * correctly. > + * correctly when sizing the VMEMMAP array. > */ > BUILD_BUG_ON(sizeof(struct page) > (1 << STRUCT_PAGE_MAX_SHIFT)); > +#endif > > if (PAGE_SIZE >= 16384 && get_num_physpages() <= 128) { > extern int sysctl_overcommit_memory; > -- > 2.18.0 >