Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
cbc696a5
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
cbc696a5
编写于
5月 26, 2006
作者:
J
Jeff Garzik
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'upstream-fixes' into upstream
上级
d3f464b5
8fc29ba6
变更
37
隐藏空白更改
内联
并排
Showing
37 changed file
with
219 addition
and
178 deletion
+219
-178
MAINTAINERS
MAINTAINERS
+6
-0
Makefile
Makefile
+2
-2
arch/i386/kernel/syscall_table.S
arch/i386/kernel/syscall_table.S
+1
-0
arch/powerpc/platforms/powermac/setup.c
arch/powerpc/platforms/powermac/setup.c
+12
-0
arch/s390/kernel/time.c
arch/s390/kernel/time.c
+1
-1
drivers/char/tpm/tpm_tis.c
drivers/char/tpm/tpm_tis.c
+0
-4
drivers/i2c/busses/scx200_acb.c
drivers/i2c/busses/scx200_acb.c
+1
-1
drivers/infiniband/hw/ipath/ipath_driver.c
drivers/infiniband/hw/ipath/ipath_driver.c
+11
-11
drivers/infiniband/hw/ipath/ipath_eeprom.c
drivers/infiniband/hw/ipath/ipath_eeprom.c
+3
-4
drivers/infiniband/hw/ipath/ipath_file_ops.c
drivers/infiniband/hw/ipath/ipath_file_ops.c
+5
-1
drivers/infiniband/hw/ipath/ipath_ht400.c
drivers/infiniband/hw/ipath/ipath_ht400.c
+19
-2
drivers/infiniband/hw/ipath/ipath_init_chip.c
drivers/infiniband/hw/ipath/ipath_init_chip.c
+0
-1
drivers/infiniband/hw/ipath/ipath_kernel.h
drivers/infiniband/hw/ipath/ipath_kernel.h
+1
-1
drivers/infiniband/hw/ipath/ipath_keys.c
drivers/infiniband/hw/ipath/ipath_keys.c
+0
-6
drivers/infiniband/hw/ipath/ipath_layer.c
drivers/infiniband/hw/ipath/ipath_layer.c
+7
-5
drivers/infiniband/hw/ipath/ipath_pe800.c
drivers/infiniband/hw/ipath/ipath_pe800.c
+2
-0
drivers/infiniband/hw/ipath/ipath_qp.c
drivers/infiniband/hw/ipath/ipath_qp.c
+32
-32
drivers/infiniband/hw/ipath/ipath_rc.c
drivers/infiniband/hw/ipath/ipath_rc.c
+7
-8
drivers/infiniband/hw/ipath/ipath_ruc.c
drivers/infiniband/hw/ipath/ipath_ruc.c
+1
-1
drivers/infiniband/hw/ipath/ipath_verbs.c
drivers/infiniband/hw/ipath/ipath_verbs.c
+4
-3
drivers/infiniband/hw/mthca/mthca_srq.c
drivers/infiniband/hw/mthca/mthca_srq.c
+21
-20
drivers/input/touchscreen/ads7846.c
drivers/input/touchscreen/ads7846.c
+28
-25
drivers/md/md.c
drivers/md/md.c
+3
-1
drivers/media/common/Kconfig
drivers/media/common/Kconfig
+1
-1
drivers/media/dvb/pluto2/Kconfig
drivers/media/dvb/pluto2/Kconfig
+0
-1
drivers/mmc/mmc_block.c
drivers/mmc/mmc_block.c
+1
-1
drivers/net/irda/Kconfig
drivers/net/irda/Kconfig
+10
-10
drivers/net/wireless/arlan-main.c
drivers/net/wireless/arlan-main.c
+2
-2
drivers/net/wireless/wavelan.c
drivers/net/wireless/wavelan.c
+1
-1
drivers/scsi/libata-core.c
drivers/scsi/libata-core.c
+5
-0
drivers/spi/spi_s3c24xx.c
drivers/spi/spi_s3c24xx.c
+2
-2
fs/affs/namei.c
fs/affs/namei.c
+1
-2
fs/jfs/jfs_metapage.c
fs/jfs/jfs_metapage.c
+5
-15
include/asm-alpha/termbits.h
include/asm-alpha/termbits.h
+1
-0
include/asm-powerpc/termbits.h
include/asm-powerpc/termbits.h
+1
-0
net/core/dev.c
net/core/dev.c
+11
-9
net/ipv6/route.c
net/ipv6/route.c
+11
-5
未找到文件。
MAINTAINERS
浏览文件 @
cbc696a5
...
...
@@ -1905,6 +1905,12 @@ M: James.Bottomley@HansenPartnership.com
L: linux-scsi@vger.kernel.org
S: Maintained
NETEM NETWORK EMULATOR
P: Stephen Hemminger
M: shemminger@osdl.org
L: netem@osdl.org
S: Maintained
NETFILTER/IPTABLES/IPCHAINS
P: Rusty Russell
P: Marc Boucher
...
...
Makefile
浏览文件 @
cbc696a5
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
17
EXTRAVERSION
=
-rc
4
NAME
=
Sliding Snow Leopard
EXTRAVERSION
=
-rc
5
NAME
=
Lordi Rules
# *DOCUMENTATION*
# To see a list of typical targets execute "make help"
...
...
arch/i386/kernel/syscall_table.S
浏览文件 @
cbc696a5
...
...
@@ -315,3 +315,4 @@ ENTRY(sys_call_table)
.
long
sys_splice
.
long
sys_sync_file_range
.
long
sys_tee
/*
315
*/
.
long
sys_vmsplice
arch/powerpc/platforms/powermac/setup.c
浏览文件 @
cbc696a5
...
...
@@ -463,11 +463,23 @@ static int pmac_pm_finish(suspend_state_t state)
return
0
;
}
static
int
pmac_pm_valid
(
suspend_state_t
state
)
{
switch
(
state
)
{
case
PM_SUSPEND_DISK
:
return
1
;
/* can't do any other states via generic mechanism yet */
default:
return
0
;
}
}
static
struct
pm_ops
pmac_pm_ops
=
{
.
pm_disk_mode
=
PM_DISK_SHUTDOWN
,
.
prepare
=
pmac_pm_prepare
,
.
enter
=
pmac_pm_enter
,
.
finish
=
pmac_pm_finish
,
.
valid
=
pmac_pm_valid
,
};
#endif
/* CONFIG_SOFTWARE_SUSPEND */
...
...
arch/s390/kernel/time.c
浏览文件 @
cbc696a5
...
...
@@ -272,7 +272,7 @@ static inline void stop_hz_timer(void)
next
=
next_timer_interrupt
();
do
{
seq
=
read_seqbegin_irqsave
(
&
xtime_lock
,
flags
);
timer
=
(
__u64
next
)
-
(
__u64
jiffies
)
+
jiffies_64
;
timer
=
(
(
__u64
)
next
)
-
((
__u64
)
jiffies
)
+
jiffies_64
;
}
while
(
read_seqretry_irqrestore
(
&
xtime_lock
,
seq
,
flags
));
todval
=
-
1ULL
;
/* Be careful about overflows. */
...
...
drivers/char/tpm/tpm_tis.c
浏览文件 @
cbc696a5
...
...
@@ -457,10 +457,6 @@ static int __devinit tpm_tis_pnp_init(struct pnp_dev *pnp_dev,
}
vendor
=
ioread32
(
chip
->
vendor
.
iobase
+
TPM_DID_VID
(
0
));
if
((
vendor
&
0xFFFF
)
==
0xFFFF
)
{
rc
=
-
ENODEV
;
goto
out_err
;
}
/* Default timeouts */
chip
->
vendor
.
timeout_a
=
msecs_to_jiffies
(
TIS_SHORT_TIMEOUT
);
...
...
drivers/i2c/busses/scx200_acb.c
浏览文件 @
cbc696a5
...
...
@@ -491,7 +491,7 @@ static struct pci_device_id divil_pci[] = {
#define MSR_LBAR_SMB 0x5140000B
static
int
scx200_add_cs553x
(
void
)
static
__init
int
scx200_add_cs553x
(
void
)
{
u32
low
,
hi
;
u32
smb_base
;
...
...
drivers/infiniband/hw/ipath/ipath_driver.c
浏览文件 @
cbc696a5
...
...
@@ -1905,19 +1905,19 @@ static void __exit infinipath_cleanup(void)
}
else
ipath_dbg
(
"irq is 0, not doing free_irq "
"for unit %u
\n
"
,
dd
->
ipath_unit
);
dd
->
pcidev
=
NULL
;
}
/*
* we check for NULL here, because it's outside the kregbas
e
* check, and we need to call it after the free_irq. Thus
* it's possible that the function pointers were never
*
initialized.
*/
if
(
dd
->
ipath_f_cleanup
)
/* clean up chip-specific stuff */
dd
->
ipath_f_cleanup
(
dd
);
/*
* we check for NULL here, because it's outsid
e
* the kregbase check, and we need to call it
* after the free_irq. Thus it's possible that
* the function pointers were never
initialized.
*/
if
(
dd
->
ipath_f_cleanup
)
/* clean up chip-specific stuff */
dd
->
ipath_f_cleanup
(
dd
);
dd
->
pcidev
=
NULL
;
}
spin_lock_irqsave
(
&
ipath_devs_lock
,
flags
);
}
...
...
drivers/infiniband/hw/ipath/ipath_eeprom.c
浏览文件 @
cbc696a5
...
...
@@ -505,11 +505,10 @@ static u8 flash_csum(struct ipath_flash *ifp, int adjust)
* ipath_get_guid - get the GUID from the i2c device
* @dd: the infinipath device
*
* When we add the multi-chip support, we will probably have to add
* the ability to use the number of guids field, and get the guid from
* the first chip's flash, to use for all of them.
* We have the capability to use the ipath_nguid field, and get
* the guid from the first chip's flash, to use for all of them.
*/
void
ipath_get_
guid
(
struct
ipath_devdata
*
dd
)
void
ipath_get_
eeprom_info
(
struct
ipath_devdata
*
dd
)
{
void
*
buf
;
struct
ipath_flash
*
ifp
;
...
...
drivers/infiniband/hw/ipath/ipath_file_ops.c
浏览文件 @
cbc696a5
...
...
@@ -139,7 +139,7 @@ static int ipath_get_base_info(struct ipath_portdata *pd,
kinfo
->
spi_piosize
=
dd
->
ipath_ibmaxlen
;
kinfo
->
spi_mtu
=
dd
->
ipath_ibmaxlen
;
/* maxlen, not ibmtu */
kinfo
->
spi_port
=
pd
->
port_port
;
kinfo
->
spi_sw_version
=
IPATH_
USER
_SWVERSION
;
kinfo
->
spi_sw_version
=
IPATH_
KERN
_SWVERSION
;
kinfo
->
spi_hw_version
=
dd
->
ipath_revision
;
if
(
copy_to_user
(
ubase
,
kinfo
,
sizeof
(
*
kinfo
)))
...
...
@@ -1224,6 +1224,10 @@ static unsigned int ipath_poll(struct file *fp,
if
(
tail
==
head
)
{
set_bit
(
IPATH_PORT_WAITING_RCV
,
&
pd
->
port_flag
);
if
(
dd
->
ipath_rhdrhead_intr_off
)
/* arm rcv interrupt */
(
void
)
ipath_write_ureg
(
dd
,
ur_rcvhdrhead
,
dd
->
ipath_rhdrhead_intr_off
|
head
,
pd
->
port_port
);
poll_wait
(
fp
,
&
pd
->
port_wait
,
pt
);
if
(
test_bit
(
IPATH_PORT_WAITING_RCV
,
&
pd
->
port_flag
))
{
...
...
drivers/infiniband/hw/ipath/ipath_ht400.c
浏览文件 @
cbc696a5
...
...
@@ -607,7 +607,12 @@ static int ipath_ht_boardname(struct ipath_devdata *dd, char *name,
case
4
:
/* Ponderosa is one of the bringup boards */
n
=
"Ponderosa"
;
break
;
case
5
:
/* HT-460 original production board */
case
5
:
/*
* HT-460 original production board; two production levels, with
* different serial number ranges. See ipath_ht_early_init() for
* case where we enable IPATH_GPIO_INTR for later serial # range.
*/
n
=
"InfiniPath_HT-460"
;
break
;
case
6
:
...
...
@@ -642,7 +647,7 @@ static int ipath_ht_boardname(struct ipath_devdata *dd, char *name,
if
(
n
)
snprintf
(
name
,
namelen
,
"%s"
,
n
);
if
(
dd
->
ipath_majrev
!=
3
||
dd
->
ipath_minrev
!=
2
)
{
if
(
dd
->
ipath_majrev
!=
3
||
(
dd
->
ipath_minrev
<
2
||
dd
->
ipath_minrev
>
3
)
)
{
/*
* This version of the driver only supports the HT-400
* Rev 3.2
...
...
@@ -1520,6 +1525,18 @@ static int ipath_ht_early_init(struct ipath_devdata *dd)
*/
ipath_write_kreg
(
dd
,
dd
->
ipath_kregs
->
kr_sendctrl
,
INFINIPATH_S_ABORT
);
ipath_get_eeprom_info
(
dd
);
if
(
dd
->
ipath_boardrev
==
5
&&
dd
->
ipath_serial
[
0
]
==
'1'
&&
dd
->
ipath_serial
[
1
]
==
'2'
&&
dd
->
ipath_serial
[
2
]
==
'8'
)
{
/*
* Later production HT-460 has same changes as HT-465, so
* can use GPIO interrupts. They have serial #'s starting
* with 128, rather than 112.
*/
dd
->
ipath_flags
|=
IPATH_GPIO_INTR
;
dd
->
ipath_flags
&=
~
IPATH_POLL_RX_INTR
;
}
return
0
;
}
...
...
drivers/infiniband/hw/ipath/ipath_init_chip.c
浏览文件 @
cbc696a5
...
...
@@ -879,7 +879,6 @@ int ipath_init_chip(struct ipath_devdata *dd, int reinit)
done:
if
(
!
ret
)
{
ipath_get_guid
(
dd
);
*
dd
->
ipath_statusp
|=
IPATH_STATUS_CHIP_PRESENT
;
if
(
!
dd
->
ipath_f_intrsetup
(
dd
))
{
/* now we can enable all interrupts from the chip */
...
...
drivers/infiniband/hw/ipath/ipath_kernel.h
浏览文件 @
cbc696a5
...
...
@@ -650,7 +650,7 @@ u32 __iomem *ipath_getpiobuf(struct ipath_devdata *, u32 *);
void
ipath_init_pe800_funcs
(
struct
ipath_devdata
*
);
/* init HT-400-specific func */
void
ipath_init_ht400_funcs
(
struct
ipath_devdata
*
);
void
ipath_get_
guid
(
struct
ipath_devdata
*
);
void
ipath_get_
eeprom_info
(
struct
ipath_devdata
*
);
u64
ipath_snap_cntr
(
struct
ipath_devdata
*
,
ipath_creg
);
/*
...
...
drivers/infiniband/hw/ipath/ipath_keys.c
浏览文件 @
cbc696a5
...
...
@@ -136,9 +136,7 @@ int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge,
ret
=
1
;
goto
bail
;
}
spin_lock
(
&
rkt
->
lock
);
mr
=
rkt
->
table
[(
sge
->
lkey
>>
(
32
-
ib_ipath_lkey_table_size
))];
spin_unlock
(
&
rkt
->
lock
);
if
(
unlikely
(
mr
==
NULL
||
mr
->
lkey
!=
sge
->
lkey
))
{
ret
=
0
;
goto
bail
;
...
...
@@ -184,8 +182,6 @@ int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge,
* @acc: access flags
*
* Return 1 if successful, otherwise 0.
*
* The QP r_rq.lock should be held.
*/
int
ipath_rkey_ok
(
struct
ipath_ibdev
*
dev
,
struct
ipath_sge_state
*
ss
,
u32
len
,
u64
vaddr
,
u32
rkey
,
int
acc
)
...
...
@@ -196,9 +192,7 @@ int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss,
size_t
off
;
int
ret
;
spin_lock
(
&
rkt
->
lock
);
mr
=
rkt
->
table
[(
rkey
>>
(
32
-
ib_ipath_lkey_table_size
))];
spin_unlock
(
&
rkt
->
lock
);
if
(
unlikely
(
mr
==
NULL
||
mr
->
lkey
!=
rkey
))
{
ret
=
0
;
goto
bail
;
...
...
drivers/infiniband/hw/ipath/ipath_layer.c
浏览文件 @
cbc696a5
...
...
@@ -872,12 +872,13 @@ static void copy_io(u32 __iomem *piobuf, struct ipath_sge_state *ss,
update_sge
(
ss
,
len
);
length
-=
len
;
}
/* Update address before sending packet. */
update_sge
(
ss
,
length
);
/* must flush early everything before trigger word */
ipath_flush_wc
();
__raw_writel
(
last
,
piobuf
);
/* be sure trigger word is written */
ipath_flush_wc
();
update_sge
(
ss
,
length
);
}
/**
...
...
@@ -943,17 +944,18 @@ int ipath_verbs_send(struct ipath_devdata *dd, u32 hdrwords,
if
(
likely
(
ss
->
num_sge
==
1
&&
len
<=
ss
->
sge
.
length
&&
!
((
unsigned
long
)
ss
->
sge
.
vaddr
&
(
sizeof
(
u32
)
-
1
))))
{
u32
w
;
u32
*
addr
=
(
u32
*
)
ss
->
sge
.
vaddr
;
/* Update address before sending packet. */
update_sge
(
ss
,
len
);
/* Need to round up for the last dword in the packet. */
w
=
(
len
+
3
)
>>
2
;
__iowrite32_copy
(
piobuf
,
ss
->
sge
.
v
addr
,
w
-
1
);
__iowrite32_copy
(
piobuf
,
addr
,
w
-
1
);
/* must flush early everything before trigger word */
ipath_flush_wc
();
__raw_writel
(((
u32
*
)
ss
->
sge
.
vaddr
)[
w
-
1
],
piobuf
+
w
-
1
);
__raw_writel
(
addr
[
w
-
1
],
piobuf
+
w
-
1
);
/* be sure trigger word is written */
ipath_flush_wc
();
update_sge
(
ss
,
len
);
ret
=
0
;
goto
bail
;
}
...
...
drivers/infiniband/hw/ipath/ipath_pe800.c
浏览文件 @
cbc696a5
...
...
@@ -1180,6 +1180,8 @@ static int ipath_pe_early_init(struct ipath_devdata *dd)
*/
dd
->
ipath_rhdrhead_intr_off
=
1ULL
<<
32
;
ipath_get_eeprom_info
(
dd
);
return
0
;
}
...
...
drivers/infiniband/hw/ipath/ipath_qp.c
浏览文件 @
cbc696a5
...
...
@@ -375,10 +375,10 @@ static void ipath_error_qp(struct ipath_qp *qp)
spin_lock
(
&
dev
->
pending_lock
);
/* XXX What if its already removed by the timeout code? */
if
(
qp
->
timerwait
.
next
!=
LIST_POISON1
)
list_del
(
&
qp
->
timerwait
);
if
(
qp
->
piowait
.
next
!=
LIST_POISON1
)
list_del
(
&
qp
->
piowait
);
if
(
!
list_empty
(
&
qp
->
timerwait
)
)
list_del
_init
(
&
qp
->
timerwait
);
if
(
!
list_empty
(
&
qp
->
piowait
)
)
list_del
_init
(
&
qp
->
piowait
);
spin_unlock
(
&
dev
->
pending_lock
);
wc
.
status
=
IB_WC_WR_FLUSH_ERR
;
...
...
@@ -427,6 +427,7 @@ static void ipath_error_qp(struct ipath_qp *qp)
int
ipath_modify_qp
(
struct
ib_qp
*
ibqp
,
struct
ib_qp_attr
*
attr
,
int
attr_mask
)
{
struct
ipath_ibdev
*
dev
=
to_idev
(
ibqp
->
device
);
struct
ipath_qp
*
qp
=
to_iqp
(
ibqp
);
enum
ib_qp_state
cur_state
,
new_state
;
unsigned
long
flags
;
...
...
@@ -443,6 +444,19 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
attr_mask
))
goto
inval
;
if
(
attr_mask
&
IB_QP_AV
)
if
(
attr
->
ah_attr
.
dlid
==
0
||
attr
->
ah_attr
.
dlid
>=
IPS_MULTICAST_LID_BASE
)
goto
inval
;
if
(
attr_mask
&
IB_QP_PKEY_INDEX
)
if
(
attr
->
pkey_index
>=
ipath_layer_get_npkeys
(
dev
->
dd
))
goto
inval
;
if
(
attr_mask
&
IB_QP_MIN_RNR_TIMER
)
if
(
attr
->
min_rnr_timer
>
31
)
goto
inval
;
switch
(
new_state
)
{
case
IB_QPS_RESET
:
ipath_reset_qp
(
qp
);
...
...
@@ -457,13 +471,8 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
}
if
(
attr_mask
&
IB_QP_PKEY_INDEX
)
{
struct
ipath_ibdev
*
dev
=
to_idev
(
ibqp
->
device
);
if
(
attr
->
pkey_index
>=
ipath_layer_get_npkeys
(
dev
->
dd
))
goto
inval
;
if
(
attr_mask
&
IB_QP_PKEY_INDEX
)
qp
->
s_pkey_index
=
attr
->
pkey_index
;
}
if
(
attr_mask
&
IB_QP_DEST_QPN
)
qp
->
remote_qpn
=
attr
->
dest_qp_num
;
...
...
@@ -479,12 +488,8 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
if
(
attr_mask
&
IB_QP_ACCESS_FLAGS
)
qp
->
qp_access_flags
=
attr
->
qp_access_flags
;
if
(
attr_mask
&
IB_QP_AV
)
{
if
(
attr
->
ah_attr
.
dlid
==
0
||
attr
->
ah_attr
.
dlid
>=
IPS_MULTICAST_LID_BASE
)
goto
inval
;
if
(
attr_mask
&
IB_QP_AV
)
qp
->
remote_ah_attr
=
attr
->
ah_attr
;
}
if
(
attr_mask
&
IB_QP_PATH_MTU
)
qp
->
path_mtu
=
attr
->
path_mtu
;
...
...
@@ -499,11 +504,8 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
qp
->
s_rnr_retry_cnt
=
qp
->
s_rnr_retry
;
}
if
(
attr_mask
&
IB_QP_MIN_RNR_TIMER
)
{
if
(
attr
->
min_rnr_timer
>
31
)
goto
inval
;
if
(
attr_mask
&
IB_QP_MIN_RNR_TIMER
)
qp
->
s_min_rnr_timer
=
attr
->
min_rnr_timer
;
}
if
(
attr_mask
&
IB_QP_QKEY
)
qp
->
qkey
=
attr
->
qkey
;
...
...
@@ -710,10 +712,8 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
init_attr
->
qp_type
==
IB_QPT_RC
?
ipath_do_rc_send
:
ipath_do_uc_send
,
(
unsigned
long
)
qp
);
qp
->
piowait
.
next
=
LIST_POISON1
;
qp
->
piowait
.
prev
=
LIST_POISON2
;
qp
->
timerwait
.
next
=
LIST_POISON1
;
qp
->
timerwait
.
prev
=
LIST_POISON2
;
INIT_LIST_HEAD
(
&
qp
->
piowait
);
INIT_LIST_HEAD
(
&
qp
->
timerwait
);
qp
->
state
=
IB_QPS_RESET
;
qp
->
s_wq
=
swq
;
qp
->
s_size
=
init_attr
->
cap
.
max_send_wr
+
1
;
...
...
@@ -734,7 +734,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
ipath_reset_qp
(
qp
);
/* Tell the core driver that the kernel SMA is present. */
if
(
qp
->
ibqp
.
qp_type
==
IB_QPT_SMI
)
if
(
init_attr
->
qp_type
==
IB_QPT_SMI
)
ipath_layer_set_verbs_flags
(
dev
->
dd
,
IPATH_VERBS_KERNEL_SMA
);
break
;
...
...
@@ -783,10 +783,10 @@ int ipath_destroy_qp(struct ib_qp *ibqp)
/* Make sure the QP isn't on the timeout list. */
spin_lock_irqsave
(
&
dev
->
pending_lock
,
flags
);
if
(
qp
->
timerwait
.
next
!=
LIST_POISON1
)
list_del
(
&
qp
->
timerwait
);
if
(
qp
->
piowait
.
next
!=
LIST_POISON1
)
list_del
(
&
qp
->
piowait
);
if
(
!
list_empty
(
&
qp
->
timerwait
)
)
list_del
_init
(
&
qp
->
timerwait
);
if
(
!
list_empty
(
&
qp
->
piowait
)
)
list_del
_init
(
&
qp
->
piowait
);
spin_unlock_irqrestore
(
&
dev
->
pending_lock
,
flags
);
/*
...
...
@@ -855,10 +855,10 @@ void ipath_sqerror_qp(struct ipath_qp *qp, struct ib_wc *wc)
spin_lock
(
&
dev
->
pending_lock
);
/* XXX What if its already removed by the timeout code? */
if
(
qp
->
timerwait
.
next
!=
LIST_POISON1
)
list_del
(
&
qp
->
timerwait
);
if
(
qp
->
piowait
.
next
!=
LIST_POISON1
)
list_del
(
&
qp
->
piowait
);
if
(
!
list_empty
(
&
qp
->
timerwait
)
)
list_del
_init
(
&
qp
->
timerwait
);
if
(
!
list_empty
(
&
qp
->
piowait
)
)
list_del
_init
(
&
qp
->
piowait
);
spin_unlock
(
&
dev
->
pending_lock
);
ipath_cq_enter
(
to_icq
(
qp
->
ibqp
.
send_cq
),
wc
,
1
);
...
...
drivers/infiniband/hw/ipath/ipath_rc.c
浏览文件 @
cbc696a5
...
...
@@ -57,7 +57,7 @@ static void ipath_init_restart(struct ipath_qp *qp, struct ipath_swqe *wqe)
qp
->
s_len
=
wqe
->
length
-
len
;
dev
=
to_idev
(
qp
->
ibqp
.
device
);
spin_lock
(
&
dev
->
pending_lock
);
if
(
qp
->
timerwait
.
next
==
LIST_POISON1
)
if
(
list_empty
(
&
qp
->
timerwait
)
)
list_add_tail
(
&
qp
->
timerwait
,
&
dev
->
pending
[
dev
->
pending_index
]);
spin_unlock
(
&
dev
->
pending_lock
);
...
...
@@ -356,7 +356,7 @@ static inline int ipath_make_rc_req(struct ipath_qp *qp,
if
((
int
)(
qp
->
s_psn
-
qp
->
s_next_psn
)
>
0
)
qp
->
s_next_psn
=
qp
->
s_psn
;
spin_lock
(
&
dev
->
pending_lock
);
if
(
qp
->
timerwait
.
next
==
LIST_POISON1
)
if
(
list_empty
(
&
qp
->
timerwait
)
)
list_add_tail
(
&
qp
->
timerwait
,
&
dev
->
pending
[
dev
->
pending_index
]);
spin_unlock
(
&
dev
->
pending_lock
);
...
...
@@ -726,8 +726,8 @@ void ipath_restart_rc(struct ipath_qp *qp, u32 psn, struct ib_wc *wc)
*/
dev
=
to_idev
(
qp
->
ibqp
.
device
);
spin_lock
(
&
dev
->
pending_lock
);
if
(
qp
->
timerwait
.
next
!=
LIST_POISON1
)
list_del
(
&
qp
->
timerwait
);
if
(
!
list_empty
(
&
qp
->
timerwait
)
)
list_del
_init
(
&
qp
->
timerwait
);
spin_unlock
(
&
dev
->
pending_lock
);
if
(
wqe
->
wr
.
opcode
==
IB_WR_RDMA_READ
)
...
...
@@ -886,8 +886,8 @@ static int do_rc_ack(struct ipath_qp *qp, u32 aeth, u32 psn, int opcode)
* just won't find anything to restart if we ACK everything.
*/
spin_lock
(
&
dev
->
pending_lock
);
if
(
qp
->
timerwait
.
next
!=
LIST_POISON1
)
list_del
(
&
qp
->
timerwait
);
if
(
!
list_empty
(
&
qp
->
timerwait
)
)
list_del
_init
(
&
qp
->
timerwait
);
spin_unlock
(
&
dev
->
pending_lock
);
/*
...
...
@@ -1194,8 +1194,7 @@ static inline void ipath_rc_rcv_resp(struct ipath_ibdev *dev,
IB_WR_RDMA_READ
))
goto
ack_done
;
spin_lock
(
&
dev
->
pending_lock
);
if
(
qp
->
s_rnr_timeout
==
0
&&
qp
->
timerwait
.
next
!=
LIST_POISON1
)
if
(
qp
->
s_rnr_timeout
==
0
&&
!
list_empty
(
&
qp
->
timerwait
))
list_move_tail
(
&
qp
->
timerwait
,
&
dev
->
pending
[
dev
->
pending_index
]);
spin_unlock
(
&
dev
->
pending_lock
);
...
...
drivers/infiniband/hw/ipath/ipath_ruc.c
浏览文件 @
cbc696a5
...
...
@@ -435,7 +435,7 @@ void ipath_no_bufs_available(struct ipath_qp *qp, struct ipath_ibdev *dev)
unsigned
long
flags
;
spin_lock_irqsave
(
&
dev
->
pending_lock
,
flags
);
if
(
qp
->
piowait
.
next
==
LIST_POISON1
)
if
(
list_empty
(
&
qp
->
piowait
)
)
list_add_tail
(
&
qp
->
piowait
,
&
dev
->
piowait
);
spin_unlock_irqrestore
(
&
dev
->
pending_lock
,
flags
);
/*
...
...
drivers/infiniband/hw/ipath/ipath_verbs.c
浏览文件 @
cbc696a5
...
...
@@ -464,7 +464,7 @@ static void ipath_ib_timer(void *arg)
last
=
&
dev
->
pending
[
dev
->
pending_index
];
while
(
!
list_empty
(
last
))
{
qp
=
list_entry
(
last
->
next
,
struct
ipath_qp
,
timerwait
);
list_del
(
&
qp
->
timerwait
);
list_del
_init
(
&
qp
->
timerwait
);
qp
->
timer_next
=
resend
;
resend
=
qp
;
atomic_inc
(
&
qp
->
refcount
);
...
...
@@ -474,7 +474,7 @@ static void ipath_ib_timer(void *arg)
qp
=
list_entry
(
last
->
next
,
struct
ipath_qp
,
timerwait
);
if
(
--
qp
->
s_rnr_timeout
==
0
)
{
do
{
list_del
(
&
qp
->
timerwait
);
list_del
_init
(
&
qp
->
timerwait
);
tasklet_hi_schedule
(
&
qp
->
s_task
);
if
(
list_empty
(
last
))
break
;
...
...
@@ -554,7 +554,7 @@ static int ipath_ib_piobufavail(void *arg)
while
(
!
list_empty
(
&
dev
->
piowait
))
{
qp
=
list_entry
(
dev
->
piowait
.
next
,
struct
ipath_qp
,
piowait
);
list_del
(
&
qp
->
piowait
);
list_del
_init
(
&
qp
->
piowait
);
tasklet_hi_schedule
(
&
qp
->
s_task
);
}
spin_unlock_irqrestore
(
&
dev
->
pending_lock
,
flags
);
...
...
@@ -951,6 +951,7 @@ static void *ipath_register_ib_device(int unit, struct ipath_devdata *dd)
idev
->
dd
=
dd
;
strlcpy
(
dev
->
name
,
"ipath%d"
,
IB_DEVICE_NAME_MAX
);
dev
->
owner
=
THIS_MODULE
;
dev
->
node_guid
=
ipath_layer_get_guid
(
dd
);
dev
->
uverbs_abi_ver
=
IPATH_UVERBS_ABI_VERSION
;
dev
->
uverbs_cmd_mask
=
...
...
drivers/infiniband/hw/mthca/mthca_srq.c
浏览文件 @
cbc696a5
...
...
@@ -490,26 +490,7 @@ int mthca_tavor_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
first_ind
=
srq
->
first_free
;
for
(
nreq
=
0
;
wr
;
++
nreq
,
wr
=
wr
->
next
)
{
if
(
unlikely
(
nreq
==
MTHCA_TAVOR_MAX_WQES_PER_RECV_DB
))
{
nreq
=
0
;
doorbell
[
0
]
=
cpu_to_be32
(
first_ind
<<
srq
->
wqe_shift
);
doorbell
[
1
]
=
cpu_to_be32
(
srq
->
srqn
<<
8
);
/*
* Make sure that descriptors are written
* before doorbell is rung.
*/
wmb
();
mthca_write64
(
doorbell
,
dev
->
kar
+
MTHCA_RECEIVE_DOORBELL
,
MTHCA_GET_DOORBELL_LOCK
(
&
dev
->
doorbell_lock
));
first_ind
=
srq
->
first_free
;
}
for
(
nreq
=
0
;
wr
;
wr
=
wr
->
next
)
{
ind
=
srq
->
first_free
;
if
(
ind
<
0
)
{
...
...
@@ -569,6 +550,26 @@ int mthca_tavor_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
srq
->
wrid
[
ind
]
=
wr
->
wr_id
;
srq
->
first_free
=
next_ind
;
++
nreq
;
if
(
unlikely
(
nreq
==
MTHCA_TAVOR_MAX_WQES_PER_RECV_DB
))
{
nreq
=
0
;
doorbell
[
0
]
=
cpu_to_be32
(
first_ind
<<
srq
->
wqe_shift
);
doorbell
[
1
]
=
cpu_to_be32
(
srq
->
srqn
<<
8
);
/*
* Make sure that descriptors are written
* before doorbell is rung.
*/
wmb
();
mthca_write64
(
doorbell
,
dev
->
kar
+
MTHCA_RECEIVE_DOORBELL
,
MTHCA_GET_DOORBELL_LOCK
(
&
dev
->
doorbell_lock
));
first_ind
=
srq
->
first_free
;
}
}
if
(
likely
(
nreq
))
{
...
...
drivers/input/touchscreen/ads7846.c
浏览文件 @
cbc696a5
...
...
@@ -36,13 +36,10 @@
/*
* This code has been tested on an ads7846 / N770 device.
* This code has been heavily tested on a Nokia 770, and lightly
* tested on other ads7846 devices (OSK/Mistral, Lubbock).
* Support for ads7843 and ads7845 has only been stubbed in.
*
* Not yet done: How accurate are the temperature and voltage
* readings? (System-specific calibration should support
* accuracy of 0.3 degrees C; otherwise it's 2.0 degrees.)
*
* IRQ handling needs a workaround because of a shortcoming in handling
* edge triggered IRQs on some platforms like the OMAP1/2. These
* platforms don't handle the ARM lazy IRQ disabling properly, thus we
...
...
@@ -248,10 +245,13 @@ static int ads7846_read12_ser(struct device *dev, unsigned command)
if
(
req
->
msg
.
status
)
status
=
req
->
msg
.
status
;
/* on-wire is a must-ignore bit, a BE12 value, then padding */
sample
=
be16_to_cpu
(
req
->
sample
);
sample
=
sample
>>
4
;
kfree
(
req
)
;
sample
=
sample
>>
3
;
sample
&=
0x0fff
;
kfree
(
req
);
return
status
?
status
:
sample
;
}
...
...
@@ -336,13 +336,13 @@ static void ads7846_rx(void *ads)
u16
x
,
y
,
z1
,
z2
;
unsigned
long
flags
;
/* adjust:
12 bit samples (left aligned), built from
*
two 8 bit values wri
ten msb-first.
/* adjust:
on-wire is a must-ignore bit, a BE12 value, then padding;
*
built from two 8 bit values writ
ten msb-first.
*/
x
=
be16_to_cpu
(
ts
->
tc
.
x
)
>>
4
;
y
=
be16_to_cpu
(
ts
->
tc
.
y
)
>>
4
;
z1
=
be16_to_cpu
(
ts
->
tc
.
z1
)
>>
4
;
z2
=
be16_to_cpu
(
ts
->
tc
.
z2
)
>>
4
;
x
=
(
be16_to_cpu
(
ts
->
tc
.
x
)
>>
3
)
&
0x0fff
;
y
=
(
be16_to_cpu
(
ts
->
tc
.
y
)
>>
3
)
&
0x0fff
;
z1
=
(
be16_to_cpu
(
ts
->
tc
.
z1
)
>>
3
)
&
0x0fff
;
z2
=
(
be16_to_cpu
(
ts
->
tc
.
z2
)
>>
3
)
&
0x0fff
;
/* range filtering */
if
(
x
==
MAX_12BIT
)
...
...
@@ -420,7 +420,7 @@ static void ads7846_debounce(void *ads)
m
=
&
ts
->
msg
[
ts
->
msg_idx
];
t
=
list_entry
(
m
->
transfers
.
prev
,
struct
spi_transfer
,
transfer_list
);
val
=
(
*
(
u16
*
)
t
->
rx_buf
)
>>
3
;
val
=
(
be16_to_cpu
(
*
(
__be16
*
)
t
->
rx_buf
)
>>
3
)
&
0x0fff
;
if
(
!
ts
->
read_cnt
||
(
abs
(
ts
->
last_read
-
val
)
>
ts
->
debounce_tol
))
{
/* Repeat it, if this was the first read or the read
* wasn't consistent enough. */
...
...
@@ -469,7 +469,7 @@ static void ads7846_timer(unsigned long handle)
spin_lock_irq
(
&
ts
->
lock
);
if
(
unlikely
(
ts
->
msg_idx
&&
!
ts
->
pendown
))
{
/* measurment cycle ended */
/* measur
e
ment cycle ended */
if
(
!
device_suspended
(
&
ts
->
spi
->
dev
))
{
ts
->
irq_disabled
=
0
;
enable_irq
(
ts
->
spi
->
irq
);
...
...
@@ -495,11 +495,10 @@ static irqreturn_t ads7846_irq(int irq, void *handle, struct pt_regs *regs)
spin_lock_irqsave
(
&
ts
->
lock
,
flags
);
if
(
likely
(
ts
->
get_pendown_state
()))
{
if
(
!
ts
->
irq_disabled
)
{
/* REVISIT irq logic for many ARM chips has cloned a
* bug wherein disabling an irq in its handler won't
* work;(it's disabled lazily, and too late to work.
* until all their irq logic is fixed, we must shadow
* that state here.
/* The ARM do_simple_IRQ() dispatcher doesn't act
* like the other dispatchers: it will report IRQs
* even after they've been disabled. We work around
* that here. (The "generic irq" framework may help...)
*/
ts
->
irq_disabled
=
1
;
disable_irq
(
ts
->
spi
->
irq
);
...
...
@@ -609,16 +608,20 @@ static int __devinit ads7846_probe(struct spi_device *spi)
return
-
EINVAL
;
}
/* REVISIT when the irq can be triggered active-low, or if for some
* reason the touchscreen isn't hooked up, we don't need to access
* the pendown state.
*/
if
(
pdata
->
get_pendown_state
==
NULL
)
{
dev_dbg
(
&
spi
->
dev
,
"no get_pendown_state function?
\n
"
);
return
-
EINVAL
;
}
/* We'd set the wordsize to 12 bits ... except that some controllers
* will then treat the 8 bit command words as 12 bits (and drop the
* four MSBs of the 12 bit result). Result: inputs must be shifted
* to discard the four garbage LSBs.
/* We'd set TX wordsize 8 bits and RX wordsize to 13 bits ... except
* that even if the hardware can do that, the SPI controller driver
* may not. So we stick to very-portable 8 bit words, both RX and TX.
*/
spi
->
bits_per_word
=
8
;
ts
=
kzalloc
(
sizeof
(
struct
ads7846
),
GFP_KERNEL
);
input_dev
=
input_allocate_device
();
...
...
@@ -772,7 +775,7 @@ static int __devinit ads7846_probe(struct spi_device *spi)
if
(
request_irq
(
spi
->
irq
,
ads7846_irq
,
SA_SAMPLE_RANDOM
|
SA_TRIGGER_FALLING
,
spi
->
dev
.
bus_id
,
ts
))
{
spi
->
dev
.
driver
->
name
,
ts
))
{
dev_dbg
(
&
spi
->
dev
,
"irq %d busy?
\n
"
,
spi
->
irq
);
err
=
-
EBUSY
;
goto
err_free_mem
;
...
...
drivers/md/md.c
浏览文件 @
cbc696a5
...
...
@@ -5028,8 +5028,10 @@ static int md_notify_reboot(struct notifier_block *this,
printk
(
KERN_INFO
"md: stopping all md devices.
\n
"
);
ITERATE_MDDEV
(
mddev
,
tmp
)
if
(
mddev_trylock
(
mddev
))
if
(
mddev_trylock
(
mddev
))
{
do_md_stop
(
mddev
,
1
);
mddev_unlock
(
mddev
);
}
/*
* certain more exotic SCSI devices are known to be
* volatile wrt too early system reboots. While the
...
...
drivers/media/common/Kconfig
浏览文件 @
cbc696a5
config VIDEO_SAA7146
tristate
select
I2C
depends on
I2C
config VIDEO_SAA7146_VV
tristate
...
...
drivers/media/dvb/pluto2/Kconfig
浏览文件 @
cbc696a5
config DVB_PLUTO2
tristate "Pluto2 cards"
depends on DVB_CORE && PCI && I2C
select I2C
select I2C_ALGOBIT
select DVB_TDA1004X
help
...
...
drivers/mmc/mmc_block.c
浏览文件 @
cbc696a5
...
...
@@ -353,7 +353,7 @@ static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card)
*/
printk
(
KERN_ERR
"%s: unable to select block size for "
"writing (rb%u wb%u rp%u wp%u)
\n
"
,
m
d
->
disk
->
disk_name
,
m
mc_card_id
(
card
)
,
1
<<
card
->
csd
.
read_blkbits
,
1
<<
card
->
csd
.
write_blkbits
,
card
->
csd
.
read_partial
,
...
...
drivers/net/irda/Kconfig
浏览文件 @
cbc696a5
...
...
@@ -33,7 +33,7 @@ config DONGLE
config ESI_DONGLE
tristate "ESI JetEye PC dongle"
depends on DONGLE && IRDA
depends on
IRTTY_SIR &&
DONGLE && IRDA
help
Say Y here if you want to build support for the Extended Systems
JetEye PC dongle. To compile it as a module, choose M here. The ESI
...
...
@@ -44,7 +44,7 @@ config ESI_DONGLE
config ACTISYS_DONGLE
tristate "ACTiSYS IR-220L and IR220L+ dongle"
depends on DONGLE && IRDA
depends on
IRTTY_SIR &&
DONGLE && IRDA
help
Say Y here if you want to build support for the ACTiSYS IR-220L and
IR220L+ dongles. To compile it as a module, choose M here. The
...
...
@@ -55,7 +55,7 @@ config ACTISYS_DONGLE
config TEKRAM_DONGLE
tristate "Tekram IrMate 210B dongle"
depends on DONGLE && IRDA
depends on
IRTTY_SIR &&
DONGLE && IRDA
help
Say Y here if you want to build support for the Tekram IrMate 210B
dongle. To compile it as a module, choose M here. The Tekram dongle
...
...
@@ -66,7 +66,7 @@ config TEKRAM_DONGLE
config TOIM3232_DONGLE
tristate "TOIM3232 IrDa dongle"
depends on DONGLE && IRDA
depends on
IRTTY_SIR &&
DONGLE && IRDA
help
Say Y here if you want to build support for the Vishay/Temic
TOIM3232 and TOIM4232 based dongles.
...
...
@@ -74,7 +74,7 @@ config TOIM3232_DONGLE
config LITELINK_DONGLE
tristate "Parallax LiteLink dongle"
depends on DONGLE && IRDA
depends on
IRTTY_SIR &&
DONGLE && IRDA
help
Say Y here if you want to build support for the Parallax Litelink
dongle. To compile it as a module, choose M here. The Parallax
...
...
@@ -85,7 +85,7 @@ config LITELINK_DONGLE
config MA600_DONGLE
tristate "Mobile Action MA600 dongle"
depends on DONGLE && IRDA && EXPERIMENTAL
depends on
IRTTY_SIR &&
DONGLE && IRDA && EXPERIMENTAL
help
Say Y here if you want to build support for the Mobile Action MA600
dongle. To compile it as a module, choose M here. The MA600 dongle
...
...
@@ -98,7 +98,7 @@ config MA600_DONGLE
config GIRBIL_DONGLE
tristate "Greenwich GIrBIL dongle"
depends on DONGLE && IRDA && EXPERIMENTAL
depends on
IRTTY_SIR &&
DONGLE && IRDA && EXPERIMENTAL
help
Say Y here if you want to build support for the Greenwich GIrBIL
dongle. If you want to compile it as a module, choose M here.
...
...
@@ -109,7 +109,7 @@ config GIRBIL_DONGLE
config MCP2120_DONGLE
tristate "Microchip MCP2120"
depends on DONGLE && IRDA && EXPERIMENTAL
depends on
IRTTY_SIR &&
DONGLE && IRDA && EXPERIMENTAL
help
Say Y here if you want to build support for the Microchip MCP2120
dongle. If you want to compile it as a module, choose M here.
...
...
@@ -123,7 +123,7 @@ config MCP2120_DONGLE
config OLD_BELKIN_DONGLE
tristate "Old Belkin dongle"
depends on DONGLE && IRDA && EXPERIMENTAL
depends on
IRTTY_SIR &&
DONGLE && IRDA && EXPERIMENTAL
help
Say Y here if you want to build support for the Adaptec Airport 1000
and 2000 dongles. If you want to compile it as a module, choose
...
...
@@ -132,7 +132,7 @@ config OLD_BELKIN_DONGLE
config ACT200L_DONGLE
tristate "ACTiSYS IR-200L dongle"
depends on DONGLE && IRDA && EXPERIMENTAL
depends on
IRTTY_SIR &&
DONGLE && IRDA && EXPERIMENTAL
help
Say Y here if you want to build support for the ACTiSYS IR-200L
dongle. If you want to compile it as a module, choose M here.
...
...
drivers/net/wireless/arlan-main.c
浏览文件 @
cbc696a5
...
...
@@ -1838,7 +1838,7 @@ struct net_device * __init arlan_probe(int unit)
}
#ifdef MODULE
int
init_module
(
void
)
int
__init
init_module
(
void
)
{
int
i
=
0
;
...
...
@@ -1860,7 +1860,7 @@ int init_module(void)
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
i
=
0
;
struct
net_device
*
dev
;
...
...
drivers/net/wireless/wavelan.c
浏览文件 @
cbc696a5
...
...
@@ -4306,7 +4306,7 @@ struct net_device * __init wavelan_probe(int unit)
* Insertion of the module
* I'm now quite proud of the multi-device support.
*/
int
init_module
(
void
)
int
__init
init_module
(
void
)
{
int
ret
=
-
EIO
;
/* Return error if no cards found */
int
i
;
...
...
drivers/scsi/libata-core.c
浏览文件 @
cbc696a5
...
...
@@ -3643,6 +3643,8 @@ static void ata_pio_block(struct ata_port *ap)
ata_pio_sector
(
qc
);
}
ata_altstatus
(
ap
);
/* flush */
}
static
void
ata_pio_error
(
struct
ata_port
*
ap
)
...
...
@@ -3759,11 +3761,14 @@ static void atapi_packet_task(void *_data)
spin_lock_irqsave
(
&
ap
->
host_set
->
lock
,
flags
);
ap
->
flags
&=
~
ATA_FLAG_NOINTR
;
ata_data_xfer
(
ap
,
qc
->
cdb
,
qc
->
dev
->
cdb_len
,
1
);
ata_altstatus
(
ap
);
/* flush */
if
(
qc
->
tf
.
protocol
==
ATA_PROT_ATAPI_DMA
)
ap
->
ops
->
bmdma_start
(
qc
);
/* initiate bmdma */
spin_unlock_irqrestore
(
&
ap
->
host_set
->
lock
,
flags
);
}
else
{
ata_data_xfer
(
ap
,
qc
->
cdb
,
qc
->
dev
->
cdb_len
,
1
);
ata_altstatus
(
ap
);
/* flush */
/* PIO commands are handled by polling */
ap
->
hsm_task_state
=
HSM_ST
;
...
...
drivers/spi/spi_s3c24xx.c
浏览文件 @
cbc696a5
...
...
@@ -405,7 +405,7 @@ static int s3c24xx_spi_remove(struct platform_device *dev)
static
int
s3c24xx_spi_suspend
(
struct
platform_device
*
pdev
,
pm_message_t
msg
)
{
struct
s3c24xx_spi
*
hw
=
platform_get_drvdata
(
dev
);
struct
s3c24xx_spi
*
hw
=
platform_get_drvdata
(
p
dev
);
clk_disable
(
hw
->
clk
);
return
0
;
...
...
@@ -413,7 +413,7 @@ static int s3c24xx_spi_suspend(struct platform_device *pdev, pm_message_t msg)
static
int
s3c24xx_spi_resume
(
struct
platform_device
*
pdev
)
{
struct
s3c24xx_spi
*
hw
=
platform_get_drvdata
(
dev
);
struct
s3c24xx_spi
*
hw
=
platform_get_drvdata
(
p
dev
);
clk_enable
(
hw
->
clk
);
return
0
;
...
...
fs/affs/namei.c
浏览文件 @
cbc696a5
...
...
@@ -416,10 +416,9 @@ affs_rename(struct inode *old_dir, struct dentry *old_dentry,
return
retval
;
}
retval
=
-
EIO
;
bh
=
affs_bread
(
sb
,
old_dentry
->
d_inode
->
i_ino
);
if
(
!
bh
)
goto
done
;
return
-
EIO
;
/* Remove header from its parent directory. */
affs_lock_dir
(
old_dir
);
...
...
fs/jfs/jfs_metapage.c
浏览文件 @
cbc696a5
...
...
@@ -542,7 +542,7 @@ static int metapage_readpage(struct file *fp, struct page *page)
static
int
metapage_releasepage
(
struct
page
*
page
,
gfp_t
gfp_mask
)
{
struct
metapage
*
mp
;
int
busy
=
0
;
int
ret
=
1
;
unsigned
int
offset
;
for
(
offset
=
0
;
offset
<
PAGE_CACHE_SIZE
;
offset
+=
PSIZE
)
{
...
...
@@ -552,30 +552,20 @@ static int metapage_releasepage(struct page *page, gfp_t gfp_mask)
continue
;
jfs_info
(
"metapage_releasepage: mp = 0x%p"
,
mp
);
if
(
mp
->
count
||
mp
->
nohomeok
)
{
if
(
mp
->
count
||
mp
->
nohomeok
||
test_bit
(
META_dirty
,
&
mp
->
flag
))
{
jfs_info
(
"count = %ld, nohomeok = %d"
,
mp
->
count
,
mp
->
nohomeok
);
busy
=
1
;
ret
=
0
;
continue
;
}
wait_on_page_writeback
(
page
);
//WARN_ON(test_bit(META_dirty, &mp->flag));
if
(
test_bit
(
META_dirty
,
&
mp
->
flag
))
{
dump_mem
(
"dirty mp in metapage_releasepage"
,
mp
,
sizeof
(
struct
metapage
));
dump_mem
(
"page"
,
page
,
sizeof
(
struct
page
));
dump_stack
();
}
if
(
mp
->
lsn
)
remove_from_logsync
(
mp
);
remove_metapage
(
page
,
mp
);
INCREMENT
(
mpStat
.
pagefree
);
free_metapage
(
mp
);
}
if
(
busy
)
return
-
1
;
return
0
;
return
ret
;
}
static
void
metapage_invalidatepage
(
struct
page
*
page
,
unsigned
long
offset
)
...
...
include/asm-alpha/termbits.h
浏览文件 @
cbc696a5
...
...
@@ -148,6 +148,7 @@ struct termios {
#define HUPCL 00040000
#define CLOCAL 00100000
#define CMSPAR 010000000000
/* mark or space (stick) parity */
#define CRTSCTS 020000000000
/* flow control */
/* c_lflag bits */
...
...
include/asm-powerpc/termbits.h
浏览文件 @
cbc696a5
...
...
@@ -153,6 +153,7 @@ struct termios {
#define HUPCL 00040000
#define CLOCAL 00100000
#define CMSPAR 010000000000
/* mark or space (stick) parity */
#define CRTSCTS 020000000000
/* flow control */
/* c_lflag bits */
...
...
net/core/dev.c
浏览文件 @
cbc696a5
...
...
@@ -127,7 +127,7 @@
* sure which should go first, but I bet it won't make much
* difference if we are running VLANs. The good news is that
* this protocol won't be in the list unless compiled in, so
* the average user (w/out VLANs) will not be adversly affected.
* the average user (w/out VLANs) will not be advers
e
ly affected.
* --BLG
*
* 0800 IP
...
...
@@ -149,7 +149,7 @@ static struct list_head ptype_base[16]; /* 16 way hashed list */
static
struct
list_head
ptype_all
;
/* Taps */
/*
* The @dev_base list is protected by @dev_base_lock and the rt
ln
* The @dev_base list is protected by @dev_base_lock and the rt
nl
* semaphore.
*
* Pure readers hold dev_base_lock for reading.
...
...
@@ -641,10 +641,12 @@ int dev_valid_name(const char *name)
* @name: name format string
*
* Passed a format string - eg "lt%d" it will try and find a suitable
* id. Not efficient for many devices, not called a lot. The caller
* must hold the dev_base or rtnl lock while allocating the name and
* adding the device in order to avoid duplicates. Returns the number
* of the unit assigned or a negative errno code.
* id. It scans list of devices to build up a free map, then chooses
* the first empty slot. The caller must hold the dev_base or rtnl lock
* while allocating the name and adding the device in order to avoid
* duplicates.
* Limited to bits_per_byte * page size devices (ie 32K on most platforms).
* Returns the number of the unit assigned or a negative errno code.
*/
int
dev_alloc_name
(
struct
net_device
*
dev
,
const
char
*
name
)
...
...
@@ -744,7 +746,7 @@ int dev_change_name(struct net_device *dev, char *newname)
}
/**
* netdev_features_change - device changes fatures
* netdev_features_change - device changes f
e
atures
* @dev: device to cause notification
*
* Called to indicate a device has changed features.
...
...
@@ -2196,7 +2198,7 @@ int netdev_set_master(struct net_device *slave, struct net_device *master)
* @dev: device
* @inc: modifier
*
* Add or remove prom
si
cuity from a device. While the count in the device
* Add or remove prom
is
cuity from a device. While the count in the device
* remains above zero the interface remains promiscuous. Once it hits zero
* the device reverts back to normal filtering operation. A negative inc
* value is used to drop promiscuity on the device.
...
...
@@ -3122,7 +3124,7 @@ EXPORT_SYMBOL(alloc_netdev);
void
free_netdev
(
struct
net_device
*
dev
)
{
#ifdef CONFIG_SYSFS
/* Compati
ab
lity with error handling in drivers */
/* Compati
bi
lity with error handling in drivers */
if
(
dev
->
reg_state
==
NETREG_UNINITIALIZED
)
{
kfree
((
char
*
)
dev
-
dev
->
padded
);
return
;
...
...
net/ipv6/route.c
浏览文件 @
cbc696a5
...
...
@@ -280,10 +280,13 @@ static int inline rt6_check_neigh(struct rt6_info *rt)
{
struct
neighbour
*
neigh
=
rt
->
rt6i_nexthop
;
int
m
=
0
;
if
(
neigh
)
{
if
(
rt
->
rt6i_flags
&
RTF_NONEXTHOP
||
!
(
rt
->
rt6i_flags
&
RTF_GATEWAY
))
m
=
1
;
else
if
(
neigh
)
{
read_lock_bh
(
&
neigh
->
lock
);
if
(
neigh
->
nud_state
&
NUD_VALID
)
m
=
1
;
m
=
2
;
read_unlock_bh
(
&
neigh
->
lock
);
}
return
m
;
...
...
@@ -292,15 +295,18 @@ static int inline rt6_check_neigh(struct rt6_info *rt)
static
int
rt6_score_route
(
struct
rt6_info
*
rt
,
int
oif
,
int
strict
)
{
int
m
=
rt6_check_dev
(
rt
,
oif
);
int
m
,
n
;
m
=
rt6_check_dev
(
rt
,
oif
);
if
(
!
m
&&
(
strict
&
RT6_SELECT_F_IFACE
))
return
-
1
;
#ifdef CONFIG_IPV6_ROUTER_PREF
m
|=
IPV6_DECODE_PREF
(
IPV6_EXTRACT_PREF
(
rt
->
rt6i_flags
))
<<
2
;
#endif
if
(
rt6_check_neigh
(
rt
))
n
=
rt6_check_neigh
(
rt
);
if
(
n
>
1
)
m
|=
16
;
else
if
(
strict
&
RT6_SELECT_F_REACHABLE
)
else
if
(
!
n
&&
strict
&
RT6_SELECT_F_REACHABLE
)
return
-
1
;
return
m
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录