3 * This file is subject to the terms and conditions of the GNU General Public
4 * License. See the file "COPYING" in the main directory of this archive
7 * Copyright (C) 2000-2003 Silicon Graphics, Inc. All rights reserved.
10 #include <linux/config.h>
13 * Structure of the mem config of the node as a SN MI reg
14 * Medusa supports this reg config.
16 * BankSize nibble to bank size mapping
28 typedef struct node_memmap_s
30 unsigned int b0size :3, /* 0-2 bank 0 size */
31 b0dou :1, /* 3 bank 0 is 2-sided */
32 hack0 :4, /* 4-7 bank 0 hack */
33 b1size :3, /* 8-10 bank 1 size */
34 b1dou :1, /* 11 bank 1 is 2-sided */
35 hack1 :4, /* 12-15 bank 1 hack */
36 b2size :3, /* 16-18 bank 2 size */
37 b2dou :1, /* 19 bank 1 is 2-sided */
38 hack2 :4, /* 20-23 bank 2 hack */
39 b3size :3, /* 24-26 bank 3 size */
40 b3dou :1, /* 27 bank 3 is 2-sided */
41 hack3 :4; /* 28-31 bank 3 hack */
44 #define PROXIMITY_DOMAIN(nasid) (((nasid)>>1) & 255)
45 #define SN2_BANK_SIZE_SHIFT (MBSHIFT+6) /* 64 MB */
46 #define MD_BANKS_PER_NODE 4
47 #define MD_BANKSIZE (1UL << 34)
49 #define MAX_SN_NODES 256
50 #define MAX_LSAPICS 512
51 #define MAX_CPUS_NODE 4
52 #define MAX_CPUS (MAX_CPUS_NODE*MAX_SN_NODES)
53 #define CPUS_PER_FSB 2
54 #define CPUS_PER_FSB_MASK (CPUS_PER_FSB-1)
55 #define MAX_NASID 2048
59 #define FPROM_BUG() do {while (1);} while (0)
61 typedef struct sn_memmap_s
65 node_memmap_t node_memmap ;
68 typedef struct sn_config_s
72 sn_memmap_t memmap[1]; /* start of array */
75 struct acpi_table_memory_affinity;
77 extern long base_nasid;
79 extern void build_init(unsigned long);
80 extern int build_efi_memmap(void *, int);
81 extern int GetNumNodes(void);
82 extern int GetNumCpus(void);
83 extern int IsCpuPresent(int, int);
84 extern int GetNasid(int);
85 extern void* build_memory_srat(struct acpi_table_memory_affinity *);
86 extern void GetLogicalCpu(int, int *, int *);