Huang, Tao [Wed, 10 Dec 2014 12:09:28 +0000 (20:09 +0800)]
Merge branch develop-3.10 into develop-3.10-next
Huang, Tao [Wed, 10 Dec 2014 11:57:14 +0000 (19:57 +0800)]
ARM64: rockchip: update rockchip_defconfig
-MEMCG
-RD_BZIP2
-RD_LZMA
PANIC_TIMEOUT=1
+BLOCK_RKNAND
+ARMV7_COMPAT
+SECCOMP
-MALI_MIDGARD
+LCDC_RK3368
+SND_DYNAMIC_MINORS
+BOOTPARAM_HARDLOCKUP_PANIC
+BOOTPARAM_SOFTLOCKUP_PANIC
DEFAULT_HUNG_TASK_TIMEOUT=10
+DYNAMIC_DEBUG
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Wed, 10 Dec 2014 11:56:49 +0000 (19:56 +0800)]
ARM64: rockchip: add mach-rockchip
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Wed, 10 Dec 2014 11:53:56 +0000 (19:53 +0800)]
ARM: rockchip: move common config to Kconfig.common
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Wed, 10 Dec 2014 11:50:00 +0000 (19:50 +0800)]
ARM: rockchip: common files support ARM64
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Wed, 10 Dec 2014 11:42:48 +0000 (19:42 +0800)]
media: rk30_camera_oneframe: fix link error
`.exit.text' referenced in section `.data.rel.local' of drivers/built-in.o: defined in discarded section `.exit.text' of drivers/built-in.o
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Wed, 10 Dec 2014 11:40:53 +0000 (19:40 +0800)]
ARM: rockchip: common: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:36:30 +0000 (19:36 +0800)]
usb: dwc_otg_310: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:35:54 +0000 (19:35 +0800)]
video: rockchip: rk3288_hdmi: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:34:41 +0000 (19:34 +0800)]
video: rockchip: iep: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:32:25 +0000 (19:32 +0800)]
video: rk3368_lcdc: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:31:34 +0000 (19:31 +0800)]
media: rk30_camera_oneframe: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:30:04 +0000 (19:30 +0800)]
rk_serial: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:27:08 +0000 (19:27 +0800)]
clocksource: rockchip_timer: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:25:48 +0000 (19:25 +0800)]
pwm: rockchip: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:24:50 +0000 (19:24 +0800)]
irqchip: gic: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:24:11 +0000 (19:24 +0800)]
mmc: rockchip: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:23:04 +0000 (19:23 +0800)]
rockchip: clk: covert dsb() to dsb(sy)
Huang, Tao [Wed, 10 Dec 2014 11:21:35 +0000 (19:21 +0800)]
ethernet: gmac: covert dsb() to dsb(sy)
lintao [Wed, 10 Dec 2014 09:16:14 +0000 (17:16 +0800)]
Revert "mmc: auto-pin when pm call for udbg"
This reverts commit
4ac86774c95b8f8cd8d80605fc332010cc02714e.
hjc [Wed, 10 Dec 2014 09:16:07 +0000 (17:16 +0800)]
rk3288 hdmi: add config for hdmi
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Wed, 10 Dec 2014 08:44:05 +0000 (16:44 +0800)]
rk312x lcdc: fix no used function call.
Signed-off-by: hjc <hjc@rock-chips.com>
Luowei [Wed, 10 Dec 2014 06:19:53 +0000 (14:19 +0800)]
rk3128-box:update dts according to pm.c
Mark Yao [Wed, 10 Dec 2014 01:42:31 +0000 (09:42 +0800)]
rk_fb: rk312x: direct power on lcdc when do fb_unblank
when do fb blank, we diretcly off the lcdc, so I think
we should power on lcdc in pairs.
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
Luowei [Wed, 10 Dec 2014 00:20:38 +0000 (08:20 +0800)]
rk3288:umask dma support for spi
lyz [Tue, 9 Dec 2014 14:25:41 +0000 (22:25 +0800)]
rk312x: usb: cleanup ohci-rockchip.c and make it support rk312x
lyz [Tue, 9 Dec 2014 14:23:05 +0000 (22:23 +0800)]
rk312x: usb: Skip DWC HOST for rk3126/3128 and usb phy tuning
1.Use EHCI/OHCI for all rk312x series
2.Set Host disconnect trigger point to 600mv, default is 650mv
lyz [Tue, 9 Dec 2014 12:31:32 +0000 (20:31 +0800)]
phy: backport generic phy framework from kernel-3.18
Luowei [Tue, 9 Dec 2014 10:00:49 +0000 (18:00 +0800)]
rk3036:add CONFIG_SWITCH again
sugar [Tue, 9 Dec 2014 08:29:02 +0000 (16:29 +0800)]
i2s: compatible with rk3126/rk3126b/rk3128.
because i2s controller is different between rk3126 and rk3126b,
but require the same dtb, so add runtime compatible.
hjc [Tue, 9 Dec 2014 04:19:52 +0000 (12:19 +0800)]
rk3368 dtsi: modify dtsi for display module
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Tue, 9 Dec 2014 04:18:12 +0000 (12:18 +0800)]
rk3368 lcdc: add lcdc driver
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Tue, 9 Dec 2014 04:17:28 +0000 (12:17 +0800)]
rk31xx lvds: add support rk3368 lvds transmitter
Signed-off-by: hjc <hjc@rock-chips.com>
Huang, Tao [Tue, 9 Dec 2014 07:10:34 +0000 (15:10 +0800)]
Merge branch develop-3.10 into develop-3.10-next
hjc [Mon, 8 Dec 2014 10:24:22 +0000 (18:24 +0800)]
rk312x lcdc: fix vop csc config error
Mark Yao [Mon, 8 Dec 2014 08:55:21 +0000 (16:55 +0800)]
rk_fb: logo: support display bmp logo from uboot
get bmp file data from bootargs "kernel_logo=xxxxxx", decoder bmp
file to framebuffer.
now support rle 8bit bmp files and 24bit bmp files.
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
hjc [Mon, 8 Dec 2014 03:53:47 +0000 (11:53 +0800)]
rk fb: update fb config done info.
this commit depend on hwc update,
including the following directory:
hardware/rk29/hwcomposer_rga/
hardware/rk29/libgralloc_ump/
hardware/libhardware/
typ [Mon, 8 Dec 2014 02:50:18 +0000 (10:50 +0800)]
RK3126/3126B DDR:fix ddr DQS1 drv set err
sugar [Mon, 8 Dec 2014 01:44:14 +0000 (09:44 +0800)]
Merge branch 'develop-3.10' of ssh://10.10.10.29/rk/kernel into rk30/box/4.4_r1/develop
sugar [Mon, 8 Dec 2014 01:40:26 +0000 (09:40 +0800)]
i2s: compatable with rk3126/rk3126b/rk3128.
sugar [Mon, 8 Dec 2014 01:11:51 +0000 (09:11 +0800)]
Revert "rk3126/rk3126b: i2s: use i2s_2ch."
This reverts commit
942d98b30dd2c9907b4f53c160a16ee4216745a0.
Huang, Tao [Fri, 5 Dec 2014 13:18:34 +0000 (21:18 +0800)]
Merge tag 'lsk-v3.10-android-14.11'
LSK Android 14.11 v3.10
Conflicts:
arch/arm/include/asm/cputype.h
lyz [Tue, 25 Nov 2014 11:33:13 +0000 (19:33 +0800)]
usb: cleanup useless struct usb20otg_pdata_id
许盛飞 [Fri, 5 Dec 2014 11:05:59 +0000 (19:05 +0800)]
RK3126B: RK3126B delete the EBC
Signed-off-by: 许盛飞 <xsf@rock-chips.com>
li bing [Fri, 5 Dec 2014 09:20:51 +0000 (17:20 +0800)]
wifi->esp8089: add wifi mac address user-defined function.
sugar [Fri, 5 Dec 2014 06:36:00 +0000 (14:36 +0800)]
rk3126/rk3126b: i2s: use i2s_2ch.
blb [Fri, 5 Dec 2014 05:59:29 +0000 (13:59 +0800)]
rk3128 & rk3036 : change the led color when power up and down
Signed-off-by:blb <blb@rockchips.com>
CMY [Fri, 28 Nov 2014 06:49:59 +0000 (14:49 +0800)]
rk: ion: fix dts parse failure on arm64
li bing [Fri, 5 Dec 2014 02:41:35 +0000 (10:41 +0800)]
wifi->esp8089:
ESP8089 driver update to V1.9 (
11272014).
Update the V2.3 esp_prealloc program.
This update is mainly as follows:
1.To increase the new MAC address and MAC address customized version of the support;
2.Enhance the robustness of the code;
3.The increase of pure drive consistency under Linux and android;
4.Enhance compatibility of non-standard AP;
5.Improve the stability of the P2P mode.
hjc [Fri, 5 Dec 2014 00:46:11 +0000 (08:46 +0800)]
rk fb: mid not support uboot display hdmi, so wo identify box and mid at switch screen
cl [Thu, 4 Dec 2014 02:12:52 +0000 (10:12 +0800)]
rockchip: avoid change ddr freq before lcd driver is inited
Signed-off-by: cl <cl@rock-chips.com>
cl [Wed, 3 Dec 2014 11:54:35 +0000 (19:54 +0800)]
rk3288: arm pvtm add RK3288_PROCESS_V2
Signed-off-by: cl <cl@rock-chips.com>
dkl [Fri, 28 Nov 2014 02:01:26 +0000 (10:01 +0800)]
rk3368: clk: fix address expression and some errors
Signed-off-by: dkl <dkl@rock-chips.com>
dkl [Thu, 13 Nov 2014 06:54:22 +0000 (14:54 +0800)]
rk3368: clk: add clocks-init and clocks-enable in DTS
Signed-off-by: dkl <dkl@rock-chips.com>
dkl [Wed, 12 Nov 2014 07:15:59 +0000 (15:15 +0800)]
rk3368: clk: add codes to make npll only used by dclk_vop
Signed-off-by: dkl <dkl@rock-chips.com>
dkl [Mon, 10 Nov 2014 11:14:50 +0000 (19:14 +0800)]
rk3368: clk: add rk3368_apllb_table/rk3368_aplll_table
Signed-off-by: dkl <dkl@rock-chips.com>
Huang, Tao [Wed, 3 Dec 2014 11:10:23 +0000 (19:10 +0800)]
Merge branch develop-3.10 into develop-3.10-next
Mark Yao [Wed, 3 Dec 2014 07:05:15 +0000 (15:05 +0800)]
rk_fb: sysfs: make use vmap/vunmap in pairs.
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
Mark Yao [Wed, 3 Dec 2014 02:05:26 +0000 (10:05 +0800)]
rk_fb: sysfs: add dump_buffer func to fb sysfs
Due to some time we want to know which buffer vop scaning, use "io"
cammand to dump buffer is too complex, so we add a sys node to help
buffer dump.
how to use it:
- echo bin > /sys/class/graphics/fb0/disp_info
it will create bin file at /data/xxx.bin
- or echo bmp > /sys/class/graphics/fb0/disp_info
it will create bmp file at /data/xxx.bmp,
this file is normal bmp file.
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
Mark Yao [Wed, 3 Dec 2014 01:48:50 +0000 (09:48 +0800)]
ion: export ion handle get/put
use ion handle get/put, we can easyly protect the buffer when we
use it.
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
Mark Yao [Mon, 1 Dec 2014 09:21:25 +0000 (17:21 +0800)]
rk_fb: use front_regs instead of some global variable
front_regs means this config is scaning on the vop devices
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
lyz [Tue, 2 Dec 2014 10:55:37 +0000 (18:55 +0800)]
usb: dwc_otg: fix incorrect bit operation
typ [Tue, 2 Dec 2014 02:25:05 +0000 (10:25 +0800)]
RK3126B DDR:add supporting DDR change freq
ljf [Mon, 1 Dec 2014 03:35:08 +0000 (11:35 +0800)]
hevc, add scaling list table patch in kernel, fix bug in scaling list enable hevc video playback
Mark Yao [Mon, 1 Dec 2014 00:47:24 +0000 (08:47 +0800)]
rk_fb: fix iommu problem when hdmi plug or unplug.
There are two thread will update the win config,
one is update_regs handler, another is hdmi hotplug
thread, win config maybe modify by another thread
unexpectly, then vop scan umap address, cause iommu
crash, so we need use a mutex to protect win config.
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
dalon.zhang [Sat, 29 Nov 2014 11:38:54 +0000 (19:38 +0800)]
camera : cif : v0.1.a Support rk3288 cif driver
ljf [Fri, 28 Nov 2014 07:10:59 +0000 (15:10 +0800)]
vcodec iommu, fix some vp8 source decode cause
iommu pagefault. omit some iommu table creation.
Signed-off-by: ljf <ljf@rock-chips.com>
CMY [Fri, 28 Nov 2014 07:07:49 +0000 (15:07 +0800)]
rk: ion: change ion's debug node for other r/w
Mark Yao [Fri, 28 Nov 2014 06:32:01 +0000 (14:32 +0800)]
rk_fb: rk3128: fix crash when boot when with hdmi plug
enable iommu when first ion buffer take effect.
Zheng Yang [Fri, 28 Nov 2014 06:13:16 +0000 (14:13 +0800)]
rk3036/rk3128 hdmi:
According to HDMI CTS 7-19, GCP SB1~SB6 value must be zero
if color mode is 24bit. So we enable reg04 bit4 which will
set CD[0:3] of SB1 to zero.
许盛飞 [Fri, 28 Nov 2014 01:51:09 +0000 (09:51 +0800)]
rk312xdts: reconfiguration the rk3126-sdk.dts
Signed-off-by: 许盛飞 <xsf@rock-chips.com>
smj [Fri, 28 Nov 2014 01:09:27 +0000 (09:09 +0800)]
rk3036:SDK enable sdmmc
rk88 disable pwm_regulator
Signed-off-by: smj <smj@rock-chips.com>
许盛飞 [Fri, 28 Nov 2014 01:11:21 +0000 (09:11 +0800)]
rk312x-sleep: arm-off and ddr_selfrefres by soft controled
Signed-off-by: 许盛飞 <xsf@rock-chips.com>
blb [Thu, 27 Nov 2014 12:40:42 +0000 (20:40 +0800)]
rk3128 & rk3036: add the power led support of box-rk88
Signed-off-by: Bai Longbiao <blb@rock-chips.com>
lintao [Thu, 27 Nov 2014 12:04:24 +0000 (20:04 +0800)]
Revert "mmc: add rto for infinit sending timeout loop"
This reverts commit
426495888a245034d2b60e8c032ed5bd725a44ac.
Mark Yao [Thu, 27 Nov 2014 08:33:18 +0000 (16:33 +0800)]
kernel logo: default disable CONFIG_LOGO
because most projects use uboot logo display at kenel, so default
disable kernel logo.
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
lintao [Fri, 21 Nov 2014 00:32:23 +0000 (08:32 +0800)]
mmc: auto-pin when pm call for udbg
If mux data lines with uart, drivers auto work around
pcl setting for CARD_PRESENT state
Signed-off-by: lintao <lintao@rock-chips.com>
lintao [Thu, 20 Nov 2014 01:47:32 +0000 (09:47 +0800)]
mmc: add rto for infinit sending timeout loop
dw_mci write cmd index to CMD register to trigger sending cmd by BIU.
However, if device fall into panic holding cmd/data line to low level cause BIU
cannnot send out cmd forever. So no cmd_done_int will come. AND, cmd response timeout
only valid after cmd been sent. Nothing to break this loop, we need a s/w recovery from
STATE_SENDING_CMD to STATE_IDLE, and the pending one reported as -ETIMEOUT, let caller
decide howto again.
Reported-by: roger.hu <hwg@rock-chips.com>
Signed-off-by: lintao <lintao@rock-chips.com>
Reviewed-and-tested-by: roger.hu <hwg@rock-chips.com>
Simon Xue [Thu, 27 Nov 2014 01:27:39 +0000 (09:27 +0800)]
rockchip: iommu: update iommu driver
1.Audi vpu_combo contain hevc and vpu,it need to switch
when hevc on or vpu on,but there was a issue could cause
hevc or vpu failed,so current vpu driver disable/enable
iommu each frame to avoid failed,for these,a lot of log
produced,so change dev_info to dev_dbg when iommu attach/deattach
2.AudiB has fixed the vop read problem,we use soc_is_rk3126 or
soc_is_rk3128 instead of cpu_is_rk312x to identify Audi
Jaegeuk Kim [Mon, 3 Jun 2013 10:46:19 +0000 (19:46 +0900)]
f2fs: support xattr security labels
This patch adds the support of security labels for f2fs, which will be used
by Linus Security Models (LSMs).
Quote from http://en.wikipedia.org/wiki/Linux_Security_Modules:
"Linux Security Modules (LSM) is a framework that allows the Linux kernel to
support a variety of computer security models while avoiding favoritism toward
any single security implementation. The framework is licensed under the terms of
the GNU General Public License and is standard part of the Linux kernel since
Linux 2.6. AppArmor, SELinux, Smack and TOMOYO Linux are the currently accepted
modules in the official kernel.".
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
(cherry picked from commit
8ae8f1627f39bae505b90cade50cd8a911b8bda6)
Jaegeuk Kim [Mon, 20 May 2013 01:10:29 +0000 (10:10 +0900)]
f2fs: update inode page after creation
I found a bug when testing power-off-recovery as follows.
[Bug Scenario]
1. create a file
2. fsync the file
3. reboot w/o any sync
4. try to recover the file
- found its fsync mark
- found its dentry mark
: try to recover its dentry
- get its file name
- get its parent inode number
: here we got zero value
The reason why we get the wrong parent inode number is that we didn't
synchronize the inode page with its newly created inode information perfectly.
Especially, previous f2fs stores fi->i_pino and writes it to the cached
node page in a wrong order, which incurs the zero-valued i_pino during the
recovery.
So, this patch modifies the creation flow to fix the synchronization order of
inode page with its inode.
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
(cherry picked from commit
44a83ff6a81d84ab83bcb43a49ff1ba6c7e17cd1)
Jaegeuk Kim [Mon, 20 May 2013 00:55:50 +0000 (09:55 +0900)]
f2fs: change get_new_data_page to pass a locked node page
This patch is for passing a locked node page to get_dnode_of_data.
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
(cherry picked from commit
64aa7ed98db489d1c41ef140876ada38498678ab)
ljf [Wed, 26 Nov 2014 09:52:19 +0000 (17:52 +0800)]
rk3036,rk312x. merge the hevc and vpu workqueue according to audi vpu_combo feature
dkl [Tue, 25 Nov 2014 08:53:24 +0000 (16:53 +0800)]
clk: rk3126b: add support and fix clk_pll_set_rate_3036_apll
Mark Yao [Tue, 25 Nov 2014 06:16:01 +0000 (14:16 +0800)]
rk-fb: display kernel logo if define CONFIG_LOGO
if define CONFIG_LOGO macro, display kernel logo,
else display logo from uboot.
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
hjc [Tue, 25 Nov 2014 03:44:25 +0000 (11:44 +0800)]
rk312x lcdc: fix fb_par->state error.
许盛飞 [Mon, 24 Nov 2014 04:00:21 +0000 (12:00 +0800)]
test-power: add testpower dts-config
Signed-off-by: 许盛飞 <xsf@rock-chips.com>
Mark Brown [Sat, 22 Nov 2014 11:07:41 +0000 (11:07 +0000)]
Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
Mark Brown [Fri, 21 Nov 2014 23:43:29 +0000 (23:43 +0000)]
Merge remote-tracking branch 'lsk/v3.10/topic/mailbox' into linux-linaro-lsk
Conflicts:
drivers/mailbox/mailbox.c
include/linux/mailbox_controller.h
Jassi Brar [Tue, 22 Jul 2014 15:10:04 +0000 (20:40 +0530)]
dt: mailbox: add generic bindings
Define generic bindings for the framework clients to
request mailbox channels.
Reviewed-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
(cherry picked from commit
9f3e3cacb2ffdefe28c7cf490bf543e4dcb2770a)
Signed-off-by: Mark Brown <broonie@kernel.org>
Jassi Brar [Tue, 22 Jul 2014 14:35:58 +0000 (20:05 +0530)]
doc: add documentation for mailbox framework
Some explanations with examples of how to write to implement users
and providers of the mailbox framework.
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
(cherry picked from commit
15320fbcec69dc3a4f217044ed848e4225397e25)
Signed-off-by: Mark Brown <broonie@kernel.org>
Jassi Brar [Thu, 12 Jun 2014 17:01:19 +0000 (22:31 +0530)]
mailbox: Introduce framework for mailbox
Introduce common framework for client/protocol drivers and
controller drivers of Inter-Processor-Communication (IPC).
Client driver developers should have a look at
include/linux/mailbox_client.h to understand the part of
the API exposed to client drivers.
Similarly controller driver developers should have a look
at include/linux/mailbox_controller.h
Reviewed-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
(cherry picked from commit
2b6d83e2b8b7de82331a6a1dcd64b51020a6031c)
Signed-off-by: Mark Brown <broonie@kernel.org>
Suman Anna [Thu, 12 Jun 2014 17:00:34 +0000 (22:30 +0530)]
mailbox: rename pl320-ipc specific mailbox.h
The patch
30058677 "ARM / highbank: add support for pl320 IPC"
added a pl320 IPC specific header file as a generic mailbox.h.
This file has been renamed appropriately to allow the
introduction of the generic mailbox API framework.
Acked-by: Mark Langsdorf <mark.langsdorf@calxeda.com>
Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
Reviewed-by: Mark Brown <broonie@linaro.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
(cherry picked from commit
f2fc42b6ac31f4d808da7a9da460dd433a71e976)
Signed-off-by: Mark Brown <broonie@kernel.org>
Conflicts:
arch/arm/mach-highbank/highbank.c
Mark Brown [Fri, 21 Nov 2014 18:53:31 +0000 (18:53 +0000)]
Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
Mark Brown [Fri, 21 Nov 2014 18:53:19 +0000 (18:53 +0000)]
Merge tag 'v3.10.61' into linux-linaro-lsk
This is the 3.10.61 stable release
Mark Brown [Fri, 21 Nov 2014 17:41:22 +0000 (17:41 +0000)]
Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
Greg Kroah-Hartman [Fri, 21 Nov 2014 17:23:22 +0000 (09:23 -0800)]
Linux 3.10.61
Johannes Weiner [Wed, 16 Oct 2013 20:46:59 +0000 (13:46 -0700)]
mm: memcg: handle non-error OOM situations more gracefully
commit
4942642080ea82d99ab5b653abb9a12b7ba31f4a upstream.
Commit
3812c8c8f395 ("mm: memcg: do not trap chargers with full
callstack on OOM") assumed that only a few places that can trigger a
memcg OOM situation do not return VM_FAULT_OOM, like optional page cache
readahead. But there are many more and it's impractical to annotate
them all.
First of all, we don't want to invoke the OOM killer when the failed
allocation is gracefully handled, so defer the actual kill to the end of
the fault handling as well. This simplifies the code quite a bit for
added bonus.
Second, since a failed allocation might not be the abrupt end of the
fault, the memcg OOM handler needs to be re-entrant until the fault
finishes for subsequent allocation attempts. If an allocation is
attempted after the task already OOMed, allow it to bypass the limit so
that it can quickly finish the fault and invoke the OOM killer.
Reported-by: azurIt <azurit@pobox.sk>
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Johannes Weiner [Thu, 12 Sep 2013 22:13:44 +0000 (15:13 -0700)]
mm: memcg: do not trap chargers with full callstack on OOM
commit
3812c8c8f3953921ef18544110dafc3505c1ac62 upstream.
The memcg OOM handling is incredibly fragile and can deadlock. When a
task fails to charge memory, it invokes the OOM killer and loops right
there in the charge code until it succeeds. Comparably, any other task
that enters the charge path at this point will go to a waitqueue right
then and there and sleep until the OOM situation is resolved. The problem
is that these tasks may hold filesystem locks and the mmap_sem; locks that
the selected OOM victim may need to exit.
For example, in one reported case, the task invoking the OOM killer was
about to charge a page cache page during a write(), which holds the
i_mutex. The OOM killer selected a task that was just entering truncate()
and trying to acquire the i_mutex:
OOM invoking task:
mem_cgroup_handle_oom+0x241/0x3b0
mem_cgroup_cache_charge+0xbe/0xe0
add_to_page_cache_locked+0x4c/0x140
add_to_page_cache_lru+0x22/0x50
grab_cache_page_write_begin+0x8b/0xe0
ext3_write_begin+0x88/0x270
generic_file_buffered_write+0x116/0x290
__generic_file_aio_write+0x27c/0x480
generic_file_aio_write+0x76/0xf0 # takes ->i_mutex
do_sync_write+0xea/0x130
vfs_write+0xf3/0x1f0
sys_write+0x51/0x90
system_call_fastpath+0x18/0x1d
OOM kill victim:
do_truncate+0x58/0xa0 # takes i_mutex
do_last+0x250/0xa30
path_openat+0xd7/0x440
do_filp_open+0x49/0xa0
do_sys_open+0x106/0x240
sys_open+0x20/0x30
system_call_fastpath+0x18/0x1d
The OOM handling task will retry the charge indefinitely while the OOM
killed task is not releasing any resources.
A similar scenario can happen when the kernel OOM killer for a memcg is
disabled and a userspace task is in charge of resolving OOM situations.
In this case, ALL tasks that enter the OOM path will be made to sleep on
the OOM waitqueue and wait for userspace to free resources or increase
the group's limit. But a userspace OOM handler is prone to deadlock
itself on the locks held by the waiting tasks. For example one of the
sleeping tasks may be stuck in a brk() call with the mmap_sem held for
writing but the userspace handler, in order to pick an optimal victim,
may need to read files from /proc/<pid>, which tries to acquire the same
mmap_sem for reading and deadlocks.
This patch changes the way tasks behave after detecting a memcg OOM and
makes sure nobody loops or sleeps with locks held:
1. When OOMing in a user fault, invoke the OOM killer and restart the
fault instead of looping on the charge attempt. This way, the OOM
victim can not get stuck on locks the looping task may hold.
2. When OOMing in a user fault but somebody else is handling it
(either the kernel OOM killer or a userspace handler), don't go to
sleep in the charge context. Instead, remember the OOMing memcg in
the task struct and then fully unwind the page fault stack with
-ENOMEM. pagefault_out_of_memory() will then call back into the
memcg code to check if the -ENOMEM came from the memcg, and then
either put the task to sleep on the memcg's OOM waitqueue or just
restart the fault. The OOM victim can no longer get stuck on any
lock a sleeping task may hold.
Debugged by Michal Hocko.
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Reported-by: azurIt <azurit@pobox.sk>
Acked-by: Michal Hocko <mhocko@suse.cz>
Cc: David Rientjes <rientjes@google.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Johannes Weiner [Thu, 12 Sep 2013 22:13:43 +0000 (15:13 -0700)]
mm: memcg: rework and document OOM waiting and wakeup
commit
fb2a6fc56be66c169f8b80e07ed999ba453a2db2 upstream.
The memcg OOM handler open-codes a sleeping lock for OOM serialization
(trylock, wait, repeat) because the required locking is so specific to
memcg hierarchies. However, it would be nice if this construct would be
clearly recognizable and not be as obfuscated as it is right now. Clean
up as follows:
1. Remove the return value of mem_cgroup_oom_unlock()
2. Rename mem_cgroup_oom_lock() to mem_cgroup_oom_trylock().
3. Pull the prepare_to_wait() out of the memcg_oom_lock scope. This
makes it more obvious that the task has to be on the waitqueue
before attempting to OOM-trylock the hierarchy, to not miss any
wakeups before going to sleep. It just didn't matter until now
because it was all lumped together into the global memcg_oom_lock
spinlock section.
4. Pull the mem_cgroup_oom_notify() out of the memcg_oom_lock scope.
It is proctected by the hierarchical OOM-lock.
5. The memcg_oom_lock spinlock is only required to propagate the OOM
lock in any given hierarchy atomically. Restrict its scope to
mem_cgroup_oom_(trylock|unlock).
6. Do not wake up the waitqueue unconditionally at the end of the
function. Only the lockholder has to wake up the next in line
after releasing the lock.
Note that the lockholder kicks off the OOM-killer, which in turn
leads to wakeups from the uncharges of the exiting task. But a
contender is not guaranteed to see them if it enters the OOM path
after the OOM kills but before the lockholder releases the lock.
Thus there has to be an explicit wakeup after releasing the lock.
7. Put the OOM task on the waitqueue before marking the hierarchy as
under OOM as that is the point where we start to receive wakeups.
No point in listening before being on the waitqueue.
8. Likewise, unmark the hierarchy before finishing the sleep, for
symmetry.
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Michal Hocko <mhocko@suse.cz>
Cc: David Rientjes <rientjes@google.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: azurIt <azurit@pobox.sk>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>