Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gsplhtlxg
clone-Linux
提交
7cec2ef4
C
clone-Linux
项目概览
gsplhtlxg
/
clone-Linux
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
clone-Linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7cec2ef4
编写于
4月 02, 2009
作者:
K
Kyle McMartin
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'rusty-cpumask-parisc' into parisc
上级
91400ac3
9bc181d8
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
16 addition
and
15 deletion
+16
-15
arch/parisc/include/asm/smp.h
arch/parisc/include/asm/smp.h
+2
-1
arch/parisc/kernel/irq.c
arch/parisc/kernel/irq.c
+2
-2
arch/parisc/kernel/processor.c
arch/parisc/kernel/processor.c
+3
-3
arch/parisc/kernel/smp.c
arch/parisc/kernel/smp.c
+9
-9
未找到文件。
arch/parisc/include/asm/smp.h
浏览文件 @
7cec2ef4
...
...
@@ -29,7 +29,8 @@ extern void smp_send_reschedule(int cpu);
extern
void
smp_send_all_nop
(
void
);
extern
void
arch_send_call_function_single_ipi
(
int
cpu
);
extern
void
arch_send_call_function_ipi
(
cpumask_t
mask
);
extern
void
arch_send_call_function_ipi_mask
(
const
struct
cpumask
*
mask
);
#define arch_send_call_function_ipi_mask arch_send_call_function_ipi_mask
#endif
/* !ASSEMBLY */
...
...
arch/parisc/kernel/irq.c
浏览文件 @
7cec2ef4
...
...
@@ -311,12 +311,12 @@ unsigned long txn_alloc_addr(unsigned int virt_irq)
next_cpu
++
;
/* assign to "next" CPU we want this bugger on */
/* validate entry */
while
((
next_cpu
<
NR_CPUS
)
&&
while
((
next_cpu
<
nr_cpu_ids
)
&&
(
!
per_cpu
(
cpu_data
,
next_cpu
).
txn_addr
||
!
cpu_online
(
next_cpu
)))
next_cpu
++
;
if
(
next_cpu
>=
NR_CPUS
)
if
(
next_cpu
>=
nr_cpu_ids
)
next_cpu
=
0
;
/* nothing else, assign monarch */
return
txn_affinity_addr
(
virt_irq
,
next_cpu
);
...
...
arch/parisc/kernel/processor.c
浏览文件 @
7cec2ef4
...
...
@@ -100,8 +100,8 @@ static int __cpuinit processor_probe(struct parisc_device *dev)
struct
cpuinfo_parisc
*
p
;
#ifdef CONFIG_SMP
if
(
num_online_cpus
()
>=
NR_CPUS
)
{
printk
(
KERN_INFO
"num_online_cpus() >=
NR_CPUS
\n
"
);
if
(
num_online_cpus
()
>=
nr_cpu_ids
)
{
printk
(
KERN_INFO
"num_online_cpus() >=
nr_cpu_ids
\n
"
);
return
1
;
}
#else
...
...
@@ -214,7 +214,7 @@ static int __cpuinit processor_probe(struct parisc_device *dev)
*/
#ifdef CONFIG_SMP
if
(
cpuid
)
{
cpu_set
(
cpuid
,
cpu_present_map
);
set_cpu_present
(
cpuid
,
true
);
cpu_up
(
cpuid
);
}
#endif
...
...
arch/parisc/kernel/smp.c
浏览文件 @
7cec2ef4
...
...
@@ -114,7 +114,7 @@ halt_processor(void)
{
/* REVISIT : redirect I/O Interrupts to another CPU? */
/* REVISIT : does PM *know* this CPU isn't available? */
cpu_clear
(
smp_processor_id
(),
cpu_online_map
);
set_cpu_online
(
smp_processor_id
(),
false
);
local_irq_disable
();
for
(;;)
;
...
...
@@ -215,11 +215,11 @@ ipi_send(int cpu, enum ipi_message_type op)
}
static
void
send_IPI_mask
(
c
pumask_t
mask
,
enum
ipi_message_type
op
)
send_IPI_mask
(
c
onst
struct
cpumask
*
mask
,
enum
ipi_message_type
op
)
{
int
cpu
;
for_each_cpu
_mask
(
cpu
,
mask
)
for_each_cpu
(
cpu
,
mask
)
ipi_send
(
cpu
,
op
);
}
...
...
@@ -258,7 +258,7 @@ smp_send_all_nop(void)
send_IPI_allbutself
(
IPI_NOP
);
}
void
arch_send_call_function_ipi
(
cpumask_t
mask
)
void
arch_send_call_function_ipi
_mask
(
const
struct
cpumask
*
mask
)
{
send_IPI_mask
(
mask
,
IPI_CALL_FUNC
);
}
...
...
@@ -297,13 +297,14 @@ smp_cpu_init(int cpunum)
mb
();
/* Well, support 2.4 linux scheme as well. */
if
(
cpu_
test_and_
set
(
cpunum
,
cpu_online_map
))
if
(
cpu_
is
set
(
cpunum
,
cpu_online_map
))
{
extern
void
machine_halt
(
void
);
/* arch/parisc.../process.c */
printk
(
KERN_CRIT
"CPU#%d already initialized!
\n
"
,
cpunum
);
machine_halt
();
}
set_cpu_online
(
cpunum
,
true
);
/* Initialise the idle task for this CPU */
atomic_inc
(
&
init_mm
.
mm_count
);
...
...
@@ -425,8 +426,8 @@ void __init smp_prepare_boot_cpu(void)
/* Setup BSP mappings */
printk
(
KERN_INFO
"SMP: bootstrap CPU ID is %d
\n
"
,
bootstrap_processor
);
cpu_set
(
bootstrap_processor
,
cpu_online_map
);
cpu_set
(
bootstrap_processor
,
cpu_present_map
);
set_cpu_online
(
bootstrap_processor
,
true
);
set_cpu_present
(
bootstrap_processor
,
true
);
}
...
...
@@ -437,8 +438,7 @@ void __init smp_prepare_boot_cpu(void)
*/
void
__init
smp_prepare_cpus
(
unsigned
int
max_cpus
)
{
cpus_clear
(
cpu_present_map
);
cpu_set
(
0
,
cpu_present_map
);
init_cpu_present
(
cpumask_of
(
0
));
parisc_max_cpus
=
max_cpus
;
if
(
!
max_cpus
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录