Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
3f66c315
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看板
提交
3f66c315
编写于
10月 28, 2013
作者:
R
Rafael J. Wysocki
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'acpi-tables'
* acpi-tables: ACPI / x86: Increase override tables number limit
上级
5c2aae83
bee7f9c8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
33 addition
and
12 deletion
+33
-12
arch/x86/include/asm/acpi.h
arch/x86/include/asm/acpi.h
+1
-0
drivers/acpi/osl.c
drivers/acpi/osl.c
+32
-12
未找到文件。
arch/x86/include/asm/acpi.h
浏览文件 @
3f66c315
...
@@ -26,6 +26,7 @@
...
@@ -26,6 +26,7 @@
#include <acpi/pdc_intel.h>
#include <acpi/pdc_intel.h>
#include <asm/numa.h>
#include <asm/numa.h>
#include <asm/fixmap.h>
#include <asm/processor.h>
#include <asm/processor.h>
#include <asm/mmu.h>
#include <asm/mmu.h>
#include <asm/mpspec.h>
#include <asm/mpspec.h>
...
...
drivers/acpi/osl.c
浏览文件 @
3f66c315
...
@@ -569,8 +569,10 @@ static const char * const table_sigs[] = {
...
@@ -569,8 +569,10 @@ static const char * const table_sigs[] = {
#define ACPI_HEADER_SIZE sizeof(struct acpi_table_header)
#define ACPI_HEADER_SIZE sizeof(struct acpi_table_header)
/* Must not increase 10 or needs code modification below */
#define ACPI_OVERRIDE_TABLES 64
#define ACPI_OVERRIDE_TABLES 10
static
struct
cpio_data
__initdata
acpi_initrd_files
[
ACPI_OVERRIDE_TABLES
];
#define MAP_CHUNK_SIZE (NR_FIX_BTMAPS << PAGE_SHIFT)
void
__init
acpi_initrd_override
(
void
*
data
,
size_t
size
)
void
__init
acpi_initrd_override
(
void
*
data
,
size_t
size
)
{
{
...
@@ -579,8 +581,6 @@ void __init acpi_initrd_override(void *data, size_t size)
...
@@ -579,8 +581,6 @@ void __init acpi_initrd_override(void *data, size_t size)
struct
acpi_table_header
*
table
;
struct
acpi_table_header
*
table
;
char
cpio_path
[
32
]
=
"kernel/firmware/acpi/"
;
char
cpio_path
[
32
]
=
"kernel/firmware/acpi/"
;
struct
cpio_data
file
;
struct
cpio_data
file
;
struct
cpio_data
early_initrd_files
[
ACPI_OVERRIDE_TABLES
];
char
*
p
;
if
(
data
==
NULL
||
size
==
0
)
if
(
data
==
NULL
||
size
==
0
)
return
;
return
;
...
@@ -625,8 +625,8 @@ void __init acpi_initrd_override(void *data, size_t size)
...
@@ -625,8 +625,8 @@ void __init acpi_initrd_override(void *data, size_t size)
table
->
signature
,
cpio_path
,
file
.
name
,
table
->
length
);
table
->
signature
,
cpio_path
,
file
.
name
,
table
->
length
);
all_tables_size
+=
table
->
length
;
all_tables_size
+=
table
->
length
;
early
_initrd_files
[
table_nr
].
data
=
file
.
data
;
acpi
_initrd_files
[
table_nr
].
data
=
file
.
data
;
early
_initrd_files
[
table_nr
].
size
=
file
.
size
;
acpi
_initrd_files
[
table_nr
].
size
=
file
.
size
;
table_nr
++
;
table_nr
++
;
}
}
if
(
table_nr
==
0
)
if
(
table_nr
==
0
)
...
@@ -652,14 +652,34 @@ void __init acpi_initrd_override(void *data, size_t size)
...
@@ -652,14 +652,34 @@ void __init acpi_initrd_override(void *data, size_t size)
memblock_reserve
(
acpi_tables_addr
,
all_tables_size
);
memblock_reserve
(
acpi_tables_addr
,
all_tables_size
);
arch_reserve_mem_area
(
acpi_tables_addr
,
all_tables_size
);
arch_reserve_mem_area
(
acpi_tables_addr
,
all_tables_size
);
p
=
early_ioremap
(
acpi_tables_addr
,
all_tables_size
);
/*
* early_ioremap only can remap 256k one time. If we map all
* tables one time, we will hit the limit. Need to map chunks
* one by one during copying the same as that in relocate_initrd().
*/
for
(
no
=
0
;
no
<
table_nr
;
no
++
)
{
for
(
no
=
0
;
no
<
table_nr
;
no
++
)
{
memcpy
(
p
+
total_offset
,
early_initrd_files
[
no
].
data
,
unsigned
char
*
src_p
=
acpi_initrd_files
[
no
].
data
;
early_initrd_files
[
no
].
size
);
phys_addr_t
size
=
acpi_initrd_files
[
no
].
size
;
total_offset
+=
early_initrd_files
[
no
].
size
;
phys_addr_t
dest_addr
=
acpi_tables_addr
+
total_offset
;
phys_addr_t
slop
,
clen
;
char
*
dest_p
;
total_offset
+=
size
;
while
(
size
)
{
slop
=
dest_addr
&
~
PAGE_MASK
;
clen
=
size
;
if
(
clen
>
MAP_CHUNK_SIZE
-
slop
)
clen
=
MAP_CHUNK_SIZE
-
slop
;
dest_p
=
early_ioremap
(
dest_addr
&
PAGE_MASK
,
clen
+
slop
);
memcpy
(
dest_p
+
slop
,
src_p
,
clen
);
early_iounmap
(
dest_p
,
clen
+
slop
);
src_p
+=
clen
;
dest_addr
+=
clen
;
size
-=
clen
;
}
}
}
early_iounmap
(
p
,
all_tables_size
);
}
}
#endif
/* CONFIG_ACPI_INITRD_TABLE_OVERRIDE */
#endif
/* CONFIG_ACPI_INITRD_TABLE_OVERRIDE */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录