From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CA514C41513 for ; Thu, 3 Aug 2023 21:00:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 376DB28029F; Thu, 3 Aug 2023 17:00:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 326AC28022C; Thu, 3 Aug 2023 17:00:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1C70128029F; Thu, 3 Aug 2023 17:00:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 0C75B28022C for ; Thu, 3 Aug 2023 17:00:34 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id B9061A0825 for ; Thu, 3 Aug 2023 21:00:33 +0000 (UTC) X-FDA: 81084011946.12.75CF169 Received: from mail-qt1-f169.google.com (mail-qt1-f169.google.com [209.85.160.169]) by imf15.hostedemail.com (Postfix) with ESMTP id 5A980A0035 for ; Thu, 3 Aug 2023 21:00:28 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=gs0xR52Z; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf15.hostedemail.com: domain of yury.norov@gmail.com designates 209.85.160.169 as permitted sender) smtp.mailfrom=yury.norov@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691096429; h=from:from:sender: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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=QuYitPJZqMO1br4FQSyqi//ppdhPI+NAR1KWcWA6710=; b=qWAP+6yxS+QCSZ3llLVrqObg7IBsBHE6+y6qj+kWJwYQGBEbNg3wYqhWnPxtTifWJNWdTx JuQVErxVAdWiRwwvstZY9uBpl8Gt7bhJ2JoIMjCuCqBxQ++Tt3lmgVm21n8XmqiKskFDuD rHlRXBz9s4oSi+BKGenZcXmGD+SfqVg= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=gs0xR52Z; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf15.hostedemail.com: domain of yury.norov@gmail.com designates 209.85.160.169 as permitted sender) smtp.mailfrom=yury.norov@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691096429; a=rsa-sha256; cv=none; b=S/OVK5RPRspnCmlOB3icdthHzPyzUl/bt3ezkYl9Qpu2ReX3g7c2OudEJXouPGJiZ01+yu wYavj16WAdWKOLqCd2Ml1VC/gC+Dh2+JXJVWoMx/6C1MNRh2qy7poxB9hXuZkyJzTs3WQ8 Kd8677x6/lLL02Z4I0mi6gqP4UX4v90= Received: by mail-qt1-f169.google.com with SMTP id d75a77b69052e-403a85eb723so10010611cf.1 for ; Thu, 03 Aug 2023 14:00:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691096428; x=1691701228; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=QuYitPJZqMO1br4FQSyqi//ppdhPI+NAR1KWcWA6710=; b=gs0xR52ZjdCvuFTwrpGe2Hferm5v3XQEZVvpsyDiKFWkASHv9XT1wstoTnEmVPTceU HIvA62wJaNYL4R5ZVKOPdmg1/irCFyXEeyWNdqwji2wYZkkeLuMVyk7Sk3nsu56Znp3a 1QOBVdF3FH0vXdnA9Qvoq4KSR0DruXQOmV0X55BFmsZrINuvbqHmlmKCGPAcuj6H44fG JmsY0Se94Ure36WyDpTVwGNfaWQuaKLEG3h5QfhG7wtk6nNZ7VWfxpT4bZu/iftNyE9l 52LX89W4PvME1n4Y9o0NusD5zJBO/aTRZL4P7sBEkNUx2LPojjb9/juXBxvHnYAyGHxQ zi3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691096428; x=1691701228; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=QuYitPJZqMO1br4FQSyqi//ppdhPI+NAR1KWcWA6710=; b=KgmQTze7j4g+TSjWQ9/k+qKuOXnKb96ZnCQTgq9Yhd2Pz2WFL01AcHAB1MOPSAP7qt 9CbkgH7ueyGpd6l/EgcyKsYH6Shy2mgq2WpS4oBN6EfTcvy44036hhjSpKYqPN2a+DmT Fz2OK2eHNqU8ZW1oKtYdTOJE6UhskzmK4zTrkm213iK8TdDMHrBLbNr6MGfAtwgW2Hlb 6Nj/vFlUt5Iu9RI7i+YItNG3rbyzJDskdDiwvtWTqEG8E9HaIdpiT41C4OSRUL85m5+j dlOyVExYCsU2uIdmh9aaQKcFJK+qFNqSsO71qU95BvuPKemdgwOhpXswfKJrYveMMyqY 6vBA== X-Gm-Message-State: ABy/qLbSXxt0hBS+TVYzffb+xkmToNgkJEccQvqdfhvkILRije6VwyXM 3wQKff2GmXGO+A0ebpoJlhg= X-Google-Smtp-Source: APBJJlGr+LkTYffTZjsB4B1e2iFyJt/S4Es0pSTq8xjeuH9kP8L7uZali5AbwiRWzLyQcPfbVcJalQ== X-Received: by 2002:ac8:7d90:0:b0:403:eb3c:1fed with SMTP id c16-20020ac87d90000000b00403eb3c1fedmr24878626qtd.35.1691096428036; Thu, 03 Aug 2023 14:00:28 -0700 (PDT) Received: from localhost ([50.217.79.158]) by smtp.gmail.com with ESMTPSA id e21-20020ac85995000000b003fde3d63d22sm189653qte.69.2023.08.03.14.00.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 14:00:27 -0700 (PDT) Date: Thu, 3 Aug 2023 14:00:26 -0700 From: Yury Norov To: Peter Zijlstra Cc: andriy.shevchenko@linux.intel.com, linux@rasmusvillemoes.dk, Andrew Morton , Linus Torvalds , Mateusz Guzik , linux-kernel@vger.kernel.org, linux-mm@kvack.org, tglx@linutronix.de, rppt@kernel.org Subject: Re: [PATCH v2 2/2] mm,nodemask: Use nr_node_ids Message-ID: References: <20230802112458.230221601@infradead.org> <20230802112525.633758009@infradead.org> <20230802193616.GC231007@hirez.programming.kicks-ass.net> <20230803084125.GE212435@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 5A980A0035 X-Stat-Signature: 5mh43o3dy4ojqbnnw55emhn9n7abfanw X-HE-Tag: 1691096428-302221 X-HE-Meta: U2FsdGVkX18E4toPsUGR61CX3dRx0KW1+dk5BHUa/2Kv8d/n2sQOGrKr/GotX10zPBSAjHPFfZFT33hikYmNkmUqWb6NNSYVYJzGr969F0W/IdO1h0idPOOiyAQwoauTQxwTPG3jiFWRAYRHuVM3PB5BKUsmcaTSbYpVDG1bfwMvG095l4pgOxN0SvreOaJvj/9PBD1kdUOzZV91dvmRniUxeFIfXyDztMOJ4Z95hYJ4yg1EQcm4k9rKcRyM5QlcRBD4UFZU50C8kA3CXE8jYpkpc1myVl2mAAAq5bPwCSRkCIQx1DHfU/9ynma1zeZ4SbEv9+vRMAv0c6SOyulfaRkiavAURtOUWPBSqbE6LQ5o0c2qP6fS/SS4DsFqvrMh+JJrdrwOUm11UVyytKc0oHeOg2JsZ///UtLB60QT+xD9YCkTfihGJ4i7vnkdC8Rstt+ozjKEXgMyJ5CqUD1o6uca3BwQSoXZqU/lJigK0ocbWATiL3UIu+99CMlAqTnGNr6EIZneTrjmDKesx1QE8laMnjfTZcp+p0FPaVFNqlCTots0oQTYQwmu5SeoRvi/p/1JXVRW2NLywGe3ZUzmE8UoTPZrEG1SYgupI5wNlhTLQAn2KfPA47pgXGtkz3orv+HW3qht2rO4ggLjoX45JQLYMhGBcXFpzDw0oEnxuQ5pIiUfWz284Q5eUgYZk4khr6Q9QXOLXKtBI/cFU0ZLCjAWbL0D+x1b+kxOvNxIXo7vw2klH2R8L1UoRxaTUD/Ivvk6yl327bxSLyci+iCTiqzDNKAPJP7JrBQ3abw2lWrZky9u2UxyuVDgKOYOQt0I2wgUE5+hB8I3gFiGVOz6PY8rUrehNNOBl89b6eOb0ZoK61M+vK4hbHF8gB1Mj+RWK/TEdOFC1NOgjZzt3C531WbA8mfUpJZKKg+KDS59p/17vE6nwb1oVjvZzg0P6XlRMBCrnc60ssdGKK4cCu1 UwKNlWK2 cpLEpkbc/6GfkCf8m00aEQysXN8m6fBouo4UmZ/M5rIGGZZ3HtSNEnYwmP/hePZtvvKEfq87nfrUlDy9lPIIHmiu7yvttiZX2+FD2SoSDPj7CX/beMCYYzS3w/vngfZl9ipWZAwSbY3gWDyQsYQwtFyF8g7cJ6D6c2Tmc3cYXaVa5IJzklsPC70wjmMmR/e/oGcw9lNxve5oJa59WjL9TufAWz21z8NRM7YxT/VqOMZqdFDZwGcvkip0grQP1MBkmF3qN0Mfd7XdtE6MnVPaXQpwhBkUgJ6LbmaCHcqZpcCd/qLh6rNM4SN4Ho7qxOItvpcMv2uSwWbx5oE1x23yH2MNgvTLdTt+FrKZqWTRmjbBAzX6qXNnWy7mICwjqY2PcviPawkjs9y4wmwF3o5sRDVlRXAG2O4gjTIzJ4GzkwMYkVt8E9YvB4lWTPxUx3mDx3EqRNUGELkS5sBNk/Xbn4UEGPpMU6RKUW+BghEuPFikS4mgsk36lqu4altvikt01S2OAzacWbvXauaGfCtxLGJRxZzI2Elk76qAKzS9Od53fJN0= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000012, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: > Consider MAX_NUMNODES == 64 and nr_node_ids == 4. Then > small_nodemask_bits == 64. > > The nodes_full() will set all 64 bits: > > #define nodes_full(nodemask) __nodes_full(&(nodemask), small_nodemask_bits) > static inline bool __nodes_full(const nodemask_t *srcp, unsigned int nbits) > { > return bitmap_full(srcp->bits, nbits); > } Damn, copied the wrong function. This should be nodes_setall() of course: #define nodes_setall(dst) __nodes_setall(&(dst), large_nodemask_bits) static inline void __nodes_setall(nodemask_t *dstp, unsigned int nbits) { bitmap_fill(dstp->bits, nbits); } > And the following nodes_weight() will return 64: > > #define nodes_weight(nodemask) __nodes_weight(&(nodemask), small_nodemask_bits) > static inline int __nodes_weight(const nodemask_t *srcp, unsigned int nbits) > { > return bitmap_weight(srcp->bits, nbits); > } > > Which is definitely wrong because there's 4 nodes at max. To solve > this problem, both cpumask and nodemask implementations share the same > rule: all bits beyond nr_{node,cpumask}_bits must be always cleared. > > See how cpumask_setall() implements that: > > static inline void cpumask_setall(struct cpumask *dstp) > { > // Make sure we don't break the optimization > if (small_const_nbits(small_cpumask_bits)) { > cpumask_bits(dstp)[0] = BITMAP_LAST_WORD_MASK(nr_cpumask_bits); > return; > } > > // Pass the exact (runtime) number of bits > bitmap_fill(cpumask_bits(dstp), nr_cpumask_bits); > } > > Hope that makes sense. > > Thanks, > Yury