Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
9bd7de51
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
14
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看板
提交
9bd7de51
编写于
5月 22, 2009
作者:
J
Jens Axboe
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into for-2.6.31
Conflicts: drivers/ide/ide-io.c Signed-off-by:
N
Jens Axboe
<
jens.axboe@oracle.com
>
上级
e4b63636
6a44587e
变更
99
隐藏空白更改
内联
并排
Showing
99 changed file
with
559 addition
and
384 deletion
+559
-384
Documentation/filesystems/tmpfs.txt
Documentation/filesystems/tmpfs.txt
+1
-1
Documentation/networking/ip-sysctl.txt
Documentation/networking/ip-sysctl.txt
+12
-3
MAINTAINERS
MAINTAINERS
+8
-0
arch/arm/Kconfig
arch/arm/Kconfig
+3
-3
arch/arm/common/gic.c
arch/arm/common/gic.c
+2
-2
arch/arm/include/asm/hardware/gic.h
arch/arm/include/asm/hardware/gic.h
+1
-1
arch/arm/include/asm/smp.h
arch/arm/include/asm/smp.h
+4
-8
arch/arm/kernel/smp.c
arch/arm/kernel/smp.c
+16
-30
arch/arm/mach-ep93xx/clock.c
arch/arm/mach-ep93xx/clock.c
+61
-8
arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
+4
-1
arch/arm/mach-integrator/core.c
arch/arm/mach-integrator/core.c
+1
-1
arch/arm/mach-l7200/include/mach/sys-clock.h
arch/arm/mach-l7200/include/mach/sys-clock.h
+1
-1
arch/arm/mach-omap2/clock24xx.c
arch/arm/mach-omap2/clock24xx.c
+5
-5
arch/arm/mach-omap2/clock34xx.c
arch/arm/mach-omap2/clock34xx.c
+6
-6
arch/arm/mach-omap2/clock34xx.h
arch/arm/mach-omap2/clock34xx.h
+6
-6
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/devices.c
+4
-2
arch/arm/mach-omap2/prm-regbits-34xx.h
arch/arm/mach-omap2/prm-regbits-34xx.h
+1
-1
arch/arm/mach-omap2/usb-tusb6010.c
arch/arm/mach-omap2/usb-tusb6010.c
+1
-1
arch/arm/mach-pxa/viper.c
arch/arm/mach-pxa/viper.c
+1
-0
arch/arm/mach-realview/core.c
arch/arm/mach-realview/core.c
+0
-8
arch/arm/mach-realview/include/mach/smp.h
arch/arm/mach-realview/include/mach/smp.h
+2
-9
arch/arm/mach-realview/localtimer.c
arch/arm/mach-realview/localtimer.c
+4
-2
arch/arm/mach-realview/platsmp.c
arch/arm/mach-realview/platsmp.c
+3
-12
arch/arm/mach-s3c2410/mach-bast.c
arch/arm/mach-s3c2410/mach-bast.c
+1
-2
arch/arm/mach-versatile/core.c
arch/arm/mach-versatile/core.c
+1
-1
arch/arm/nwfpe/fpa11.h
arch/arm/nwfpe/fpa11.h
+4
-0
arch/arm/nwfpe/fpa11_cprt.c
arch/arm/nwfpe/fpa11_cprt.c
+0
-4
arch/arm/nwfpe/softfloat.h
arch/arm/nwfpe/softfloat.h
+2
-0
arch/arm/plat-omap/fb.c
arch/arm/plat-omap/fb.c
+3
-2
arch/arm/plat-omap/gpio.c
arch/arm/plat-omap/gpio.c
+1
-1
arch/arm/plat-s3c/clock.c
arch/arm/plat-s3c/clock.c
+0
-2
arch/arm/plat-s3c24xx/dma.c
arch/arm/plat-s3c24xx/dma.c
+1
-1
arch/arm/plat-s3c64xx/gpiolib.c
arch/arm/plat-s3c64xx/gpiolib.c
+1
-1
arch/arm/plat-s3c64xx/include/plat/gpio-bank-h.h
arch/arm/plat-s3c64xx/include/plat/gpio-bank-h.h
+10
-10
arch/mips/Makefile
arch/mips/Makefile
+3
-3
arch/mips/include/asm/uaccess.h
arch/mips/include/asm/uaccess.h
+1
-1
arch/mips/mm/tlb-r3k.c
arch/mips/mm/tlb-r3k.c
+2
-4
arch/mips/mm/tlb-r4k.c
arch/mips/mm/tlb-r4k.c
+2
-4
arch/mips/mm/tlb-r8k.c
arch/mips/mm/tlb-r8k.c
+1
-2
arch/mips/sgi-ip22/ip22-reset.c
arch/mips/sgi-ip22/ip22-reset.c
+1
-1
arch/mips/sgi-ip32/ip32-reset.c
arch/mips/sgi-ip32/ip32-reset.c
+5
-4
arch/powerpc/platforms/maple/pci.c
arch/powerpc/platforms/maple/pci.c
+14
-0
arch/sh/boards/board-ap325rxa.c
arch/sh/boards/board-ap325rxa.c
+3
-0
drivers/block/xen-blkfront.c
drivers/block/xen-blkfront.c
+6
-4
drivers/cdrom/viocd.c
drivers/cdrom/viocd.c
+1
-1
drivers/char/ipmi/ipmi_msghandler.c
drivers/char/ipmi/ipmi_msghandler.c
+7
-6
drivers/char/tpm/tpm_bios.c
drivers/char/tpm/tpm_bios.c
+2
-1
drivers/gpu/drm/drm_bufs.c
drivers/gpu/drm/drm_bufs.c
+8
-0
drivers/gpu/drm/drm_drv.c
drivers/gpu/drm/drm_drv.c
+1
-1
drivers/ide/ide-io.c
drivers/ide/ide-io.c
+2
-2
drivers/ide/ide-iops.c
drivers/ide/ide-iops.c
+17
-4
drivers/ide/ide-lib.c
drivers/ide/ide-lib.c
+6
-21
drivers/ide/ide-probe.c
drivers/ide/ide-probe.c
+6
-3
drivers/ide/via82cxxx.c
drivers/ide/via82cxxx.c
+2
-0
drivers/input/serio/ambakmi.c
drivers/input/serio/ambakmi.c
+1
-1
drivers/mfd/pcf50633-core.c
drivers/mfd/pcf50633-core.c
+1
-1
drivers/mfd/wm8350-core.c
drivers/mfd/wm8350-core.c
+0
-8
drivers/mmc/host/mmci.c
drivers/mmc/host/mmci.c
+1
-1
drivers/net/benet/be.h
drivers/net/benet/be.h
+14
-0
drivers/net/benet/be_main.c
drivers/net/benet/be_main.c
+5
-5
drivers/net/bonding/bond_3ad.c
drivers/net/bonding/bond_3ad.c
+8
-3
drivers/net/meth.c
drivers/net/meth.c
+14
-13
drivers/net/mlx4/en_cq.c
drivers/net/mlx4/en_cq.c
+3
-1
drivers/net/mv643xx_eth.c
drivers/net/mv643xx_eth.c
+22
-19
drivers/net/vxge/vxge-traffic.c
drivers/net/vxge/vxge-traffic.c
+1
-1
drivers/net/wimax/i2400m/rx.c
drivers/net/wimax/i2400m/rx.c
+2
-3
drivers/pci/pci.c
drivers/pci/pci.c
+2
-1
drivers/rtc/rtc-pl030.c
drivers/rtc/rtc-pl030.c
+1
-1
drivers/rtc/rtc-pl031.c
drivers/rtc/rtc-pl031.c
+1
-1
drivers/serial/amba-pl010.c
drivers/serial/amba-pl010.c
+1
-1
drivers/serial/amba-pl011.c
drivers/serial/amba-pl011.c
+1
-1
drivers/video/amba-clcd.c
drivers/video/amba-clcd.c
+1
-1
drivers/video/omap/dispc.c
drivers/video/omap/dispc.c
+8
-6
drivers/video/omap/rfbi.c
drivers/video/omap/rfbi.c
+5
-3
drivers/video/sh_mobile_lcdcfb.c
drivers/video/sh_mobile_lcdcfb.c
+6
-1
fs/cifs/cifssmb.c
fs/cifs/cifssmb.c
+1
-1
fs/cifs/dir.c
fs/cifs/dir.c
+7
-7
fs/cifs/file.c
fs/cifs/file.c
+37
-29
fs/cifs/link.c
fs/cifs/link.c
+26
-26
fs/nilfs2/ioctl.c
fs/nilfs2/ioctl.c
+1
-1
include/linux/amba/bus.h
include/linux/amba/bus.h
+1
-1
include/linux/ide.h
include/linux/ide.h
+1
-1
include/linux/mmzone.h
include/linux/mmzone.h
+26
-0
include/linux/pci_ids.h
include/linux/pci_ids.h
+1
-1
kernel/futex.c
kernel/futex.c
+13
-11
mm/mmzone.c
mm/mmzone.c
+15
-0
mm/rmap.c
mm/rmap.c
+1
-1
mm/vmstat.c
mm/vmstat.c
+4
-15
net/bridge/br_input.c
net/bridge/br_input.c
+5
-0
net/bridge/br_stp.c
net/bridge/br_stp.c
+3
-0
net/core/gen_estimator.c
net/core/gen_estimator.c
+7
-6
net/core/netpoll.c
net/core/netpoll.c
+6
-2
net/core/skbuff.c
net/core/skbuff.c
+1
-1
net/ipv4/Kconfig
net/ipv4/Kconfig
+1
-1
net/ipv4/ipconfig.c
net/ipv4/ipconfig.c
+12
-0
net/ipv4/tcp.c
net/ipv4/tcp.c
+4
-1
net/sched/sch_teql.c
net/sched/sch_teql.c
+3
-2
scripts/setlocalversion
scripts/setlocalversion
+23
-7
sound/arm/aaci.c
sound/arm/aaci.c
+1
-1
未找到文件。
Documentation/filesystems/tmpfs.txt
浏览文件 @
9bd7de51
...
...
@@ -133,4 +133,4 @@ RAM/SWAP in 10240 inodes and it is only accessible by root.
Author:
Christoph Rohland <cr@sap.com>, 1.12.01
Updated:
Hugh Dickins
<hugh@veritas.com>
, 4 June 2007
Hugh Dickins, 4 June 2007
Documentation/networking/ip-sysctl.txt
浏览文件 @
9bd7de51
...
...
@@ -1266,13 +1266,22 @@ sctp_rmem - vector of 3 INTEGERs: min, default, max
sctp_wmem - vector of 3 INTEGERs: min, default, max
See tcp_wmem for a description.
UNDOCUMENTED:
/proc/sys/net/core/*
dev_weight FIXME
dev_weight - INTEGER
The maximum number of packets that kernel can handle on a NAPI
interrupt, it's a Per-CPU variable.
Default: 64
/proc/sys/net/unix/*
max_dgram_qlen FIXME
max_dgram_qlen - INTEGER
The maximum length of dgram socket receive queue
Default: 10
UNDOCUMENTED:
/proc/sys/net/irda/*
fast_poll_increase FIXME
...
...
MAINTAINERS
浏览文件 @
9bd7de51
...
...
@@ -5579,6 +5579,14 @@ M: ian@mnementh.co.uk
S: Maintained
F: drivers/mmc/host/tmio_mmc.*
TMPFS (SHMEM FILESYSTEM)
P: Hugh Dickins
M: hugh.dickins@tiscali.co.uk
L: linux-mm@kvack.org
S: Maintained
F: include/linux/shmem_fs.h
F: mm/shmem.c
TPM DEVICE DRIVER
P: Debora Velarde
M: debora@linux.vnet.ibm.com
...
...
arch/arm/Kconfig
浏览文件 @
9bd7de51
...
...
@@ -273,6 +273,7 @@ config ARCH_EP93XX
select HAVE_CLK
select COMMON_CLKDEV
select ARCH_REQUIRE_GPIOLIB
select ARCH_HAS_HOLES_MEMORYMODEL
help
This enables support for the Cirrus EP93xx series of CPUs.
...
...
@@ -976,10 +977,9 @@ config OABI_COMPAT
UNPREDICTABLE (in fact it can be predicted that it won't work
at all). If in doubt say Y.
config ARCH_
FLATMEM_HAS_HOLES
config ARCH_
HAS_HOLES_MEMORYMODEL
bool
default y
depends on FLATMEM
default n
# Discontigmem is deprecated
config ARCH_DISCONTIGMEM_ENABLE
...
...
arch/arm/common/gic.c
浏览文件 @
9bd7de51
...
...
@@ -253,9 +253,9 @@ void __cpuinit gic_cpu_init(unsigned int gic_nr, void __iomem *base)
}
#ifdef CONFIG_SMP
void
gic_raise_softirq
(
c
pumask_t
cpu
mask
,
unsigned
int
irq
)
void
gic_raise_softirq
(
c
onst
struct
cpumask
*
mask
,
unsigned
int
irq
)
{
unsigned
long
map
=
*
cpus_addr
(
cpu
mask
);
unsigned
long
map
=
*
cpus_addr
(
*
mask
);
/* this always happens on GIC0 */
writel
(
map
<<
16
|
irq
,
gic_data
[
0
].
dist_base
+
GIC_DIST_SOFTINT
);
...
...
arch/arm/include/asm/hardware/gic.h
浏览文件 @
9bd7de51
...
...
@@ -36,7 +36,7 @@
void
gic_dist_init
(
unsigned
int
gic_nr
,
void
__iomem
*
base
,
unsigned
int
irq_start
);
void
gic_cpu_init
(
unsigned
int
gic_nr
,
void
__iomem
*
base
);
void
gic_cascade_irq
(
unsigned
int
gic_nr
,
unsigned
int
irq
);
void
gic_raise_softirq
(
c
pumask_t
cpu
mask
,
unsigned
int
irq
);
void
gic_raise_softirq
(
c
onst
struct
cpumask
*
mask
,
unsigned
int
irq
);
#endif
#endif
arch/arm/include/asm/smp.h
浏览文件 @
9bd7de51
...
...
@@ -53,17 +53,12 @@ extern void smp_store_cpu_info(unsigned int cpuid);
/*
* Raise an IPI cross call on CPUs in callmap.
*/
extern
void
smp_cross_call
(
cpumask_t
callmap
);
/*
* Broadcast a timer interrupt to the other CPUs.
*/
extern
void
smp_send_timer
(
void
);
extern
void
smp_cross_call
(
const
struct
cpumask
*
mask
);
/*
* Broadcast a clock event to other CPUs.
*/
extern
void
smp_timer_broadcast
(
c
pumask_t
mask
);
extern
void
smp_timer_broadcast
(
c
onst
struct
cpumask
*
mask
);
/*
* Boot a secondary CPU, and assign it the specified idle task.
...
...
@@ -102,7 +97,8 @@ extern int platform_cpu_kill(unsigned int cpu);
extern
void
platform_cpu_enable
(
unsigned
int
cpu
);
extern
void
arch_send_call_function_single_ipi
(
int
cpu
);
extern
void
arch_send_call_function_ipi
(
cpumask_t
mask
);
extern
void
arch_send_call_function_ipi_mask
(
const
struct
cpumask
*
mask
);
#define arch_send_call_function_ipi_mask arch_send_call_function_ipi_mask
/*
* Local timer interrupt handling function (can be IPI'ed).
...
...
arch/arm/kernel/smp.c
浏览文件 @
9bd7de51
...
...
@@ -326,14 +326,14 @@ void __init smp_prepare_boot_cpu(void)
per_cpu
(
cpu_data
,
cpu
).
idle
=
current
;
}
static
void
send_ipi_message
(
c
pumask_t
callmap
,
enum
ipi_msg_type
msg
)
static
void
send_ipi_message
(
c
onst
struct
cpumask
*
mask
,
enum
ipi_msg_type
msg
)
{
unsigned
long
flags
;
unsigned
int
cpu
;
local_irq_save
(
flags
);
for_each_cpu
_mask
(
cpu
,
callmap
)
{
for_each_cpu
(
cpu
,
mask
)
{
struct
ipi_data
*
ipi
=
&
per_cpu
(
ipi_data
,
cpu
);
spin_lock
(
&
ipi
->
lock
);
...
...
@@ -344,19 +344,19 @@ static void send_ipi_message(cpumask_t callmap, enum ipi_msg_type msg)
/*
* Call the platform specific cross-CPU call function.
*/
smp_cross_call
(
callmap
);
smp_cross_call
(
mask
);
local_irq_restore
(
flags
);
}
void
arch_send_call_function_ipi
(
cpumask_t
mask
)
void
arch_send_call_function_ipi
_mask
(
const
struct
cpumask
*
mask
)
{
send_ipi_message
(
mask
,
IPI_CALL_FUNC
);
}
void
arch_send_call_function_single_ipi
(
int
cpu
)
{
send_ipi_message
(
cpumask_of
_cpu
(
cpu
),
IPI_CALL_FUNC_SINGLE
);
send_ipi_message
(
cpumask_of
(
cpu
),
IPI_CALL_FUNC_SINGLE
);
}
void
show_ipi_list
(
struct
seq_file
*
p
)
...
...
@@ -498,17 +498,10 @@ asmlinkage void __exception do_IPI(struct pt_regs *regs)
void
smp_send_reschedule
(
int
cpu
)
{
send_ipi_message
(
cpumask_of
_cpu
(
cpu
),
IPI_RESCHEDULE
);
send_ipi_message
(
cpumask_of
(
cpu
),
IPI_RESCHEDULE
);
}
void
smp_send_timer
(
void
)
{
cpumask_t
mask
=
cpu_online_map
;
cpu_clear
(
smp_processor_id
(),
mask
);
send_ipi_message
(
mask
,
IPI_TIMER
);
}
void
smp_timer_broadcast
(
cpumask_t
mask
)
void
smp_timer_broadcast
(
const
struct
cpumask
*
mask
)
{
send_ipi_message
(
mask
,
IPI_TIMER
);
}
...
...
@@ -517,7 +510,7 @@ void smp_send_stop(void)
{
cpumask_t
mask
=
cpu_online_map
;
cpu_clear
(
smp_processor_id
(),
mask
);
send_ipi_message
(
mask
,
IPI_CPU_STOP
);
send_ipi_message
(
&
mask
,
IPI_CPU_STOP
);
}
/*
...
...
@@ -528,20 +521,17 @@ int setup_profiling_timer(unsigned int multiplier)
return
-
EINVAL
;
}
static
int
on_each_cpu_mask
(
void
(
*
func
)(
void
*
),
void
*
info
,
int
wait
,
cpumask_t
mask
)
static
void
on_each_cpu_mask
(
void
(
*
func
)(
void
*
),
void
*
info
,
int
wait
,
const
struct
cpumask
*
mask
)
{
int
ret
=
0
;
preempt_disable
();
ret
=
smp_call_function_mask
(
mask
,
func
,
info
,
wait
);
if
(
cpu
_isset
(
smp_processor_id
(),
mask
))
smp_call_function_many
(
mask
,
func
,
info
,
wait
);
if
(
cpu
mask_test_cpu
(
smp_processor_id
(),
mask
))
func
(
info
);
preempt_enable
();
return
ret
;
}
/**********************************************************************/
...
...
@@ -602,20 +592,17 @@ void flush_tlb_all(void)
void
flush_tlb_mm
(
struct
mm_struct
*
mm
)
{
cpumask_t
mask
=
mm
->
cpu_vm_mask
;
on_each_cpu_mask
(
ipi_flush_tlb_mm
,
mm
,
1
,
mask
);
on_each_cpu_mask
(
ipi_flush_tlb_mm
,
mm
,
1
,
&
mm
->
cpu_vm_mask
);
}
void
flush_tlb_page
(
struct
vm_area_struct
*
vma
,
unsigned
long
uaddr
)
{
cpumask_t
mask
=
vma
->
vm_mm
->
cpu_vm_mask
;
struct
tlb_args
ta
;
ta
.
ta_vma
=
vma
;
ta
.
ta_start
=
uaddr
;
on_each_cpu_mask
(
ipi_flush_tlb_page
,
&
ta
,
1
,
mask
);
on_each_cpu_mask
(
ipi_flush_tlb_page
,
&
ta
,
1
,
&
vma
->
vm_mm
->
cpu_vm_
mask
);
}
void
flush_tlb_kernel_page
(
unsigned
long
kaddr
)
...
...
@@ -630,14 +617,13 @@ void flush_tlb_kernel_page(unsigned long kaddr)
void
flush_tlb_range
(
struct
vm_area_struct
*
vma
,
unsigned
long
start
,
unsigned
long
end
)
{
cpumask_t
mask
=
vma
->
vm_mm
->
cpu_vm_mask
;
struct
tlb_args
ta
;
ta
.
ta_vma
=
vma
;
ta
.
ta_start
=
start
;
ta
.
ta_end
=
end
;
on_each_cpu_mask
(
ipi_flush_tlb_range
,
&
ta
,
1
,
mask
);
on_each_cpu_mask
(
ipi_flush_tlb_range
,
&
ta
,
1
,
&
vma
->
vm_mm
->
cpu_vm_
mask
);
}
void
flush_tlb_kernel_range
(
unsigned
long
start
,
unsigned
long
end
)
...
...
arch/arm/mach-ep93xx/clock.c
浏览文件 @
9bd7de51
...
...
@@ -21,15 +21,50 @@
#include <asm/div64.h>
#include <mach/hardware.h>
/*
* The EP93xx has two external crystal oscillators. To generate the
* required high-frequency clocks, the processor uses two phase-locked-
* loops (PLLs) to multiply the incoming external clock signal to much
* higher frequencies that are then divided down by programmable dividers
* to produce the needed clocks. The PLLs operate independently of one
* another.
*/
#define EP93XX_EXT_CLK_RATE 14745600
#define EP93XX_EXT_RTC_RATE 32768
struct
clk
{
unsigned
long
rate
;
int
users
;
int
sw_locked
;
u32
enable_reg
;
u32
enable_mask
;
unsigned
long
(
*
get_rate
)(
struct
clk
*
clk
);
};
static
struct
clk
clk_uart
=
{
.
rate
=
14745600
,
static
unsigned
long
get_uart_rate
(
struct
clk
*
clk
);
static
struct
clk
clk_uart1
=
{
.
sw_locked
=
1
,
.
enable_reg
=
EP93XX_SYSCON_DEVICE_CONFIG
,
.
enable_mask
=
EP93XX_SYSCON_DEVICE_CONFIG_U1EN
,
.
get_rate
=
get_uart_rate
,
};
static
struct
clk
clk_uart2
=
{
.
sw_locked
=
1
,
.
enable_reg
=
EP93XX_SYSCON_DEVICE_CONFIG
,
.
enable_mask
=
EP93XX_SYSCON_DEVICE_CONFIG_U2EN
,
.
get_rate
=
get_uart_rate
,
};
static
struct
clk
clk_uart3
=
{
.
sw_locked
=
1
,
.
enable_reg
=
EP93XX_SYSCON_DEVICE_CONFIG
,
.
enable_mask
=
EP93XX_SYSCON_DEVICE_CONFIG_U3EN
,
.
get_rate
=
get_uart_rate
,
};
static
struct
clk
clk_pll1
;
static
struct
clk
clk_f
;
...
...
@@ -95,9 +130,9 @@ static struct clk clk_m2m1 = {
{ .dev_id = dev, .con_id = con, .clk = ck }
static
struct
clk_lookup
clocks
[]
=
{
INIT_CK
(
"apb:uart1"
,
NULL
,
&
clk_uart
),
INIT_CK
(
"apb:uart2"
,
NULL
,
&
clk_uart
),
INIT_CK
(
"apb:uart3"
,
NULL
,
&
clk_uart
),
INIT_CK
(
"apb:uart1"
,
NULL
,
&
clk_uart
1
),
INIT_CK
(
"apb:uart2"
,
NULL
,
&
clk_uart
2
),
INIT_CK
(
"apb:uart3"
,
NULL
,
&
clk_uart
3
),
INIT_CK
(
NULL
,
"pll1"
,
&
clk_pll1
),
INIT_CK
(
NULL
,
"fclk"
,
&
clk_f
),
INIT_CK
(
NULL
,
"hclk"
,
&
clk_h
),
...
...
@@ -125,6 +160,8 @@ int clk_enable(struct clk *clk)
u32
value
;
value
=
__raw_readl
(
clk
->
enable_reg
);
if
(
clk
->
sw_locked
)
__raw_writel
(
0xaa
,
EP93XX_SYSCON_SWLOCK
);
__raw_writel
(
value
|
clk
->
enable_mask
,
clk
->
enable_reg
);
}
...
...
@@ -138,13 +175,29 @@ void clk_disable(struct clk *clk)
u32
value
;
value
=
__raw_readl
(
clk
->
enable_reg
);
if
(
clk
->
sw_locked
)
__raw_writel
(
0xaa
,
EP93XX_SYSCON_SWLOCK
);
__raw_writel
(
value
&
~
clk
->
enable_mask
,
clk
->
enable_reg
);
}
}
EXPORT_SYMBOL
(
clk_disable
);
static
unsigned
long
get_uart_rate
(
struct
clk
*
clk
)
{
u32
value
;
value
=
__raw_readl
(
EP93XX_SYSCON_CLOCK_CONTROL
);
if
(
value
&
EP93XX_SYSCON_CLOCK_UARTBAUD
)
return
EP93XX_EXT_CLK_RATE
;
else
return
EP93XX_EXT_CLK_RATE
/
2
;
}
unsigned
long
clk_get_rate
(
struct
clk
*
clk
)
{
if
(
clk
->
get_rate
)
return
clk
->
get_rate
(
clk
);
return
clk
->
rate
;
}
EXPORT_SYMBOL
(
clk_get_rate
);
...
...
@@ -162,7 +215,7 @@ static unsigned long calc_pll_rate(u32 config_word)
unsigned
long
long
rate
;
int
i
;
rate
=
14745600
;
rate
=
EP93XX_EXT_CLK_RATE
;
rate
*=
((
config_word
>>
11
)
&
0x1f
)
+
1
;
/* X1FBD */
rate
*=
((
config_word
>>
5
)
&
0x3f
)
+
1
;
/* X2FBD */
do_div
(
rate
,
(
config_word
&
0x1f
)
+
1
);
/* X2IPD */
...
...
@@ -195,7 +248,7 @@ static int __init ep93xx_clock_init(void)
value
=
__raw_readl
(
EP93XX_SYSCON_CLOCK_SET1
);
if
(
!
(
value
&
0x00800000
))
{
/* PLL1 bypassed? */
clk_pll1
.
rate
=
14745600
;
clk_pll1
.
rate
=
EP93XX_EXT_CLK_RATE
;
}
else
{
clk_pll1
.
rate
=
calc_pll_rate
(
value
);
}
...
...
@@ -206,7 +259,7 @@ static int __init ep93xx_clock_init(void)
value
=
__raw_readl
(
EP93XX_SYSCON_CLOCK_SET2
);
if
(
!
(
value
&
0x00080000
))
{
/* PLL2 bypassed? */
clk_pll2
.
rate
=
14745600
;
clk_pll2
.
rate
=
EP93XX_EXT_CLK_RATE
;
}
else
if
(
value
&
0x00040000
)
{
/* PLL2 enabled? */
clk_pll2
.
rate
=
calc_pll_rate
(
value
);
}
else
{
...
...
arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
浏览文件 @
9bd7de51
...
...
@@ -159,7 +159,10 @@
#define EP93XX_SYSCON_CLOCK_SET1 EP93XX_SYSCON_REG(0x20)
#define EP93XX_SYSCON_CLOCK_SET2 EP93XX_SYSCON_REG(0x24)
#define EP93XX_SYSCON_DEVICE_CONFIG EP93XX_SYSCON_REG(0x80)
#define EP93XX_SYSCON_DEVICE_CONFIG_CRUNCH_ENABLE 0x00800000
#define EP93XX_SYSCON_DEVICE_CONFIG_U3EN (1<<24)
#define EP93XX_SYSCON_DEVICE_CONFIG_CRUNCH_ENABLE (1<<23)
#define EP93XX_SYSCON_DEVICE_CONFIG_U2EN (1<<20)
#define EP93XX_SYSCON_DEVICE_CONFIG_U1EN (1<<18)
#define EP93XX_SYSCON_SWLOCK EP93XX_SYSCON_REG(0xc0)
#define EP93XX_WATCHDOG_BASE (EP93XX_APB_VIRT_BASE + 0x00140000)
...
...
arch/arm/mach-integrator/core.c
浏览文件 @
9bd7de51
...
...
@@ -121,7 +121,7 @@ static struct clk uartclk = {
.
rate
=
14745600
,
};
static
struct
clk_lookup
lookups
[]
__initdata
=
{
static
struct
clk_lookup
lookups
[]
=
{
{
/* UART0 */
.
dev_id
=
"mb:16"
,
.
clk
=
&
uartclk
,
...
...
arch/arm/mach-l7200/include/mach/sys-clock.h
浏览文件 @
9bd7de51
...
...
@@ -18,7 +18,7 @@
/* IO_START and IO_BASE are defined in hardware.h */
#define SYS_CLOCK_START (IO_START + SYS_CL
CO
K_OFF)
/* Physical address */
#define SYS_CLOCK_START (IO_START + SYS_CL
OC
K_OFF)
/* Physical address */
#define SYS_CLOCK_BASE (IO_BASE + SYS_CLOCK_OFF)
/* Virtual address */
/* Define the interface to the SYS_CLOCK */
...
...
arch/arm/mach-omap2/clock24xx.c
浏览文件 @
9bd7de51
...
...
@@ -103,10 +103,10 @@ static struct omap_clk omap24xx_clks[] = {
CLK
(
NULL
,
"mdm_ick"
,
&
mdm_ick
,
CK_243X
),
CLK
(
NULL
,
"mdm_osc_ck"
,
&
mdm_osc_ck
,
CK_243X
),
/* DSS domain clocks */
CLK
(
NULL
,
"dss_ick"
,
&
dss_ick
,
CK_243X
|
CK_242X
),
CLK
(
NULL
,
"dss1_fck"
,
&
dss1_fck
,
CK_243X
|
CK_242X
),
CLK
(
NULL
,
"dss2_fck"
,
&
dss2_fck
,
CK_243X
|
CK_242X
),
CLK
(
NULL
,
"dss_54m
_fck"
,
&
dss_54m_fck
,
CK_243X
|
CK_242X
),
CLK
(
"omapfb"
,
"ick"
,
&
dss_ick
,
CK_243X
|
CK_242X
),
CLK
(
"omapfb"
,
"dss1_fck"
,
&
dss1_fck
,
CK_243X
|
CK_242X
),
CLK
(
"omapfb"
,
"dss2_fck"
,
&
dss2_fck
,
CK_243X
|
CK_242X
),
CLK
(
"omapfb"
,
"tv
_fck"
,
&
dss_54m_fck
,
CK_243X
|
CK_242X
),
/* L3 domain clocks */
CLK
(
NULL
,
"core_l3_ck"
,
&
core_l3_ck
,
CK_243X
|
CK_242X
),
CLK
(
NULL
,
"ssi_fck"
,
&
ssi_ssr_sst_fck
,
CK_243X
|
CK_242X
),
...
...
@@ -206,7 +206,7 @@ static struct omap_clk omap24xx_clks[] = {
CLK
(
NULL
,
"aes_ick"
,
&
aes_ick
,
CK_243X
|
CK_242X
),
CLK
(
NULL
,
"pka_ick"
,
&
pka_ick
,
CK_243X
|
CK_242X
),
CLK
(
NULL
,
"usb_fck"
,
&
usb_fck
,
CK_243X
|
CK_242X
),
CLK
(
NULL
,
"usbhs_
ick"
,
&
usbhs_ick
,
CK_243X
),
CLK
(
"musb_hdrc"
,
"
ick"
,
&
usbhs_ick
,
CK_243X
),
CLK
(
"mmci-omap-hs.0"
,
"ick"
,
&
mmchs1_ick
,
CK_243X
),
CLK
(
"mmci-omap-hs.0"
,
"fck"
,
&
mmchs1_fck
,
CK_243X
),
CLK
(
"mmci-omap-hs.1"
,
"ick"
,
&
mmchs2_ick
,
CK_243X
),
...
...
arch/arm/mach-omap2/clock34xx.c
浏览文件 @
9bd7de51
...
...
@@ -157,7 +157,7 @@ static struct omap_clk omap34xx_clks[] = {
CLK
(
NULL
,
"ssi_ssr_fck"
,
&
ssi_ssr_fck
,
CK_343X
),
CLK
(
NULL
,
"ssi_sst_fck"
,
&
ssi_sst_fck
,
CK_343X
),
CLK
(
NULL
,
"core_l3_ick"
,
&
core_l3_ick
,
CK_343X
),
CLK
(
NULL
,
"hsotgusb_
ick"
,
&
hsotgusb_ick
,
CK_343X
),
CLK
(
"musb_hdrc"
,
"
ick"
,
&
hsotgusb_ick
,
CK_343X
),
CLK
(
NULL
,
"sdrc_ick"
,
&
sdrc_ick
,
CK_343X
),
CLK
(
NULL
,
"gpmc_fck"
,
&
gpmc_fck
,
CK_343X
),
CLK
(
NULL
,
"security_l3_ick"
,
&
security_l3_ick
,
CK_343X
),
...
...
@@ -197,11 +197,11 @@ static struct omap_clk omap34xx_clks[] = {
CLK
(
"omap_rng"
,
"ick"
,
&
rng_ick
,
CK_343X
),
CLK
(
NULL
,
"sha11_ick"
,
&
sha11_ick
,
CK_343X
),
CLK
(
NULL
,
"des1_ick"
,
&
des1_ick
,
CK_343X
),
CLK
(
NULL
,
"dss1_alwon_fck"
,
&
dss1_alwon_fck
,
CK_343X
),
CLK
(
NULL
,
"dss_
tv_fck"
,
&
dss_tv_fck
,
CK_343X
),
CLK
(
NULL
,
"dss_96m
_fck"
,
&
dss_96m_fck
,
CK_343X
),
CLK
(
NULL
,
"dss2_alwon_fck"
,
&
dss2_alwon_fck
,
CK_343X
),
CLK
(
NULL
,
"dss_ick"
,
&
dss_ick
,
CK_343X
),
CLK
(
"omapfb"
,
"dss1_fck"
,
&
dss1_alwon_fck
,
CK_343X
),
CLK
(
"omapfb"
,
"
tv_fck"
,
&
dss_tv_fck
,
CK_343X
),
CLK
(
"omapfb"
,
"video
_fck"
,
&
dss_96m_fck
,
CK_343X
),
CLK
(
"omapfb"
,
"dss2_fck"
,
&
dss2_alwon_fck
,
CK_343X
),
CLK
(
"omapfb"
,
"ick"
,
&
dss_ick
,
CK_343X
),
CLK
(
NULL
,
"cam_mclk"
,
&
cam_mclk
,
CK_343X
),
CLK
(
NULL
,
"cam_ick"
,
&
cam_ick
,
CK_343X
),
CLK
(
NULL
,
"csi2_96m_fck"
,
&
csi2_96m_fck
,
CK_343X
),
...
...
arch/arm/mach-omap2/clock34xx.h
浏览文件 @
9bd7de51
...
...
@@ -2182,7 +2182,7 @@ static struct clk wkup_32k_fck = {
static
struct
clk
gpio1_dbck
=
{
.
name
=
"gpio1_dbck"
,
.
ops
=
&
clkops_omap2_dflt
_wait
,
.
ops
=
&
clkops_omap2_dflt
,
.
parent
=
&
wkup_32k_fck
,
.
enable_reg
=
OMAP_CM_REGADDR
(
WKUP_MOD
,
CM_FCLKEN
),
.
enable_bit
=
OMAP3430_EN_GPIO1_SHIFT
,
...
...
@@ -2427,7 +2427,7 @@ static struct clk per_32k_alwon_fck = {
static
struct
clk
gpio6_dbck
=
{
.
name
=
"gpio6_dbck"
,
.
ops
=
&
clkops_omap2_dflt
_wait
,
.
ops
=
&
clkops_omap2_dflt
,
.
parent
=
&
per_32k_alwon_fck
,
.
enable_reg
=
OMAP_CM_REGADDR
(
OMAP3430_PER_MOD
,
CM_FCLKEN
),
.
enable_bit
=
OMAP3430_EN_GPIO6_SHIFT
,
...
...
@@ -2437,7 +2437,7 @@ static struct clk gpio6_dbck = {
static
struct
clk
gpio5_dbck
=
{
.
name
=
"gpio5_dbck"
,
.
ops
=
&
clkops_omap2_dflt
_wait
,
.
ops
=
&
clkops_omap2_dflt
,
.
parent
=
&
per_32k_alwon_fck
,
.
enable_reg
=
OMAP_CM_REGADDR
(
OMAP3430_PER_MOD
,
CM_FCLKEN
),
.
enable_bit
=
OMAP3430_EN_GPIO5_SHIFT
,
...
...
@@ -2447,7 +2447,7 @@ static struct clk gpio5_dbck = {
static
struct
clk
gpio4_dbck
=
{
.
name
=
"gpio4_dbck"
,
.
ops
=
&
clkops_omap2_dflt
_wait
,
.
ops
=
&
clkops_omap2_dflt
,
.
parent
=
&
per_32k_alwon_fck
,
.
enable_reg
=
OMAP_CM_REGADDR
(
OMAP3430_PER_MOD
,
CM_FCLKEN
),
.
enable_bit
=
OMAP3430_EN_GPIO4_SHIFT
,
...
...
@@ -2457,7 +2457,7 @@ static struct clk gpio4_dbck = {
static
struct
clk
gpio3_dbck
=
{
.
name
=
"gpio3_dbck"
,
.
ops
=
&
clkops_omap2_dflt
_wait
,
.
ops
=
&
clkops_omap2_dflt
,
.
parent
=
&
per_32k_alwon_fck
,
.
enable_reg
=
OMAP_CM_REGADDR
(
OMAP3430_PER_MOD
,
CM_FCLKEN
),
.
enable_bit
=
OMAP3430_EN_GPIO3_SHIFT
,
...
...
@@ -2467,7 +2467,7 @@ static struct clk gpio3_dbck = {
static
struct
clk
gpio2_dbck
=
{
.
name
=
"gpio2_dbck"
,
.
ops
=
&
clkops_omap2_dflt
_wait
,
.
ops
=
&
clkops_omap2_dflt
,
.
parent
=
&
per_32k_alwon_fck
,
.
enable_reg
=
OMAP_CM_REGADDR
(
OMAP3430_PER_MOD
,
CM_FCLKEN
),
.
enable_bit
=
OMAP3430_EN_GPIO2_SHIFT
,
...
...
arch/arm/mach-omap2/devices.c
浏览文件 @
9bd7de51
...
...
@@ -354,10 +354,12 @@ static void omap_init_mcspi(void)
platform_device_register
(
&
omap2_mcspi1
);
platform_device_register
(
&
omap2_mcspi2
);
#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3)
platform_device_register
(
&
omap2_mcspi3
);
if
(
cpu_is_omap2430
()
||
cpu_is_omap343x
())
platform_device_register
(
&
omap2_mcspi3
);
#endif
#ifdef CONFIG_ARCH_OMAP3
platform_device_register
(
&
omap2_mcspi4
);
if
(
cpu_is_omap343x
())
platform_device_register
(
&
omap2_mcspi4
);
#endif
}
...
...
arch/arm/mach-omap2/prm-regbits-34xx.h
浏览文件 @
9bd7de51
...
...
@@ -409,7 +409,7 @@
/* PM_PREPWSTST_CAM specific bits */
/* PM_PWSTCTRL_USBHOST specific bits */
#define OMAP3430ES2_SAVEANDRESTORE_SHIFT
(1 << 4)
#define OMAP3430ES2_SAVEANDRESTORE_SHIFT
4
/* RM_RSTST_PER specific bits */
...
...
arch/arm/mach-omap2/usb-tusb6010.c
浏览文件 @
9bd7de51
...
...
@@ -187,7 +187,7 @@ int tusb6010_platform_retime(unsigned is_refclk)
unsigned
sysclk_ps
;
int
status
;
if
(
!
refclk_psec
||
sys
clk_ps
==
0
)
if
(
!
refclk_psec
||
f
clk_ps
==
0
)
return
-
ENODEV
;
sysclk_ps
=
is_refclk
?
refclk_psec
:
TUSB6010_OSCCLK_60
;
...
...
arch/arm/mach-pxa/viper.c
浏览文件 @
9bd7de51
...
...
@@ -46,6 +46,7 @@
#include <mach/audio.h>
#include <mach/pxafb.h>
#include <mach/i2c.h>
#include <mach/regs-uart.h>
#include <mach/viper.h>
#include <asm/setup.h>
...
...
arch/arm/mach-realview/core.c
浏览文件 @
9bd7de51
...
...
@@ -750,14 +750,6 @@ void __init realview_timer_init(unsigned int timer_irq)
{
u32
val
;
#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
/*
* The dummy clock device has to be registered before the main device
* so that the latter will broadcast the clock events
*/
local_timer_setup
();
#endif
/*
* set clock frequency:
* REALVIEW_REFCLK is 32KHz
...
...
arch/arm/mach-realview/include/mach/smp.h
浏览文件 @
9bd7de51
...
...
@@ -15,16 +15,9 @@
/*
* We use IRQ1 as the IPI
*/
static
inline
void
smp_cross_call
(
cpumask_t
callmap
)
{
gic_raise_softirq
(
callmap
,
1
);
}
/*
* Do nothing on MPcore.
*/
static
inline
void
smp_cross_call_done
(
cpumask_t
callmap
)
static
inline
void
smp_cross_call
(
const
struct
cpumask
*
mask
)
{
gic_raise_softirq
(
mask
,
1
);
}
#endif
arch/arm/mach-realview/localtimer.c
浏览文件 @
9bd7de51
...
...
@@ -189,8 +189,10 @@ void __cpuinit local_timer_setup(void)
struct
clock_event_device
*
clk
=
&
per_cpu
(
local_clockevent
,
cpu
);
clk
->
name
=
"dummy_timer"
;
clk
->
features
=
CLOCK_EVT_FEAT_DUMMY
;
clk
->
rating
=
200
;
clk
->
features
=
CLOCK_EVT_FEAT_ONESHOT
|
CLOCK_EVT_FEAT_PERIODIC
|
CLOCK_EVT_FEAT_DUMMY
;
clk
->
rating
=
400
;
clk
->
mult
=
1
;
clk
->
set_mode
=
dummy_timer_set_mode
;
clk
->
broadcast
=
smp_timer_broadcast
;
...
...
arch/arm/mach-realview/platsmp.c
浏览文件 @
9bd7de51
...
...
@@ -77,13 +77,6 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
{
trace_hardirqs_off
();
/*
* the primary core may have used a "cross call" soft interrupt
* to get this processor out of WFI in the BootMonitor - make
* sure that we are no longer being sent this soft interrupt
*/
smp_cross_call_done
(
cpumask_of_cpu
(
cpu
));
/*
* if any interrupts are already enabled for the primary
* core (e.g. timer irq), then they will not have been enabled
...
...
@@ -136,7 +129,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Use smp_cross_call() for this, since there's little
* point duplicating the code here
*/
smp_cross_call
(
cpumask_of
_cpu
(
cpu
));
smp_cross_call
(
cpumask_of
(
cpu
));
timeout
=
jiffies
+
(
1
*
HZ
);
while
(
time_before
(
jiffies
,
timeout
))
{
...
...
@@ -224,11 +217,9 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
if
(
max_cpus
>
ncores
)
max_cpus
=
ncores
;
#if
def CONFIG_LOCAL_TIMERS
#if
defined(CONFIG_LOCAL_TIMERS) || defined(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST)
/*
* Enable the local timer for primary CPU. If the device is
* dummy (!CONFIG_LOCAL_TIMERS), it was already registers in
* realview_timer_init
* Enable the local timer or broadcast device for the boot CPU.
*/
local_timer_setup
();
#endif
...
...
arch/arm/mach-s3c2410/mach-bast.c
浏览文件 @
9bd7de51
...
...
@@ -588,8 +588,6 @@ static void __init bast_map_io(void)
s3c_device_nand
.
dev
.
platform_data
=
&
bast_nand_info
;
s3c_i2c0_set_platdata
(
&
bast_i2c_info
);
s3c24xx_init_io
(
bast_iodesc
,
ARRAY_SIZE
(
bast_iodesc
));
s3c24xx_init_clocks
(
0
);
s3c24xx_init_uarts
(
bast_uartcfgs
,
ARRAY_SIZE
(
bast_uartcfgs
));
...
...
@@ -602,6 +600,7 @@ static void __init bast_init(void)
sysdev_class_register
(
&
bast_pm_sysclass
);
sysdev_register
(
&
bast_pm_sysdev
);
s3c_i2c0_set_platdata
(
&
bast_i2c_info
);
s3c24xx_fb_set_platdata
(
&
bast_fb_info
);
platform_add_devices
(
bast_devices
,
ARRAY_SIZE
(
bast_devices
));
...
...
arch/arm/mach-versatile/core.c
浏览文件 @
9bd7de51
...
...
@@ -413,7 +413,7 @@ static struct clk ref24_clk = {
.
rate
=
24000000
,
};
static
struct
clk_lookup
lookups
[]
__initdata
=
{
static
struct
clk_lookup
lookups
[]
=
{
{
/* UART0 */
.
dev_id
=
"dev:f1"
,
.
clk
=
&
ref24_clk
,
...
...
arch/arm/nwfpe/fpa11.h
浏览文件 @
9bd7de51
...
...
@@ -114,4 +114,8 @@ extern unsigned int SingleCPDO(struct roundingData *roundData,
extern
unsigned
int
DoubleCPDO
(
struct
roundingData
*
roundData
,
const
unsigned
int
opcode
,
FPREG
*
rFd
);
/* extneded_cpdo.c */
extern
unsigned
int
ExtendedCPDO
(
struct
roundingData
*
roundData
,
const
unsigned
int
opcode
,
FPREG
*
rFd
);
#endif
arch/arm/nwfpe/fpa11_cprt.c
浏览文件 @
9bd7de51
...
...
@@ -27,10 +27,6 @@
#include "fpmodule.inl"
#include "softfloat.h"
#ifdef CONFIG_FPE_NWFPE_XP
extern
flag
floatx80_is_nan
(
floatx80
);
#endif
unsigned
int
PerformFLT
(
const
unsigned
int
opcode
);
unsigned
int
PerformFIX
(
const
unsigned
int
opcode
);
...
...
arch/arm/nwfpe/softfloat.h
浏览文件 @
9bd7de51
...
...
@@ -226,6 +226,8 @@ char floatx80_le_quiet( floatx80, floatx80 );
char
floatx80_lt_quiet
(
floatx80
,
floatx80
);
char
floatx80_is_signaling_nan
(
floatx80
);
extern
flag
floatx80_is_nan
(
floatx80
);
#endif
static
inline
flag
extractFloat32Sign
(
float32
a
)
...
...
arch/arm/plat-omap/fb.c
浏览文件 @
9bd7de51
...
...
@@ -206,9 +206,10 @@ void __init omapfb_reserve_sdram(void)
config_invalid
=
1
;
return
;
}
if
(
rg
.
paddr
)
if
(
rg
.
paddr
)
{
reserve_bootmem
(
rg
.
paddr
,
rg
.
size
,
BOOTMEM_DEFAULT
);
reserved
+=
rg
.
size
;
reserved
+=
rg
.
size
;
}
omapfb_config
.
mem_desc
.
region
[
i
]
=
rg
;
configured_regions
++
;
}
...
...
arch/arm/plat-omap/gpio.c
浏览文件 @
9bd7de51
...
...
@@ -307,7 +307,7 @@ static inline int gpio_valid(int gpio)
return
0
;
if
(
cpu_is_omap24xx
()
&&
gpio
<
128
)
return
0
;
if
(
cpu_is_omap34xx
()
&&
gpio
<
1
60
)
if
(
cpu_is_omap34xx
()
&&
gpio
<
1
92
)
return
0
;
return
-
1
;
}
...
...
arch/arm/plat-s3c/clock.c
浏览文件 @
9bd7de51
...
...
@@ -306,8 +306,6 @@ struct clk s3c24xx_uclk = {
int
s3c24xx_register_clock
(
struct
clk
*
clk
)
{
clk
->
owner
=
THIS_MODULE
;
if
(
clk
->
enable
==
NULL
)
clk
->
enable
=
clk_null_enable
;
...
...
arch/arm/plat-s3c24xx/dma.c
浏览文件 @
9bd7de51
...
...
@@ -1235,7 +1235,7 @@ int s3c2410_dma_getposition(unsigned int channel, dma_addr_t *src, dma_addr_t *d
EXPORT_SYMBOL
(
s3c2410_dma_getposition
);
static
struct
s3c2410_dma_chan
*
to_dma_chan
(
struct
sys_device
*
dev
)
static
inline
struct
s3c2410_dma_chan
*
to_dma_chan
(
struct
sys_device
*
dev
)
{
return
container_of
(
dev
,
struct
s3c2410_dma_chan
,
dev
);
}
...
...
arch/arm/plat-s3c64xx/gpiolib.c
浏览文件 @
9bd7de51
...
...
@@ -57,7 +57,7 @@
#if 1
#define gpio_dbg(x...) do { } while(0)
#else
#define gpio_dbg(x...) printk(KERN_DEBUG
##
x)
#define gpio_dbg(x...) printk(KERN_DEBUG x)
#endif
/* The s3c64xx_gpiolib_4bit routines are to control the gpio banks where
...
...
arch/arm/plat-s3c64xx/include/plat/gpio-bank-h.h
浏览文件 @
9bd7de51
...
...
@@ -61,14 +61,14 @@
#define S3C64XX_GPH7_ADDR_CF1 (0x06 << 28)
#define S3C64XX_GPH7_EINT_G6_7 (0x07 << 28)
#define S3C64XX_GPH8_MMC1_DATA6 (0x02 << 32)
#define S3C64XX_GPH8_MMC2_DATA2 (0x03 << 32)
#define S3C64XX_GPH8_I2S_V40_LRCLK (0x05 << 32)
#define S3C64XX_GPH8_ADDR_CF2 (0x06 << 32)
#define S3C64XX_GPH8_EINT_G6_8 (0x07 << 32)
#define S3C64XX_GPH9_MMC1_DATA7 (0x02 << 36)
#define S3C64XX_GPH9_MMC2_DATA3 (0x03 << 36)
#define S3C64XX_GPH9_I2S_V40_DI (0x05 << 36)
#define S3C64XX_GPH9_EINT_G6_9 (0x07 << 36)
#define S3C64XX_GPH8_MMC1_DATA6 (0x02 << 0)
#define S3C64XX_GPH8_MMC2_DATA2 (0x03 << 0)
#define S3C64XX_GPH8_I2S_V40_LRCLK (0x05 << 0)
#define S3C64XX_GPH8_ADDR_CF2 (0x06 << 0)
#define S3C64XX_GPH8_EINT_G6_8 (0x07 << 0)
#define S3C64XX_GPH9_OUTPUT (0x01 << 4)
#define S3C64XX_GPH9_MMC1_DATA7 (0x02 << 4)
#define S3C64XX_GPH9_MMC2_DATA3 (0x03 << 4)
#define S3C64XX_GPH9_I2S_V40_DI (0x05 << 4)
#define S3C64XX_GPH9_EINT_G6_9 (0x07 << 4)
arch/mips/Makefile
浏览文件 @
9bd7de51
...
...
@@ -473,12 +473,12 @@ endif
# Simplified: what IP22 does at 128MB+ in ksegN, IP28 does at 512MB+ in xkphys
#
ifdef
CONFIG_SGI_IP28
ifeq
($(call cc-option-yn,-mr10k-cache-barrier=
1
), n)
$(error
gcc
doesn
't support needed option -mr10k-cache-barrier=
1
)
ifeq
($(call cc-option-yn,-mr10k-cache-barrier=
store
), n)
$(error
gcc
doesn
't support needed option -mr10k-cache-barrier=
store
)
endif
endif
core-$(CONFIG_SGI_IP28) += arch/mips/sgi-ip22/
cflags-$(CONFIG_SGI_IP28) += -mr10k-cache-barrier=
1
-I$(srctree)/arch/mips/include/asm/mach-ip28
cflags-$(CONFIG_SGI_IP28) += -mr10k-cache-barrier=
store
-I$(srctree)/arch/mips/include/asm/mach-ip28
load-$(CONFIG_SGI_IP28) += 0xa800000020004000
#
...
...
arch/mips/include/asm/uaccess.h
浏览文件 @
9bd7de51
...
...
@@ -956,7 +956,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
void __user * __cl_addr = (addr); \
unsigned long __cl_size = (n); \
if (__cl_size && access_ok(VERIFY_WRITE, \
((unsigned long)(__cl_addr))
, __cl_size)) \
__cl_addr
, __cl_size)) \
__cl_size = __clear_user(__cl_addr, __cl_size); \
__cl_size; \
})
...
...
arch/mips/mm/tlb-r3k.c
浏览文件 @
9bd7de51
...
...
@@ -82,8 +82,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
int
cpu
=
smp_processor_id
();
if
(
cpu_context
(
cpu
,
mm
)
!=
0
)
{
unsigned
long
flags
;
int
size
;
unsigned
long
size
,
flags
;
#ifdef DEBUG_TLB
printk
(
"[tlbrange<%lu,0x%08lx,0x%08lx>]"
,
...
...
@@ -121,8 +120,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
void
local_flush_tlb_kernel_range
(
unsigned
long
start
,
unsigned
long
end
)
{
unsigned
long
flags
;
int
size
;
unsigned
long
size
,
flags
;
#ifdef DEBUG_TLB
printk
(
"[tlbrange<%lu,0x%08lx,0x%08lx>]"
,
start
,
end
);
...
...
arch/mips/mm/tlb-r4k.c
浏览文件 @
9bd7de51
...
...
@@ -117,8 +117,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
int
cpu
=
smp_processor_id
();
if
(
cpu_context
(
cpu
,
mm
)
!=
0
)
{
unsigned
long
flags
;
int
size
;
unsigned
long
size
,
flags
;
ENTER_CRITICAL
(
flags
);
size
=
(
end
-
start
+
(
PAGE_SIZE
-
1
))
>>
PAGE_SHIFT
;
...
...
@@ -160,8 +159,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
void
local_flush_tlb_kernel_range
(
unsigned
long
start
,
unsigned
long
end
)
{
unsigned
long
flags
;
int
size
;
unsigned
long
size
,
flags
;
ENTER_CRITICAL
(
flags
);
size
=
(
end
-
start
+
(
PAGE_SIZE
-
1
))
>>
PAGE_SHIFT
;
...
...
arch/mips/mm/tlb-r8k.c
浏览文件 @
9bd7de51
...
...
@@ -111,8 +111,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
/* Usable for KV1 addresses only! */
void
local_flush_tlb_kernel_range
(
unsigned
long
start
,
unsigned
long
end
)
{
unsigned
long
flags
;
int
size
;
unsigned
long
size
,
flags
;
size
=
(
end
-
start
+
(
PAGE_SIZE
-
1
))
>>
PAGE_SHIFT
;
size
=
(
size
+
1
)
>>
1
;
...
...
arch/mips/sgi-ip22/ip22-reset.c
浏览文件 @
9bd7de51
...
...
@@ -148,7 +148,7 @@ static irqreturn_t panel_int(int irq, void *dev_id)
if
(
sgint
->
istat1
&
SGINT_ISTAT1_PWR
)
{
/* Wait until interrupt goes away */
disable_irq
(
SGI_PANEL_IRQ
);
disable_irq
_nosync
(
SGI_PANEL_IRQ
);
init_timer
(
&
debounce_timer
);
debounce_timer
.
function
=
debounce
;
debounce_timer
.
expires
=
jiffies
+
5
;
...
...
arch/mips/sgi-ip32/ip32-reset.c
浏览文件 @
9bd7de51
...
...
@@ -53,7 +53,7 @@ static inline void ip32_machine_halt(void)
static
void
ip32_machine_power_off
(
void
)
{
volatile
unsigned
char
reg_a
,
xctrl_a
,
xctrl_b
;
unsigned
char
reg_a
,
xctrl_a
,
xctrl_b
;
disable_irq
(
MACEISA_RTC_IRQ
);
reg_a
=
CMOS_READ
(
RTC_REG_A
);
...
...
@@ -91,9 +91,10 @@ static void blink_timeout(unsigned long data)
static
void
debounce
(
unsigned
long
data
)
{
volatile
unsigned
char
reg_a
,
reg_c
,
xctrl_a
;
unsigned
char
reg_a
,
reg_c
,
xctrl_a
;
reg_c
=
CMOS_READ
(
RTC_INTR_FLAGS
);
reg_a
=
CMOS_READ
(
RTC_REG_A
);
CMOS_WRITE
(
reg_a
|
DS_REGA_DV0
,
RTC_REG_A
);
wbflush
();
xctrl_a
=
CMOS_READ
(
DS_B1_XCTRL4A
);
...
...
@@ -137,7 +138,7 @@ static inline void ip32_power_button(void)
static
irqreturn_t
ip32_rtc_int
(
int
irq
,
void
*
dev_id
)
{
volatile
unsigned
char
reg_c
;
unsigned
char
reg_c
;
reg_c
=
CMOS_READ
(
RTC_INTR_FLAGS
);
if
(
!
(
reg_c
&
RTC_IRQF
))
{
...
...
@@ -145,7 +146,7 @@ static irqreturn_t ip32_rtc_int(int irq, void *dev_id)
"%s: RTC IRQ without RTC_IRQF
\n
"
,
__func__
);
}
/* Wait until interrupt goes away */
disable_irq
(
MACEISA_RTC_IRQ
);
disable_irq
_nosync
(
MACEISA_RTC_IRQ
);
init_timer
(
&
debounce_timer
);
debounce_timer
.
function
=
debounce
;
debounce_timer
.
expires
=
jiffies
+
50
;
...
...
arch/powerpc/platforms/maple/pci.c
浏览文件 @
9bd7de51
...
...
@@ -592,3 +592,17 @@ int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel)
}
return
irq
;
}
static
void
__devinit
quirk_ipr_msi
(
struct
pci_dev
*
dev
)
{
/* Something prevents MSIs from the IPR from working on Bimini,
* and the driver has no smarts to recover. So disable MSI
* on it for now. */
if
(
machine_is
(
maple
))
{
dev
->
no_msi
=
1
;
dev_info
(
&
dev
->
dev
,
"Quirk disabled MSI
\n
"
);
}
}
DECLARE_PCI_FIXUP_FINAL
(
PCI_VENDOR_ID_IBM
,
PCI_DEVICE_ID_IBM_OBSIDIAN
,
quirk_ipr_msi
);
arch/sh/boards/board-ap325rxa.c
浏览文件 @
9bd7de51
...
...
@@ -263,6 +263,9 @@ static int camera_probe(void)
struct
i2c_msg
msg
;
int
ret
;
if
(
!
a
)
return
-
ENODEV
;
camera_power
(
1
);
msg
.
addr
=
0x6e
;
msg
.
buf
=
camera_ncm03j_magic
;
...
...
drivers/block/xen-blkfront.c
浏览文件 @
9bd7de51
...
...
@@ -932,8 +932,6 @@ static void blkfront_closing(struct xenbus_device *dev)
spin_lock_irqsave
(
&
blkif_io_lock
,
flags
);
del_gendisk
(
info
->
gd
);
/* No more blkif_request(). */
blk_stop_queue
(
info
->
rq
);
...
...
@@ -947,6 +945,8 @@ static void blkfront_closing(struct xenbus_device *dev)
blk_cleanup_queue
(
info
->
rq
);
info
->
rq
=
NULL
;
del_gendisk
(
info
->
gd
);
out:
xenbus_frontend_closed
(
dev
);
}
...
...
@@ -975,8 +975,10 @@ static void backend_changed(struct xenbus_device *dev,
break
;
case
XenbusStateClosing
:
if
(
info
->
gd
==
NULL
)
xenbus_dev_fatal
(
dev
,
-
ENODEV
,
"gd is NULL"
);
if
(
info
->
gd
==
NULL
)
{
xenbus_frontend_closed
(
dev
);
break
;
}
bd
=
bdget_disk
(
info
->
gd
,
0
);
if
(
bd
==
NULL
)
xenbus_dev_fatal
(
dev
,
-
ENODEV
,
"bdget failed"
);
...
...
drivers/cdrom/viocd.c
浏览文件 @
9bd7de51
...
...
@@ -570,7 +570,7 @@ static int viocd_probe(struct vio_dev *vdev, const struct vio_device_id *id)
struct
device_node
*
node
=
vdev
->
dev
.
archdata
.
of_node
;
deviceno
=
vdev
->
unit_address
;
if
(
deviceno
>
VIOCD_MAX_CD
)
if
(
deviceno
>
=
VIOCD_MAX_CD
)
return
-
ENODEV
;
if
(
!
node
)
return
-
ENODEV
;
...
...
drivers/char/ipmi/ipmi_msghandler.c
浏览文件 @
9bd7de51
...
...
@@ -2856,6 +2856,7 @@ int ipmi_register_smi(struct ipmi_smi_handlers *handlers,
/* Assume a single IPMB channel at zero. */
intf
->
channels
[
0
].
medium
=
IPMI_CHANNEL_MEDIUM_IPMB
;
intf
->
channels
[
0
].
protocol
=
IPMI_CHANNEL_PROTOCOL_IPMB
;
intf
->
curr_channel
=
IPMI_MAX_CHANNELS
;
}
if
(
rv
==
0
)
...
...
@@ -3648,13 +3649,13 @@ static int handle_new_recv_msg(ipmi_smi_t intf,
}
/*
*
* We need to make sure the channels have been initialized.
*
* The channel_handler routine will set the "curr_channel"
*
* equal to or greater than IPMI_MAX_CHANNELS when all the
*
* channels for this interface have been initialized.
*/
* We need to make sure the channels have been initialized.
* The channel_handler routine will set the "curr_channel"
* equal to or greater than IPMI_MAX_CHANNELS when all the
* channels for this interface have been initialized.
*/
if
(
intf
->
curr_channel
<
IPMI_MAX_CHANNELS
)
{
requeue
=
1
;
/* Just put the message back for now
*/
requeue
=
0
;
/* Throw the message away
*/
goto
out
;
}
...
...
drivers/char/tpm/tpm_bios.c
浏览文件 @
9bd7de51
...
...
@@ -212,7 +212,8 @@ static int get_event_name(char *dest, struct tcpa_event *event,
unsigned
char
*
event_entry
)
{
const
char
*
name
=
""
;
char
data
[
40
]
=
""
;
/* 41 so there is room for 40 data and 1 nul */
char
data
[
41
]
=
""
;
int
i
,
n_len
=
0
,
d_len
=
0
;
struct
tcpa_pc_event
*
pc_event
;
...
...
drivers/gpu/drm/drm_bufs.c
浏览文件 @
9bd7de51
...
...
@@ -170,6 +170,14 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset,
}
DRM_DEBUG
(
"offset = 0x%08llx, size = 0x%08lx, type = %d
\n
"
,
(
unsigned
long
long
)
map
->
offset
,
map
->
size
,
map
->
type
);
/* page-align _DRM_SHM maps. They are allocated here so there is no security
* hole created by that and it works around various broken drivers that use
* a non-aligned quantity to map the SAREA. --BenH
*/
if
(
map
->
type
==
_DRM_SHM
)
map
->
size
=
PAGE_ALIGN
(
map
->
size
);
if
((
map
->
offset
&
(
~
(
resource_size_t
)
PAGE_MASK
))
||
(
map
->
size
&
(
~
PAGE_MASK
)))
{
drm_free
(
map
,
sizeof
(
*
map
),
DRM_MEM_MAPS
);
return
-
EINVAL
;
...
...
drivers/gpu/drm/drm_drv.c
浏览文件 @
9bd7de51
...
...
@@ -481,7 +481,7 @@ int drm_ioctl(struct inode *inode, struct file *filp,
}
retcode
=
func
(
dev
,
kdata
,
file_priv
);
if
(
(
retcode
==
0
)
&&
(
cmd
&
IOC_OUT
)
)
{
if
(
cmd
&
IOC_OUT
)
{
if
(
copy_to_user
((
void
__user
*
)
arg
,
kdata
,
_IOC_SIZE
(
cmd
))
!=
0
)
retcode
=
-
EFAULT
;
...
...
drivers/ide/ide-io.c
浏览文件 @
9bd7de51
...
...
@@ -704,7 +704,7 @@ void ide_timer_expiry (unsigned long data)
}
spin_lock_irq
(
&
hwif
->
lock
);
enable_irq
(
hwif
->
irq
);
if
(
startstop
==
ide_stopped
)
{
if
(
startstop
==
ide_stopped
&&
hwif
->
polling
==
0
)
{
rq_in_flight
=
hwif
->
rq
;
hwif
->
rq
=
NULL
;
ide_unlock_port
(
hwif
);
...
...
@@ -879,7 +879,7 @@ irqreturn_t ide_intr (int irq, void *dev_id)
* same irq as is currently being serviced here, and Linux
* won't allow another of the same (on any CPU) until we return.
*/
if
(
startstop
==
ide_stopped
)
{
if
(
startstop
==
ide_stopped
&&
hwif
->
polling
==
0
)
{
BUG_ON
(
hwif
->
handler
);
rq_in_flight
=
hwif
->
rq
;
hwif
->
rq
=
NULL
;
...
...
drivers/ide/ide-iops.c
浏览文件 @
9bd7de51
...
...
@@ -206,8 +206,6 @@ EXPORT_SYMBOL_GPL(ide_in_drive_list);
/*
* Early UDMA66 devices don't set bit14 to 1, only bit13 is valid.
* We list them here and depend on the device side cable detection for them.
*
* Some optical devices with the buggy firmwares have the same problem.
*/
static
const
struct
drive_list_entry
ivb_list
[]
=
{
...
...
@@ -251,10 +249,25 @@ u8 eighty_ninty_three(ide_drive_t *drive)
* - force bit13 (80c cable present) check also for !ivb devices
* (unless the slave device is pre-ATA3)
*/
if
((
id
[
ATA_ID_HW_CONFIG
]
&
0x4000
)
||
(
ivb
&&
(
id
[
ATA_ID_HW_CONFIG
]
&
0x2000
)))
if
(
id
[
ATA_ID_HW_CONFIG
]
&
0x4000
)
return
1
;
if
(
ivb
)
{
const
char
*
model
=
(
char
*
)
&
id
[
ATA_ID_PROD
];
if
(
strstr
(
model
,
"TSSTcorp CDDVDW SH-S202"
))
{
/*
* These ATAPI devices always report 80c cable
* so we have to depend on the host in this case.
*/
if
(
hwif
->
cbl
==
ATA_CBL_PATA80
)
return
1
;
}
else
{
/* Depend on the device side cable detection. */
if
(
id
[
ATA_ID_HW_CONFIG
]
&
0x2000
)
return
1
;
}
}
no_80w:
if
(
drive
->
dev_flags
&
IDE_DFLAG_UDMA33_WARNED
)
return
0
;
...
...
drivers/ide/ide-lib.c
浏览文件 @
9bd7de51
...
...
@@ -31,24 +31,6 @@ void ide_toggle_bounce(ide_drive_t *drive, int on)
blk_queue_bounce_limit
(
drive
->
queue
,
addr
);
}
static
void
ide_dump_opcode
(
ide_drive_t
*
drive
)
{
struct
request
*
rq
=
drive
->
hwif
->
rq
;
struct
ide_cmd
*
cmd
=
NULL
;
if
(
!
rq
)
return
;
if
(
rq
->
cmd_type
==
REQ_TYPE_ATA_TASKFILE
)
cmd
=
rq
->
special
;
printk
(
KERN_ERR
"ide: failed opcode was: "
);
if
(
cmd
==
NULL
)
printk
(
KERN_CONT
"unknown
\n
"
);
else
printk
(
KERN_CONT
"0x%02x
\n
"
,
cmd
->
tf
.
command
);
}
u64
ide_get_lba_addr
(
struct
ide_cmd
*
cmd
,
int
lba48
)
{
struct
ide_taskfile
*
tf
=
&
cmd
->
tf
;
...
...
@@ -91,7 +73,7 @@ static void ide_dump_sector(ide_drive_t *drive)
static
void
ide_dump_ata_error
(
ide_drive_t
*
drive
,
u8
err
)
{
printk
(
KERN_
ERR
"{ "
);
printk
(
KERN_
CONT
"{ "
);
if
(
err
&
ATA_ABORTED
)
printk
(
KERN_CONT
"DriveStatusError "
);
if
(
err
&
ATA_ICRC
)
...
...
@@ -121,7 +103,7 @@ static void ide_dump_ata_error(ide_drive_t *drive, u8 err)
static
void
ide_dump_atapi_error
(
ide_drive_t
*
drive
,
u8
err
)
{
printk
(
KERN_
ERR
"{ "
);
printk
(
KERN_
CONT
"{ "
);
if
(
err
&
ATAPI_ILI
)
printk
(
KERN_CONT
"IllegalLengthIndication "
);
if
(
err
&
ATAPI_EOM
)
...
...
@@ -179,7 +161,10 @@ u8 ide_dump_status(ide_drive_t *drive, const char *msg, u8 stat)
else
ide_dump_atapi_error
(
drive
,
err
);
}
ide_dump_opcode
(
drive
);
printk
(
KERN_ERR
"%s: possibly failed opcode: 0x%02x
\n
"
,
drive
->
name
,
drive
->
hwif
->
cmd
.
tf
.
command
);
return
err
;
}
EXPORT_SYMBOL
(
ide_dump_status
);
drivers/ide/ide-probe.c
浏览文件 @
9bd7de51
...
...
@@ -295,7 +295,7 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
timeout
=
((
cmd
==
ATA_CMD_ID_ATA
)
?
WAIT_WORSTCASE
:
WAIT_PIDENTIFY
)
/
2
;
if
(
ide_busy_sleep
(
hwif
,
timeout
,
use_altstatus
))
if
(
ide_busy_sleep
(
drive
,
timeout
,
use_altstatus
))
return
1
;
/* wait for IRQ and ATA_DRQ */
...
...
@@ -316,8 +316,9 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
return
rc
;
}
int
ide_busy_sleep
(
ide_
hwif_t
*
hwif
,
unsigned
long
timeout
,
int
altstatus
)
int
ide_busy_sleep
(
ide_
drive_t
*
drive
,
unsigned
long
timeout
,
int
altstatus
)
{
ide_hwif_t
*
hwif
=
drive
->
hwif
;
u8
stat
;
timeout
+=
jiffies
;
...
...
@@ -330,6 +331,8 @@ int ide_busy_sleep(ide_hwif_t *hwif, unsigned long timeout, int altstatus)
return
0
;
}
while
(
time_before
(
jiffies
,
timeout
));
printk
(
KERN_ERR
"%s: timeout in %s
\n
"
,
drive
->
name
,
__func__
);
return
1
;
/* drive timed-out */
}
...
...
@@ -420,7 +423,7 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
tp_ops
->
dev_select
(
drive
);
msleep
(
50
);
tp_ops
->
exec_command
(
hwif
,
ATA_CMD_DEV_RESET
);
(
void
)
ide_busy_sleep
(
hwif
,
WAIT_WORSTCASE
,
0
);
(
void
)
ide_busy_sleep
(
drive
,
WAIT_WORSTCASE
,
0
);
rc
=
ide_dev_read_id
(
drive
,
cmd
,
id
);
}
...
...
drivers/ide/via82cxxx.c
浏览文件 @
9bd7de51
...
...
@@ -67,6 +67,7 @@ static struct via_isa_bridge {
u8
udma_mask
;
u8
flags
;
}
via_isa_bridges
[]
=
{
{
"vx855"
,
PCI_DEVICE_ID_VIA_VX855
,
0x00
,
0x2f
,
ATA_UDMA6
,
VIA_BAD_AST
},
{
"vx800"
,
PCI_DEVICE_ID_VIA_VX800
,
0x00
,
0x2f
,
ATA_UDMA6
,
VIA_BAD_AST
},
{
"cx700"
,
PCI_DEVICE_ID_VIA_CX700
,
0x00
,
0x2f
,
ATA_UDMA6
,
VIA_BAD_AST
},
{
"vt8237s"
,
PCI_DEVICE_ID_VIA_8237S
,
0x00
,
0x2f
,
ATA_UDMA6
,
VIA_BAD_AST
},
...
...
@@ -474,6 +475,7 @@ static const struct pci_device_id via_pci_tbl[] = {
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_82C576_1
),
0
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_82C586_1
),
0
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_CX700_IDE
),
0
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_VX855_IDE
),
0
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_6410
),
1
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_SATA_EIDE
),
1
},
{
0
,
},
...
...
drivers/input/serio/ambakmi.c
浏览文件 @
9bd7de51
...
...
@@ -107,7 +107,7 @@ static void amba_kmi_close(struct serio *io)
clk_disable
(
kmi
->
clk
);
}
static
int
amba_kmi_probe
(
struct
amba_device
*
dev
,
vo
id
*
id
)
static
int
amba_kmi_probe
(
struct
amba_device
*
dev
,
struct
amba_
id
*
id
)
{
struct
amba_kmi_port
*
kmi
;
struct
serio
*
io
;
...
...
drivers/mfd/pcf50633-core.c
浏览文件 @
9bd7de51
...
...
@@ -443,7 +443,7 @@ static irqreturn_t pcf50633_irq(int irq, void *data)
dev_dbg
(
pcf
->
dev
,
"pcf50633_irq
\n
"
);
get_device
(
pcf
->
dev
);
disable_irq
(
pcf
->
irq
);
disable_irq
_nosync
(
pcf
->
irq
);
schedule_work
(
&
pcf
->
irq_work
);
return
IRQ_HANDLED
;
...
...
drivers/mfd/wm8350-core.c
浏览文件 @
9bd7de51
...
...
@@ -79,10 +79,6 @@ static int wm8350_phys_read(struct wm8350 *wm8350, u8 reg, int num_regs,
/* Cache is CPU endian */
dest
[
i
-
reg
]
=
be16_to_cpu
(
dest
[
i
-
reg
]);
/* Satisfy non-volatile bits from cache */
dest
[
i
-
reg
]
&=
wm8350_reg_io_map
[
i
].
vol
;
dest
[
i
-
reg
]
|=
wm8350
->
reg_cache
[
i
];
/* Mask out non-readable bits */
dest
[
i
-
reg
]
&=
wm8350_reg_io_map
[
i
].
readable
;
}
...
...
@@ -182,9 +178,6 @@ static int wm8350_write(struct wm8350 *wm8350, u8 reg, int num_regs, u16 *src)
(
wm8350
->
reg_cache
[
i
]
&
~
wm8350_reg_io_map
[
i
].
writable
)
|
src
[
i
-
reg
];
/* Don't store volatile bits */
wm8350
->
reg_cache
[
i
]
&=
~
wm8350_reg_io_map
[
i
].
vol
;
src
[
i
-
reg
]
=
cpu_to_be16
(
src
[
i
-
reg
]);
}
...
...
@@ -1261,7 +1254,6 @@ static int wm8350_create_cache(struct wm8350 *wm8350, int type, int mode)
(
i
<
WM8350_CLOCK_CONTROL_1
||
i
>
WM8350_AIF_TEST
))
{
value
=
be16_to_cpu
(
wm8350
->
reg_cache
[
i
]);
value
&=
wm8350_reg_io_map
[
i
].
readable
;
value
&=
~
wm8350_reg_io_map
[
i
].
vol
;
wm8350
->
reg_cache
[
i
]
=
value
;
}
else
wm8350
->
reg_cache
[
i
]
=
reg_map
[
i
];
...
...
drivers/mmc/host/mmci.c
浏览文件 @
9bd7de51
...
...
@@ -490,7 +490,7 @@ static void mmci_check_status(unsigned long data)
mod_timer
(
&
host
->
timer
,
jiffies
+
HZ
);
}
static
int
__devinit
mmci_probe
(
struct
amba_device
*
dev
,
vo
id
*
id
)
static
int
__devinit
mmci_probe
(
struct
amba_device
*
dev
,
struct
amba_
id
*
id
)
{
struct
mmc_platform_data
*
plat
=
dev
->
dev
.
platform_data
;
struct
mmci_host
*
host
;
...
...
drivers/net/benet/be.h
浏览文件 @
9bd7de51
...
...
@@ -35,8 +35,22 @@
#define DRV_VER "2.0.348"
#define DRV_NAME "be2net"
#define BE_NAME "ServerEngines BladeEngine2 10Gbps NIC"
#define OC_NAME "Emulex OneConnect 10Gbps NIC"
#define DRV_DESC BE_NAME "Driver"
#define BE_VENDOR_ID 0x19a2
#define BE_DEVICE_ID1 0x211
#define OC_DEVICE_ID1 0x700
#define OC_DEVICE_ID2 0x701
static
inline
char
*
nic_name
(
struct
pci_dev
*
pdev
)
{
if
(
pdev
->
device
==
OC_DEVICE_ID1
||
pdev
->
device
==
OC_DEVICE_ID2
)
return
OC_NAME
;
else
return
BE_NAME
;
}
/* Number of bytes of an RX frame that are copied to skb->data */
#define BE_HDR_LEN 64
#define BE_MAX_JUMBO_FRAME_SIZE 9018
...
...
drivers/net/benet/be_main.c
浏览文件 @
9bd7de51
...
...
@@ -28,10 +28,10 @@ static unsigned int rx_frag_size = 2048;
module_param
(
rx_frag_size
,
uint
,
S_IRUGO
);
MODULE_PARM_DESC
(
rx_frag_size
,
"Size of a fragment that holds rcvd data."
);
#define BE_VENDOR_ID 0x19a2
#define BE2_DEVICE_ID_1 0x0211
static
DEFINE_PCI_DEVICE_TABLE
(
be_dev_ids
)
=
{
{
PCI_DEVICE
(
BE_VENDOR_ID
,
BE2_DEVICE_ID_1
)
},
{
PCI_DEVICE
(
BE_VENDOR_ID
,
BE_DEVICE_ID1
)
},
{
PCI_DEVICE
(
BE_VENDOR_ID
,
OC_DEVICE_ID1
)
},
{
PCI_DEVICE
(
BE_VENDOR_ID
,
OC_DEVICE_ID2
)
},
{
0
}
};
MODULE_DEVICE_TABLE
(
pci
,
be_dev_ids
);
...
...
@@ -1859,7 +1859,7 @@ static int __devinit be_probe(struct pci_dev *pdev,
if
(
status
!=
0
)
goto
stats_clean
;
dev_info
(
&
pdev
->
dev
,
BE_NAME
" port %d
\n
"
,
adapter
->
port_num
);
dev_info
(
&
pdev
->
dev
,
"%s port %d
\n
"
,
nic_name
(
pdev
)
,
adapter
->
port_num
);
return
0
;
stats_clean:
...
...
@@ -1873,7 +1873,7 @@ static int __devinit be_probe(struct pci_dev *pdev,
disable_dev:
pci_disable_device
(
pdev
);
do_none:
dev_
warn
(
&
pdev
->
dev
,
BE_NAME
" initialization failed
\n
"
);
dev_
err
(
&
pdev
->
dev
,
"%s initialization failed
\n
"
,
nic_name
(
pdev
)
);
return
status
;
}
...
...
drivers/net/bonding/bond_3ad.c
浏览文件 @
9bd7de51
...
...
@@ -1465,6 +1465,12 @@ static struct aggregator *ad_agg_selection_test(struct aggregator *best,
return
best
;
}
static
int
agg_device_up
(
const
struct
aggregator
*
agg
)
{
return
(
netif_running
(
agg
->
slave
->
dev
)
&&
netif_carrier_ok
(
agg
->
slave
->
dev
));
}
/**
* ad_agg_selection_logic - select an aggregation group for a team
* @aggregator: the aggregator we're looking at
...
...
@@ -1496,14 +1502,13 @@ static void ad_agg_selection_logic(struct aggregator *agg)
struct
port
*
port
;
origin
=
agg
;
active
=
__get_active_agg
(
agg
);
best
=
active
;
best
=
(
active
&&
agg_device_up
(
active
))
?
active
:
NULL
;
do
{
agg
->
is_active
=
0
;
if
(
agg
->
num_of_ports
)
if
(
agg
->
num_of_ports
&&
agg_device_up
(
agg
)
)
best
=
ad_agg_selection_test
(
best
,
agg
);
}
while
((
agg
=
__get_next_agg
(
agg
)));
...
...
drivers/net/meth.c
浏览文件 @
9bd7de51
...
...
@@ -127,11 +127,11 @@ static unsigned long mdio_read(struct meth_private *priv, unsigned long phyreg)
static
int
mdio_probe
(
struct
meth_private
*
priv
)
{
int
i
;
unsigned
long
p2
,
p3
;
unsigned
long
p2
,
p3
,
flags
;
/* check if phy is detected already */
if
(
priv
->
phy_addr
>=
0
&&
priv
->
phy_addr
<
32
)
return
0
;
spin_lock
(
&
priv
->
meth_lock
);
spin_lock
_irqsave
(
&
priv
->
meth_lock
,
flags
);
for
(
i
=
0
;
i
<
32
;
++
i
){
priv
->
phy_addr
=
i
;
p2
=
mdio_read
(
priv
,
2
);
...
...
@@ -157,7 +157,7 @@ static int mdio_probe(struct meth_private *priv)
break
;
}
}
spin_unlock
(
&
priv
->
meth_lock
);
spin_unlock
_irqrestore
(
&
priv
->
meth_lock
,
flags
);
if
(
priv
->
phy_addr
<
32
)
{
return
0
;
}
...
...
@@ -373,14 +373,14 @@ static int meth_release(struct net_device *dev)
static
void
meth_rx
(
struct
net_device
*
dev
,
unsigned
long
int_status
)
{
struct
sk_buff
*
skb
;
unsigned
long
status
;
unsigned
long
status
,
flags
;
struct
meth_private
*
priv
=
netdev_priv
(
dev
);
unsigned
long
fifo_rptr
=
(
int_status
&
METH_INT_RX_RPTR_MASK
)
>>
8
;
spin_lock
(
&
priv
->
meth_lock
);
spin_lock
_irqsave
(
&
priv
->
meth_lock
,
flags
);
priv
->
dma_ctrl
&=
~
METH_DMA_RX_INT_EN
;
mace
->
eth
.
dma_ctrl
=
priv
->
dma_ctrl
;
spin_unlock
(
&
priv
->
meth_lock
);
spin_unlock
_irqrestore
(
&
priv
->
meth_lock
,
flags
);
if
(
int_status
&
METH_INT_RX_UNDERFLOW
)
{
fifo_rptr
=
(
fifo_rptr
-
1
)
&
0x0f
;
...
...
@@ -452,12 +452,12 @@ static void meth_rx(struct net_device* dev, unsigned long int_status)
mace
->
eth
.
rx_fifo
=
priv
->
rx_ring_dmas
[
priv
->
rx_write
];
ADVANCE_RX_PTR
(
priv
->
rx_write
);
}
spin_lock
(
&
priv
->
meth_lock
);
spin_lock
_irqsave
(
&
priv
->
meth_lock
,
flags
);
/* In case there was underflow, and Rx DMA was disabled */
priv
->
dma_ctrl
|=
METH_DMA_RX_INT_EN
|
METH_DMA_RX_EN
;
mace
->
eth
.
dma_ctrl
=
priv
->
dma_ctrl
;
mace
->
eth
.
int_stat
=
METH_INT_RX_THRESHOLD
;
spin_unlock
(
&
priv
->
meth_lock
);
spin_unlock
_irqrestore
(
&
priv
->
meth_lock
,
flags
);
}
static
int
meth_tx_full
(
struct
net_device
*
dev
)
...
...
@@ -470,11 +470,11 @@ static int meth_tx_full(struct net_device *dev)
static
void
meth_tx_cleanup
(
struct
net_device
*
dev
,
unsigned
long
int_status
)
{
struct
meth_private
*
priv
=
netdev_priv
(
dev
);
unsigned
long
status
;
unsigned
long
status
,
flags
;
struct
sk_buff
*
skb
;
unsigned
long
rptr
=
(
int_status
&
TX_INFO_RPTR
)
>>
16
;
spin_lock
(
&
priv
->
meth_lock
);
spin_lock
_irqsave
(
&
priv
->
meth_lock
,
flags
);
/* Stop DMA notification */
priv
->
dma_ctrl
&=
~
(
METH_DMA_TX_INT_EN
);
...
...
@@ -527,12 +527,13 @@ static void meth_tx_cleanup(struct net_device* dev, unsigned long int_status)
}
mace
->
eth
.
int_stat
=
METH_INT_TX_EMPTY
|
METH_INT_TX_PKT
;
spin_unlock
(
&
priv
->
meth_lock
);
spin_unlock
_irqrestore
(
&
priv
->
meth_lock
,
flags
);
}
static
void
meth_error
(
struct
net_device
*
dev
,
unsigned
status
)
{
struct
meth_private
*
priv
=
netdev_priv
(
dev
);
unsigned
long
flags
;
printk
(
KERN_WARNING
"meth: error status: 0x%08x
\n
"
,
status
);
/* check for errors too... */
...
...
@@ -547,7 +548,7 @@ static void meth_error(struct net_device* dev, unsigned status)
printk
(
KERN_WARNING
"meth: Rx overflow
\n
"
);
if
(
status
&
(
METH_INT_RX_UNDERFLOW
))
{
printk
(
KERN_WARNING
"meth: Rx underflow
\n
"
);
spin_lock
(
&
priv
->
meth_lock
);
spin_lock
_irqsave
(
&
priv
->
meth_lock
,
flags
);
mace
->
eth
.
int_stat
=
METH_INT_RX_UNDERFLOW
;
/* more underflow interrupts will be delivered,
* effectively throwing us into an infinite loop.
...
...
@@ -555,7 +556,7 @@ static void meth_error(struct net_device* dev, unsigned status)
priv
->
dma_ctrl
&=
~
METH_DMA_RX_EN
;
mace
->
eth
.
dma_ctrl
=
priv
->
dma_ctrl
;
DPRINTK
(
"Disabled meth Rx DMA temporarily
\n
"
);
spin_unlock
(
&
priv
->
meth_lock
);
spin_unlock
_irqrestore
(
&
priv
->
meth_lock
,
flags
);
}
mace
->
eth
.
int_stat
=
METH_INT_ERROR
;
}
...
...
drivers/net/mlx4/en_cq.c
浏览文件 @
9bd7de51
...
...
@@ -125,8 +125,10 @@ void mlx4_en_deactivate_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq)
if
(
cq
->
is_tx
)
del_timer
(
&
cq
->
timer
);
else
else
{
napi_disable
(
&
cq
->
napi
);
netif_napi_del
(
&
cq
->
napi
);
}
mlx4_cq_free
(
mdev
->
dev
,
&
cq
->
mcq
);
}
...
...
drivers/net/mv643xx_eth.c
浏览文件 @
9bd7de51
...
...
@@ -569,7 +569,7 @@ static int rxq_process(struct rx_queue *rxq, int budget)
if
(
rxq
->
rx_curr_desc
==
rxq
->
rx_ring_size
)
rxq
->
rx_curr_desc
=
0
;
dma_unmap_single
(
NULL
,
rx_desc
->
buf_ptr
,
dma_unmap_single
(
mp
->
dev
->
dev
.
parent
,
rx_desc
->
buf_ptr
,
rx_desc
->
buf_size
,
DMA_FROM_DEVICE
);
rxq
->
rx_desc_count
--
;
rx
++
;
...
...
@@ -678,8 +678,9 @@ static int rxq_refill(struct rx_queue *rxq, int budget)
rx_desc
=
rxq
->
rx_desc_area
+
rx
;
rx_desc
->
buf_ptr
=
dma_map_single
(
NULL
,
skb
->
data
,
mp
->
skb_size
,
DMA_FROM_DEVICE
);
rx_desc
->
buf_ptr
=
dma_map_single
(
mp
->
dev
->
dev
.
parent
,
skb
->
data
,
mp
->
skb_size
,
DMA_FROM_DEVICE
);
rx_desc
->
buf_size
=
mp
->
skb_size
;
rxq
->
rx_skb
[
rx
]
=
skb
;
wmb
();
...
...
@@ -718,6 +719,7 @@ static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb)
static
void
txq_submit_frag_skb
(
struct
tx_queue
*
txq
,
struct
sk_buff
*
skb
)
{
struct
mv643xx_eth_private
*
mp
=
txq_to_mp
(
txq
);
int
nr_frags
=
skb_shinfo
(
skb
)
->
nr_frags
;
int
frag
;
...
...
@@ -746,10 +748,10 @@ static void txq_submit_frag_skb(struct tx_queue *txq, struct sk_buff *skb)
desc
->
l4i_chk
=
0
;
desc
->
byte_cnt
=
this_frag
->
size
;
desc
->
buf_ptr
=
dma_map_page
(
NULL
,
this_frag
->
page
,
this_frag
->
page_offset
,
this_frag
->
size
,
DMA_TO_DEVICE
);
desc
->
buf_ptr
=
dma_map_page
(
mp
->
dev
->
dev
.
parent
,
this_frag
->
page
,
this_frag
->
page_offset
,
this_frag
->
size
,
DMA_TO_DEVICE
);
}
}
...
...
@@ -826,7 +828,8 @@ static int txq_submit_skb(struct tx_queue *txq, struct sk_buff *skb)
desc
->
l4i_chk
=
l4i_chk
;
desc
->
byte_cnt
=
length
;
desc
->
buf_ptr
=
dma_map_single
(
NULL
,
skb
->
data
,
length
,
DMA_TO_DEVICE
);
desc
->
buf_ptr
=
dma_map_single
(
mp
->
dev
->
dev
.
parent
,
skb
->
data
,
length
,
DMA_TO_DEVICE
);
__skb_queue_tail
(
&
txq
->
tx_skb
,
skb
);
...
...
@@ -956,10 +959,10 @@ static int txq_reclaim(struct tx_queue *txq, int budget, int force)
}
if
(
cmd_sts
&
TX_FIRST_DESC
)
{
dma_unmap_single
(
NULL
,
desc
->
buf_ptr
,
dma_unmap_single
(
mp
->
dev
->
dev
.
parent
,
desc
->
buf_ptr
,
desc
->
byte_cnt
,
DMA_TO_DEVICE
);
}
else
{
dma_unmap_page
(
NULL
,
desc
->
buf_ptr
,
dma_unmap_page
(
mp
->
dev
->
dev
.
parent
,
desc
->
buf_ptr
,
desc
->
byte_cnt
,
DMA_TO_DEVICE
);
}
...
...
@@ -1894,9 +1897,9 @@ static int rxq_init(struct mv643xx_eth_private *mp, int index)
mp
->
rx_desc_sram_size
);
rxq
->
rx_desc_dma
=
mp
->
rx_desc_sram_addr
;
}
else
{
rxq
->
rx_desc_area
=
dma_alloc_coherent
(
NULL
,
size
,
&
rxq
->
rx_desc_dma
,
GFP_KERNEL
);
rxq
->
rx_desc_area
=
dma_alloc_coherent
(
mp
->
dev
->
dev
.
parent
,
size
,
&
rxq
->
rx_desc_dma
,
GFP_KERNEL
);
}
if
(
rxq
->
rx_desc_area
==
NULL
)
{
...
...
@@ -1947,7 +1950,7 @@ static int rxq_init(struct mv643xx_eth_private *mp, int index)
if
(
index
==
0
&&
size
<=
mp
->
rx_desc_sram_size
)
iounmap
(
rxq
->
rx_desc_area
);
else
dma_free_coherent
(
NULL
,
size
,
dma_free_coherent
(
mp
->
dev
->
dev
.
parent
,
size
,
rxq
->
rx_desc_area
,
rxq
->
rx_desc_dma
);
...
...
@@ -1979,7 +1982,7 @@ static void rxq_deinit(struct rx_queue *rxq)
rxq
->
rx_desc_area_size
<=
mp
->
rx_desc_sram_size
)
iounmap
(
rxq
->
rx_desc_area
);
else
dma_free_coherent
(
NULL
,
rxq
->
rx_desc_area_size
,
dma_free_coherent
(
mp
->
dev
->
dev
.
parent
,
rxq
->
rx_desc_area_size
,
rxq
->
rx_desc_area
,
rxq
->
rx_desc_dma
);
kfree
(
rxq
->
rx_skb
);
...
...
@@ -2007,9 +2010,9 @@ static int txq_init(struct mv643xx_eth_private *mp, int index)
mp
->
tx_desc_sram_size
);
txq
->
tx_desc_dma
=
mp
->
tx_desc_sram_addr
;
}
else
{
txq
->
tx_desc_area
=
dma_alloc_coherent
(
NULL
,
size
,
&
txq
->
tx_desc_dma
,
GFP_KERNEL
);
txq
->
tx_desc_area
=
dma_alloc_coherent
(
mp
->
dev
->
dev
.
parent
,
size
,
&
txq
->
tx_desc_dma
,
GFP_KERNEL
);
}
if
(
txq
->
tx_desc_area
==
NULL
)
{
...
...
@@ -2053,7 +2056,7 @@ static void txq_deinit(struct tx_queue *txq)
txq
->
tx_desc_area_size
<=
mp
->
tx_desc_sram_size
)
iounmap
(
txq
->
tx_desc_area
);
else
dma_free_coherent
(
NULL
,
txq
->
tx_desc_area_size
,
dma_free_coherent
(
mp
->
dev
->
dev
.
parent
,
txq
->
tx_desc_area_size
,
txq
->
tx_desc_area
,
txq
->
tx_desc_dma
);
}
...
...
drivers/net/vxge/vxge-traffic.c
浏览文件 @
9bd7de51
...
...
@@ -115,7 +115,7 @@ enum vxge_hw_status vxge_hw_vpath_intr_enable(struct __vxge_hw_vpath_handle *vp)
VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_POISON
|
VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_POISON
|
VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_DMA_ERR
|
VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO
1
_DMA_ERR
),
0
,
32
),
VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO
2
_DMA_ERR
),
0
,
32
),
&
vp_reg
->
kdfcctl_errors_mask
);
__vxge_hw_pio_mem_write32_upper
(
0
,
&
vp_reg
->
vpath_ppif_int_mask
);
...
...
drivers/net/wimax/i2400m/rx.c
浏览文件 @
9bd7de51
...
...
@@ -819,10 +819,9 @@ void i2400m_roq_queue_update_ws(struct i2400m *i2400m, struct i2400m_roq *roq,
roq_data
=
(
struct
i2400m_roq_data
*
)
&
skb
->
cb
;
i2400m_net_erx
(
i2400m
,
skb
,
roq_data
->
cs
);
}
else
{
else
__i2400m_roq_queue
(
i2400m
,
roq
,
skb
,
sn
,
nsn
);
__i2400m_roq_update_ws
(
i2400m
,
roq
,
sn
+
1
);
}
__i2400m_roq_update_ws
(
i2400m
,
roq
,
sn
+
1
);
i2400m_roq_log_add
(
i2400m
,
roq
,
I2400M_RO_TYPE_PACKET_WS
,
old_ws
,
len
,
sn
,
nsn
,
roq
->
ws
);
}
...
...
drivers/pci/pci.c
浏览文件 @
9bd7de51
...
...
@@ -557,7 +557,8 @@ static int pci_platform_power_transition(struct pci_dev *dev, pci_power_t state)
}
else
{
error
=
-
ENODEV
;
/* Fall back to PCI_D0 if native PM is not supported */
pci_update_current_state
(
dev
,
PCI_D0
);
if
(
!
dev
->
pm_cap
)
dev
->
current_state
=
PCI_D0
;
}
return
error
;
...
...
drivers/rtc/rtc-pl030.c
浏览文件 @
9bd7de51
...
...
@@ -102,7 +102,7 @@ static const struct rtc_class_ops pl030_ops = {
.
set_alarm
=
pl030_set_alarm
,
};
static
int
pl030_probe
(
struct
amba_device
*
dev
,
vo
id
*
id
)
static
int
pl030_probe
(
struct
amba_device
*
dev
,
struct
amba_
id
*
id
)
{
struct
pl030_rtc
*
rtc
;
int
ret
;
...
...
drivers/rtc/rtc-pl031.c
浏览文件 @
9bd7de51
...
...
@@ -127,7 +127,7 @@ static int pl031_remove(struct amba_device *adev)
return
0
;
}
static
int
pl031_probe
(
struct
amba_device
*
adev
,
vo
id
*
id
)
static
int
pl031_probe
(
struct
amba_device
*
adev
,
struct
amba_
id
*
id
)
{
int
ret
;
struct
pl031_local
*
ldata
;
...
...
drivers/serial/amba-pl010.c
浏览文件 @
9bd7de51
...
...
@@ -665,7 +665,7 @@ static struct uart_driver amba_reg = {
.
cons
=
AMBA_CONSOLE
,
};
static
int
pl010_probe
(
struct
amba_device
*
dev
,
vo
id
*
id
)
static
int
pl010_probe
(
struct
amba_device
*
dev
,
struct
amba_
id
*
id
)
{
struct
uart_amba_port
*
uap
;
void
__iomem
*
base
;
...
...
drivers/serial/amba-pl011.c
浏览文件 @
9bd7de51
...
...
@@ -729,7 +729,7 @@ static struct uart_driver amba_reg = {
.
cons
=
AMBA_CONSOLE
,
};
static
int
pl011_probe
(
struct
amba_device
*
dev
,
vo
id
*
id
)
static
int
pl011_probe
(
struct
amba_device
*
dev
,
struct
amba_
id
*
id
)
{
struct
uart_amba_port
*
uap
;
void
__iomem
*
base
;
...
...
drivers/video/amba-clcd.c
浏览文件 @
9bd7de51
...
...
@@ -437,7 +437,7 @@ static int clcdfb_register(struct clcd_fb *fb)
return
ret
;
}
static
int
clcdfb_probe
(
struct
amba_device
*
dev
,
vo
id
*
id
)
static
int
clcdfb_probe
(
struct
amba_device
*
dev
,
struct
amba_
id
*
id
)
{
struct
clcd_board
*
board
=
dev
->
dev
.
platform_data
;
struct
clcd_fb
*
fb
;
...
...
drivers/video/omap/dispc.c
浏览文件 @
9bd7de51
...
...
@@ -880,20 +880,22 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void *dev)
static
int
get_dss_clocks
(
void
)
{
if
(
IS_ERR
((
dispc
.
dss_ick
=
clk_get
(
dispc
.
fbdev
->
dev
,
"dss_ick"
))))
{
dev_err
(
dispc
.
fbdev
->
dev
,
"can't get dss_ick
\n
"
);
dispc
.
dss_ick
=
clk_get
(
dispc
.
fbdev
->
dev
,
"ick"
);
if
(
IS_ERR
(
dispc
.
dss_ick
))
{
dev_err
(
dispc
.
fbdev
->
dev
,
"can't get ick
\n
"
);
return
PTR_ERR
(
dispc
.
dss_ick
);
}
if
(
IS_ERR
((
dispc
.
dss1_fck
=
clk_get
(
dispc
.
fbdev
->
dev
,
"dss1_fck"
))))
{
dispc
.
dss1_fck
=
clk_get
(
dispc
.
fbdev
->
dev
,
"dss1_fck"
);
if
(
IS_ERR
(
dispc
.
dss1_fck
))
{
dev_err
(
dispc
.
fbdev
->
dev
,
"can't get dss1_fck
\n
"
);
clk_put
(
dispc
.
dss_ick
);
return
PTR_ERR
(
dispc
.
dss1_fck
);
}
if
(
IS_ERR
((
dispc
.
dss_54m_fck
=
clk_get
(
dispc
.
fbdev
->
dev
,
"dss_54m_fck"
))
))
{
dev_err
(
dispc
.
fbdev
->
dev
,
"can't get
dss_54m
_fck
\n
"
);
dispc
.
dss_54m_fck
=
clk_get
(
dispc
.
fbdev
->
dev
,
"tv_fck"
);
if
(
IS_ERR
(
dispc
.
dss_54m_fck
))
{
dev_err
(
dispc
.
fbdev
->
dev
,
"can't get
tv
_fck
\n
"
);
clk_put
(
dispc
.
dss_ick
);
clk_put
(
dispc
.
dss1_fck
);
return
PTR_ERR
(
dispc
.
dss_54m_fck
);
...
...
drivers/video/omap/rfbi.c
浏览文件 @
9bd7de51
...
...
@@ -83,12 +83,14 @@ static inline u32 rfbi_read_reg(int idx)
static
int
rfbi_get_clocks
(
void
)
{
if
(
IS_ERR
((
rfbi
.
dss_ick
=
clk_get
(
rfbi
.
fbdev
->
dev
,
"dss_ick"
))))
{
dev_err
(
rfbi
.
fbdev
->
dev
,
"can't get dss_ick
\n
"
);
rfbi
.
dss_ick
=
clk_get
(
rfbi
.
fbdev
->
dev
,
"ick"
);
if
(
IS_ERR
(
rfbi
.
dss_ick
))
{
dev_err
(
rfbi
.
fbdev
->
dev
,
"can't get ick
\n
"
);
return
PTR_ERR
(
rfbi
.
dss_ick
);
}
if
(
IS_ERR
((
rfbi
.
dss1_fck
=
clk_get
(
rfbi
.
fbdev
->
dev
,
"dss1_fck"
))))
{
rfbi
.
dss1_fck
=
clk_get
(
rfbi
.
fbdev
->
dev
,
"dss1_fck"
);
if
(
IS_ERR
(
rfbi
.
dss1_fck
))
{
dev_err
(
rfbi
.
fbdev
->
dev
,
"can't get dss1_fck
\n
"
);
clk_put
(
rfbi
.
dss_ick
);
return
PTR_ERR
(
rfbi
.
dss1_fck
);
...
...
drivers/video/sh_mobile_lcdcfb.c
浏览文件 @
9bd7de51
...
...
@@ -47,6 +47,7 @@ struct sh_mobile_lcdc_priv {
#endif
unsigned
long
lddckr
;
struct
sh_mobile_lcdc_chan
ch
[
2
];
int
started
;
};
/* shared registers */
...
...
@@ -451,6 +452,7 @@ static int sh_mobile_lcdc_start(struct sh_mobile_lcdc_priv *priv)
/* start the lcdc */
sh_mobile_lcdc_start_stop
(
priv
,
1
);
priv
->
started
=
1
;
/* tell the board code to enable the panel */
for
(
k
=
0
;
k
<
ARRAY_SIZE
(
priv
->
ch
);
k
++
)
{
...
...
@@ -493,7 +495,10 @@ static void sh_mobile_lcdc_stop(struct sh_mobile_lcdc_priv *priv)
}
/* stop the lcdc */
sh_mobile_lcdc_start_stop
(
priv
,
0
);
if
(
priv
->
started
)
{
sh_mobile_lcdc_start_stop
(
priv
,
0
);
priv
->
started
=
0
;
}
/* stop clocks */
for
(
k
=
0
;
k
<
ARRAY_SIZE
(
priv
->
ch
);
k
++
)
...
...
fs/cifs/cifssmb.c
浏览文件 @
9bd7de51
...
...
@@ -2475,7 +2475,7 @@ CIFSSMBUnixQuerySymLink(const int xid, struct cifsTconInfo *tcon,
/* BB FIXME investigate remapping reserved chars here */
*
symlinkinfo
=
cifs_strndup_from_ucs
(
data_start
,
count
,
is_unicode
,
nls_codepage
);
if
(
!
symlinkinfo
)
if
(
!
*
symlinkinfo
)
rc
=
-
ENOMEM
;
}
}
...
...
fs/cifs/dir.c
浏览文件 @
9bd7de51
...
...
@@ -225,6 +225,7 @@ int cifs_posix_open(char *full_path, struct inode **pinode,
if
(
!
(
oflags
&
FMODE_READ
))
write_only
=
true
;
mode
&=
~
current_umask
();
rc
=
CIFSPOSIXCreate
(
xid
,
cifs_sb
->
tcon
,
posix_flags
,
mode
,
pnetfid
,
presp_data
,
&
oplock
,
full_path
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
...
...
@@ -310,7 +311,6 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
return
-
ENOMEM
;
}
mode
&=
~
current_umask
();
if
(
oplockEnabled
)
oplock
=
REQ_OPLOCK
;
...
...
@@ -336,7 +336,7 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
else
/* success, no need to query */
goto
cifs_create_set_dentry
;
}
else
if
((
rc
!=
-
EIO
)
&&
(
rc
!=
-
EREMOTE
)
&&
(
rc
!=
-
EOPNOTSUPP
)
)
/* path not found or net err */
(
rc
!=
-
EOPNOTSUPP
)
&&
(
rc
!=
-
EINVAL
))
goto
cifs_create_out
;
/* else fallthrough to retry, using older open call, this is
case where server does not support this SMB level, and
...
...
@@ -609,7 +609,6 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
int
xid
;
int
rc
=
0
;
/* to get around spurious gcc warning, set to zero here */
int
oplock
=
0
;
int
mode
;
__u16
fileHandle
=
0
;
bool
posix_open
=
false
;
struct
cifs_sb_info
*
cifs_sb
;
...
...
@@ -660,13 +659,12 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
if
(
pTcon
->
unix_ext
)
{
if
(
!
(
nd
->
flags
&
(
LOOKUP_PARENT
|
LOOKUP_DIRECTORY
))
&&
(
nd
->
flags
&
LOOKUP_OPEN
)
)
{
(
nd
->
flags
&
LOOKUP_OPEN
)
&&
!
pTcon
->
broken_posix_open
)
{
if
(
!
((
nd
->
intent
.
open
.
flags
&
O_CREAT
)
&&
(
nd
->
intent
.
open
.
flags
&
O_EXCL
)))
{
mode
=
nd
->
intent
.
open
.
create_mode
&
~
current_umask
();
rc
=
cifs_posix_open
(
full_path
,
&
newInode
,
parent_dir_inode
->
i_sb
,
mode
,
parent_dir_inode
->
i_sb
,
nd
->
intent
.
open
.
create_mode
,
nd
->
intent
.
open
.
flags
,
&
oplock
,
&
fileHandle
,
xid
);
/*
...
...
@@ -681,6 +679,8 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
*/
if
((
rc
!=
-
EINVAL
)
&&
(
rc
!=
-
EOPNOTSUPP
))
posix_open
=
true
;
else
pTcon
->
broken_posix_open
=
true
;
}
}
if
(
!
posix_open
)
...
...
fs/cifs/file.c
浏览文件 @
9bd7de51
...
...
@@ -130,10 +130,6 @@ static inline int cifs_posix_open_inode_helper(struct inode *inode,
struct
cifsFileInfo
*
pCifsFile
,
int
oplock
,
u16
netfid
)
{
file
->
private_data
=
kmalloc
(
sizeof
(
struct
cifsFileInfo
),
GFP_KERNEL
);
if
(
file
->
private_data
==
NULL
)
return
-
ENOMEM
;
pCifsFile
=
cifs_init_private
(
file
->
private_data
,
inode
,
file
,
netfid
);
write_lock
(
&
GlobalSMBSeslock
);
pCifsInode
=
CIFS_I
(
file
->
f_path
.
dentry
->
d_inode
);
...
...
@@ -184,6 +180,38 @@ static inline int cifs_posix_open_inode_helper(struct inode *inode,
return
0
;
}
static
struct
cifsFileInfo
*
cifs_fill_filedata
(
struct
file
*
file
)
{
struct
list_head
*
tmp
;
struct
cifsFileInfo
*
pCifsFile
=
NULL
;
struct
cifsInodeInfo
*
pCifsInode
=
NULL
;
/* search inode for this file and fill in file->private_data */
pCifsInode
=
CIFS_I
(
file
->
f_path
.
dentry
->
d_inode
);
read_lock
(
&
GlobalSMBSeslock
);
list_for_each
(
tmp
,
&
pCifsInode
->
openFileList
)
{
pCifsFile
=
list_entry
(
tmp
,
struct
cifsFileInfo
,
flist
);
if
((
pCifsFile
->
pfile
==
NULL
)
&&
(
pCifsFile
->
pid
==
current
->
tgid
))
{
/* mode set in cifs_create */
/* needed for writepage */
pCifsFile
->
pfile
=
file
;
file
->
private_data
=
pCifsFile
;
break
;
}
}
read_unlock
(
&
GlobalSMBSeslock
);
if
(
file
->
private_data
!=
NULL
)
{
return
pCifsFile
;
}
else
if
((
file
->
f_flags
&
O_CREAT
)
&&
(
file
->
f_flags
&
O_EXCL
))
cERROR
(
1
,
(
"could not find file instance for "
"new file %p"
,
file
));
return
NULL
;
}
/* all arguments to this function must be checked for validity in caller */
static
inline
int
cifs_open_inode_helper
(
struct
inode
*
inode
,
struct
file
*
file
,
struct
cifsInodeInfo
*
pCifsInode
,
struct
cifsFileInfo
*
pCifsFile
,
...
...
@@ -258,7 +286,6 @@ int cifs_open(struct inode *inode, struct file *file)
struct
cifsTconInfo
*
tcon
;
struct
cifsFileInfo
*
pCifsFile
;
struct
cifsInodeInfo
*
pCifsInode
;
struct
list_head
*
tmp
;
char
*
full_path
=
NULL
;
int
desiredAccess
;
int
disposition
;
...
...
@@ -270,32 +297,12 @@ int cifs_open(struct inode *inode, struct file *file)
cifs_sb
=
CIFS_SB
(
inode
->
i_sb
);
tcon
=
cifs_sb
->
tcon
;
/* search inode for this file and fill in file->private_data */
pCifsInode
=
CIFS_I
(
file
->
f_path
.
dentry
->
d_inode
);
read_lock
(
&
GlobalSMBSeslock
);
list_for_each
(
tmp
,
&
pCifsInode
->
openFileList
)
{
pCifsFile
=
list_entry
(
tmp
,
struct
cifsFileInfo
,
flist
);
if
((
pCifsFile
->
pfile
==
NULL
)
&&
(
pCifsFile
->
pid
==
current
->
tgid
))
{
/* mode set in cifs_create */
/* needed for writepage */
pCifsFile
->
pfile
=
file
;
file
->
private_data
=
pCifsFile
;
break
;
}
}
read_unlock
(
&
GlobalSMBSeslock
);
if
(
file
->
private_data
!=
NULL
)
{
rc
=
0
;
pCifsFile
=
cifs_fill_filedata
(
file
);
if
(
pCifsFile
)
{
FreeXid
(
xid
);
return
rc
;
}
else
if
((
file
->
f_flags
&
O_CREAT
)
&&
(
file
->
f_flags
&
O_EXCL
))
cERROR
(
1
,
(
"could not find file instance for "
"new file %p"
,
file
));
return
0
;
}
full_path
=
build_path_from_dentry
(
file
->
f_path
.
dentry
);
if
(
full_path
==
NULL
)
{
...
...
@@ -325,6 +332,7 @@ int cifs_open(struct inode *inode, struct file *file)
/* no need for special case handling of setting mode
on read only files needed here */
pCifsFile
=
cifs_fill_filedata
(
file
);
cifs_posix_open_inode_helper
(
inode
,
file
,
pCifsInode
,
pCifsFile
,
oplock
,
netfid
);
goto
out
;
...
...
fs/cifs/link.c
浏览文件 @
9bd7de51
...
...
@@ -107,48 +107,48 @@ void *
cifs_follow_link
(
struct
dentry
*
direntry
,
struct
nameidata
*
nd
)
{
struct
inode
*
inode
=
direntry
->
d_inode
;
int
rc
=
-
E
ACCES
;
int
rc
=
-
E
NOMEM
;
int
xid
;
char
*
full_path
=
NULL
;
char
*
target_path
=
ERR_PTR
(
-
ENOMEM
)
;
struct
cifs_sb_info
*
cifs_sb
;
struct
cifsTconInfo
*
pT
con
;
char
*
target_path
=
NULL
;
struct
cifs_sb_info
*
cifs_sb
=
CIFS_SB
(
inode
->
i_sb
)
;
struct
cifsTconInfo
*
tcon
=
cifs_sb
->
t
con
;
xid
=
GetXid
();
full_path
=
build_path_from_dentry
(
direntry
);
/*
* For now, we just handle symlinks with unix extensions enabled.
* Eventually we should handle NTFS reparse points, and MacOS
* symlink support. For instance...
*
* rc = CIFSSMBQueryReparseLinkInfo(...)
*
* For now, just return -EACCES when the server doesn't support posix
* extensions. Note that we still allow querying symlinks when posix
* extensions are manually disabled. We could disable these as well
* but there doesn't seem to be any harm in allowing the client to
* read them.
*/
if
(
!
(
tcon
->
ses
->
capabilities
&
CAP_UNIX
))
{
rc
=
-
EACCES
;
goto
out
;
}
full_path
=
build_path_from_dentry
(
direntry
);
if
(
!
full_path
)
goto
out
;
cFYI
(
1
,
(
"Full path: %s inode = 0x%p"
,
full_path
,
inode
));
cifs_sb
=
CIFS_SB
(
inode
->
i_sb
);
pTcon
=
cifs_sb
->
tcon
;
/* We could change this to:
if (pTcon->unix_ext)
but there does not seem any point in refusing to
get symlink info if we can, even if unix extensions
turned off for this mount */
if
(
pTcon
->
ses
->
capabilities
&
CAP_UNIX
)
rc
=
CIFSSMBUnixQuerySymLink
(
xid
,
pTcon
,
full_path
,
&
target_path
,
cifs_sb
->
local_nls
);
else
{
/* BB add read reparse point symlink code here */
/* rc = CIFSSMBQueryReparseLinkInfo */
/* BB Add code to Query ReparsePoint info */
/* BB Add MAC style xsymlink check here if enabled */
}
rc
=
CIFSSMBUnixQuerySymLink
(
xid
,
tcon
,
full_path
,
&
target_path
,
cifs_sb
->
local_nls
);
kfree
(
full_path
);
out:
if
(
rc
!=
0
)
{
kfree
(
target_path
);
target_path
=
ERR_PTR
(
rc
);
}
kfree
(
full_path
);
out:
FreeXid
(
xid
);
nd_set_link
(
nd
,
target_path
);
return
NULL
;
...
...
fs/nilfs2/ioctl.c
浏览文件 @
9bd7de51
...
...
@@ -576,7 +576,7 @@ static int nilfs_ioctl_clean_segments(struct inode *inode, struct file *filp,
ret
=
nilfs_clean_segments
(
inode
->
i_sb
,
argv
,
kbufs
);
out_free:
while
(
--
n
>
0
)
while
(
--
n
>
=
0
)
vfree
(
kbufs
[
n
]);
kfree
(
kbufs
[
4
]);
return
ret
;
...
...
include/linux/amba/bus.h
浏览文件 @
9bd7de51
...
...
@@ -28,7 +28,7 @@ struct amba_id {
struct
amba_driver
{
struct
device_driver
drv
;
int
(
*
probe
)(
struct
amba_device
*
,
vo
id
*
);
int
(
*
probe
)(
struct
amba_device
*
,
struct
amba_
id
*
);
int
(
*
remove
)(
struct
amba_device
*
);
void
(
*
shutdown
)(
struct
amba_device
*
);
int
(
*
suspend
)(
struct
amba_device
*
,
pm_message_t
);
...
...
include/linux/ide.h
浏览文件 @
9bd7de51
...
...
@@ -1103,7 +1103,7 @@ void ide_fix_driveid(u16 *);
extern
void
ide_fixstring
(
u8
*
,
const
int
,
const
int
);
int
ide_busy_sleep
(
ide_
hwif
_t
*
,
unsigned
long
,
int
);
int
ide_busy_sleep
(
ide_
drive
_t
*
,
unsigned
long
,
int
);
int
ide_wait_stat
(
ide_startstop_t
*
,
ide_drive_t
*
,
u8
,
u8
,
unsigned
long
);
...
...
include/linux/mmzone.h
浏览文件 @
9bd7de51
...
...
@@ -1097,6 +1097,32 @@ unsigned long __init node_memmap_size_bytes(int, unsigned long, unsigned long);
#define pfn_valid_within(pfn) (1)
#endif
#ifdef CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
/*
* pfn_valid() is meant to be able to tell if a given PFN has valid memmap
* associated with it or not. In FLATMEM, it is expected that holes always
* have valid memmap as long as there is valid PFNs either side of the hole.
* In SPARSEMEM, it is assumed that a valid section has a memmap for the
* entire section.
*
* However, an ARM, and maybe other embedded architectures in the future
* free memmap backing holes to save memory on the assumption the memmap is
* never used. The page_zone linkages are then broken even though pfn_valid()
* returns true. A walker of the full memmap must then do this additional
* check to ensure the memmap they are looking at is sane by making sure
* the zone and PFN linkages are still valid. This is expensive, but walkers
* of the full memmap are extremely rare.
*/
int
memmap_valid_within
(
unsigned
long
pfn
,
struct
page
*
page
,
struct
zone
*
zone
);
#else
static
inline
int
memmap_valid_within
(
unsigned
long
pfn
,
struct
page
*
page
,
struct
zone
*
zone
)
{
return
1
;
}
#endif
/* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */
#endif
/* !__GENERATING_BOUNDS.H */
#endif
/* !__ASSEMBLY__ */
#endif
/* _LINUX_MMZONE_H */
include/linux/pci_ids.h
浏览文件 @
9bd7de51
...
...
@@ -1406,7 +1406,7 @@
#define PCI_DEVICE_ID_VIA_82C598_1 0x8598
#define PCI_DEVICE_ID_VIA_838X_1 0xB188
#define PCI_DEVICE_ID_VIA_83_87XX_1 0xB198
#define PCI_DEVICE_ID_VIA_
C409_IDE 0X
C409
#define PCI_DEVICE_ID_VIA_
VX855_IDE 0x
C409
#define PCI_DEVICE_ID_VIA_ANON 0xFFFF
#define PCI_VENDOR_ID_SIEMENS 0x110A
...
...
kernel/futex.c
浏览文件 @
9bd7de51
...
...
@@ -193,6 +193,7 @@ static void drop_futex_key_refs(union futex_key *key)
* @uaddr: virtual address of the futex
* @fshared: 0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED
* @key: address where result is stored.
* @rw: mapping needs to be read/write (values: VERIFY_READ, VERIFY_WRITE)
*
* Returns a negative error code or 0
* The key words are stored in *key on success.
...
...
@@ -203,7 +204,8 @@ static void drop_futex_key_refs(union futex_key *key)
*
* lock_page() might sleep, the caller should not hold a spinlock.
*/
static
int
get_futex_key
(
u32
__user
*
uaddr
,
int
fshared
,
union
futex_key
*
key
)
static
int
get_futex_key
(
u32
__user
*
uaddr
,
int
fshared
,
union
futex_key
*
key
,
int
rw
)
{
unsigned
long
address
=
(
unsigned
long
)
uaddr
;
struct
mm_struct
*
mm
=
current
->
mm
;
...
...
@@ -226,7 +228,7 @@ static int get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key)
* but access_ok() should be faster than find_vma()
*/
if
(
!
fshared
)
{
if
(
unlikely
(
!
access_ok
(
VERIFY_WRITE
,
uaddr
,
sizeof
(
u32
))))
if
(
unlikely
(
!
access_ok
(
rw
,
uaddr
,
sizeof
(
u32
))))
return
-
EFAULT
;
key
->
private
.
mm
=
mm
;
key
->
private
.
address
=
address
;
...
...
@@ -235,7 +237,7 @@ static int get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key)
}
again:
err
=
get_user_pages_fast
(
address
,
1
,
0
,
&
page
);
err
=
get_user_pages_fast
(
address
,
1
,
rw
==
VERIFY_WRITE
,
&
page
);
if
(
err
<
0
)
return
err
;
...
...
@@ -677,7 +679,7 @@ static int futex_wake(u32 __user *uaddr, int fshared, int nr_wake, u32 bitset)
if
(
!
bitset
)
return
-
EINVAL
;
ret
=
get_futex_key
(
uaddr
,
fshared
,
&
key
);
ret
=
get_futex_key
(
uaddr
,
fshared
,
&
key
,
VERIFY_READ
);
if
(
unlikely
(
ret
!=
0
))
goto
out
;
...
...
@@ -723,10 +725,10 @@ futex_wake_op(u32 __user *uaddr1, int fshared, u32 __user *uaddr2,
int
ret
,
op_ret
;
retry:
ret
=
get_futex_key
(
uaddr1
,
fshared
,
&
key1
);
ret
=
get_futex_key
(
uaddr1
,
fshared
,
&
key1
,
VERIFY_READ
);
if
(
unlikely
(
ret
!=
0
))
goto
out
;
ret
=
get_futex_key
(
uaddr2
,
fshared
,
&
key2
);
ret
=
get_futex_key
(
uaddr2
,
fshared
,
&
key2
,
VERIFY_WRITE
);
if
(
unlikely
(
ret
!=
0
))
goto
out_put_key1
;
...
...
@@ -814,10 +816,10 @@ static int futex_requeue(u32 __user *uaddr1, int fshared, u32 __user *uaddr2,
int
ret
,
drop_count
=
0
;
retry:
ret
=
get_futex_key
(
uaddr1
,
fshared
,
&
key1
);
ret
=
get_futex_key
(
uaddr1
,
fshared
,
&
key1
,
VERIFY_READ
);
if
(
unlikely
(
ret
!=
0
))
goto
out
;
ret
=
get_futex_key
(
uaddr2
,
fshared
,
&
key2
);
ret
=
get_futex_key
(
uaddr2
,
fshared
,
&
key2
,
VERIFY_READ
);
if
(
unlikely
(
ret
!=
0
))
goto
out_put_key1
;
...
...
@@ -1140,7 +1142,7 @@ static int futex_wait(u32 __user *uaddr, int fshared,
q
.
bitset
=
bitset
;
retry:
q
.
key
=
FUTEX_KEY_INIT
;
ret
=
get_futex_key
(
uaddr
,
fshared
,
&
q
.
key
);
ret
=
get_futex_key
(
uaddr
,
fshared
,
&
q
.
key
,
VERIFY_READ
);
if
(
unlikely
(
ret
!=
0
))
goto
out
;
...
...
@@ -1330,7 +1332,7 @@ static int futex_lock_pi(u32 __user *uaddr, int fshared,
q
.
pi_state
=
NULL
;
retry:
q
.
key
=
FUTEX_KEY_INIT
;
ret
=
get_futex_key
(
uaddr
,
fshared
,
&
q
.
key
);
ret
=
get_futex_key
(
uaddr
,
fshared
,
&
q
.
key
,
VERIFY_WRITE
);
if
(
unlikely
(
ret
!=
0
))
goto
out
;
...
...
@@ -1594,7 +1596,7 @@ static int futex_unlock_pi(u32 __user *uaddr, int fshared)
if
((
uval
&
FUTEX_TID_MASK
)
!=
task_pid_vnr
(
current
))
return
-
EPERM
;
ret
=
get_futex_key
(
uaddr
,
fshared
,
&
key
);
ret
=
get_futex_key
(
uaddr
,
fshared
,
&
key
,
VERIFY_WRITE
);
if
(
unlikely
(
ret
!=
0
))
goto
out
;
...
...
mm/mmzone.c
浏览文件 @
9bd7de51
...
...
@@ -6,6 +6,7 @@
#include <linux/stddef.h>
#include <linux/mm.h>
#include <linux/mmzone.h>
#include <linux/module.h>
...
...
@@ -72,3 +73,17 @@ struct zoneref *next_zones_zonelist(struct zoneref *z,
*
zone
=
zonelist_zone
(
z
);
return
z
;
}
#ifdef CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
int
memmap_valid_within
(
unsigned
long
pfn
,
struct
page
*
page
,
struct
zone
*
zone
)
{
if
(
page_to_pfn
(
page
)
!=
pfn
)
return
0
;
if
(
page_zone
(
page
)
!=
zone
)
return
0
;
return
1
;
}
#endif
/* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */
mm/rmap.c
浏览文件 @
9bd7de51
...
...
@@ -14,7 +14,7 @@
* Original design by Rik van Riel <riel@conectiva.com.br> 2001
* File methods by Dave McCracken <dmccr@us.ibm.com> 2003, 2004
* Anonymous methods by Andrea Arcangeli <andrea@suse.de> 2004
* Contributions by Hugh Dickins
<hugh@veritas.com>
2003, 2004
* Contributions by Hugh Dickins 2003, 2004
*/
/*
...
...
mm/vmstat.c
浏览文件 @
9bd7de51
...
...
@@ -509,22 +509,11 @@ static void pagetypeinfo_showblockcount_print(struct seq_file *m,
continue
;
page
=
pfn_to_page
(
pfn
);
#ifdef CONFIG_ARCH_FLATMEM_HAS_HOLES
/*
* Ordinarily, memory holes in flatmem still have a valid
* memmap for the PFN range. However, an architecture for
* embedded systems (e.g. ARM) can free up the memmap backing
* holes to save memory on the assumption the memmap is
* never used. The page_zone linkages are then broken even
* though pfn_valid() returns true. Skip the page if the
* linkages are broken. Even if this test passed, the impact
* is that the counters for the movable type are off but
* fragmentation monitoring is likely meaningless on small
* systems.
*/
if
(
page_zone
(
page
)
!=
zone
)
/* Watch for unexpected holes punched in the memmap */
if
(
!
memmap_valid_within
(
pfn
,
page
,
zone
))
continue
;
#endif
mtype
=
get_pageblock_migratetype
(
page
);
if
(
mtype
<
MIGRATE_TYPES
)
...
...
net/bridge/br_input.c
浏览文件 @
9bd7de51
...
...
@@ -134,6 +134,10 @@ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb)
if
(
skb
->
protocol
==
htons
(
ETH_P_PAUSE
))
goto
drop
;
/* If STP is turned off, then forward */
if
(
p
->
br
->
stp_enabled
==
BR_NO_STP
&&
dest
[
5
]
==
0
)
goto
forward
;
if
(
NF_HOOK
(
PF_BRIDGE
,
NF_BR_LOCAL_IN
,
skb
,
skb
->
dev
,
NULL
,
br_handle_local_finish
))
return
NULL
;
/* frame consumed by filter */
...
...
@@ -141,6 +145,7 @@ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb)
return
skb
;
/* continue processing */
}
forward:
switch
(
p
->
state
)
{
case
BR_STATE_FORWARDING
:
rhook
=
rcu_dereference
(
br_should_route_hook
);
...
...
net/bridge/br_stp.c
浏览文件 @
9bd7de51
...
...
@@ -297,6 +297,9 @@ void br_topology_change_detection(struct net_bridge *br)
{
int
isroot
=
br_is_root_bridge
(
br
);
if
(
br
->
stp_enabled
!=
BR_KERNEL_STP
)
return
;
pr_info
(
"%s: topology change detected, %s
\n
"
,
br
->
dev
->
name
,
isroot
?
"propagating"
:
"sending tcn bpdu"
);
...
...
net/core/gen_estimator.c
浏览文件 @
9bd7de51
...
...
@@ -66,9 +66,9 @@
NOTES.
*
The stored value for avbps is scaled by 2^5, so that maximal
rate is ~1Gbit, avpps is scaled by 2^10.
*
avbps is scaled by 2^5, avpps is scaled by 2^10.
* both values are reported as 32 bit unsigned values. bps can
overflow for fast links : max speed being 34360Mbit/sec
* Minimal interval is HZ/4=250msec (it is the greatest common divisor
for HZ=100 and HZ=1024 8)), maximal interval
is (HZ*2^EST_MAX_INTERVAL)/4 = 8sec. Shorter intervals
...
...
@@ -86,9 +86,9 @@ struct gen_estimator
spinlock_t
*
stats_lock
;
int
ewma_log
;
u64
last_bytes
;
u64
avbps
;
u32
last_packets
;
u32
avpps
;
u32
avbps
;
struct
rcu_head
e_rcu
;
struct
rb_node
node
;
};
...
...
@@ -115,6 +115,7 @@ static void est_timer(unsigned long arg)
rcu_read_lock
();
list_for_each_entry_rcu
(
e
,
&
elist
[
idx
].
list
,
list
)
{
u64
nbytes
;
u64
brate
;
u32
npackets
;
u32
rate
;
...
...
@@ -125,9 +126,9 @@ static void est_timer(unsigned long arg)
nbytes
=
e
->
bstats
->
bytes
;
npackets
=
e
->
bstats
->
packets
;
rate
=
(
nbytes
-
e
->
last_bytes
)
<<
(
7
-
idx
);
b
rate
=
(
nbytes
-
e
->
last_bytes
)
<<
(
7
-
idx
);
e
->
last_bytes
=
nbytes
;
e
->
avbps
+=
((
long
)
rate
-
(
long
)
e
->
avbps
)
>>
e
->
ewma_log
;
e
->
avbps
+=
((
s64
)(
brate
-
e
->
avbps
)
)
>>
e
->
ewma_log
;
e
->
rate_est
->
bps
=
(
e
->
avbps
+
0xF
)
>>
5
;
rate
=
(
npackets
-
e
->
last_packets
)
<<
(
12
-
idx
);
...
...
net/core/netpoll.c
浏览文件 @
9bd7de51
...
...
@@ -175,9 +175,13 @@ static void service_arp_queue(struct netpoll_info *npi)
void
netpoll_poll
(
struct
netpoll
*
np
)
{
struct
net_device
*
dev
=
np
->
dev
;
const
struct
net_device_ops
*
ops
=
dev
->
netdev_ops
;
const
struct
net_device_ops
*
ops
;
if
(
!
dev
||
!
netif_running
(
dev
))
return
;
if
(
!
dev
||
!
netif_running
(
dev
)
||
!
ops
->
ndo_poll_controller
)
ops
=
dev
->
netdev_ops
;
if
(
!
ops
->
ndo_poll_controller
)
return
;
/* Process pending work on NIC */
...
...
net/core/skbuff.c
浏览文件 @
9bd7de51
...
...
@@ -2288,7 +2288,7 @@ unsigned int skb_seq_read(unsigned int consumed, const u8 **data,
next_skb:
block_limit
=
skb_headlen
(
st
->
cur_skb
)
+
st
->
stepped_offset
;
if
(
abs_offset
<
block_limit
)
{
if
(
abs_offset
<
block_limit
&&
!
st
->
frag_data
)
{
*
data
=
st
->
cur_skb
->
data
+
(
abs_offset
-
st
->
stepped_offset
);
return
block_limit
-
abs_offset
;
}
...
...
net/ipv4/Kconfig
浏览文件 @
9bd7de51
...
...
@@ -408,7 +408,7 @@ config INET_XFRM_MODE_BEET
config INET_LRO
bool "Large Receive Offload (ipv4/tcp)"
default y
---help---
Support for Large Receive Offload (ipv4/tcp).
...
...
net/ipv4/ipconfig.c
浏览文件 @
9bd7de51
...
...
@@ -139,6 +139,8 @@ __be32 ic_servaddr = NONE; /* Boot server IP address */
__be32
root_server_addr
=
NONE
;
/* Address of NFS server */
u8
root_server_path
[
256
]
=
{
0
,
};
/* Path to mount as root */
u32
ic_dev_xid
;
/* Device under configuration */
/* vendor class identifier */
static
char
vendor_class_identifier
[
253
]
__initdata
;
...
...
@@ -932,6 +934,13 @@ static int __init ic_bootp_recv(struct sk_buff *skb, struct net_device *dev, str
goto
drop_unlock
;
}
/* Is it a reply for the device we are configuring? */
if
(
b
->
xid
!=
ic_dev_xid
)
{
if
(
net_ratelimit
())
printk
(
KERN_ERR
"DHCP/BOOTP: Ignoring delayed packet
\n
"
);
goto
drop_unlock
;
}
/* Parse extensions */
if
(
ext_len
>=
4
&&
!
memcmp
(
b
->
exten
,
ic_bootp_cookie
,
4
))
{
/* Check magic cookie */
...
...
@@ -1115,6 +1124,9 @@ static int __init ic_dynamic(void)
get_random_bytes
(
&
timeout
,
sizeof
(
timeout
));
timeout
=
CONF_BASE_TIMEOUT
+
(
timeout
%
(
unsigned
)
CONF_TIMEOUT_RANDOM
);
for
(;;)
{
/* Track the device we are configuring */
ic_dev_xid
=
d
->
xid
;
#ifdef IPCONFIG_BOOTP
if
(
do_bootp
&&
(
d
->
able
&
IC_BOOTP
))
ic_bootp_send_if
(
d
,
jiffies
-
start_jiffies
);
...
...
net/ipv4/tcp.c
浏览文件 @
9bd7de51
...
...
@@ -1321,6 +1321,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
struct
task_struct
*
user_recv
=
NULL
;
int
copied_early
=
0
;
struct
sk_buff
*
skb
;
u32
urg_hole
=
0
;
lock_sock
(
sk
);
...
...
@@ -1532,7 +1533,8 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
}
}
}
if
((
flags
&
MSG_PEEK
)
&&
peek_seq
!=
tp
->
copied_seq
)
{
if
((
flags
&
MSG_PEEK
)
&&
(
peek_seq
-
copied
-
urg_hole
!=
tp
->
copied_seq
))
{
if
(
net_ratelimit
())
printk
(
KERN_DEBUG
"TCP(%s:%d): Application bug, race in MSG_PEEK.
\n
"
,
current
->
comm
,
task_pid_nr
(
current
));
...
...
@@ -1553,6 +1555,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
if
(
!
urg_offset
)
{
if
(
!
sock_flag
(
sk
,
SOCK_URGINLINE
))
{
++*
seq
;
urg_hole
++
;
offset
++
;
used
--
;
if
(
!
used
)
...
...
net/sched/sch_teql.c
浏览文件 @
9bd7de51
...
...
@@ -303,6 +303,8 @@ static int teql_master_xmit(struct sk_buff *skb, struct net_device *dev)
switch
(
teql_resolve
(
skb
,
skb_res
,
slave
))
{
case
0
:
if
(
__netif_tx_trylock
(
slave_txq
))
{
unsigned
int
length
=
qdisc_pkt_len
(
skb
);
if
(
!
netif_tx_queue_stopped
(
slave_txq
)
&&
!
netif_tx_queue_frozen
(
slave_txq
)
&&
slave_ops
->
ndo_start_xmit
(
skb
,
slave
)
==
0
)
{
...
...
@@ -310,8 +312,7 @@ static int teql_master_xmit(struct sk_buff *skb, struct net_device *dev)
master
->
slaves
=
NEXT_SLAVE
(
q
);
netif_wake_queue
(
dev
);
master
->
stats
.
tx_packets
++
;
master
->
stats
.
tx_bytes
+=
qdisc_pkt_len
(
skb
);
master
->
stats
.
tx_bytes
+=
length
;
return
0
;
}
__netif_tx_unlock
(
slave_txq
);
...
...
scripts/setlocalversion
浏览文件 @
9bd7de51
#!/bin/sh
# Print additional version information for non-release trees.
#
# This scripts adds local version information from the version
# control systems git, mercurial (hg) and subversion (svn).
#
# If something goes wrong, send a mail the kernel build mailinglist
# (see MAINTAINERS) and CC Nico Schottelius
# <nico-linuxsetlocalversion -at- schottelius.org>.
#
#
usage
()
{
echo
"Usage:
$0
[srctree]"
>
&2
...
...
@@ -10,12 +18,20 @@ cd "${1:-.}" || usage
# Check for git and a git repo.
if
head
=
`
git rev-parse
--verify
--short
HEAD 2>/dev/null
`
;
then
# Do we have an untagged tag?
if
atag
=
`
git describe 2>/dev/null
`
;
then
echo
"
$atag
"
|
awk
-F-
'{printf("-%05d-%s", $(NF-1),$(NF))}'
# add -g${head}, if there is no usable tag
else
printf
'%s%s'
-g
$head
# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore it,
# because this version is defined in the top level Makefile.
if
[
-z
"
`
git describe
--exact-match
2>/dev/null
`
"
]
;
then
# If we are past a tagged commit (like "v2.6.30-rc5-302-g72357d5"),
# we pretty print it.
if
atag
=
"
`
git describe 2>/dev/null
`
"
;
then
echo
"
$atag
"
|
awk
-F-
'{printf("-%05d-%s", $(NF-1),$(NF))}'
# If we don't have a tag at all we print -g{commitish}.
else
printf
'%s%s'
-g
$head
fi
fi
# Is this git on svn?
...
...
sound/arm/aaci.c
浏览文件 @
9bd7de51
...
...
@@ -1074,7 +1074,7 @@ static unsigned int __devinit aaci_size_fifo(struct aaci *aaci)
return
i
;
}
static
int
__devinit
aaci_probe
(
struct
amba_device
*
dev
,
vo
id
*
id
)
static
int
__devinit
aaci_probe
(
struct
amba_device
*
dev
,
struct
amba_
id
*
id
)
{
struct
aaci
*
aaci
;
int
ret
,
i
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录