Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp2349537ybh; Mon, 16 Mar 2020 01:18:00 -0700 (PDT) X-Google-Smtp-Source: ADFU+vskv3hdZWiQCxYZRVFuwjg0IKloU2yRNjHJKhx60JmjQ29PFjg1QpOvdkGGtstpHEFn6Is2 X-Received: by 2002:aca:4bc5:: with SMTP id y188mr16831483oia.9.1584346680701; Mon, 16 Mar 2020 01:18:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584346680; cv=none; d=google.com; s=arc-20160816; b=Ku2X0KLwf3PkvYWWJLdkrYPuqgMiLyaFZmg22ZnhSwAaZ/kWRBMRLQpdX0tjfPevn3 haWCf0ImGCAmI5tVUJ4Us0usvmoL9Wzc+Ac3BUNEWjJkZdz8+DRls39FYrnFKoNj3cMH 0z5dNvKa8Uzp4GuDDQtDkOgSHjsMDIgZAa9FUmH2N6LVl/wg4ATdP1eOoVbDJHSQwJTv 2IJ0tAQ9pFVuc80oAmGC/W1fcuA6U7TYqYBvJeJ6F5LGQVYJNZR7MFyePQHfFk524+mJ 8xMWnlEGNoCYfSdupSO9EuoF5VvFfJaOl5tRjPG4+VpJ4ULZwBsllaLJ6yJDc3hniYHn ZZDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=F/i4UURiGEiDmJWiySfSNZr+o1KHFsCHgdng66n03Q0=; b=mJBJlAP9Npz4+qF2rELtP0YhpbBDVRbXKc7omfRDudvXNXtfG2gmqSnHwGkVSlUJtZ +Yo4qB27vfLNzWcZBffIYCb9w73Xq7Whyl6+j0O0K9soTDR9TZHnLc6Pn3zvIk/L4Ink Wec2y/ioByWytrJFeCDk97lTsxd3+5DmWbJ1MpPJHryVYlS/mm1O4dkM7TuJB2QUFJMl rt3BgUvmom43zXGfMdHVJEBX0oT0Zqqd8jwCnCouEGAQcYemYvMx5BaI/+FyNI02iarE UFuRQUorDb4PlpTa2wReLWIkZHqou0O51aPu7PUwjL5aEX27XdIdWFq+if1IaOOwXect Q0+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=B7QUWfZ2; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f23si9527169oti.283.2020.03.16.01.17.45; Mon, 16 Mar 2020 01:18:00 -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=@gmail.com header.s=20161025 header.b=B7QUWfZ2; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729996AbgCPIPc (ORCPT + 99 others); Mon, 16 Mar 2020 04:15:32 -0400 Received: from mail-qk1-f193.google.com ([209.85.222.193]:41809 "EHLO mail-qk1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729975AbgCPIPb (ORCPT ); Mon, 16 Mar 2020 04:15:31 -0400 Received: by mail-qk1-f193.google.com with SMTP id s11so13290643qks.8 for ; Mon, 16 Mar 2020 01:15:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=F/i4UURiGEiDmJWiySfSNZr+o1KHFsCHgdng66n03Q0=; b=B7QUWfZ2p0iHwX6wNgX6U4yztQAMGDAiU1KFSHsaBYgSKDV+Kdl+8H155Lfmbg+9o/ TxGbcBBwEqOPQ/B/w6jAG6N0rUQpjSNA+s/F/Tud+SRpVnYFph4gVet/kfh28qnd9zQt +zSo6COsT5fR35kjG2HJUXBsYVrX9cRZUknKCS7W5sr1GYRTBMEC1QpOzQ7viSl+n2pN cGaEg2tPimuaF7sbPikYKrNGerAbRU77SHD6nW+mqtjD7aZXVr2oYClwzswetpGkUdY6 ldrXWz4oCSqcw2vqUL3VtrVAEe7+21fSUUt9pt7RqkY8U0lRZc6KjarLjC7fRfr6wPSh YpKg== 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:content-transfer-encoding; bh=F/i4UURiGEiDmJWiySfSNZr+o1KHFsCHgdng66n03Q0=; b=ptw+E/+r3i5pzGi6HvTp3aQqPPbWPXqbJyhzxjBf0bOs/EjNF3a3Dl2rUbtpwJFlFJ eNSZsS6aE00aKhm0m/nEq5rN1LKMzT3IxLsnsuTe26Pl2GqIg2kdIOc3WF+FV2PD3/dA kjAl9nnP9LkeTCsOqx+NgmmsvBnydar2IzwEz9OUczCEw6iSjXOiQzuZdO4TpNf8CM76 wDgBuAHu02gnTxaL7FMlxX4bNYxCmEUS4st9ZyvSat+zEC1/m68ytG4ttaAwSFz7FPv8 C6/3y/IB5WwntbejrEspm9XOGWf4EBagavzArzMkDihRyXIcgtVI+QGk7LcAUSRal/Sg YACg== X-Gm-Message-State: ANhLgQ2YCF7mIuiewOSZtIN4Nhm60evSemWV+7GzUJdQYZ9j13EhIIjT XIIIKl6hyyDdPPLoretcmzNIFKxxfYPtO7VKXMg= X-Received: by 2002:a37:546:: with SMTP id 67mr24213408qkf.272.1584346530319; Mon, 16 Mar 2020 01:15:30 -0700 (PDT) MIME-Version: 1.0 References: <20200311110237.5731-2-srikar@linux.vnet.ibm.com> <20200311115735.GM23944@dhcp22.suse.cz> <20200312052707.GA3277@linux.vnet.ibm.com> <5e5c736a-a88c-7c76-fc3d-7bc765e8dcba@suse.cz> <20200312131438.GB3277@linux.vnet.ibm.com> <61437352-8b54-38fa-4471-044a65c9d05a@suse.cz> <20200312161310.GC3277@linux.vnet.ibm.com> <20200313110440.GA25144@linux.vnet.ibm.com> <06be5908-9af6-2892-0333-e9558b2cf474@suse.cz> In-Reply-To: <06be5908-9af6-2892-0333-e9558b2cf474@suse.cz> From: Joonsoo Kim Date: Mon, 16 Mar 2020 17:15:19 +0900 Message-ID: Subject: Re: [PATCH 1/3] powerpc/numa: Set numa_node for all possible cpus To: Vlastimil Babka Cc: Srikar Dronamraju , Sachin Sant , Michal Hocko , Linus Torvalds , LKML , Linux Memory Management List , Mel Gorman , "Kirill A. Shutemov" , Andrew Morton , linuxppc-dev , Christopher Lameter , Joonsoo Kim , Kirill Tkhai , Michael Ellerman Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2020=EB=85=84 3=EC=9B=94 13=EC=9D=BC (=EA=B8=88) =EC=98=A4=ED=9B=84 8:38, V= lastimil Babka =EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1: > > On 3/13/20 12:04 PM, Srikar Dronamraju wrote: > >> I lost all the memory about it. :) > >> Anyway, how about this? > >> > >> 1. make node_present_pages() safer > >> static inline node_present_pages(nid) > >> { > >> if (!node_online(nid)) return 0; > >> return (NODE_DATA(nid)->node_present_pages); > >> } > >> > > > > Yes this would help. > > Looks good, yeah. > > >> 2. make node_to_mem_node() safer for all cases > >> In ppc arch's mem_topology_setup(void) > >> for_each_present_cpu(cpu) { > >> numa_setup_cpu(cpu); > >> mem_node =3D node_to_mem_node(numa_mem_id()); > >> if (!node_present_pages(mem_node)) { > >> _node_numa_mem_[numa_mem_id()] =3D first_online_node; > >> } > >> } > >> > > > > But here as discussed above, we miss the case of possible but not prese= nt nodes. > > For such nodes, the above change may not update, resulting in they stil= l > > having 0. And node 0 can be only possible but not present. Oops, I don't read full thread so miss the case. > So is there other way to do the setup so that node_to_mem_node() returns = an > online+present node when called for any possible node? Two changes seems to be sufficient. 1. initialize all node's _node_numa_mem_[] =3D first_online_node in mem_topology_setup() 2. replace the node with online+present node for _node_to_mem_node_[] in set_cpu_numa_mem(). static inline void set_cpu_numa_mem(int cpu, int node) { per_cpu(_numa_mem_, cpu) =3D node; + if (!node_present_pages(node)) + node =3D first_online_node; _node_numa_mem_[cpu_to_node(cpu)] =3D node; } #endif With these two change, we can safely call node_to_mem_node() anywhere. Thanks.