Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
4c2cb58c
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看板
提交
4c2cb58c
编写于
10月 27, 2005
作者:
T
Trond Myklebust
浏览文件
操作
浏览文件
下载
差异文件
Merge /home/trondmy/scm/kernel/git/torvalds/linux-2.6
上级
34123da6
72ab373a
变更
66
展开全部
隐藏空白更改
内联
并排
Showing
66 changed file
with
737 addition
and
504 deletion
+737
-504
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+260
-236
arch/arm/mach-integrator/impd1.c
arch/arm/mach-integrator/impd1.c
+8
-7
arch/arm/mach-pxa/corgi_lcd.c
arch/arm/mach-pxa/corgi_lcd.c
+2
-0
arch/arm/mach-pxa/generic.c
arch/arm/mach-pxa/generic.c
+20
-0
arch/arm/mach-s3c2410/mach-bast.c
arch/arm/mach-s3c2410/mach-bast.c
+3
-3
arch/i386/kernel/cpu/cpufreq/powernow-k8.c
arch/i386/kernel/cpu/cpufreq/powernow-k8.c
+19
-11
arch/ppc64/kernel/iSeries_htab.c
arch/ppc64/kernel/iSeries_htab.c
+1
-1
arch/ppc64/kernel/mpic.c
arch/ppc64/kernel/mpic.c
+2
-2
arch/ppc64/kernel/time.c
arch/ppc64/kernel/time.c
+1
-1
arch/ppc64/mm/init.c
arch/ppc64/mm/init.c
+1
-2
arch/um/include/sysdep-i386/thread.h
arch/um/include/sysdep-i386/thread.h
+1
-1
arch/um/include/sysdep-x86_64/thread.h
arch/um/include/sysdep-x86_64/thread.h
+1
-1
drivers/char/drm/drm_vm.c
drivers/char/drm/drm_vm.c
+2
-1
drivers/char/drm/mga_drv.h
drivers/char/drm/mga_drv.h
+1
-1
drivers/char/drm/mga_state.c
drivers/char/drm/mga_state.c
+1
-1
drivers/char/drm/radeon_cp.c
drivers/char/drm/radeon_cp.c
+6
-5
drivers/infiniband/hw/mthca/mthca_eq.c
drivers/infiniband/hw/mthca/mthca_eq.c
+11
-10
drivers/md/md.c
drivers/md/md.c
+6
-4
drivers/media/video/Kconfig
drivers/media/video/Kconfig
+0
-1
drivers/message/fusion/mptsas.c
drivers/message/fusion/mptsas.c
+8
-4
drivers/pci/quirks.c
drivers/pci/quirks.c
+88
-13
drivers/pci/setup-bus.c
drivers/pci/setup-bus.c
+1
-1
drivers/scsi/NCR5380.c
drivers/scsi/NCR5380.c
+1
-1
drivers/scsi/aacraid/aacraid.h
drivers/scsi/aacraid/aacraid.h
+1
-1
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/qla2xxx/qla_os.c
+2
-1
drivers/scsi/scsi_devinfo.c
drivers/scsi/scsi_devinfo.c
+1
-0
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_lib.c
+4
-3
drivers/scsi/scsi_transport_fc.c
drivers/scsi/scsi_transport_fc.c
+10
-3
drivers/serial/8250_pci.c
drivers/serial/8250_pci.c
+25
-1
drivers/video/fbsysfs.c
drivers/video/fbsysfs.c
+8
-0
fs/aio.c
fs/aio.c
+6
-0
fs/hfsplus/super.c
fs/hfsplus/super.c
+1
-0
fs/inotify.c
fs/inotify.c
+1
-0
include/asm-alpha/atomic.h
include/asm-alpha/atomic.h
+10
-4
include/asm-alpha/barrier.h
include/asm-alpha/barrier.h
+34
-0
include/asm-alpha/system.h
include/asm-alpha/system.h
+1
-30
include/asm-arm/arch-s3c2410/regs-clock.h
include/asm-arm/arch-s3c2410/regs-clock.h
+17
-4
include/asm-arm/bitops.h
include/asm-arm/bitops.h
+0
-1
include/linux/hugetlb.h
include/linux/hugetlb.h
+3
-13
include/linux/idr.h
include/linux/idr.h
+1
-0
include/linux/pci_ids.h
include/linux/pci_ids.h
+2
-0
include/net/ax25.h
include/net/ax25.h
+1
-1
include/net/llc_pdu.h
include/net/llc_pdu.h
+3
-1
kernel/exit.c
kernel/exit.c
+1
-0
kernel/posix-cpu-timers.c
kernel/posix-cpu-timers.c
+63
-47
kernel/posix-timers.c
kernel/posix-timers.c
+1
-1
kernel/sched.c
kernel/sched.c
+1
-0
kernel/signal.c
kernel/signal.c
+1
-13
lib/idr.c
lib/idr.c
+13
-0
mm/hugetlb.c
mm/hugetlb.c
+22
-0
mm/memory.c
mm/memory.c
+2
-12
mm/page_alloc.c
mm/page_alloc.c
+2
-0
net/802/tr.c
net/802/tr.c
+3
-2
net/core/neighbour.c
net/core/neighbour.c
+16
-32
net/core/skbuff.c
net/core/skbuff.c
+6
-0
net/core/wireless.c
net/core/wireless.c
+7
-2
net/dccp/ipv4.c
net/dccp/ipv4.c
+2
-0
net/dccp/output.c
net/dccp/output.c
+5
-5
net/dccp/proto.c
net/dccp/proto.c
+0
-2
net/ipv4/ip_output.c
net/ipv4/ip_output.c
+3
-0
net/ipv4/tcp_output.c
net/ipv4/tcp_output.c
+1
-11
net/ipv6/ip6_flowlabel.c
net/ipv6/ip6_flowlabel.c
+1
-1
net/sunrpc/svcsock.c
net/sunrpc/svcsock.c
+1
-1
security/selinux/selinuxfs.c
security/selinux/selinuxfs.c
+3
-1
security/selinux/ss/policydb.c
security/selinux/ss/policydb.c
+4
-2
sound/core/init.c
sound/core/init.c
+4
-2
未找到文件。
Documentation/kernel-parameters.txt
浏览文件 @
4c2cb58c
此差异已折叠。
点击以展开。
arch/arm/mach-integrator/impd1.c
浏览文件 @
4c2cb58c
...
@@ -67,7 +67,7 @@ static void impd1_setvco(struct clk *clk, struct icst525_vco vco)
...
@@ -67,7 +67,7 @@ static void impd1_setvco(struct clk *clk, struct icst525_vco vco)
}
}
writel
(
0
,
impd1
->
base
+
IMPD1_LOCK
);
writel
(
0
,
impd1
->
base
+
IMPD1_LOCK
);
#if DEBUG
#if
def
DEBUG
vco
.
v
=
val
&
0x1ff
;
vco
.
v
=
val
&
0x1ff
;
vco
.
r
=
(
val
>>
9
)
&
0x7f
;
vco
.
r
=
(
val
>>
9
)
&
0x7f
;
vco
.
s
=
(
val
>>
16
)
&
7
;
vco
.
s
=
(
val
>>
16
)
&
7
;
...
@@ -427,17 +427,18 @@ static int impd1_probe(struct lm_device *dev)
...
@@ -427,17 +427,18 @@ static int impd1_probe(struct lm_device *dev)
return
ret
;
return
ret
;
}
}
static
int
impd1_remove_one
(
struct
device
*
dev
,
void
*
data
)
{
device_unregister
(
dev
);
return
0
;
}
static
void
impd1_remove
(
struct
lm_device
*
dev
)
static
void
impd1_remove
(
struct
lm_device
*
dev
)
{
{
struct
impd1_module
*
impd1
=
lm_get_drvdata
(
dev
);
struct
impd1_module
*
impd1
=
lm_get_drvdata
(
dev
);
struct
list_head
*
l
,
*
n
;
int
i
;
int
i
;
list_for_each_safe
(
l
,
n
,
&
dev
->
dev
.
children
)
{
device_for_each_child
(
&
dev
->
dev
,
NULL
,
impd1_remove_one
);
struct
device
*
d
=
list_to_dev
(
l
);
device_unregister
(
d
);
}
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
impd1
->
vcos
);
i
++
)
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
impd1
->
vcos
);
i
++
)
clk_unregister
(
&
impd1
->
vcos
[
i
]);
clk_unregister
(
&
impd1
->
vcos
[
i
]);
...
...
arch/arm/mach-pxa/corgi_lcd.c
浏览文件 @
4c2cb58c
...
@@ -488,6 +488,7 @@ static int is_pxafb_device(struct device * dev, void * data)
...
@@ -488,6 +488,7 @@ static int is_pxafb_device(struct device * dev, void * data)
unsigned
long
spitz_get_hsync_len
(
void
)
unsigned
long
spitz_get_hsync_len
(
void
)
{
{
#ifdef CONFIG_FB_PXA
if
(
!
spitz_pxafb_dev
)
{
if
(
!
spitz_pxafb_dev
)
{
spitz_pxafb_dev
=
bus_find_device
(
&
platform_bus_type
,
NULL
,
NULL
,
is_pxafb_device
);
spitz_pxafb_dev
=
bus_find_device
(
&
platform_bus_type
,
NULL
,
NULL
,
is_pxafb_device
);
if
(
!
spitz_pxafb_dev
)
if
(
!
spitz_pxafb_dev
)
...
@@ -496,6 +497,7 @@ unsigned long spitz_get_hsync_len(void)
...
@@ -496,6 +497,7 @@ unsigned long spitz_get_hsync_len(void)
if
(
!
get_hsync_time
)
if
(
!
get_hsync_time
)
get_hsync_time
=
symbol_get
(
pxafb_get_hsync_time
);
get_hsync_time
=
symbol_get
(
pxafb_get_hsync_time
);
if
(
!
get_hsync_time
)
if
(
!
get_hsync_time
)
#endif
return
0
;
return
0
;
return
pxafb_get_hsync_time
(
spitz_pxafb_dev
);
return
pxafb_get_hsync_time
(
spitz_pxafb_dev
);
...
...
arch/arm/mach-pxa/generic.c
浏览文件 @
4c2cb58c
...
@@ -250,6 +250,25 @@ void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info)
...
@@ -250,6 +250,25 @@ void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info)
i2c_device
.
dev
.
platform_data
=
info
;
i2c_device
.
dev
.
platform_data
=
info
;
}
}
static
struct
resource
i2s_resources
[]
=
{
{
.
start
=
0x40400000
,
.
end
=
0x40400083
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_I2S
,
.
end
=
IRQ_I2S
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
i2s_device
=
{
.
name
=
"pxa2xx-i2s"
,
.
id
=
-
1
,
.
resource
=
i2c_resources
,
.
num_resources
=
ARRAY_SIZE
(
i2s_resources
),
};
static
struct
platform_device
*
devices
[]
__initdata
=
{
static
struct
platform_device
*
devices
[]
__initdata
=
{
&
pxamci_device
,
&
pxamci_device
,
&
udc_device
,
&
udc_device
,
...
@@ -258,6 +277,7 @@ static struct platform_device *devices[] __initdata = {
...
@@ -258,6 +277,7 @@ static struct platform_device *devices[] __initdata = {
&
btuart_device
,
&
btuart_device
,
&
stuart_device
,
&
stuart_device
,
&
i2c_device
,
&
i2c_device
,
&
i2s_device
,
};
};
static
int
__init
pxa_init
(
void
)
static
int
__init
pxa_init
(
void
)
...
...
arch/arm/mach-s3c2410/mach-bast.c
浏览文件 @
4c2cb58c
...
@@ -307,9 +307,9 @@ static void bast_nand_select(struct s3c2410_nand_set *set, int slot)
...
@@ -307,9 +307,9 @@ static void bast_nand_select(struct s3c2410_nand_set *set, int slot)
}
}
static
struct
s3c2410_platform_nand
bast_nand_info
=
{
static
struct
s3c2410_platform_nand
bast_nand_info
=
{
.
tacls
=
4
0
,
.
tacls
=
3
0
,
.
twrph0
=
8
0
,
.
twrph0
=
6
0
,
.
twrph1
=
8
0
,
.
twrph1
=
6
0
,
.
nr_sets
=
ARRAY_SIZE
(
bast_nand_sets
),
.
nr_sets
=
ARRAY_SIZE
(
bast_nand_sets
),
.
sets
=
bast_nand_sets
,
.
sets
=
bast_nand_sets
,
.
select_chip
=
bast_nand_select
,
.
select_chip
=
bast_nand_select
,
...
...
arch/i386/kernel/cpu/cpufreq/powernow-k8.c
浏览文件 @
4c2cb58c
...
@@ -44,7 +44,7 @@
...
@@ -44,7 +44,7 @@
#define PFX "powernow-k8: "
#define PFX "powernow-k8: "
#define BFX PFX "BIOS error: "
#define BFX PFX "BIOS error: "
#define VERSION "version 1.50.
3
"
#define VERSION "version 1.50.
4
"
#include "powernow-k8.h"
#include "powernow-k8.h"
/* serialize freq changes */
/* serialize freq changes */
...
@@ -111,8 +111,8 @@ static int query_current_values_with_pending_wait(struct powernow_k8_data *data)
...
@@ -111,8 +111,8 @@ static int query_current_values_with_pending_wait(struct powernow_k8_data *data)
u32
i
=
0
;
u32
i
=
0
;
do
{
do
{
if
(
i
++
>
0x100
0000
)
{
if
(
i
++
>
1
0000
)
{
printk
(
KERN_ERR
PFX
"detected change pending stuck
\n
"
);
dprintk
(
"detected change pending stuck
\n
"
);
return
1
;
return
1
;
}
}
rdmsr
(
MSR_FIDVID_STATUS
,
lo
,
hi
);
rdmsr
(
MSR_FIDVID_STATUS
,
lo
,
hi
);
...
@@ -159,6 +159,7 @@ static int write_new_fid(struct powernow_k8_data *data, u32 fid)
...
@@ -159,6 +159,7 @@ static int write_new_fid(struct powernow_k8_data *data, u32 fid)
{
{
u32
lo
;
u32
lo
;
u32
savevid
=
data
->
currvid
;
u32
savevid
=
data
->
currvid
;
u32
i
=
0
;
if
((
fid
&
INVALID_FID_MASK
)
||
(
data
->
currvid
&
INVALID_VID_MASK
))
{
if
((
fid
&
INVALID_FID_MASK
)
||
(
data
->
currvid
&
INVALID_VID_MASK
))
{
printk
(
KERN_ERR
PFX
"internal error - overflow on fid write
\n
"
);
printk
(
KERN_ERR
PFX
"internal error - overflow on fid write
\n
"
);
...
@@ -170,10 +171,13 @@ static int write_new_fid(struct powernow_k8_data *data, u32 fid)
...
@@ -170,10 +171,13 @@ static int write_new_fid(struct powernow_k8_data *data, u32 fid)
dprintk
(
"writing fid 0x%x, lo 0x%x, hi 0x%x
\n
"
,
dprintk
(
"writing fid 0x%x, lo 0x%x, hi 0x%x
\n
"
,
fid
,
lo
,
data
->
plllock
*
PLL_LOCK_CONVERSION
);
fid
,
lo
,
data
->
plllock
*
PLL_LOCK_CONVERSION
);
wrmsr
(
MSR_FIDVID_CTL
,
lo
,
data
->
plllock
*
PLL_LOCK_CONVERSION
);
do
{
wrmsr
(
MSR_FIDVID_CTL
,
lo
,
data
->
plllock
*
PLL_LOCK_CONVERSION
);
if
(
query_current_values_with_pending_wait
(
data
))
if
(
i
++
>
100
)
{
return
1
;
printk
(
KERN_ERR
PFX
"internal error - pending bit very stuck - no further pstate changes possible
\n
"
);
return
1
;
}
}
while
(
query_current_values_with_pending_wait
(
data
));
count_off_irt
(
data
);
count_off_irt
(
data
);
...
@@ -197,6 +201,7 @@ static int write_new_vid(struct powernow_k8_data *data, u32 vid)
...
@@ -197,6 +201,7 @@ static int write_new_vid(struct powernow_k8_data *data, u32 vid)
{
{
u32
lo
;
u32
lo
;
u32
savefid
=
data
->
currfid
;
u32
savefid
=
data
->
currfid
;
int
i
=
0
;
if
((
data
->
currfid
&
INVALID_FID_MASK
)
||
(
vid
&
INVALID_VID_MASK
))
{
if
((
data
->
currfid
&
INVALID_FID_MASK
)
||
(
vid
&
INVALID_VID_MASK
))
{
printk
(
KERN_ERR
PFX
"internal error - overflow on vid write
\n
"
);
printk
(
KERN_ERR
PFX
"internal error - overflow on vid write
\n
"
);
...
@@ -208,10 +213,13 @@ static int write_new_vid(struct powernow_k8_data *data, u32 vid)
...
@@ -208,10 +213,13 @@ static int write_new_vid(struct powernow_k8_data *data, u32 vid)
dprintk
(
"writing vid 0x%x, lo 0x%x, hi 0x%x
\n
"
,
dprintk
(
"writing vid 0x%x, lo 0x%x, hi 0x%x
\n
"
,
vid
,
lo
,
STOP_GRANT_5NS
);
vid
,
lo
,
STOP_GRANT_5NS
);
wrmsr
(
MSR_FIDVID_CTL
,
lo
,
STOP_GRANT_5NS
);
do
{
wrmsr
(
MSR_FIDVID_CTL
,
lo
,
STOP_GRANT_5NS
);
if
(
query_current_values_with_pending_wait
(
data
))
if
(
i
++
>
100
)
{
return
1
;
printk
(
KERN_ERR
PFX
"internal error - pending bit very stuck - no further pstate changes possible
\n
"
);
return
1
;
}
}
while
(
query_current_values_with_pending_wait
(
data
));
if
(
savefid
!=
data
->
currfid
)
{
if
(
savefid
!=
data
->
currfid
)
{
printk
(
KERN_ERR
PFX
"fid changed on vid trans, old 0x%x new 0x%x
\n
"
,
printk
(
KERN_ERR
PFX
"fid changed on vid trans, old 0x%x new 0x%x
\n
"
,
...
...
arch/ppc64/kernel/iSeries_htab.c
浏览文件 @
4c2cb58c
...
@@ -66,7 +66,7 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va,
...
@@ -66,7 +66,7 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va,
}
}
if
(
slot
<
0
)
{
/* MSB set means secondary group */
if
(
slot
<
0
)
{
/* MSB set means secondary group */
vflags
|=
HPTE_V_
VALID
;
vflags
|=
HPTE_V_
SECONDARY
;
secondary
=
1
;
secondary
=
1
;
slot
&=
0x7fffffffffffffff
;
slot
&=
0x7fffffffffffffff
;
}
}
...
...
arch/ppc64/kernel/mpic.c
浏览文件 @
4c2cb58c
...
@@ -506,8 +506,8 @@ struct mpic * __init mpic_alloc(unsigned long phys_addr,
...
@@ -506,8 +506,8 @@ struct mpic * __init mpic_alloc(unsigned long phys_addr,
mpic
->
senses_count
=
senses_count
;
mpic
->
senses_count
=
senses_count
;
/* Map the global registers */
/* Map the global registers */
mpic
->
gregs
=
ioremap
(
phys_addr
+
MPIC_GREG_BASE
,
0x
1
000
);
mpic
->
gregs
=
ioremap
(
phys_addr
+
MPIC_GREG_BASE
,
0x
2
000
);
mpic
->
tmregs
=
mpic
->
gregs
+
(
MPIC_TIMER_BASE
>>
2
);
mpic
->
tmregs
=
mpic
->
gregs
+
(
(
MPIC_TIMER_BASE
-
MPIC_GREG_BASE
)
>>
2
);
BUG_ON
(
mpic
->
gregs
==
NULL
);
BUG_ON
(
mpic
->
gregs
==
NULL
);
/* Reset */
/* Reset */
...
...
arch/ppc64/kernel/time.c
浏览文件 @
4c2cb58c
...
@@ -870,7 +870,7 @@ void div128_by_32( unsigned long dividend_high, unsigned long dividend_low,
...
@@ -870,7 +870,7 @@ void div128_by_32( unsigned long dividend_high, unsigned long dividend_low,
rb
=
((
ra
+
b
)
-
(
x
*
divisor
))
<<
32
;
rb
=
((
ra
+
b
)
-
(
x
*
divisor
))
<<
32
;
y
=
(
rb
+
c
)
/
divisor
;
y
=
(
rb
+
c
)
/
divisor
;
rc
=
((
rb
+
b
)
-
(
y
*
divisor
))
<<
32
;
rc
=
((
rb
+
c
)
-
(
y
*
divisor
))
<<
32
;
z
=
(
rc
+
d
)
/
divisor
;
z
=
(
rc
+
d
)
/
divisor
;
...
...
arch/ppc64/mm/init.c
浏览文件 @
4c2cb58c
...
@@ -799,8 +799,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long ea,
...
@@ -799,8 +799,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long ea,
if
(
cpus_equal
(
vma
->
vm_mm
->
cpu_vm_mask
,
tmp
))
if
(
cpus_equal
(
vma
->
vm_mm
->
cpu_vm_mask
,
tmp
))
local
=
1
;
local
=
1
;
__hash_page
(
ea
,
pte_val
(
pte
)
&
(
_PAGE_USER
|
_PAGE_RW
),
vsid
,
ptep
,
__hash_page
(
ea
,
0
,
vsid
,
ptep
,
0x300
,
local
);
0x300
,
local
);
local_irq_restore
(
flags
);
local_irq_restore
(
flags
);
}
}
...
...
arch/um/include/sysdep-i386/thread.h
浏览文件 @
4c2cb58c
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
#include <kern_constants.h>
#include <kern_constants.h>
#define TASK_DEBUGREGS(task) ((unsigned long *) &(((char *) (task))[HOST_TASK_DEBUGREGS]))
#define TASK_DEBUGREGS(task) ((unsigned long *) &(((char *) (task))[HOST_TASK_DEBUGREGS]))
#ifdef CONFIG_MODE_TT
#ifdef
UML_
CONFIG_MODE_TT
#define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID]))
#define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID]))
#endif
#endif
...
...
arch/um/include/sysdep-x86_64/thread.h
浏览文件 @
4c2cb58c
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
#include <kern_constants.h>
#include <kern_constants.h>
#ifdef CONFIG_MODE_TT
#ifdef
UML_
CONFIG_MODE_TT
#define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID]))
#define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID]))
#endif
#endif
...
...
drivers/char/drm/drm_vm.c
浏览文件 @
4c2cb58c
...
@@ -148,7 +148,8 @@ static __inline__ struct page *drm_do_vm_shm_nopage(struct vm_area_struct *vma,
...
@@ -148,7 +148,8 @@ static __inline__ struct page *drm_do_vm_shm_nopage(struct vm_area_struct *vma,
offset
=
address
-
vma
->
vm_start
;
offset
=
address
-
vma
->
vm_start
;
i
=
(
unsigned
long
)
map
->
handle
+
offset
;
i
=
(
unsigned
long
)
map
->
handle
+
offset
;
page
=
vmalloc_to_page
((
void
*
)
i
);
page
=
(
map
->
type
==
_DRM_CONSISTENT
)
?
virt_to_page
((
void
*
)
i
)
:
vmalloc_to_page
((
void
*
)
i
);
if
(
!
page
)
if
(
!
page
)
return
NOPAGE_OOM
;
return
NOPAGE_OOM
;
get_page
(
page
);
get_page
(
page
);
...
...
drivers/char/drm/mga_drv.h
浏览文件 @
4c2cb58c
...
@@ -227,7 +227,7 @@ static inline u32 _MGA_READ(u32 *addr)
...
@@ -227,7 +227,7 @@ static inline u32 _MGA_READ(u32 *addr)
#define MGA_EMIT_STATE( dev_priv, dirty ) \
#define MGA_EMIT_STATE( dev_priv, dirty ) \
do { \
do { \
if ( (dirty) & ~MGA_UPLOAD_CLIPRECTS ) { \
if ( (dirty) & ~MGA_UPLOAD_CLIPRECTS ) { \
if ( dev_priv->chipset
=
= MGA_CARD_TYPE_G400 ) { \
if ( dev_priv->chipset
>
= MGA_CARD_TYPE_G400 ) { \
mga_g400_emit_state( dev_priv ); \
mga_g400_emit_state( dev_priv ); \
} else { \
} else { \
mga_g200_emit_state( dev_priv ); \
mga_g200_emit_state( dev_priv ); \
...
...
drivers/char/drm/mga_state.c
浏览文件 @
4c2cb58c
...
@@ -53,7 +53,7 @@ static void mga_emit_clip_rect( drm_mga_private_t *dev_priv,
...
@@ -53,7 +53,7 @@ static void mga_emit_clip_rect( drm_mga_private_t *dev_priv,
/* Force reset of DWGCTL on G400 (eliminates clip disable bit).
/* Force reset of DWGCTL on G400 (eliminates clip disable bit).
*/
*/
if
(
dev_priv
->
chipset
=
=
MGA_CARD_TYPE_G400
)
{
if
(
dev_priv
->
chipset
>
=
MGA_CARD_TYPE_G400
)
{
DMA_BLOCK
(
MGA_DWGCTL
,
ctx
->
dwgctl
,
DMA_BLOCK
(
MGA_DWGCTL
,
ctx
->
dwgctl
,
MGA_LEN
+
MGA_EXEC
,
0x80000000
,
MGA_LEN
+
MGA_EXEC
,
0x80000000
,
MGA_DWGCTL
,
ctx
->
dwgctl
,
MGA_DWGCTL
,
ctx
->
dwgctl
,
...
...
drivers/char/drm/radeon_cp.c
浏览文件 @
4c2cb58c
...
@@ -1133,10 +1133,10 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
...
@@ -1133,10 +1133,10 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
ring_start
=
(
dev_priv
->
cp_ring
->
offset
ring_start
=
(
dev_priv
->
cp_ring
->
offset
-
dev
->
agp
->
base
-
dev
->
agp
->
base
+
dev_priv
->
gart_vm_start
);
+
dev_priv
->
gart_vm_start
);
}
else
}
else
#endif
#endif
ring_start
=
(
dev_priv
->
cp_ring
->
offset
ring_start
=
(
dev_priv
->
cp_ring
->
offset
-
dev
->
sg
->
handle
-
(
unsigned
long
)
dev
->
sg
->
virtual
+
dev_priv
->
gart_vm_start
);
+
dev_priv
->
gart_vm_start
);
RADEON_WRITE
(
RADEON_CP_RB_BASE
,
ring_start
);
RADEON_WRITE
(
RADEON_CP_RB_BASE
,
ring_start
);
...
@@ -1164,7 +1164,8 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
...
@@ -1164,7 +1164,8 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
drm_sg_mem_t
*
entry
=
dev
->
sg
;
drm_sg_mem_t
*
entry
=
dev
->
sg
;
unsigned
long
tmp_ofs
,
page_ofs
;
unsigned
long
tmp_ofs
,
page_ofs
;
tmp_ofs
=
dev_priv
->
ring_rptr
->
offset
-
dev
->
sg
->
handle
;
tmp_ofs
=
dev_priv
->
ring_rptr
->
offset
-
(
unsigned
long
)
dev
->
sg
->
virtual
;
page_ofs
=
tmp_ofs
>>
PAGE_SHIFT
;
page_ofs
=
tmp_ofs
>>
PAGE_SHIFT
;
RADEON_WRITE
(
RADEON_CP_RB_RPTR_ADDR
,
RADEON_WRITE
(
RADEON_CP_RB_RPTR_ADDR
,
...
@@ -1491,8 +1492,8 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
...
@@ -1491,8 +1492,8 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
else
else
#endif
#endif
dev_priv
->
gart_buffers_offset
=
(
dev
->
agp_buffer_map
->
offset
dev_priv
->
gart_buffers_offset
=
(
dev
->
agp_buffer_map
->
offset
-
dev
->
sg
->
handle
-
(
unsigned
long
)
dev
->
sg
->
virtual
+
dev_priv
->
gart_vm_start
);
+
dev_priv
->
gart_vm_start
);
DRM_DEBUG
(
"dev_priv->gart_size %d
\n
"
,
DRM_DEBUG
(
"dev_priv->gart_size %d
\n
"
,
dev_priv
->
gart_size
);
dev_priv
->
gart_size
);
...
...
drivers/infiniband/hw/mthca/mthca_eq.c
浏览文件 @
4c2cb58c
...
@@ -396,20 +396,21 @@ static irqreturn_t mthca_tavor_interrupt(int irq, void *dev_ptr, struct pt_regs
...
@@ -396,20 +396,21 @@ static irqreturn_t mthca_tavor_interrupt(int irq, void *dev_ptr, struct pt_regs
writel
(
dev
->
eq_table
.
clr_mask
,
dev
->
eq_table
.
clr_int
);
writel
(
dev
->
eq_table
.
clr_mask
,
dev
->
eq_table
.
clr_int
);
ecr
=
readl
(
dev
->
eq_regs
.
tavor
.
ecr_base
+
4
);
ecr
=
readl
(
dev
->
eq_regs
.
tavor
.
ecr_base
+
4
);
if
(
ecr
)
{
if
(
!
ecr
)
writel
(
ecr
,
dev
->
eq_regs
.
tavor
.
ecr_base
+
return
IRQ_NONE
;
MTHCA_ECR_CLR_BASE
-
MTHCA_ECR_BASE
+
4
);
for
(
i
=
0
;
i
<
MTHCA_NUM_EQ
;
++
i
)
writel
(
ecr
,
dev
->
eq_regs
.
tavor
.
ecr_base
+
if
(
ecr
&
dev
->
eq_table
.
eq
[
i
].
eqn_mask
&&
MTHCA_ECR_CLR_BASE
-
MTHCA_ECR_BASE
+
4
);
mthca_eq_int
(
dev
,
&
dev
->
eq_table
.
eq
[
i
]))
{
for
(
i
=
0
;
i
<
MTHCA_NUM_EQ
;
++
i
)
if
(
ecr
&
dev
->
eq_table
.
eq
[
i
].
eqn_mask
)
{
if
(
mthca_eq_int
(
dev
,
&
dev
->
eq_table
.
eq
[
i
]))
tavor_set_eq_ci
(
dev
,
&
dev
->
eq_table
.
eq
[
i
],
tavor_set_eq_ci
(
dev
,
&
dev
->
eq_table
.
eq
[
i
],
dev
->
eq_table
.
eq
[
i
].
cons_index
);
dev
->
eq_table
.
eq
[
i
].
cons_index
);
tavor_eq_req_not
(
dev
,
dev
->
eq_table
.
eq
[
i
].
eqn
);
tavor_eq_req_not
(
dev
,
dev
->
eq_table
.
eq
[
i
].
eqn
);
}
}
}
return
IRQ_
RETVAL
(
ecr
)
;
return
IRQ_
HANDLED
;
}
}
static
irqreturn_t
mthca_tavor_msi_x_interrupt
(
int
irq
,
void
*
eq_ptr
,
static
irqreturn_t
mthca_tavor_msi_x_interrupt
(
int
irq
,
void
*
eq_ptr
,
...
...
drivers/md/md.c
浏览文件 @
4c2cb58c
...
@@ -3568,7 +3568,8 @@ static void md_do_sync(mddev_t *mddev)
...
@@ -3568,7 +3568,8 @@ static void md_do_sync(mddev_t *mddev)
mddev
->
curr_resync
=
2
;
mddev
->
curr_resync
=
2
;
try_again:
try_again:
if
(
signal_pending
(
current
))
{
if
(
signal_pending
(
current
)
||
kthread_should_stop
())
{
flush_signals
(
current
);
flush_signals
(
current
);
set_bit
(
MD_RECOVERY_INTR
,
&
mddev
->
recovery
);
set_bit
(
MD_RECOVERY_INTR
,
&
mddev
->
recovery
);
goto
skip
;
goto
skip
;
...
@@ -3590,8 +3591,9 @@ static void md_do_sync(mddev_t *mddev)
...
@@ -3590,8 +3591,9 @@ static void md_do_sync(mddev_t *mddev)
*/
*/
continue
;
continue
;
prepare_to_wait
(
&
resync_wait
,
&
wq
,
TASK_INTERRUPTIBLE
);
prepare_to_wait
(
&
resync_wait
,
&
wq
,
TASK_INTERRUPTIBLE
);
if
(
!
signal_pending
(
current
)
if
(
!
signal_pending
(
current
)
&&
&&
mddev2
->
curr_resync
>=
mddev
->
curr_resync
)
{
!
kthread_should_stop
()
&&
mddev2
->
curr_resync
>=
mddev
->
curr_resync
)
{
printk
(
KERN_INFO
"md: delaying resync of %s"
printk
(
KERN_INFO
"md: delaying resync of %s"
" until %s has finished resync (they"
" until %s has finished resync (they"
" share one or more physical units)
\n
"
,
" share one or more physical units)
\n
"
,
...
@@ -3697,7 +3699,7 @@ static void md_do_sync(mddev_t *mddev)
...
@@ -3697,7 +3699,7 @@ static void md_do_sync(mddev_t *mddev)
}
}
if
(
signal_pending
(
current
))
{
if
(
signal_pending
(
current
)
||
kthread_should_stop
()
)
{
/*
/*
* got a signal, exit.
* got a signal, exit.
*/
*/
...
...
drivers/media/video/Kconfig
浏览文件 @
4c2cb58c
...
@@ -262,7 +262,6 @@ config VIDEO_SAA7134_DVB
...
@@ -262,7 +262,6 @@ config VIDEO_SAA7134_DVB
depends on VIDEO_SAA7134 && DVB_CORE
depends on VIDEO_SAA7134 && DVB_CORE
select VIDEO_BUF_DVB
select VIDEO_BUF_DVB
select DVB_MT352
select DVB_MT352
select DVB_CX22702
select DVB_TDA1004X
select DVB_TDA1004X
---help---
---help---
This adds support for DVB cards based on the
This adds support for DVB cards based on the
...
...
drivers/message/fusion/mptsas.c
浏览文件 @
4c2cb58c
...
@@ -257,8 +257,8 @@ static void mptsas_print_device_pg0(SasDevicePage0_t *pg0)
...
@@ -257,8 +257,8 @@ static void mptsas_print_device_pg0(SasDevicePage0_t *pg0)
printk
(
"SAS Address=0x%llX
\n
"
,
le64_to_cpu
(
sas_address
));
printk
(
"SAS Address=0x%llX
\n
"
,
le64_to_cpu
(
sas_address
));
printk
(
"Target ID=0x%X
\n
"
,
pg0
->
TargetID
);
printk
(
"Target ID=0x%X
\n
"
,
pg0
->
TargetID
);
printk
(
"Bus=0x%X
\n
"
,
pg0
->
Bus
);
printk
(
"Bus=0x%X
\n
"
,
pg0
->
Bus
);
printk
(
"P
hy
Num=0x%X
\n
"
,
pg0
->
PhyNum
);
printk
(
"P
arent Phy
Num=0x%X
\n
"
,
pg0
->
PhyNum
);
printk
(
"AccessStatus=0x%X
\n
"
,
le16_to_cpu
(
pg0
->
AccessStatus
));
printk
(
"Access
Status=0x%X
\n
"
,
le16_to_cpu
(
pg0
->
AccessStatus
));
printk
(
"Device Info=0x%X
\n
"
,
le32_to_cpu
(
pg0
->
DeviceInfo
));
printk
(
"Device Info=0x%X
\n
"
,
le32_to_cpu
(
pg0
->
DeviceInfo
));
printk
(
"Flags=0x%X
\n
"
,
le16_to_cpu
(
pg0
->
Flags
));
printk
(
"Flags=0x%X
\n
"
,
le16_to_cpu
(
pg0
->
Flags
));
printk
(
"Physical Port=0x%X
\n
"
,
pg0
->
PhysicalPort
);
printk
(
"Physical Port=0x%X
\n
"
,
pg0
->
PhysicalPort
);
...
@@ -270,7 +270,7 @@ static void mptsas_print_expander_pg1(SasExpanderPage1_t *pg1)
...
@@ -270,7 +270,7 @@ static void mptsas_print_expander_pg1(SasExpanderPage1_t *pg1)
printk
(
"---- SAS EXPANDER PAGE 1 ------------
\n
"
);
printk
(
"---- SAS EXPANDER PAGE 1 ------------
\n
"
);
printk
(
"Physical Port=0x%X
\n
"
,
pg1
->
PhysicalPort
);
printk
(
"Physical Port=0x%X
\n
"
,
pg1
->
PhysicalPort
);
printk
(
"PHY Identifier=0x%X
\n
"
,
pg1
->
Phy
);
printk
(
"PHY Identifier=0x%X
\n
"
,
pg1
->
Phy
Identifier
);
printk
(
"Negotiated Link Rate=0x%X
\n
"
,
pg1
->
NegotiatedLinkRate
);
printk
(
"Negotiated Link Rate=0x%X
\n
"
,
pg1
->
NegotiatedLinkRate
);
printk
(
"Programmed Link Rate=0x%X
\n
"
,
pg1
->
ProgrammedLinkRate
);
printk
(
"Programmed Link Rate=0x%X
\n
"
,
pg1
->
ProgrammedLinkRate
);
printk
(
"Hardware Link Rate=0x%X
\n
"
,
pg1
->
HwLinkRate
);
printk
(
"Hardware Link Rate=0x%X
\n
"
,
pg1
->
HwLinkRate
);
...
@@ -604,7 +604,7 @@ mptsas_sas_expander_pg1(MPT_ADAPTER *ioc, struct mptsas_phyinfo *phy_info,
...
@@ -604,7 +604,7 @@ mptsas_sas_expander_pg1(MPT_ADAPTER *ioc, struct mptsas_phyinfo *phy_info,
mptsas_print_expander_pg1
(
buffer
);
mptsas_print_expander_pg1
(
buffer
);
/* save config data */
/* save config data */
phy_info
->
phy_id
=
buffer
->
Phy
;
phy_info
->
phy_id
=
buffer
->
Phy
Identifier
;
phy_info
->
port_id
=
buffer
->
PhysicalPort
;
phy_info
->
port_id
=
buffer
->
PhysicalPort
;
phy_info
->
negotiated_link_rate
=
buffer
->
NegotiatedLinkRate
;
phy_info
->
negotiated_link_rate
=
buffer
->
NegotiatedLinkRate
;
phy_info
->
programmed_link_rate
=
buffer
->
ProgrammedLinkRate
;
phy_info
->
programmed_link_rate
=
buffer
->
ProgrammedLinkRate
;
...
@@ -825,6 +825,8 @@ mptsas_probe_hba_phys(MPT_ADAPTER *ioc, int *index)
...
@@ -825,6 +825,8 @@ mptsas_probe_hba_phys(MPT_ADAPTER *ioc, int *index)
mptsas_sas_device_pg0
(
ioc
,
&
port_info
->
phy_info
[
i
].
identify
,
mptsas_sas_device_pg0
(
ioc
,
&
port_info
->
phy_info
[
i
].
identify
,
(
MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE
<<
(
MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE
<<
MPI_SAS_DEVICE_PGAD_FORM_SHIFT
),
handle
);
MPI_SAS_DEVICE_PGAD_FORM_SHIFT
),
handle
);
port_info
->
phy_info
[
i
].
identify
.
phy_id
=
port_info
->
phy_info
[
i
].
phy_id
;
handle
=
port_info
->
phy_info
[
i
].
identify
.
handle
;
handle
=
port_info
->
phy_info
[
i
].
identify
.
handle
;
if
(
port_info
->
phy_info
[
i
].
attached
.
handle
)
{
if
(
port_info
->
phy_info
[
i
].
attached
.
handle
)
{
...
@@ -881,6 +883,8 @@ mptsas_probe_expander_phys(MPT_ADAPTER *ioc, u32 *handle, int *index)
...
@@ -881,6 +883,8 @@ mptsas_probe_expander_phys(MPT_ADAPTER *ioc, u32 *handle, int *index)
(
MPI_SAS_DEVICE_PGAD_FORM_HANDLE
<<
(
MPI_SAS_DEVICE_PGAD_FORM_HANDLE
<<
MPI_SAS_DEVICE_PGAD_FORM_SHIFT
),
MPI_SAS_DEVICE_PGAD_FORM_SHIFT
),
port_info
->
phy_info
[
i
].
identify
.
handle
);
port_info
->
phy_info
[
i
].
identify
.
handle
);
port_info
->
phy_info
[
i
].
identify
.
phy_id
=
port_info
->
phy_info
[
i
].
phy_id
;
}
}
if
(
port_info
->
phy_info
[
i
].
attached
.
handle
)
{
if
(
port_info
->
phy_info
[
i
].
attached
.
handle
)
{
...
...
drivers/pci/quirks.c
浏览文件 @
4c2cb58c
...
@@ -241,7 +241,8 @@ static void __devinit quirk_s3_64M(struct pci_dev *dev)
...
@@ -241,7 +241,8 @@ static void __devinit quirk_s3_64M(struct pci_dev *dev)
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_S3
,
PCI_DEVICE_ID_S3_868
,
quirk_s3_64M
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_S3
,
PCI_DEVICE_ID_S3_868
,
quirk_s3_64M
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_S3
,
PCI_DEVICE_ID_S3_968
,
quirk_s3_64M
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_S3
,
PCI_DEVICE_ID_S3_968
,
quirk_s3_64M
);
static
void
__devinit
quirk_io_region
(
struct
pci_dev
*
dev
,
unsigned
region
,
unsigned
size
,
int
nr
)
static
void
__devinit
quirk_io_region
(
struct
pci_dev
*
dev
,
unsigned
region
,
unsigned
size
,
int
nr
,
const
char
*
name
)
{
{
region
&=
~
(
size
-
1
);
region
&=
~
(
size
-
1
);
if
(
region
)
{
if
(
region
)
{
...
@@ -259,6 +260,7 @@ static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, unsi
...
@@ -259,6 +260,7 @@ static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, unsi
pcibios_bus_to_resource
(
dev
,
res
,
&
bus_region
);
pcibios_bus_to_resource
(
dev
,
res
,
&
bus_region
);
pci_claim_resource
(
dev
,
nr
);
pci_claim_resource
(
dev
,
nr
);
printk
(
"PCI quirk: region %04x-%04x claimed by %s
\n
"
,
region
,
region
+
size
-
1
,
name
);
}
}
}
}
...
@@ -291,25 +293,98 @@ static void __devinit quirk_ali7101_acpi(struct pci_dev *dev)
...
@@ -291,25 +293,98 @@ static void __devinit quirk_ali7101_acpi(struct pci_dev *dev)
u16
region
;
u16
region
;
pci_read_config_word
(
dev
,
0xE0
,
&
region
);
pci_read_config_word
(
dev
,
0xE0
,
&
region
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
,
"ali7101 ACPI"
);
pci_read_config_word
(
dev
,
0xE2
,
&
region
);
pci_read_config_word
(
dev
,
0xE2
,
&
region
);
quirk_io_region
(
dev
,
region
,
32
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
region
,
32
,
PCI_BRIDGE_RESOURCES
+
1
,
"ali7101 SMB"
);
}
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_AL
,
PCI_DEVICE_ID_AL_M7101
,
quirk_ali7101_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_AL
,
PCI_DEVICE_ID_AL_M7101
,
quirk_ali7101_acpi
);
static
void
piix4_io_quirk
(
struct
pci_dev
*
dev
,
const
char
*
name
,
unsigned
int
port
,
unsigned
int
enable
)
{
u32
devres
;
u32
mask
,
size
,
base
;
pci_read_config_dword
(
dev
,
port
,
&
devres
);
if
((
devres
&
enable
)
!=
enable
)
return
;
mask
=
(
devres
>>
16
)
&
15
;
base
=
devres
&
0xffff
;
size
=
16
;
for
(;;)
{
unsigned
bit
=
size
>>
1
;
if
((
bit
&
mask
)
==
bit
)
break
;
size
=
bit
;
}
/*
* For now we only print it out. Eventually we'll want to
* reserve it (at least if it's in the 0x1000+ range), but
* let's get enough confirmation reports first.
*/
base
&=
-
size
;
printk
(
"%s PIO at %04x-%04x
\n
"
,
name
,
base
,
base
+
size
-
1
);
}
static
void
piix4_mem_quirk
(
struct
pci_dev
*
dev
,
const
char
*
name
,
unsigned
int
port
,
unsigned
int
enable
)
{
u32
devres
;
u32
mask
,
size
,
base
;
pci_read_config_dword
(
dev
,
port
,
&
devres
);
if
((
devres
&
enable
)
!=
enable
)
return
;
base
=
devres
&
0xffff0000
;
mask
=
(
devres
&
0x3f
)
<<
16
;
size
=
128
<<
16
;
for
(;;)
{
unsigned
bit
=
size
>>
1
;
if
((
bit
&
mask
)
==
bit
)
break
;
size
=
bit
;
}
/*
* For now we only print it out. Eventually we'll want to
* reserve it, but let's get enough confirmation reports first.
*/
base
&=
-
size
;
printk
(
"%s MMIO at %04x-%04x
\n
"
,
name
,
base
,
base
+
size
-
1
);
}
/*
/*
* PIIX4 ACPI: Two IO regions pointed to by longwords at
* PIIX4 ACPI: Two IO regions pointed to by longwords at
* 0x40 (64 bytes of ACPI registers)
* 0x40 (64 bytes of ACPI registers)
* 0x90 (32 bytes of SMB registers)
* 0x90 (32 bytes of SMB registers)
* and a few strange programmable PIIX4 device resources.
*/
*/
static
void
__devinit
quirk_piix4_acpi
(
struct
pci_dev
*
dev
)
static
void
__devinit
quirk_piix4_acpi
(
struct
pci_dev
*
dev
)
{
{
u32
region
;
u32
region
,
res_a
;
pci_read_config_dword
(
dev
,
0x40
,
&
region
);
pci_read_config_dword
(
dev
,
0x40
,
&
region
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
,
"PIIX4 ACPI"
);
pci_read_config_dword
(
dev
,
0x90
,
&
region
);
pci_read_config_dword
(
dev
,
0x90
,
&
region
);
quirk_io_region
(
dev
,
region
,
32
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
region
,
32
,
PCI_BRIDGE_RESOURCES
+
1
,
"PIIX4 SMB"
);
/* Device resource A has enables for some of the other ones */
pci_read_config_dword
(
dev
,
0x5c
,
&
res_a
);
piix4_io_quirk
(
dev
,
"PIIX4 devres B"
,
0x60
,
3
<<
21
);
piix4_io_quirk
(
dev
,
"PIIX4 devres C"
,
0x64
,
3
<<
21
);
/* Device resource D is just bitfields for static resources */
/* Device 12 enabled? */
if
(
res_a
&
(
1
<<
29
))
{
piix4_io_quirk
(
dev
,
"PIIX4 devres E"
,
0x68
,
1
<<
20
);
piix4_mem_quirk
(
dev
,
"PIIX4 devres F"
,
0x6c
,
1
<<
7
);
}
/* Device 13 enabled? */
if
(
res_a
&
(
1
<<
30
))
{
piix4_io_quirk
(
dev
,
"PIIX4 devres G"
,
0x70
,
1
<<
20
);
piix4_mem_quirk
(
dev
,
"PIIX4 devres H"
,
0x74
,
1
<<
7
);
}
piix4_io_quirk
(
dev
,
"PIIX4 devres I"
,
0x78
,
1
<<
20
);
piix4_io_quirk
(
dev
,
"PIIX4 devres J"
,
0x7c
,
1
<<
20
);
}
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82371AB_3
,
quirk_piix4_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82371AB_3
,
quirk_piix4_acpi
);
...
@@ -323,10 +398,10 @@ static void __devinit quirk_ich4_lpc_acpi(struct pci_dev *dev)
...
@@ -323,10 +398,10 @@ static void __devinit quirk_ich4_lpc_acpi(struct pci_dev *dev)
u32
region
;
u32
region
;
pci_read_config_dword
(
dev
,
0x40
,
&
region
);
pci_read_config_dword
(
dev
,
0x40
,
&
region
);
quirk_io_region
(
dev
,
region
,
128
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
region
,
128
,
PCI_BRIDGE_RESOURCES
,
"ICH4 ACPI/GPIO/TCO"
);
pci_read_config_dword
(
dev
,
0x58
,
&
region
);
pci_read_config_dword
(
dev
,
0x58
,
&
region
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
+
1
,
"ICH4 GPIO"
);
}
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801AA_0
,
quirk_ich4_lpc_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801AA_0
,
quirk_ich4_lpc_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801AB_0
,
quirk_ich4_lpc_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801AB_0
,
quirk_ich4_lpc_acpi
);
...
@@ -352,7 +427,7 @@ static void __devinit quirk_vt82c586_acpi(struct pci_dev *dev)
...
@@ -352,7 +427,7 @@ static void __devinit quirk_vt82c586_acpi(struct pci_dev *dev)
if
(
rev
&
0x10
)
{
if
(
rev
&
0x10
)
{
pci_read_config_dword
(
dev
,
0x48
,
&
region
);
pci_read_config_dword
(
dev
,
0x48
,
&
region
);
region
&=
PCI_BASE_ADDRESS_IO_MASK
;
region
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
region
,
256
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
region
,
256
,
PCI_BRIDGE_RESOURCES
,
"vt82c586 ACPI"
);
}
}
}
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_82C586_3
,
quirk_vt82c586_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_82C586_3
,
quirk_vt82c586_acpi
);
...
@@ -372,11 +447,11 @@ static void __devinit quirk_vt82c686_acpi(struct pci_dev *dev)
...
@@ -372,11 +447,11 @@ static void __devinit quirk_vt82c686_acpi(struct pci_dev *dev)
pci_read_config_word
(
dev
,
0x70
,
&
hm
);
pci_read_config_word
(
dev
,
0x70
,
&
hm
);
hm
&=
PCI_BASE_ADDRESS_IO_MASK
;
hm
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
hm
,
128
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
hm
,
128
,
PCI_BRIDGE_RESOURCES
+
1
,
"vt82c868 HW-mon"
);
pci_read_config_dword
(
dev
,
0x90
,
&
smb
);
pci_read_config_dword
(
dev
,
0x90
,
&
smb
);
smb
&=
PCI_BASE_ADDRESS_IO_MASK
;
smb
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
smb
,
16
,
PCI_BRIDGE_RESOURCES
+
2
);
quirk_io_region
(
dev
,
smb
,
16
,
PCI_BRIDGE_RESOURCES
+
2
,
"vt82c868 SMB"
);
}
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_82C686_4
,
quirk_vt82c686_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_82C686_4
,
quirk_vt82c686_acpi
);
...
@@ -391,11 +466,11 @@ static void __devinit quirk_vt8235_acpi(struct pci_dev *dev)
...
@@ -391,11 +466,11 @@ static void __devinit quirk_vt8235_acpi(struct pci_dev *dev)
pci_read_config_word
(
dev
,
0x88
,
&
pm
);
pci_read_config_word
(
dev
,
0x88
,
&
pm
);
pm
&=
PCI_BASE_ADDRESS_IO_MASK
;
pm
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
pm
,
128
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
pm
,
128
,
PCI_BRIDGE_RESOURCES
,
"vt8235 PM"
);
pci_read_config_word
(
dev
,
0xd0
,
&
smb
);
pci_read_config_word
(
dev
,
0xd0
,
&
smb
);
smb
&=
PCI_BASE_ADDRESS_IO_MASK
;
smb
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
smb
,
16
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
smb
,
16
,
PCI_BRIDGE_RESOURCES
+
1
,
"vt8235 SMB"
);
}
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_8235
,
quirk_vt8235_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_8235
,
quirk_vt8235_acpi
);
...
...
drivers/pci/setup-bus.c
浏览文件 @
4c2cb58c
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
* FIXME: IO should be max 256 bytes. However, since we may
* FIXME: IO should be max 256 bytes. However, since we may
* have a P2P bridge below a cardbus bridge, we need 4K.
* have a P2P bridge below a cardbus bridge, we need 4K.
*/
*/
#define CARDBUS_IO_SIZE (
4*1024
)
#define CARDBUS_IO_SIZE (
256
)
#define CARDBUS_MEM_SIZE (32*1024*1024)
#define CARDBUS_MEM_SIZE (32*1024*1024)
static
void
__devinit
static
void
__devinit
...
...
drivers/scsi/NCR5380.c
浏览文件 @
4c2cb58c
...
@@ -91,7 +91,7 @@
...
@@ -91,7 +91,7 @@
#ifndef NDEBUG
#ifndef NDEBUG
#define NDEBUG 0
#define NDEBUG 0
#endif
#endif
#ifndef NDEBUG
#ifndef NDEBUG
_ABORT
#define NDEBUG_ABORT 0
#define NDEBUG_ABORT 0
#endif
#endif
...
...
drivers/scsi/aacraid/aacraid.h
浏览文件 @
4c2cb58c
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
#define AAC_MAX_LUN (8)
#define AAC_MAX_LUN (8)
#define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff)
#define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff)
#define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)
512
)
#define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)
256
)
/*
/*
* These macros convert from physical channels to virtual channels
* These macros convert from physical channels to virtual channels
...
...
drivers/scsi/qla2xxx/qla_os.c
浏览文件 @
4c2cb58c
...
@@ -1325,6 +1325,8 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
...
@@ -1325,6 +1325,8 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
ha
->
brd_info
=
brd_info
;
ha
->
brd_info
=
brd_info
;
sprintf
(
ha
->
host_str
,
"%s_%ld"
,
ha
->
brd_info
->
drv_name
,
ha
->
host_no
);
sprintf
(
ha
->
host_str
,
"%s_%ld"
,
ha
->
brd_info
->
drv_name
,
ha
->
host_no
);
ha
->
dpc_pid
=
-
1
;
/* Configure PCI I/O space */
/* Configure PCI I/O space */
ret
=
qla2x00_iospace_config
(
ha
);
ret
=
qla2x00_iospace_config
(
ha
);
if
(
ret
)
if
(
ret
)
...
@@ -1448,7 +1450,6 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
...
@@ -1448,7 +1450,6 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
*/
*/
spin_lock_init
(
&
ha
->
mbx_reg_lock
);
spin_lock_init
(
&
ha
->
mbx_reg_lock
);
ha
->
dpc_pid
=
-
1
;
init_completion
(
&
ha
->
dpc_inited
);
init_completion
(
&
ha
->
dpc_inited
);
init_completion
(
&
ha
->
dpc_exited
);
init_completion
(
&
ha
->
dpc_exited
);
...
...
drivers/scsi/scsi_devinfo.c
浏览文件 @
4c2cb58c
...
@@ -185,6 +185,7 @@ static struct {
...
@@ -185,6 +185,7 @@ static struct {
{
"PIONEER"
,
"CD-ROM DRM-600"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"PIONEER"
,
"CD-ROM DRM-600"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"PIONEER"
,
"CD-ROM DRM-602X"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"PIONEER"
,
"CD-ROM DRM-602X"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"PIONEER"
,
"CD-ROM DRM-604X"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"PIONEER"
,
"CD-ROM DRM-604X"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"PIONEER"
,
"CD-ROM DRM-624X"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"REGAL"
,
"CDC-4X"
,
NULL
,
BLIST_MAX5LUN
|
BLIST_SINGLELUN
},
{
"REGAL"
,
"CDC-4X"
,
NULL
,
BLIST_MAX5LUN
|
BLIST_SINGLELUN
},
{
"SanDisk"
,
"ImageMate CF-SD1"
,
NULL
,
BLIST_FORCELUN
},
{
"SanDisk"
,
"ImageMate CF-SD1"
,
NULL
,
BLIST_FORCELUN
},
{
"SEAGATE"
,
"ST34555N"
,
"0930"
,
BLIST_NOTQ
},
/* Chokes on tagged INQUIRY */
{
"SEAGATE"
,
"ST34555N"
,
"0930"
,
BLIST_NOTQ
},
/* Chokes on tagged INQUIRY */
...
...
drivers/scsi/scsi_lib.c
浏览文件 @
4c2cb58c
...
@@ -97,7 +97,6 @@ int scsi_insert_special_req(struct scsi_request *sreq, int at_head)
...
@@ -97,7 +97,6 @@ int scsi_insert_special_req(struct scsi_request *sreq, int at_head)
}
}
static
void
scsi_run_queue
(
struct
request_queue
*
q
);
static
void
scsi_run_queue
(
struct
request_queue
*
q
);
static
void
scsi_release_buffers
(
struct
scsi_cmnd
*
cmd
);
/*
/*
* Function: scsi_unprep_request()
* Function: scsi_unprep_request()
...
@@ -1040,8 +1039,10 @@ static int scsi_init_io(struct scsi_cmnd *cmd)
...
@@ -1040,8 +1039,10 @@ static int scsi_init_io(struct scsi_cmnd *cmd)
* if sg table allocation fails, requeue request later.
* if sg table allocation fails, requeue request later.
*/
*/
sgpnt
=
scsi_alloc_sgtable
(
cmd
,
GFP_ATOMIC
);
sgpnt
=
scsi_alloc_sgtable
(
cmd
,
GFP_ATOMIC
);
if
(
unlikely
(
!
sgpnt
))
if
(
unlikely
(
!
sgpnt
))
{
scsi_unprep_request
(
req
);
return
BLKPREP_DEFER
;
return
BLKPREP_DEFER
;
}
cmd
->
request_buffer
=
(
char
*
)
sgpnt
;
cmd
->
request_buffer
=
(
char
*
)
sgpnt
;
cmd
->
request_bufflen
=
req
->
nr_sectors
<<
9
;
cmd
->
request_bufflen
=
req
->
nr_sectors
<<
9
;
...
@@ -1245,8 +1246,8 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req)
...
@@ -1245,8 +1246,8 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req)
*/
*/
ret
=
scsi_init_io
(
cmd
);
ret
=
scsi_init_io
(
cmd
);
switch
(
ret
)
{
switch
(
ret
)
{
/* For BLKPREP_KILL/DEFER the cmd was released */
case
BLKPREP_KILL
:
case
BLKPREP_KILL
:
/* BLKPREP_KILL return also releases the command */
goto
kill
;
goto
kill
;
case
BLKPREP_DEFER
:
case
BLKPREP_DEFER
:
goto
defer
;
goto
defer
;
...
...
drivers/scsi/scsi_transport_fc.c
浏览文件 @
4c2cb58c
...
@@ -819,12 +819,15 @@ show_fc_private_host_tgtid_bind_type(struct class_device *cdev, char *buf)
...
@@ -819,12 +819,15 @@ show_fc_private_host_tgtid_bind_type(struct class_device *cdev, char *buf)
return
snprintf
(
buf
,
FC_BINDTYPE_MAX_NAMELEN
,
"%s
\n
"
,
name
);
return
snprintf
(
buf
,
FC_BINDTYPE_MAX_NAMELEN
,
"%s
\n
"
,
name
);
}
}
#define get_list_head_entry(pos, head, member) \
pos = list_entry((head)->next, typeof(*pos), member)
static
ssize_t
static
ssize_t
store_fc_private_host_tgtid_bind_type
(
struct
class_device
*
cdev
,
store_fc_private_host_tgtid_bind_type
(
struct
class_device
*
cdev
,
const
char
*
buf
,
size_t
count
)
const
char
*
buf
,
size_t
count
)
{
{
struct
Scsi_Host
*
shost
=
transport_class_to_shost
(
cdev
);
struct
Scsi_Host
*
shost
=
transport_class_to_shost
(
cdev
);
struct
fc_rport
*
rport
,
*
next_rport
;
struct
fc_rport
*
rport
;
enum
fc_tgtid_binding_type
val
;
enum
fc_tgtid_binding_type
val
;
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -834,9 +837,13 @@ store_fc_private_host_tgtid_bind_type(struct class_device *cdev,
...
@@ -834,9 +837,13 @@ store_fc_private_host_tgtid_bind_type(struct class_device *cdev,
/* if changing bind type, purge all unused consistent bindings */
/* if changing bind type, purge all unused consistent bindings */
if
(
val
!=
fc_host_tgtid_bind_type
(
shost
))
{
if
(
val
!=
fc_host_tgtid_bind_type
(
shost
))
{
spin_lock_irqsave
(
shost
->
host_lock
,
flags
);
spin_lock_irqsave
(
shost
->
host_lock
,
flags
);
list_for_each_entry_safe
(
rport
,
next_rport
,
while
(
!
list_empty
(
&
fc_host_rport_bindings
(
shost
)))
{
&
fc_host_rport_bindings
(
shost
),
peers
)
get_list_head_entry
(
rport
,
&
fc_host_rport_bindings
(
shost
),
peers
);
spin_unlock_irqrestore
(
shost
->
host_lock
,
flags
);
fc_rport_terminate
(
rport
);
fc_rport_terminate
(
rport
);
spin_lock_irqsave
(
shost
->
host_lock
,
flags
);
}
spin_unlock_irqrestore
(
shost
->
host_lock
,
flags
);
spin_unlock_irqrestore
(
shost
->
host_lock
,
flags
);
}
}
...
...
drivers/serial/8250_pci.c
浏览文件 @
4c2cb58c
...
@@ -152,6 +152,7 @@ static int __devinit pci_hp_diva_init(struct pci_dev *dev)
...
@@ -152,6 +152,7 @@ static int __devinit pci_hp_diva_init(struct pci_dev *dev)
rc
=
4
;
rc
=
4
;
break
;
break
;
case
PCI_DEVICE_ID_HP_DIVA_POWERBAR
:
case
PCI_DEVICE_ID_HP_DIVA_POWERBAR
:
case
PCI_DEVICE_ID_HP_DIVA_HURRICANE
:
rc
=
1
;
rc
=
1
;
break
;
break
;
}
}
...
@@ -226,8 +227,10 @@ static int __devinit pci_plx9050_init(struct pci_dev *dev)
...
@@ -226,8 +227,10 @@ static int __devinit pci_plx9050_init(struct pci_dev *dev)
}
}
irq_config
=
0x41
;
irq_config
=
0x41
;
if
(
dev
->
vendor
==
PCI_VENDOR_ID_PANACOM
)
if
(
dev
->
vendor
==
PCI_VENDOR_ID_PANACOM
||
dev
->
subsystem_vendor
==
PCI_SUBVENDOR_ID_EXSYS
)
{
irq_config
=
0x43
;
irq_config
=
0x43
;
}
if
((
dev
->
vendor
==
PCI_VENDOR_ID_PLX
)
&&
if
((
dev
->
vendor
==
PCI_VENDOR_ID_PLX
)
&&
(
dev
->
device
==
PCI_DEVICE_ID_PLX_ROMULUS
))
{
(
dev
->
device
==
PCI_DEVICE_ID_PLX_ROMULUS
))
{
/*
/*
...
@@ -661,6 +664,15 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
...
@@ -661,6 +664,15 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
/*
/*
* PLX
* PLX
*/
*/
{
.
vendor
=
PCI_VENDOR_ID_PLX
,
.
device
=
PCI_DEVICE_ID_PLX_9050
,
.
subvendor
=
PCI_SUBVENDOR_ID_EXSYS
,
.
subdevice
=
PCI_SUBDEVICE_ID_EXSYS_4055
,
.
init
=
pci_plx9050_init
,
.
setup
=
pci_default_setup
,
.
exit
=
__devexit_p
(
pci_plx9050_exit
),
},
{
{
.
vendor
=
PCI_VENDOR_ID_PLX
,
.
vendor
=
PCI_VENDOR_ID_PLX
,
.
device
=
PCI_DEVICE_ID_PLX_9050
,
.
device
=
PCI_DEVICE_ID_PLX_9050
,
...
@@ -927,6 +939,7 @@ enum pci_board_num_t {
...
@@ -927,6 +939,7 @@ enum pci_board_num_t {
pbn_panacom
,
pbn_panacom
,
pbn_panacom2
,
pbn_panacom2
,
pbn_panacom4
,
pbn_panacom4
,
pbn_exsys_4055
,
pbn_plx_romulus
,
pbn_plx_romulus
,
pbn_oxsemi
,
pbn_oxsemi
,
pbn_intel_i960
,
pbn_intel_i960
,
...
@@ -1292,6 +1305,13 @@ static struct pciserial_board pci_boards[] __devinitdata = {
...
@@ -1292,6 +1305,13 @@ static struct pciserial_board pci_boards[] __devinitdata = {
.
reg_shift
=
7
,
.
reg_shift
=
7
,
},
},
[
pbn_exsys_4055
]
=
{
.
flags
=
FL_BASE2
,
.
num_ports
=
4
,
.
base_baud
=
115200
,
.
uart_offset
=
8
,
},
/* I think this entry is broken - the first_offset looks wrong --rmk */
/* I think this entry is broken - the first_offset looks wrong --rmk */
[
pbn_plx_romulus
]
=
{
[
pbn_plx_romulus
]
=
{
.
flags
=
FL_BASE2
,
.
flags
=
FL_BASE2
,
...
@@ -1853,6 +1873,10 @@ static struct pci_device_id serial_pci_tbl[] = {
...
@@ -1853,6 +1873,10 @@ static struct pci_device_id serial_pci_tbl[] = {
PCI_SUBVENDOR_ID_CHASE_PCIRAS
,
PCI_SUBVENDOR_ID_CHASE_PCIRAS
,
PCI_SUBDEVICE_ID_CHASE_PCIRAS8
,
0
,
0
,
PCI_SUBDEVICE_ID_CHASE_PCIRAS8
,
0
,
0
,
pbn_b2_8_460800
},
pbn_b2_8_460800
},
{
PCI_VENDOR_ID_PLX
,
PCI_DEVICE_ID_PLX_9050
,
PCI_SUBVENDOR_ID_EXSYS
,
PCI_SUBDEVICE_ID_EXSYS_4055
,
0
,
0
,
pbn_exsys_4055
},
/*
/*
* Megawolf Romulus PCI Serial Card, from Mike Hudson
* Megawolf Romulus PCI Serial Card, from Mike Hudson
* (Exoray@isys.ca)
* (Exoray@isys.ca)
...
...
drivers/video/fbsysfs.c
浏览文件 @
4c2cb58c
...
@@ -242,6 +242,13 @@ static ssize_t show_virtual(struct class_device *class_device, char *buf)
...
@@ -242,6 +242,13 @@ static ssize_t show_virtual(struct class_device *class_device, char *buf)
fb_info
->
var
.
yres_virtual
);
fb_info
->
var
.
yres_virtual
);
}
}
static
ssize_t
show_stride
(
struct
class_device
*
class_device
,
char
*
buf
)
{
struct
fb_info
*
fb_info
=
(
struct
fb_info
*
)
class_get_devdata
(
class_device
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"%d
\n
"
,
fb_info
->
fix
.
line_length
);
}
/* Format for cmap is "%02x%c%4x%4x%4x\n" */
/* Format for cmap is "%02x%c%4x%4x%4x\n" */
/* %02x entry %c transp %4x red %4x blue %4x green \n */
/* %02x entry %c transp %4x red %4x blue %4x green \n */
/* 256 rows at 16 chars equals 4096, the normal page size */
/* 256 rows at 16 chars equals 4096, the normal page size */
...
@@ -432,6 +439,7 @@ static struct class_device_attribute class_device_attrs[] = {
...
@@ -432,6 +439,7 @@ static struct class_device_attribute class_device_attrs[] = {
__ATTR
(
pan
,
S_IRUGO
|
S_IWUSR
,
show_pan
,
store_pan
),
__ATTR
(
pan
,
S_IRUGO
|
S_IWUSR
,
show_pan
,
store_pan
),
__ATTR
(
virtual_size
,
S_IRUGO
|
S_IWUSR
,
show_virtual
,
store_virtual
),
__ATTR
(
virtual_size
,
S_IRUGO
|
S_IWUSR
,
show_virtual
,
store_virtual
),
__ATTR
(
name
,
S_IRUGO
,
show_name
,
NULL
),
__ATTR
(
name
,
S_IRUGO
,
show_name
,
NULL
),
__ATTR
(
stride
,
S_IRUGO
,
show_stride
,
NULL
),
};
};
int
fb_init_class_device
(
struct
fb_info
*
fb_info
)
int
fb_init_class_device
(
struct
fb_info
*
fb_info
)
...
...
fs/aio.c
浏览文件 @
4c2cb58c
...
@@ -1397,6 +1397,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
...
@@ -1397,6 +1397,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
if
(
unlikely
(
!
access_ok
(
VERIFY_WRITE
,
kiocb
->
ki_buf
,
if
(
unlikely
(
!
access_ok
(
VERIFY_WRITE
,
kiocb
->
ki_buf
,
kiocb
->
ki_left
)))
kiocb
->
ki_left
)))
break
;
break
;
ret
=
security_file_permission
(
file
,
MAY_READ
);
if
(
unlikely
(
ret
))
break
;
ret
=
-
EINVAL
;
ret
=
-
EINVAL
;
if
(
file
->
f_op
->
aio_read
)
if
(
file
->
f_op
->
aio_read
)
kiocb
->
ki_retry
=
aio_pread
;
kiocb
->
ki_retry
=
aio_pread
;
...
@@ -1409,6 +1412,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
...
@@ -1409,6 +1412,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
if
(
unlikely
(
!
access_ok
(
VERIFY_READ
,
kiocb
->
ki_buf
,
if
(
unlikely
(
!
access_ok
(
VERIFY_READ
,
kiocb
->
ki_buf
,
kiocb
->
ki_left
)))
kiocb
->
ki_left
)))
break
;
break
;
ret
=
security_file_permission
(
file
,
MAY_WRITE
);
if
(
unlikely
(
ret
))
break
;
ret
=
-
EINVAL
;
ret
=
-
EINVAL
;
if
(
file
->
f_op
->
aio_write
)
if
(
file
->
f_op
->
aio_write
)
kiocb
->
ki_retry
=
aio_pwrite
;
kiocb
->
ki_retry
=
aio_pwrite
;
...
...
fs/hfsplus/super.c
浏览文件 @
4c2cb58c
...
@@ -50,6 +50,7 @@ static void hfsplus_read_inode(struct inode *inode)
...
@@ -50,6 +50,7 @@ static void hfsplus_read_inode(struct inode *inode)
init_MUTEX
(
&
HFSPLUS_I
(
inode
).
extents_lock
);
init_MUTEX
(
&
HFSPLUS_I
(
inode
).
extents_lock
);
HFSPLUS_I
(
inode
).
flags
=
0
;
HFSPLUS_I
(
inode
).
flags
=
0
;
HFSPLUS_I
(
inode
).
rsrc_inode
=
NULL
;
HFSPLUS_I
(
inode
).
rsrc_inode
=
NULL
;
atomic_set
(
&
HFSPLUS_I
(
inode
).
opencnt
,
0
);
if
(
inode
->
i_ino
>=
HFSPLUS_FIRSTUSER_CNID
)
{
if
(
inode
->
i_ino
>=
HFSPLUS_FIRSTUSER_CNID
)
{
read_inode:
read_inode:
...
...
fs/inotify.c
浏览文件 @
4c2cb58c
...
@@ -176,6 +176,7 @@ static inline void put_inotify_dev(struct inotify_device *dev)
...
@@ -176,6 +176,7 @@ static inline void put_inotify_dev(struct inotify_device *dev)
if
(
atomic_dec_and_test
(
&
dev
->
count
))
{
if
(
atomic_dec_and_test
(
&
dev
->
count
))
{
atomic_dec
(
&
dev
->
user
->
inotify_devs
);
atomic_dec
(
&
dev
->
user
->
inotify_devs
);
free_uid
(
dev
->
user
);
free_uid
(
dev
->
user
);
idr_destroy
(
&
dev
->
idr
);
kfree
(
dev
);
kfree
(
dev
);
}
}
}
}
...
...
include/asm-alpha/atomic.h
浏览文件 @
4c2cb58c
#ifndef _ALPHA_ATOMIC_H
#ifndef _ALPHA_ATOMIC_H
#define _ALPHA_ATOMIC_H
#define _ALPHA_ATOMIC_H
#include <asm/barrier.h>
/*
/*
* Atomic operations that C can't guarantee us. Useful for
* Atomic operations that C can't guarantee us. Useful for
* resource counting etc...
* resource counting etc...
...
@@ -100,18 +102,19 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v)
...
@@ -100,18 +102,19 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v)
static
__inline__
long
atomic_add_return
(
int
i
,
atomic_t
*
v
)
static
__inline__
long
atomic_add_return
(
int
i
,
atomic_t
*
v
)
{
{
long
temp
,
result
;
long
temp
,
result
;
smp_mb
();
__asm__
__volatile__
(
__asm__
__volatile__
(
"1: ldl_l %0,%1
\n
"
"1: ldl_l %0,%1
\n
"
" addl %0,%3,%2
\n
"
" addl %0,%3,%2
\n
"
" addl %0,%3,%0
\n
"
" addl %0,%3,%0
\n
"
" stl_c %0,%1
\n
"
" stl_c %0,%1
\n
"
" beq %0,2f
\n
"
" beq %0,2f
\n
"
" mb
\n
"
".subsection 2
\n
"
".subsection 2
\n
"
"2: br 1b
\n
"
"2: br 1b
\n
"
".previous"
".previous"
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
smp_mb
();
return
result
;
return
result
;
}
}
...
@@ -120,54 +123,57 @@ static __inline__ long atomic_add_return(int i, atomic_t * v)
...
@@ -120,54 +123,57 @@ static __inline__ long atomic_add_return(int i, atomic_t * v)
static
__inline__
long
atomic64_add_return
(
long
i
,
atomic64_t
*
v
)
static
__inline__
long
atomic64_add_return
(
long
i
,
atomic64_t
*
v
)
{
{
long
temp
,
result
;
long
temp
,
result
;
smp_mb
();
__asm__
__volatile__
(
__asm__
__volatile__
(
"1: ldq_l %0,%1
\n
"
"1: ldq_l %0,%1
\n
"
" addq %0,%3,%2
\n
"
" addq %0,%3,%2
\n
"
" addq %0,%3,%0
\n
"
" addq %0,%3,%0
\n
"
" stq_c %0,%1
\n
"
" stq_c %0,%1
\n
"
" beq %0,2f
\n
"
" beq %0,2f
\n
"
" mb
\n
"
".subsection 2
\n
"
".subsection 2
\n
"
"2: br 1b
\n
"
"2: br 1b
\n
"
".previous"
".previous"
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
smp_mb
();
return
result
;
return
result
;
}
}
static
__inline__
long
atomic_sub_return
(
int
i
,
atomic_t
*
v
)
static
__inline__
long
atomic_sub_return
(
int
i
,
atomic_t
*
v
)
{
{
long
temp
,
result
;
long
temp
,
result
;
smp_mb
();
__asm__
__volatile__
(
__asm__
__volatile__
(
"1: ldl_l %0,%1
\n
"
"1: ldl_l %0,%1
\n
"
" subl %0,%3,%2
\n
"
" subl %0,%3,%2
\n
"
" subl %0,%3,%0
\n
"
" subl %0,%3,%0
\n
"
" stl_c %0,%1
\n
"
" stl_c %0,%1
\n
"
" beq %0,2f
\n
"
" beq %0,2f
\n
"
" mb
\n
"
".subsection 2
\n
"
".subsection 2
\n
"
"2: br 1b
\n
"
"2: br 1b
\n
"
".previous"
".previous"
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
smp_mb
();
return
result
;
return
result
;
}
}
static
__inline__
long
atomic64_sub_return
(
long
i
,
atomic64_t
*
v
)
static
__inline__
long
atomic64_sub_return
(
long
i
,
atomic64_t
*
v
)
{
{
long
temp
,
result
;
long
temp
,
result
;
smp_mb
();
__asm__
__volatile__
(
__asm__
__volatile__
(
"1: ldq_l %0,%1
\n
"
"1: ldq_l %0,%1
\n
"
" subq %0,%3,%2
\n
"
" subq %0,%3,%2
\n
"
" subq %0,%3,%0
\n
"
" subq %0,%3,%0
\n
"
" stq_c %0,%1
\n
"
" stq_c %0,%1
\n
"
" beq %0,2f
\n
"
" beq %0,2f
\n
"
" mb
\n
"
".subsection 2
\n
"
".subsection 2
\n
"
"2: br 1b
\n
"
"2: br 1b
\n
"
".previous"
".previous"
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
smp_mb
();
return
result
;
return
result
;
}
}
...
...
include/asm-alpha/barrier.h
0 → 100644
浏览文件 @
4c2cb58c
#ifndef __BARRIER_H
#define __BARRIER_H
#define mb() \
__asm__ __volatile__("mb": : :"memory")
#define rmb() \
__asm__ __volatile__("mb": : :"memory")
#define wmb() \
__asm__ __volatile__("wmb": : :"memory")
#define read_barrier_depends() \
__asm__ __volatile__("mb": : :"memory")
#ifdef CONFIG_SMP
#define smp_mb() mb()
#define smp_rmb() rmb()
#define smp_wmb() wmb()
#define smp_read_barrier_depends() read_barrier_depends()
#else
#define smp_mb() barrier()
#define smp_rmb() barrier()
#define smp_wmb() barrier()
#define smp_read_barrier_depends() barrier()
#endif
#define set_mb(var, value) \
do { var = value; mb(); } while (0)
#define set_wmb(var, value) \
do { var = value; wmb(); } while (0)
#endif
/* __BARRIER_H */
include/asm-alpha/system.h
浏览文件 @
4c2cb58c
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
#include <linux/config.h>
#include <linux/config.h>
#include <asm/pal.h>
#include <asm/pal.h>
#include <asm/page.h>
#include <asm/page.h>
#include <asm/barrier.h>
/*
/*
* System defines.. Note that this is included both from .c and .S
* System defines.. Note that this is included both from .c and .S
...
@@ -139,36 +140,6 @@ extern void halt(void) __attribute__((noreturn));
...
@@ -139,36 +140,6 @@ extern void halt(void) __attribute__((noreturn));
struct
task_struct
;
struct
task_struct
;
extern
struct
task_struct
*
alpha_switch_to
(
unsigned
long
,
struct
task_struct
*
);
extern
struct
task_struct
*
alpha_switch_to
(
unsigned
long
,
struct
task_struct
*
);
#define mb() \
__asm__ __volatile__("mb": : :"memory")
#define rmb() \
__asm__ __volatile__("mb": : :"memory")
#define wmb() \
__asm__ __volatile__("wmb": : :"memory")
#define read_barrier_depends() \
__asm__ __volatile__("mb": : :"memory")
#ifdef CONFIG_SMP
#define smp_mb() mb()
#define smp_rmb() rmb()
#define smp_wmb() wmb()
#define smp_read_barrier_depends() read_barrier_depends()
#else
#define smp_mb() barrier()
#define smp_rmb() barrier()
#define smp_wmb() barrier()
#define smp_read_barrier_depends() barrier()
#endif
#define set_mb(var, value) \
do { var = value; mb(); } while (0)
#define set_wmb(var, value) \
do { var = value; wmb(); } while (0)
#define imb() \
#define imb() \
__asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory")
__asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory")
...
...
include/asm-arm/arch-s3c2410/regs-clock.h
浏览文件 @
4c2cb58c
...
@@ -18,7 +18,9 @@
...
@@ -18,7 +18,9 @@
* 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat)
* 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat)
* 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA
* 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA
* 27-Aug-2005 Ben Dooks Add clock-slow info
* 27-Aug-2005 Ben Dooks Add clock-slow info
*/
* 20-Oct-2005 Ben Dooks Fixed overflow in PLL (Guillaume Gourat)
* 20-Oct-2005 Ben Dooks Add masks for DCLK (Guillaume Gourat)
*/
#ifndef __ASM_ARM_REGS_CLOCK
#ifndef __ASM_ARM_REGS_CLOCK
#define __ASM_ARM_REGS_CLOCK "$Id: clock.h,v 1.4 2003/04/30 14:50:51 ben Exp $"
#define __ASM_ARM_REGS_CLOCK "$Id: clock.h,v 1.4 2003/04/30 14:50:51 ben Exp $"
...
@@ -66,11 +68,16 @@
...
@@ -66,11 +68,16 @@
#define S3C2410_DCLKCON_DCLK0_UCLK (1<<1)
#define S3C2410_DCLKCON_DCLK0_UCLK (1<<1)
#define S3C2410_DCLKCON_DCLK0_DIV(x) (((x) - 1 )<<4)
#define S3C2410_DCLKCON_DCLK0_DIV(x) (((x) - 1 )<<4)
#define S3C2410_DCLKCON_DCLK0_CMP(x) (((x) - 1 )<<8)
#define S3C2410_DCLKCON_DCLK0_CMP(x) (((x) - 1 )<<8)
#define S3C2410_DCLKCON_DCLK0_DIV_MASK ((0xf)<<4)
#define S3C2410_DCLKCON_DCLK0_CMP_MASK ((0xf)<<8)
#define S3C2410_DCLKCON_DCLK1EN (1<<16)
#define S3C2410_DCLKCON_DCLK1EN (1<<16)
#define S3C2410_DCLKCON_DCLK1_PCLK (0<<17)
#define S3C2410_DCLKCON_DCLK1_PCLK (0<<17)
#define S3C2410_DCLKCON_DCLK1_UCLK (1<<17)
#define S3C2410_DCLKCON_DCLK1_UCLK (1<<17)
#define S3C2410_DCLKCON_DCLK1_DIV(x) (((x) - 1) <<20)
#define S3C2410_DCLKCON_DCLK1_DIV(x) (((x) - 1) <<20)
#define S3C2410_DCLKCON_DCLK1_CMP(x) (((x) - 1) <<24)
#define S3C2410_DCLKCON_DCLK1_DIV_MASK ((0xf) <<20)
#define S3C2410_DCLKCON_DCLK1_CMP_MASK ((0xf) <<24)
#define S3C2410_CLKDIVN_PDIVN (1<<0)
#define S3C2410_CLKDIVN_PDIVN (1<<0)
#define S3C2410_CLKDIVN_HDIVN (1<<1)
#define S3C2410_CLKDIVN_HDIVN (1<<1)
...
@@ -83,10 +90,13 @@
...
@@ -83,10 +90,13 @@
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
#include <asm/div64.h>
static
inline
unsigned
int
static
inline
unsigned
int
s3c2410_get_pll
(
int
pllval
,
int
baseclk
)
s3c2410_get_pll
(
unsigned
int
pllval
,
unsigned
int
baseclk
)
{
{
int
mdiv
,
pdiv
,
sdiv
;
unsigned
int
mdiv
,
pdiv
,
sdiv
;
uint64_t
fvco
;
mdiv
=
pllval
>>
S3C2410_PLLCON_MDIVSHIFT
;
mdiv
=
pllval
>>
S3C2410_PLLCON_MDIVSHIFT
;
pdiv
=
pllval
>>
S3C2410_PLLCON_PDIVSHIFT
;
pdiv
=
pllval
>>
S3C2410_PLLCON_PDIVSHIFT
;
...
@@ -96,7 +106,10 @@ s3c2410_get_pll(int pllval, int baseclk)
...
@@ -96,7 +106,10 @@ s3c2410_get_pll(int pllval, int baseclk)
pdiv
&=
S3C2410_PLLCON_PDIVMASK
;
pdiv
&=
S3C2410_PLLCON_PDIVMASK
;
sdiv
&=
S3C2410_PLLCON_SDIVMASK
;
sdiv
&=
S3C2410_PLLCON_SDIVMASK
;
return
(
baseclk
*
(
mdiv
+
8
))
/
((
pdiv
+
2
)
<<
sdiv
);
fvco
=
(
uint64_t
)
baseclk
*
(
mdiv
+
8
);
do_div
(
fvco
,
(
pdiv
+
2
)
<<
sdiv
);
return
(
unsigned
int
)
fvco
;
}
}
#endif
/* __ASSEMBLY__ */
#endif
/* __ASSEMBLY__ */
...
...
include/asm-arm/bitops.h
浏览文件 @
4c2cb58c
...
@@ -347,7 +347,6 @@ static inline unsigned long __ffs(unsigned long word)
...
@@ -347,7 +347,6 @@ static inline unsigned long __ffs(unsigned long word)
* the clz instruction for much better code efficiency.
* the clz instruction for much better code efficiency.
*/
*/
static
__inline__
int
generic_fls
(
int
x
);
#define fls(x) \
#define fls(x) \
( __builtin_constant_p(x) ? generic_fls(x) : \
( __builtin_constant_p(x) ? generic_fls(x) : \
({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) )
({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) )
...
...
include/linux/hugetlb.h
浏览文件 @
4c2cb58c
...
@@ -25,6 +25,8 @@ int is_hugepage_mem_enough(size_t);
...
@@ -25,6 +25,8 @@ int is_hugepage_mem_enough(size_t);
unsigned
long
hugetlb_total_pages
(
void
);
unsigned
long
hugetlb_total_pages
(
void
);
struct
page
*
alloc_huge_page
(
void
);
struct
page
*
alloc_huge_page
(
void
);
void
free_huge_page
(
struct
page
*
);
void
free_huge_page
(
struct
page
*
);
int
hugetlb_fault
(
struct
mm_struct
*
mm
,
struct
vm_area_struct
*
vma
,
unsigned
long
address
,
int
write_access
);
extern
unsigned
long
max_huge_pages
;
extern
unsigned
long
max_huge_pages
;
extern
const
unsigned
long
hugetlb_zero
,
hugetlb_infinity
;
extern
const
unsigned
long
hugetlb_zero
,
hugetlb_infinity
;
...
@@ -99,6 +101,7 @@ static inline unsigned long hugetlb_total_pages(void)
...
@@ -99,6 +101,7 @@ static inline unsigned long hugetlb_total_pages(void)
do { } while (0)
do { } while (0)
#define alloc_huge_page() ({ NULL; })
#define alloc_huge_page() ({ NULL; })
#define free_huge_page(p) ({ (void)(p); BUG(); })
#define free_huge_page(p) ({ (void)(p); BUG(); })
#define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; })
#ifndef HPAGE_MASK
#ifndef HPAGE_MASK
#define HPAGE_MASK 0
/* Keep the compiler happy */
#define HPAGE_MASK 0
/* Keep the compiler happy */
...
@@ -155,24 +158,11 @@ static inline void set_file_hugepages(struct file *file)
...
@@ -155,24 +158,11 @@ static inline void set_file_hugepages(struct file *file)
{
{
file
->
f_op
=
&
hugetlbfs_file_operations
;
file
->
f_op
=
&
hugetlbfs_file_operations
;
}
}
static
inline
int
valid_hugetlb_file_off
(
struct
vm_area_struct
*
vma
,
unsigned
long
address
)
{
struct
inode
*
inode
=
vma
->
vm_file
->
f_dentry
->
d_inode
;
loff_t
file_off
=
address
-
vma
->
vm_start
;
file_off
+=
(
vma
->
vm_pgoff
<<
PAGE_SHIFT
);
return
(
file_off
<
inode
->
i_size
);
}
#else
/* !CONFIG_HUGETLBFS */
#else
/* !CONFIG_HUGETLBFS */
#define is_file_hugepages(file) 0
#define is_file_hugepages(file) 0
#define set_file_hugepages(file) BUG()
#define set_file_hugepages(file) BUG()
#define hugetlb_zero_setup(size) ERR_PTR(-ENOSYS)
#define hugetlb_zero_setup(size) ERR_PTR(-ENOSYS)
#define valid_hugetlb_file_off(vma, address) 0
#endif
/* !CONFIG_HUGETLBFS */
#endif
/* !CONFIG_HUGETLBFS */
...
...
include/linux/idr.h
浏览文件 @
4c2cb58c
...
@@ -75,4 +75,5 @@ int idr_pre_get(struct idr *idp, unsigned gfp_mask);
...
@@ -75,4 +75,5 @@ int idr_pre_get(struct idr *idp, unsigned gfp_mask);
int
idr_get_new
(
struct
idr
*
idp
,
void
*
ptr
,
int
*
id
);
int
idr_get_new
(
struct
idr
*
idp
,
void
*
ptr
,
int
*
id
);
int
idr_get_new_above
(
struct
idr
*
idp
,
void
*
ptr
,
int
starting_id
,
int
*
id
);
int
idr_get_new_above
(
struct
idr
*
idp
,
void
*
ptr
,
int
starting_id
,
int
*
id
);
void
idr_remove
(
struct
idr
*
idp
,
int
id
);
void
idr_remove
(
struct
idr
*
idp
,
int
id
);
void
idr_destroy
(
struct
idr
*
idp
);
void
idr_init
(
struct
idr
*
idp
);
void
idr_init
(
struct
idr
*
idp
);
include/linux/pci_ids.h
浏览文件 @
4c2cb58c
...
@@ -723,6 +723,7 @@
...
@@ -723,6 +723,7 @@
#define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282
#define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282
#define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290
#define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290
#define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301
#define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301
#define PCI_DEVICE_ID_HP_DIVA_HURRICANE 0x132a
#define PCI_DEVICE_ID_HP_CISS 0x3210
#define PCI_DEVICE_ID_HP_CISS 0x3210
#define PCI_DEVICE_ID_HP_CISSA 0x3220
#define PCI_DEVICE_ID_HP_CISSA 0x3220
#define PCI_DEVICE_ID_HP_CISSB 0x3222
#define PCI_DEVICE_ID_HP_CISSB 0x3222
...
@@ -2696,6 +2697,7 @@
...
@@ -2696,6 +2697,7 @@
#define PCI_SUBVENDOR_ID_EXSYS 0xd84d
#define PCI_SUBVENDOR_ID_EXSYS 0xd84d
#define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014
#define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014
#define PCI_SUBDEVICE_ID_EXSYS_4055 0x4055
#define PCI_VENDOR_ID_TIGERJET 0xe159
#define PCI_VENDOR_ID_TIGERJET 0xe159
#define PCI_DEVICE_ID_TIGERJET_300 0x0001
#define PCI_DEVICE_ID_TIGERJET_300 0x0001
...
...
include/net/ax25.h
浏览文件 @
4c2cb58c
...
@@ -171,7 +171,7 @@ typedef struct {
...
@@ -171,7 +171,7 @@ typedef struct {
ax25_address
calls
[
AX25_MAX_DIGIS
];
ax25_address
calls
[
AX25_MAX_DIGIS
];
unsigned
char
repeated
[
AX25_MAX_DIGIS
];
unsigned
char
repeated
[
AX25_MAX_DIGIS
];
unsigned
char
ndigi
;
unsigned
char
ndigi
;
char
lastrepeat
;
signed
char
lastrepeat
;
}
ax25_digi
;
}
ax25_digi
;
typedef
struct
ax25_route
{
typedef
struct
ax25_route
{
...
...
include/net/llc_pdu.h
浏览文件 @
4c2cb58c
...
@@ -254,8 +254,10 @@ static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa)
...
@@ -254,8 +254,10 @@ static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa)
{
{
if
(
skb
->
protocol
==
ntohs
(
ETH_P_802_2
))
if
(
skb
->
protocol
==
ntohs
(
ETH_P_802_2
))
memcpy
(
sa
,
eth_hdr
(
skb
)
->
h_source
,
ETH_ALEN
);
memcpy
(
sa
,
eth_hdr
(
skb
)
->
h_source
,
ETH_ALEN
);
else
if
(
skb
->
protocol
==
ntohs
(
ETH_P_TR_802_2
))
else
if
(
skb
->
protocol
==
ntohs
(
ETH_P_TR_802_2
))
{
memcpy
(
sa
,
tr_hdr
(
skb
)
->
saddr
,
ETH_ALEN
);
memcpy
(
sa
,
tr_hdr
(
skb
)
->
saddr
,
ETH_ALEN
);
*
sa
&=
0x7F
;
}
}
}
/**
/**
...
...
kernel/exit.c
浏览文件 @
4c2cb58c
...
@@ -843,6 +843,7 @@ fastcall NORET_TYPE void do_exit(long code)
...
@@ -843,6 +843,7 @@ fastcall NORET_TYPE void do_exit(long code)
group_dead
=
atomic_dec_and_test
(
&
tsk
->
signal
->
live
);
group_dead
=
atomic_dec_and_test
(
&
tsk
->
signal
->
live
);
if
(
group_dead
)
{
if
(
group_dead
)
{
del_timer_sync
(
&
tsk
->
signal
->
real_timer
);
del_timer_sync
(
&
tsk
->
signal
->
real_timer
);
exit_itimers
(
tsk
->
signal
);
acct_process
(
code
);
acct_process
(
code
);
}
}
exit_mm
(
tsk
);
exit_mm
(
tsk
);
...
...
kernel/posix-cpu-timers.c
浏览文件 @
4c2cb58c
...
@@ -91,7 +91,7 @@ static inline union cpu_time_count cpu_time_sub(clockid_t which_clock,
...
@@ -91,7 +91,7 @@ static inline union cpu_time_count cpu_time_sub(clockid_t which_clock,
* Update expiry time from increment, and increase overrun count,
* Update expiry time from increment, and increase overrun count,
* given the current clock sample.
* given the current clock sample.
*/
*/
static
inline
void
bump_cpu_timer
(
struct
k_itimer
*
timer
,
static
void
bump_cpu_timer
(
struct
k_itimer
*
timer
,
union
cpu_time_count
now
)
union
cpu_time_count
now
)
{
{
int
i
;
int
i
;
...
@@ -110,7 +110,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer,
...
@@ -110,7 +110,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer,
for
(
i
=
0
;
incr
<
delta
-
incr
;
i
++
)
for
(
i
=
0
;
incr
<
delta
-
incr
;
i
++
)
incr
=
incr
<<
1
;
incr
=
incr
<<
1
;
for
(;
i
>=
0
;
incr
>>=
1
,
i
--
)
{
for
(;
i
>=
0
;
incr
>>=
1
,
i
--
)
{
if
(
delta
<
=
incr
)
if
(
delta
<
incr
)
continue
;
continue
;
timer
->
it
.
cpu
.
expires
.
sched
+=
incr
;
timer
->
it
.
cpu
.
expires
.
sched
+=
incr
;
timer
->
it_overrun
+=
1
<<
i
;
timer
->
it_overrun
+=
1
<<
i
;
...
@@ -128,7 +128,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer,
...
@@ -128,7 +128,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer,
for
(
i
=
0
;
cputime_lt
(
incr
,
cputime_sub
(
delta
,
incr
));
i
++
)
for
(
i
=
0
;
cputime_lt
(
incr
,
cputime_sub
(
delta
,
incr
));
i
++
)
incr
=
cputime_add
(
incr
,
incr
);
incr
=
cputime_add
(
incr
,
incr
);
for
(;
i
>=
0
;
incr
=
cputime_halve
(
incr
),
i
--
)
{
for
(;
i
>=
0
;
incr
=
cputime_halve
(
incr
),
i
--
)
{
if
(
cputime_l
e
(
delta
,
incr
))
if
(
cputime_l
t
(
delta
,
incr
))
continue
;
continue
;
timer
->
it
.
cpu
.
expires
.
cpu
=
timer
->
it
.
cpu
.
expires
.
cpu
=
cputime_add
(
timer
->
it
.
cpu
.
expires
.
cpu
,
incr
);
cputime_add
(
timer
->
it
.
cpu
.
expires
.
cpu
,
incr
);
...
@@ -380,28 +380,31 @@ int posix_cpu_timer_create(struct k_itimer *new_timer)
...
@@ -380,28 +380,31 @@ int posix_cpu_timer_create(struct k_itimer *new_timer)
int
posix_cpu_timer_del
(
struct
k_itimer
*
timer
)
int
posix_cpu_timer_del
(
struct
k_itimer
*
timer
)
{
{
struct
task_struct
*
p
=
timer
->
it
.
cpu
.
task
;
struct
task_struct
*
p
=
timer
->
it
.
cpu
.
task
;
int
ret
=
0
;
if
(
timer
->
it
.
cpu
.
firing
)
if
(
likely
(
p
!=
NULL
))
{
return
TIMER_RETRY
;
read_lock
(
&
tasklist_lock
);
if
(
unlikely
(
p
->
signal
==
NULL
))
{
if
(
unlikely
(
p
==
NULL
))
/*
return
0
;
* We raced with the reaping of the task.
* The deletion should have cleared us off the list.
*/
BUG_ON
(
!
list_empty
(
&
timer
->
it
.
cpu
.
entry
));
}
else
{
spin_lock
(
&
p
->
sighand
->
siglock
);
if
(
timer
->
it
.
cpu
.
firing
)
ret
=
TIMER_RETRY
;
else
list_del
(
&
timer
->
it
.
cpu
.
entry
);
spin_unlock
(
&
p
->
sighand
->
siglock
);
}
read_unlock
(
&
tasklist_lock
);
spin_lock
(
&
p
->
sighand
->
siglock
);
if
(
!
ret
)
if
(
!
list_empty
(
&
timer
->
it
.
cpu
.
entry
))
{
put_task_struct
(
p
);
/*
* Take us off the task's timer list. We don't need to
* take tasklist_lock and check for the task being reaped.
* If it was reaped, it already called posix_cpu_timers_exit
* and posix_cpu_timers_exit_group to clear all the timers
* that pointed to it.
*/
list_del
(
&
timer
->
it
.
cpu
.
entry
);
put_task_struct
(
p
);
}
}
spin_unlock
(
&
p
->
sighand
->
siglock
);
return
0
;
return
ret
;
}
}
/*
/*
...
@@ -418,8 +421,6 @@ static void cleanup_timers(struct list_head *head,
...
@@ -418,8 +421,6 @@ static void cleanup_timers(struct list_head *head,
cputime_t
ptime
=
cputime_add
(
utime
,
stime
);
cputime_t
ptime
=
cputime_add
(
utime
,
stime
);
list_for_each_entry_safe
(
timer
,
next
,
head
,
entry
)
{
list_for_each_entry_safe
(
timer
,
next
,
head
,
entry
)
{
put_task_struct
(
timer
->
task
);
timer
->
task
=
NULL
;
list_del_init
(
&
timer
->
entry
);
list_del_init
(
&
timer
->
entry
);
if
(
cputime_lt
(
timer
->
expires
.
cpu
,
ptime
))
{
if
(
cputime_lt
(
timer
->
expires
.
cpu
,
ptime
))
{
timer
->
expires
.
cpu
=
cputime_zero
;
timer
->
expires
.
cpu
=
cputime_zero
;
...
@@ -431,8 +432,6 @@ static void cleanup_timers(struct list_head *head,
...
@@ -431,8 +432,6 @@ static void cleanup_timers(struct list_head *head,
++
head
;
++
head
;
list_for_each_entry_safe
(
timer
,
next
,
head
,
entry
)
{
list_for_each_entry_safe
(
timer
,
next
,
head
,
entry
)
{
put_task_struct
(
timer
->
task
);
timer
->
task
=
NULL
;
list_del_init
(
&
timer
->
entry
);
list_del_init
(
&
timer
->
entry
);
if
(
cputime_lt
(
timer
->
expires
.
cpu
,
utime
))
{
if
(
cputime_lt
(
timer
->
expires
.
cpu
,
utime
))
{
timer
->
expires
.
cpu
=
cputime_zero
;
timer
->
expires
.
cpu
=
cputime_zero
;
...
@@ -444,8 +443,6 @@ static void cleanup_timers(struct list_head *head,
...
@@ -444,8 +443,6 @@ static void cleanup_timers(struct list_head *head,
++
head
;
++
head
;
list_for_each_entry_safe
(
timer
,
next
,
head
,
entry
)
{
list_for_each_entry_safe
(
timer
,
next
,
head
,
entry
)
{
put_task_struct
(
timer
->
task
);
timer
->
task
=
NULL
;
list_del_init
(
&
timer
->
entry
);
list_del_init
(
&
timer
->
entry
);
if
(
timer
->
expires
.
sched
<
sched_time
)
{
if
(
timer
->
expires
.
sched
<
sched_time
)
{
timer
->
expires
.
sched
=
0
;
timer
->
expires
.
sched
=
0
;
...
@@ -489,6 +486,9 @@ static void process_timer_rebalance(struct task_struct *p,
...
@@ -489,6 +486,9 @@ static void process_timer_rebalance(struct task_struct *p,
struct
task_struct
*
t
=
p
;
struct
task_struct
*
t
=
p
;
unsigned
int
nthreads
=
atomic_read
(
&
p
->
signal
->
live
);
unsigned
int
nthreads
=
atomic_read
(
&
p
->
signal
->
live
);
if
(
!
nthreads
)
return
;
switch
(
clock_idx
)
{
switch
(
clock_idx
)
{
default:
default:
BUG
();
BUG
();
...
@@ -497,7 +497,7 @@ static void process_timer_rebalance(struct task_struct *p,
...
@@ -497,7 +497,7 @@ static void process_timer_rebalance(struct task_struct *p,
left
=
cputime_div
(
cputime_sub
(
expires
.
cpu
,
val
.
cpu
),
left
=
cputime_div
(
cputime_sub
(
expires
.
cpu
,
val
.
cpu
),
nthreads
);
nthreads
);
do
{
do
{
if
(
!
unlikely
(
t
->
exit_state
))
{
if
(
!
unlikely
(
t
->
flags
&
PF_EXITING
))
{
ticks
=
cputime_add
(
prof_ticks
(
t
),
left
);
ticks
=
cputime_add
(
prof_ticks
(
t
),
left
);
if
(
cputime_eq
(
t
->
it_prof_expires
,
if
(
cputime_eq
(
t
->
it_prof_expires
,
cputime_zero
)
||
cputime_zero
)
||
...
@@ -512,7 +512,7 @@ static void process_timer_rebalance(struct task_struct *p,
...
@@ -512,7 +512,7 @@ static void process_timer_rebalance(struct task_struct *p,
left
=
cputime_div
(
cputime_sub
(
expires
.
cpu
,
val
.
cpu
),
left
=
cputime_div
(
cputime_sub
(
expires
.
cpu
,
val
.
cpu
),
nthreads
);
nthreads
);
do
{
do
{
if
(
!
unlikely
(
t
->
exit_state
))
{
if
(
!
unlikely
(
t
->
flags
&
PF_EXITING
))
{
ticks
=
cputime_add
(
virt_ticks
(
t
),
left
);
ticks
=
cputime_add
(
virt_ticks
(
t
),
left
);
if
(
cputime_eq
(
t
->
it_virt_expires
,
if
(
cputime_eq
(
t
->
it_virt_expires
,
cputime_zero
)
||
cputime_zero
)
||
...
@@ -527,7 +527,7 @@ static void process_timer_rebalance(struct task_struct *p,
...
@@ -527,7 +527,7 @@ static void process_timer_rebalance(struct task_struct *p,
nsleft
=
expires
.
sched
-
val
.
sched
;
nsleft
=
expires
.
sched
-
val
.
sched
;
do_div
(
nsleft
,
nthreads
);
do_div
(
nsleft
,
nthreads
);
do
{
do
{
if
(
!
unlikely
(
t
->
exit_state
))
{
if
(
!
unlikely
(
t
->
flags
&
PF_EXITING
))
{
ns
=
t
->
sched_time
+
nsleft
;
ns
=
t
->
sched_time
+
nsleft
;
if
(
t
->
it_sched_expires
==
0
||
if
(
t
->
it_sched_expires
==
0
||
t
->
it_sched_expires
>
ns
)
{
t
->
it_sched_expires
>
ns
)
{
...
@@ -566,6 +566,9 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now)
...
@@ -566,6 +566,9 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now)
struct
cpu_timer_list
*
next
;
struct
cpu_timer_list
*
next
;
unsigned
long
i
;
unsigned
long
i
;
if
(
CPUCLOCK_PERTHREAD
(
timer
->
it_clock
)
&&
(
p
->
flags
&
PF_EXITING
))
return
;
head
=
(
CPUCLOCK_PERTHREAD
(
timer
->
it_clock
)
?
head
=
(
CPUCLOCK_PERTHREAD
(
timer
->
it_clock
)
?
p
->
cpu_timers
:
p
->
signal
->
cpu_timers
);
p
->
cpu_timers
:
p
->
signal
->
cpu_timers
);
head
+=
CPUCLOCK_WHICH
(
timer
->
it_clock
);
head
+=
CPUCLOCK_WHICH
(
timer
->
it_clock
);
...
@@ -576,17 +579,15 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now)
...
@@ -576,17 +579,15 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now)
listpos
=
head
;
listpos
=
head
;
if
(
CPUCLOCK_WHICH
(
timer
->
it_clock
)
==
CPUCLOCK_SCHED
)
{
if
(
CPUCLOCK_WHICH
(
timer
->
it_clock
)
==
CPUCLOCK_SCHED
)
{
list_for_each_entry
(
next
,
head
,
entry
)
{
list_for_each_entry
(
next
,
head
,
entry
)
{
if
(
next
->
expires
.
sched
>
nt
->
expires
.
sched
)
{
if
(
next
->
expires
.
sched
>
nt
->
expires
.
sched
)
listpos
=
&
next
->
entry
;
break
;
break
;
}
listpos
=
&
next
->
entry
;
}
}
}
else
{
}
else
{
list_for_each_entry
(
next
,
head
,
entry
)
{
list_for_each_entry
(
next
,
head
,
entry
)
{
if
(
cputime_gt
(
next
->
expires
.
cpu
,
nt
->
expires
.
cpu
))
{
if
(
cputime_gt
(
next
->
expires
.
cpu
,
nt
->
expires
.
cpu
))
listpos
=
&
next
->
entry
;
break
;
break
;
}
listpos
=
&
next
->
entry
;
}
}
}
}
list_add
(
&
nt
->
entry
,
listpos
);
list_add
(
&
nt
->
entry
,
listpos
);
...
@@ -730,9 +731,15 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
...
@@ -730,9 +731,15 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
* Disarm any old timer after extracting its expiry time.
* Disarm any old timer after extracting its expiry time.
*/
*/
BUG_ON
(
!
irqs_disabled
());
BUG_ON
(
!
irqs_disabled
());
ret
=
0
;
spin_lock
(
&
p
->
sighand
->
siglock
);
spin_lock
(
&
p
->
sighand
->
siglock
);
old_expires
=
timer
->
it
.
cpu
.
expires
;
old_expires
=
timer
->
it
.
cpu
.
expires
;
list_del_init
(
&
timer
->
it
.
cpu
.
entry
);
if
(
unlikely
(
timer
->
it
.
cpu
.
firing
))
{
timer
->
it
.
cpu
.
firing
=
-
1
;
ret
=
TIMER_RETRY
;
}
else
list_del_init
(
&
timer
->
it
.
cpu
.
entry
);
spin_unlock
(
&
p
->
sighand
->
siglock
);
spin_unlock
(
&
p
->
sighand
->
siglock
);
/*
/*
...
@@ -780,7 +787,7 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
...
@@ -780,7 +787,7 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
}
}
}
}
if
(
unlikely
(
timer
->
it
.
cpu
.
firing
))
{
if
(
unlikely
(
ret
))
{
/*
/*
* We are colliding with the timer actually firing.
* We are colliding with the timer actually firing.
* Punt after filling in the timer's old value, and
* Punt after filling in the timer's old value, and
...
@@ -788,8 +795,6 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
...
@@ -788,8 +795,6 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
* it as an overrun (thanks to bump_cpu_timer above).
* it as an overrun (thanks to bump_cpu_timer above).
*/
*/
read_unlock
(
&
tasklist_lock
);
read_unlock
(
&
tasklist_lock
);
timer
->
it
.
cpu
.
firing
=
-
1
;
ret
=
TIMER_RETRY
;
goto
out
;
goto
out
;
}
}
...
@@ -955,14 +960,16 @@ void posix_cpu_timer_get(struct k_itimer *timer, struct itimerspec *itp)
...
@@ -955,14 +960,16 @@ void posix_cpu_timer_get(struct k_itimer *timer, struct itimerspec *itp)
static
void
check_thread_timers
(
struct
task_struct
*
tsk
,
static
void
check_thread_timers
(
struct
task_struct
*
tsk
,
struct
list_head
*
firing
)
struct
list_head
*
firing
)
{
{
int
maxfire
;
struct
list_head
*
timers
=
tsk
->
cpu_timers
;
struct
list_head
*
timers
=
tsk
->
cpu_timers
;
maxfire
=
20
;
tsk
->
it_prof_expires
=
cputime_zero
;
tsk
->
it_prof_expires
=
cputime_zero
;
while
(
!
list_empty
(
timers
))
{
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
struct
cpu_timer_list
,
entry
);
entry
);
if
(
cputime_lt
(
prof_ticks
(
tsk
),
t
->
expires
.
cpu
))
{
if
(
!--
maxfire
||
cputime_lt
(
prof_ticks
(
tsk
),
t
->
expires
.
cpu
))
{
tsk
->
it_prof_expires
=
t
->
expires
.
cpu
;
tsk
->
it_prof_expires
=
t
->
expires
.
cpu
;
break
;
break
;
}
}
...
@@ -971,12 +978,13 @@ static void check_thread_timers(struct task_struct *tsk,
...
@@ -971,12 +978,13 @@ static void check_thread_timers(struct task_struct *tsk,
}
}
++
timers
;
++
timers
;
maxfire
=
20
;
tsk
->
it_virt_expires
=
cputime_zero
;
tsk
->
it_virt_expires
=
cputime_zero
;
while
(
!
list_empty
(
timers
))
{
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
struct
cpu_timer_list
,
entry
);
entry
);
if
(
cputime_lt
(
virt_ticks
(
tsk
),
t
->
expires
.
cpu
))
{
if
(
!--
maxfire
||
cputime_lt
(
virt_ticks
(
tsk
),
t
->
expires
.
cpu
))
{
tsk
->
it_virt_expires
=
t
->
expires
.
cpu
;
tsk
->
it_virt_expires
=
t
->
expires
.
cpu
;
break
;
break
;
}
}
...
@@ -985,12 +993,13 @@ static void check_thread_timers(struct task_struct *tsk,
...
@@ -985,12 +993,13 @@ static void check_thread_timers(struct task_struct *tsk,
}
}
++
timers
;
++
timers
;
maxfire
=
20
;
tsk
->
it_sched_expires
=
0
;
tsk
->
it_sched_expires
=
0
;
while
(
!
list_empty
(
timers
))
{
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
struct
cpu_timer_list
,
entry
);
entry
);
if
(
tsk
->
sched_time
<
t
->
expires
.
sched
)
{
if
(
!--
maxfire
||
tsk
->
sched_time
<
t
->
expires
.
sched
)
{
tsk
->
it_sched_expires
=
t
->
expires
.
sched
;
tsk
->
it_sched_expires
=
t
->
expires
.
sched
;
break
;
break
;
}
}
...
@@ -1007,6 +1016,7 @@ static void check_thread_timers(struct task_struct *tsk,
...
@@ -1007,6 +1016,7 @@ static void check_thread_timers(struct task_struct *tsk,
static
void
check_process_timers
(
struct
task_struct
*
tsk
,
static
void
check_process_timers
(
struct
task_struct
*
tsk
,
struct
list_head
*
firing
)
struct
list_head
*
firing
)
{
{
int
maxfire
;
struct
signal_struct
*
const
sig
=
tsk
->
signal
;
struct
signal_struct
*
const
sig
=
tsk
->
signal
;
cputime_t
utime
,
stime
,
ptime
,
virt_expires
,
prof_expires
;
cputime_t
utime
,
stime
,
ptime
,
virt_expires
,
prof_expires
;
unsigned
long
long
sched_time
,
sched_expires
;
unsigned
long
long
sched_time
,
sched_expires
;
...
@@ -1039,12 +1049,13 @@ static void check_process_timers(struct task_struct *tsk,
...
@@ -1039,12 +1049,13 @@ static void check_process_timers(struct task_struct *tsk,
}
while
(
t
!=
tsk
);
}
while
(
t
!=
tsk
);
ptime
=
cputime_add
(
utime
,
stime
);
ptime
=
cputime_add
(
utime
,
stime
);
maxfire
=
20
;
prof_expires
=
cputime_zero
;
prof_expires
=
cputime_zero
;
while
(
!
list_empty
(
timers
))
{
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
struct
cpu_timer_list
,
entry
);
entry
);
if
(
cputime_lt
(
ptime
,
t
->
expires
.
cpu
))
{
if
(
!--
maxfire
||
cputime_lt
(
ptime
,
t
->
expires
.
cpu
))
{
prof_expires
=
t
->
expires
.
cpu
;
prof_expires
=
t
->
expires
.
cpu
;
break
;
break
;
}
}
...
@@ -1053,12 +1064,13 @@ static void check_process_timers(struct task_struct *tsk,
...
@@ -1053,12 +1064,13 @@ static void check_process_timers(struct task_struct *tsk,
}
}
++
timers
;
++
timers
;
maxfire
=
20
;
virt_expires
=
cputime_zero
;
virt_expires
=
cputime_zero
;
while
(
!
list_empty
(
timers
))
{
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
struct
cpu_timer_list
,
entry
);
entry
);
if
(
cputime_lt
(
utime
,
t
->
expires
.
cpu
))
{
if
(
!--
maxfire
||
cputime_lt
(
utime
,
t
->
expires
.
cpu
))
{
virt_expires
=
t
->
expires
.
cpu
;
virt_expires
=
t
->
expires
.
cpu
;
break
;
break
;
}
}
...
@@ -1067,12 +1079,13 @@ static void check_process_timers(struct task_struct *tsk,
...
@@ -1067,12 +1079,13 @@ static void check_process_timers(struct task_struct *tsk,
}
}
++
timers
;
++
timers
;
maxfire
=
20
;
sched_expires
=
0
;
sched_expires
=
0
;
while
(
!
list_empty
(
timers
))
{
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
struct
cpu_timer_list
,
entry
);
entry
);
if
(
sched_time
<
t
->
expires
.
sched
)
{
if
(
!--
maxfire
||
sched_time
<
t
->
expires
.
sched
)
{
sched_expires
=
t
->
expires
.
sched
;
sched_expires
=
t
->
expires
.
sched
;
break
;
break
;
}
}
...
@@ -1155,6 +1168,9 @@ static void check_process_timers(struct task_struct *tsk,
...
@@ -1155,6 +1168,9 @@ static void check_process_timers(struct task_struct *tsk,
unsigned
long
long
sched_left
,
sched
;
unsigned
long
long
sched_left
,
sched
;
const
unsigned
int
nthreads
=
atomic_read
(
&
sig
->
live
);
const
unsigned
int
nthreads
=
atomic_read
(
&
sig
->
live
);
if
(
!
nthreads
)
return
;
prof_left
=
cputime_sub
(
prof_expires
,
utime
);
prof_left
=
cputime_sub
(
prof_expires
,
utime
);
prof_left
=
cputime_sub
(
prof_left
,
stime
);
prof_left
=
cputime_sub
(
prof_left
,
stime
);
prof_left
=
cputime_div
(
prof_left
,
nthreads
);
prof_left
=
cputime_div
(
prof_left
,
nthreads
);
...
@@ -1191,7 +1207,7 @@ static void check_process_timers(struct task_struct *tsk,
...
@@ -1191,7 +1207,7 @@ static void check_process_timers(struct task_struct *tsk,
do
{
do
{
t
=
next_thread
(
t
);
t
=
next_thread
(
t
);
}
while
(
unlikely
(
t
->
exit_state
));
}
while
(
unlikely
(
t
->
flags
&
PF_EXITING
));
}
while
(
t
!=
tsk
);
}
while
(
t
!=
tsk
);
}
}
}
}
...
...
kernel/posix-timers.c
浏览文件 @
4c2cb58c
...
@@ -1157,7 +1157,7 @@ static inline void itimer_delete(struct k_itimer *timer)
...
@@ -1157,7 +1157,7 @@ static inline void itimer_delete(struct k_itimer *timer)
}
}
/*
/*
* This is called by
__exit_signal
, only when there are no more
* This is called by
do_exit or de_thread
, only when there are no more
* references to the shared signal_struct.
* references to the shared signal_struct.
*/
*/
void
exit_itimers
(
struct
signal_struct
*
sig
)
void
exit_itimers
(
struct
signal_struct
*
sig
)
...
...
kernel/sched.c
浏览文件 @
4c2cb58c
...
@@ -3879,6 +3879,7 @@ EXPORT_SYMBOL(cpu_present_map);
...
@@ -3879,6 +3879,7 @@ EXPORT_SYMBOL(cpu_present_map);
#ifndef CONFIG_SMP
#ifndef CONFIG_SMP
cpumask_t
cpu_online_map
=
CPU_MASK_ALL
;
cpumask_t
cpu_online_map
=
CPU_MASK_ALL
;
EXPORT_SYMBOL_GPL
(
cpu_online_map
);
cpumask_t
cpu_possible_map
=
CPU_MASK_ALL
;
cpumask_t
cpu_possible_map
=
CPU_MASK_ALL
;
#endif
#endif
...
...
kernel/signal.c
浏览文件 @
4c2cb58c
...
@@ -397,20 +397,8 @@ void __exit_signal(struct task_struct *tsk)
...
@@ -397,20 +397,8 @@ void __exit_signal(struct task_struct *tsk)
flush_sigqueue
(
&
tsk
->
pending
);
flush_sigqueue
(
&
tsk
->
pending
);
if
(
sig
)
{
if
(
sig
)
{
/*
/*
* We are cleaning up the signal_struct here. We delayed
* We are cleaning up the signal_struct here.
* calling exit_itimers until after flush_sigqueue, just in
* case our thread-local pending queue contained a queued
* timer signal that would have been cleared in
* exit_itimers. When that called sigqueue_free, it would
* attempt to re-take the tasklist_lock and deadlock. This
* can never happen if we ensure that all queues the
* timer's signal might be queued on have been flushed
* first. The shared_pending queue, and our own pending
* queue are the only queues the timer could be on, since
* there are no other threads left in the group and timer
* signals are constrained to threads inside the group.
*/
*/
exit_itimers
(
sig
);
exit_thread_group_keys
(
sig
);
exit_thread_group_keys
(
sig
);
kmem_cache_free
(
signal_cachep
,
sig
);
kmem_cache_free
(
signal_cachep
,
sig
);
}
}
...
...
lib/idr.c
浏览文件 @
4c2cb58c
...
@@ -345,6 +345,19 @@ void idr_remove(struct idr *idp, int id)
...
@@ -345,6 +345,19 @@ void idr_remove(struct idr *idp, int id)
}
}
EXPORT_SYMBOL
(
idr_remove
);
EXPORT_SYMBOL
(
idr_remove
);
/**
* idr_destroy - release all cached layers within an idr tree
* idp: idr handle
*/
void
idr_destroy
(
struct
idr
*
idp
)
{
while
(
idp
->
id_free_cnt
)
{
struct
idr_layer
*
p
=
alloc_layer
(
idp
);
kmem_cache_free
(
idr_layer_cache
,
p
);
}
}
EXPORT_SYMBOL
(
idr_destroy
);
/**
/**
* idr_find - return pointer for given id
* idr_find - return pointer for given id
* @idp: idr handle
* @idp: idr handle
...
...
mm/hugetlb.c
浏览文件 @
4c2cb58c
...
@@ -394,6 +394,28 @@ int hugetlb_prefault(struct address_space *mapping, struct vm_area_struct *vma)
...
@@ -394,6 +394,28 @@ int hugetlb_prefault(struct address_space *mapping, struct vm_area_struct *vma)
return
ret
;
return
ret
;
}
}
/*
* On ia64 at least, it is possible to receive a hugetlb fault from a
* stale zero entry left in the TLB from earlier hardware prefetching.
* Low-level arch code should already have flushed the stale entry as
* part of its fault handling, but we do need to accept this minor fault
* and return successfully. Whereas the "normal" case is that this is
* an access to a hugetlb page which has been truncated off since mmap.
*/
int
hugetlb_fault
(
struct
mm_struct
*
mm
,
struct
vm_area_struct
*
vma
,
unsigned
long
address
,
int
write_access
)
{
int
ret
=
VM_FAULT_SIGBUS
;
pte_t
*
pte
;
spin_lock
(
&
mm
->
page_table_lock
);
pte
=
huge_pte_offset
(
mm
,
address
);
if
(
pte
&&
!
pte_none
(
*
pte
))
ret
=
VM_FAULT_MINOR
;
spin_unlock
(
&
mm
->
page_table_lock
);
return
ret
;
}
int
follow_hugetlb_page
(
struct
mm_struct
*
mm
,
struct
vm_area_struct
*
vma
,
int
follow_hugetlb_page
(
struct
mm_struct
*
mm
,
struct
vm_area_struct
*
vma
,
struct
page
**
pages
,
struct
vm_area_struct
**
vmas
,
struct
page
**
pages
,
struct
vm_area_struct
**
vmas
,
unsigned
long
*
position
,
int
*
length
,
int
i
)
unsigned
long
*
position
,
int
*
length
,
int
i
)
...
...
mm/memory.c
浏览文件 @
4c2cb58c
...
@@ -2045,18 +2045,8 @@ int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct * vma,
...
@@ -2045,18 +2045,8 @@ int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct * vma,
inc_page_state
(
pgfault
);
inc_page_state
(
pgfault
);
if
(
unlikely
(
is_vm_hugetlb_page
(
vma
)))
{
if
(
unlikely
(
is_vm_hugetlb_page
(
vma
)))
if
(
valid_hugetlb_file_off
(
vma
,
address
))
return
hugetlb_fault
(
mm
,
vma
,
address
,
write_access
);
/* We get here only if there was a stale(zero) TLB entry
* (because of HW prefetching).
* Low-level arch code (if needed) should have already
* purged the stale entry as part of this fault handling.
* Here we just return.
*/
return
VM_FAULT_MINOR
;
else
return
VM_FAULT_SIGBUS
;
/* mapping truncation does this. */
}
/*
/*
* We need the page table lock to synchronize with kswapd
* We need the page table lock to synchronize with kswapd
...
...
mm/page_alloc.c
浏览文件 @
4c2cb58c
...
@@ -1750,6 +1750,8 @@ inline void setup_pageset(struct per_cpu_pageset *p, unsigned long batch)
...
@@ -1750,6 +1750,8 @@ inline void setup_pageset(struct per_cpu_pageset *p, unsigned long batch)
{
{
struct
per_cpu_pages
*
pcp
;
struct
per_cpu_pages
*
pcp
;
memset
(
p
,
0
,
sizeof
(
*
p
));
pcp
=
&
p
->
pcp
[
0
];
/* hot */
pcp
=
&
p
->
pcp
[
0
];
/* hot */
pcp
->
count
=
0
;
pcp
->
count
=
0
;
pcp
->
low
=
2
*
batch
;
pcp
->
low
=
2
*
batch
;
...
...
net/802/tr.c
浏览文件 @
4c2cb58c
...
@@ -340,9 +340,10 @@ static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev)
...
@@ -340,9 +340,10 @@ static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev)
unsigned
int
hash
,
rii_p
=
0
;
unsigned
int
hash
,
rii_p
=
0
;
unsigned
long
flags
;
unsigned
long
flags
;
struct
rif_cache
*
entry
;
struct
rif_cache
*
entry
;
unsigned
char
saddr0
;
spin_lock_irqsave
(
&
rif_lock
,
flags
);
spin_lock_irqsave
(
&
rif_lock
,
flags
);
saddr0
=
trh
->
saddr
[
0
];
/*
/*
* Firstly see if the entry exists
* Firstly see if the entry exists
...
@@ -395,7 +396,6 @@ printk("adding rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n",
...
@@ -395,7 +396,6 @@ printk("adding rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n",
entry
->
rcf
=
trh
->
rcf
&
htons
((
unsigned
short
)
~
TR_RCF_BROADCAST_MASK
);
entry
->
rcf
=
trh
->
rcf
&
htons
((
unsigned
short
)
~
TR_RCF_BROADCAST_MASK
);
memcpy
(
&
(
entry
->
rseg
[
0
]),
&
(
trh
->
rseg
[
0
]),
8
*
sizeof
(
unsigned
short
));
memcpy
(
&
(
entry
->
rseg
[
0
]),
&
(
trh
->
rseg
[
0
]),
8
*
sizeof
(
unsigned
short
));
entry
->
local_ring
=
0
;
entry
->
local_ring
=
0
;
trh
->
saddr
[
0
]
|=
TR_RII
;
/* put the routing indicator back for tcpdump */
}
}
else
else
{
{
...
@@ -422,6 +422,7 @@ printk("updating rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n",
...
@@ -422,6 +422,7 @@ printk("updating rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n",
}
}
entry
->
last_used
=
jiffies
;
entry
->
last_used
=
jiffies
;
}
}
trh
->
saddr
[
0
]
=
saddr0
;
/* put the routing indicator back for tcpdump */
spin_unlock_irqrestore
(
&
rif_lock
,
flags
);
spin_unlock_irqrestore
(
&
rif_lock
,
flags
);
}
}
...
...
net/core/neighbour.c
浏览文件 @
4c2cb58c
...
@@ -175,39 +175,10 @@ static void pneigh_queue_purge(struct sk_buff_head *list)
...
@@ -175,39 +175,10 @@ static void pneigh_queue_purge(struct sk_buff_head *list)
}
}
}
}
void
neigh_changeaddr
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
static
void
neigh_flush_dev
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
{
{
int
i
;
int
i
;
write_lock_bh
(
&
tbl
->
lock
);
for
(
i
=
0
;
i
<=
tbl
->
hash_mask
;
i
++
)
{
struct
neighbour
*
n
,
**
np
;
np
=
&
tbl
->
hash_buckets
[
i
];
while
((
n
=
*
np
)
!=
NULL
)
{
if
(
dev
&&
n
->
dev
!=
dev
)
{
np
=
&
n
->
next
;
continue
;
}
*
np
=
n
->
next
;
write_lock_bh
(
&
n
->
lock
);
n
->
dead
=
1
;
neigh_del_timer
(
n
);
write_unlock_bh
(
&
n
->
lock
);
neigh_release
(
n
);
}
}
write_unlock_bh
(
&
tbl
->
lock
);
}
int
neigh_ifdown
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
{
int
i
;
write_lock_bh
(
&
tbl
->
lock
);
for
(
i
=
0
;
i
<=
tbl
->
hash_mask
;
i
++
)
{
for
(
i
=
0
;
i
<=
tbl
->
hash_mask
;
i
++
)
{
struct
neighbour
*
n
,
**
np
=
&
tbl
->
hash_buckets
[
i
];
struct
neighbour
*
n
,
**
np
=
&
tbl
->
hash_buckets
[
i
];
...
@@ -243,7 +214,19 @@ int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev)
...
@@ -243,7 +214,19 @@ int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev)
neigh_release
(
n
);
neigh_release
(
n
);
}
}
}
}
}
void
neigh_changeaddr
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
{
write_lock_bh
(
&
tbl
->
lock
);
neigh_flush_dev
(
tbl
,
dev
);
write_unlock_bh
(
&
tbl
->
lock
);
}
int
neigh_ifdown
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
{
write_lock_bh
(
&
tbl
->
lock
);
neigh_flush_dev
(
tbl
,
dev
);
pneigh_ifdown
(
tbl
,
dev
);
pneigh_ifdown
(
tbl
,
dev
);
write_unlock_bh
(
&
tbl
->
lock
);
write_unlock_bh
(
&
tbl
->
lock
);
...
@@ -732,6 +715,7 @@ static inline void neigh_add_timer(struct neighbour *n, unsigned long when)
...
@@ -732,6 +715,7 @@ static inline void neigh_add_timer(struct neighbour *n, unsigned long when)
if
(
unlikely
(
mod_timer
(
&
n
->
timer
,
when
)))
{
if
(
unlikely
(
mod_timer
(
&
n
->
timer
,
when
)))
{
printk
(
"NEIGH: BUG, double timer add, state is %x
\n
"
,
printk
(
"NEIGH: BUG, double timer add, state is %x
\n
"
,
n
->
nud_state
);
n
->
nud_state
);
dump_stack
();
}
}
}
}
...
@@ -815,10 +799,10 @@ static void neigh_timer_handler(unsigned long arg)
...
@@ -815,10 +799,10 @@ static void neigh_timer_handler(unsigned long arg)
}
}
if
(
neigh
->
nud_state
&
NUD_IN_TIMER
)
{
if
(
neigh
->
nud_state
&
NUD_IN_TIMER
)
{
neigh_hold
(
neigh
);
if
(
time_before
(
next
,
jiffies
+
HZ
/
2
))
if
(
time_before
(
next
,
jiffies
+
HZ
/
2
))
next
=
jiffies
+
HZ
/
2
;
next
=
jiffies
+
HZ
/
2
;
neigh_add_timer
(
neigh
,
next
);
if
(
!
mod_timer
(
&
neigh
->
timer
,
next
))
neigh_hold
(
neigh
);
}
}
if
(
neigh
->
nud_state
&
(
NUD_INCOMPLETE
|
NUD_PROBE
))
{
if
(
neigh
->
nud_state
&
(
NUD_INCOMPLETE
|
NUD_PROBE
))
{
struct
sk_buff
*
skb
=
skb_peek
(
&
neigh
->
arp_queue
);
struct
sk_buff
*
skb
=
skb_peek
(
&
neigh
->
arp_queue
);
...
...
net/core/skbuff.c
浏览文件 @
4c2cb58c
...
@@ -410,6 +410,9 @@ struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask)
...
@@ -410,6 +410,9 @@ struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask)
C
(
nfct
);
C
(
nfct
);
nf_conntrack_get
(
skb
->
nfct
);
nf_conntrack_get
(
skb
->
nfct
);
C
(
nfctinfo
);
C
(
nfctinfo
);
#if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE)
C
(
ipvs_property
);
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
#ifdef CONFIG_BRIDGE_NETFILTER
C
(
nf_bridge
);
C
(
nf_bridge
);
nf_bridge_get
(
skb
->
nf_bridge
);
nf_bridge_get
(
skb
->
nf_bridge
);
...
@@ -467,6 +470,9 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
...
@@ -467,6 +470,9 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
new
->
nfct
=
old
->
nfct
;
new
->
nfct
=
old
->
nfct
;
nf_conntrack_get
(
old
->
nfct
);
nf_conntrack_get
(
old
->
nfct
);
new
->
nfctinfo
=
old
->
nfctinfo
;
new
->
nfctinfo
=
old
->
nfctinfo
;
#if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE)
new
->
ipvs_property
=
old
->
ipvs_property
;
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
#ifdef CONFIG_BRIDGE_NETFILTER
new
->
nf_bridge
=
old
->
nf_bridge
;
new
->
nf_bridge
=
old
->
nf_bridge
;
nf_bridge_get
(
old
->
nf_bridge
);
nf_bridge_get
(
old
->
nf_bridge
);
...
...
net/core/wireless.c
浏览文件 @
4c2cb58c
...
@@ -455,10 +455,15 @@ static inline struct iw_statistics *get_wireless_stats(struct net_device *dev)
...
@@ -455,10 +455,15 @@ static inline struct iw_statistics *get_wireless_stats(struct net_device *dev)
/* Old location, field to be removed in next WE */
/* Old location, field to be removed in next WE */
if
(
dev
->
get_wireless_stats
)
{
if
(
dev
->
get_wireless_stats
)
{
printk
(
KERN_DEBUG
"%s (WE) : Driver using old /proc/net/wireless support, please fix driver !
\n
"
,
static
int
printed_message
;
dev
->
name
);
if
(
!
printed_message
++
)
printk
(
KERN_DEBUG
"%s (WE) : Driver using old /proc/net/wireless support, please fix driver !
\n
"
,
dev
->
name
);
return
dev
->
get_wireless_stats
(
dev
);
return
dev
->
get_wireless_stats
(
dev
);
}
}
/* Not found */
/* Not found */
return
(
struct
iw_statistics
*
)
NULL
;
return
(
struct
iw_statistics
*
)
NULL
;
}
}
...
...
net/dccp/ipv4.c
浏览文件 @
4c2cb58c
...
@@ -463,6 +463,7 @@ static int dccp_v4_send_response(struct sock *sk, struct request_sock *req,
...
@@ -463,6 +463,7 @@ static int dccp_v4_send_response(struct sock *sk, struct request_sock *req,
if
(
skb
!=
NULL
)
{
if
(
skb
!=
NULL
)
{
const
struct
inet_request_sock
*
ireq
=
inet_rsk
(
req
);
const
struct
inet_request_sock
*
ireq
=
inet_rsk
(
req
);
memset
(
&
(
IPCB
(
skb
)
->
opt
),
0
,
sizeof
(
IPCB
(
skb
)
->
opt
));
err
=
ip_build_and_send_pkt
(
skb
,
sk
,
ireq
->
loc_addr
,
err
=
ip_build_and_send_pkt
(
skb
,
sk
,
ireq
->
loc_addr
,
ireq
->
rmt_addr
,
ireq
->
rmt_addr
,
ireq
->
opt
);
ireq
->
opt
);
...
@@ -647,6 +648,7 @@ int dccp_v4_send_reset(struct sock *sk, enum dccp_reset_codes code)
...
@@ -647,6 +648,7 @@ int dccp_v4_send_reset(struct sock *sk, enum dccp_reset_codes code)
if
(
skb
!=
NULL
)
{
if
(
skb
!=
NULL
)
{
const
struct
inet_sock
*
inet
=
inet_sk
(
sk
);
const
struct
inet_sock
*
inet
=
inet_sk
(
sk
);
memset
(
&
(
IPCB
(
skb
)
->
opt
),
0
,
sizeof
(
IPCB
(
skb
)
->
opt
));
err
=
ip_build_and_send_pkt
(
skb
,
sk
,
err
=
ip_build_and_send_pkt
(
skb
,
sk
,
inet
->
saddr
,
inet
->
daddr
,
NULL
);
inet
->
saddr
,
inet
->
daddr
,
NULL
);
if
(
err
==
NET_XMIT_CN
)
if
(
err
==
NET_XMIT_CN
)
...
...
net/dccp/output.c
浏览文件 @
4c2cb58c
...
@@ -62,10 +62,8 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
...
@@ -62,10 +62,8 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
skb
->
h
.
raw
=
skb_push
(
skb
,
dccp_header_size
);
skb
->
h
.
raw
=
skb_push
(
skb
,
dccp_header_size
);
dh
=
dccp_hdr
(
skb
);
dh
=
dccp_hdr
(
skb
);
/*
* Data packets are not cloned as they are never retransmitted
if
(
!
skb
->
sk
)
*/
if
(
skb_cloned
(
skb
))
skb_set_owner_w
(
skb
,
sk
);
skb_set_owner_w
(
skb
,
sk
);
/* Build DCCP header and checksum it. */
/* Build DCCP header and checksum it. */
...
@@ -102,6 +100,7 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
...
@@ -102,6 +100,7 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
DCCP_INC_STATS
(
DCCP_MIB_OUTSEGS
);
DCCP_INC_STATS
(
DCCP_MIB_OUTSEGS
);
memset
(
&
(
IPCB
(
skb
)
->
opt
),
0
,
sizeof
(
IPCB
(
skb
)
->
opt
));
err
=
ip_queue_xmit
(
skb
,
0
);
err
=
ip_queue_xmit
(
skb
,
0
);
if
(
err
<=
0
)
if
(
err
<=
0
)
return
err
;
return
err
;
...
@@ -243,7 +242,8 @@ int dccp_write_xmit(struct sock *sk, struct sk_buff *skb, long *timeo)
...
@@ -243,7 +242,8 @@ int dccp_write_xmit(struct sock *sk, struct sk_buff *skb, long *timeo)
err
=
dccp_transmit_skb
(
sk
,
skb
);
err
=
dccp_transmit_skb
(
sk
,
skb
);
ccid_hc_tx_packet_sent
(
dp
->
dccps_hc_tx_ccid
,
sk
,
0
,
len
);
ccid_hc_tx_packet_sent
(
dp
->
dccps_hc_tx_ccid
,
sk
,
0
,
len
);
}
}
else
kfree_skb
(
skb
);
return
err
;
return
err
;
}
}
...
...
net/dccp/proto.c
浏览文件 @
4c2cb58c
...
@@ -402,8 +402,6 @@ int dccp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
...
@@ -402,8 +402,6 @@ int dccp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
* This bug was _quickly_ found & fixed by just looking at an OSTRA
* This bug was _quickly_ found & fixed by just looking at an OSTRA
* generated callgraph 8) -acme
* generated callgraph 8) -acme
*/
*/
if
(
rc
!=
0
)
goto
out_discard
;
out_release:
out_release:
release_sock
(
sk
);
release_sock
(
sk
);
return
rc
?
:
len
;
return
rc
?
:
len
;
...
...
net/ipv4/ip_output.c
浏览文件 @
4c2cb58c
...
@@ -391,6 +391,9 @@ static void ip_copy_metadata(struct sk_buff *to, struct sk_buff *from)
...
@@ -391,6 +391,9 @@ static void ip_copy_metadata(struct sk_buff *to, struct sk_buff *from)
to
->
nfct
=
from
->
nfct
;
to
->
nfct
=
from
->
nfct
;
nf_conntrack_get
(
to
->
nfct
);
nf_conntrack_get
(
to
->
nfct
);
to
->
nfctinfo
=
from
->
nfctinfo
;
to
->
nfctinfo
=
from
->
nfctinfo
;
#if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE)
to
->
ipvs_property
=
from
->
ipvs_property
;
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
#ifdef CONFIG_BRIDGE_NETFILTER
nf_bridge_put
(
to
->
nf_bridge
);
nf_bridge_put
(
to
->
nf_bridge
);
to
->
nf_bridge
=
from
->
nf_bridge
;
to
->
nf_bridge
=
from
->
nf_bridge
;
...
...
net/ipv4/tcp_output.c
浏览文件 @
4c2cb58c
...
@@ -435,17 +435,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss
...
@@ -435,17 +435,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss
int
nsize
,
old_factor
;
int
nsize
,
old_factor
;
u16
flags
;
u16
flags
;
if
(
unlikely
(
len
>=
skb
->
len
))
{
BUG_ON
(
len
>
skb
->
len
);
if
(
net_ratelimit
())
{
printk
(
KERN_DEBUG
"TCP: seg_size=%u, mss=%u, seq=%u, "
"end_seq=%u, skb->len=%u.
\n
"
,
len
,
mss_now
,
TCP_SKB_CB
(
skb
)
->
seq
,
TCP_SKB_CB
(
skb
)
->
end_seq
,
skb
->
len
);
WARN_ON
(
1
);
}
return
0
;
}
nsize
=
skb_headlen
(
skb
)
-
len
;
nsize
=
skb_headlen
(
skb
)
-
len
;
if
(
nsize
<
0
)
if
(
nsize
<
0
)
nsize
=
0
;
nsize
=
0
;
...
...
net/ipv6/ip6_flowlabel.c
浏览文件 @
4c2cb58c
...
@@ -483,7 +483,7 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
...
@@ -483,7 +483,7 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
goto
done
;
goto
done
;
}
}
fl1
=
sfl
->
fl
;
fl1
=
sfl
->
fl
;
atomic_inc
(
&
fl
->
users
);
atomic_inc
(
&
fl
1
->
users
);
break
;
break
;
}
}
}
}
...
...
net/sunrpc/svcsock.c
浏览文件 @
4c2cb58c
...
@@ -584,7 +584,7 @@ svc_udp_recvfrom(struct svc_rqst *rqstp)
...
@@ -584,7 +584,7 @@ svc_udp_recvfrom(struct svc_rqst *rqstp)
struct
timeval
tv
;
struct
timeval
tv
;
tv
.
tv_sec
=
xtime
.
tv_sec
;
tv
.
tv_sec
=
xtime
.
tv_sec
;
tv
.
tv_usec
=
xtime
.
tv_nsec
*
1000
;
tv
.
tv_usec
=
xtime
.
tv_nsec
/
NSEC_PER_USEC
;
skb_set_timestamp
(
skb
,
&
tv
);
skb_set_timestamp
(
skb
,
&
tv
);
/* Don't enable netstamp, sunrpc doesn't
/* Don't enable netstamp, sunrpc doesn't
need that much accuracy */
need that much accuracy */
...
...
security/selinux/selinuxfs.c
浏览文件 @
4c2cb58c
...
@@ -879,7 +879,7 @@ static ssize_t sel_commit_bools_write(struct file *filep,
...
@@ -879,7 +879,7 @@ static ssize_t sel_commit_bools_write(struct file *filep,
if
(
sscanf
(
page
,
"%d"
,
&
new_value
)
!=
1
)
if
(
sscanf
(
page
,
"%d"
,
&
new_value
)
!=
1
)
goto
out
;
goto
out
;
if
(
new_value
)
{
if
(
new_value
&&
bool_pending_values
)
{
security_set_bools
(
bool_num
,
bool_pending_values
);
security_set_bools
(
bool_num
,
bool_pending_values
);
}
}
...
@@ -952,6 +952,7 @@ static int sel_make_bools(void)
...
@@ -952,6 +952,7 @@ static int sel_make_bools(void)
/* remove any existing files */
/* remove any existing files */
kfree
(
bool_pending_values
);
kfree
(
bool_pending_values
);
bool_pending_values
=
NULL
;
sel_remove_bools
(
dir
);
sel_remove_bools
(
dir
);
...
@@ -1002,6 +1003,7 @@ static int sel_make_bools(void)
...
@@ -1002,6 +1003,7 @@ static int sel_make_bools(void)
}
}
return
ret
;
return
ret
;
err:
err:
kfree
(
values
);
d_genocide
(
dir
);
d_genocide
(
dir
);
ret
=
-
ENOMEM
;
ret
=
-
ENOMEM
;
goto
out
;
goto
out
;
...
...
security/selinux/ss/policydb.c
浏览文件 @
4c2cb58c
...
@@ -650,8 +650,10 @@ void policydb_destroy(struct policydb *p)
...
@@ -650,8 +650,10 @@ void policydb_destroy(struct policydb *p)
}
}
if
(
lrt
)
kfree
(
lrt
);
if
(
lrt
)
kfree
(
lrt
);
for
(
i
=
0
;
i
<
p
->
p_types
.
nprim
;
i
++
)
if
(
p
->
type_attr_map
)
{
ebitmap_destroy
(
&
p
->
type_attr_map
[
i
]);
for
(
i
=
0
;
i
<
p
->
p_types
.
nprim
;
i
++
)
ebitmap_destroy
(
&
p
->
type_attr_map
[
i
]);
}
kfree
(
p
->
type_attr_map
);
kfree
(
p
->
type_attr_map
);
return
;
return
;
...
...
sound/core/init.c
浏览文件 @
4c2cb58c
...
@@ -828,7 +828,8 @@ static int snd_generic_suspend(struct device *dev, pm_message_t state, u32 level
...
@@ -828,7 +828,8 @@ static int snd_generic_suspend(struct device *dev, pm_message_t state, u32 level
card
=
get_snd_generic_card
(
dev
);
card
=
get_snd_generic_card
(
dev
);
if
(
card
->
power_state
==
SNDRV_CTL_POWER_D3hot
)
if
(
card
->
power_state
==
SNDRV_CTL_POWER_D3hot
)
return
0
;
return
0
;
card
->
pm_suspend
(
card
,
PMSG_SUSPEND
);
if
(
card
->
pm_suspend
)
card
->
pm_suspend
(
card
,
PMSG_SUSPEND
);
snd_power_change_state
(
card
,
SNDRV_CTL_POWER_D3hot
);
snd_power_change_state
(
card
,
SNDRV_CTL_POWER_D3hot
);
return
0
;
return
0
;
}
}
...
@@ -843,7 +844,8 @@ static int snd_generic_resume(struct device *dev, u32 level)
...
@@ -843,7 +844,8 @@ static int snd_generic_resume(struct device *dev, u32 level)
card
=
get_snd_generic_card
(
dev
);
card
=
get_snd_generic_card
(
dev
);
if
(
card
->
power_state
==
SNDRV_CTL_POWER_D0
)
if
(
card
->
power_state
==
SNDRV_CTL_POWER_D0
)
return
0
;
return
0
;
card
->
pm_resume
(
card
);
if
(
card
->
pm_suspend
)
card
->
pm_resume
(
card
);
snd_power_change_state
(
card
,
SNDRV_CTL_POWER_D0
);
snd_power_change_state
(
card
,
SNDRV_CTL_POWER_D0
);
return
0
;
return
0
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录