Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
455ffa60
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 3 年多
通知
13
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
455ffa60
编写于
1月 02, 2012
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge
git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
上级
3ab0b245
115e8e70
变更
36
隐藏空白更改
内联
并排
Showing
36 changed file
with
189 addition
and
176 deletion
+189
-176
arch/arm/Kconfig
arch/arm/Kconfig
+2
-2
arch/arm/common/pl330.c
arch/arm/common/pl330.c
+49
-67
arch/arm/configs/imx_v4_v5_defconfig
arch/arm/configs/imx_v4_v5_defconfig
+7
-5
arch/arm/mach-exynos/cpu.c
arch/arm/mach-exynos/cpu.c
+0
-5
arch/arm/mach-imx/Kconfig
arch/arm/mach-imx/Kconfig
+4
-4
arch/arm/mach-imx/Makefile
arch/arm/mach-imx/Makefile
+2
-2
arch/arm/mach-imx/clock-imx35.c
arch/arm/mach-imx/clock-imx35.c
+10
-10
arch/arm/mach-imx/mach-cpuimx35.c
arch/arm/mach-imx/mach-cpuimx35.c
+7
-1
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+0
-4
arch/arm/mm/proc-v7.S
arch/arm/mm/proc-v7.S
+4
-2
arch/arm/plat-mxc/cpufreq.c
arch/arm/plat-mxc/cpufreq.c
+1
-1
arch/arm/plat-mxc/include/mach/uncompress.h
arch/arm/plat-mxc/include/mach/uncompress.h
+1
-0
arch/arm/plat-mxc/pwm.c
arch/arm/plat-mxc/pwm.c
+9
-0
arch/arm/plat-orion/gpio.c
arch/arm/plat-orion/gpio.c
+5
-1
arch/arm/plat-samsung/include/plat/cpu-freq-core.h
arch/arm/plat-samsung/include/plat/cpu-freq-core.h
+15
-10
drivers/dma/Kconfig
drivers/dma/Kconfig
+2
-2
drivers/input/mouse/sentelic.c
drivers/input/mouse/sentelic.c
+4
-4
drivers/input/mouse/sentelic.h
drivers/input/mouse/sentelic.h
+2
-1
drivers/media/video/gspca/gspca.c
drivers/media/video/gspca/gspca.c
+1
-1
drivers/mmc/host/mmci.c
drivers/mmc/host/mmci.c
+10
-4
drivers/net/ethernet/marvell/skge.c
drivers/net/ethernet/marvell/skge.c
+3
-0
drivers/net/ethernet/mellanox/mlx4/en_cq.c
drivers/net/ethernet/mellanox/mlx4/en_cq.c
+1
-0
drivers/of/platform.c
drivers/of/platform.c
+1
-1
drivers/watchdog/coh901327_wdt.c
drivers/watchdog/coh901327_wdt.c
+4
-2
drivers/watchdog/hpwdt.c
drivers/watchdog/hpwdt.c
+4
-1
drivers/watchdog/iTCO_wdt.c
drivers/watchdog/iTCO_wdt.c
+3
-3
drivers/watchdog/sp805_wdt.c
drivers/watchdog/sp805_wdt.c
+1
-1
fs/ceph/dir.c
fs/ceph/dir.c
+3
-26
include/net/ip_vs.h
include/net/ip_vs.h
+1
-1
kernel/futex.c
kernel/futex.c
+20
-8
kernel/time/clockevents.c
kernel/time/clockevents.c
+0
-1
net/netfilter/ipvs/ip_vs_conn.c
net/netfilter/ipvs/ip_vs_conn.c
+1
-1
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/ipvs/ip_vs_ctl.c
+8
-2
net/netfilter/ipvs/ip_vs_sync.c
net/netfilter/ipvs/ip_vs_sync.c
+1
-1
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_netlink.c
+2
-2
sound/soc/codecs/wm8776.c
sound/soc/codecs/wm8776.c
+1
-0
未找到文件。
arch/arm/Kconfig
浏览文件 @
455ffa60
...
...
@@ -1246,7 +1246,7 @@ config PL310_ERRATA_588369
config ARM_ERRATA_720789
bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID"
depends on CPU_V7
&& SMP
depends on CPU_V7
help
This option enables the workaround for the 720789 Cortex-A9 (prior to
r2p0) erratum. A faulty ASID can be sent to the other CPUs for the
...
...
@@ -1282,7 +1282,7 @@ config ARM_ERRATA_743622
config ARM_ERRATA_751472
bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation"
depends on CPU_V7
&& SMP
depends on CPU_V7
help
This option enables the workaround for the 751472 Cortex-A9 (prior
to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the
...
...
arch/arm/common/pl330.c
浏览文件 @
455ffa60
...
...
@@ -221,17 +221,6 @@
*/
#define MCODE_BUFF_PER_REQ 256
/*
* Mark a _pl330_req as free.
* We do it by writing DMAEND as the first instruction
* because no valid request is going to have DMAEND as
* its first instruction to execute.
*/
#define MARK_FREE(req) do { \
_emit_END(0, (req)->mc_cpu); \
(req)->mc_len = 0; \
} while (0)
/* If the _pl330_req is available to the client */
#define IS_FREE(req) (*((u8 *)((req)->mc_cpu)) == CMD_DMAEND)
...
...
@@ -301,8 +290,10 @@ struct pl330_thread {
struct
pl330_dmac
*
dmac
;
/* Only two at a time */
struct
_pl330_req
req
[
2
];
/* Index of the last
submitt
ed request */
/* Index of the last
enqueu
ed request */
unsigned
lstenq
;
/* Index of the last submitted request or -1 if the DMA is stopped */
int
req_running
;
};
enum
pl330_dmac_state
{
...
...
@@ -778,6 +769,22 @@ static inline void _execute_DBGINSN(struct pl330_thread *thrd,
writel
(
0
,
regs
+
DBGCMD
);
}
/*
* Mark a _pl330_req as free.
* We do it by writing DMAEND as the first instruction
* because no valid request is going to have DMAEND as
* its first instruction to execute.
*/
static
void
mark_free
(
struct
pl330_thread
*
thrd
,
int
idx
)
{
struct
_pl330_req
*
req
=
&
thrd
->
req
[
idx
];
_emit_END
(
0
,
req
->
mc_cpu
);
req
->
mc_len
=
0
;
thrd
->
req_running
=
-
1
;
}
static
inline
u32
_state
(
struct
pl330_thread
*
thrd
)
{
void
__iomem
*
regs
=
thrd
->
dmac
->
pinfo
->
base
;
...
...
@@ -836,31 +843,6 @@ static inline u32 _state(struct pl330_thread *thrd)
}
}
/* If the request 'req' of thread 'thrd' is currently active */
static
inline
bool
_req_active
(
struct
pl330_thread
*
thrd
,
struct
_pl330_req
*
req
)
{
void
__iomem
*
regs
=
thrd
->
dmac
->
pinfo
->
base
;
u32
buf
=
req
->
mc_bus
,
pc
=
readl
(
regs
+
CPC
(
thrd
->
id
));
if
(
IS_FREE
(
req
))
return
false
;
return
(
pc
>=
buf
&&
pc
<=
buf
+
req
->
mc_len
)
?
true
:
false
;
}
/* Returns 0 if the thread is inactive, ID of active req + 1 otherwise */
static
inline
unsigned
_thrd_active
(
struct
pl330_thread
*
thrd
)
{
if
(
_req_active
(
thrd
,
&
thrd
->
req
[
0
]))
return
1
;
/* First req active */
if
(
_req_active
(
thrd
,
&
thrd
->
req
[
1
]))
return
2
;
/* Second req active */
return
0
;
}
static
void
_stop
(
struct
pl330_thread
*
thrd
)
{
void
__iomem
*
regs
=
thrd
->
dmac
->
pinfo
->
base
;
...
...
@@ -892,17 +874,22 @@ static bool _trigger(struct pl330_thread *thrd)
struct
_arg_GO
go
;
unsigned
ns
;
u8
insn
[
6
]
=
{
0
,
0
,
0
,
0
,
0
,
0
};
int
idx
;
/* Return if already ACTIVE */
if
(
_state
(
thrd
)
!=
PL330_STATE_STOPPED
)
return
true
;
if
(
!
IS_FREE
(
&
thrd
->
req
[
1
-
thrd
->
lstenq
]))
req
=
&
thrd
->
req
[
1
-
thrd
->
lstenq
];
else
if
(
!
IS_FREE
(
&
thrd
->
req
[
thrd
->
lstenq
]))
req
=
&
thrd
->
req
[
thrd
->
lstenq
];
else
req
=
NULL
;
idx
=
1
-
thrd
->
lstenq
;
if
(
!
IS_FREE
(
&
thrd
->
req
[
idx
]))
req
=
&
thrd
->
req
[
idx
];
else
{
idx
=
thrd
->
lstenq
;
if
(
!
IS_FREE
(
&
thrd
->
req
[
idx
]))
req
=
&
thrd
->
req
[
idx
];
else
req
=
NULL
;
}
/* Return if no request */
if
(
!
req
||
!
req
->
r
)
...
...
@@ -933,6 +920,8 @@ static bool _trigger(struct pl330_thread *thrd)
/* Only manager can execute GO */
_execute_DBGINSN
(
thrd
,
insn
,
true
);
thrd
->
req_running
=
idx
;
return
true
;
}
...
...
@@ -1382,8 +1371,8 @@ static void pl330_dotask(unsigned long data)
thrd
->
req
[
0
].
r
=
NULL
;
thrd
->
req
[
1
].
r
=
NULL
;
MARK_FREE
(
&
thrd
->
req
[
0
]
);
MARK_FREE
(
&
thrd
->
req
[
1
]
);
mark_free
(
thrd
,
0
);
mark_free
(
thrd
,
1
);
/* Clear the reset flag */
pl330
->
dmac_tbd
.
reset_chan
&=
~
(
1
<<
i
);
...
...
@@ -1461,14 +1450,12 @@ int pl330_update(const struct pl330_info *pi)
thrd
=
&
pl330
->
channels
[
id
];
active
=
_thrd_active
(
thrd
)
;
if
(
!
active
)
/* Aborted */
active
=
thrd
->
req_running
;
if
(
active
==
-
1
)
/* Aborted */
continue
;
active
-=
1
;
rqdone
=
&
thrd
->
req
[
active
];
MARK_FREE
(
rqdon
e
);
mark_free
(
thrd
,
activ
e
);
/* Get going again ASAP */
_start
(
thrd
);
...
...
@@ -1509,7 +1496,7 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op)
struct
pl330_thread
*
thrd
=
ch_id
;
struct
pl330_dmac
*
pl330
;
unsigned
long
flags
;
int
ret
=
0
,
active
;
int
ret
=
0
,
active
=
thrd
->
req_running
;
if
(
!
thrd
||
thrd
->
free
||
thrd
->
dmac
->
state
==
DYING
)
return
-
EINVAL
;
...
...
@@ -1525,28 +1512,24 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op)
thrd
->
req
[
0
].
r
=
NULL
;
thrd
->
req
[
1
].
r
=
NULL
;
MARK_FREE
(
&
thrd
->
req
[
0
]
);
MARK_FREE
(
&
thrd
->
req
[
1
]
);
mark_free
(
thrd
,
0
);
mark_free
(
thrd
,
1
);
break
;
case
PL330_OP_ABORT
:
active
=
_thrd_active
(
thrd
);
/* Make sure the channel is stopped */
_stop
(
thrd
);
/* ABORT is only for the active req */
if
(
!
active
)
if
(
active
==
-
1
)
break
;
active
--
;
thrd
->
req
[
active
].
r
=
NULL
;
MARK_FREE
(
&
thrd
->
req
[
active
]
);
mark_free
(
thrd
,
active
);
/* Start the next */
case
PL330_OP_START
:
if
(
!
_thrd_active
(
thrd
)
&&
!
_start
(
thrd
))
if
(
(
active
==
-
1
)
&&
!
_start
(
thrd
))
ret
=
-
EIO
;
break
;
...
...
@@ -1587,14 +1570,13 @@ int pl330_chan_status(void *ch_id, struct pl330_chanstatus *pstatus)
else
pstatus
->
faulting
=
false
;
active
=
_thrd_active
(
thrd
)
;
active
=
thrd
->
req_running
;
if
(
!
active
)
{
if
(
active
==
-
1
)
{
/* Indicate that the thread is not running */
pstatus
->
top_req
=
NULL
;
pstatus
->
wait_req
=
NULL
;
}
else
{
active
--
;
pstatus
->
top_req
=
thrd
->
req
[
active
].
r
;
pstatus
->
wait_req
=
!
IS_FREE
(
&
thrd
->
req
[
1
-
active
])
?
thrd
->
req
[
1
-
active
].
r
:
NULL
;
...
...
@@ -1659,9 +1641,9 @@ void *pl330_request_channel(const struct pl330_info *pi)
thrd
->
free
=
false
;
thrd
->
lstenq
=
1
;
thrd
->
req
[
0
].
r
=
NULL
;
MARK_FREE
(
&
thrd
->
req
[
0
]
);
mark_free
(
thrd
,
0
);
thrd
->
req
[
1
].
r
=
NULL
;
MARK_FREE
(
&
thrd
->
req
[
1
]
);
mark_free
(
thrd
,
1
);
break
;
}
}
...
...
@@ -1767,14 +1749,14 @@ static inline void _reset_thread(struct pl330_thread *thrd)
thrd
->
req
[
0
].
mc_bus
=
pl330
->
mcode_bus
+
(
thrd
->
id
*
pi
->
mcbufsz
);
thrd
->
req
[
0
].
r
=
NULL
;
MARK_FREE
(
&
thrd
->
req
[
0
]
);
mark_free
(
thrd
,
0
);
thrd
->
req
[
1
].
mc_cpu
=
thrd
->
req
[
0
].
mc_cpu
+
pi
->
mcbufsz
/
2
;
thrd
->
req
[
1
].
mc_bus
=
thrd
->
req
[
0
].
mc_bus
+
pi
->
mcbufsz
/
2
;
thrd
->
req
[
1
].
r
=
NULL
;
MARK_FREE
(
&
thrd
->
req
[
1
]
);
mark_free
(
thrd
,
1
);
}
static
int
dmac_alloc_threads
(
struct
pl330_dmac
*
pl330
)
...
...
arch/arm/configs/imx_v4_v5_defconfig
浏览文件 @
455ffa60
...
...
@@ -18,9 +18,10 @@ CONFIG_ARCH_MXC=y
CONFIG_ARCH_IMX_V4_V5=y
CONFIG_ARCH_MX1ADS=y
CONFIG_MACH_SCB9328=y
CONFIG_MACH_APF9328=y
CONFIG_MACH_MX21ADS=y
CONFIG_MACH_MX25_3DS=y
CONFIG_MACH_EUKREA_CPUIMX25=y
CONFIG_MACH_EUKREA_CPUIMX25
SD
=y
CONFIG_MACH_MX27ADS=y
CONFIG_MACH_PCM038=y
CONFIG_MACH_CPUIMX27=y
...
...
@@ -72,17 +73,16 @@ CONFIG_MTD_CFI_GEOMETRY=y
CONFIG_MTD_CFI_INTELEXT=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_MXC=y
CONFIG_MTD_UBI=y
CONFIG_MISC_DEVICES=y
CONFIG_EEPROM_AT24=y
CONFIG_EEPROM_AT25=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_SMC91X=y
CONFIG_DM9000=y
CONFIG_SMC91X=y
CONFIG_SMC911X=y
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
CONFIG_SMSC_PHY=y
# CONFIG_INPUT_MOUSEDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_KEYBOARD is not set
...
...
@@ -100,6 +100,7 @@ CONFIG_I2C_CHARDEV=y
CONFIG_I2C_IMX=y
CONFIG_SPI=y
CONFIG_SPI_IMX=y
CONFIG_SPI_SPIDEV=y
CONFIG_W1=y
CONFIG_W1_MASTER_MXC=y
CONFIG_W1_SLAVE_THERM=y
...
...
@@ -139,6 +140,7 @@ CONFIG_MMC=y
CONFIG_MMC_MXC=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_MC13783=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
...
...
arch/arm/mach-exynos/cpu.c
浏览文件 @
455ffa60
...
...
@@ -110,11 +110,6 @@ static struct map_desc exynos4_iodesc[] __initdata = {
.
pfn
=
__phys_to_pfn
(
EXYNOS4_PA_DMC0
),
.
length
=
SZ_4K
,
.
type
=
MT_DEVICE
,
},
{
.
virtual
=
(
unsigned
long
)
S5P_VA_SROMC
,
.
pfn
=
__phys_to_pfn
(
EXYNOS4_PA_SROMC
),
.
length
=
SZ_4K
,
.
type
=
MT_DEVICE
,
},
{
.
virtual
=
(
unsigned
long
)
S3C_VA_USB_HSPHY
,
.
pfn
=
__phys_to_pfn
(
EXYNOS4_PA_HSPHY
),
...
...
arch/arm/mach-imx/Kconfig
浏览文件 @
455ffa60
...
...
@@ -132,7 +132,7 @@ config MACH_MX25_3DS
select IMX_HAVE_PLATFORM_MXC_NAND
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
config MACH_EUKREA_CPUIMX25
config MACH_EUKREA_CPUIMX25
SD
bool "Support Eukrea CPUIMX25 Platform"
select SOC_IMX25
select IMX_HAVE_PLATFORM_FLEXCAN
...
...
@@ -148,7 +148,7 @@ config MACH_EUKREA_CPUIMX25
choice
prompt "Baseboard"
depends on MACH_EUKREA_CPUIMX25
depends on MACH_EUKREA_CPUIMX25
SD
default MACH_EUKREA_MBIMXSD25_BASEBOARD
config MACH_EUKREA_MBIMXSD25_BASEBOARD
...
...
@@ -542,7 +542,7 @@ config MACH_MX35_3DS
Include support for MX35PDK platform. This includes specific
configurations for the board and its peripherals.
config MACH_EUKREA_CPUIMX35
config MACH_EUKREA_CPUIMX35
SD
bool "Support Eukrea CPUIMX35 Platform"
select SOC_IMX35
select IMX_HAVE_PLATFORM_FLEXCAN
...
...
@@ -560,7 +560,7 @@ config MACH_EUKREA_CPUIMX35
choice
prompt "Baseboard"
depends on MACH_EUKREA_CPUIMX35
depends on MACH_EUKREA_CPUIMX35
SD
default MACH_EUKREA_MBIMXSD35_BASEBOARD
config MACH_EUKREA_MBIMXSD35_BASEBOARD
...
...
arch/arm/mach-imx/Makefile
浏览文件 @
455ffa60
...
...
@@ -24,7 +24,7 @@ obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o
# i.MX25 based machines
obj-$(CONFIG_MACH_MX25_3DS)
+=
mach-mx25_3ds.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX25)
+=
mach-eukrea_cpuimx25.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX25
SD
)
+=
mach-eukrea_cpuimx25.o
obj-$(CONFIG_MACH_EUKREA_MBIMXSD25_BASEBOARD)
+=
eukrea_mbimxsd25-baseboard.o
# i.MX27 based machines
...
...
@@ -57,7 +57,7 @@ obj-$(CONFIG_MACH_BUG) += mach-bug.o
# i.MX35 based machines
obj-$(CONFIG_MACH_PCM043)
+=
mach-pcm043.o
obj-$(CONFIG_MACH_MX35_3DS)
+=
mach-mx35_3ds.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX35)
+=
mach-cpuimx35.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX35
SD
)
+=
mach-cpuimx35.o
obj-$(CONFIG_MACH_EUKREA_MBIMXSD35_BASEBOARD)
+=
eukrea_mbimxsd35-baseboard.o
obj-$(CONFIG_MACH_VPR200)
+=
mach-vpr200.o
...
...
arch/arm/mach-imx/clock-imx35.c
浏览文件 @
455ffa60
...
...
@@ -507,7 +507,7 @@ static struct clk_lookup lookups[] = {
int
__init
mx35_clocks_init
()
{
unsigned
int
cgr2
=
3
<<
26
,
cgr3
=
0
;
unsigned
int
cgr2
=
3
<<
26
;
#if defined(CONFIG_DEBUG_LL) && !defined(CONFIG_DEBUG_ICEDCC)
cgr2
|=
3
<<
16
;
...
...
@@ -521,6 +521,12 @@ int __init mx35_clocks_init()
__raw_writel
((
3
<<
18
),
CCM_BASE
+
CCM_CGR0
);
__raw_writel
((
3
<<
2
)
|
(
3
<<
4
)
|
(
3
<<
6
)
|
(
3
<<
8
)
|
(
3
<<
16
),
CCM_BASE
+
CCM_CGR1
);
__raw_writel
(
cgr2
,
CCM_BASE
+
CCM_CGR2
);
__raw_writel
(
0
,
CCM_BASE
+
CCM_CGR3
);
clk_enable
(
&
iim_clk
);
imx_print_silicon_rev
(
"i.MX35"
,
mx35_revision
());
clk_disable
(
&
iim_clk
);
/*
* Check if we came up in internal boot mode. If yes, we need some
...
...
@@ -529,17 +535,11 @@ int __init mx35_clocks_init()
*/
if
(
!
(
__raw_readl
(
CCM_BASE
+
CCM_RCSR
)
&
(
3
<<
10
)))
{
/* Additionally turn on UART1, SCC, and IIM clocks */
cgr2
|=
3
<<
16
|
3
<<
4
;
cgr3
|=
3
<<
2
;
clk_enable
(
&
iim_clk
);
clk_enable
(
&
uart1_clk
);
clk_enable
(
&
scc_clk
);
}
__raw_writel
(
cgr2
,
CCM_BASE
+
CCM_CGR2
);
__raw_writel
(
cgr3
,
CCM_BASE
+
CCM_CGR3
);
clk_enable
(
&
iim_clk
);
imx_print_silicon_rev
(
"i.MX35"
,
mx35_revision
());
clk_disable
(
&
iim_clk
);
#ifdef CONFIG_MXC_USE_EPIT
epit_timer_init
(
&
epit1_clk
,
MX35_IO_ADDRESS
(
MX35_EPIT1_BASE_ADDR
),
MX35_INT_EPIT1
);
...
...
arch/arm/mach-imx/mach-cpuimx35.c
浏览文件 @
455ffa60
...
...
@@ -53,12 +53,18 @@ static const struct imxi2c_platform_data
.
bitrate
=
100000
,
};
#define TSC2007_IRQGPIO IMX_GPIO_NR(3, 2)
static
int
tsc2007_get_pendown_state
(
void
)
{
return
!
gpio_get_value
(
TSC2007_IRQGPIO
);
}
static
struct
tsc2007_platform_data
tsc2007_info
=
{
.
model
=
2007
,
.
x_plate_ohms
=
180
,
.
get_pendown_state
=
tsc2007_get_pendown_state
,
};
#define TSC2007_IRQGPIO IMX_GPIO_NR(3, 2)
static
struct
i2c_board_info
eukrea_cpuimx35_i2c_devices
[]
=
{
{
I2C_BOARD_INFO
(
"pcf8563"
,
0x51
),
...
...
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
浏览文件 @
455ffa60
...
...
@@ -3247,18 +3247,14 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
/* 3430ES1-only hwmods */
static
__initdata
struct
omap_hwmod
*
omap3430es1_hwmods
[]
=
{
&
omap3xxx_iva_hwmod
,
&
omap3430es1_dss_core_hwmod
,
&
omap3xxx_mailbox_hwmod
,
NULL
};
/* 3430ES2+-only hwmods */
static
__initdata
struct
omap_hwmod
*
omap3430es2plus_hwmods
[]
=
{
&
omap3xxx_iva_hwmod
,
&
omap3xxx_dss_core_hwmod
,
&
omap3xxx_usbhsotg_hwmod
,
&
omap3xxx_mailbox_hwmod
,
NULL
};
...
...
arch/arm/mm/proc-v7.S
浏览文件 @
455ffa60
...
...
@@ -363,11 +363,13 @@ __v7_setup:
orreq
r10
,
r10
,
#
1
<<
6
@
set
bit
#
6
mcreq
p15
,
0
,
r10
,
c15
,
c0
,
1
@
write
diagnostic
register
#endif
#ifdef CONFIG_ARM_ERRATA_751472
cmp
r6
,
#
0x30
@
present
prior
to
r3p0
#if defined(CONFIG_ARM_ERRATA_751472) && defined(CONFIG_SMP)
ALT_SMP
(
cmp
r6
,
#
0x30
)
@
present
prior
to
r3p0
ALT_UP_B
(1
f
)
mrclt
p15
,
0
,
r10
,
c15
,
c0
,
1
@
read
diagnostic
register
orrlt
r10
,
r10
,
#
1
<<
11
@
set
bit
#
11
mcrlt
p15
,
0
,
r10
,
c15
,
c0
,
1
@
write
diagnostic
register
1
:
#endif
3
:
mov
r10
,
#
0
...
...
arch/arm/plat-mxc/cpufreq.c
浏览文件 @
455ffa60
...
...
@@ -98,7 +98,7 @@ static int mxc_set_target(struct cpufreq_policy *policy,
return
ret
;
}
static
int
__init
mxc_cpufreq_init
(
struct
cpufreq_policy
*
policy
)
static
int
mxc_cpufreq_init
(
struct
cpufreq_policy
*
policy
)
{
int
ret
;
int
i
;
...
...
arch/arm/plat-mxc/include/mach/uncompress.h
浏览文件 @
455ffa60
...
...
@@ -98,6 +98,7 @@ static __inline__ void __arch_decomp_setup(unsigned long arch_id)
case
MACH_TYPE_PCM043
:
case
MACH_TYPE_LILLY1131
:
case
MACH_TYPE_VPR200
:
case
MACH_TYPE_EUKREA_CPUIMX35SD
:
uart_base
=
MX3X_UART1_BASE_ADDR
;
break
;
case
MACH_TYPE_MAGX_ZN5
:
...
...
arch/arm/plat-mxc/pwm.c
浏览文件 @
455ffa60
...
...
@@ -77,6 +77,15 @@ int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)
do_div
(
c
,
period_ns
);
duty_cycles
=
c
;
/*
* according to imx pwm RM, the real period value should be
* PERIOD value in PWMPR plus 2.
*/
if
(
period_cycles
>
2
)
period_cycles
-=
2
;
else
period_cycles
=
0
;
writel
(
duty_cycles
,
pwm
->
mmio_base
+
MX3_PWMSAR
);
writel
(
period_cycles
,
pwm
->
mmio_base
+
MX3_PWMPR
);
...
...
arch/arm/plat-orion/gpio.c
浏览文件 @
455ffa60
...
...
@@ -384,12 +384,16 @@ void __init orion_gpio_init(int gpio_base, int ngpio,
struct
orion_gpio_chip
*
ochip
;
struct
irq_chip_generic
*
gc
;
struct
irq_chip_type
*
ct
;
char
gc_label
[
16
];
if
(
orion_gpio_chip_count
==
ARRAY_SIZE
(
orion_gpio_chips
))
return
;
snprintf
(
gc_label
,
sizeof
(
gc_label
),
"orion_gpio%d"
,
orion_gpio_chip_count
);
ochip
=
orion_gpio_chips
+
orion_gpio_chip_count
;
ochip
->
chip
.
label
=
"orion_gpio"
;
ochip
->
chip
.
label
=
kstrdup
(
gc_label
,
GFP_KERNEL
)
;
ochip
->
chip
.
request
=
orion_gpio_request
;
ochip
->
chip
.
direction_input
=
orion_gpio_direction_input
;
ochip
->
chip
.
get
=
orion_gpio_get
;
...
...
arch/arm/plat-samsung/include/plat/cpu-freq-core.h
浏览文件 @
455ffa60
...
...
@@ -202,14 +202,6 @@ extern int s3c_plltab_register(struct cpufreq_frequency_table *plls,
extern
struct
s3c_cpufreq_config
*
s3c_cpufreq_getconfig
(
void
);
extern
struct
s3c_iotimings
*
s3c_cpufreq_getiotimings
(
void
);
extern
void
s3c2410_iotiming_debugfs
(
struct
seq_file
*
seq
,
struct
s3c_cpufreq_config
*
cfg
,
union
s3c_iobank
*
iob
);
extern
void
s3c2412_iotiming_debugfs
(
struct
seq_file
*
seq
,
struct
s3c_cpufreq_config
*
cfg
,
union
s3c_iobank
*
iob
);
#ifdef CONFIG_CPU_FREQ_S3C24XX_DEBUGFS
#define s3c_cpufreq_debugfs_call(x) x
#else
...
...
@@ -226,6 +218,10 @@ extern void s3c2410_cpufreq_setrefresh(struct s3c_cpufreq_config *cfg);
extern
void
s3c2410_set_fvco
(
struct
s3c_cpufreq_config
*
cfg
);
#ifdef CONFIG_S3C2410_IOTIMING
extern
void
s3c2410_iotiming_debugfs
(
struct
seq_file
*
seq
,
struct
s3c_cpufreq_config
*
cfg
,
union
s3c_iobank
*
iob
);
extern
int
s3c2410_iotiming_calc
(
struct
s3c_cpufreq_config
*
cfg
,
struct
s3c_iotimings
*
iot
);
...
...
@@ -235,6 +231,7 @@ extern int s3c2410_iotiming_get(struct s3c_cpufreq_config *cfg,
extern
void
s3c2410_iotiming_set
(
struct
s3c_cpufreq_config
*
cfg
,
struct
s3c_iotimings
*
iot
);
#else
#define s3c2410_iotiming_debugfs NULL
#define s3c2410_iotiming_calc NULL
#define s3c2410_iotiming_get NULL
#define s3c2410_iotiming_set NULL
...
...
@@ -242,8 +239,10 @@ extern void s3c2410_iotiming_set(struct s3c_cpufreq_config *cfg,
/* S3C2412 compatible routines */
extern
int
s3c2412_iotiming_get
(
struct
s3c_cpufreq_config
*
cfg
,
struct
s3c_iotimings
*
timings
);
#ifdef CONFIG_S3C2412_IOTIMING
extern
void
s3c2412_iotiming_debugfs
(
struct
seq_file
*
seq
,
struct
s3c_cpufreq_config
*
cfg
,
union
s3c_iobank
*
iob
);
extern
int
s3c2412_iotiming_get
(
struct
s3c_cpufreq_config
*
cfg
,
struct
s3c_iotimings
*
timings
);
...
...
@@ -253,6 +252,12 @@ extern int s3c2412_iotiming_calc(struct s3c_cpufreq_config *cfg,
extern
void
s3c2412_iotiming_set
(
struct
s3c_cpufreq_config
*
cfg
,
struct
s3c_iotimings
*
iot
);
#else
#define s3c2412_iotiming_debugfs NULL
#define s3c2412_iotiming_calc NULL
#define s3c2412_iotiming_get NULL
#define s3c2412_iotiming_set NULL
#endif
/* CONFIG_S3C2412_IOTIMING */
#ifdef CONFIG_CPU_FREQ_S3C24XX_DEBUG
#define s3c_freq_dbg(x...) printk(KERN_INFO x)
...
...
drivers/dma/Kconfig
浏览文件 @
455ffa60
...
...
@@ -124,7 +124,7 @@ config MV_XOR
config MX3_IPU
bool "MX3x Image Processing Unit support"
depends on
ARCH_MX3
depends on
SOC_IMX31 || SOC_IMX35
select DMA_ENGINE
default y
help
...
...
@@ -216,7 +216,7 @@ config PCH_DMA
config IMX_SDMA
tristate "i.MX SDMA support"
depends on ARCH_MX25 ||
ARCH_MX3
|| ARCH_MX5
depends on ARCH_MX25 ||
SOC_IMX31 || SOC_IMX35
|| ARCH_MX5
select DMA_ENGINE
help
Support the i.MX SDMA engine. This engine is integrated into
...
...
drivers/input/mouse/sentelic.c
浏览文件 @
455ffa60
...
...
@@ -2,7 +2,7 @@
* Finger Sensing Pad PS/2 mouse driver.
*
* Copyright (C) 2005-2007 Asia Vital Components Co., Ltd.
* Copyright (C) 2005-201
0
Tai-hwa Liang, Sentelic Corporation.
* Copyright (C) 2005-201
1
Tai-hwa Liang, Sentelic Corporation.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
...
...
@@ -162,7 +162,7 @@ static int fsp_reg_write(struct psmouse *psmouse, int reg_addr, int reg_val)
ps2_sendbyte
(
ps2dev
,
v
,
FSP_CMD_TIMEOUT2
);
if
(
ps2_sendbyte
(
ps2dev
,
0xf3
,
FSP_CMD_TIMEOUT
)
<
0
)
return
-
1
;
goto
out
;
if
((
v
=
fsp_test_invert_cmd
(
reg_val
))
!=
reg_val
)
{
/* inversion is required */
...
...
@@ -261,7 +261,7 @@ static int fsp_page_reg_write(struct psmouse *psmouse, int reg_val)
ps2_sendbyte
(
ps2dev
,
0x88
,
FSP_CMD_TIMEOUT2
);
if
(
ps2_sendbyte
(
ps2dev
,
0xf3
,
FSP_CMD_TIMEOUT
)
<
0
)
return
-
1
;
goto
out
;
if
((
v
=
fsp_test_invert_cmd
(
reg_val
))
!=
reg_val
)
{
ps2_sendbyte
(
ps2dev
,
0x47
,
FSP_CMD_TIMEOUT2
);
...
...
@@ -309,7 +309,7 @@ static int fsp_get_buttons(struct psmouse *psmouse, int *btn)
};
int
val
;
if
(
fsp_reg_read
(
psmouse
,
FSP_REG_TMOD_STATUS
1
,
&
val
)
==
-
1
)
if
(
fsp_reg_read
(
psmouse
,
FSP_REG_TMOD_STATUS
,
&
val
)
==
-
1
)
return
-
EIO
;
*
btn
=
buttons
[(
val
&
0x30
)
>>
4
];
...
...
drivers/input/mouse/sentelic.h
浏览文件 @
455ffa60
...
...
@@ -2,7 +2,7 @@
* Finger Sensing Pad PS/2 mouse driver.
*
* Copyright (C) 2005-2007 Asia Vital Components Co., Ltd.
* Copyright (C) 2005-20
09
Tai-hwa Liang, Sentelic Corporation.
* Copyright (C) 2005-20
11
Tai-hwa Liang, Sentelic Corporation.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
...
...
@@ -33,6 +33,7 @@
/* Finger-sensing Pad control registers */
#define FSP_REG_SYSCTL1 0x10
#define FSP_BIT_EN_REG_CLK BIT(5)
#define FSP_REG_TMOD_STATUS 0x20
#define FSP_REG_OPC_QDOWN 0x31
#define FSP_BIT_EN_OPC_TAG BIT(7)
#define FSP_REG_OPTZ_XLO 0x34
...
...
drivers/media/video/gspca/gspca.c
浏览文件 @
455ffa60
...
...
@@ -957,7 +957,7 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev)
ret
=
-
EIO
;
goto
out
;
}
alt
=
ep_tb
[
--
alt_idx
].
alt
;
gspca_dev
->
alt
=
ep_tb
[
--
alt_idx
].
alt
;
}
}
out:
...
...
drivers/mmc/host/mmci.c
浏览文件 @
455ffa60
...
...
@@ -675,7 +675,8 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data,
unsigned
int
status
)
{
/* First check for errors */
if
(
status
&
(
MCI_DATACRCFAIL
|
MCI_DATATIMEOUT
|
MCI_TXUNDERRUN
|
MCI_RXOVERRUN
))
{
if
(
status
&
(
MCI_DATACRCFAIL
|
MCI_DATATIMEOUT
|
MCI_STARTBITERR
|
MCI_TXUNDERRUN
|
MCI_RXOVERRUN
))
{
u32
remain
,
success
;
/* Terminate the DMA transfer */
...
...
@@ -754,8 +755,12 @@ mmci_cmd_irq(struct mmci_host *host, struct mmc_command *cmd,
}
if
(
!
cmd
->
data
||
cmd
->
error
)
{
if
(
host
->
data
)
if
(
host
->
data
)
{
/* Terminate the DMA transfer */
if
(
dma_inprogress
(
host
))
mmci_dma_data_error
(
host
);
mmci_stop_data
(
host
);
}
mmci_request_end
(
host
,
cmd
->
mrq
);
}
else
if
(
!
(
cmd
->
data
->
flags
&
MMC_DATA_READ
))
{
mmci_start_data
(
host
,
cmd
->
data
);
...
...
@@ -955,8 +960,9 @@ static irqreturn_t mmci_irq(int irq, void *dev_id)
dev_dbg
(
mmc_dev
(
host
->
mmc
),
"irq0 (data+cmd) %08x
\n
"
,
status
);
data
=
host
->
data
;
if
(
status
&
(
MCI_DATACRCFAIL
|
MCI_DATATIMEOUT
|
MCI_TXUNDERRUN
|
MCI_RXOVERRUN
|
MCI_DATAEND
|
MCI_DATABLOCKEND
)
&&
data
)
if
(
status
&
(
MCI_DATACRCFAIL
|
MCI_DATATIMEOUT
|
MCI_STARTBITERR
|
MCI_TXUNDERRUN
|
MCI_RXOVERRUN
|
MCI_DATAEND
|
MCI_DATABLOCKEND
)
&&
data
)
mmci_data_irq
(
host
,
data
,
status
);
cmd
=
host
->
cmd
;
...
...
drivers/net/ethernet/marvell/skge.c
浏览文件 @
455ffa60
...
...
@@ -2606,6 +2606,9 @@ static int skge_up(struct net_device *dev)
spin_unlock_irq
(
&
hw
->
hw_lock
);
napi_enable
(
&
skge
->
napi
);
skge_set_multicast
(
dev
);
return
0
;
free_tx_ring:
...
...
drivers/net/ethernet/mellanox/mlx4/en_cq.c
浏览文件 @
455ffa60
...
...
@@ -144,6 +144,7 @@ void mlx4_en_destroy_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq)
mlx4_free_hwq_res
(
mdev
->
dev
,
&
cq
->
wqres
,
cq
->
buf_size
);
if
(
priv
->
mdev
->
dev
->
caps
.
comp_pool
&&
cq
->
vector
)
mlx4_release_eq
(
priv
->
mdev
->
dev
,
cq
->
vector
);
cq
->
vector
=
0
;
cq
->
buf_size
=
0
;
cq
->
buf
=
NULL
;
}
...
...
drivers/of/platform.c
浏览文件 @
455ffa60
...
...
@@ -314,7 +314,7 @@ static const struct of_dev_auxdata *of_dev_lookup(const struct of_dev_auxdata *l
if
(
!
lookup
)
return
NULL
;
for
(;
lookup
->
nam
e
!=
NULL
;
lookup
++
)
{
for
(;
lookup
->
compatibl
e
!=
NULL
;
lookup
++
)
{
if
(
!
of_device_is_compatible
(
np
,
lookup
->
compatible
))
continue
;
if
(
of_address_to_resource
(
np
,
0
,
&
res
))
...
...
drivers/watchdog/coh901327_wdt.c
浏览文件 @
455ffa60
...
...
@@ -76,8 +76,6 @@ static int irq;
static
void
__iomem
*
virtbase
;
static
unsigned
long
coh901327_users
;
static
unsigned
long
boot_status
;
static
u16
wdogenablestore
;
static
u16
irqmaskstore
;
static
struct
device
*
parent
;
/*
...
...
@@ -461,6 +459,10 @@ static int __init coh901327_probe(struct platform_device *pdev)
}
#ifdef CONFIG_PM
static
u16
wdogenablestore
;
static
u16
irqmaskstore
;
static
int
coh901327_suspend
(
struct
platform_device
*
pdev
,
pm_message_t
state
)
{
irqmaskstore
=
readw
(
virtbase
+
U300_WDOG_IMR
)
&
0x0001U
;
...
...
drivers/watchdog/hpwdt.c
浏览文件 @
455ffa60
...
...
@@ -231,6 +231,7 @@ static int __devinit cru_detect(unsigned long map_entry,
cmn_regs
.
u1
.
reax
=
CRU_BIOS_SIGNATURE_VALUE
;
set_memory_x
((
unsigned
long
)
bios32_entrypoint
,
(
2
*
PAGE_SIZE
));
asminline_call
(
&
cmn_regs
,
bios32_entrypoint
);
if
(
cmn_regs
.
u1
.
ral
!=
0
)
{
...
...
@@ -248,8 +249,10 @@ static int __devinit cru_detect(unsigned long map_entry,
if
((
physical_bios_base
+
physical_bios_offset
))
{
cru_rom_addr
=
ioremap
(
cru_physical_address
,
cru_length
);
if
(
cru_rom_addr
)
if
(
cru_rom_addr
)
{
set_memory_x
((
unsigned
long
)
cru_rom_addr
,
cru_length
);
retval
=
0
;
}
}
printk
(
KERN_DEBUG
"hpwdt: CRU Base Address: 0x%lx
\n
"
,
...
...
drivers/watchdog/iTCO_wdt.c
浏览文件 @
455ffa60
...
...
@@ -384,10 +384,10 @@ MODULE_PARM_DESC(nowayout,
"Watchdog cannot be stopped once started (default="
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
")"
);
static
int
turn_SMI_watchdog_clear_off
=
0
;
static
int
turn_SMI_watchdog_clear_off
=
1
;
module_param
(
turn_SMI_watchdog_clear_off
,
int
,
0
);
MODULE_PARM_DESC
(
turn_SMI_watchdog_clear_off
,
"Turn off SMI clearing watchdog (de
fault=0
)"
);
"Turn off SMI clearing watchdog (de
pends on TCO-version)(default=1
)"
);
/*
* Some TCO specific functions
...
...
@@ -813,7 +813,7 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev,
ret
=
-
EIO
;
goto
out_unmap
;
}
if
(
turn_SMI_watchdog_clear_off
)
{
if
(
turn_SMI_watchdog_clear_off
>=
iTCO_wdt_private
.
iTCO_version
)
{
/* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */
val32
=
inl
(
SMI_EN
);
val32
&=
0xffffdfff
;
/* Turn off SMI clearing watchdog */
...
...
drivers/watchdog/sp805_wdt.c
浏览文件 @
455ffa60
...
...
@@ -351,7 +351,7 @@ static int __devexit sp805_wdt_remove(struct amba_device *adev)
return
0
;
}
static
struct
amba_id
sp805_wdt_ids
[]
__initdata
=
{
static
struct
amba_id
sp805_wdt_ids
[]
=
{
{
.
id
=
0x00141805
,
.
mask
=
0x00ffffff
,
...
...
fs/ceph/dir.c
浏览文件 @
455ffa60
...
...
@@ -1094,42 +1094,19 @@ static int ceph_snapdir_d_revalidate(struct dentry *dentry,
/*
* Set/clear/test dir complete flag on the dir's dentry.
*/
static
struct
dentry
*
__d_find_any_alias
(
struct
inode
*
inode
)
{
struct
dentry
*
alias
;
if
(
list_empty
(
&
inode
->
i_dentry
))
return
NULL
;
alias
=
list_first_entry
(
&
inode
->
i_dentry
,
struct
dentry
,
d_alias
);
return
alias
;
}
void
ceph_dir_set_complete
(
struct
inode
*
inode
)
{
struct
dentry
*
dentry
=
__d_find_any_alias
(
inode
);
if
(
dentry
&&
ceph_dentry
(
dentry
))
{
dout
(
" marking %p (%p) complete
\n
"
,
inode
,
dentry
);
set_bit
(
CEPH_D_COMPLETE
,
&
ceph_dentry
(
dentry
)
->
flags
);
}
/* not yet implemented */
}
void
ceph_dir_clear_complete
(
struct
inode
*
inode
)
{
struct
dentry
*
dentry
=
__d_find_any_alias
(
inode
);
if
(
dentry
&&
ceph_dentry
(
dentry
))
{
dout
(
" marking %p (%p) NOT complete
\n
"
,
inode
,
dentry
);
clear_bit
(
CEPH_D_COMPLETE
,
&
ceph_dentry
(
dentry
)
->
flags
);
}
/* not yet implemented */
}
bool
ceph_dir_test_complete
(
struct
inode
*
inode
)
{
struct
dentry
*
dentry
=
__d_find_any_alias
(
inode
);
if
(
dentry
&&
ceph_dentry
(
dentry
))
return
test_bit
(
CEPH_D_COMPLETE
,
&
ceph_dentry
(
dentry
)
->
flags
);
/* not yet implemented */
return
false
;
}
...
...
include/net/ip_vs.h
浏览文件 @
455ffa60
...
...
@@ -1207,7 +1207,7 @@ extern void ip_vs_control_cleanup(void);
extern
struct
ip_vs_dest
*
ip_vs_find_dest
(
struct
net
*
net
,
int
af
,
const
union
nf_inet_addr
*
daddr
,
__be16
dport
,
const
union
nf_inet_addr
*
vaddr
,
__be16
vport
,
__u16
protocol
,
__u32
fwmark
);
__u16
protocol
,
__u32
fwmark
,
__u32
flags
);
extern
struct
ip_vs_dest
*
ip_vs_try_bind_dest
(
struct
ip_vs_conn
*
cp
);
...
...
kernel/futex.c
浏览文件 @
455ffa60
...
...
@@ -314,17 +314,29 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
#endif
lock_page
(
page_head
);
/*
* If page_head->mapping is NULL, then it cannot be a PageAnon
* page; but it might be the ZERO_PAGE or in the gate area or
* in a special mapping (all cases which we are happy to fail);
* or it may have been a good file page when get_user_pages_fast
* found it, but truncated or holepunched or subjected to
* invalidate_complete_page2 before we got the page lock (also
* cases which we are happy to fail). And we hold a reference,
* so refcount care in invalidate_complete_page's remove_mapping
* prevents drop_caches from setting mapping to NULL beneath us.
*
* The case we do have to guard against is when memory pressure made
* shmem_writepage move it from filecache to swapcache beneath us:
* an unlikely race, but we do need to retry for page_head->mapping.
*/
if
(
!
page_head
->
mapping
)
{
int
shmem_swizzled
=
PageSwapCache
(
page_head
);
unlock_page
(
page_head
);
put_page
(
page_head
);
/*
* ZERO_PAGE pages don't have a mapping. Avoid a busy loop
* trying to find one. RW mapping would have COW'd (and thus
* have a mapping) so this page is RO and won't ever change.
*/
if
((
page_head
==
ZERO_PAGE
(
address
)))
return
-
EFAULT
;
goto
again
;
if
(
shmem_swizzled
)
goto
again
;
return
-
EFAULT
;
}
/*
...
...
kernel/time/clockevents.c
浏览文件 @
455ffa60
...
...
@@ -387,7 +387,6 @@ void clockevents_exchange_device(struct clock_event_device *old,
* released list and do a notify add later.
*/
if
(
old
)
{
old
->
event_handler
=
clockevents_handle_noop
;
clockevents_set_mode
(
old
,
CLOCK_EVT_MODE_UNUSED
);
list_del
(
&
old
->
list
);
list_add
(
&
old
->
list
,
&
clockevents_released
);
...
...
net/netfilter/ipvs/ip_vs_conn.c
浏览文件 @
455ffa60
...
...
@@ -616,7 +616,7 @@ struct ip_vs_dest *ip_vs_try_bind_dest(struct ip_vs_conn *cp)
if
((
cp
)
&&
(
!
cp
->
dest
))
{
dest
=
ip_vs_find_dest
(
ip_vs_conn_net
(
cp
),
cp
->
af
,
&
cp
->
daddr
,
cp
->
dport
,
&
cp
->
vaddr
,
cp
->
vport
,
cp
->
protocol
,
cp
->
fwmark
);
cp
->
protocol
,
cp
->
fwmark
,
cp
->
flags
);
ip_vs_bind_dest
(
cp
,
dest
);
return
dest
;
}
else
...
...
net/netfilter/ipvs/ip_vs_ctl.c
浏览文件 @
455ffa60
...
...
@@ -619,15 +619,21 @@ struct ip_vs_dest *ip_vs_find_dest(struct net *net, int af,
const
union
nf_inet_addr
*
daddr
,
__be16
dport
,
const
union
nf_inet_addr
*
vaddr
,
__be16
vport
,
__u16
protocol
,
__u32
fwmark
)
__be16
vport
,
__u16
protocol
,
__u32
fwmark
,
__u32
flags
)
{
struct
ip_vs_dest
*
dest
;
struct
ip_vs_service
*
svc
;
__be16
port
=
dport
;
svc
=
ip_vs_service_get
(
net
,
af
,
fwmark
,
protocol
,
vaddr
,
vport
);
if
(
!
svc
)
return
NULL
;
dest
=
ip_vs_lookup_dest
(
svc
,
daddr
,
dport
);
if
(
fwmark
&&
(
flags
&
IP_VS_CONN_F_FWD_MASK
)
!=
IP_VS_CONN_F_MASQ
)
port
=
0
;
dest
=
ip_vs_lookup_dest
(
svc
,
daddr
,
port
);
if
(
!
dest
)
dest
=
ip_vs_lookup_dest
(
svc
,
daddr
,
port
^
dport
);
if
(
dest
)
atomic_inc
(
&
dest
->
refcnt
);
ip_vs_service_put
(
svc
);
...
...
net/netfilter/ipvs/ip_vs_sync.c
浏览文件 @
455ffa60
...
...
@@ -740,7 +740,7 @@ static void ip_vs_proc_conn(struct net *net, struct ip_vs_conn_param *param,
* but still handled.
*/
dest
=
ip_vs_find_dest
(
net
,
type
,
daddr
,
dport
,
param
->
vaddr
,
param
->
vport
,
protocol
,
fwmark
);
param
->
vport
,
protocol
,
fwmark
,
flags
);
/* Set the approprite ativity flag */
if
(
protocol
==
IPPROTO_TCP
)
{
...
...
net/netfilter/nf_conntrack_netlink.c
浏览文件 @
455ffa60
...
...
@@ -135,7 +135,7 @@ ctnetlink_dump_status(struct sk_buff *skb, const struct nf_conn *ct)
static
inline
int
ctnetlink_dump_timeout
(
struct
sk_buff
*
skb
,
const
struct
nf_conn
*
ct
)
{
long
timeout
=
(
ct
->
timeout
.
expires
-
jiffies
)
/
HZ
;
long
timeout
=
(
(
long
)
ct
->
timeout
.
expires
-
(
long
)
jiffies
)
/
HZ
;
if
(
timeout
<
0
)
timeout
=
0
;
...
...
@@ -1650,7 +1650,7 @@ ctnetlink_exp_dump_expect(struct sk_buff *skb,
const
struct
nf_conntrack_expect
*
exp
)
{
struct
nf_conn
*
master
=
exp
->
master
;
long
timeout
=
(
exp
->
timeout
.
expires
-
jiffies
)
/
HZ
;
long
timeout
=
(
(
long
)
exp
->
timeout
.
expires
-
(
long
)
jiffies
)
/
HZ
;
struct
nf_conn_help
*
help
;
if
(
timeout
<
0
)
...
...
sound/soc/codecs/wm8776.c
浏览文件 @
455ffa60
...
...
@@ -235,6 +235,7 @@ static int wm8776_hw_params(struct snd_pcm_substream *substream,
switch
(
snd_pcm_format_width
(
params_format
(
params
)))
{
case
16
:
iface
=
0
;
break
;
case
20
:
iface
=
0x10
;
break
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录