All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Dumazet <dada1@cosmosbay.com>
To: travis@sgi.com
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Andi Kleen <ak@suse.de>,
	mingo@elte.hu, Christoph Lameter <clameter@sgi.com>,
	Jack Steiner <steiner@sgi.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 02/10] x86: Change size of node ids from u8 to u16 V2
Date: Tue, 15 Jan 2008 06:59:25 +0100	[thread overview]
Message-ID: <478C4BBD.9050707@cosmosbay.com> (raw)
In-Reply-To: <20080115021736.236433000@sgi.com>

travis@sgi.com a écrit :
> Change the size of node ids from 8 bits to 16 bits to
> accomodate more than 256 nodes.
> 
> Signed-off-by: Mike Travis <travis@sgi.com>
> Reviewed-by: Christoph Lameter <clameter@sgi.com>
> ---
> V1->V2:
>     - changed pxm_to_node_map to u16
>     - changed memnode map entries to u16
> ---
>  arch/x86/mm/numa_64.c       |    9 ++++++---
>  arch/x86/mm/srat_64.c       |    2 +-
>  drivers/acpi/numa.c         |    2 +-
>  include/asm-x86/mmzone_64.h |    4 ++--
>  include/asm-x86/numa_64.h   |    4 ++--
>  include/asm-x86/topology.h  |    2 +-
>  6 files changed, 13 insertions(+), 10 deletions(-)
> 
> --- a/arch/x86/mm/numa_64.c
> +++ b/arch/x86/mm/numa_64.c
> @@ -11,6 +11,7 @@
>  #include <linux/ctype.h>
>  #include <linux/module.h>
>  #include <linux/nodemask.h>
> +#include <linux/sched.h>
>  
>  #include <asm/e820.h>
>  #include <asm/proto.h>
> @@ -30,12 +31,12 @@ bootmem_data_t plat_node_bdata[MAX_NUMNO
>  
>  struct memnode memnode;
>  
> -int cpu_to_node_map[NR_CPUS] __read_mostly = {
> +u16 cpu_to_node_map[NR_CPUS] __read_mostly = {
>  	[0 ... NR_CPUS-1] = NUMA_NO_NODE
>  };
>  EXPORT_SYMBOL(cpu_to_node_map);
>  
> -unsigned char apicid_to_node[MAX_LOCAL_APIC] __cpuinitdata = {
> +u16 apicid_to_node[MAX_LOCAL_APIC] __cpuinitdata = {
>  	[0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
>  };
>  
> @@ -544,7 +545,9 @@ void __init numa_initmem_init(unsigned l
>  	node_set(0, node_possible_map);
>  	for (i = 0; i < NR_CPUS; i++)
>  		numa_set_node(i, 0);
> -	node_to_cpumask_map[0] = cpumask_of_cpu(0);
> +	/* we can't use cpumask_of_cpu() yet */
> +	memset(&node_to_cpumask_map[0], 0, sizeof(node_to_cpumask_map[0]));
> +	cpu_set(0, node_to_cpumask_map[0]);
>  	e820_register_active_regions(0, start_pfn, end_pfn);
>  	setup_node_bootmem(0, start_pfn << PAGE_SHIFT, end_pfn << PAGE_SHIFT);
>  }
> --- a/arch/x86/mm/srat_64.c
> +++ b/arch/x86/mm/srat_64.c
> @@ -395,7 +395,7 @@ int __init acpi_scan_nodes(unsigned long
>  static int fake_node_to_pxm_map[MAX_NUMNODES] __initdata = {
>  	[0 ... MAX_NUMNODES-1] = PXM_INVAL
>  };
> -static unsigned char fake_apicid_to_node[MAX_LOCAL_APIC] __initdata = {
> +static u16 fake_apicid_to_node[MAX_LOCAL_APIC] __initdata = {
>  	[0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
>  };
>  static int __init find_node_by_addr(unsigned long addr)
> --- a/drivers/acpi/numa.c
> +++ b/drivers/acpi/numa.c
> @@ -38,7 +38,7 @@ ACPI_MODULE_NAME("numa");
>  static nodemask_t nodes_found_map = NODE_MASK_NONE;
>  
>  /* maps to convert between proximity domain and logical node ID */
> -static int pxm_to_node_map[MAX_PXM_DOMAINS]
> +static u16 pxm_to_node_map[MAX_PXM_DOMAINS]
>  				= { [0 ... MAX_PXM_DOMAINS - 1] = NID_INVAL };
>  static int node_to_pxm_map[MAX_NUMNODES]
>  				= { [0 ... MAX_NUMNODES - 1] = PXM_INVAL };
> --- a/include/asm-x86/mmzone_64.h
> +++ b/include/asm-x86/mmzone_64.h
> @@ -15,8 +15,8 @@
>  struct memnode {
>  	int shift;
>  	unsigned int mapsize;
> -	u8 *map;
> -	u8 embedded_map[64-16];
> +	u16 *map;
> +	u16 embedded_map[64-16];

Must change to 32-8 here, or 64-8 and change the comment (total size = 128 
bytes). If you change to 32-8, check how .map is set to embedded_map.

>  } ____cacheline_aligned; /* total size = 64 bytes */
>  extern struct memnode memnode;
>  #define memnode_shift memnode.shift
> --- a/include/asm-x86/numa_64.h
> +++ b/include/asm-x86/numa_64.h
> @@ -20,7 +20,7 @@ extern void numa_set_node(int cpu, int n
>  extern void srat_reserve_add_area(int nodeid);
>  extern int hotadd_percent;
>  
> -extern unsigned char apicid_to_node[MAX_LOCAL_APIC];
> +extern u16 apicid_to_node[MAX_LOCAL_APIC];
>  
>  extern void numa_initmem_init(unsigned long start_pfn, unsigned long end_pfn);
>  extern unsigned long numa_free_all_bootmem(void);
> @@ -40,6 +40,6 @@ static inline void clear_node_cpumask(in
>  #define clear_node_cpumask(cpu) do {} while (0)
>  #endif
>  
> -#define NUMA_NO_NODE 0xff
> +#define NUMA_NO_NODE 0xffff
>  
>  #endif
> --- a/include/asm-x86/topology.h
> +++ b/include/asm-x86/topology.h
> @@ -30,7 +30,7 @@
>  #include <asm/mpspec.h>
>  
>  /* Mappings between logical cpu number and node number */
> -extern int cpu_to_node_map[];
> +extern u16 cpu_to_node_map[];
>  extern cpumask_t node_to_cpumask_map[];
>  
>  /* Returns the number of the node containing CPU 'cpu' */
> 


WARNING: multiple messages have this Message-ID (diff)
From: Eric Dumazet <dada1@cosmosbay.com>
To: travis@sgi.com
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Andi Kleen <ak@suse.de>,
	mingo@elte.hu, Christoph Lameter <clameter@sgi.com>,
	Jack Steiner <steiner@sgi.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 02/10] x86: Change size of node ids from u8 to u16 V2
Date: Tue, 15 Jan 2008 06:59:25 +0100	[thread overview]
Message-ID: <478C4BBD.9050707@cosmosbay.com> (raw)
In-Reply-To: <20080115021736.236433000@sgi.com>

travis@sgi.com a ecrit :
> Change the size of node ids from 8 bits to 16 bits to
> accomodate more than 256 nodes.
> 
> Signed-off-by: Mike Travis <travis@sgi.com>
> Reviewed-by: Christoph Lameter <clameter@sgi.com>
> ---
> V1->V2:
>     - changed pxm_to_node_map to u16
>     - changed memnode map entries to u16
> ---
>  arch/x86/mm/numa_64.c       |    9 ++++++---
>  arch/x86/mm/srat_64.c       |    2 +-
>  drivers/acpi/numa.c         |    2 +-
>  include/asm-x86/mmzone_64.h |    4 ++--
>  include/asm-x86/numa_64.h   |    4 ++--
>  include/asm-x86/topology.h  |    2 +-
>  6 files changed, 13 insertions(+), 10 deletions(-)
> 
> --- a/arch/x86/mm/numa_64.c
> +++ b/arch/x86/mm/numa_64.c
> @@ -11,6 +11,7 @@
>  #include <linux/ctype.h>
>  #include <linux/module.h>
>  #include <linux/nodemask.h>
> +#include <linux/sched.h>
>  
>  #include <asm/e820.h>
>  #include <asm/proto.h>
> @@ -30,12 +31,12 @@ bootmem_data_t plat_node_bdata[MAX_NUMNO
>  
>  struct memnode memnode;
>  
> -int cpu_to_node_map[NR_CPUS] __read_mostly = {
> +u16 cpu_to_node_map[NR_CPUS] __read_mostly = {
>  	[0 ... NR_CPUS-1] = NUMA_NO_NODE
>  };
>  EXPORT_SYMBOL(cpu_to_node_map);
>  
> -unsigned char apicid_to_node[MAX_LOCAL_APIC] __cpuinitdata = {
> +u16 apicid_to_node[MAX_LOCAL_APIC] __cpuinitdata = {
>  	[0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
>  };
>  
> @@ -544,7 +545,9 @@ void __init numa_initmem_init(unsigned l
>  	node_set(0, node_possible_map);
>  	for (i = 0; i < NR_CPUS; i++)
>  		numa_set_node(i, 0);
> -	node_to_cpumask_map[0] = cpumask_of_cpu(0);
> +	/* we can't use cpumask_of_cpu() yet */
> +	memset(&node_to_cpumask_map[0], 0, sizeof(node_to_cpumask_map[0]));
> +	cpu_set(0, node_to_cpumask_map[0]);
>  	e820_register_active_regions(0, start_pfn, end_pfn);
>  	setup_node_bootmem(0, start_pfn << PAGE_SHIFT, end_pfn << PAGE_SHIFT);
>  }
> --- a/arch/x86/mm/srat_64.c
> +++ b/arch/x86/mm/srat_64.c
> @@ -395,7 +395,7 @@ int __init acpi_scan_nodes(unsigned long
>  static int fake_node_to_pxm_map[MAX_NUMNODES] __initdata = {
>  	[0 ... MAX_NUMNODES-1] = PXM_INVAL
>  };
> -static unsigned char fake_apicid_to_node[MAX_LOCAL_APIC] __initdata = {
> +static u16 fake_apicid_to_node[MAX_LOCAL_APIC] __initdata = {
>  	[0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
>  };
>  static int __init find_node_by_addr(unsigned long addr)
> --- a/drivers/acpi/numa.c
> +++ b/drivers/acpi/numa.c
> @@ -38,7 +38,7 @@ ACPI_MODULE_NAME("numa");
>  static nodemask_t nodes_found_map = NODE_MASK_NONE;
>  
>  /* maps to convert between proximity domain and logical node ID */
> -static int pxm_to_node_map[MAX_PXM_DOMAINS]
> +static u16 pxm_to_node_map[MAX_PXM_DOMAINS]
>  				= { [0 ... MAX_PXM_DOMAINS - 1] = NID_INVAL };
>  static int node_to_pxm_map[MAX_NUMNODES]
>  				= { [0 ... MAX_NUMNODES - 1] = PXM_INVAL };
> --- a/include/asm-x86/mmzone_64.h
> +++ b/include/asm-x86/mmzone_64.h
> @@ -15,8 +15,8 @@
>  struct memnode {
>  	int shift;
>  	unsigned int mapsize;
> -	u8 *map;
> -	u8 embedded_map[64-16];
> +	u16 *map;
> +	u16 embedded_map[64-16];

Must change to 32-8 here, or 64-8 and change the comment (total size = 128 
bytes). If you change to 32-8, check how .map is set to embedded_map.

>  } ____cacheline_aligned; /* total size = 64 bytes */
>  extern struct memnode memnode;
>  #define memnode_shift memnode.shift
> --- a/include/asm-x86/numa_64.h
> +++ b/include/asm-x86/numa_64.h
> @@ -20,7 +20,7 @@ extern void numa_set_node(int cpu, int n
>  extern void srat_reserve_add_area(int nodeid);
>  extern int hotadd_percent;
>  
> -extern unsigned char apicid_to_node[MAX_LOCAL_APIC];
> +extern u16 apicid_to_node[MAX_LOCAL_APIC];
>  
>  extern void numa_initmem_init(unsigned long start_pfn, unsigned long end_pfn);
>  extern unsigned long numa_free_all_bootmem(void);
> @@ -40,6 +40,6 @@ static inline void clear_node_cpumask(in
>  #define clear_node_cpumask(cpu) do {} while (0)
>  #endif
>  
> -#define NUMA_NO_NODE 0xff
> +#define NUMA_NO_NODE 0xffff
>  
>  #endif
> --- a/include/asm-x86/topology.h
> +++ b/include/asm-x86/topology.h
> @@ -30,7 +30,7 @@
>  #include <asm/mpspec.h>
>  
>  /* Mappings between logical cpu number and node number */
> -extern int cpu_to_node_map[];
> +extern u16 cpu_to_node_map[];
>  extern cpumask_t node_to_cpumask_map[];
>  
>  /* Returns the number of the node containing CPU 'cpu' */
> 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2008-01-15  6:01 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-15  2:17 [PATCH 00/10] x86: Reduce memory and intra-node effects with large count NR_CPUs V2 travis
2008-01-15  2:17 ` travis
2008-01-15  2:17 ` [PATCH 01/10] x86: Change size of APICIDs from u8 to u16 V2 travis
2008-01-15  2:17   ` travis
2008-01-15  2:17 ` [PATCH 02/10] x86: Change size of node ids " travis
2008-01-15  2:17   ` travis
2008-01-15  5:59   ` Eric Dumazet [this message]
2008-01-15  5:59     ` Eric Dumazet
2008-01-15 15:51     ` Mike Travis
2008-01-15 15:51       ` Mike Travis
2008-01-15  2:17 ` [PATCH 03/10] x86: Change NR_CPUS arrays in powernow-k8 V2 travis
2008-01-15  2:17   ` travis
2008-01-15  2:17 ` [PATCH 04/10] x86: Change NR_CPUS arrays in intel_cacheinfo V2 travis
2008-01-15  2:17   ` travis
2008-01-15  2:17 ` [PATCH 05/10] x86: Change NR_CPUS arrays in smpboot_64 V2 travis
2008-01-15  2:17   ` travis
2008-01-15  2:17 ` [PATCH 06/10] x86: Change NR_CPUS arrays in topology V2 travis
2008-01-15  2:17   ` travis
2008-01-15  2:17 ` [PATCH 07/10] x86: Cleanup x86_cpu_to_apicid references V2 travis
2008-01-15  2:17   ` travis
2008-01-15  2:17 ` [PATCH 08/10] x86: Change NR_CPUS arrays in numa_64 V2 travis
2008-01-15  2:17   ` travis
2008-01-15 10:54   ` Andi Kleen
2008-01-15 10:54     ` Andi Kleen
2008-01-15 22:23     ` Mike Travis
2008-01-15 22:23       ` Mike Travis
2008-01-15  2:17 ` [PATCH 09/10] x86: Change NR_CPUS arrays in acpi-cpufreq V2 travis
2008-01-15  2:17   ` travis
2008-01-15  2:17 ` [PATCH 10/10] x86: Change bios_cpu_apicid to percpu data variable V2 travis
2008-01-15  2:17   ` travis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=478C4BBD.9050707@cosmosbay.com \
    --to=dada1@cosmosbay.com \
    --cc=ak@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=clameter@sgi.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mingo@elte.hu \
    --cc=steiner@sgi.com \
    --cc=travis@sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.