Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
ecd8ee09
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ecd8ee09
编写于
8月 14, 2010
作者:
L
Len Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'procfs-cleanup' into release
上级
feb29c51
c637e486
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
105 addition
and
77 deletion
+105
-77
Documentation/acpi/method-customizing.txt
Documentation/acpi/method-customizing.txt
+2
-0
drivers/acpi/Makefile
drivers/acpi/Makefile
+1
-0
drivers/acpi/acpica/acglobal.h
drivers/acpi/acpica/acglobal.h
+1
-1
drivers/acpi/bus.c
drivers/acpi/bus.c
+1
-0
drivers/acpi/debug.c
drivers/acpi/debug.c
+0
-75
drivers/acpi/debugfs.c
drivers/acpi/debugfs.c
+93
-0
drivers/acpi/internal.h
drivers/acpi/internal.h
+6
-0
include/acpi/acpixf.h
include/acpi/acpixf.h
+1
-1
未找到文件。
Documentation/acpi/method-customizing.txt
浏览文件 @
ecd8ee09
...
...
@@ -19,6 +19,8 @@ Note: Only ACPI METHOD can be overridden, any other object types like
"Device", "OperationRegion", are not recognized.
Note: The same ACPI control method can be overridden for many times,
and it's always the latest one that used by Linux/kernel.
Note: To get the ACPI debug object output (Store (AAAA, Debug)),
please run "echo 1 > /sys/module/acpi/parameters/aml_debug_output".
1. override an existing method
a) get the ACPI table via ACPI sysfs I/F. e.g. to get the DSDT,
...
...
drivers/acpi/Makefile
浏览文件 @
ecd8ee09
...
...
@@ -39,6 +39,7 @@ acpi-y += pci_root.o pci_link.o pci_irq.o pci_bind.o
acpi-y
+=
power.o
acpi-y
+=
system.o event.o
acpi-$(CONFIG_ACPI_DEBUG)
+=
debug.o
acpi-$(CONFIG_DEBUG_FS)
+=
debugfs.o
acpi-$(CONFIG_ACPI_NUMA)
+=
numa.o
acpi-$(CONFIG_ACPI_PROCFS_POWER)
+=
cm_sbs.o
ifdef
CONFIG_ACPI_VIDEO
...
...
drivers/acpi/acpica/acglobal.h
浏览文件 @
ecd8ee09
...
...
@@ -115,7 +115,7 @@ u8 ACPI_INIT_GLOBAL(acpi_gbl_use_default_register_widths, TRUE);
/*
* Optionally enable output from the AML Debug Object.
*/
u
8
ACPI_INIT_GLOBAL
(
acpi_gbl_enable_aml_debug_object
,
FALSE
);
u
32
ACPI_INIT_GLOBAL
(
acpi_gbl_enable_aml_debug_object
,
FALSE
);
/*
* Optionally copy the entire DSDT to local memory (instead of simply
...
...
drivers/acpi/bus.c
浏览文件 @
ecd8ee09
...
...
@@ -1036,6 +1036,7 @@ static int __init acpi_init(void)
acpi_power_init
();
acpi_system_init
();
acpi_debug_init
();
acpi_debugfs_init
();
acpi_sleep_proc_init
();
acpi_wakeup_device_init
();
return
result
;
...
...
drivers/acpi/debug.c
浏览文件 @
ecd8ee09
...
...
@@ -197,80 +197,6 @@ static int param_get_trace_state(char *buffer, struct kernel_param *kp)
module_param_call
(
trace_state
,
param_set_trace_state
,
param_get_trace_state
,
NULL
,
0644
);
/* --------------------------------------------------------------------------
DebugFS Interface
-------------------------------------------------------------------------- */
static
ssize_t
cm_write
(
struct
file
*
file
,
const
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
{
static
char
*
buf
;
static
int
uncopied_bytes
;
struct
acpi_table_header
table
;
acpi_status
status
;
if
(
!
(
*
ppos
))
{
/* parse the table header to get the table length */
if
(
count
<=
sizeof
(
struct
acpi_table_header
))
return
-
EINVAL
;
if
(
copy_from_user
(
&
table
,
user_buf
,
sizeof
(
struct
acpi_table_header
)))
return
-
EFAULT
;
uncopied_bytes
=
table
.
length
;
buf
=
kzalloc
(
uncopied_bytes
,
GFP_KERNEL
);
if
(
!
buf
)
return
-
ENOMEM
;
}
if
(
uncopied_bytes
<
count
)
{
kfree
(
buf
);
return
-
EINVAL
;
}
if
(
copy_from_user
(
buf
+
(
*
ppos
),
user_buf
,
count
))
{
kfree
(
buf
);
return
-
EFAULT
;
}
uncopied_bytes
-=
count
;
*
ppos
+=
count
;
if
(
!
uncopied_bytes
)
{
status
=
acpi_install_method
(
buf
);
kfree
(
buf
);
if
(
ACPI_FAILURE
(
status
))
return
-
EINVAL
;
add_taint
(
TAINT_OVERRIDDEN_ACPI_TABLE
);
}
return
count
;
}
static
const
struct
file_operations
cm_fops
=
{
.
write
=
cm_write
,
};
static
int
acpi_debugfs_init
(
void
)
{
struct
dentry
*
acpi_dir
,
*
cm_dentry
;
acpi_dir
=
debugfs_create_dir
(
"acpi"
,
NULL
);
if
(
!
acpi_dir
)
goto
err
;
cm_dentry
=
debugfs_create_file
(
"custom_method"
,
S_IWUGO
,
acpi_dir
,
NULL
,
&
cm_fops
);
if
(
!
cm_dentry
)
goto
err
;
return
0
;
err:
if
(
acpi_dir
)
debugfs_remove
(
acpi_dir
);
return
-
EINVAL
;
}
/* --------------------------------------------------------------------------
FS Interface (/proc)
-------------------------------------------------------------------------- */
...
...
@@ -400,7 +326,6 @@ int __init acpi_procfs_init(void)
int
__init
acpi_debug_init
(
void
)
{
acpi_debugfs_init
();
acpi_procfs_init
();
return
0
;
}
drivers/acpi/debugfs.c
0 → 100644
浏览文件 @
ecd8ee09
/*
* debugfs.c - ACPI debugfs interface to userspace.
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/uaccess.h>
#include <linux/debugfs.h>
#include <acpi/acpi_drivers.h>
#define _COMPONENT ACPI_SYSTEM_COMPONENT
ACPI_MODULE_NAME
(
"debugfs"
);
/* /sys/modules/acpi/parameters/aml_debug_output */
module_param_named
(
aml_debug_output
,
acpi_gbl_enable_aml_debug_object
,
bool
,
0644
);
MODULE_PARM_DESC
(
aml_debug_output
,
"To enable/disable the ACPI Debug Object output."
);
/* /sys/kernel/debug/acpi/custom_method */
static
ssize_t
cm_write
(
struct
file
*
file
,
const
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
{
static
char
*
buf
;
static
int
uncopied_bytes
;
struct
acpi_table_header
table
;
acpi_status
status
;
if
(
!
(
*
ppos
))
{
/* parse the table header to get the table length */
if
(
count
<=
sizeof
(
struct
acpi_table_header
))
return
-
EINVAL
;
if
(
copy_from_user
(
&
table
,
user_buf
,
sizeof
(
struct
acpi_table_header
)))
return
-
EFAULT
;
uncopied_bytes
=
table
.
length
;
buf
=
kzalloc
(
uncopied_bytes
,
GFP_KERNEL
);
if
(
!
buf
)
return
-
ENOMEM
;
}
if
(
uncopied_bytes
<
count
)
{
kfree
(
buf
);
return
-
EINVAL
;
}
if
(
copy_from_user
(
buf
+
(
*
ppos
),
user_buf
,
count
))
{
kfree
(
buf
);
return
-
EFAULT
;
}
uncopied_bytes
-=
count
;
*
ppos
+=
count
;
if
(
!
uncopied_bytes
)
{
status
=
acpi_install_method
(
buf
);
kfree
(
buf
);
if
(
ACPI_FAILURE
(
status
))
return
-
EINVAL
;
add_taint
(
TAINT_OVERRIDDEN_ACPI_TABLE
);
}
return
count
;
}
static
const
struct
file_operations
cm_fops
=
{
.
write
=
cm_write
,
};
int
__init
acpi_debugfs_init
(
void
)
{
struct
dentry
*
acpi_dir
,
*
cm_dentry
;
acpi_dir
=
debugfs_create_dir
(
"acpi"
,
NULL
);
if
(
!
acpi_dir
)
goto
err
;
cm_dentry
=
debugfs_create_file
(
"custom_method"
,
S_IWUGO
,
acpi_dir
,
NULL
,
&
cm_fops
);
if
(
!
cm_dentry
)
goto
err
;
return
0
;
err:
if
(
acpi_dir
)
debugfs_remove
(
acpi_dir
);
return
-
EINVAL
;
}
drivers/acpi/internal.h
浏览文件 @
ecd8ee09
...
...
@@ -30,6 +30,12 @@ int acpi_debug_init(void);
static
inline
int
acpi_debug_init
(
void
)
{
return
0
;
}
#endif
#ifdef CONFIG_DEBUG_FS
int
acpi_debugfs_init
(
void
);
#else
static
inline
int
acpi_debugfs_init
(
void
)
{
return
0
;
}
#endif
/* --------------------------------------------------------------------------
Power Resource
-------------------------------------------------------------------------- */
...
...
include/acpi/acpixf.h
浏览文件 @
ecd8ee09
...
...
@@ -67,7 +67,7 @@ extern u8 acpi_gbl_leave_wake_gpes_disabled;
extern
u8
acpi_gbl_use_default_register_widths
;
extern
acpi_name
acpi_gbl_trace_method_name
;
extern
u32
acpi_gbl_trace_flags
;
extern
u
8
acpi_gbl_enable_aml_debug_object
;
extern
u
32
acpi_gbl_enable_aml_debug_object
;
extern
u8
acpi_gbl_copy_dsdt_locally
;
extern
u8
acpi_gbl_truncate_io_addresses
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录