Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
a110d514
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
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看板
提交
a110d514
编写于
2月 13, 2006
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6
上级
934a3595
28b2425a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
154 addition
and
135 deletion
+154
-135
arch/parisc/kernel/syscall_table.S
arch/parisc/kernel/syscall_table.S
+2
-2
drivers/parisc/ccio-dma.c
drivers/parisc/ccio-dma.c
+74
-86
drivers/parisc/sba_iommu.c
drivers/parisc/sba_iommu.c
+78
-47
未找到文件。
arch/parisc/kernel/syscall_table.S
浏览文件 @
a110d514
...
...
@@ -377,8 +377,8 @@
ENTRY_SAME
(
inotify_init
)
ENTRY_SAME
(
inotify_add_watch
)
/*
270
*/
ENTRY_SAME
(
inotify_rm_watch
)
ENTRY_
COMP
(
pselect6
)
ENTRY_
COMP
(
ppoll
)
ENTRY_
SAME
(
ni_syscall
)
/*
271
ENTRY_COMP
(
pselect6
)
*/
ENTRY_
SAME
(
ni_syscall
)
/*
272
ENTRY_COMP
(
ppoll
)
*/
ENTRY_SAME
(
migrate_pages
)
ENTRY_COMP
(
openat
)
/*
275
*/
ENTRY_SAME
(
mkdirat
)
...
...
drivers/parisc/ccio-dma.c
浏览文件 @
a110d514
...
...
@@ -40,6 +40,8 @@
#include <linux/string.h>
#include <linux/pci.h>
#include <linux/reboot.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <asm/byteorder.h>
#include <asm/cache.h>
/* for L1_CACHE_BYTES */
...
...
@@ -1019,62 +1021,33 @@ static struct hppa_dma_ops ccio_ops = {
};
#ifdef CONFIG_PROC_FS
static
int
proc_append
(
char
*
src
,
int
len
,
char
**
dst
,
off_t
*
offset
,
int
*
max
)
{
if
(
len
<
*
offset
)
{
*
offset
-=
len
;
return
0
;
}
if
(
*
offset
>
0
)
{
src
+=
*
offset
;
len
-=
*
offset
;
*
offset
=
0
;
}
if
(
len
>
*
max
)
{
len
=
*
max
;
}
memcpy
(
*
dst
,
src
,
len
);
*
dst
+=
len
;
*
max
-=
len
;
return
(
*
max
==
0
);
}
static
int
ccio_proc_info
(
char
*
buf
,
char
**
start
,
off_t
offset
,
int
count
,
int
*
eof
,
void
*
data
)
static
int
ccio_proc_info
(
struct
seq_file
*
m
,
void
*
p
)
{
int
max
=
count
;
char
tmp
[
80
];
/* width of an ANSI-standard terminal */
int
len
=
0
;
struct
ioc
*
ioc
=
ioc_list
;
while
(
ioc
!=
NULL
)
{
unsigned
int
total_pages
=
ioc
->
res_size
<<
3
;
unsigned
long
avg
=
0
,
min
,
max
;
int
j
,
len
;
int
j
;
len
=
sprintf
(
tmp
,
"%s
\n
"
,
ioc
->
name
);
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
+=
seq_printf
(
m
,
"%s
\n
"
,
ioc
->
name
);
len
=
sprintf
(
tmp
,
"Cujo 2.0 bug : %s
\n
"
,
(
ioc
->
cujo20_bug
?
"yes"
:
"no"
));
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
+=
seq_printf
(
m
,
"Cujo 2.0 bug : %s
\n
"
,
(
ioc
->
cujo20_bug
?
"yes"
:
"no"
));
len
=
sprintf
(
tmp
,
"IO PDIR size : %d bytes (%d entries)
\n
"
,
total_pages
*
8
,
total_pages
);
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
+=
seq_printf
(
m
,
"IO PDIR size : %d bytes (%d entries)
\n
"
,
total_pages
*
8
,
total_pages
);
#ifdef CCIO_MAP_STATS
len
=
sprintf
(
tmp
,
"IO PDIR entries : %ld free %ld used (%d%%)
\n
"
,
total_pages
-
ioc
->
used_pages
,
ioc
->
used_pages
,
(
int
)(
ioc
->
used_pages
*
100
/
total_pages
));
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
+=
seq_printf
(
m
,
"IO PDIR entries : %ld free %ld used (%d%%)
\n
"
,
total_pages
-
ioc
->
used_pages
,
ioc
->
used_pages
,
(
int
)(
ioc
->
used_pages
*
100
/
total_pages
));
#endif
len
=
sprintf
(
tmp
,
"Resource bitmap : %d bytes (%d pages)
\n
"
,
ioc
->
res_size
,
total_pages
);
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
+=
seq_printf
(
m
,
"Resource bitmap : %d bytes (%d pages)
\n
"
,
ioc
->
res_size
,
total_pages
);
#ifdef CCIO_SEARCH_TIME
min
=
max
=
ioc
->
avg_search
[
0
];
for
(
j
=
0
;
j
<
CCIO_SEARCH_SAMPLE
;
++
j
)
{
...
...
@@ -1085,70 +1058,83 @@ static int ccio_proc_info(char *buf, char **start, off_t offset, int count,
min
=
ioc
->
avg_search
[
j
];
}
avg
/=
CCIO_SEARCH_SAMPLE
;
len
=
sprintf
(
tmp
,
" Bitmap search : %ld/%ld/%ld (min/avg/max CPU Cycles)
\n
"
,
min
,
avg
,
max
);
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
+=
seq_printf
(
m
,
" Bitmap search : %ld/%ld/%ld (min/avg/max CPU Cycles)
\n
"
,
min
,
avg
,
max
);
#endif
#ifdef CCIO_MAP_STATS
len
=
sprintf
(
tmp
,
"pci_map_single(): %8ld calls %8ld pages (avg %d/1000)
\n
"
,
ioc
->
msingle_calls
,
ioc
->
msingle_pages
,
(
int
)((
ioc
->
msingle_pages
*
1000
)
/
ioc
->
msingle_calls
));
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
+=
seq_printf
(
m
,
"pci_map_single(): %8ld calls %8ld pages (avg %d/1000)
\n
"
,
ioc
->
msingle_calls
,
ioc
->
msingle_pages
,
(
int
)((
ioc
->
msingle_pages
*
1000
)
/
ioc
->
msingle_calls
));
/* KLUGE - unmap_sg calls unmap_single for each mapped page */
min
=
ioc
->
usingle_calls
-
ioc
->
usg_calls
;
max
=
ioc
->
usingle_pages
-
ioc
->
usg_pages
;
len
=
sprintf
(
tmp
,
"pci_unmap_single: %8ld calls %8ld pages (avg %d/1000)
\n
"
,
min
,
max
,
(
int
)((
max
*
1000
)
/
min
));
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
+=
seq_printf
(
m
,
"pci_unmap_single: %8ld calls %8ld pages (avg %d/1000)
\n
"
,
min
,
max
,
(
int
)((
max
*
1000
)
/
min
));
len
=
sprintf
(
tmp
,
"pci_map_sg() : %8ld calls %8ld pages (avg %d/1000)
\n
"
,
ioc
->
msg_calls
,
ioc
->
msg_pages
,
(
int
)((
ioc
->
msg_pages
*
1000
)
/
ioc
->
msg_calls
));
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
=
sprintf
(
tmp
,
"pci_unmap_sg() : %8ld calls %8ld pages (avg %d/1000)
\n\n\n
"
,
ioc
->
usg_calls
,
ioc
->
usg_pages
,
(
int
)((
ioc
->
usg_pages
*
1000
)
/
ioc
->
usg_calls
));
if
(
proc_append
(
tmp
,
len
,
&
buf
,
&
offset
,
&
count
))
break
;
len
+=
seq_printf
(
m
,
"pci_map_sg() : %8ld calls %8ld pages (avg %d/1000)
\n
"
,
ioc
->
msg_calls
,
ioc
->
msg_pages
,
(
int
)((
ioc
->
msg_pages
*
1000
)
/
ioc
->
msg_calls
));
len
+=
seq_printf
(
m
,
"pci_unmap_sg() : %8ld calls %8ld pages (avg %d/1000)
\n\n\n
"
,
ioc
->
usg_calls
,
ioc
->
usg_pages
,
(
int
)((
ioc
->
usg_pages
*
1000
)
/
ioc
->
usg_calls
));
#endif
/* CCIO_MAP_STATS */
ioc
=
ioc
->
next
;
}
if
(
count
==
0
)
{
*
eof
=
1
;
}
return
(
max
-
count
);
return
0
;
}
static
int
ccio_proc_info_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
return
single_open
(
file
,
&
ccio_proc_info
,
NULL
);
}
static
int
ccio_resource_map
(
char
*
buf
,
char
**
start
,
off_t
offset
,
int
len
,
int
*
eof
,
void
*
data
)
static
struct
file_operations
ccio_proc_info_fops
=
{
.
owner
=
THIS_MODULE
,
.
open
=
ccio_proc_info_open
,
.
read
=
seq_read
,
.
llseek
=
seq_lseek
,
.
release
=
single_release
,
};
static
int
ccio_proc_bitmap_info
(
struct
seq_file
*
m
,
void
*
p
)
{
int
len
=
0
;
struct
ioc
*
ioc
=
ioc_list
;
buf
[
0
]
=
'\0'
;
while
(
ioc
!=
NULL
)
{
u32
*
res_ptr
=
(
u32
*
)
ioc
->
res_map
;
int
j
;
for
(
j
=
0
;
j
<
(
ioc
->
res_size
/
sizeof
(
u32
));
j
++
)
{
if
((
j
&
7
)
==
0
)
strcat
(
buf
,
"
\n
"
);
sprintf
(
buf
,
"%s %08x"
,
buf
,
*
res_ptr
);
len
+=
seq_puts
(
m
,
"
\n
"
);
len
+=
seq_printf
(
m
,
"%08x"
,
*
res_ptr
);
res_ptr
++
;
}
strcat
(
buf
,
"
\n\n
"
);
len
+=
seq_puts
(
m
,
"
\n\n
"
);
ioc
=
ioc
->
next
;
break
;
/* XXX - remove me */
}
return
strlen
(
buf
)
;
return
0
;
}
static
int
ccio_proc_bitmap_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
return
single_open
(
file
,
&
ccio_proc_bitmap_info
,
NULL
);
}
static
struct
file_operations
ccio_proc_bitmap_fops
=
{
.
owner
=
THIS_MODULE
,
.
open
=
ccio_proc_bitmap_open
,
.
read
=
seq_read
,
.
llseek
=
seq_lseek
,
.
release
=
single_release
,
};
#endif
/**
...
...
@@ -1556,6 +1542,7 @@ static int ccio_probe(struct parisc_device *dev)
{
int
i
;
struct
ioc
*
ioc
,
**
ioc_p
=
&
ioc_list
;
struct
proc_dir_entry
*
info_entry
,
*
bitmap_entry
;
ioc
=
kzalloc
(
sizeof
(
struct
ioc
),
GFP_KERNEL
);
if
(
ioc
==
NULL
)
{
...
...
@@ -1583,13 +1570,14 @@ static int ccio_probe(struct parisc_device *dev)
BUG_ON
(
dev
->
dev
.
platform_data
==
NULL
);
HBA_DATA
(
dev
->
dev
.
platform_data
)
->
iommu
=
ioc
;
if
(
ioc_count
==
0
)
{
/* FIXME: Create separate entries for each ioc */
create_proc_read_entry
(
MODULE_NAME
,
S_IRWXU
,
proc_runway_root
,
ccio_proc_info
,
NULL
);
create_proc_read_entry
(
MODULE_NAME
"-bitmap"
,
S_IRWXU
,
proc_runway_root
,
ccio_resource_map
,
NULL
);
info_entry
=
create_proc_entry
(
MODULE_NAME
,
0
,
proc_runway_root
);
if
(
info_entry
)
info_entry
->
proc_fops
=
&
ccio_proc_info_fops
;
bitmap_entry
=
create_proc_entry
(
MODULE_NAME
"-bitmap"
,
0
,
proc_runway_root
);
if
(
bitmap_entry
)
bitmap_entry
->
proc_fops
=
&
ccio_proc_bitmap_fops
;
}
ioc_count
++
;
...
...
drivers/parisc/sba_iommu.c
浏览文件 @
a110d514
...
...
@@ -37,6 +37,8 @@
#include <asm/hardware.h>
/* for register_parisc_driver() stuff */
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <asm/runway.h>
/* for proc_runway_root */
#include <asm/pdc.h>
/* for PDC_MODEL_* */
#include <asm/pdcpat.h>
/* for is_pdc_pat() */
...
...
@@ -1892,46 +1894,43 @@ sba_common_init(struct sba_device *sba_dev)
}
#ifdef CONFIG_PROC_FS
static
int
sba_proc_info
(
char
*
buf
,
char
**
start
,
off_t
offset
,
int
len
)
static
int
sba_proc_info
(
struct
seq_file
*
m
,
void
*
p
)
{
struct
sba_device
*
sba_dev
=
sba_list
;
struct
ioc
*
ioc
=
&
sba_dev
->
ioc
[
0
];
/* FIXME: Multi-IOC support! */
int
total_pages
=
(
int
)
(
ioc
->
res_size
<<
3
);
/* 8 bits per byte */
unsigned
long
i
;
#ifdef SBA_COLLECT_STATS
unsigned
long
avg
=
0
,
min
,
max
;
#endif
int
i
,
len
=
0
;
sprintf
(
buf
,
"%s rev %d.%d
\n
"
,
len
+=
seq_printf
(
m
,
"%s rev %d.%d
\n
"
,
sba_dev
->
name
,
(
sba_dev
->
hw_rev
&
0x7
)
+
1
,
(
sba_dev
->
hw_rev
&
0x18
)
>>
3
);
sprintf
(
buf
,
"%sIO PDIR size : %d bytes (%d entries)
\n
"
,
buf
,
len
+=
seq_printf
(
m
,
"IO PDIR size : %d bytes (%d entries)
\n
"
,
(
int
)
((
ioc
->
res_size
<<
3
)
*
sizeof
(
u64
)),
/* 8 bits/byte */
total_pages
);
sprintf
(
buf
,
"%s
Resource bitmap : %d bytes (%d pages)
\n
"
,
buf
,
ioc
->
res_size
,
ioc
->
res_size
<<
3
);
/* 8 bits per byte */
len
+=
seq_printf
(
m
,
"
Resource bitmap : %d bytes (%d pages)
\n
"
,
ioc
->
res_size
,
ioc
->
res_size
<<
3
);
/* 8 bits per byte */
sprintf
(
buf
,
"%sLMMIO_BASE/MASK/ROUTE %08x %08x %08x
\n
"
,
buf
,
len
+=
seq_printf
(
m
,
"LMMIO_BASE/MASK/ROUTE %08x %08x %08x
\n
"
,
READ_REG32
(
sba_dev
->
sba_hpa
+
LMMIO_DIST_BASE
),
READ_REG32
(
sba_dev
->
sba_hpa
+
LMMIO_DIST_MASK
),
READ_REG32
(
sba_dev
->
sba_hpa
+
LMMIO_DIST_ROUTE
)
);
for
(
i
=
0
;
i
<
4
;
i
++
)
sprintf
(
buf
,
"%sDIR%ld_BASE/MASK/ROUTE %08x %08x %08x
\n
"
,
buf
,
i
,
len
+=
seq_printf
(
m
,
"DIR%d_BASE/MASK/ROUTE %08x %08x %08x
\n
"
,
i
,
READ_REG32
(
sba_dev
->
sba_hpa
+
LMMIO_DIRECT0_BASE
+
i
*
0x18
),
READ_REG32
(
sba_dev
->
sba_hpa
+
LMMIO_DIRECT0_MASK
+
i
*
0x18
),
READ_REG32
(
sba_dev
->
sba_hpa
+
LMMIO_DIRECT0_ROUTE
+
i
*
0x18
)
);
#ifdef SBA_COLLECT_STATS
sprintf
(
buf
,
"%sIO PDIR entries : %ld free %ld used (%d%%)
\n
"
,
buf
,
len
+=
seq_printf
(
m
,
"IO PDIR entries : %ld free %ld used (%d%%)
\n
"
,
total_pages
-
ioc
->
used_pages
,
ioc
->
used_pages
,
(
int
)
(
ioc
->
used_pages
*
100
/
total_pages
));
...
...
@@ -1942,53 +1941,76 @@ static int sba_proc_info(char *buf, char **start, off_t offset, int len)
if
(
ioc
->
avg_search
[
i
]
<
min
)
min
=
ioc
->
avg_search
[
i
];
}
avg
/=
SBA_SEARCH_SAMPLE
;
sprintf
(
buf
,
"%s
Bitmap search : %ld/%ld/%ld (min/avg/max CPU Cycles)
\n
"
,
buf
,
min
,
avg
,
max
);
len
+=
seq_printf
(
m
,
"
Bitmap search : %ld/%ld/%ld (min/avg/max CPU Cycles)
\n
"
,
min
,
avg
,
max
);
sprintf
(
buf
,
"%s
pci_map_single(): %12ld calls %12ld pages (avg %d/1000)
\n
"
,
buf
,
ioc
->
msingle_calls
,
ioc
->
msingle_pages
,
len
+=
seq_printf
(
m
,
"
pci_map_single(): %12ld calls %12ld pages (avg %d/1000)
\n
"
,
ioc
->
msingle_calls
,
ioc
->
msingle_pages
,
(
int
)
((
ioc
->
msingle_pages
*
1000
)
/
ioc
->
msingle_calls
));
/* KLUGE - unmap_sg calls unmap_single for each mapped page */
min
=
ioc
->
usingle_calls
;
max
=
ioc
->
usingle_pages
-
ioc
->
usg_pages
;
sprintf
(
buf
,
"%spci_unmap_single: %12ld calls %12ld pages (avg %d/1000)
\n
"
,
buf
,
min
,
max
,
(
int
)
((
max
*
1000
)
/
min
));
len
+=
seq_printf
(
m
,
"pci_unmap_single: %12ld calls %12ld pages (avg %d/1000)
\n
"
,
min
,
max
,
(
int
)
((
max
*
1000
)
/
min
));
sprintf
(
buf
,
"%s
pci_map_sg() : %12ld calls %12ld pages (avg %d/1000)
\n
"
,
buf
,
ioc
->
msg_calls
,
ioc
->
msg_pages
,
len
+=
seq_printf
(
m
,
"
pci_map_sg() : %12ld calls %12ld pages (avg %d/1000)
\n
"
,
ioc
->
msg_calls
,
ioc
->
msg_pages
,
(
int
)
((
ioc
->
msg_pages
*
1000
)
/
ioc
->
msg_calls
));
sprintf
(
buf
,
"%s
pci_unmap_sg() : %12ld calls %12ld pages (avg %d/1000)
\n
"
,
buf
,
ioc
->
usg_calls
,
ioc
->
usg_pages
,
len
+=
seq_printf
(
m
,
"
pci_unmap_sg() : %12ld calls %12ld pages (avg %d/1000)
\n
"
,
ioc
->
usg_calls
,
ioc
->
usg_pages
,
(
int
)
((
ioc
->
usg_pages
*
1000
)
/
ioc
->
usg_calls
));
#endif
return
strlen
(
buf
)
;
return
0
;
}
#if 0
/* XXX too much output - exceeds 4k limit and needs to be re-written */
static
int
sba_resource_map(char *buf, char **start, off_t offset, int len)
sba_proc_open
(
struct
inode
*
i
,
struct
file
*
f
)
{
return
single_open
(
f
,
&
sba_proc_info
,
NULL
);
}
static
struct
file_operations
sba_proc_fops
=
{
.
owner
=
THIS_MODULE
,
.
open
=
sba_proc_open
,
.
read
=
seq_read
,
.
llseek
=
seq_lseek
,
.
release
=
single_release
,
};
static
int
sba_proc_bitmap_info
(
struct
seq_file
*
m
,
void
*
p
)
{
struct
sba_device
*
sba_dev
=
sba_list
;
struct ioc *ioc = &sba_dev->ioc[0]; /* FIXME: Mu
tli-IOC suppoer
! */
struct
ioc
*
ioc
=
&
sba_dev
->
ioc
[
0
];
/* FIXME: Mu
lti-IOC support
! */
unsigned
int
*
res_ptr
=
(
unsigned
int
*
)
ioc
->
res_map
;
int i;
int
i
,
len
=
0
;
buf[0] = '\0';
for(i = 0; i < (ioc->res_size / sizeof(unsigned int)); ++i, ++res_ptr) {
for
(
i
=
0
;
i
<
(
ioc
->
res_size
/
sizeof
(
unsigned
int
));
++
i
,
++
res_ptr
)
{
if
((
i
&
7
)
==
0
)
strcat(buf,
"\n ");
sprintf(buf, "%s %08x", buf
, *res_ptr);
len
+=
seq_printf
(
m
,
"
\n
"
);
len
+=
seq_printf
(
m
,
" %08x"
,
*
res_ptr
);
}
strcat(buf
, "\n");
len
+=
seq_printf
(
m
,
"
\n
"
);
return
strlen(buf)
;
return
0
;
}
#endif /* 0 */
static
int
sba_proc_bitmap_open
(
struct
inode
*
i
,
struct
file
*
f
)
{
return
single_open
(
f
,
&
sba_proc_bitmap_info
,
NULL
);
}
static
struct
file_operations
sba_proc_bitmap_fops
=
{
.
owner
=
THIS_MODULE
,
.
open
=
sba_proc_bitmap_open
,
.
read
=
seq_read
,
.
llseek
=
seq_lseek
,
.
release
=
single_release
,
};
#endif
/* CONFIG_PROC_FS */
static
struct
parisc_device_id
sba_tbl
[]
=
{
...
...
@@ -2021,6 +2043,7 @@ sba_driver_callback(struct parisc_device *dev)
int
i
;
char
*
version
;
void
__iomem
*
sba_addr
=
ioremap
(
dev
->
hpa
.
start
,
SBA_FUNC_SIZE
);
struct
proc_dir_entry
*
info_entry
,
*
bitmap_entry
,
*
root
;
sba_dump_ranges
(
sba_addr
);
...
...
@@ -2088,19 +2111,27 @@ sba_driver_callback(struct parisc_device *dev)
hppa_dma_ops
=
&
sba_ops
;
#ifdef CONFIG_PROC_FS
if
(
IS_ASTRO
(
&
dev
->
id
))
{
create_proc_info_entry
(
"Astro"
,
0
,
proc_runway_root
,
sba_proc_info
);
}
else
if
(
IS_IKE
(
&
dev
->
id
))
{
create_proc_info_entry
(
"Ike"
,
0
,
proc_runway_root
,
sba_proc_info
);
}
else
if
(
IS_PLUTO
(
&
dev
->
id
))
{
create_proc_info_entry
(
"Pluto"
,
0
,
proc_mckinley_root
,
sba_proc_info
);
}
else
{
create_proc_info_entry
(
"Reo"
,
0
,
proc_runway_root
,
sba_proc_info
);
switch
(
dev
->
id
.
hversion
)
{
case
PLUTO_MCKINLEY_PORT
:
root
=
proc_mckinley_root
;
break
;
case
ASTRO_RUNWAY_PORT
:
case
IKE_MERCED_PORT
:
default:
root
=
proc_runway_root
;
break
;
}
#if 0
create_proc_info_entry("bitmap", 0, proc_runway_root, sba_resource_map);
#endif
info_entry
=
create_proc_entry
(
"sba_iommu"
,
0
,
root
);
bitmap_entry
=
create_proc_entry
(
"sba_iommu-bitmap"
,
0
,
root
);
if
(
info_entry
)
info_entry
->
proc_fops
=
&
sba_proc_fops
;
if
(
bitmap_entry
)
bitmap_entry
->
proc_fops
=
&
sba_proc_bitmap_fops
;
#endif
parisc_vmerge_boundary
=
IOVP_SIZE
;
parisc_vmerge_max_size
=
IOVP_SIZE
*
BITS_PER_LONG
;
parisc_has_iommu
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录