Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
7ac3ae32
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
7ac3ae32
编写于
12月 02, 2007
作者:
L
Len Brown
浏览文件
操作
浏览文件
下载
差异文件
Pull thermal into release branch
上级
92d499d9
357dc4c3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
28 addition
and
8 deletion
+28
-8
drivers/acpi/processor_throttling.c
drivers/acpi/processor_throttling.c
+28
-8
未找到文件。
drivers/acpi/processor_throttling.c
浏览文件 @
7ac3ae32
...
...
@@ -29,6 +29,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/cpufreq.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
...
...
@@ -413,7 +414,7 @@ static int acpi_throttling_rdmsr(struct acpi_processor *pr,
}
else
{
msr_low
=
0
;
msr_high
=
0
;
rdmsr_
on_cpu
(
cpu
,
MSR_IA32_THERM_CONTROL
,
rdmsr_
safe
(
MSR_IA32_THERM_CONTROL
,
(
u32
*
)
&
msr_low
,
(
u32
*
)
&
msr_high
);
msr
=
(
msr_high
<<
32
)
|
msr_low
;
*
value
=
(
acpi_integer
)
msr
;
...
...
@@ -438,7 +439,7 @@ static int acpi_throttling_wrmsr(struct acpi_processor *pr, acpi_integer value)
"HARDWARE addr space,NOT supported yet
\n
"
);
}
else
{
msr
=
value
;
wrmsr_
on_cpu
(
cpu
,
MSR_IA32_THERM_CONTROL
,
wrmsr_
safe
(
MSR_IA32_THERM_CONTROL
,
msr
&
0xffffffff
,
msr
>>
32
);
ret
=
0
;
}
...
...
@@ -572,21 +573,32 @@ static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr)
return
-
ENODEV
;
pr
->
throttling
.
state
=
0
;
local_irq_disable
();
value
=
0
;
ret
=
acpi_read_throttling_status
(
pr
,
&
value
);
if
(
ret
>=
0
)
{
state
=
acpi_get_throttling_state
(
pr
,
value
);
pr
->
throttling
.
state
=
state
;
}
local_irq_enable
();
return
0
;
}
static
int
acpi_processor_get_throttling
(
struct
acpi_processor
*
pr
)
{
return
pr
->
throttling
.
acpi_processor_get_throttling
(
pr
);
cpumask_t
saved_mask
;
int
ret
;
/*
* Migrate task to the cpu pointed by pr.
*/
saved_mask
=
current
->
cpus_allowed
;
set_cpus_allowed
(
current
,
cpumask_of_cpu
(
pr
->
id
));
ret
=
pr
->
throttling
.
acpi_processor_get_throttling
(
pr
);
/* restore the previous state */
set_cpus_allowed
(
current
,
saved_mask
);
return
ret
;
}
static
int
acpi_processor_get_fadt_info
(
struct
acpi_processor
*
pr
)
...
...
@@ -717,21 +729,29 @@ static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr,
if
(
state
<
pr
->
throttling_platform_limit
)
return
-
EPERM
;
local_irq_disable
();
value
=
0
;
ret
=
acpi_get_throttling_value
(
pr
,
state
,
&
value
);
if
(
ret
>=
0
)
{
acpi_write_throttling_state
(
pr
,
value
);
pr
->
throttling
.
state
=
state
;
}
local_irq_enable
();
return
0
;
}
int
acpi_processor_set_throttling
(
struct
acpi_processor
*
pr
,
int
state
)
{
return
pr
->
throttling
.
acpi_processor_set_throttling
(
pr
,
state
);
cpumask_t
saved_mask
;
int
ret
;
/*
* Migrate task to the cpu pointed by pr.
*/
saved_mask
=
current
->
cpus_allowed
;
set_cpus_allowed
(
current
,
cpumask_of_cpu
(
pr
->
id
));
ret
=
pr
->
throttling
.
acpi_processor_set_throttling
(
pr
,
state
);
/* restore the previous state */
set_cpus_allowed
(
current
,
saved_mask
);
return
ret
;
}
int
acpi_processor_get_throttling_info
(
struct
acpi_processor
*
pr
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录