Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
27d6b977
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
27d6b977
编写于
4月 15, 2017
作者:
R
Rafael J. Wysocki
浏览文件
操作
浏览文件
下载
差异文件
Merge back ACPI namespace scan code changes for v4.12.
上级
f406270b
ffc10d82
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
16 addition
and
29 deletion
+16
-29
Documentation/ABI/obsolete/sysfs-firmware-acpi
Documentation/ABI/obsolete/sysfs-firmware-acpi
+8
-0
Documentation/ABI/testing/sysfs-firmware-acpi
Documentation/ABI/testing/sysfs-firmware-acpi
+0
-10
drivers/acpi/internal.h
drivers/acpi/internal.h
+0
-2
drivers/acpi/scan.c
drivers/acpi/scan.c
+3
-13
drivers/acpi/sysfs.c
drivers/acpi/sysfs.c
+5
-4
未找到文件。
Documentation/ABI/obsolete/sysfs-firmware-acpi
0 → 100644
浏览文件 @
27d6b977
What: /sys/firmware/acpi/hotplug/force_remove
Date: Mar 2017
Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
Since the force_remove is inherently broken and dangerous to
use for some hotplugable resources like memory (because ignoring
the offline failure might lead to memory corruption and crashes)
enabling this knob is not safe and thus unsupported.
Documentation/ABI/testing/sysfs-firmware-acpi
浏览文件 @
27d6b977
...
@@ -44,16 +44,6 @@ Description:
...
@@ -44,16 +44,6 @@ Description:
or 0 (unset). Attempts to write any other values to it will
or 0 (unset). Attempts to write any other values to it will
cause -EINVAL to be returned.
cause -EINVAL to be returned.
What: /sys/firmware/acpi/hotplug/force_remove
Date: May 2013
Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
The number in this file (0 or 1) determines whether (1) or not
(0) the ACPI subsystem will allow devices to be hot-removed even
if they cannot be put offline gracefully (from the kernel's
viewpoint). That number can be changed by writing a boolean
value to this file.
What: /sys/firmware/acpi/interrupts/
What: /sys/firmware/acpi/interrupts/
Date: February 2008
Date: February 2008
Contact: Len Brown <lenb@kernel.org>
Contact: Len Brown <lenb@kernel.org>
...
...
drivers/acpi/internal.h
浏览文件 @
27d6b977
...
@@ -65,8 +65,6 @@ static inline void acpi_cmos_rtc_init(void) {}
...
@@ -65,8 +65,6 @@ static inline void acpi_cmos_rtc_init(void) {}
#endif
#endif
int
acpi_rev_override_setup
(
char
*
str
);
int
acpi_rev_override_setup
(
char
*
str
);
extern
bool
acpi_force_hot_remove
;
void
acpi_sysfs_add_hotplug_profile
(
struct
acpi_hotplug_profile
*
hotplug
,
void
acpi_sysfs_add_hotplug_profile
(
struct
acpi_hotplug_profile
*
hotplug
,
const
char
*
name
);
const
char
*
name
);
int
acpi_scan_add_handler_with_hotplug
(
struct
acpi_scan_handler
*
handler
,
int
acpi_scan_add_handler_with_hotplug
(
struct
acpi_scan_handler
*
handler
,
...
...
drivers/acpi/scan.c
浏览文件 @
27d6b977
...
@@ -30,12 +30,6 @@ extern struct acpi_device *acpi_root;
...
@@ -30,12 +30,6 @@ extern struct acpi_device *acpi_root;
#define INVALID_ACPI_HANDLE ((acpi_handle)empty_zero_page)
#define INVALID_ACPI_HANDLE ((acpi_handle)empty_zero_page)
/*
* If set, devices will be hot-removed even if they cannot be put offline
* gracefully (from the kernel's standpoint).
*/
bool
acpi_force_hot_remove
;
static
const
char
*
dummy_hid
=
"device"
;
static
const
char
*
dummy_hid
=
"device"
;
static
LIST_HEAD
(
acpi_dep_list
);
static
LIST_HEAD
(
acpi_dep_list
);
...
@@ -170,9 +164,6 @@ static acpi_status acpi_bus_offline(acpi_handle handle, u32 lvl, void *data,
...
@@ -170,9 +164,6 @@ static acpi_status acpi_bus_offline(acpi_handle handle, u32 lvl, void *data,
pn
->
put_online
=
false
;
pn
->
put_online
=
false
;
}
}
ret
=
device_offline
(
pn
->
dev
);
ret
=
device_offline
(
pn
->
dev
);
if
(
acpi_force_hot_remove
)
continue
;
if
(
ret
>=
0
)
{
if
(
ret
>=
0
)
{
pn
->
put_online
=
!
ret
;
pn
->
put_online
=
!
ret
;
}
else
{
}
else
{
...
@@ -241,11 +232,11 @@ static int acpi_scan_try_to_offline(struct acpi_device *device)
...
@@ -241,11 +232,11 @@ static int acpi_scan_try_to_offline(struct acpi_device *device)
acpi_walk_namespace
(
ACPI_TYPE_ANY
,
handle
,
ACPI_UINT32_MAX
,
acpi_walk_namespace
(
ACPI_TYPE_ANY
,
handle
,
ACPI_UINT32_MAX
,
NULL
,
acpi_bus_offline
,
(
void
*
)
true
,
NULL
,
acpi_bus_offline
,
(
void
*
)
true
,
(
void
**
)
&
errdev
);
(
void
**
)
&
errdev
);
if
(
!
errdev
||
acpi_force_hot_remove
)
if
(
!
errdev
)
acpi_bus_offline
(
handle
,
0
,
(
void
*
)
true
,
acpi_bus_offline
(
handle
,
0
,
(
void
*
)
true
,
(
void
**
)
&
errdev
);
(
void
**
)
&
errdev
);
if
(
errdev
&&
!
acpi_force_hot_remove
)
{
if
(
errdev
)
{
dev_warn
(
errdev
,
"Offline failed.
\n
"
);
dev_warn
(
errdev
,
"Offline failed.
\n
"
);
acpi_bus_online
(
handle
,
0
,
NULL
,
NULL
);
acpi_bus_online
(
handle
,
0
,
NULL
,
NULL
);
acpi_walk_namespace
(
ACPI_TYPE_ANY
,
handle
,
acpi_walk_namespace
(
ACPI_TYPE_ANY
,
handle
,
...
@@ -263,8 +254,7 @@ static int acpi_scan_hot_remove(struct acpi_device *device)
...
@@ -263,8 +254,7 @@ static int acpi_scan_hot_remove(struct acpi_device *device)
unsigned
long
long
sta
;
unsigned
long
long
sta
;
acpi_status
status
;
acpi_status
status
;
if
(
device
->
handler
&&
device
->
handler
->
hotplug
.
demand_offline
if
(
device
->
handler
&&
device
->
handler
->
hotplug
.
demand_offline
)
{
&&
!
acpi_force_hot_remove
)
{
if
(
!
acpi_scan_is_offline
(
device
,
true
))
if
(
!
acpi_scan_is_offline
(
device
,
true
))
return
-
EBUSY
;
return
-
EBUSY
;
}
else
{
}
else
{
...
...
drivers/acpi/sysfs.c
浏览文件 @
27d6b977
...
@@ -921,7 +921,7 @@ void acpi_sysfs_add_hotplug_profile(struct acpi_hotplug_profile *hotplug,
...
@@ -921,7 +921,7 @@ void acpi_sysfs_add_hotplug_profile(struct acpi_hotplug_profile *hotplug,
static
ssize_t
force_remove_show
(
struct
kobject
*
kobj
,
static
ssize_t
force_remove_show
(
struct
kobject
*
kobj
,
struct
kobj_attribute
*
attr
,
char
*
buf
)
struct
kobj_attribute
*
attr
,
char
*
buf
)
{
{
return
sprintf
(
buf
,
"%d
\n
"
,
!!
acpi_force_hot_remove
);
return
sprintf
(
buf
,
"%d
\n
"
,
0
);
}
}
static
ssize_t
force_remove_store
(
struct
kobject
*
kobj
,
static
ssize_t
force_remove_store
(
struct
kobject
*
kobj
,
...
@@ -935,9 +935,10 @@ static ssize_t force_remove_store(struct kobject *kobj,
...
@@ -935,9 +935,10 @@ static ssize_t force_remove_store(struct kobject *kobj,
if
(
ret
<
0
)
if
(
ret
<
0
)
return
ret
;
return
ret
;
lock_device_hotplug
();
if
(
val
)
{
acpi_force_hot_remove
=
val
;
pr_err
(
"Enabling force_remove is not supported anymore. Please report to linux-acpi@vger.kernel.org if you depend on this functionality
\n
"
);
unlock_device_hotplug
();
return
-
EINVAL
;
}
return
size
;
return
size
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录