[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v7 2/6] xen/x86: move generically usable NUMA code from x86 to common


  • To: Wei Chen <wei.chen@xxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Thu, 3 Nov 2022 15:25:43 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LpqAWvObSakRB8G6+YRWLr7Ct3e/WECL3xkc6vwkUfk=; b=Dn6ngWtC1iwZAVSKNpiGKqc+ldNMOR2ygvkrXzNb3A4xAHpVno71uoXfUiSL8OuxHXfYe/vCx7nePaa1+iV/DWh1N5WwE0DKnnOzHstbfRO+pwz55KBpcqsrJT6t5wS3JNhNssp/BXWkPTXcg3h3bWV7owTg9AFfVG9M6G7ufeGe8BVK+PZYrmZxkGD92qB6x28KgqH3GI0tfEa69BV2JRgZG2i5R6M01cM9L2KvlZN9EQB8J5H0bDdwSbZTtbPrLDrIKAsRq/hBGTUaMAq90j/GUlgmPd2vS4xoLzIbDi7I9M/9wcmhuKlMMVBV++nIwo8gO8hvrkoQtgWmmglaQg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PV4gjTcQVIXgzPmFi5qenhpfJZMvk3iKPY61Ozm9fov+HZWqvv0BCkzXYRkF7OaEd2IbkJ5w04ASpSC2pZN4SpTVk3VOQHZR/0TX0V0CkxO0vpgVmRE8MHkVnN0X7GmEGGUtGsgEIhZbgHpR/9yvxuqEQjAtiIcT1hJXvnHEPElob/UIkJBcG71H+oJL8TdrdaydU/SqAIMBGy79IdgmxdNJz9LtwKQI2h7zVSo00hMoXRrnngarPJahSLuNiBw0LTfiVhO6eYwlByZVwPCKfGBnnalvCX0Wu3NGpTkmcjCmVZlpU+O4EP9HcK7UF33e2gvosVlcwnTLu9TmCxqRPQ==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: nd@xxxxxxx, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Thu, 03 Nov 2022 14:25:55 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 20.10.2022 08:14, Wei Chen wrote:
> There are some codes in x86/numa.c can be shared by common
> architectures to implememnt NUMA support. Just like some
> variables and functions to check and store NUMA memory map.
> And some variables and functions to do NUMA initialization.
> 
> In this patch, we move them to common/numa.c and xen/numa.h
> and use the CONFIG_NUMA to gate them for non-NUMA supported
> architectures. As the target header file is Xen-style, so
> we trim some spaces and replace tabs for the codes that has
> been moved to xen/numa.h at the same time.
> 
> As acpi_scan_nodes has been used in a common function, it
> doesn't make sense to use acpi_xxx in common code, so we
> rename it to numa_process_nodes in this patch too. After that
> if we still use CONFIG_ACPI_NUMA in to gate numa_process_nodes
> in numa_initmem_init, that doesn't make sense. As CONFIG_NUMA
> will be selected by CONFIG_ACPI_NUMA for x86. So, we replace
> CONFIG_ACPI_NUMA by CONFIG_NUMA to gate numa_process_nodes.
> 
> As arch_numa_disabled has been implememnted for ACPI NUMA,
> we can rename srat_disabled to numa_disabled and move it
> to common code as well.
> 
> The macro node_to_first_cpu(node) hasn't been used anywhere,
> so we drop it in this patch too.
> 
> Because some architectures allow to use all 64 physical address
> bits, but some architectures are not (like Arm64 allows 52, 48
> bits). In this case, we use min(PADDR_BITS, BITS_PER_LONG - 1)
> to calculate the shift when only one node is in the system in
> this patch too.
> 
> Signed-off-by: Wei Chen <wei.chen@xxxxxxx>

Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
with one small further request (could be taken care of also while
committing if no other need for a v8 arises):

> --- /dev/null
> +++ b/xen/common/numa.c
> @@ -0,0 +1,464 @@
> +/*
> + * Generic VM initialization for NUMA setups.
> + * Copyright 2002,2003 Andi Kleen, SuSE Labs.
> + * Adapted for Xen: Ryan Harper <ryanh@xxxxxxxxxx>
> + */
> +
> +#include <xen/init.h>
> +#include <xen/keyhandler.h>
> +#include <xen/mm.h>
> +#include <xen/nodemask.h>
> +#include <xen/numa.h>
> +#include <xen/param.h>
> +#include <xen/sched.h>
> +#include <xen/softirq.h>
> +
> +struct node_data __ro_after_init node_data[MAX_NUMNODES];
> +
> +/* Mapping from pdx to node id */
> +unsigned int __ro_after_init memnode_shift;
> +unsigned long __ro_after_init memnodemapsize;
> +nodeid_t *__ro_after_init memnodemap;
> +static typeof(*memnodemap) __ro_after_init _memnodemap[64];
> +
> +nodeid_t __read_mostly cpu_to_node[NR_CPUS] = {
> +    [0 ... NR_CPUS-1] = NUMA_NO_NODE
> +};
> +
> +cpumask_t __read_mostly node_to_cpumask[MAX_NUMNODES];
> +
> +nodemask_t __read_mostly node_online_map = { { [0] = 1UL } };
> +
> +bool __ro_after_init numa_off;
> +
> +bool numa_disabled(void)
> +{
> +    return numa_off || arch_numa_disabled();
> +}
> +
> +/*
> + * Given a shift value, try to populate memnodemap[]
> + * Returns :
> + * 1 if OK
> + * 0 if memnodmap[] too small (of shift too small)

May I ask that you correct this comment line: "of" (alone) makes no sense
here. Either "or" was meant or it would want to be "because of". Unless
this is a language tweak I'm entirely unaware of ...

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.