aboutsummaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAge
...
* ENGR00274761-3 Upgrade VPU driver for Linux 3.10 kernelHongzhang Yang2014-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | Modify mxc_vpu.c to adapt to kernel 3.10 change - Remove all references to header files in mach folder - Include linux/clk.h instead of mach/clock.h - Call device_reset instead of imx_src_reset_vpu - Dummy PU and PM api callings before they are ready - Dummy cpu_is_mx5? api callings - Remove VM_RESERVED flags - Call gen_pool instead of iram_alloc Modify mxc_vpu.h - Change CONFIG_ARCH_MX6 to CONFIG_SOC_IMX6Q Modify Kconfig: - Change ARCH_MX? to SOC_IMX?, remove ARCH_MX3/ARCH_MX37 because for MX3 series only SOC_IMX31 and SOC_IMX35 are defined in Linux 3.10, and these chips don't have VPU. Need to add SOC_IMX37 to VPU Kconfig if MX37 could be supported later. Add VPU to config and build path - mxc/Kconfig - mxc/Makefile Signed-off-by: Hongzhang Yang <Hongzhang.Yang@freescale.com>
* ENGR00274761-1 Upgrade VPU driver for Linux 3.10 kernelHongzhang Yang2014-04-16
| | | | | | | | | | | Pick files from origin/imx_3.5.7 commit 135bf02a0727ea5ce96 - mxc_vpu.h is picked from arch/arm/plat-mxc/include/mach/ and put to include/linux/ - drivers/mxc/vpu/Kconfig - drivers/mxc/vpu/Makefile - drivers/mxc/vpu/mxc_vpu.c Signed-off-by: Hongzhang Yang <Hongzhang.Yang@freescale.com>
* ENGR00274768-1 ARM: imx6q: update gint bit definitions of IOMUXC_GPR1Anson Huang2014-04-16
| | | | | | | Need to use IOMUXC_GPR1_GINT bit for cpuidle driver, so update this bit's definitions. Signed-off-by: Anson Huang <b20788@freescale.com>
* ENGR00274056-1 thermal: add device cooling for thermal driverAnson Huang2014-04-16
| | | | | | | | | | | | | | | cpu cooling is not enough when temperature is too hot, as some devices may contribute a lot of heat to SOC, such as GPU, so we need to add device cooling as well, when system is too hot, devices can also take their actions to lower SOC temperature. when temperature cross the passive trip, device cooling driver will send out notification, those devices who register this devfreq_cooling notification will take actions to lower SOC temperature. Signed-off-by: Anson Huang <b20788@freescale.com>
* ENGR00274286-2 mxc: asrc: Add asrc m2m driverNicolin Chen2014-04-16
| | | | | | Add ASRC M2M driver. Signed-off-by: Nicolin Chen <b42378@freescale.com>
* ENGR00273974-1 media: port mxc vout driver from 3.5.7 to 3.10Liu Ying2014-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is porting mxc vout driver from imx_3.5.7 kernel to imx_3.10 kernel. * Put the driver in drivers/media/platform/ directory instead of drivers/media/video/ directory, since the later one is renamed to the former one in 3.10 kernel. * Change the ipu-v3.h header file from <mach/ipu-v3.h> to <linux/ipu-v3.h>. * Change the mxc_vidioc_s_crop() function's implementation since the definition of the vidioc_s_crop() function is modified to make the last argument be constant. * Set vfl_dir to be VFL_DIR_TX since the ioctrl validity checks are improved in 3.10 kernel. * Remove 'defaut y' setting for VIDEO_MXC_OUTPUT and VIDEO_MXC_IPU_OUTPUT Kconfigs. They may be configured by kernel default configure or by user. * Make VIDEO_MXC_OUTPUT Kconfig depend on FB_MXC Kconfig since we need framebuffers to be rendered. * Make VIDEO_MXC_IPU_OUTPUT Kconfig be tristate. * Split <linux/mxc_v4l2.h> header file up into include/linux/ and include/uapi/linux/ directories so that the userspace may include the mxc_v4l2.h header file. Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
* ENGR00273854 mxcfb: header file split upLiu Ying2014-04-16
| | | | | | | | | | | This patch splits mxcfb header file up to include/linux/ directory and include/uapi/linux/ directory so that the userspace may include the mxcfb header file. This patch also fixes some annotations and macros about the header file's naming. Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
* ENGR00273852 ipu: header file split upLiu Ying2014-04-16
| | | | | | | | | | | This patch splits ipu header file up to include/linux/ directory and include/uapi/linux/ directory so that the userspace may include the ipu header file. This patch also fixes some annotations and macros about the header file's naming. Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
* ENGR00274035 UAPI: split the header file linux/pxp_dma.hRobby Cai2014-04-16
| | | | | | | Move the user-space part in include/linux/pxp_dma.h into include/uapi/linux/pxp_dma.h due to the UAPI introduced. Signed-off-by: Robby Cai <R63905@freescale.com>
* ENGR00263553 fb: Change type uint to unsigned int in struct mxcfb_update_dataRobby Cai2014-04-16
| | | | | | | | uint is not quite standard type, changed to unsigned int to avoid to include specific header file. This is requested from mm team. Signed-off-by: Robby Cai <R63905@freescale.com> (cherry picked from commit 318a325b8c19d1ba7c1451797da5a161e787c64d)
* ENGR00274009 ARM: imx: gpt clk on i.mx6sl can NOT source from OSCAnson Huang2014-04-16
| | | | | | | | | | | There is no OSC clock source option for gpt on i.mx6sl, it can only source from perclk, and perclk can be from OSC. As perclk is clock source of many low speed devices, set it to be from OSC, this can avoid freq varying when bus clk(ipg) is scaled. Signed-off-by: Anson Huang <b20788@freescale.com>
* ENGR00273838-8 ASoC: WM8962: Let codec driver enable/disable its MCLKNicolin Chen2014-04-16
| | | | | | | | | WM8962 needs its MCLK when powerup -- wm8962_resume(). Thus it's better to control the MCLK in codec driver. Thus remove the clock enable in machine dirver accordingly. Acked-by: Wang Shengjiu <b02247@freescale.com> Signed-off-by: Nicolin Chen <b42378@freescale.com>
* regulator: pfuze100: add pfuze100 regulator driverRobin Gong2014-04-16
| | | | | | | | Add pfuze100 regulator driver. Signed-off-by: Robin Gong <b38343@freescale.com> Tested-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Mark Brown <broonie@linaro.org>
* ENGR00273848-02 iMX6Q/DL HDMI: Enable HDMI functionSandor Yu2014-04-16
| | | | | | | Add MX6Q/DL HDMI core and video driver source code. Add MXC edid data read and parse source code. Signed-off-by: Sandor Yu <R01008@freescale.com>
* ENGR00273512-2 ARM: imx: Change GPT clock source to OSCAnson Huang2014-04-16
| | | | | | | | | | GPT clock is system clock source, need to avoid freq varying, as system bus clock(ipg) may be changed, for i.mx6 series SOCs, all of them except i.mx6q TO1.0 support sourcing GPT clk from OSC directly, so switch gpt clock to OSC if the SOCs support this feature, as OSC freq is constant. Signed-off-by: Anson Huang <b20788@freescale.com>
* usb: fix build error without CONFIG_USB_PHYPeter Chen2014-04-16
| | | | | | | | | | | | | | on i386: drivers/built-in.o: In function `ci_hdrc_probe': core.c:(.text+0x20446b): undefined reference to `of_usb_get_phy_mode' Signed-off-by: Peter Chen <peter.chen@freescale.com> Reported-by: Randy Dunlap <rdunlap@infradead.org> Acked-by: Randy Dunlap <rdunlap@infradead.org> Acked-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Acked-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* usb: chipidea: drop "13xxx" infixAlexander Shishkin2014-04-16
| | | | | | | | | | | | | | "ci13xxx" is bad for at least the following reasons: * people often mistype it * it doesn't add any informational value to the names it's used in * it needlessly attracts mail filters This patch replaces it with "ci_hdrc", "ci_udc" or "ci_hw", depending on the situation. Modules with ci13xxx prefix are also renamed accordingly and aliases are added for compatibility. Otherwise, no functional changes. Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* usb: add devicetree helpers for determining dr_mode and phy_typeMichael Grzeschik2014-04-16
| | | | | | | | | | | | | This adds two little devicetree helper functions for determining the dr_mode (host, peripheral, otg) and phy_type (utmi, ulpi,...) from the devicetree. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Acked-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* usb: chipidea: introduce dual role mode pdata flagsSascha Hauer2014-04-16
| | | | | | | | | | Even if a chipidea core is otg capable the board may not be. This allows to explicitly set the core to host/peripheral mode. Without these flags the driver falls back to the old behaviour. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* usb: chipidea: add PTW, PTS and STS handlingMichael Grzeschik2014-04-16
| | | | | | | | | | | | | This patch makes it possible to configure the PTW, PTS and STS bits inside the portsc register for host and device mode before the driver starts and the phy can be addressed as hardware implementation is designed. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* ENGR00273673-2 dma: imx-sdma: Add dual-fifo script for ssiNicolin Chen2014-04-16
| | | | | | To support SSI dual-fifo mode, we need to add dual-fifo script for sdma. Signed-off-by: Nicolin Chen <b42378@freescale.com>
* serial: Move "uart_console" def to core header file.Sourav Poddar2014-04-16
| | | | | | | | | | | | | | Move "uart_console" definition to serial core header file, so that it can be used by serial drivers. Get rid of the uart_console defintion from mpc52xx_uart driver. Cc: Santosh Shilimkar <santosh.shilimkar@ti.com> Cc: Rajendra nayak <rnayak@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com> Reviewed-by: Kevin Hilman <khilman@linaro.org> Tested-by: Kevin Hilman <khilman@linaro.org> Signed-off-by: Sourav Poddar <sourav.poddar@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* ENGR00273073-2 cpufreq: add interactive governor for cpufreqAnson Huang2014-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cpufreq: interactive: New 'interactive' governor This governor is designed for latency-sensitive workloads, such as interactive user interfaces. The interactive governor aims to be significantly more responsive to ramp CPU quickly up when CPU-intensive activity begins. Existing governors sample CPU load at a particular rate, typically every X ms. This can lead to under-powering UI threads for the period of time during which the user begins interacting with a previously-idle system until the next sample period happens. The 'interactive' governor uses a different approach. Instead of sampling the CPU at a specified rate, the governor will check whether to scale the CPU frequency up soon after coming out of idle. When the CPU comes out of idle, a timer is configured to fire within 1-2 ticks. If the CPU is very busy from exiting idle to when the timer fires then we assume the CPU is underpowered and ramp to MAX speed. If the CPU was not sufficiently busy to immediately ramp to MAX speed, then the governor evaluates the CPU load since the last speed adjustment, choosing the highest value between that longer-term load or the short-term load since idle exit to determine the CPU speed to ramp to. A realtime thread is used for scaling up, giving the remaining tasks the CPU performance benefit, unlike existing governors which are more likely to schedule rampup work to occur after your performance starved tasks have completed. The tuneables for this governor are: /sys/devices/system/cpu/cpufreq/interactive/min_sample_time: The minimum amount of time to spend at the current frequency before ramping down. This is to ensure that the governor has seen enough historic CPU load data to determine the appropriate workload. /sys/devices/system/cpu/cpufreq/interactive/go_maxspeed_load The CPU load at which to ramp to max speed. Signed-off-by: Mike Chan <mike at android.com> Signed-off-by: Todd Poynor <toddpoynor at google.com> Signed-off-by: Allen Martin <amartin at nvidia.com> (submitted improvements) Signed-off-by: Axel Haslam <axelhaslam at ti.com> (submitted improvements) Signed-off-by: Anton Vorontsov <anton.vorontsov at linaro.org> Signed-off-by: Anson Huang <b20788@freescale.com>
* ENGR00273073-1 arm: add cpu idle notification callbackAnson Huang2014-04-16
| | | | | | | | | | | | | | | Some modules may need to know cpu idle status and take actions before and after cpu idle, so we can add notification callback when enter/exit cpu idle, then modules only need to register this notification callback, everytime cpu enter/exit idle, the callback chain will be executed. Currently only cpufreq interactive governor use this notification, as it wants to save power, the timers of interactive governor are only enabled when cpu is not in idle. Signed-off-by: Anson Huang <b20788@freescale.com>
* ENGR00264855 backlight: Support backlight shared by multiple fbsLiu Ying2014-04-16
| | | | | | | | | | | | | One backlight device may shared by multiple framebuffers. We don't hope blanking one of the framebuffers may turn the backlight off for all the other framebuffers, since they are likely active to show display content. This patch adds logic to record each framebuffer's backlight usage to determine the backlight device use count and whether the backlight should be turned on or off. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 37cbf741e4dff1f757f3ade6bb861d9a2af70693)
* ARM: imx6q: update the sata bits definitions of gpr13Richard Zhu2014-04-16
| | | | | | | | | | | | Replace the SATA_PHY_# by the more readable definitons. tj: Being routed through libata branch to enable implementation of ahci_imx. Signed-off-by: Richard Zhu <r65037@freescale.com> Acked-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
* ENGR00240987: video: port LDB and LCD FB display drivers from 3.5.7 kernelShawn Guo2014-04-16
| | | | | | | | | | | | | | | | | | This is a fast-forward porting of LDB and LCD frame buffer drivers from 3.5.7 kernel to kernel 3.10. The change set is kept as minimum as possible with only making necessary code changes, which are mostly for solving compile problems. * Remove <mach/*> inclusions * Drop __devinit and __devexit * Drop vm flag VM_RESERVED * Protect ldb_setup() with #ifndef MODULE to fix "warning: ‘ldb_setup’ defined but not used" in module build * Remove fb_prepare_logo() and fb_show_logo() calls, because it breaks module build, and penguin logo works fine without the calls in mxc_ipuv3_fb.c Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
* ENGR00240987: ipu: port ipuv3 driver from 3.5.7 kernelShawn Guo2014-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a fast-forward porting of ipuv3 driver from 3.5.7 kernel to kernel 3.10. The change set is kept as minimum as possible with only making necessary code changes to adapt 3.10 kernel internal API and framework updates. Everything else should be same as 3.5.7 one. The change set consists of the following. * Remove unused Kconfig options MXC_IPU_V3D, MXC_IPU_V3EX and MXC_IPU_V3H * Comment out busfreq calls * Move ipu-v3.h into include/linux/, and remove all <mach/*> includes * Drop __devinit and __devexit * Remove assignment of pltfm_data->pg = imx6q_ipu_pg; * Use generic device_reset() API rather than ipu_pltfm_data->init() hook to reset IPU * Includes <linux/sched/rt.h> ipu_device.c to fix undeclared MAX_USER_RT_PRIO error * Change compatible string to "fsl,imx6q-ipu" to align with community kernel * Define irq_sync before irq_err in DTS to align with community kernel * Drop "ipu1_" and "ipu2_" from clock names to save the handling of the second parameter of devm_clk_get() * Remove the buggy csi_clk setup in ipu_clk_setup_enable() and validate the clock before operate on it in ipu_csi_enable_mclk() * Replace iram API (linux/iram_alloc.h) with generic memory pool API (linux/genalloc.h) in VDOA driver Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
* ENGR00269945: reset: add dummy device_reset() for !CONFIG_RESET_CONTROLLER buildShawn Guo2014-04-16
| | | | | | | | Add dummy device_reset() function for !CONFIG_RESET_CONTROLLER build, so that we do not have to add #ifdef CONFIG_RESET_CONTROLLER in every single client device drivers that call the function. Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
* ARM: imx: fix vf610 enet module clock selectionShawn Guo2014-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The fec/enet driver calculates MDC rate with the formula below. ref_freq / ((MII_SPEED + 1) x 2) The ref_freq here is the fec internal module clock, which is missing from clk-vf610 clock driver right now. And clk-vf610 driver mistakenly supplies RMII clock (50 MHz) as the source to fec. This results in the situation that fec driver gets ref_freq as 50 MHz, while physically it runs at 66 MHz (fec module clock physically sources from ipg which runs at 66 MHz). That's why software expects MDC runs at 2.5 MHz, while the measurement tells it runs at 3.3 MHz. And this causes the PHY KSZ8041 keeps swithing between Full and Half mode as below. libphy: 400d0000.etherne:00 - Link is Up - 100/Full libphy: 400d0000.etherne:00 - Link is Up - 100/Half libphy: 400d0000.etherne:00 - Link is Up - 100/Full libphy: 400d0000.etherne:00 - Link is Up - 100/Half libphy: 400d0000.etherne:00 - Link is Up - 100/Full libphy: 400d0000.etherne:00 - Link is Up - 100/Half Add the missing module clock for ENET0 and ENET1, and correct the clock supplying in device tree to fix above issue. Thanks to Alison Wang <b18965@freescale.com> for debugging the issue. Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
* ARM: imx: add VF610 clock supportJingchang Lu2014-04-16
| | | | | | | | | | | | Commit 1f2c5fd5f0486566f73aa0149577d5f69df90bcc upstream. Add clock support for Vybrid VF610. It uses dtc macro support to define all clock IDs in vf610-clock.h to keep clock IDs coherence between kernel and DT. Signed-off-by: Jingchang Lu <b35083@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
* tty: serial: add Freescale lpuart driver supportJingchang Lu2014-04-16
| | | | | | | | | | | Commit c9e2e946fb0ba5d2398feb89558f98c5c28e23e3 upstream. Add Freescale lpuart driver support. The lpuart device can be found on Vybrid VF610 and Layerscape LS-1 SoCs. Signed-off-by: Jingchang Lu <b35083@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
* ARM: imx: add clock support for imx6slShawn Guo2014-04-16
| | | | | | | | | | | | Commit 45fe6810347b0a83561a13d9ee656c899a309fc0 upstream. Add clock support for i.MX6 SoloLite. It uses the dtc marco support to define all clock IDs in imx6sl-clock.h, which will be included by both clock driver and device tree sources, so that the data will stay sync all the time between kernel and DT. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
* ARM i.MX6Q: Fix IOMUXC GPR1 defines for ENET_CLK_SEL and IPU1/2_MUXPhilipp Zabel2014-04-16
| | | | | Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
* ore: Fix wrong math in allocation of per device BIOBoaz Harrosh2014-02-13
| | | | | | | | | | | | | | | | | | | | | | | | | commit aad560b7f63b495f48a7232fd086c5913a676e6f upstream. At IO preparation we calculate the max pages at each device and allocate a BIO per device of that size. The calculation was wrong on some unaligned corner cases offset/length combination and would make prepare return with -ENOMEM. This would be bad for pnfs-objects that would in that case IO through MDS. And fatal for exofs were it would fail writes with EIO. Fix it by doing the proper math, that will work in all cases. (I ran a test with all possible offset/length combinations this time round). Also when reading we do not need to allocate for the parity units since we jump over them. Also lower the max_io_length to take into account the parity pages so not to allocate BIOs bigger than PAGE_SIZE Signed-off-by: Boaz Harrosh <bharrosh@panasas.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* fs/compat: fix lookup_dcookie() parameter handlingHeiko Carstens2014-02-13
| | | | | | | | | | | | | | | | | | | | | | | commit d8d14bd09cddbaf0168d61af638455a26bd027ff upstream. Commit d5dc77bfeeab ("consolidate compat lookup_dcookie()") coverted all architectures to the new compat_sys_lookup_dcookie() syscall. The "len" paramater of the new compat syscall must have the type compat_size_t in order to enforce zero extension for architectures where the ABI requires that the caller of a function performed zero and/or sign extension to 64 bit of all parameters. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Ingo Molnar <mingo@kernel.org> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* fs/compat: fix parameter handling for compat readv/writev syscallsHeiko Carstens2014-02-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | commit dfd948e32af2e7b28bcd7a490c0a30d4b8df2a36 upstream. We got a report that the pwritev syscall does not work correctly in compat mode on s390. It turned out that with commit 72ec35163f9f ("switch compat readv/writev variants to COMPAT_SYSCALL_DEFINE") we lost the zero extension of a couple of syscall parameters because the some parameter types haven't been converted from unsigned long to compat_ulong_t. This is needed for architectures where the ABI requires that the caller of a function performed zero and/or sign extension to 64 bit of all parameters. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Ingo Molnar <mingo@kernel.org> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* mm/page-writeback.c: do not count anon pages as dirtyable memoryJohannes Weiner2014-02-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit a1c3bfb2f67ef766de03f1f56bdfff9c8595ab14 upstream. The VM is currently heavily tuned to avoid swapping. Whether that is good or bad is a separate discussion, but as long as the VM won't swap to make room for dirty cache, we can not consider anonymous pages when calculating the amount of dirtyable memory, the baseline to which dirty_background_ratio and dirty_ratio are applied. A simple workload that occupies a significant size (40+%, depending on memory layout, storage speeds etc.) of memory with anon/tmpfs pages and uses the remainder for a streaming writer demonstrates this problem. In that case, the actual cache pages are a small fraction of what is considered dirtyable overall, which results in an relatively large portion of the cache pages to be dirtied. As kswapd starts rotating these, random tasks enter direct reclaim and stall on IO. Only consider free pages and file pages dirtyable. Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Reported-by: Tejun Heo <tj@kernel.org> Tested-by: Tejun Heo <tj@kernel.org> Reviewed-by: Rik van Riel <riel@redhat.com> Cc: Mel Gorman <mgorman@suse.de> Cc: Wu Fengguang <fengguang.wu@intel.com> Reviewed-by: 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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* audit: correct a type mismatch in audit_syscall_exit()AKASHI Takahiro2014-02-13
| | | | | | | | | | | | | | | | | | | | commit 06bdadd7634551cfe8ce071fe44d0311b3033d9e upstream. audit_syscall_exit() saves a result of regs_return_value() in intermediate "int" variable and passes it to __audit_syscall_exit(), which expects its second argument as a "long" value. This will result in truncating the value returned by a system call and making a wrong audit record. I don't know why gcc compiler doesn't complain about this, but anyway it causes a problem at runtime on arm64 (and probably most 64-bit archs). Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Eric Paris <eparis@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Eric Paris <eparis@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* fuse: fix pipe_buf_operationsMiklos Szeredi2014-02-13
| | | | | | | | | | | | | | | | | commit 28a625cbc2a14f17b83e47ef907b2658576a32aa upstream. Having this struct in module memory could Oops when if the module is unloaded while the buffer still persists in a pipe. Since sock_pipe_buf_ops is essentially the same as fuse_dev_pipe_buf_steal merge them into nosteal_pipe_buf_ops (this is the same as default_pipe_buf_ops except stealing the page from the buffer is not allowed). Reported-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* libata: disable LPM for some WD SATA-I devicesTejun Heo2014-02-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit ecd75ad514d73efc1bbcc5f10a13566c3ace5f53 upstream. For some reason, some early WD drives spin up and down drives erratically when the link is put into slumber mode which can reduce the life expectancy of the device significantly. Unfortunately, we don't have full list of devices and given the nature of the issue it'd be better to err on the side of false positives than the other way around. Let's disable LPM on all WD devices which match one of the known problematic model prefixes and are SATA-I. As horkage list doesn't support matching SATA capabilities, this is implemented as two horkages - WD_BROKEN_LPM and NOLPM. The former is set for the known prefixes and sets the latter if the matched device is SATA-I. Note that this isn't optimal as this disables all LPM operations and partial link power state reportedly works fine on these; however, the way LPM is implemented in libata makes it difficult to precisely map libata LPM setting to specific link power state. Well, these devices are already fairly outdated. Let's just disable whole LPM for now. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-and-tested-by: Nikos Barkas <levelwol@gmail.com> Reported-and-tested-by: Ioannis Barkas <risc4all@yahoo.com> References: https://bugzilla.kernel.org/show_bug.cgi?id=57211 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* mm: hugetlbfs: fix hugetlbfs optimizationAndrea Arcangeli2014-02-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 27c73ae759774e63313c1fbfeb17ba076cea64c5 upstream. Commit 7cb2ef56e6a8 ("mm: fix aio performance regression for database caused by THP") can cause dereference of a dangling pointer if split_huge_page runs during PageHuge() if there are updates to the tail_page->private field. Also it is repeating compound_head twice for hugetlbfs and it is running compound_head+compound_trans_head for THP when a single one is needed in both cases. The new code within the PageSlab() check doesn't need to verify that the THP page size is never bigger than the smallest hugetlbfs page size, to avoid memory corruption. A longstanding theoretical race condition was found while fixing the above (see the change right after the skip_unlock label, that is relevant for the compound_lock path too). By re-establishing the _mapcount tail refcounting for all compound pages, this also fixes the below problem: echo 0 >/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages BUG: Bad page state in process bash pfn:59a01 page:ffffea000139b038 count:0 mapcount:10 mapping: (null) index:0x0 page flags: 0x1c00000000008000(tail) Modules linked in: CPU: 6 PID: 2018 Comm: bash Not tainted 3.12.0+ #25 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 Call Trace: dump_stack+0x55/0x76 bad_page+0xd5/0x130 free_pages_prepare+0x213/0x280 __free_pages+0x36/0x80 update_and_free_page+0xc1/0xd0 free_pool_huge_page+0xc2/0xe0 set_max_huge_pages.part.58+0x14c/0x220 nr_hugepages_store_common.isra.60+0xd0/0xf0 nr_hugepages_store+0x13/0x20 kobj_attr_store+0xf/0x20 sysfs_write_file+0x189/0x1e0 vfs_write+0xc5/0x1f0 SyS_write+0x55/0xb0 system_call_fastpath+0x16/0x1b Signed-off-by: Khalid Aziz <khalid.aziz@oracle.com> Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Tested-by: Khalid Aziz <khalid.aziz@oracle.com> Cc: Pravin Shelar <pshelar@nicira.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Ben Hutchings <bhutchings@solarflare.com> Cc: Christoph Lameter <cl@linux.com> Cc: Johannes Weiner <jweiner@redhat.com> Cc: Mel Gorman <mgorman@suse.de> Cc: Rik van Riel <riel@redhat.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: Minchan Kim <minchan@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Guillaume Morin <guillaume@morinfr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* mm: Make {,set}page_address() static inline if WANT_PAGE_VIRTUALGeert Uytterhoeven2014-01-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | commit f92f455f67fef27929e6043499414605b0c94872 upstream. {,set}page_address() are macros if WANT_PAGE_VIRTUAL. If !WANT_PAGE_VIRTUAL, they're plain C functions. If someone calls them with a void *, this pointer is auto-converted to struct page * if !WANT_PAGE_VIRTUAL, but causes a build failure on architectures using WANT_PAGE_VIRTUAL (arc, m68k and sparc64): drivers/md/bcache/bset.c: In function `__btree_sort': drivers/md/bcache/bset.c:1190: warning: dereferencing `void *' pointer drivers/md/bcache/bset.c:1190: error: request for member `virtual' in something not a structure or union Convert them to static inline functions to fix this. There are already plenty of users of struct page members inside <linux/mm.h>, so there's no reason to keep them as macros. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: Michael S. Tsirkin <mst@redhat.com> Tested-by: Guenter Roeck <linux@roeck-us.net> Tested-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vlan: Fix header ops passthru when doing TX VLAN offload.David S. Miller2014-01-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ Upstream commit 2205369a314e12fcec4781cc73ac9c08fc2b47de ] When the vlan code detects that the real device can do TX VLAN offloads in hardware, it tries to arrange for the real device's header_ops to be invoked directly. But it does so illegally, by simply hooking the real device's header_ops up to the VLAN device. This doesn't work because we will end up invoking a set of header_ops routines which expect a device type which matches the real device, but will see a VLAN device instead. Fix this by providing a pass-thru set of header_ops which will arrange to pass the proper real device instead. To facilitate this add a dev_rebuild_header(). There are implementations which provide a ->cache and ->create but not a ->rebuild (f.e. PLIP). So we need a helper function just like dev_hard_header() to avoid crashes. Use this helper in the one existing place where the header_ops->rebuild was being invoked, the neighbour code. With lots of help from Florian Westphal. Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* ipv6: fix illegal mac_header comparison on 32bitHannes Frederic Sowa2014-01-15
| | | | | Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* net: unix: allow set_peek_off to failSasha Levin2014-01-15
| | | | | | | | | | | | | | | | | | [ Upstream commit 12663bfc97c8b3fdb292428105dd92d563164050 ] unix_dgram_recvmsg() will hold the readlock of the socket until recv is complete. In the same time, we may try to setsockopt(SO_PEEK_OFF) which will hang until unix_dgram_recvmsg() will complete (which can take a while) without allowing us to break out of it, triggering a hung task spew. Instead, allow set_peek_off to fail, this way userspace will not hang. Signed-off-by: Sasha Levin <sasha.levin@oracle.com> Acked-by: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* clocksource: arch_timer: use virtual countersMark Rutland2014-01-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 0d651e4e65e96989f72236bf83bd4c6e55eb6ce4 upstream. Switching between reading the virtual or physical counters is problematic, as some core code wants a view of time before we're fully set up. Using a function pointer and switching the source after the first read can make time appear to go backwards, and having a check in the read function is an unfortunate block on what we want to be a fast path. Instead, this patch makes us always use the virtual counters. If we're a guest, or don't have hyp mode, we'll use the virtual timers, and as such don't care about CNTVOFF as long as it doesn't change in such a way as to make time appear to travel backwards. As the guest will use the virtual timers, a (potential) KVM host must use the physical timers (which can wake up the host even if they fire while a guest is executing), and hence a host must have CNTVOFF set to zero so as to have a consistent view of time between the physical timers and virtual counters. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Marc Zyngier <marc.zyngier@arm.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Cc: Rob Herring <rob.herring@calxeda.com> Cc: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* libceph: add function to ensure notifies are completeJosh Durgin2014-01-09
| | | | | | | | | | | | | | | | | | | | commit dd935f44a40f8fb02aff2cc0df2269c92422df1c upstream. Without a way to flush the osd client's notify workqueue, a watch event that is unregistered could continue receiving callbacks indefinitely. Unregistering the event simply means no new notifies are added to the queue, but there may still be events in the queue that will call the watch callback for the event. If the queue is flushed after the event is unregistered, the caller can be sure no more watch callbacks will occur for the canceled watch. Signed-off-by: Josh Durgin <josh.durgin@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* libceph: fix safe completionYan, Zheng2014-01-09
| | | | | | | | | | | | commit eb845ff13a44477f8a411baedbf11d678b9daf0a upstream. handle_reply() calls complete_request() only if the first OSD reply has ONDISK flag. Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com> Reviewed-by: Sage Weil <sage@inktank.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* mm: numa: guarantee that tlb_flush_pending updates are visible before page ↵Mel Gorman2014-01-09
| | | | | | | | | | | | | | | | | | | | table updates commit af2c1401e6f9177483be4fad876d0073669df9df upstream. According to documentation on barriers, stores issued before a LOCK can complete after the lock implying that it's possible tlb_flush_pending can be visible after a page table update. As per revised documentation, this patch adds a smp_mb__before_spinlock to guarantee the correct ordering. Signed-off-by: Mel Gorman <mgorman@suse.de> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Rik van Riel <riel@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>