Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
64b1f00a
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
64b1f00a
编写于
10月 08, 2014
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge
git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
上级
16b99a4f
5301e3e1
变更
47
隐藏空白更改
内联
并排
Showing
47 changed file
with
264 addition
and
181 deletion
+264
-181
MAINTAINERS
MAINTAINERS
+9
-3
drivers/cpufreq/cpufreq.c
drivers/cpufreq/cpufreq.c
+4
-3
drivers/cpufreq/integrator-cpufreq.c
drivers/cpufreq/integrator-cpufreq.c
+2
-2
drivers/cpufreq/pcc-cpufreq.c
drivers/cpufreq/pcc-cpufreq.c
+1
-1
drivers/gpu/drm/i915/i915_gem_gtt.c
drivers/gpu/drm/i915/i915_gem_gtt.c
+13
-1
drivers/gpu/drm/i915/intel_opregion.c
drivers/gpu/drm/i915/intel_opregion.c
+11
-5
drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
+2
-1
drivers/gpu/drm/nouveau/nouveau_chan.c
drivers/gpu/drm/nouveau/nouveau_chan.c
+6
-1
drivers/gpu/drm/nouveau/nouveau_display.c
drivers/gpu/drm/nouveau/nouveau_display.c
+11
-12
drivers/gpu/drm/nouveau/nouveau_display.h
drivers/gpu/drm/nouveau/nouveau_display.h
+2
-3
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/nouveau/nouveau_drm.c
+13
-38
drivers/gpu/drm/nouveau/nouveau_fbcon.c
drivers/gpu/drm/nouveau/nouveau_fbcon.c
+17
-6
drivers/gpu/drm/nouveau/nouveau_fbcon.h
drivers/gpu/drm/nouveau/nouveau_fbcon.h
+1
-0
drivers/md/raid5.c
drivers/md/raid5.c
+17
-1
drivers/media/usb/em28xx/em28xx-cards.c
drivers/media/usb/em28xx/em28xx-cards.c
+1
-0
drivers/net/ethernet/3com/3c59x.c
drivers/net/ethernet/3com/3c59x.c
+1
-1
drivers/net/ethernet/broadcom/bcmsysport.c
drivers/net/ethernet/broadcom/bcmsysport.c
+7
-6
drivers/net/ethernet/brocade/bna/bna_tx_rx.c
drivers/net/ethernet/brocade/bna/bna_tx_rx.c
+1
-1
drivers/net/ethernet/brocade/bna/bnad.c
drivers/net/ethernet/brocade/bna/bnad.c
+1
-1
drivers/net/ethernet/toshiba/spider_net.c
drivers/net/ethernet/toshiba/spider_net.c
+5
-37
drivers/net/hyperv/netvsc.c
drivers/net/hyperv/netvsc.c
+8
-7
drivers/net/team/team.c
drivers/net/team/team.c
+2
-2
drivers/net/usb/asix_devices.c
drivers/net/usb/asix_devices.c
+1
-1
drivers/net/usb/r8152.c
drivers/net/usb/r8152.c
+9
-2
drivers/parisc/superio.c
drivers/parisc/superio.c
+2
-1
fs/ocfs2/dlm/dlmmaster.c
fs/ocfs2/dlm/dlmmaster.c
+4
-0
include/net/sctp/command.h
include/net/sctp/command.h
+1
-1
kernel/events/core.c
kernel/events/core.c
+3
-1
kernel/fork.c
kernel/fork.c
+3
-2
mm/huge_memory.c
mm/huge_memory.c
+5
-2
mm/memcontrol.c
mm/memcontrol.c
+31
-5
mm/migrate.c
mm/migrate.c
+4
-1
mm/page_alloc.c
mm/page_alloc.c
+3
-4
net/bridge/br_netfilter.c
net/bridge/br_netfilter.c
+11
-0
net/bridge/br_private.h
net/bridge/br_private.h
+4
-0
net/ipv6/ip6_gre.c
net/ipv6/ip6_gre.c
+2
-2
net/rds/send.c
net/rds/send.c
+7
-4
net/rds/tcp_connect.c
net/rds/tcp_connect.c
+4
-1
net/rds/threads.c
net/rds/threads.c
+1
-2
net/sched/cls_api.c
net/sched/cls_api.c
+1
-0
net/sched/ematch.c
net/sched/ematch.c
+3
-2
net/sctp/sm_statefuns.c
net/sctp/sm_statefuns.c
+16
-3
sound/soc/codecs/rt286.c
sound/soc/codecs/rt286.c
+3
-4
sound/soc/codecs/ssm2602.c
sound/soc/codecs/ssm2602.c
+1
-1
sound/soc/fsl/fsl_ssi.c
sound/soc/fsl/fsl_ssi.c
+7
-5
sound/soc/soc-compress.c
sound/soc/soc-compress.c
+2
-4
sound/soc/soc-core.c
sound/soc/soc-core.c
+1
-1
未找到文件。
MAINTAINERS
浏览文件 @
64b1f00a
...
@@ -1667,6 +1667,12 @@ M: Nicolas Ferre <nicolas.ferre@atmel.com>
...
@@ -1667,6 +1667,12 @@ M: Nicolas Ferre <nicolas.ferre@atmel.com>
S: Supported
S: Supported
F: drivers/tty/serial/atmel_serial.c
F: drivers/tty/serial/atmel_serial.c
ATMEL Audio ALSA driver
M: Bo Shen <voice.shen@atmel.com>
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
S: Supported
F: sound/soc/atmel
ATMEL DMA DRIVER
ATMEL DMA DRIVER
M: Nicolas Ferre <nicolas.ferre@atmel.com>
M: Nicolas Ferre <nicolas.ferre@atmel.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
...
@@ -4791,14 +4797,14 @@ M: Deepak Saxena <dsaxena@plexity.net>
...
@@ -4791,14 +4797,14 @@ M: Deepak Saxena <dsaxena@plexity.net>
S: Maintained
S: Maintained
F: drivers/char/hw_random/ixp4xx-rng.c
F: drivers/char/hw_random/ixp4xx-rng.c
INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf/i40e/i40evf)
INTEL ETHERNET DRIVERS (e100/e1000/e1000e/
fm10k/
igb/igbvf/ixgb/ixgbe/ixgbevf/i40e/i40evf)
M: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
M: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
M: Jesse Brandeburg <jesse.brandeburg@intel.com>
M: Jesse Brandeburg <jesse.brandeburg@intel.com>
M: Bruce Allan <bruce.w.allan@intel.com>
M: Bruce Allan <bruce.w.allan@intel.com>
M: Carolyn Wyborny <carolyn.wyborny@intel.com>
M: Carolyn Wyborny <carolyn.wyborny@intel.com>
M: Don Skidmore <donald.c.skidmore@intel.com>
M: Don Skidmore <donald.c.skidmore@intel.com>
M: Greg Rose <gregory.v.rose@intel.com>
M: Greg Rose <gregory.v.rose@intel.com>
M:
Alex Duyck <alexander.h.duy
ck@intel.com>
M:
Matthew Vick <matthew.vi
ck@intel.com>
M: John Ronciak <john.ronciak@intel.com>
M: John Ronciak <john.ronciak@intel.com>
M: Mitch Williams <mitch.a.williams@intel.com>
M: Mitch Williams <mitch.a.williams@intel.com>
M: Linux NICS <linux.nics@intel.com>
M: Linux NICS <linux.nics@intel.com>
...
@@ -5486,7 +5492,7 @@ F: drivers/macintosh/
...
@@ -5486,7 +5492,7 @@ F: drivers/macintosh/
LINUX FOR POWERPC EMBEDDED MPC5XXX
LINUX FOR POWERPC EMBEDDED MPC5XXX
M: Anatolij Gustschin <agust@denx.de>
M: Anatolij Gustschin <agust@denx.de>
L: linuxppc-dev@lists.ozlabs.org
L: linuxppc-dev@lists.ozlabs.org
T: git git://git.denx.de/linux-
2.6
-agust.git
T: git git://git.denx.de/linux-
denx
-agust.git
S: Maintained
S: Maintained
F: arch/powerpc/platforms/512x/
F: arch/powerpc/platforms/512x/
F: arch/powerpc/platforms/52xx/
F: arch/powerpc/platforms/52xx/
...
...
drivers/cpufreq/cpufreq.c
浏览文件 @
64b1f00a
...
@@ -1658,10 +1658,8 @@ void cpufreq_suspend(void)
...
@@ -1658,10 +1658,8 @@ void cpufreq_suspend(void)
if
(
!
cpufreq_driver
)
if
(
!
cpufreq_driver
)
return
;
return
;
cpufreq_suspended
=
true
;
if
(
!
has_target
())
if
(
!
has_target
())
return
;
goto
suspend
;
pr_debug
(
"%s: Suspending Governors
\n
"
,
__func__
);
pr_debug
(
"%s: Suspending Governors
\n
"
,
__func__
);
...
@@ -1674,6 +1672,9 @@ void cpufreq_suspend(void)
...
@@ -1674,6 +1672,9 @@ void cpufreq_suspend(void)
pr_err
(
"%s: Failed to suspend driver: %p
\n
"
,
__func__
,
pr_err
(
"%s: Failed to suspend driver: %p
\n
"
,
__func__
,
policy
);
policy
);
}
}
suspend:
cpufreq_suspended
=
true
;
}
}
/**
/**
...
...
drivers/cpufreq/integrator-cpufreq.c
浏览文件 @
64b1f00a
...
@@ -213,9 +213,9 @@ static int __init integrator_cpufreq_probe(struct platform_device *pdev)
...
@@ -213,9 +213,9 @@ static int __init integrator_cpufreq_probe(struct platform_device *pdev)
return
cpufreq_register_driver
(
&
integrator_driver
);
return
cpufreq_register_driver
(
&
integrator_driver
);
}
}
static
void
__exit
integrator_cpufreq_remove
(
struct
platform_device
*
pdev
)
static
int
__exit
integrator_cpufreq_remove
(
struct
platform_device
*
pdev
)
{
{
cpufreq_unregister_driver
(
&
integrator_driver
);
return
cpufreq_unregister_driver
(
&
integrator_driver
);
}
}
static
const
struct
of_device_id
integrator_cpufreq_match
[]
=
{
static
const
struct
of_device_id
integrator_cpufreq_match
[]
=
{
...
...
drivers/cpufreq/pcc-cpufreq.c
浏览文件 @
64b1f00a
...
@@ -204,7 +204,6 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy,
...
@@ -204,7 +204,6 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy,
u32
input_buffer
;
u32
input_buffer
;
int
cpu
;
int
cpu
;
spin_lock
(
&
pcc_lock
);
cpu
=
policy
->
cpu
;
cpu
=
policy
->
cpu
;
pcc_cpu_data
=
per_cpu_ptr
(
pcc_cpu_info
,
cpu
);
pcc_cpu_data
=
per_cpu_ptr
(
pcc_cpu_info
,
cpu
);
...
@@ -216,6 +215,7 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy,
...
@@ -216,6 +215,7 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy,
freqs
.
old
=
policy
->
cur
;
freqs
.
old
=
policy
->
cur
;
freqs
.
new
=
target_freq
;
freqs
.
new
=
target_freq
;
cpufreq_freq_transition_begin
(
policy
,
&
freqs
);
cpufreq_freq_transition_begin
(
policy
,
&
freqs
);
spin_lock
(
&
pcc_lock
);
input_buffer
=
0x1
|
(((
target_freq
*
100
)
input_buffer
=
0x1
|
(((
target_freq
*
100
)
/
(
ioread32
(
&
pcch_hdr
->
nominal
)
*
1000
))
<<
8
);
/
(
ioread32
(
&
pcch_hdr
->
nominal
)
*
1000
))
<<
8
);
...
...
drivers/gpu/drm/i915/i915_gem_gtt.c
浏览文件 @
64b1f00a
...
@@ -1310,6 +1310,16 @@ void i915_check_and_clear_faults(struct drm_device *dev)
...
@@ -1310,6 +1310,16 @@ void i915_check_and_clear_faults(struct drm_device *dev)
POSTING_READ
(
RING_FAULT_REG
(
&
dev_priv
->
ring
[
RCS
]));
POSTING_READ
(
RING_FAULT_REG
(
&
dev_priv
->
ring
[
RCS
]));
}
}
static
void
i915_ggtt_flush
(
struct
drm_i915_private
*
dev_priv
)
{
if
(
INTEL_INFO
(
dev_priv
->
dev
)
->
gen
<
6
)
{
intel_gtt_chipset_flush
();
}
else
{
I915_WRITE
(
GFX_FLSH_CNTL_GEN6
,
GFX_FLSH_CNTL_EN
);
POSTING_READ
(
GFX_FLSH_CNTL_GEN6
);
}
}
void
i915_gem_suspend_gtt_mappings
(
struct
drm_device
*
dev
)
void
i915_gem_suspend_gtt_mappings
(
struct
drm_device
*
dev
)
{
{
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
...
@@ -1326,6 +1336,8 @@ void i915_gem_suspend_gtt_mappings(struct drm_device *dev)
...
@@ -1326,6 +1336,8 @@ void i915_gem_suspend_gtt_mappings(struct drm_device *dev)
dev_priv
->
gtt
.
base
.
start
,
dev_priv
->
gtt
.
base
.
start
,
dev_priv
->
gtt
.
base
.
total
,
dev_priv
->
gtt
.
base
.
total
,
true
);
true
);
i915_ggtt_flush
(
dev_priv
);
}
}
void
i915_gem_restore_gtt_mappings
(
struct
drm_device
*
dev
)
void
i915_gem_restore_gtt_mappings
(
struct
drm_device
*
dev
)
...
@@ -1378,7 +1390,7 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)
...
@@ -1378,7 +1390,7 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)
gen6_write_pdes
(
container_of
(
vm
,
struct
i915_hw_ppgtt
,
base
));
gen6_write_pdes
(
container_of
(
vm
,
struct
i915_hw_ppgtt
,
base
));
}
}
i915_g
em_chipset_flush
(
de
v
);
i915_g
gtt_flush
(
dev_pri
v
);
}
}
int
i915_gem_gtt_prepare_object
(
struct
drm_i915_gem_object
*
obj
)
int
i915_gem_gtt_prepare_object
(
struct
drm_i915_gem_object
*
obj
)
...
...
drivers/gpu/drm/i915/intel_opregion.c
浏览文件 @
64b1f00a
...
@@ -396,6 +396,16 @@ int intel_opregion_notify_adapter(struct drm_device *dev, pci_power_t state)
...
@@ -396,6 +396,16 @@ int intel_opregion_notify_adapter(struct drm_device *dev, pci_power_t state)
return
-
EINVAL
;
return
-
EINVAL
;
}
}
/*
* If the vendor backlight interface is not in use and ACPI backlight interface
* is broken, do not bother processing backlight change requests from firmware.
*/
static
bool
should_ignore_backlight_request
(
void
)
{
return
acpi_video_backlight_support
()
&&
!
acpi_video_verify_backlight_support
();
}
static
u32
asle_set_backlight
(
struct
drm_device
*
dev
,
u32
bclp
)
static
u32
asle_set_backlight
(
struct
drm_device
*
dev
,
u32
bclp
)
{
{
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
...
@@ -404,11 +414,7 @@ static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
...
@@ -404,11 +414,7 @@ static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
DRM_DEBUG_DRIVER
(
"bclp = 0x%08x
\n
"
,
bclp
);
DRM_DEBUG_DRIVER
(
"bclp = 0x%08x
\n
"
,
bclp
);
/*
if
(
should_ignore_backlight_request
())
{
* If the acpi_video interface is not supposed to be used, don't
* bother processing backlight level change requests from firmware.
*/
if
(
!
acpi_video_verify_backlight_support
())
{
DRM_DEBUG_KMS
(
"opregion backlight request ignored
\n
"
);
DRM_DEBUG_KMS
(
"opregion backlight request ignored
\n
"
);
return
0
;
return
0
;
}
}
...
...
drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
浏览文件 @
64b1f00a
...
@@ -1763,9 +1763,10 @@ nv50_disp_intr_unk40_0_tmds(struct nv50_disp_priv *priv, struct dcb_output *outp
...
@@ -1763,9 +1763,10 @@ nv50_disp_intr_unk40_0_tmds(struct nv50_disp_priv *priv, struct dcb_output *outp
const
int
or
=
ffs
(
outp
->
or
)
-
1
;
const
int
or
=
ffs
(
outp
->
or
)
-
1
;
const
u32
loff
=
(
or
*
0x800
)
+
(
link
*
0x80
);
const
u32
loff
=
(
or
*
0x800
)
+
(
link
*
0x80
);
const
u16
mask
=
(
outp
->
sorconf
.
link
<<
6
)
|
outp
->
or
;
const
u16
mask
=
(
outp
->
sorconf
.
link
<<
6
)
|
outp
->
or
;
struct
dcb_output
match
;
u8
ver
,
hdr
;
u8
ver
,
hdr
;
if
(
dcb_outp_match
(
bios
,
DCB_OUTPUT_DP
,
mask
,
&
ver
,
&
hdr
,
outp
))
if
(
dcb_outp_match
(
bios
,
DCB_OUTPUT_DP
,
mask
,
&
ver
,
&
hdr
,
&
match
))
nv_mask
(
priv
,
0x61c10c
+
loff
,
0x00000001
,
0x00000000
);
nv_mask
(
priv
,
0x61c10c
+
loff
,
0x00000001
,
0x00000000
);
}
}
...
...
drivers/gpu/drm/nouveau/nouveau_chan.c
浏览文件 @
64b1f00a
...
@@ -285,6 +285,7 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart)
...
@@ -285,6 +285,7 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart)
struct
nouveau_software_chan
*
swch
;
struct
nouveau_software_chan
*
swch
;
struct
nv_dma_v0
args
=
{};
struct
nv_dma_v0
args
=
{};
int
ret
,
i
;
int
ret
,
i
;
bool
save
;
nvif_object_map
(
chan
->
object
);
nvif_object_map
(
chan
->
object
);
...
@@ -386,7 +387,11 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart)
...
@@ -386,7 +387,11 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart)
}
}
/* initialise synchronisation */
/* initialise synchronisation */
return
nouveau_fence
(
chan
->
drm
)
->
context_new
(
chan
);
save
=
cli
->
base
.
super
;
cli
->
base
.
super
=
true
;
/* hack until fencenv50 fixed */
ret
=
nouveau_fence
(
chan
->
drm
)
->
context_new
(
chan
);
cli
->
base
.
super
=
save
;
return
ret
;
}
}
int
int
...
...
drivers/gpu/drm/nouveau/nouveau_display.c
浏览文件 @
64b1f00a
...
@@ -550,14 +550,12 @@ nouveau_display_destroy(struct drm_device *dev)
...
@@ -550,14 +550,12 @@ nouveau_display_destroy(struct drm_device *dev)
}
}
int
int
nouveau_display_suspend
(
struct
drm_device
*
dev
)
nouveau_display_suspend
(
struct
drm_device
*
dev
,
bool
runtime
)
{
{
struct
nouveau_drm
*
drm
=
nouveau_drm
(
dev
);
struct
drm_crtc
*
crtc
;
struct
drm_crtc
*
crtc
;
nouveau_display_fini
(
dev
);
nouveau_display_fini
(
dev
);
NV_INFO
(
drm
,
"unpinning framebuffer(s)...
\n
"
);
list_for_each_entry
(
crtc
,
&
dev
->
mode_config
.
crtc_list
,
head
)
{
list_for_each_entry
(
crtc
,
&
dev
->
mode_config
.
crtc_list
,
head
)
{
struct
nouveau_framebuffer
*
nouveau_fb
;
struct
nouveau_framebuffer
*
nouveau_fb
;
...
@@ -579,12 +577,13 @@ nouveau_display_suspend(struct drm_device *dev)
...
@@ -579,12 +577,13 @@ nouveau_display_suspend(struct drm_device *dev)
}
}
void
void
nouveau_display_re
pin
(
struct
drm_device
*
dev
)
nouveau_display_re
sume
(
struct
drm_device
*
dev
,
bool
runtime
)
{
{
struct
nouveau_drm
*
drm
=
nouveau_drm
(
dev
);
struct
nouveau_drm
*
drm
=
nouveau_drm
(
dev
);
struct
drm_crtc
*
crtc
;
struct
drm_crtc
*
crtc
;
int
ret
;
int
ret
,
head
;
/* re-pin fb/cursors */
list_for_each_entry
(
crtc
,
&
dev
->
mode_config
.
crtc_list
,
head
)
{
list_for_each_entry
(
crtc
,
&
dev
->
mode_config
.
crtc_list
,
head
)
{
struct
nouveau_framebuffer
*
nouveau_fb
;
struct
nouveau_framebuffer
*
nouveau_fb
;
...
@@ -606,13 +605,6 @@ nouveau_display_repin(struct drm_device *dev)
...
@@ -606,13 +605,6 @@ nouveau_display_repin(struct drm_device *dev)
if
(
ret
)
if
(
ret
)
NV_ERROR
(
drm
,
"Could not pin/map cursor.
\n
"
);
NV_ERROR
(
drm
,
"Could not pin/map cursor.
\n
"
);
}
}
}
void
nouveau_display_resume
(
struct
drm_device
*
dev
)
{
struct
drm_crtc
*
crtc
;
int
head
;
nouveau_display_init
(
dev
);
nouveau_display_init
(
dev
);
...
@@ -627,6 +619,13 @@ nouveau_display_resume(struct drm_device *dev)
...
@@ -627,6 +619,13 @@ nouveau_display_resume(struct drm_device *dev)
for
(
head
=
0
;
head
<
dev
->
mode_config
.
num_crtc
;
head
++
)
for
(
head
=
0
;
head
<
dev
->
mode_config
.
num_crtc
;
head
++
)
drm_vblank_on
(
dev
,
head
);
drm_vblank_on
(
dev
,
head
);
/* This should ensure we don't hit a locking problem when someone
* wakes us up via a connector. We should never go into suspend
* while the display is on anyways.
*/
if
(
runtime
)
return
;
drm_helper_resume_force_mode
(
dev
);
drm_helper_resume_force_mode
(
dev
);
list_for_each_entry
(
crtc
,
&
dev
->
mode_config
.
crtc_list
,
head
)
{
list_for_each_entry
(
crtc
,
&
dev
->
mode_config
.
crtc_list
,
head
)
{
...
...
drivers/gpu/drm/nouveau/nouveau_display.h
浏览文件 @
64b1f00a
...
@@ -63,9 +63,8 @@ int nouveau_display_create(struct drm_device *dev);
...
@@ -63,9 +63,8 @@ int nouveau_display_create(struct drm_device *dev);
void
nouveau_display_destroy
(
struct
drm_device
*
dev
);
void
nouveau_display_destroy
(
struct
drm_device
*
dev
);
int
nouveau_display_init
(
struct
drm_device
*
dev
);
int
nouveau_display_init
(
struct
drm_device
*
dev
);
void
nouveau_display_fini
(
struct
drm_device
*
dev
);
void
nouveau_display_fini
(
struct
drm_device
*
dev
);
int
nouveau_display_suspend
(
struct
drm_device
*
dev
);
int
nouveau_display_suspend
(
struct
drm_device
*
dev
,
bool
runtime
);
void
nouveau_display_repin
(
struct
drm_device
*
dev
);
void
nouveau_display_resume
(
struct
drm_device
*
dev
,
bool
runtime
);
void
nouveau_display_resume
(
struct
drm_device
*
dev
);
int
nouveau_display_vblank_enable
(
struct
drm_device
*
,
int
);
int
nouveau_display_vblank_enable
(
struct
drm_device
*
,
int
);
void
nouveau_display_vblank_disable
(
struct
drm_device
*
,
int
);
void
nouveau_display_vblank_disable
(
struct
drm_device
*
,
int
);
int
nouveau_display_scanoutpos
(
struct
drm_device
*
,
int
,
unsigned
int
,
int
nouveau_display_scanoutpos
(
struct
drm_device
*
,
int
,
unsigned
int
,
...
...
drivers/gpu/drm/nouveau/nouveau_drm.c
浏览文件 @
64b1f00a
...
@@ -547,9 +547,11 @@ nouveau_do_suspend(struct drm_device *dev, bool runtime)
...
@@ -547,9 +547,11 @@ nouveau_do_suspend(struct drm_device *dev, bool runtime)
struct
nouveau_cli
*
cli
;
struct
nouveau_cli
*
cli
;
int
ret
;
int
ret
;
if
(
dev
->
mode_config
.
num_crtc
&&
!
runtime
)
{
if
(
dev
->
mode_config
.
num_crtc
)
{
NV_INFO
(
drm
,
"suspending console...
\n
"
);
nouveau_fbcon_set_suspend
(
dev
,
1
);
NV_INFO
(
drm
,
"suspending display...
\n
"
);
NV_INFO
(
drm
,
"suspending display...
\n
"
);
ret
=
nouveau_display_suspend
(
dev
);
ret
=
nouveau_display_suspend
(
dev
,
runtime
);
if
(
ret
)
if
(
ret
)
return
ret
;
return
ret
;
}
}
...
@@ -603,7 +605,7 @@ nouveau_do_suspend(struct drm_device *dev, bool runtime)
...
@@ -603,7 +605,7 @@ nouveau_do_suspend(struct drm_device *dev, bool runtime)
fail_display:
fail_display:
if
(
dev
->
mode_config
.
num_crtc
)
{
if
(
dev
->
mode_config
.
num_crtc
)
{
NV_INFO
(
drm
,
"resuming display...
\n
"
);
NV_INFO
(
drm
,
"resuming display...
\n
"
);
nouveau_display_resume
(
dev
);
nouveau_display_resume
(
dev
,
runtime
);
}
}
return
ret
;
return
ret
;
}
}
...
@@ -618,9 +620,6 @@ int nouveau_pmops_suspend(struct device *dev)
...
@@ -618,9 +620,6 @@ int nouveau_pmops_suspend(struct device *dev)
drm_dev
->
switch_power_state
==
DRM_SWITCH_POWER_DYNAMIC_OFF
)
drm_dev
->
switch_power_state
==
DRM_SWITCH_POWER_DYNAMIC_OFF
)
return
0
;
return
0
;
if
(
drm_dev
->
mode_config
.
num_crtc
)
nouveau_fbcon_set_suspend
(
drm_dev
,
1
);
ret
=
nouveau_do_suspend
(
drm_dev
,
false
);
ret
=
nouveau_do_suspend
(
drm_dev
,
false
);
if
(
ret
)
if
(
ret
)
return
ret
;
return
ret
;
...
@@ -633,7 +632,7 @@ int nouveau_pmops_suspend(struct device *dev)
...
@@ -633,7 +632,7 @@ int nouveau_pmops_suspend(struct device *dev)
}
}
static
int
static
int
nouveau_do_resume
(
struct
drm_device
*
dev
)
nouveau_do_resume
(
struct
drm_device
*
dev
,
bool
runtime
)
{
{
struct
nouveau_drm
*
drm
=
nouveau_drm
(
dev
);
struct
nouveau_drm
*
drm
=
nouveau_drm
(
dev
);
struct
nouveau_cli
*
cli
;
struct
nouveau_cli
*
cli
;
...
@@ -658,7 +657,9 @@ nouveau_do_resume(struct drm_device *dev)
...
@@ -658,7 +657,9 @@ nouveau_do_resume(struct drm_device *dev)
if
(
dev
->
mode_config
.
num_crtc
)
{
if
(
dev
->
mode_config
.
num_crtc
)
{
NV_INFO
(
drm
,
"resuming display...
\n
"
);
NV_INFO
(
drm
,
"resuming display...
\n
"
);
nouveau_display_repin
(
dev
);
nouveau_display_resume
(
dev
,
runtime
);
NV_INFO
(
drm
,
"resuming console...
\n
"
);
nouveau_fbcon_set_suspend
(
dev
,
0
);
}
}
return
0
;
return
0
;
...
@@ -681,47 +682,21 @@ int nouveau_pmops_resume(struct device *dev)
...
@@ -681,47 +682,21 @@ int nouveau_pmops_resume(struct device *dev)
return
ret
;
return
ret
;
pci_set_master
(
pdev
);
pci_set_master
(
pdev
);
ret
=
nouveau_do_resume
(
drm_dev
);
return
nouveau_do_resume
(
drm_dev
,
false
);
if
(
ret
)
return
ret
;
if
(
drm_dev
->
mode_config
.
num_crtc
)
{
nouveau_display_resume
(
drm_dev
);
nouveau_fbcon_set_suspend
(
drm_dev
,
0
);
}
return
0
;
}
}
static
int
nouveau_pmops_freeze
(
struct
device
*
dev
)
static
int
nouveau_pmops_freeze
(
struct
device
*
dev
)
{
{
struct
pci_dev
*
pdev
=
to_pci_dev
(
dev
);
struct
pci_dev
*
pdev
=
to_pci_dev
(
dev
);
struct
drm_device
*
drm_dev
=
pci_get_drvdata
(
pdev
);
struct
drm_device
*
drm_dev
=
pci_get_drvdata
(
pdev
);
int
ret
;
return
nouveau_do_suspend
(
drm_dev
,
false
);
if
(
drm_dev
->
mode_config
.
num_crtc
)
nouveau_fbcon_set_suspend
(
drm_dev
,
1
);
ret
=
nouveau_do_suspend
(
drm_dev
,
false
);
return
ret
;
}
}
static
int
nouveau_pmops_thaw
(
struct
device
*
dev
)
static
int
nouveau_pmops_thaw
(
struct
device
*
dev
)
{
{
struct
pci_dev
*
pdev
=
to_pci_dev
(
dev
);
struct
pci_dev
*
pdev
=
to_pci_dev
(
dev
);
struct
drm_device
*
drm_dev
=
pci_get_drvdata
(
pdev
);
struct
drm_device
*
drm_dev
=
pci_get_drvdata
(
pdev
);
int
ret
;
return
nouveau_do_resume
(
drm_dev
,
false
);
ret
=
nouveau_do_resume
(
drm_dev
);
if
(
ret
)
return
ret
;
if
(
drm_dev
->
mode_config
.
num_crtc
)
{
nouveau_display_resume
(
drm_dev
);
nouveau_fbcon_set_suspend
(
drm_dev
,
0
);
}
return
0
;
}
}
...
@@ -977,7 +952,7 @@ static int nouveau_pmops_runtime_resume(struct device *dev)
...
@@ -977,7 +952,7 @@ static int nouveau_pmops_runtime_resume(struct device *dev)
return
ret
;
return
ret
;
pci_set_master
(
pdev
);
pci_set_master
(
pdev
);
ret
=
nouveau_do_resume
(
drm_dev
);
ret
=
nouveau_do_resume
(
drm_dev
,
true
);
drm_kms_helper_poll_enable
(
drm_dev
);
drm_kms_helper_poll_enable
(
drm_dev
);
/* do magic */
/* do magic */
nvif_mask
(
device
,
0x88488
,
(
1
<<
25
),
(
1
<<
25
));
nvif_mask
(
device
,
0x88488
,
(
1
<<
25
),
(
1
<<
25
));
...
...
drivers/gpu/drm/nouveau/nouveau_fbcon.c
浏览文件 @
64b1f00a
...
@@ -486,6 +486,16 @@ static const struct drm_fb_helper_funcs nouveau_fbcon_helper_funcs = {
...
@@ -486,6 +486,16 @@ static const struct drm_fb_helper_funcs nouveau_fbcon_helper_funcs = {
.
fb_probe
=
nouveau_fbcon_create
,
.
fb_probe
=
nouveau_fbcon_create
,
};
};
static
void
nouveau_fbcon_set_suspend_work
(
struct
work_struct
*
work
)
{
struct
nouveau_fbdev
*
fbcon
=
container_of
(
work
,
typeof
(
*
fbcon
),
work
);
console_lock
();
nouveau_fbcon_accel_restore
(
fbcon
->
dev
);
nouveau_fbcon_zfill
(
fbcon
->
dev
,
fbcon
);
fb_set_suspend
(
fbcon
->
helper
.
fbdev
,
FBINFO_STATE_RUNNING
);
console_unlock
();
}
int
int
nouveau_fbcon_init
(
struct
drm_device
*
dev
)
nouveau_fbcon_init
(
struct
drm_device
*
dev
)
...
@@ -503,6 +513,7 @@ nouveau_fbcon_init(struct drm_device *dev)
...
@@ -503,6 +513,7 @@ nouveau_fbcon_init(struct drm_device *dev)
if
(
!
fbcon
)
if
(
!
fbcon
)
return
-
ENOMEM
;
return
-
ENOMEM
;
INIT_WORK
(
&
fbcon
->
work
,
nouveau_fbcon_set_suspend_work
);
fbcon
->
dev
=
dev
;
fbcon
->
dev
=
dev
;
drm
->
fbcon
=
fbcon
;
drm
->
fbcon
=
fbcon
;
...
@@ -551,14 +562,14 @@ nouveau_fbcon_set_suspend(struct drm_device *dev, int state)
...
@@ -551,14 +562,14 @@ nouveau_fbcon_set_suspend(struct drm_device *dev, int state)
{
{
struct
nouveau_drm
*
drm
=
nouveau_drm
(
dev
);
struct
nouveau_drm
*
drm
=
nouveau_drm
(
dev
);
if
(
drm
->
fbcon
)
{
if
(
drm
->
fbcon
)
{
console_lock
();
if
(
state
==
FBINFO_STATE_RUNNING
)
{
if
(
state
==
0
)
{
schedule_work
(
&
drm
->
fbcon
->
work
);
nouveau_fbcon_accel_restore
(
dev
);
return
;
nouveau_fbcon_zfill
(
dev
,
drm
->
fbcon
);
}
}
flush_work
(
&
drm
->
fbcon
->
work
);
console_lock
();
fb_set_suspend
(
drm
->
fbcon
->
helper
.
fbdev
,
state
);
fb_set_suspend
(
drm
->
fbcon
->
helper
.
fbdev
,
state
);
if
(
state
==
1
)
nouveau_fbcon_accel_save_disable
(
dev
);
nouveau_fbcon_accel_save_disable
(
dev
);
console_unlock
();
console_unlock
();
}
}
}
}
drivers/gpu/drm/nouveau/nouveau_fbcon.h
浏览文件 @
64b1f00a
...
@@ -36,6 +36,7 @@ struct nouveau_fbdev {
...
@@ -36,6 +36,7 @@ struct nouveau_fbdev {
struct
nouveau_framebuffer
nouveau_fb
;
struct
nouveau_framebuffer
nouveau_fb
;
struct
list_head
fbdev_list
;
struct
list_head
fbdev_list
;
struct
drm_device
*
dev
;
struct
drm_device
*
dev
;
struct
work_struct
work
;
unsigned
int
saved_flags
;
unsigned
int
saved_flags
;
struct
nvif_object
surf2d
;
struct
nvif_object
surf2d
;
struct
nvif_object
clip
;
struct
nvif_object
clip
;
...
...
drivers/md/raid5.c
浏览文件 @
64b1f00a
...
@@ -64,6 +64,10 @@
...
@@ -64,6 +64,10 @@
#define cpu_to_group(cpu) cpu_to_node(cpu)
#define cpu_to_group(cpu) cpu_to_node(cpu)
#define ANY_GROUP NUMA_NO_NODE
#define ANY_GROUP NUMA_NO_NODE
static
bool
devices_handle_discard_safely
=
false
;
module_param
(
devices_handle_discard_safely
,
bool
,
0644
);
MODULE_PARM_DESC
(
devices_handle_discard_safely
,
"Set to Y if all devices in each array reliably return zeroes on reads from discarded regions"
);
static
struct
workqueue_struct
*
raid5_wq
;
static
struct
workqueue_struct
*
raid5_wq
;
/*
/*
* Stripe cache
* Stripe cache
...
@@ -6208,7 +6212,7 @@ static int run(struct mddev *mddev)
...
@@ -6208,7 +6212,7 @@ static int run(struct mddev *mddev)
mddev
->
queue
->
limits
.
discard_granularity
=
stripe
;
mddev
->
queue
->
limits
.
discard_granularity
=
stripe
;
/*
/*
* unaligned part of discard request will be ignored, so can't
* unaligned part of discard request will be ignored, so can't
* guarantee discard_zero
r
s_data
* guarantee discard_zero
e
s_data
*/
*/
mddev
->
queue
->
limits
.
discard_zeroes_data
=
0
;
mddev
->
queue
->
limits
.
discard_zeroes_data
=
0
;
...
@@ -6233,6 +6237,18 @@ static int run(struct mddev *mddev)
...
@@ -6233,6 +6237,18 @@ static int run(struct mddev *mddev)
!
bdev_get_queue
(
rdev
->
bdev
)
->
!
bdev_get_queue
(
rdev
->
bdev
)
->
limits
.
discard_zeroes_data
)
limits
.
discard_zeroes_data
)
discard_supported
=
false
;
discard_supported
=
false
;
/* Unfortunately, discard_zeroes_data is not currently
* a guarantee - just a hint. So we only allow DISCARD
* if the sysadmin has confirmed that only safe devices
* are in use by setting a module parameter.
*/
if
(
!
devices_handle_discard_safely
)
{
if
(
discard_supported
)
{
pr_info
(
"md/raid456: discard support disabled due to uncertainty.
\n
"
);
pr_info
(
"Set raid456.devices_handle_discard_safely=Y to override.
\n
"
);
}
discard_supported
=
false
;
}
}
}
if
(
discard_supported
&&
if
(
discard_supported
&&
...
...
drivers/media/usb/em28xx/em28xx-cards.c
浏览文件 @
64b1f00a
...
@@ -3524,6 +3524,7 @@ static struct usb_driver em28xx_usb_driver = {
...
@@ -3524,6 +3524,7 @@ static struct usb_driver em28xx_usb_driver = {
.
disconnect
=
em28xx_usb_disconnect
,
.
disconnect
=
em28xx_usb_disconnect
,
.
suspend
=
em28xx_usb_suspend
,
.
suspend
=
em28xx_usb_suspend
,
.
resume
=
em28xx_usb_resume
,
.
resume
=
em28xx_usb_resume
,
.
reset_resume
=
em28xx_usb_resume
,
.
id_table
=
em28xx_id_table
,
.
id_table
=
em28xx_id_table
,
};
};
...
...
drivers/net/ethernet/3com/3c59x.c
浏览文件 @
64b1f00a
...
@@ -2213,7 +2213,7 @@ boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev)
...
@@ -2213,7 +2213,7 @@ boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev)
}
}
}
}
#else
#else
dma_addr
=
cpu_to_le32
(
pci_map_single
(
VORTEX_PCI
(
vp
),
skb
->
data
,
skb
->
len
,
PCI_DMA_TODEVICE
)
);
dma_addr
=
pci_map_single
(
VORTEX_PCI
(
vp
),
skb
->
data
,
skb
->
len
,
PCI_DMA_TODEVICE
);
if
(
dma_mapping_error
(
&
VORTEX_PCI
(
vp
)
->
dev
,
dma_addr
))
if
(
dma_mapping_error
(
&
VORTEX_PCI
(
vp
)
->
dev
,
dma_addr
))
goto
out_dma_err
;
goto
out_dma_err
;
vp
->
tx_ring
[
entry
].
addr
=
cpu_to_le32
(
dma_addr
);
vp
->
tx_ring
[
entry
].
addr
=
cpu_to_le32
(
dma_addr
);
...
...
drivers/net/ethernet/broadcom/bcmsysport.c
浏览文件 @
64b1f00a
...
@@ -857,7 +857,8 @@ static irqreturn_t bcm_sysport_wol_isr(int irq, void *dev_id)
...
@@ -857,7 +857,8 @@ static irqreturn_t bcm_sysport_wol_isr(int irq, void *dev_id)
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
static
int
bcm_sysport_insert_tsb
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
)
static
struct
sk_buff
*
bcm_sysport_insert_tsb
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
)
{
{
struct
sk_buff
*
nskb
;
struct
sk_buff
*
nskb
;
struct
bcm_tsb
*
tsb
;
struct
bcm_tsb
*
tsb
;
...
@@ -873,7 +874,7 @@ static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
...
@@ -873,7 +874,7 @@ static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
if
(
!
nskb
)
{
if
(
!
nskb
)
{
dev
->
stats
.
tx_errors
++
;
dev
->
stats
.
tx_errors
++
;
dev
->
stats
.
tx_dropped
++
;
dev
->
stats
.
tx_dropped
++
;
return
-
ENOMEM
;
return
NULL
;
}
}
skb
=
nskb
;
skb
=
nskb
;
}
}
...
@@ -892,7 +893,7 @@ static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
...
@@ -892,7 +893,7 @@ static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
ip_proto
=
ipv6_hdr
(
skb
)
->
nexthdr
;
ip_proto
=
ipv6_hdr
(
skb
)
->
nexthdr
;
break
;
break
;
default:
default:
return
0
;
return
skb
;
}
}
/* Get the checksum offset and the L4 (transport) offset */
/* Get the checksum offset and the L4 (transport) offset */
...
@@ -911,7 +912,7 @@ static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
...
@@ -911,7 +912,7 @@ static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
tsb
->
l4_ptr_dest_map
=
csum_info
;
tsb
->
l4_ptr_dest_map
=
csum_info
;
}
}
return
0
;
return
skb
;
}
}
static
netdev_tx_t
bcm_sysport_xmit
(
struct
sk_buff
*
skb
,
static
netdev_tx_t
bcm_sysport_xmit
(
struct
sk_buff
*
skb
,
...
@@ -945,8 +946,8 @@ static netdev_tx_t bcm_sysport_xmit(struct sk_buff *skb,
...
@@ -945,8 +946,8 @@ static netdev_tx_t bcm_sysport_xmit(struct sk_buff *skb,
/* Insert TSB and checksum infos */
/* Insert TSB and checksum infos */
if
(
priv
->
tsb_en
)
{
if
(
priv
->
tsb_en
)
{
ret
=
bcm_sysport_insert_tsb
(
skb
,
dev
);
skb
=
bcm_sysport_insert_tsb
(
skb
,
dev
);
if
(
ret
)
{
if
(
!
skb
)
{
ret
=
NETDEV_TX_OK
;
ret
=
NETDEV_TX_OK
;
goto
out
;
goto
out
;
}
}
...
...
drivers/net/ethernet/brocade/bna/bna_tx_rx.c
浏览文件 @
64b1f00a
...
@@ -3410,7 +3410,7 @@ bna_bfi_tx_enet_start(struct bna_tx *tx)
...
@@ -3410,7 +3410,7 @@ bna_bfi_tx_enet_start(struct bna_tx *tx)
cfg_req
->
tx_cfg
.
vlan_mode
=
BFI_ENET_TX_VLAN_WI
;
cfg_req
->
tx_cfg
.
vlan_mode
=
BFI_ENET_TX_VLAN_WI
;
cfg_req
->
tx_cfg
.
vlan_id
=
htons
((
u16
)
tx
->
txf_vlan_id
);
cfg_req
->
tx_cfg
.
vlan_id
=
htons
((
u16
)
tx
->
txf_vlan_id
);
cfg_req
->
tx_cfg
.
admit_tagged_frame
=
BNA_STATUS_T_
DIS
ABLED
;
cfg_req
->
tx_cfg
.
admit_tagged_frame
=
BNA_STATUS_T_
EN
ABLED
;
cfg_req
->
tx_cfg
.
apply_vlan_filter
=
BNA_STATUS_T_DISABLED
;
cfg_req
->
tx_cfg
.
apply_vlan_filter
=
BNA_STATUS_T_DISABLED
;
bfa_msgq_cmd_set
(
&
tx
->
msgq_cmd
,
NULL
,
NULL
,
bfa_msgq_cmd_set
(
&
tx
->
msgq_cmd
,
NULL
,
NULL
,
...
...
drivers/net/ethernet/brocade/bna/bnad.c
浏览文件 @
64b1f00a
...
@@ -2864,7 +2864,7 @@ bnad_txq_wi_prepare(struct bnad *bnad, struct bna_tcb *tcb,
...
@@ -2864,7 +2864,7 @@ bnad_txq_wi_prepare(struct bnad *bnad, struct bna_tcb *tcb,
txqent
->
hdr
.
wi
.
opcode
=
htons
(
BNA_TXQ_WI_SEND
);
txqent
->
hdr
.
wi
.
opcode
=
htons
(
BNA_TXQ_WI_SEND
);
txqent
->
hdr
.
wi
.
lso_mss
=
0
;
txqent
->
hdr
.
wi
.
lso_mss
=
0
;
if
(
unlikely
(
skb
->
len
>
(
bnad
->
netdev
->
mtu
+
ETH_HLEN
)))
{
if
(
unlikely
(
skb
->
len
>
(
bnad
->
netdev
->
mtu
+
VLAN_
ETH_HLEN
)))
{
BNAD_UPDATE_CTR
(
bnad
,
tx_skb_non_tso_too_long
);
BNAD_UPDATE_CTR
(
bnad
,
tx_skb_non_tso_too_long
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
...
drivers/net/ethernet/toshiba/spider_net.c
浏览文件 @
64b1f00a
...
@@ -266,34 +266,6 @@ spider_net_set_promisc(struct spider_net_card *card)
...
@@ -266,34 +266,6 @@ spider_net_set_promisc(struct spider_net_card *card)
}
}
}
}
/**
* spider_net_get_mac_address - read mac address from spider card
* @card: device structure
*
* reads MAC address from GMACUNIMACU and GMACUNIMACL registers
*/
static
int
spider_net_get_mac_address
(
struct
net_device
*
netdev
)
{
struct
spider_net_card
*
card
=
netdev_priv
(
netdev
);
u32
macl
,
macu
;
macl
=
spider_net_read_reg
(
card
,
SPIDER_NET_GMACUNIMACL
);
macu
=
spider_net_read_reg
(
card
,
SPIDER_NET_GMACUNIMACU
);
netdev
->
dev_addr
[
0
]
=
(
macu
>>
24
)
&
0xff
;
netdev
->
dev_addr
[
1
]
=
(
macu
>>
16
)
&
0xff
;
netdev
->
dev_addr
[
2
]
=
(
macu
>>
8
)
&
0xff
;
netdev
->
dev_addr
[
3
]
=
macu
&
0xff
;
netdev
->
dev_addr
[
4
]
=
(
macl
>>
8
)
&
0xff
;
netdev
->
dev_addr
[
5
]
=
macl
&
0xff
;
if
(
!
is_valid_ether_addr
(
&
netdev
->
dev_addr
[
0
]))
return
-
EINVAL
;
return
0
;
}
/**
/**
* spider_net_get_descr_status -- returns the status of a descriptor
* spider_net_get_descr_status -- returns the status of a descriptor
* @descr: descriptor to look at
* @descr: descriptor to look at
...
@@ -1345,15 +1317,17 @@ spider_net_set_mac(struct net_device *netdev, void *p)
...
@@ -1345,15 +1317,17 @@ spider_net_set_mac(struct net_device *netdev, void *p)
if
(
!
is_valid_ether_addr
(
addr
->
sa_data
))
if
(
!
is_valid_ether_addr
(
addr
->
sa_data
))
return
-
EADDRNOTAVAIL
;
return
-
EADDRNOTAVAIL
;
memcpy
(
netdev
->
dev_addr
,
addr
->
sa_data
,
ETH_ALEN
);
/* switch off GMACTPE and GMACRPE */
/* switch off GMACTPE and GMACRPE */
regvalue
=
spider_net_read_reg
(
card
,
SPIDER_NET_GMACOPEMD
);
regvalue
=
spider_net_read_reg
(
card
,
SPIDER_NET_GMACOPEMD
);
regvalue
&=
~
((
1
<<
5
)
|
(
1
<<
6
));
regvalue
&=
~
((
1
<<
5
)
|
(
1
<<
6
));
spider_net_write_reg
(
card
,
SPIDER_NET_GMACOPEMD
,
regvalue
);
spider_net_write_reg
(
card
,
SPIDER_NET_GMACOPEMD
,
regvalue
);
/* write mac */
/* write mac */
macu
=
(
addr
->
sa_data
[
0
]
<<
24
)
+
(
addr
->
sa_data
[
1
]
<<
16
)
+
macu
=
(
netdev
->
dev_addr
[
0
]
<<
24
)
+
(
netdev
->
dev_addr
[
1
]
<<
16
)
+
(
addr
->
sa_data
[
2
]
<<
8
)
+
(
addr
->
sa_data
[
3
]);
(
netdev
->
dev_addr
[
2
]
<<
8
)
+
(
netdev
->
dev_addr
[
3
]);
macl
=
(
addr
->
sa_data
[
4
]
<<
8
)
+
(
addr
->
sa_data
[
5
]);
macl
=
(
netdev
->
dev_addr
[
4
]
<<
8
)
+
(
netdev
->
dev_addr
[
5
]);
spider_net_write_reg
(
card
,
SPIDER_NET_GMACUNIMACU
,
macu
);
spider_net_write_reg
(
card
,
SPIDER_NET_GMACUNIMACU
,
macu
);
spider_net_write_reg
(
card
,
SPIDER_NET_GMACUNIMACL
,
macl
);
spider_net_write_reg
(
card
,
SPIDER_NET_GMACUNIMACL
,
macl
);
...
@@ -1364,12 +1338,6 @@ spider_net_set_mac(struct net_device *netdev, void *p)
...
@@ -1364,12 +1338,6 @@ spider_net_set_mac(struct net_device *netdev, void *p)
spider_net_set_promisc
(
card
);
spider_net_set_promisc
(
card
);
/* look up, whether we have been successful */
if
(
spider_net_get_mac_address
(
netdev
))
return
-
EADDRNOTAVAIL
;
if
(
memcmp
(
netdev
->
dev_addr
,
addr
->
sa_data
,
netdev
->
addr_len
))
return
-
EADDRNOTAVAIL
;
return
0
;
return
0
;
}
}
...
...
drivers/net/hyperv/netvsc.c
浏览文件 @
64b1f00a
...
@@ -717,6 +717,7 @@ int netvsc_send(struct hv_device *device,
...
@@ -717,6 +717,7 @@ int netvsc_send(struct hv_device *device,
unsigned
int
section_index
=
NETVSC_INVALID_INDEX
;
unsigned
int
section_index
=
NETVSC_INVALID_INDEX
;
u32
msg_size
=
0
;
u32
msg_size
=
0
;
struct
sk_buff
*
skb
;
struct
sk_buff
*
skb
;
u16
q_idx
=
packet
->
q_idx
;
net_device
=
get_outbound_net_device
(
device
);
net_device
=
get_outbound_net_device
(
device
);
...
@@ -781,24 +782,24 @@ int netvsc_send(struct hv_device *device,
...
@@ -781,24 +782,24 @@ int netvsc_send(struct hv_device *device,
if
(
ret
==
0
)
{
if
(
ret
==
0
)
{
atomic_inc
(
&
net_device
->
num_outstanding_sends
);
atomic_inc
(
&
net_device
->
num_outstanding_sends
);
atomic_inc
(
&
net_device
->
queue_sends
[
packet
->
q_idx
]);
atomic_inc
(
&
net_device
->
queue_sends
[
q_idx
]);
if
(
hv_ringbuf_avail_percent
(
&
out_channel
->
outbound
)
<
if
(
hv_ringbuf_avail_percent
(
&
out_channel
->
outbound
)
<
RING_AVAIL_PERCENT_LOWATER
)
{
RING_AVAIL_PERCENT_LOWATER
)
{
netif_tx_stop_queue
(
netdev_get_tx_queue
(
netif_tx_stop_queue
(
netdev_get_tx_queue
(
ndev
,
packet
->
q_idx
));
ndev
,
q_idx
));
if
(
atomic_read
(
&
net_device
->
if
(
atomic_read
(
&
net_device
->
queue_sends
[
packet
->
q_idx
])
<
1
)
queue_sends
[
q_idx
])
<
1
)
netif_tx_wake_queue
(
netdev_get_tx_queue
(
netif_tx_wake_queue
(
netdev_get_tx_queue
(
ndev
,
packet
->
q_idx
));
ndev
,
q_idx
));
}
}
}
else
if
(
ret
==
-
EAGAIN
)
{
}
else
if
(
ret
==
-
EAGAIN
)
{
netif_tx_stop_queue
(
netdev_get_tx_queue
(
netif_tx_stop_queue
(
netdev_get_tx_queue
(
ndev
,
packet
->
q_idx
));
ndev
,
q_idx
));
if
(
atomic_read
(
&
net_device
->
queue_sends
[
packet
->
q_idx
])
<
1
)
{
if
(
atomic_read
(
&
net_device
->
queue_sends
[
q_idx
])
<
1
)
{
netif_tx_wake_queue
(
netdev_get_tx_queue
(
netif_tx_wake_queue
(
netdev_get_tx_queue
(
ndev
,
packet
->
q_idx
));
ndev
,
q_idx
));
ret
=
-
ENOSPC
;
ret
=
-
ENOSPC
;
}
}
}
else
{
}
else
{
...
...
drivers/net/team/team.c
浏览文件 @
64b1f00a
...
@@ -647,7 +647,7 @@ static void team_notify_peers(struct team *team)
...
@@ -647,7 +647,7 @@ static void team_notify_peers(struct team *team)
{
{
if
(
!
team
->
notify_peers
.
count
||
!
netif_running
(
team
->
dev
))
if
(
!
team
->
notify_peers
.
count
||
!
netif_running
(
team
->
dev
))
return
;
return
;
atomic_
set
(
&
team
->
notify_peers
.
count_pending
,
team
->
notify_peers
.
count
);
atomic_
add
(
team
->
notify_peers
.
count
,
&
team
->
notify_peers
.
count_pending
);
schedule_delayed_work
(
&
team
->
notify_peers
.
dw
,
0
);
schedule_delayed_work
(
&
team
->
notify_peers
.
dw
,
0
);
}
}
...
@@ -687,7 +687,7 @@ static void team_mcast_rejoin(struct team *team)
...
@@ -687,7 +687,7 @@ static void team_mcast_rejoin(struct team *team)
{
{
if
(
!
team
->
mcast_rejoin
.
count
||
!
netif_running
(
team
->
dev
))
if
(
!
team
->
mcast_rejoin
.
count
||
!
netif_running
(
team
->
dev
))
return
;
return
;
atomic_
set
(
&
team
->
mcast_rejoin
.
count_pending
,
team
->
mcast_rejoin
.
count
);
atomic_
add
(
team
->
mcast_rejoin
.
count
,
&
team
->
mcast_rejoin
.
count_pending
);
schedule_delayed_work
(
&
team
->
mcast_rejoin
.
dw
,
0
);
schedule_delayed_work
(
&
team
->
mcast_rejoin
.
dw
,
0
);
}
}
...
...
drivers/net/usb/asix_devices.c
浏览文件 @
64b1f00a
...
@@ -890,7 +890,7 @@ static const struct driver_info ax88772_info = {
...
@@ -890,7 +890,7 @@ static const struct driver_info ax88772_info = {
.
unbind
=
ax88772_unbind
,
.
unbind
=
ax88772_unbind
,
.
status
=
asix_status
,
.
status
=
asix_status
,
.
link_reset
=
ax88772_link_reset
,
.
link_reset
=
ax88772_link_reset
,
.
reset
=
ax88772_reset
,
.
reset
=
ax88772_
link_
reset
,
.
flags
=
FLAG_ETHER
|
FLAG_FRAMING_AX
|
FLAG_LINK_INTR
|
FLAG_MULTI_PACKET
,
.
flags
=
FLAG_ETHER
|
FLAG_FRAMING_AX
|
FLAG_LINK_INTR
|
FLAG_MULTI_PACKET
,
.
rx_fixup
=
asix_rx_fixup_common
,
.
rx_fixup
=
asix_rx_fixup_common
,
.
tx_fixup
=
asix_tx_fixup
,
.
tx_fixup
=
asix_tx_fixup
,
...
...
drivers/net/usb/r8152.c
浏览文件 @
64b1f00a
...
@@ -980,9 +980,14 @@ static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
...
@@ -980,9 +980,14 @@ static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
{
{
struct
r8152
*
tp
=
netdev_priv
(
netdev
);
struct
r8152
*
tp
=
netdev_priv
(
netdev
);
struct
sockaddr
*
addr
=
p
;
struct
sockaddr
*
addr
=
p
;
int
ret
=
-
EADDRNOTAVAIL
;
if
(
!
is_valid_ether_addr
(
addr
->
sa_data
))
if
(
!
is_valid_ether_addr
(
addr
->
sa_data
))
return
-
EADDRNOTAVAIL
;
goto
out1
;
ret
=
usb_autopm_get_interface
(
tp
->
intf
);
if
(
ret
<
0
)
goto
out1
;
memcpy
(
netdev
->
dev_addr
,
addr
->
sa_data
,
netdev
->
addr_len
);
memcpy
(
netdev
->
dev_addr
,
addr
->
sa_data
,
netdev
->
addr_len
);
...
@@ -990,7 +995,9 @@ static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
...
@@ -990,7 +995,9 @@ static int rtl8152_set_mac_address(struct net_device *netdev, void *p)
pla_ocp_write
(
tp
,
PLA_IDR
,
BYTE_EN_SIX_BYTES
,
8
,
addr
->
sa_data
);
pla_ocp_write
(
tp
,
PLA_IDR
,
BYTE_EN_SIX_BYTES
,
8
,
addr
->
sa_data
);
ocp_write_byte
(
tp
,
MCU_TYPE_PLA
,
PLA_CRWECR
,
CRWECR_NORAML
);
ocp_write_byte
(
tp
,
MCU_TYPE_PLA
,
PLA_CRWECR
,
CRWECR_NORAML
);
return
0
;
usb_autopm_put_interface
(
tp
->
intf
);
out1:
return
ret
;
}
}
static
int
set_ethernet_addr
(
struct
r8152
*
tp
)
static
int
set_ethernet_addr
(
struct
r8152
*
tp
)
...
...
drivers/parisc/superio.c
浏览文件 @
64b1f00a
...
@@ -395,7 +395,8 @@ static void __init superio_serial_init(void)
...
@@ -395,7 +395,8 @@ static void __init superio_serial_init(void)
serial_port
.
iotype
=
UPIO_PORT
;
serial_port
.
iotype
=
UPIO_PORT
;
serial_port
.
type
=
PORT_16550A
;
serial_port
.
type
=
PORT_16550A
;
serial_port
.
uartclk
=
115200
*
16
;
serial_port
.
uartclk
=
115200
*
16
;
serial_port
.
fifosize
=
16
;
serial_port
.
flags
=
UPF_FIXED_PORT
|
UPF_FIXED_TYPE
|
UPF_BOOT_AUTOCONF
;
/* serial port #1 */
/* serial port #1 */
serial_port
.
iobase
=
sio_dev
.
sp1_base
;
serial_port
.
iobase
=
sio_dev
.
sp1_base
;
...
...
fs/ocfs2/dlm/dlmmaster.c
浏览文件 @
64b1f00a
...
@@ -2039,6 +2039,10 @@ int dlm_assert_master_handler(struct o2net_msg *msg, u32 len, void *data,
...
@@ -2039,6 +2039,10 @@ int dlm_assert_master_handler(struct o2net_msg *msg, u32 len, void *data,
"and killing the other node now! This node is OK and can continue.
\n
"
);
"and killing the other node now! This node is OK and can continue.
\n
"
);
__dlm_print_one_lock_resource
(
res
);
__dlm_print_one_lock_resource
(
res
);
spin_unlock
(
&
res
->
spinlock
);
spin_unlock
(
&
res
->
spinlock
);
spin_lock
(
&
dlm
->
master_lock
);
if
(
mle
)
__dlm_put_mle
(
mle
);
spin_unlock
(
&
dlm
->
master_lock
);
spin_unlock
(
&
dlm
->
spinlock
);
spin_unlock
(
&
dlm
->
spinlock
);
*
ret_data
=
(
void
*
)
res
;
*
ret_data
=
(
void
*
)
res
;
dlm_put
(
dlm
);
dlm_put
(
dlm
);
...
...
include/net/sctp/command.h
浏览文件 @
64b1f00a
...
@@ -115,7 +115,7 @@ typedef enum {
...
@@ -115,7 +115,7 @@ typedef enum {
* analysis of the state functions, but in reality just taken from
* analysis of the state functions, but in reality just taken from
* thin air in the hopes othat we don't trigger a kernel panic.
* thin air in the hopes othat we don't trigger a kernel panic.
*/
*/
#define SCTP_MAX_NUM_COMMANDS
14
#define SCTP_MAX_NUM_COMMANDS
20
typedef
union
{
typedef
union
{
void
*
zero_all
;
/* Set to NULL to clear the entire union */
void
*
zero_all
;
/* Set to NULL to clear the entire union */
...
...
kernel/events/core.c
浏览文件 @
64b1f00a
...
@@ -7948,8 +7948,10 @@ int perf_event_init_task(struct task_struct *child)
...
@@ -7948,8 +7948,10 @@ int perf_event_init_task(struct task_struct *child)
for_each_task_context_nr
(
ctxn
)
{
for_each_task_context_nr
(
ctxn
)
{
ret
=
perf_event_init_context
(
child
,
ctxn
);
ret
=
perf_event_init_context
(
child
,
ctxn
);
if
(
ret
)
if
(
ret
)
{
perf_event_free_task
(
child
);
return
ret
;
return
ret
;
}
}
}
return
0
;
return
0
;
...
...
kernel/fork.c
浏览文件 @
64b1f00a
...
@@ -1360,7 +1360,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
...
@@ -1360,7 +1360,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
goto
bad_fork_cleanup_policy
;
goto
bad_fork_cleanup_policy
;
retval
=
audit_alloc
(
p
);
retval
=
audit_alloc
(
p
);
if
(
retval
)
if
(
retval
)
goto
bad_fork_cleanup_p
olicy
;
goto
bad_fork_cleanup_p
erf
;
/* copy all the process information */
/* copy all the process information */
shm_init_task
(
p
);
shm_init_task
(
p
);
retval
=
copy_semundo
(
clone_flags
,
p
);
retval
=
copy_semundo
(
clone_flags
,
p
);
...
@@ -1566,8 +1566,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
...
@@ -1566,8 +1566,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
exit_sem
(
p
);
exit_sem
(
p
);
bad_fork_cleanup_audit:
bad_fork_cleanup_audit:
audit_free
(
p
);
audit_free
(
p
);
bad_fork_cleanup_p
olicy
:
bad_fork_cleanup_p
erf
:
perf_event_free_task
(
p
);
perf_event_free_task
(
p
);
bad_fork_cleanup_policy:
#ifdef CONFIG_NUMA
#ifdef CONFIG_NUMA
mpol_put
(
p
->
mempolicy
);
mpol_put
(
p
->
mempolicy
);
bad_fork_cleanup_threadgroup_lock:
bad_fork_cleanup_threadgroup_lock:
...
...
mm/huge_memory.c
浏览文件 @
64b1f00a
...
@@ -1795,14 +1795,17 @@ static int __split_huge_page_map(struct page *page,
...
@@ -1795,14 +1795,17 @@ static int __split_huge_page_map(struct page *page,
for
(
i
=
0
;
i
<
HPAGE_PMD_NR
;
i
++
,
haddr
+=
PAGE_SIZE
)
{
for
(
i
=
0
;
i
<
HPAGE_PMD_NR
;
i
++
,
haddr
+=
PAGE_SIZE
)
{
pte_t
*
pte
,
entry
;
pte_t
*
pte
,
entry
;
BUG_ON
(
PageCompound
(
page
+
i
));
BUG_ON
(
PageCompound
(
page
+
i
));
/*
* Note that pmd_numa is not transferred deliberately
* to avoid any possibility that pte_numa leaks to
* a PROT_NONE VMA by accident.
*/
entry
=
mk_pte
(
page
+
i
,
vma
->
vm_page_prot
);
entry
=
mk_pte
(
page
+
i
,
vma
->
vm_page_prot
);
entry
=
maybe_mkwrite
(
pte_mkdirty
(
entry
),
vma
);
entry
=
maybe_mkwrite
(
pte_mkdirty
(
entry
),
vma
);
if
(
!
pmd_write
(
*
pmd
))
if
(
!
pmd_write
(
*
pmd
))
entry
=
pte_wrprotect
(
entry
);
entry
=
pte_wrprotect
(
entry
);
if
(
!
pmd_young
(
*
pmd
))
if
(
!
pmd_young
(
*
pmd
))
entry
=
pte_mkold
(
entry
);
entry
=
pte_mkold
(
entry
);
if
(
pmd_numa
(
*
pmd
))
entry
=
pte_mknuma
(
entry
);
pte
=
pte_offset_map
(
&
_pmd
,
haddr
);
pte
=
pte_offset_map
(
&
_pmd
,
haddr
);
BUG_ON
(
!
pte_none
(
*
pte
));
BUG_ON
(
!
pte_none
(
*
pte
));
set_pte_at
(
mm
,
haddr
,
pte
,
entry
);
set_pte_at
(
mm
,
haddr
,
pte
,
entry
);
...
...
mm/memcontrol.c
浏览文件 @
64b1f00a
...
@@ -292,6 +292,9 @@ struct mem_cgroup {
...
@@ -292,6 +292,9 @@ struct mem_cgroup {
/* vmpressure notifications */
/* vmpressure notifications */
struct
vmpressure
vmpressure
;
struct
vmpressure
vmpressure
;
/* css_online() has been completed */
int
initialized
;
/*
/*
* the counter to account for mem+swap usage.
* the counter to account for mem+swap usage.
*/
*/
...
@@ -1099,10 +1102,21 @@ static struct mem_cgroup *__mem_cgroup_iter_next(struct mem_cgroup *root,
...
@@ -1099,10 +1102,21 @@ static struct mem_cgroup *__mem_cgroup_iter_next(struct mem_cgroup *root,
* skipping css reference should be safe.
* skipping css reference should be safe.
*/
*/
if
(
next_css
)
{
if
(
next_css
)
{
if
((
next_css
==
&
root
->
css
)
||
struct
mem_cgroup
*
memcg
=
mem_cgroup_from_css
(
next_css
);
((
next_css
->
flags
&
CSS_ONLINE
)
&&
css_tryget_online
(
next_css
)))
if
(
next_css
==
&
root
->
css
)
return
mem_cgroup_from_css
(
next_css
);
return
memcg
;
if
(
css_tryget_online
(
next_css
))
{
/*
* Make sure the memcg is initialized:
* mem_cgroup_css_online() orders the the
* initialization against setting the flag.
*/
if
(
smp_load_acquire
(
&
memcg
->
initialized
))
return
memcg
;
css_put
(
next_css
);
}
prev_css
=
next_css
;
prev_css
=
next_css
;
goto
skip_node
;
goto
skip_node
;
...
@@ -5549,6 +5563,7 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css)
...
@@ -5549,6 +5563,7 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css)
{
{
struct
mem_cgroup
*
memcg
=
mem_cgroup_from_css
(
css
);
struct
mem_cgroup
*
memcg
=
mem_cgroup_from_css
(
css
);
struct
mem_cgroup
*
parent
=
mem_cgroup_from_css
(
css
->
parent
);
struct
mem_cgroup
*
parent
=
mem_cgroup_from_css
(
css
->
parent
);
int
ret
;
if
(
css
->
id
>
MEM_CGROUP_ID_MAX
)
if
(
css
->
id
>
MEM_CGROUP_ID_MAX
)
return
-
ENOSPC
;
return
-
ENOSPC
;
...
@@ -5585,7 +5600,18 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css)
...
@@ -5585,7 +5600,18 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css)
}
}
mutex_unlock
(
&
memcg_create_mutex
);
mutex_unlock
(
&
memcg_create_mutex
);
return
memcg_init_kmem
(
memcg
,
&
memory_cgrp_subsys
);
ret
=
memcg_init_kmem
(
memcg
,
&
memory_cgrp_subsys
);
if
(
ret
)
return
ret
;
/*
* Make sure the memcg is initialized: mem_cgroup_iter()
* orders reading memcg->initialized against its callers
* reading the memcg members.
*/
smp_store_release
(
&
memcg
->
initialized
,
1
);
return
0
;
}
}
/*
/*
...
...
mm/migrate.c
浏览文件 @
64b1f00a
...
@@ -146,8 +146,11 @@ static int remove_migration_pte(struct page *new, struct vm_area_struct *vma,
...
@@ -146,8 +146,11 @@ static int remove_migration_pte(struct page *new, struct vm_area_struct *vma,
pte
=
pte_mkold
(
mk_pte
(
new
,
vma
->
vm_page_prot
));
pte
=
pte_mkold
(
mk_pte
(
new
,
vma
->
vm_page_prot
));
if
(
pte_swp_soft_dirty
(
*
ptep
))
if
(
pte_swp_soft_dirty
(
*
ptep
))
pte
=
pte_mksoft_dirty
(
pte
);
pte
=
pte_mksoft_dirty
(
pte
);
/* Recheck VMA as permissions can change since migration started */
if
(
is_write_migration_entry
(
entry
))
if
(
is_write_migration_entry
(
entry
))
pte
=
pte_mkwrite
(
pte
);
pte
=
maybe_mkwrite
(
pte
,
vma
);
#ifdef CONFIG_HUGETLB_PAGE
#ifdef CONFIG_HUGETLB_PAGE
if
(
PageHuge
(
new
))
{
if
(
PageHuge
(
new
))
{
pte
=
pte_mkhuge
(
pte
);
pte
=
pte_mkhuge
(
pte
);
...
...
mm/page_alloc.c
浏览文件 @
64b1f00a
...
@@ -1612,7 +1612,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
...
@@ -1612,7 +1612,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
}
}
__mod_zone_page_state
(
zone
,
NR_ALLOC_BATCH
,
-
(
1
<<
order
));
__mod_zone_page_state
(
zone
,
NR_ALLOC_BATCH
,
-
(
1
<<
order
));
if
(
zone_page_state
(
zone
,
NR_ALLOC_BATCH
)
=
=
0
&&
if
(
atomic_long_read
(
&
zone
->
vm_stat
[
NR_ALLOC_BATCH
])
<
=
0
&&
!
zone_is_fair_depleted
(
zone
))
!
zone_is_fair_depleted
(
zone
))
zone_set_flag
(
zone
,
ZONE_FAIR_DEPLETED
);
zone_set_flag
(
zone
,
ZONE_FAIR_DEPLETED
);
...
@@ -5701,9 +5701,8 @@ static void __setup_per_zone_wmarks(void)
...
@@ -5701,9 +5701,8 @@ static void __setup_per_zone_wmarks(void)
zone
->
watermark
[
WMARK_HIGH
]
=
min_wmark_pages
(
zone
)
+
(
tmp
>>
1
);
zone
->
watermark
[
WMARK_HIGH
]
=
min_wmark_pages
(
zone
)
+
(
tmp
>>
1
);
__mod_zone_page_state
(
zone
,
NR_ALLOC_BATCH
,
__mod_zone_page_state
(
zone
,
NR_ALLOC_BATCH
,
high_wmark_pages
(
zone
)
-
high_wmark_pages
(
zone
)
-
low_wmark_pages
(
zone
)
-
low_wmark_pages
(
zone
)
-
atomic_long_read
(
&
zone
->
vm_stat
[
NR_ALLOC_BATCH
]));
zone_page_state
(
zone
,
NR_ALLOC_BATCH
));
setup_zone_migrate_reserve
(
zone
);
setup_zone_migrate_reserve
(
zone
);
spin_unlock_irqrestore
(
&
zone
->
lock
,
flags
);
spin_unlock_irqrestore
(
&
zone
->
lock
,
flags
);
...
...
net/bridge/br_netfilter.c
浏览文件 @
64b1f00a
...
@@ -316,6 +316,7 @@ static int br_nf_pre_routing_finish_bridge(struct sk_buff *skb)
...
@@ -316,6 +316,7 @@ static int br_nf_pre_routing_finish_bridge(struct sk_buff *skb)
ETH_HLEN
-
ETH_ALEN
);
ETH_HLEN
-
ETH_ALEN
);
/* tell br_dev_xmit to continue with forwarding */
/* tell br_dev_xmit to continue with forwarding */
nf_bridge
->
mask
|=
BRNF_BRIDGED_DNAT
;
nf_bridge
->
mask
|=
BRNF_BRIDGED_DNAT
;
/* FIXME Need to refragment */
ret
=
neigh
->
output
(
neigh
,
skb
);
ret
=
neigh
->
output
(
neigh
,
skb
);
}
}
neigh_release
(
neigh
);
neigh_release
(
neigh
);
...
@@ -371,6 +372,10 @@ static int br_nf_pre_routing_finish(struct sk_buff *skb)
...
@@ -371,6 +372,10 @@ static int br_nf_pre_routing_finish(struct sk_buff *skb)
struct
nf_bridge_info
*
nf_bridge
=
skb
->
nf_bridge
;
struct
nf_bridge_info
*
nf_bridge
=
skb
->
nf_bridge
;
struct
rtable
*
rt
;
struct
rtable
*
rt
;
int
err
;
int
err
;
int
frag_max_size
;
frag_max_size
=
IPCB
(
skb
)
->
frag_max_size
;
BR_INPUT_SKB_CB
(
skb
)
->
frag_max_size
=
frag_max_size
;
if
(
nf_bridge
->
mask
&
BRNF_PKT_TYPE
)
{
if
(
nf_bridge
->
mask
&
BRNF_PKT_TYPE
)
{
skb
->
pkt_type
=
PACKET_OTHERHOST
;
skb
->
pkt_type
=
PACKET_OTHERHOST
;
...
@@ -775,13 +780,19 @@ static unsigned int br_nf_forward_arp(const struct nf_hook_ops *ops,
...
@@ -775,13 +780,19 @@ static unsigned int br_nf_forward_arp(const struct nf_hook_ops *ops,
static
int
br_nf_dev_queue_xmit
(
struct
sk_buff
*
skb
)
static
int
br_nf_dev_queue_xmit
(
struct
sk_buff
*
skb
)
{
{
int
ret
;
int
ret
;
int
frag_max_size
;
/* This is wrong! We should preserve the original fragment
* boundaries by preserving frag_list rather than refragmenting.
*/
if
(
skb
->
protocol
==
htons
(
ETH_P_IP
)
&&
if
(
skb
->
protocol
==
htons
(
ETH_P_IP
)
&&
skb
->
len
+
nf_bridge_mtu_reduction
(
skb
)
>
skb
->
dev
->
mtu
&&
skb
->
len
+
nf_bridge_mtu_reduction
(
skb
)
>
skb
->
dev
->
mtu
&&
!
skb_is_gso
(
skb
))
{
!
skb_is_gso
(
skb
))
{
frag_max_size
=
BR_INPUT_SKB_CB
(
skb
)
->
frag_max_size
;
if
(
br_parse_ip_options
(
skb
))
if
(
br_parse_ip_options
(
skb
))
/* Drop invalid packet */
/* Drop invalid packet */
return
NF_DROP
;
return
NF_DROP
;
IPCB
(
skb
)
->
frag_max_size
=
frag_max_size
;
ret
=
ip_fragment
(
skb
,
br_dev_queue_push_xmit
);
ret
=
ip_fragment
(
skb
,
br_dev_queue_push_xmit
);
}
else
}
else
ret
=
br_dev_queue_push_xmit
(
skb
);
ret
=
br_dev_queue_push_xmit
(
skb
);
...
...
net/bridge/br_private.h
浏览文件 @
64b1f00a
...
@@ -306,10 +306,14 @@ struct net_bridge
...
@@ -306,10 +306,14 @@ struct net_bridge
struct
br_input_skb_cb
{
struct
br_input_skb_cb
{
struct
net_device
*
brdev
;
struct
net_device
*
brdev
;
#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
int
igmp
;
int
igmp
;
int
mrouters_only
;
int
mrouters_only
;
#endif
#endif
u16
frag_max_size
;
#ifdef CONFIG_BRIDGE_VLAN_FILTERING
#ifdef CONFIG_BRIDGE_VLAN_FILTERING
bool
vlan_filtered
;
bool
vlan_filtered
;
#endif
#endif
...
...
net/ipv6/ip6_gre.c
浏览文件 @
64b1f00a
...
@@ -786,7 +786,7 @@ static inline int ip6gre_xmit_ipv4(struct sk_buff *skb, struct net_device *dev)
...
@@ -786,7 +786,7 @@ static inline int ip6gre_xmit_ipv4(struct sk_buff *skb, struct net_device *dev)
encap_limit
=
t
->
parms
.
encap_limit
;
encap_limit
=
t
->
parms
.
encap_limit
;
memcpy
(
&
fl6
,
&
t
->
fl
.
u
.
ip6
,
sizeof
(
fl6
));
memcpy
(
&
fl6
,
&
t
->
fl
.
u
.
ip6
,
sizeof
(
fl6
));
fl6
.
flowi6_proto
=
IPPROTO_
IPIP
;
fl6
.
flowi6_proto
=
IPPROTO_
GRE
;
dsfield
=
ipv4_get_dsfield
(
iph
);
dsfield
=
ipv4_get_dsfield
(
iph
);
...
@@ -836,7 +836,7 @@ static inline int ip6gre_xmit_ipv6(struct sk_buff *skb, struct net_device *dev)
...
@@ -836,7 +836,7 @@ static inline int ip6gre_xmit_ipv6(struct sk_buff *skb, struct net_device *dev)
encap_limit
=
t
->
parms
.
encap_limit
;
encap_limit
=
t
->
parms
.
encap_limit
;
memcpy
(
&
fl6
,
&
t
->
fl
.
u
.
ip6
,
sizeof
(
fl6
));
memcpy
(
&
fl6
,
&
t
->
fl
.
u
.
ip6
,
sizeof
(
fl6
));
fl6
.
flowi6_proto
=
IPPROTO_
IPV6
;
fl6
.
flowi6_proto
=
IPPROTO_
GRE
;
dsfield
=
ipv6_get_dsfield
(
ipv6h
);
dsfield
=
ipv6_get_dsfield
(
ipv6h
);
if
(
t
->
parms
.
flags
&
IP6_TNL_F_USE_ORIG_TCLASS
)
if
(
t
->
parms
.
flags
&
IP6_TNL_F_USE_ORIG_TCLASS
)
...
...
net/rds/send.c
浏览文件 @
64b1f00a
...
@@ -593,8 +593,11 @@ static void rds_send_remove_from_sock(struct list_head *messages, int status)
...
@@ -593,8 +593,11 @@ static void rds_send_remove_from_sock(struct list_head *messages, int status)
sock_put
(
rds_rs_to_sk
(
rs
));
sock_put
(
rds_rs_to_sk
(
rs
));
}
}
rs
=
rm
->
m_rs
;
rs
=
rm
->
m_rs
;
sock_hold
(
rds_rs_to_sk
(
rs
));
if
(
rs
)
sock_hold
(
rds_rs_to_sk
(
rs
));
}
}
if
(
!
rs
)
goto
unlock_and_drop
;
spin_lock
(
&
rs
->
rs_lock
);
spin_lock
(
&
rs
->
rs_lock
);
if
(
test_and_clear_bit
(
RDS_MSG_ON_SOCK
,
&
rm
->
m_flags
))
{
if
(
test_and_clear_bit
(
RDS_MSG_ON_SOCK
,
&
rm
->
m_flags
))
{
...
@@ -638,9 +641,6 @@ static void rds_send_remove_from_sock(struct list_head *messages, int status)
...
@@ -638,9 +641,6 @@ static void rds_send_remove_from_sock(struct list_head *messages, int status)
* queue. This means that in the TCP case, the message may not have been
* queue. This means that in the TCP case, the message may not have been
* assigned the m_ack_seq yet - but that's fine as long as tcp_is_acked
* assigned the m_ack_seq yet - but that's fine as long as tcp_is_acked
* checks the RDS_MSG_HAS_ACK_SEQ bit.
* checks the RDS_MSG_HAS_ACK_SEQ bit.
*
* XXX It's not clear to me how this is safely serialized with socket
* destruction. Maybe it should bail if it sees SOCK_DEAD.
*/
*/
void
rds_send_drop_acked
(
struct
rds_connection
*
conn
,
u64
ack
,
void
rds_send_drop_acked
(
struct
rds_connection
*
conn
,
u64
ack
,
is_acked_func
is_acked
)
is_acked_func
is_acked
)
...
@@ -711,6 +711,9 @@ void rds_send_drop_to(struct rds_sock *rs, struct sockaddr_in *dest)
...
@@ -711,6 +711,9 @@ void rds_send_drop_to(struct rds_sock *rs, struct sockaddr_in *dest)
*/
*/
if
(
!
test_and_clear_bit
(
RDS_MSG_ON_CONN
,
&
rm
->
m_flags
))
{
if
(
!
test_and_clear_bit
(
RDS_MSG_ON_CONN
,
&
rm
->
m_flags
))
{
spin_unlock_irqrestore
(
&
conn
->
c_lock
,
flags
);
spin_unlock_irqrestore
(
&
conn
->
c_lock
,
flags
);
spin_lock_irqsave
(
&
rm
->
m_rs_lock
,
flags
);
rm
->
m_rs
=
NULL
;
spin_unlock_irqrestore
(
&
rm
->
m_rs_lock
,
flags
);
continue
;
continue
;
}
}
list_del_init
(
&
rm
->
m_conn_item
);
list_del_init
(
&
rm
->
m_conn_item
);
...
...
net/rds/tcp_connect.c
浏览文件 @
64b1f00a
...
@@ -106,11 +106,14 @@ int rds_tcp_conn_connect(struct rds_connection *conn)
...
@@ -106,11 +106,14 @@ int rds_tcp_conn_connect(struct rds_connection *conn)
rds_tcp_set_callbacks
(
sock
,
conn
);
rds_tcp_set_callbacks
(
sock
,
conn
);
ret
=
sock
->
ops
->
connect
(
sock
,
(
struct
sockaddr
*
)
&
dest
,
sizeof
(
dest
),
ret
=
sock
->
ops
->
connect
(
sock
,
(
struct
sockaddr
*
)
&
dest
,
sizeof
(
dest
),
O_NONBLOCK
);
O_NONBLOCK
);
sock
=
NULL
;
rdsdebug
(
"connect to address %pI4 returned %d
\n
"
,
&
conn
->
c_faddr
,
ret
);
rdsdebug
(
"connect to address %pI4 returned %d
\n
"
,
&
conn
->
c_faddr
,
ret
);
if
(
ret
==
-
EINPROGRESS
)
if
(
ret
==
-
EINPROGRESS
)
ret
=
0
;
ret
=
0
;
if
(
ret
==
0
)
sock
=
NULL
;
else
rds_tcp_restore_callbacks
(
sock
,
conn
->
c_transport_data
);
out:
out:
if
(
sock
)
if
(
sock
)
...
...
net/rds/threads.c
浏览文件 @
64b1f00a
...
@@ -78,8 +78,7 @@ void rds_connect_complete(struct rds_connection *conn)
...
@@ -78,8 +78,7 @@ void rds_connect_complete(struct rds_connection *conn)
"current state is %d
\n
"
,
"current state is %d
\n
"
,
__func__
,
__func__
,
atomic_read
(
&
conn
->
c_state
));
atomic_read
(
&
conn
->
c_state
));
atomic_set
(
&
conn
->
c_state
,
RDS_CONN_ERROR
);
rds_conn_drop
(
conn
);
queue_work
(
rds_wq
,
&
conn
->
c_down_w
);
return
;
return
;
}
}
...
...
net/sched/cls_api.c
浏览文件 @
64b1f00a
...
@@ -549,6 +549,7 @@ void tcf_exts_change(struct tcf_proto *tp, struct tcf_exts *dst,
...
@@ -549,6 +549,7 @@ void tcf_exts_change(struct tcf_proto *tp, struct tcf_exts *dst,
tcf_tree_lock
(
tp
);
tcf_tree_lock
(
tp
);
list_splice_init
(
&
dst
->
actions
,
&
tmp
);
list_splice_init
(
&
dst
->
actions
,
&
tmp
);
list_splice
(
&
src
->
actions
,
&
dst
->
actions
);
list_splice
(
&
src
->
actions
,
&
dst
->
actions
);
dst
->
type
=
src
->
type
;
tcf_tree_unlock
(
tp
);
tcf_tree_unlock
(
tp
);
tcf_action_destroy
(
&
tmp
,
TCA_ACT_UNBIND
);
tcf_action_destroy
(
&
tmp
,
TCA_ACT_UNBIND
);
#endif
#endif
...
...
net/sched/ematch.c
浏览文件 @
64b1f00a
...
@@ -528,9 +528,10 @@ int __tcf_em_tree_match(struct sk_buff *skb, struct tcf_ematch_tree *tree,
...
@@ -528,9 +528,10 @@ int __tcf_em_tree_match(struct sk_buff *skb, struct tcf_ematch_tree *tree,
match_idx
=
stack
[
--
stackp
];
match_idx
=
stack
[
--
stackp
];
cur_match
=
tcf_em_get_match
(
tree
,
match_idx
);
cur_match
=
tcf_em_get_match
(
tree
,
match_idx
);
if
(
tcf_em_is_inverted
(
cur_match
))
res
=
!
res
;
if
(
tcf_em_early_end
(
cur_match
,
res
))
{
if
(
tcf_em_early_end
(
cur_match
,
res
))
{
if
(
tcf_em_is_inverted
(
cur_match
))
res
=
!
res
;
goto
pop_stack
;
goto
pop_stack
;
}
else
{
}
else
{
match_idx
++
;
match_idx
++
;
...
...
net/sctp/sm_statefuns.c
浏览文件 @
64b1f00a
...
@@ -1775,9 +1775,22 @@ static sctp_disposition_t sctp_sf_do_dupcook_a(struct net *net,
...
@@ -1775,9 +1775,22 @@ static sctp_disposition_t sctp_sf_do_dupcook_a(struct net *net,
/* Update the content of current association. */
/* Update the content of current association. */
sctp_add_cmd_sf
(
commands
,
SCTP_CMD_UPDATE_ASSOC
,
SCTP_ASOC
(
new_asoc
));
sctp_add_cmd_sf
(
commands
,
SCTP_CMD_UPDATE_ASSOC
,
SCTP_ASOC
(
new_asoc
));
sctp_add_cmd_sf
(
commands
,
SCTP_CMD_EVENT_ULP
,
SCTP_ULPEVENT
(
ev
));
sctp_add_cmd_sf
(
commands
,
SCTP_CMD_EVENT_ULP
,
SCTP_ULPEVENT
(
ev
));
sctp_add_cmd_sf
(
commands
,
SCTP_CMD_NEW_STATE
,
if
(
sctp_state
(
asoc
,
SHUTDOWN_PENDING
)
&&
SCTP_STATE
(
SCTP_STATE_ESTABLISHED
));
(
sctp_sstate
(
asoc
->
base
.
sk
,
CLOSING
)
||
sctp_add_cmd_sf
(
commands
,
SCTP_CMD_REPLY
,
SCTP_CHUNK
(
repl
));
sock_flag
(
asoc
->
base
.
sk
,
SOCK_DEAD
)))
{
/* if were currently in SHUTDOWN_PENDING, but the socket
* has been closed by user, don't transition to ESTABLISHED.
* Instead trigger SHUTDOWN bundled with COOKIE_ACK.
*/
sctp_add_cmd_sf
(
commands
,
SCTP_CMD_REPLY
,
SCTP_CHUNK
(
repl
));
return
sctp_sf_do_9_2_start_shutdown
(
net
,
ep
,
asoc
,
SCTP_ST_CHUNK
(
0
),
NULL
,
commands
);
}
else
{
sctp_add_cmd_sf
(
commands
,
SCTP_CMD_NEW_STATE
,
SCTP_STATE
(
SCTP_STATE_ESTABLISHED
));
sctp_add_cmd_sf
(
commands
,
SCTP_CMD_REPLY
,
SCTP_CHUNK
(
repl
));
}
return
SCTP_DISPOSITION_CONSUME
;
return
SCTP_DISPOSITION_CONSUME
;
nomem_ev:
nomem_ev:
...
...
sound/soc/codecs/rt286.c
浏览文件 @
64b1f00a
...
@@ -51,7 +51,7 @@ static struct reg_default rt286_index_def[] = {
...
@@ -51,7 +51,7 @@ static struct reg_default rt286_index_def[] = {
{
0x04
,
0xaf01
},
{
0x04
,
0xaf01
},
{
0x08
,
0x000d
},
{
0x08
,
0x000d
},
{
0x09
,
0xd810
},
{
0x09
,
0xd810
},
{
0x0a
,
0x0
06
0
},
{
0x0a
,
0x0
12
0
},
{
0x0b
,
0x0000
},
{
0x0b
,
0x0000
},
{
0x0d
,
0x2800
},
{
0x0d
,
0x2800
},
{
0x0f
,
0x0000
},
{
0x0f
,
0x0000
},
...
@@ -60,7 +60,7 @@ static struct reg_default rt286_index_def[] = {
...
@@ -60,7 +60,7 @@ static struct reg_default rt286_index_def[] = {
{
0x33
,
0x0208
},
{
0x33
,
0x0208
},
{
0x49
,
0x0004
},
{
0x49
,
0x0004
},
{
0x4f
,
0x50e9
},
{
0x4f
,
0x50e9
},
{
0x50
,
0x2
c
00
},
{
0x50
,
0x2
0
00
},
{
0x63
,
0x2902
},
{
0x63
,
0x2902
},
{
0x67
,
0x1111
},
{
0x67
,
0x1111
},
{
0x68
,
0x1016
},
{
0x68
,
0x1016
},
...
@@ -104,7 +104,6 @@ static const struct reg_default rt286_reg[] = {
...
@@ -104,7 +104,6 @@ static const struct reg_default rt286_reg[] = {
{
0x02170700
,
0x00000000
},
{
0x02170700
,
0x00000000
},
{
0x02270100
,
0x00000000
},
{
0x02270100
,
0x00000000
},
{
0x02370100
,
0x00000000
},
{
0x02370100
,
0x00000000
},
{
0x02040000
,
0x00004002
},
{
0x01870700
,
0x00000020
},
{
0x01870700
,
0x00000020
},
{
0x00830000
,
0x000000c3
},
{
0x00830000
,
0x000000c3
},
{
0x00930000
,
0x000000c3
},
{
0x00930000
,
0x000000c3
},
...
@@ -192,7 +191,6 @@ static int rt286_hw_write(void *context, unsigned int reg, unsigned int value)
...
@@ -192,7 +191,6 @@ static int rt286_hw_write(void *context, unsigned int reg, unsigned int value)
/*handle index registers*/
/*handle index registers*/
if
(
reg
<=
0xff
)
{
if
(
reg
<=
0xff
)
{
rt286_hw_write
(
client
,
RT286_COEF_INDEX
,
reg
);
rt286_hw_write
(
client
,
RT286_COEF_INDEX
,
reg
);
reg
=
RT286_PROC_COEF
;
for
(
i
=
0
;
i
<
INDEX_CACHE_SIZE
;
i
++
)
{
for
(
i
=
0
;
i
<
INDEX_CACHE_SIZE
;
i
++
)
{
if
(
reg
==
rt286
->
index_cache
[
i
].
reg
)
{
if
(
reg
==
rt286
->
index_cache
[
i
].
reg
)
{
rt286
->
index_cache
[
i
].
def
=
value
;
rt286
->
index_cache
[
i
].
def
=
value
;
...
@@ -200,6 +198,7 @@ static int rt286_hw_write(void *context, unsigned int reg, unsigned int value)
...
@@ -200,6 +198,7 @@ static int rt286_hw_write(void *context, unsigned int reg, unsigned int value)
}
}
}
}
reg
=
RT286_PROC_COEF
;
}
}
data
[
0
]
=
(
reg
>>
24
)
&
0xff
;
data
[
0
]
=
(
reg
>>
24
)
&
0xff
;
...
...
sound/soc/codecs/ssm2602.c
浏览文件 @
64b1f00a
...
@@ -647,7 +647,7 @@ int ssm2602_probe(struct device *dev, enum ssm2602_type type,
...
@@ -647,7 +647,7 @@ int ssm2602_probe(struct device *dev, enum ssm2602_type type,
return
-
ENOMEM
;
return
-
ENOMEM
;
dev_set_drvdata
(
dev
,
ssm2602
);
dev_set_drvdata
(
dev
,
ssm2602
);
ssm2602
->
type
=
SSM2602
;
ssm2602
->
type
=
type
;
ssm2602
->
regmap
=
regmap
;
ssm2602
->
regmap
=
regmap
;
return
snd_soc_register_codec
(
dev
,
&
soc_codec_dev_ssm2602
,
return
snd_soc_register_codec
(
dev
,
&
soc_codec_dev_ssm2602
,
...
...
sound/soc/fsl/fsl_ssi.c
浏览文件 @
64b1f00a
...
@@ -748,8 +748,9 @@ static int fsl_ssi_hw_free(struct snd_pcm_substream *substream,
...
@@ -748,8 +748,9 @@ static int fsl_ssi_hw_free(struct snd_pcm_substream *substream,
return
0
;
return
0
;
}
}
static
int
_fsl_ssi_set_dai_fmt
(
struct
fsl_ssi_private
*
ssi_private
,
static
int
_fsl_ssi_set_dai_fmt
(
struct
device
*
dev
,
unsigned
int
fmt
)
struct
fsl_ssi_private
*
ssi_private
,
unsigned
int
fmt
)
{
{
struct
regmap
*
regs
=
ssi_private
->
regs
;
struct
regmap
*
regs
=
ssi_private
->
regs
;
u32
strcr
=
0
,
stcr
,
srcr
,
scr
,
mask
;
u32
strcr
=
0
,
stcr
,
srcr
,
scr
,
mask
;
...
@@ -758,7 +759,7 @@ static int _fsl_ssi_set_dai_fmt(struct fsl_ssi_private *ssi_private,
...
@@ -758,7 +759,7 @@ static int _fsl_ssi_set_dai_fmt(struct fsl_ssi_private *ssi_private,
ssi_private
->
dai_fmt
=
fmt
;
ssi_private
->
dai_fmt
=
fmt
;
if
(
fsl_ssi_is_i2s_master
(
ssi_private
)
&&
IS_ERR
(
ssi_private
->
baudclk
))
{
if
(
fsl_ssi_is_i2s_master
(
ssi_private
)
&&
IS_ERR
(
ssi_private
->
baudclk
))
{
dev_err
(
&
ssi_private
->
pdev
->
dev
,
"baudclk is missing which is necessary for master mode
\n
"
);
dev_err
(
dev
,
"baudclk is missing which is necessary for master mode
\n
"
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
@@ -913,7 +914,7 @@ static int fsl_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
...
@@ -913,7 +914,7 @@ static int fsl_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
{
{
struct
fsl_ssi_private
*
ssi_private
=
snd_soc_dai_get_drvdata
(
cpu_dai
);
struct
fsl_ssi_private
*
ssi_private
=
snd_soc_dai_get_drvdata
(
cpu_dai
);
return
_fsl_ssi_set_dai_fmt
(
ssi_private
,
fmt
);
return
_fsl_ssi_set_dai_fmt
(
cpu_dai
->
dev
,
ssi_private
,
fmt
);
}
}
/**
/**
...
@@ -1387,7 +1388,8 @@ static int fsl_ssi_probe(struct platform_device *pdev)
...
@@ -1387,7 +1388,8 @@ static int fsl_ssi_probe(struct platform_device *pdev)
done:
done:
if
(
ssi_private
->
dai_fmt
)
if
(
ssi_private
->
dai_fmt
)
_fsl_ssi_set_dai_fmt
(
ssi_private
,
ssi_private
->
dai_fmt
);
_fsl_ssi_set_dai_fmt
(
&
pdev
->
dev
,
ssi_private
,
ssi_private
->
dai_fmt
);
return
0
;
return
0
;
...
...
sound/soc/soc-compress.c
浏览文件 @
64b1f00a
...
@@ -102,13 +102,11 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream)
...
@@ -102,13 +102,11 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream)
fe
->
dpcm
[
stream
].
runtime
=
fe_substream
->
runtime
;
fe
->
dpcm
[
stream
].
runtime
=
fe_substream
->
runtime
;
ret
=
dpcm_path_get
(
fe
,
stream
,
&
list
);
ret
=
dpcm_path_get
(
fe
,
stream
,
&
list
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
mutex_unlock
(
&
fe
->
card
->
mutex
);
goto
fe_err
;
goto
fe_err
;
}
else
if
(
ret
==
0
)
{
else
if
(
ret
==
0
)
dev_dbg
(
fe
->
dev
,
"ASoC: %s no valid %s route
\n
"
,
dev_dbg
(
fe
->
dev
,
"ASoC: %s no valid %s route
\n
"
,
fe
->
dai_link
->
name
,
stream
?
"capture"
:
"playback"
);
fe
->
dai_link
->
name
,
stream
?
"capture"
:
"playback"
);
}
/* calculate valid and active FE <-> BE dpcms */
/* calculate valid and active FE <-> BE dpcms */
dpcm_process_paths
(
fe
,
stream
,
&
list
,
1
);
dpcm_process_paths
(
fe
,
stream
,
&
list
,
1
);
...
...
sound/soc/soc-core.c
浏览文件 @
64b1f00a
...
@@ -3203,7 +3203,7 @@ int snd_soc_bytes_put(struct snd_kcontrol *kcontrol,
...
@@ -3203,7 +3203,7 @@ int snd_soc_bytes_put(struct snd_kcontrol *kcontrol,
unsigned
int
val
,
mask
;
unsigned
int
val
,
mask
;
void
*
data
;
void
*
data
;
if
(
!
component
->
regmap
)
if
(
!
component
->
regmap
||
!
params
->
num_regs
)
return
-
EINVAL
;
return
-
EINVAL
;
len
=
params
->
num_regs
*
component
->
val_bytes
;
len
=
params
->
num_regs
*
component
->
val_bytes
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录