summaryrefslogtreecommitdiff
path: root/include/linux (follow)
Commit message (Collapse)AuthorAge
* UBSAN: run-time undefined behavior sanity checkerAndrey Ryabinin2016-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | UBSAN uses compile-time instrumentation to catch undefined behavior (UB). Compiler inserts code that perform certain kinds of checks before operations that could cause UB. If check fails (i.e. UB detected) __ubsan_handle_* function called to print error message. So the most of the work is done by compiler. This patch just implements ubsan handlers printing errors. GCC has this capability since 4.9.x [1] (see -fsanitize=undefined option and its suboptions). However GCC 5.x has more checkers implemented [2]. Article [3] has a bit more details about UBSAN in the GCC. [1] - https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Debugging-Options.html [2] - https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html [3] - http://developerblog.redhat.com/2014/10/16/gcc-undefined-behavior-sanitizer-ubsan/ Issues which UBSAN has found thus far are: Found bugs: * out-of-bounds access - 97840cb67ff5 ("netfilter: nfnetlink: fix insufficient validation in nfnetlink_bind") undefined shifts: * d48458d4a768 ("jbd2: use a better hash function for the revoke table") * 10632008b9e1 ("clockevents: Prevent shift out of bounds") * 'x << -1' shift in ext4 - http://lkml.kernel.org/r/<5444EF21.8020501@samsung.com> * undefined rol32(0) - http://lkml.kernel.org/r/<1449198241-20654-1-git-send-email-sasha.levin@oracle.com> * undefined dirty_ratelimit calculation - http://lkml.kernel.org/r/<566594E2.3050306@odin.com> * undefined roundown_pow_of_two(0) - http://lkml.kernel.org/r/<1449156616-11474-1-git-send-email-sasha.levin@oracle.com> * [WONTFIX] undefined shift in __bpf_prog_run - http://lkml.kernel.org/r/<CACT4Y+ZxoR3UjLgcNdUm4fECLMx2VdtfrENMtRRCdgHB2n0bJA@mail.gmail.com> WONTFIX here because it should be fixed in bpf program, not in kernel. signed overflows: * 32a8df4e0b33f ("sched: Fix odd values in effective_load() calculations") * mul overflow in ntp - http://lkml.kernel.org/r/<1449175608-1146-1-git-send-email-sasha.levin@oracle.com> * incorrect conversion into rtc_time in rtc_time64_to_tm() - http://lkml.kernel.org/r/<1449187944-11730-1-git-send-email-sasha.levin@oracle.com> * unvalidated timespec in io_getevents() - http://lkml.kernel.org/r/<CACT4Y+bBxVYLQ6LtOKrKtnLthqLHcw-BMp3aqP3mjdAvr9FULQ@mail.gmail.com> * [NOTABUG] signed overflow in ktime_add_safe() - http://lkml.kernel.org/r/<CACT4Y+aJ4muRnWxsUe1CMnA6P8nooO33kwG-c8YZg=0Xc8rJqw@mail.gmail.com> [akpm@linux-foundation.org: fix unused local warning] [akpm@linux-foundation.org: fix __int128 build woes] Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sasha Levin <sasha.levin@oracle.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Michal Marek <mmarek@suse.cz> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Yury Gribov <y.gribov@samsung.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Konstantin Khlebnikov <koct9i@gmail.com> Cc: Kostya Serebryany <kcc@google.com> Cc: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Git-repo: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ Git-commit: c6d308534aef6c99904bf5862066360ae067abc4 [tsoni@codeaurora.org: trivial merge conflict resolution] CRs-Fixed: 969533 Change-Id: I048b9936b1120e0d375b7932c59de78d8ef8f411 Signed-off-by: Trilok Soni <tsoni@codeaurora.org> [satyap@codeaurora.org: trivial merge conflict resolution] Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
* net/ipv6/addrconf: IPv6 tethering enhancementTianyi Gou2016-03-22
| | | | | | | | | | | | | Added new procfs flag to toggle the automatic addition of prefix routes on a per device basis. The new flag is accept_ra_prefix_route. Defaults to 1 as to not break existing behavior. CRs-Fixed: 435320 Change-Id: If25493890c7531c27f5b2c4855afebbbbf5d072a Acked-by: Harout S. Hedeshian <harouth@qti.qualcomm.com> Signed-off-by: Tianyi Gou <tgou@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
* net: add a per-cpu counter for the number of frames coalesced in GROHarout Hedeshian2016-03-22
| | | | | | | | | | | | | | | A low cost method of determining GRO statistics is required. This change introduces a new counter which tracks whenever GRO coalesces ingress packets. The counter is per-CPU and exposed in /proc/net/softnet_stat as the last column of data. No user space impact is expected as a result of this change. However, this change should be reverted if legacy tools have problems with the new column in softnet_stat. Change-Id: I05965c0cb150947935d5977884cc4d583b37131d Signed-off-by: Harout Hedeshian <harouth@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
* Revert "net, lib: kill arch_fast_hash library bits"Rohit Vaswani2016-03-22
| | | | This reverts commit 0cb6c969ed9de43687abdfc63714b6fe4385d2fc.
* msm: pcie: add SMMU support to calculate SID for PCIe EPTony Truong2016-03-22
| | | | | | | | | | SMMU requires PCIe to provide a SID for each of its endpoint so that the endpoint can successful transaction on the bus. This change adds the support for PCIe bus driver to calculate a SID for its endpoint and give it to the SMMU driver. Change-Id: I52099bbfed0a38c75b0277b0f58f45f6e6559695 Signed-off-by: Tony Truong <truong@codeaurora.org>
* msm: pcie: add PCIe bus driver snapshotTony Truong2016-03-22
| | | | | | | | | | | | This PCIe bus driver snapshot is taken as of msm-3.10 commit: 803998b (Merge "ASoC: wcd: don't set autozeroing for conga") This change adds the PCIe bus driver and its dependecies from msm-3.10 to msm-3.14. All the files are as is from msm-3.10. No additional changes were made. Change-Id: Ia1a2d0eea0cc87c16357c95bfcc4df72e910cd34 Signed-off-by: Tony Truong <truong@codeaurora.org>
* rtc: alarm: Add power-on alarm featureMao Jinlong2016-03-22
| | | | | | | | | Android does not support powering-up the phone through alarm. Set rtc alarm in timerfd to power-up the phone after alarm expiration. Change-Id: I781389c658fb00ba7f0ce089d706c10f202a7dc6 Signed-off-by: Mao Jinlong <c_jmao@codeaurora.org>
* soc: qcom: rq_stats: add snapshot of run queue stats driverMatt Wagantall2016-03-22
| | | | | | | | | | | | Add a snapshot of the run queue stats driver as of msm-3.10 commit 4bf320bd ("Merge "ASoC: msm8952: set async flag for 8952 dailink"") Resolve checkpatch warnings in the process, notably the replacement of sscanf with kstrtouint. Change-Id: I7e2f98223677e6477df114ffe770c0740ed37de9 Signed-off-by: Matt Wagantall <mattw@codeaurora.org> Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
* platform: msm: Add snapshot of the SPS/BAM driverYan He2016-03-22
| | | | | | | | | | | | | Add the MSM SPS (Smart Peripheral Switch) driver. SPS may be used as a DMA engine to move data in either Peripheral-to- Peripheral (a.k.a. BAM-to-BAM) mode or Peripheral-to-Memory (a.k.a BAM-System) mode. This snapshot is taken as of msm-3.18 commit 132e1315c1 Change-Id: I7ec9781c3b608b9ee0fffdf7ba3e1b33bfa4dfcd Signed-off-by: Yan He <yanhe@codeaurora.org>
* soc: qcom: Snapshot of thermal/LMH driversMahesh Sivasubramanian2016-03-22
| | | | | | | | | | | | | This snapshot is taken as of msm-3.18 commit e70ad0c (Promotion of kernel.lnx.3.18-151201.) Include necessary thermal_core changes to convert long to int inline with upstream kernel changes. Change-Id: I642b666518fe72385794b743989a0f5e5120ec03 Conflicts: drivers/thermal/Makefile
* kobject: increase number of kobject uevent pointers to 64Subbaraman Narayanamurthy2016-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Power supply framework uses uevents to notify the power supply change events to the userspace. Some power supplies have their properties increasing thus overflowing the number of kobject uevent pointers, triggering warning shown below. [ 10.577545] WARNING: CPU: 3 PID: 406 at kernel/lib/kobject_uevent.c:393 add_uevent_var+0xc0/0x100() [ 10.589680] add_uevent_var: too many keys [ 10.593809] Modules linked in: [ 10.596686] CPU: 3 PID: 406 Comm: kworker/3:2 Tainted: G W 3.18.20-g5e99605-00057-gd18285f #603 [ 10.606373] Hardware name: Qualcomm Technologies, Inc. MSM 8996 v3 + PMI8996 MTP (DT) [ 10.614188] Workqueue: events power_supply_changed_work [ 10.619366] Call trace: [ 10.621803] [<ffffffc00008881c>] dump_backtrace+0x0/0x130 [ 10.627175] [<ffffffc00008895c>] show_stack+0x10/0x1c [ 10.632237] [<ffffffc000cc4d00>] dump_stack+0x74/0xb8 [ 10.637253] [<ffffffc0000a0fec>] warn_slowpath_common+0x90/0xb8 [ 10.643170] [<ffffffc0000a1060>] warn_slowpath_fmt+0x4c/0x58 [ 10.648814] [<ffffffc00031121c>] add_uevent_var+0xbc/0x100 [ 10.654259] [<ffffffc0003116f8>] kobject_uevent_env+0x498/0x5a8 [ 10.660185] [<ffffffc000311814>] kobject_uevent+0xc/0x18 [ 10.665457] [<ffffffc0007fd3c0>] power_supply_changed_work+0xb0/0xf0 [ 10.671830] [<ffffffc0000b617c>] process_one_work+0x23c/0x3f4 [ 10.677529] [<ffffffc0000b7338>] worker_thread+0x280/0x3a8 [ 10.683017] [<ffffffc0000bb384>] kthread+0xe0/0xec Fix this warning by increasing the number of kobject uevent pointers from 32 to 64. CRs-Fixed: 971954 Change-Id: Ide942d25006abd36ba7be945be397a535e91d970 Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
* thermal-core: Add separate threads for sysfs notifyShiju Mathew2016-03-22
| | | | | | | | | | | | Add separate threads for sysfs notify. This is required so that any thermal trip is not blocked while handling sysfs notify. Change-Id: Ifee206c29fd1b3c226a342b7f048250d5062397e Signed-off-by: Shiju Mathew <shijum@codeaurora.org> [imaund@codeaurora.org: Resolved context conflicts and updated a call of INIT_COMPLETION to reinit_completion] Signed-off-by: Ian Maund <imaund@codeaurora.org>
* thermal-core: Add API to get temperatureArchana Sathyakumar2016-03-22
| | | | | | | | | | | Currently, there is no API to query the current temperature in sensor framework. Add a generic API to get it. Change-Id: I038e9a118e77eb6a3599b7d45a0cc8757990d2ef Signed-off-by: Archana Sathyakumar <asathyak@codeaurora.org> Conflicts: include/linux/thermal.h
* thermal: Add Support for enabling and disabling tsens tripRam Chandrasekar2016-03-22
| | | | | | | | | | | | | | | | | Add new API to enable or disable the kernel client's trip threshold request. The enable or disable trip threshold requests from different kernel clients and userspace client will activate/deactivate the corresponding clients threshold request. Modify thermal sys framework to include only the active thresholds from clients to determine the current trip thresholds for tsens. CRs-Fixed: 561775 Change-Id: I304ac00daa8a0a1a68b60153c29ee6cb5c3507b1 Signed-off-by: Ram Chandrasekar <rkumbako@codeaurora.org> [joshc: drop msm_thermal chunk] Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
* thermal: Fix sensor thresholds not accounted correctlyPraveen Chidambaram2016-03-22
| | | | | | | | | | | Sensor threshold min and max are calculated to be binding around the current temp, but they fail if there no thresholds available with the min < curr_temp and the max > curr_temp. Fix negative temperatures handling. Change-Id: I124d2a9249f705d41469b8e0efffe2dfdf05e292 Signed-off-by: Praveen Chidambaram <pchidamb@codeaurora.org>
* thermal: Add sensor API to allow any driver to set thresholdsPraveen Chidambaram2016-03-22
| | | | | | | | | | | | | | Sensor API allow drivers to set min or max thresholds and get notified when the corresponding sensor crosses these thresholds. The sensor API, uses the THERMAL_TRIP_CONFIGURABLE_HI and THERMAL_TRIP_CONFIGURABLE_LOW, to set the threshold. The existing sysfs interfaces will not be affected by the newly added API. Change-Id: I85d2ae132fc3b7b6d157faf0a7390e31fdc7e6da Signed-off-by: Praveen Chidambaram <pchidamb@codeaurora.org> Conflicts: include/linux/thermal.h
* thermal: tsens: TSENS driver fixupsSiddartha Mohanadoss2016-03-22
| | | | | | | | | | | | | | | | | Add TSENS Thermal driver. Include support to activate a trip type and mode. This snapshot is taken as of msm-3.14 commit 3bc54cf86b (Merge "msm: camera: Add dummy sub module in sensor pipeline") Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org> Conflicts: drivers/thermal/Kconfig drivers/thermal/Makefile include/linux/thermal.h Change-Id: Ie8a089afc0cf9e45ac000dff425a3e6206c1b9b1
* soc: qcom: Add snapshot of QMIKarthikeyan Ramasubramanian2016-03-22
| | | | | | | This snapshot is taken as of msm-3.18 commit e70ad0cd (Promotion of kernel.lnx.3.18-151201.) Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
* net: ipc_router: Add snapshot of IPC RouterKarthikeyan Ramasubramanian2016-03-22
| | | | | | | This snapshot is taken as of msm-3.18 commit e70ad0cd (Promotion of kernel.lnx.3.18-151201.) Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
* firmware_class: Include a size argument in unmap_fw_memVikram Mulukutla2016-03-22
| | | | | | | | | Some implementations may need to know the size of a region allocated by map_fw_mem in the context of the unmap_fw_mem callback. Add this as an argument to the callback signature. Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
* firmware_class: Allow private data in [unmap|map]_fw_memVikram Mulukutla2016-03-22
| | | | | | | | | | | | | | | Some callers of request_firmware_direct may need additional context to be able to map firmware memory. Allow private data to be passed in with request_firmware_direct, and send this data along with the [unmap|map]_fw_mem callbacks. Change-Id: I05a15eb46cc663a4476b784e30e80182a28e10c3 Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org> [joshc: dropped PIL portions, fixed trivial conflict in firmware.h due to API rename] Signed-off-by: Josh Cartwright <joshc@codeaurora.org> [vmulukut: adjusted for upstream merge conflicts] Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
* firmware_class: Introduce the request_firmware_direct APIVikram Mulukutla2016-03-22
| | | | | | | | | | | | | | | | | | On devices with low memory, using request_firmware on rather large firmware images results in a memory usage penalty that might be unaffordable. Introduce a new API that allows the firmware image to be directly loaded to a destination address without using any intermediate buffer. Change-Id: I51b55dd9044ea669e2126a3f908028850bf76325 Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org> [joshc: renamed request_firmware_direct to request_firmware_into_buf, avoiding namespace conflict] Signed-off-by: Josh Cartwright <joshc@codeaurora.org> [vmulukut: upstream merge conflict fixups] Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org> [dkeitel: upstream merge conflict fixups] Signed-off-by: David Keitel <dkeitel@codeaurora.org>
* cpuidle: lpm-levels: Fixes for clockevents_notifyMahesh Sivasubramanian2016-03-22
| | | | | | | | The use of clockevents_notify is deprcated and targeted APIs are used instead of the clockevents_notify callbacks. Switch broadcast timer notifications to tick_broadcast_enter and tick_broadcast_exit. Change-Id: I3441873eb4009b105db04f4a18d28ae9ccd07e95
* cpu_pm: Add level to the cluster pm notificationMurali Nalajala2016-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | Cluster pm notifications without level information increases difficulty and complexity for the registered drivers to figure out when the last coherency level is going into power collapse. Send notifications with level information that allows the registered drivers to easily determine the cluster level that is going in/out of power collapse. There is an issue with this implementation. GIC driver saves and restores the distributed registers as part of cluster notifications. On newer platforms there are multiple cluster levels are defined (e.g l2, cci etc). These cluster level notofications can happen independently. On MSM platforms GIC is still active while the cluster sleeps in idle, causing the GIC state to be overwritten with an incorrect previous state of the interrupts. This leads to a system hang. Do not save and restore on any L2 and higher cache coherency level sleep entry and exit. Change-Id: I31918d6383f19e80fe3b064cfaf0b55e16b97eb6 Signed-off-by: Archana Sathyakumar <asathyak@codeaurora.org> Signed-off-by: Murali Nalajala <mnalajal@codeaurora.org> Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org> Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
* soc: qcom: idle: Snapshot of idle/sleep driver as of msm-3.18Mahesh Sivasubramanian2016-03-22
| | | | | | | This is a snapshot of the Sleep driver and realted functionality as of e70ad0cd5efdd9dc91a77dcdac31d6132e1315c1 on msm-3.18 branch Change-Id: I98fec26849898c5c66abbb1b094439780c23964d
* soc: qcom: mpm-of: Add gpio_arch_extn supportMahesh Sivasubramanian2016-03-22
| | | | | | | | To wake up from system sleep, the MPM driver needs to keep track of enabled GPIO interrupts. Add gpio_arch_extn to support monitoring of GPIO interrupts Change-Id: If97f566e11eaab452e4b55db1a05e5457f1a8d3f Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
* Reverting "irqchip: gic: Drop support for gic_arch_extn"Marc Zyngier2016-03-22
| | | | | | | | MSM chipsets rely on arch_extn to get the necessary functionality. Add them until a upstream solution can be arrived at. Change-Id: I773a3e82ca81b1c49cf2581f5288cacaeb6c6db0 Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
* irqchip: msm: Add snaphot of msm irq driverAbhimanyu Kapur2016-03-22
| | | | | | | | | | | | | | | Snapshot the msm irq driver as of msm-3.14 commit: 3bc54cf86bdc7affa7cd4bf7faa3c57fe8f8819d (Merge "msm: camera: Add dummy sub module in sensor pipeline") Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org> Conflicts: drivers/irqchip/Kconfig drivers/irqchip/Makefile Change-Id: Idf5284906af960fe03dcf881df1b57149c8e6ad8
* usb: dwc3: Add support for POR upon composition switchHemant Kumar2016-03-22
| | | | | | | | | | | | | | Composition switch to GSI transport based composition from another GSI transport based composition requires power on reset of USB controller to synchronize operation with USB wrapper for GSI. Specifically GSI_EN bit cannot be cleared without performing usb controller reset. Hence introduce gadget restart operation to simulate vbus off and vbus on and perform this operation from gsi bind config. Change-Id: Ie4695807c73c2d14c0d9e17c486f34a90fd93ddb Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
* usb: dwc3: Adjust TX FIFO allocationJack Pham2016-03-22
| | | | | | | | | | | | Optimize the dwc3_gadget_resize_tx_fifos() function to better allocate the per-endpoint FIFOs depending on a number of factors: - super- or non-super speed - bulk/isoc with bursting - reduced RAM (when QDSS uses some internal RAM) - endpoint enabled in composition Signed-off-by: Jack Pham <jackp@codeaurora.org>
* usb: gadget: Add udc_priv member to struct usb_requestJack Pham2016-03-22
| | | | | | | This member is used to store additional private flags for BAM-enabled functions to pass information to the UDC. Signed-off-by: Jack Pham <jackp@codeaurora.org>
* USB: phy: Add support to invoke DP and DM sourcing and pulsingMayank Rana2016-03-22
| | | | | | | | | | | | | | This change adds support for sourcing and pulsig with DP/DM using QUSB PHY. This change uses POWER_SUPPLY_PROP_DP_DM power supply property with different values to achieve the same. This change is a cherry-pick of msm-3.18 commit 55b93e2506d5399b1b0ee4a1b173168fb8026548 ("USB: Add support to invoke DP and DM sourcing and pulsing") with only the change from include/linux/usb/phy.h Signed-off-by: Mayank Rana <mrana@codeaurora.org> Signed-off-by: Jack Pham <jackp@codeaurora.org>
* usb: phy: Add new OTG state OTG_STATE_B_SUSPENDEDHemant Kumar2016-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This state is used to handle:- - Bus suspend followed by cable disconnect: pm usage count is incremented upon cable connect. Upon bus suspend, suspend interrupt kicks in otg state machine which moves device state to OTG_STATE_B_SUSPENDED from OTG_STATE_B_PERIPHERAL and decrements pm usage count. Upon cable unplug additional decrement of pm usage count is prevented. This state also takes care the handling of cable unplug followed by bus suspend interrupt. - Host initiated resume after bus suspend: Being in OTG_STATE_B_SUSPENDED after bus suspend, upon host initiated resume, wakeup interrupt kicks in otg state machine which moves device to OTG_STATE_B_PERIPHERAL state by incrementing pm usage count. - PC reboot with cable plugged in: After PC shutdown device goes to OTG_STATE_B_SUSPENDED state. After PC start power event irq thread kicks in otg state machine to move device to OTG_STATE_B_PERIPHERAL state and increments pm usage count. - Composition switch after bus suspend: dwc3_gadget_pullup() kicks in otg state machine to move device state from OTG_STATE_B_SUSPENDED to OTG_STATE_B_PERIPHERAL and increments pm usage count to prevent runtime suspend during device enumeration. Also, remove pm_runtime_set_active() which sets the PM runtime stauts as active to avoid pm_runtime_get_sync() failures which explicitly checks for runtime pm status. For example, if status is active, pm_runtime_get_sync() will just increments the counter without actually resuming the device. Change-Id: Id33b81911ef3894a00802b3e553840b9447f6269 Signed-off-by: Hemant Kumar <hemantk@codeaurora.org> [jackp@codeaurora.org: cherry-pick only phy.h and common.c] Signed-off-by: Jack Pham <jackp@codeaurora.org>
* usb: phy: Expose new PHY callback for performing PHY resetMaya Erez2016-03-22
| | | | | | | | | | Add a new PHY callback for performing PHY reset, which is required by some targets during their initialization sequence. As usb_phy_reset name was already in use by local msm PHY APIs, change the previous usb_phy_reset to msm_usb_phy_reset. Change-Id: Ieb5099d12e107c123d8889058aa564d0b091d6f9 Signed-off-by: Maya Erez <merez@codeaurora.org>
* usb: dwc3: msm: Add snapshot of DWC3 MSM driversJack Pham2016-03-22
| | | | | | | | | | | | Add dwc3-msm.c and associated driver files. Note these are based on the downstream implementation and will coexist (for the time being) with dwc3-qcom glue driver until they can eventually be merged. This snapshot is taken as of msm-3.18 commit a3883c356869 (Merge "input: touchscreen: correct condition checks in ITE tech touch driver") Signed-off-by: Jack Pham <jackp@codeaurora.org>
* net: Add the get current NAPI context APISubash Abhinov Kasiviswanathan2016-03-22
| | | | | | | | | | | | | | | | Commit 69235aa80090 ("net: Remove the get current NAPI context API") removed the definition of get_current_napi_context() as rmnet_data was no longer using it. However, the rmnet_data change to use its NAPI in multiple contexts was prone to race in hotplug scenarios. Add back get_current_napi_context() and current_napi to the softnet_data struct CRs-Fixed: 966095 Change-Id: I7cf1c5e39a5ccbd7a74a096b11efd179a4d0d034 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
* mm: highmem: Add definitions for kmap_atomic_flush_unusedLaura Abbott2016-03-22
| | | | | | | | | | kmap_flush_unused does not flush kmap_atomic mappings which are handled separately. Architectures may have use cases to require these to be flushed. Add an option to let architectures define kmap_atomic flushing to get rid of extra mappings. Change-Id: I5a338ed9e215f0f0ad3ab58a3066d2f4c8ce3ba7 Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
* iommu: Add support for delayed unmapping of ion/dma_buf bufferOlav Haugan2016-03-22
| | | | | | | | | | Add new APIs to allow clients to map and unmap dma_buffers created by ION. The call to the unmap API will not actually do the unmapping from the IOMMU. The unmapping will occur when the ION/dma_buf buffer is actually freed. This behavior can be disabled with DMA_ATTR_NO_DELAYED_UNMAP Change-Id: Ic4dbd3b582eb0388020c650cab5fbb1dad67ae81 Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
* ion: add snapshot of ion support for MSMKumar Gala2016-03-22
| | | | | | | | | | | | | | | | This is a snapshot of the ION support as of msm-3.10 commit acdce027751d5a7488b283f0ce3111f873a5816d (Merge "defconfig: arm64: Enable ONESHOT_SYNC for msm8994") In addition, comment out the shrinker code and skip-zeroing bits as they aren't yet in the tree. Change-Id: Id9e1e7fa4c35ce5a9f9348837f05f002258865cf Signed-off-by: Kumar Gala <galak@codeaurora.org> [mitchelh: dropped MSM changes to ion_chunk_heap, dropped MSM changes to ion_carveout_heap] Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
* arm: Add option to skip buffer zeroingLaura Abbott2016-03-22
| | | | | | | | | | | | | The DMA framework currently zeros all buffers because it (righfully so) assumes that drivers will soon need to pass the memory to a device. Some devices/use case may not require zeroed memory and there can be an increase in performance if we skip the zeroing. Add a DMA_ATTR to allow skipping of DMA zeroing. Change-Id: Id9ccab355554b3163d8e7eae1caa82460e171e34 Signed-off-by: Laura Abbott <lauraa@codeaurora.org> [mitchelh: dropped changes to arm32] Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
* mm: Update is_vmalloc_addr to account for vmalloc savingsSusheel Khiani2016-03-22
| | | | | | | | | | | | | | is_vmalloc_addr currently assumes that all vmalloc addresses exist between VMALLOC_START and VMALLOC_END. This may not be the case when interleaving vmalloc and lowmem. Update the is_vmalloc_addr to properly check for this. Correspondingly we need to ensure that VMALLOC_TOTAL accounts for all the vmalloc regions when CONFIG_ENABLE_VMALLOC_SAVING is enabled. Change-Id: I5def3d6ae1a4de59ea36f095b8c73649a37b1f36 Signed-off-by: Susheel Khiani <skhiani@codeaurora.org>
* msm: Allow lowmem to be non contiguous and mixedSusheel Khiani2016-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | Currently on 32 bit systems, virtual space above PAGE_OFFSET is reserved for direct mapped lowmem and part of virtual address space is reserved for vmalloc. We want to optimize such as to have as much direct mapped memory as possible since there is penalty for mapping/unmapping highmem. Now, we may have an image that is expected to have a lifetime of the entire system and is reserved in physical region that would be part of direct mapped lowmem. The physical memory which is thus reserved is never used by Linux. This means that even though the system is not actually accessing the virtual memory corresponding to the reserved physical memory, we are still losing that portion of direct mapped lowmem space. So by allowing lowmem to be non contiguous we can give this unused virtual address space of reserved region back for use in vmalloc. Change-Id: I980b3dfafac71884dcdcb8cd2e4a6363cde5746a Signed-off-by: Susheel Khiani <skhiani@codeaurora.org>
* mm: page-writeback: fix page state calculation in throttle_vm_writeoutVinayak Menon2016-03-22
| | | | | | | | | | It was found that a number of tasks were blocked in the reclaim path (throttle_vm_writeout) for seconds, because of vmstat_diff not being synced in time. Fix that by adding a new function global_page_state_snapshot. Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org> Change-Id: Iec167635ad724a55c27bdbd49eb8686e7857216c
* mm: swap: don't delay swap free for fast swap devicesVinayak Menon2016-03-22
| | | | | | | | | | | | | | | | | | | | | | There are couple of issues with swapcache usage when ZRAM is used as swap device. 1) Kernel does a swap readahead which can be around 6 to 8 pages depending on total ram, which is not required for zram since accesses are fast. 2) Kernel delays the freeing up of swapcache expecting a later hit, which again is useless in the case of zram. 3) This is not related to swapcache, but zram usage itself. As mentioned in (2) kernel delays freeing of swapcache, but along with that it delays zram compressed page free also. i.e. there can be 2 copies, though one is compressed. This patch addresses these issues using two new flags QUEUE_FLAG_FAST and SWP_FAST, to indicate that accesses to the device will be fast and cheap, and instructs the swap layer to free up swap space agressively, and not to do read ahead. Change-Id: I5d2d5176a5f9420300bb2f843f6ecbdb25ea80e4 Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
* mm: vmpressure: scale pressure based on reclaim contextVinayak Menon2016-03-22
| | | | | | | | | | | | | | | | | | | | The existing calculation of vmpressure takes into account only the ratio of reclaimed to scanned pages, but not the time spent or the difficulty in reclaiming those pages. For e.g. when there are quite a number of file pages in the system, an allocation request can be satisfied by reclaiming the file pages alone. If such a reclaim is successful, the vmpressure value will remain low irrespective of the time spent by the reclaim code to free up the file pages. With a feature like lowmemorykiller, killing a task can be faster than reclaiming the file pages alone. So if the vmpressure values reflect the reclaim difficulty level, clients can make a decision based on that, for e.g. to kill a task early. This patch monitors the number of pages scanned in the direct reclaim path and scales the vmpressure level according to that. Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org> Change-Id: I6e643d29a9a1aa0814309253a8b690ad86ec0b13
* mm: vmpressure: allow in-kernel clients to subscribe for eventsVinayak Menon2016-03-22
| | | | | | | | | | | | | | Currently, vmpressure is tied to memcg and its events are available only to userspace clients. This patch removes the dependency on CONFIG_MEMCG and adds a mechanism for in-kernel clients to subscribe for vmpressure events (in fact raw vmpressure values are delivered instead of vmpressure levels, to provide clients more flexibility to take actions on custom pressure levels which are not currently defined by vmpressure module). Change-Id: I38010f166546e8d7f12f5f355b5dbfd6ba04d587 Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
* drivers: dma-removed: introduce no-map-fixupShiraz Hashim2016-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For some use cases, it is not known beforehand, how much removed (carve-out) region size must be reserved. Hence the reserved region size might need to be adjusted to support varying use cases. In such cases maintaining different device tree configurations to support varying carve-out region size is difficult. Introduce an optional device tree property, to reserved-memory, "no-map-fixup" which works in tandem with "removed-dma-pool" compatibility that tries to shrink and adjust the removed area on very first successful allocation. At end of which it returns the additional (unused) pages from the region back to the system. Point to note is this that this adjustment is done on very first allocation and thereafter the region size is big enough only to support maximum of first allocation request size. This fixup is attempted only once upon first allocation and never after that. Clients can allocate and free from this region as any other dma region. As the description suggests this type of region is specific to certain special needs and is not to be used for common use cases. Change-Id: I31f49d6bd957814bc2ef3a94910425b820ccc739 Signed-off-by: Shiraz Hashim <shashim@codeaurora.org>
* drivers: Add dma removed opsLaura Abbott2016-03-22
| | | | | | | | | | The current DMA coherent pool assumes that there is a kernel mapping at all times for hte entire pool. This may not be what we want for the entire times. Add the dma_removed ops to support this use case. Change-Id: Ie4f1e9bdf57b79699fa8fa7e7a6087e6d88ebbfa Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
* mm: Add is_cma_pageblock definitionLaura Abbott2016-03-22
| | | | | | | | Bring back the is_cma_pageblock definition for determining if a page is CMA or not. Change-Id: I39fd546e22e240b752244832c79514f109c8e84b Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
* mm, oom: make dump_tasks publicLiam Mark2016-03-22
| | | | | | | | Allow other functions to dump the list of tasks. Useful for when debugging memory leaks. Change-Id: I76c33a118a9765b4c2276e8c76de36399c78dbf6 Signed-off-by: Liam Mark <lmark@codeaurora.org>