Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
a1e78db3
Commit
a1e78db3
authored
Oct 28, 2005
by
Tony Luck
Browse files
Options
Browse Files
Download
Plain Diff
Pull define-node-cleanup into release branch
parents
fbbb0bd1
59c42235
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
94 additions
and
178 deletions
+94
-178
arch/ia64/sn/kernel/io_init.c
arch/ia64/sn/kernel/io_init.c
+1
-3
arch/ia64/sn/kernel/setup.c
arch/ia64/sn/kernel/setup.c
+51
-109
arch/ia64/sn/kernel/sn2/sn_hwperf.c
arch/ia64/sn/kernel/sn2/sn_hwperf.c
+2
-2
arch/ia64/sn/kernel/tiocx.c
arch/ia64/sn/kernel/tiocx.c
+2
-3
arch/ia64/sn/kernel/xpc_partition.c
arch/ia64/sn/kernel/xpc_partition.c
+1
-1
drivers/char/mmtimer.c
drivers/char/mmtimer.c
+2
-2
drivers/char/snsc.c
drivers/char/snsc.c
+2
-2
include/asm-ia64/sn/arch.h
include/asm-ia64/sn/arch.h
+26
-10
include/asm-ia64/sn/io.h
include/asm-ia64/sn/io.h
+1
-1
include/asm-ia64/sn/klconfig.h
include/asm-ia64/sn/klconfig.h
+4
-30
include/asm-ia64/sn/sn_cpuid.h
include/asm-ia64/sn/sn_cpuid.h
+0
-3
include/asm-ia64/sn/sn_sal.h
include/asm-ia64/sn/sn_sal.h
+1
-11
include/asm-ia64/sn/xp.h
include/asm-ia64/sn/xp.h
+1
-1
No files found.
arch/ia64/sn/kernel/io_init.c
View file @
a1e78db3
...
...
@@ -22,8 +22,6 @@
#include "xtalk/hubdev.h"
#include "xtalk/xwidgetdev.h"
nasid_t
master_nasid
=
INVALID_NASID
;
/* Partition Master */
static
struct
list_head
sn_sysdata_list
;
/* sysdata list struct */
...
...
@@ -165,7 +163,7 @@ static void sn_fixup_ionodes(void)
* Get SGI Specific HUB chipset information.
* Inform Prom that this kernel can support domain bus numbering.
*/
for
(
i
=
0
;
i
<
num
io
nodes
;
i
++
)
{
for
(
i
=
0
;
i
<
num
_c
nodes
;
i
++
)
{
hubdev
=
(
struct
hubdev_info
*
)(
NODEPDA
(
i
)
->
pdinfo
);
nasid
=
cnodeid_to_nasid
(
i
);
hubdev
->
max_segment_number
=
0xffffffff
;
...
...
arch/ia64/sn/kernel/setup.c
View file @
a1e78db3
...
...
@@ -59,8 +59,6 @@ DEFINE_PER_CPU(struct pda_s, pda_percpu);
#define MAX_PHYS_MEMORY (1UL << IA64_MAX_PHYS_BITS)
/* Max physical address supported */
lboard_t
*
root_lboard
[
MAX_COMPACT_NODES
];
extern
void
bte_init_node
(
nodepda_t
*
,
cnodeid_t
);
extern
void
sn_timer_init
(
void
);
...
...
@@ -97,15 +95,15 @@ u8 sn_region_size;
EXPORT_SYMBOL
(
sn_region_size
);
int
sn_prom_type
;
/* 0=hardware, 1=medusa/realprom, 2=medusa/fakeprom */
short
physical_node_map
[
MAX_
PHYSNODE_ID
];
short
physical_node_map
[
MAX_
NUMALINK_NODES
];
static
unsigned
long
sn_prom_features
[
MAX_PROM_FEATURE_SETS
];
EXPORT_SYMBOL
(
physical_node_map
);
int
num
io
nodes
;
int
num
_c
nodes
;
static
void
sn_init_pdas
(
char
**
);
static
void
scan_for_ionod
es
(
void
);
static
void
build_cnode_tabl
es
(
void
);
static
nodepda_t
*
nodepdaindr
[
MAX_COMPACT_NODES
];
...
...
@@ -139,19 +137,6 @@ extern char drive_info[4 * 16];
char
drive_info
[
4
*
16
];
#endif
/*
* Get nasid of current cpu early in boot before nodepda is initialized
*/
static
int
boot_get_nasid
(
void
)
{
int
nasid
;
if
(
ia64_sn_get_sapic_info
(
get_sapicid
(),
&
nasid
,
NULL
,
NULL
))
BUG
();
return
nasid
;
}
/*
* This routine can only be used during init, since
* smp_boot_data is an init data structure.
...
...
@@ -223,7 +208,6 @@ void __init early_sn_setup(void)
}
extern
int
platform_intr_list
[];
extern
nasid_t
master_nasid
;
static
int
__initdata
shub_1_1_found
=
0
;
/*
...
...
@@ -269,7 +253,6 @@ static void __init sn_check_for_wars(void)
void
__init
sn_setup
(
char
**
cmdline_p
)
{
long
status
,
ticks_per_sec
,
drift
;
int
pxm
;
u32
version
=
sn_sal_rev
();
extern
void
sn_cpu_init
(
void
);
...
...
@@ -300,11 +283,10 @@ void __init sn_setup(char **cmdline_p)
MAX_DMA_ADDRESS
=
PAGE_OFFSET
+
MAX_PHYS_MEMORY
;
memset
(
physical_node_map
,
-
1
,
sizeof
(
physical_node_map
));
for
(
pxm
=
0
;
pxm
<
MAX_PXM_DOMAINS
;
pxm
++
)
if
(
pxm_to_nid_map
[
pxm
]
!=
-
1
)
physical_node_map
[
pxm_to_nasid
(
pxm
)]
=
pxm_to_nid_map
[
pxm
];
/*
* Build the tables for managing cnodes.
*/
build_cnode_tables
();
/*
* Old PROMs do not provide an ACPI FADT. Disable legacy keyboard
...
...
@@ -319,8 +301,6 @@ void __init sn_setup(char **cmdline_p)
printk
(
"SGI SAL version %x.%02x
\n
"
,
version
>>
8
,
version
&
0x00FF
);
master_nasid
=
boot_get_nasid
();
status
=
ia64_sal_freq_base
(
SAL_FREQ_BASE_REALTIME_CLOCK
,
&
ticks_per_sec
,
&
drift
);
...
...
@@ -378,15 +358,6 @@ static void __init sn_init_pdas(char **cmdline_p)
{
cnodeid_t
cnode
;
memset
(
sn_cnodeid_to_nasid
,
-
1
,
sizeof
(
__ia64_per_cpu_var
(
__sn_cnodeid_to_nasid
)));
for_each_online_node
(
cnode
)
sn_cnodeid_to_nasid
[
cnode
]
=
pxm_to_nasid
(
nid_to_pxm_map
[
cnode
]);
numionodes
=
num_online_nodes
();
scan_for_ionodes
();
/*
* Allocate & initalize the nodepda for each node.
*/
...
...
@@ -402,7 +373,7 @@ static void __init sn_init_pdas(char **cmdline_p)
/*
* Allocate & initialize nodepda for TIOs. For now, put them on node 0.
*/
for
(
cnode
=
num_online_nodes
();
cnode
<
num
io
nodes
;
cnode
++
)
{
for
(
cnode
=
num_online_nodes
();
cnode
<
num
_c
nodes
;
cnode
++
)
{
nodepdaindr
[
cnode
]
=
alloc_bootmem_node
(
NODE_DATA
(
0
),
sizeof
(
nodepda_t
));
memset
(
nodepdaindr
[
cnode
],
0
,
sizeof
(
nodepda_t
));
...
...
@@ -411,7 +382,7 @@ static void __init sn_init_pdas(char **cmdline_p)
/*
* Now copy the array of nodepda pointers to each nodepda.
*/
for
(
cnode
=
0
;
cnode
<
num
io
nodes
;
cnode
++
)
for
(
cnode
=
0
;
cnode
<
num
_c
nodes
;
cnode
++
)
memcpy
(
nodepdaindr
[
cnode
]
->
pernode_pdaindr
,
nodepdaindr
,
sizeof
(
nodepdaindr
));
...
...
@@ -428,7 +399,7 @@ static void __init sn_init_pdas(char **cmdline_p)
* Initialize the per node hubdev. This includes IO Nodes and
* headless/memless nodes.
*/
for
(
cnode
=
0
;
cnode
<
num
io
nodes
;
cnode
++
)
{
for
(
cnode
=
0
;
cnode
<
num
_c
nodes
;
cnode
++
)
{
hubdev_init_node
(
nodepdaindr
[
cnode
],
cnode
);
}
}
...
...
@@ -553,87 +524,58 @@ void __init sn_cpu_init(void)
}
/*
* Scan klconfig for ionodes. Add the nasids to the
* physical_node_map and the pda and increment numionodes.
* Build tables for converting between NASIDs and cnodes.
*/
static
inline
int
__init
board_needs_cnode
(
int
type
)
{
return
(
type
==
KLTYPE_SNIA
||
type
==
KLTYPE_TIO
);
}
static
void
__init
scan_for_ionod
es
(
void
)
void
__init
build_cnode_tabl
es
(
void
)
{
int
nasid
=
0
;
int
nasid
;
int
node
;
lboard_t
*
brd
;
/* fakeprom does not support klgraph */
if
(
IS_RUNNING_ON_FAKE_PROM
())
return
;
/* Setup ionodes with memory */
for
(
nasid
=
0
;
nasid
<
MAX_PHYSNODE_ID
;
nasid
+=
2
)
{
char
*
klgraph_header
;
cnodeid_t
cnodeid
;
if
(
physical_node_map
[
nasid
]
==
-
1
)
continue
;
memset
(
physical_node_map
,
-
1
,
sizeof
(
physical_node_map
));
memset
(
sn_cnodeid_to_nasid
,
-
1
,
sizeof
(
__ia64_per_cpu_var
(
__sn_cnodeid_to_nasid
)));
cnodeid
=
-
1
;
klgraph_header
=
__va
(
ia64_sn_get_klconfig_addr
(
nasid
));
if
(
!
klgraph_header
)
{
BUG
();
/* All nodes must have klconfig tables! */
}
cnodeid
=
nasid_to_cnodeid
(
nasid
);
root_lboard
[
cnodeid
]
=
(
lboard_t
*
)
NODE_OFFSET_TO_LBOARD
((
nasid
),
((
kl_config_hdr_t
*
)
(
klgraph_header
))
->
ch_board_info
);
/*
* First populate the tables with C/M bricks. This ensures that
* cnode == node for all C & M bricks.
*/
for_each_online_node
(
node
)
{
nasid
=
pxm_to_nasid
(
nid_to_pxm_map
[
node
]);
sn_cnodeid_to_nasid
[
node
]
=
nasid
;
physical_node_map
[
nasid
]
=
node
;
}
/* Scan headless/memless IO Nodes. */
for
(
nasid
=
0
;
nasid
<
MAX_PHYSNODE_ID
;
nasid
+=
2
)
{
/* if there's no nasid, don't try to read the klconfig on the node */
if
(
physical_node_map
[
nasid
]
==
-
1
)
continue
;
brd
=
find_lboard_any
((
lboard_t
*
)
root_lboard
[
nasid_to_cnodeid
(
nasid
)],
KLTYPE_SNIA
);
if
(
brd
)
{
brd
=
KLCF_NEXT_ANY
(
brd
);
/* Skip this node's lboard */
if
(
!
brd
)
continue
;
}
/*
* num_cnodes is total number of C/M/TIO bricks. Because of the 256 node
* limit on the number of nodes, we can't use the generic node numbers
* for this. Note that num_cnodes is incremented below as TIOs or
* headless/memoryless nodes are discovered.
*/
num_cnodes
=
num_online_nodes
();
brd
=
find_lboard_any
(
brd
,
KLTYPE_SNIA
);
/* fakeprom does not support klgraph */
if
(
IS_RUNNING_ON_FAKE_PROM
())
return
;
/* Find TIOs & headless/memoryless nodes and add them to the tables */
for_each_online_node
(
node
)
{
kl_config_hdr_t
*
klgraph_header
;
nasid
=
cnodeid_to_nasid
(
node
);
if
((
klgraph_header
=
ia64_sn_get_klconfig_addr
(
nasid
))
==
NULL
)
BUG
();
brd
=
NODE_OFFSET_TO_LBOARD
(
nasid
,
klgraph_header
->
ch_board_info
);
while
(
brd
)
{
sn_cnodeid_to_nasid
[
numionodes
]
=
brd
->
brd_nasid
;
physical_node_map
[
brd
->
brd_nasid
]
=
numionodes
;
root_lboard
[
numionodes
]
=
brd
;
numionodes
++
;
brd
=
KLCF_NEXT_ANY
(
brd
);
if
(
!
brd
)
break
;
brd
=
find_lboard_any
(
brd
,
KLTYPE_SNIA
);
if
(
board_needs_cnode
(
brd
->
brd_type
)
&&
physical_node_map
[
brd
->
brd_nasid
]
<
0
)
{
sn_cnodeid_to_nasid
[
num_cnodes
]
=
brd
->
brd_nasid
;
physical_node_map
[
brd
->
brd_nasid
]
=
num_cnodes
++
;
}
}
/* Scan for TIO nodes. */
for
(
nasid
=
0
;
nasid
<
MAX_PHYSNODE_ID
;
nasid
+=
2
)
{
/* if there's no nasid, don't try to read the klconfig on the node */
if
(
physical_node_map
[
nasid
]
==
-
1
)
continue
;
brd
=
find_lboard_any
((
lboard_t
*
)
root_lboard
[
nasid_to_cnodeid
(
nasid
)],
KLTYPE_TIO
);
while
(
brd
)
{
sn_cnodeid_to_nasid
[
numionodes
]
=
brd
->
brd_nasid
;
physical_node_map
[
brd
->
brd_nasid
]
=
numionodes
;
root_lboard
[
numionodes
]
=
brd
;
numionodes
++
;
brd
=
KLCF_NEXT_ANY
(
brd
);
if
(
!
brd
)
break
;
brd
=
find_lboard_any
(
brd
,
KLTYPE_TIO
);
brd
=
find_lboard_next
(
brd
);
}
}
}
...
...
arch/ia64/sn/kernel/sn2/sn_hwperf.c
View file @
a1e78db3
...
...
@@ -476,8 +476,8 @@ static int sn_topology_show(struct seq_file *s, void *d)
for_each_online_cpu
(
j
)
{
seq_printf
(
s
,
j
?
":%d"
:
", dist %d"
,
node_distance
(
cpu
id_to_cnodeid
(
i
),
cpu
id_to_cnodeid
(
j
)));
cpu
_to_node
(
i
),
cpu
_to_node
(
j
)));
}
seq_putc
(
s
,
'\n'
);
}
...
...
arch/ia64/sn/kernel/tiocx.c
View file @
a1e78db3
...
...
@@ -489,12 +489,11 @@ static int __init tiocx_init(void)
bus_register
(
&
tiocx_bus_type
);
for
(
cnodeid
=
0
;
cnodeid
<
MAX_COMPACT_NODES
;
cnodeid
++
)
{
for
(
cnodeid
=
0
;
cnodeid
<
num_cnodes
;
cnodeid
++
)
{
nasid_t
nasid
;
int
bt
;
if
((
nasid
=
cnodeid_to_nasid
(
cnodeid
))
<
0
)
break
;
/* No more nasids .. bail out of loop */
nasid
=
cnodeid_to_nasid
(
cnodeid
);
if
((
nasid
&
0x1
)
&&
is_fpga_tio
(
nasid
,
&
bt
))
{
struct
hubdev_info
*
hubdev
;
...
...
arch/ia64/sn/kernel/xpc_partition.c
View file @
a1e78db3
...
...
@@ -44,7 +44,7 @@ static u64 xpc_sh2_IPI_access3;
/* original protection values for each node */
u64
xpc_prot_vec
[
MAX_
COMPACT_
NODES
];
u64
xpc_prot_vec
[
MAX_
NUM
NODES
];
/* this partition's reserved page */
...
...
drivers/char/mmtimer.c
View file @
a1e78db3
...
...
@@ -441,7 +441,7 @@ static irqreturn_t
mmtimer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
int
i
;
mmtimer_t
*
base
=
timers
+
cpu
id_to_cnodeid
(
smp_processor_id
())
*
mmtimer_t
*
base
=
timers
+
cpu
_to_node
(
smp_processor_id
())
*
NUM_COMPARATORS
;
unsigned
long
expires
=
0
;
int
result
=
IRQ_NONE
;
...
...
@@ -608,7 +608,7 @@ static int sgi_timer_set(struct k_itimer *timr, int flags,
*/
preempt_disable
();
nodeid
=
cpu
id_to_cnodeid
(
smp_processor_id
());
nodeid
=
cpu
_to_node
(
smp_processor_id
());
base
=
timers
+
nodeid
*
NUM_COMPARATORS
;
retry:
/* Don't use an allocated timer, or a deleted one that's pending */
...
...
drivers/char/snsc.c
View file @
a1e78db3
...
...
@@ -377,7 +377,7 @@ scdrv_init(void)
dev_t
first_dev
,
dev
;
nasid_t
event_nasid
=
ia64_sn_get_console_nasid
();
if
(
alloc_chrdev_region
(
&
first_dev
,
0
,
num
io
nodes
,
if
(
alloc_chrdev_region
(
&
first_dev
,
0
,
num
_c
nodes
,
SYSCTL_BASENAME
)
<
0
)
{
printk
(
"%s: failed to register SN system controller device
\n
"
,
__FUNCTION__
);
...
...
@@ -385,7 +385,7 @@ scdrv_init(void)
}
snsc_class
=
class_create
(
THIS_MODULE
,
SYSCTL_BASENAME
);
for
(
cnode
=
0
;
cnode
<
num
io
nodes
;
cnode
++
)
{
for
(
cnode
=
0
;
cnode
<
num
_c
nodes
;
cnode
++
)
{
geoid
=
cnodeid_get_geoid
(
cnode
);
devnamep
=
devname
;
format_module_id
(
devnamep
,
geo_module
(
geoid
),
...
...
include/asm-ia64/sn/arch.h
View file @
a1e78db3
...
...
@@ -17,6 +17,32 @@
#include <asm/sn/types.h>
#include <asm/sn/sn_cpuid.h>
/*
* This is the maximum number of NUMALINK nodes that can be part of a single
* SSI kernel. This number includes C-brick, M-bricks, and TIOs. Nodes in
* remote partitions are NOT included in this number.
* The number of compact nodes cannot exceed size of a coherency domain.
* The purpose of this define is to specify a node count that includes
* all C/M/TIO nodes in an SSI system.
*
* SGI system can currently support up to 256 C/M nodes plus additional TIO nodes.
*
* Note: ACPI20 has an architectural limit of 256 nodes. When we upgrade
* to ACPI3.0, this limit will be removed. The notion of "compact nodes"
* should be deleted and TIOs should be included in MAX_NUMNODES.
*/
#define MAX_COMPACT_NODES 512
/*
* Maximum number of nodes in all partitions and in all coherency domains.
* This is the total number of nodes accessible in the numalink fabric. It
* includes all C & M bricks, plus all TIOs.
*
* This value is also the value of the maximum number of NASIDs in the numalink
* fabric.
*/
#define MAX_NUMALINK_NODES 16384
/*
* The following defines attributes of the HUB chip. These attributes are
* frequently referenced. They are kept in the per-cpu data areas of each cpu.
...
...
@@ -40,15 +66,6 @@ DECLARE_PER_CPU(struct sn_hub_info_s, __sn_hub_info);
#define enable_shub_wars_1_1() (sn_hub_info->shub_1_1_found)
/*
* This is the maximum number of nodes that can be part of a kernel.
* Effectively, it's the maximum number of compact node ids (cnodeid_t).
* This is not necessarily the same as MAX_NASIDS.
*/
#define MAX_COMPACT_NODES 2048
#define CPUS_PER_NODE 4
/*
* Compact node ID to nasid mappings kept in the per-cpu data areas of each
* cpu.
...
...
@@ -57,7 +74,6 @@ DECLARE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_NUMNODES]);
#define sn_cnodeid_to_nasid (&__get_cpu_var(__sn_cnodeid_to_nasid[0]))
extern
u8
sn_partition_id
;
extern
u8
sn_system_size
;
extern
u8
sn_sharing_domain_size
;
...
...
include/asm-ia64/sn/io.h
View file @
a1e78db3
...
...
@@ -14,7 +14,7 @@
extern
void
*
sn_io_addr
(
unsigned
long
port
)
__attribute_const__
;
/* Forward definition */
extern
void
__sn_mmiowb
(
void
);
/* Forward definition */
extern
int
num
io
nodes
;
extern
int
num
_c
nodes
;
#define __sn_mf_a() ia64_mfa()
...
...
include/asm-ia64/sn/klconfig.h
View file @
a1e78db3
...
...
@@ -208,19 +208,6 @@ typedef struct lboard_s {
klconf_off_t
brd_next_same
;
/* Next BOARD with same nasid */
}
lboard_t
;
#define KLCF_NUM_COMPS(_brd) ((_brd)->brd_numcompts)
#define NODE_OFFSET_TO_KLINFO(n,off) ((klinfo_t*) TO_NODE_CAC(n,off))
#define KLCF_NEXT(_brd) \
((_brd)->brd_next_same ? \
(NODE_OFFSET_TO_LBOARD((_brd)->brd_next_same_host, (_brd)->brd_next_same)): NULL)
#define KLCF_NEXT_ANY(_brd) \
((_brd)->brd_next_any ? \
(NODE_OFFSET_TO_LBOARD(NASID_GET(_brd), (_brd)->brd_next_any)): NULL)
#define KLCF_COMP(_brd, _ndx) \
((((_brd)->brd_compts[(_ndx)]) == 0) ? 0 : \
(NODE_OFFSET_TO_KLINFO(NASID_GET(_brd), (_brd)->brd_compts[(_ndx)])))
/*
* Generic info structure. This stores common info about a
* component.
...
...
@@ -249,24 +236,11 @@ typedef struct klinfo_s { /* Generic info */
}
klinfo_t
;
static
inline
lboard_t
*
find_lboard_
any
(
lboard_t
*
start
,
unsigned
char
brd_type
)
static
inline
lboard_t
*
find_lboard_
next
(
lboard_t
*
brd
)
{
/* Search all boards stored on this node. */
while
(
start
)
{
if
(
start
->
brd_type
==
brd_type
)
return
start
;
start
=
KLCF_NEXT_ANY
(
start
);
}
/* Didn't find it. */
return
(
lboard_t
*
)
NULL
;
if
(
brd
&&
brd
->
brd_next_any
)
return
NODE_OFFSET_TO_LBOARD
(
NASID_GET
(
brd
),
brd
->
brd_next_any
);
return
NULL
;
}
/* external declarations of Linux kernel functions. */
extern
lboard_t
*
root_lboard
[];
extern
klinfo_t
*
find_component
(
lboard_t
*
brd
,
klinfo_t
*
kli
,
unsigned
char
type
);
extern
klinfo_t
*
find_first_component
(
lboard_t
*
brd
,
unsigned
char
type
);
#endif
/* _ASM_IA64_SN_KLCONFIG_H */
include/asm-ia64/sn/sn_cpuid.h
View file @
a1e78db3
...
...
@@ -105,7 +105,6 @@ extern short physical_node_map[]; /* indexed by nasid to get cnode */
#define cpuid_to_nasid(cpuid) (sn_nodepda->phys_cpuid[cpuid].nasid)
#define cpuid_to_subnode(cpuid) (sn_nodepda->phys_cpuid[cpuid].subnode)
#define cpuid_to_slice(cpuid) (sn_nodepda->phys_cpuid[cpuid].slice)
#define cpuid_to_cnodeid(cpuid) (physical_node_map[cpuid_to_nasid(cpuid)])
/*
...
...
@@ -113,8 +112,6 @@ extern short physical_node_map[]; /* indexed by nasid to get cnode */
* of potentially large tables.
*/
extern
int
nasid_slice_to_cpuid
(
int
,
int
);
#define nasid_slice_to_cpu_physical_id(nasid, slice) \
cpu_physical_id(nasid_slice_to_cpuid(nasid, slice))
/*
* cnodeid_to_nasid - convert a cnodeid to a NASID
...
...
include/asm-ia64/sn/sn_sal.h
View file @
a1e78db3
...
...
@@ -206,26 +206,16 @@ ia64_sn_get_master_baseio_nasid(void)
return
ret_stuff
.
v0
;
}
static
inline
char
*
static
inline
void
*
ia64_sn_get_klconfig_addr
(
nasid_t
nasid
)
{
struct
ia64_sal_retval
ret_stuff
;
int
cnodeid
;
cnodeid
=
nasid_to_cnodeid
(
nasid
);
ret_stuff
.
status
=
0
;
ret_stuff
.
v0
=
0
;
ret_stuff
.
v1
=
0
;
ret_stuff
.
v2
=
0
;
SAL_CALL
(
ret_stuff
,
SN_SAL_GET_KLCONFIG_ADDR
,
(
u64
)
nasid
,
0
,
0
,
0
,
0
,
0
,
0
);
/*
* We should panic if a valid cnode nasid does not produce
* a klconfig address.
*/
if
(
ret_stuff
.
status
!=
0
)
{
panic
(
"ia64_sn_get_klconfig_addr: Returned error %lx
\n
"
,
ret_stuff
.
status
);
}
return
ret_stuff
.
v0
?
__va
(
ret_stuff
.
v0
)
:
NULL
;
}
...
...
include/asm-ia64/sn/xp.h
View file @
a1e78db3
...
...
@@ -49,7 +49,7 @@
* C-brick nasids, thus the need for bitmaps which don't account for
* odd-numbered (non C-brick) nasids.
*/
#define XP_MAX_PHYSNODE_ID (MAX_
PHYSNODE_ID
/ 2)
#define XP_MAX_PHYSNODE_ID (MAX_
NUMALINK_NODES
/ 2)
#define XP_NASID_MASK_BYTES ((XP_MAX_PHYSNODE_ID + 7) / 8)
#define XP_NASID_MASK_WORDS ((XP_MAX_PHYSNODE_ID + 63) / 64)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment