Commit graph

570454 commits

Author SHA1 Message Date
Vinayak Menon
350c68c124 mm: swap_ratio: bail out if there aren't any other swap device
It is pointless to calculate the swap ratio when there is only
one swap device in the group. Moreover the existing code would
result in a spinlock recursion because of not taking this into
consideration. Interestingly, this check is already performed
in swap_ratio_slow by this piece of code

if (&(*si)->avail_list == plist_last(&swap_avail_head)) {
	/* just to make skip work */
	n = *si;
	ret = -ENODEV;
	goto skip;
}

But there is window where we drop the swap_avail_lock before
invoking swap_ratio() and take it back again in swap_ratio_slow.
In this period the si can get removed from swap_avail_head,
resulting in the failure of above logic. So recheck again.

Similarly, bail out from swap_ratio() if the sysctl is disabled,
and thus avoiding overhead of taking unnecessary locks.

Change-Id: I81a9dd61d24b7da55d5341c48a1f71d2b4b1978d
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
2016-05-31 15:23:38 -07:00
Vinayak Menon
44bd107fc9 mm: vmscan: fix the page state calculation in too_many_isolated
It is observed that sometimes multiple tasks get blocked in
the congestion_wait loop below, in shrink_inactive_list.

(__schedule) from [<c0a03328>]
(schedule_timeout) from [<c0a04940>]
(io_schedule_timeout) from [<c01d585c>]
(congestion_wait) from [<c01cc9d8>]
(shrink_inactive_list) from [<c01cd034>]
(shrink_zone) from [<c01cdd08>]
(try_to_free_pages) from [<c01c442c>]
(__alloc_pages_nodemask) from [<c01f1884>]
(new_slab) from [<c09fcf60>]
(__slab_alloc) from [<c01f1a6c>]

In one such instance, zone_page_state(zone, NR_ISOLATED_FILE)
had returned 14, zone_page_state(zone, NR_INACTIVE_FILE)
returned 92, and the gfp_flag was GFP_KERNEL which resulted
in too_many_isolated to return true. But one of the CPU pageset
vmstat diff had NR_ISOLATED_FILE as -14. As there weren't any more
update to per cpu pageset, the threshold wasn't met, and the
tasks were blocked in the congestion wait.

This patch uses zone_page_state_snapshot instead, but restricts
its usage to avoid performance penalty.

Change-Id: Iec767a548e524729c7ed79a92fe4718cdd08ce69
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
2016-05-31 15:23:28 -07:00
Amir Samuelov
eaee620aa2 ion: msm: add Secure Processor heap id
The Secure Processor Subsystem (SPSS) shall use its own ION heap
for allocation of memory shared between HLOS Applications
and SPSS Applications.

Change-Id: I4345d14dc22ddbdc34ff98b7b16719ba760951df
Signed-off-by: Amir Samuelov <amirs@codeaurora.org>
2016-05-31 15:23:16 -07:00
Satya Durga Srinivasu Prabhala
a45a1c4c78 arm64: defconfig: update config options for msmcortex_defconfig
Disable unnecessary options like KSM, ATA, VIRTUALIZATION etc.,
and enable options like IRQ_TIME_ACCOUNTING, CGROUPS, ZRAM etc.,
to match with msm_defconfig.

CRs-Fixed: 1021169
Change-Id: I11143ca9beae526c80c8b94a81c2369a7c489d11
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-05-31 15:23:05 -07:00
Aravind Venkateswaran
b8dbd377af msm: mdss: dsi: enable additional clocks for register access on msmcobalt
MMMS mnoc_ahb clock needs to be enabled prior to enabling the mdss_ahb
clock on msmcobalt as there is a core fsm dependency between these
clocks.

Change-Id: I475b44619b68e731abc8b1a91a214c6cdf8cfc5e
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
2016-05-31 15:22:52 -07:00
Tapas Kumar Kundu
2caa570df2 defconfig: msmcortex: Enable performance driver
This module provides support to userspace entity for hotplugging
and setting cpufreq policy min/max limits. It can also detect
cpu/io workload and notify userspace via sysfs nodes.

A userspace entity can specify a CPU mask and the number of CPUs
it wants online within that mask and this module will try to make
a best effort to keep those many CPUs online. Userspace can also
specify the min and max limits on CPUs instead of writing to the
scaling_min/max nodes from sysfs so that if any CPU is offline
this module maintains a vote for it which is applied
once the CPU comes back online.

A userspace entity can also set threshold value in sysfs nodes of
this module for cpu/io workload detection and this module can notify
userspace entity when that crietia is met via sysfs nodes.

Change-Id: I2c92b689ae49af85489dbf9a6aef196f4f6abf4b
Signed-off-by: Tapas Kumar Kundu <tkundu@codeaurora.org>
2016-05-31 15:22:41 -07:00
Skylar Chang
1af44bbb2c msm: ipa: add support for SMMU fastpath
Add support for SMMU fast path configuration to allow
efficient buffer DMA mapping/unmapping.

CRs-Fixed: 1014404
Change-Id: Iaaa373db29d8b53e93ae1d3bf455ee066ed90dfd
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
2016-05-27 14:55:38 -07:00
David Collins
7023370fd1 defconfig: msmcortex: enable QPNP temperature alarm driver
Enable the QPNP temperature alarm driver so that software can
monitor the PMIC die temperature of the PMICs found on MSMCOBALT
boards.

Change-Id: I5c9e0bcb5bb7646a720c32af0b15ca5fa2e36b8f
CRs-Fixed: 1019272
Signed-off-by: David Collins <collinsd@codeaurora.org>
2016-05-27 14:55:25 -07:00
David Collins
2b73bee1c4 ARM: dts: msm: add TEMP_ALARM device for PMIC PM8005
Add a temperature alarm device for the PM8005 PMIC in order to
monitor the PMIC die temperature.

Change-Id: If0a02f211243a6c8f9c771f20590c0251726425b
CRs-Fixed: 1019272
Signed-off-by: David Collins <collinsd@codeaurora.org>
2016-05-27 14:55:13 -07:00
Gilad Landau
2e617a431e ARM: dts: msm: add IPA ram mapping for msmcobalt
Add an array of unsigned integers representing addresses and sizes which
are used by the IPA driver to access IPA RAM.

Signed-off-by: Gilad Landau <glandau@codeaurora.org>
Change-Id: I02b72e8c16416ea08b143609e9b16196fb3a2879
2016-05-27 14:55:00 -07:00
Vishnuvardhan Prodduturi
d5610e32cf msm: mdss: update licence for external display header to GPLv2
Update the license for external display header file to GPLv2.

Change-Id: I3743cefdf2469f05535f73691da0939dcddf6d83
Signed-off-by: Vishnuvardhan Prodduturi <vproddut@codeaurora.org>
2016-05-27 14:54:46 -07:00
Shashank Mittal
888f1317a9 coresight-dummy: add dummy source driver support
Add dummy Coresight source driver. This driver can be used for devices
that are controlled by other subsystems but rely on Linux drivers to
configure rest of the trace path.

Change-Id: I7b68202fc6d7958fcf7ff933d7eed7e19c958ab0
Signed-off-by: Shashank Mittal <mittals@codeaurora.org>
2016-05-27 14:54:32 -07:00
Manoj Prabhu B
2da25adb21 diag: Fix for possible memory corruption
When peripheral supporting more ssids than apps
in a given table entry needs reallocation.
No reallocation causes slab-out-of-bounds reads seen as
bad access/memory corruption.
This patch fixes memory availability limitation.

KASAN Report
27.044086:<6> ===========================================================
27.044108:<6> BUG: KASAN: slab-out-of-bounds in
diag_cntl_process_read_data+0xeb0/0x10d4 at addr 0xffffffc033997e6c
27.044112:<6> Read of size 4 by task kworker/u8:9/671
27.044117:<6> ===========================================================
27.044123:<6> BUG kmalloc-128 (Tainted: G B W):kasan: bad access detected
27.044126:<6> -----------------------------------------------------------
27.044136:<6> INFO: Allocated in d
	iag_create_msg_mask_table_entry+0x10c/0x148 age=1444 cpu=3 pid=1
27.044147:<6> alloc_debug_processing+0x118/0x170
27.044153:<6> __slab_alloc.isra.20.constprop.22+0x2a4/0x3a0
27.044159:<6> __kmalloc+0xe8/0x27c
27.044165:<6> diag_create_msg_mask_table_entry+0x108/0x148
27.044170:<6> diag_masks_init+0x30c/0xa1c
27.044184:<6> diagchar_init+0x624/0xa4c
27.044190:<6> do_one_initcall+0x250/0x278
27.044198:<6> kernel_init_freeable+0x1c4/0x268
27.044207:<6> kernel_init+0x10/0xd8
27.044212:<6> ret_from_fork+0xc/0x30
27.044219:<6> INFO: Slab 0xffffffba47b79720 objects=16 used=16 fp=0x
	(null) flags=0x4080
27.044224:<6> INFO: Object 0xffffffc033997e00 @offset=7680
	fp=0xffffffc033997c00
27.044232:<6> Bytes b4 0xffffffc033997df0: 5a 5a 5a 5a 5a 5a 5a 5a 5a
	5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
27.044238:<6> Object 0xffffffc033997e00: 1f 00 00 00 1f 00 00 00 1f
	00 00 00 1f 00 00 00  ................
27.044244:<6> Object 0xffffffc033997e10: 1f 00 00 00 1f 00 00 00 1f
	00 00 00 1f 00 00 00  ................
27.044249:<6> Object 0xffffffc033997e20: 1f 00 00 00 1f 00 00 00 1f
	00 00 00 1f 00 00 00  ................
27.044255:<6> Object 0xffffffc033997e30: 1f 00 00 00 1f 00 00 00 1f
	00 00 00 1f 00 00 00  ................
27.044260:<6> Object 0xffffffc033997e40: 1f 00 00 00 1f 00 00 00 1f
	00 00 00 1f 00 00 00  ................
27.044266:<6> Object 0xffffffc033997e50: 1f 00 00 00 1f 00 00 00 1f
	00 00 00 1f 00 00 00  ................
27.044271:<6> Object 0xffffffc033997e60: 1f 00 00 00 1f 00 00 00 1f
	00 00 00 00 00 00 00  ................
27.044277:<6> Object 0xffffffc033997e70: 00 00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00  ................
27.044283:<6> Redzone 0xffffffc033997e80: cc cc cc cc cc cc cc cc
                      ........
27.044288:<6> Padding 0xffffffc033997fc0: 5a 5a 5a 5a 5a 5a 5a 5a
	5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
27.044294:<6> Padding 0xffffffc033997fd0: 5a 5a 5a 5a 5a 5a 5a 5a
	5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
27.044299:<6> Padding 0xffffffc033997fe0: 5a 5a 5a 5a 5a 5a 5a 5a
	5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
27.044305:<6> Padding 0xffffffc033997ff0: 5a 5a 5a 5a 5a 5a 5a 5a
	5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
27.044315:<6> CPU: 1 PID: 671 Comm: kworker/u8:9
	Tainted: G    B   W  3.18.20-g2c703ee #2
27.044319:<6> Hardware name: Qualcomm Technologies, Inc.
	MSM 8996 v3.0 + PMI8994 MTP (DT)
27.044332:<2> Workqueue: DIAG_SOCKMODEM_CNTL socket_read_work_fn
27.044335:<6> Call trace:
27.044343:<2> [<ffffffc00008a168>] dump_backtrace+0x0/0x1c4
27.044350:<2> [<ffffffc00008a33c>] show_stack+0x10/0x1c
27.044359:<2> [<ffffffc00129a850>] dump_stack+0x74/0xc8
27.044366:<2> [<ffffffc000213d8c>] print_trailer+0x19c/0x1b0
27.044372:<2> [<ffffffc000214788>] object_err+0x3c/0x50
27.044378:<2> [<ffffffc000219918>] kasan_report+0x34c/0x504
27.044385:<2> [<ffffffc000218928>] __asan_load4+0x20/0x74
27.044392:<2>[<ffffffc0006f1594>] diag_cntl_process_read_data+0xeac/0x10d4
27.044399:<2> [<ffffffc0006e67f0>] diagfwd_cntl_read_done+0x78/0xf0
27.044407:<2> [<ffffffc0006e7b38>] diagfwd_channel_read_done+0x154/0x184
27.044414:<2> [<ffffffc0006ebdd4>] diag_socket_read+0x480/0x534
27.044420:<2> [<ffffffc0006e85cc>] diagfwd_channel_read+0x348/0x368
27.044427:<2> [<ffffffc0006eabc4>] socket_read_work_fn+0x20/0x30
27.044437:<2> [<ffffffc0000cabf8>] process_one_work+0x394/0x64c
27.044444:<2> [<ffffffc0000cbfb8>] worker_thread+0x3bc/0x550
27.044450:<2> [<ffffffc0000d256c>] kthread+0x180/0x194
27.044753:<6> coresight-tmc 3028000.tmc: TMC aborted
27.044765:<6> Kernel panic - not syncing: kasan: bad access detected

CRs-Fixed: 993725
Change-Id: I90a6a560900d6c1c3694cce460ae8f772dc3434e
Signed-off-by: Manoj Prabhu B <bmanoj@codeaurora.org>
2016-05-27 14:54:21 -07:00
David Collins
85ba07bc3f ARM: dts: msm: add TEMP_ALARM device for PMIC PMICOBALT
Add a temperature alarm device for the PMICOBALT PMIC in order
to monitor the PMIC die temperature.

Change-Id: I494af44d5107603b94fb06a282246c091ebd429f
CRs-Fixed: 1019272
Signed-off-by: David Collins <collinsd@codeaurora.org>
2016-05-27 14:54:09 -07:00
David Collins
540af9c681 ARM: dts: msm: add TEMP_ALARM device for PMIC PMCOBALT
Add a temperature alarm device for the PMCOBALT PMIC in order
to monitor the PMIC die temperature.

Change-Id: Ifaf2980cfc38083f450fa383d9c91777d2297415
CRs-Fixed: 1019272
Signed-off-by: David Collins <collinsd@codeaurora.org>
2016-05-27 14:54:06 -07:00
David Collins
518ffca094 thermal: qpnp-temp-alarm: add support for GEN2 PMIC peripherals
Add support for the TEMP_ALARM GEN2 PMIC peripheral subtype.  The
GEN2 subtype adds clock rate control and defines an over
temperature state with hysteresis instead of stage in the status
register.  There are two GEN2 states corresponding to stages 1
and 2.

Change-Id: Ic4ad048259eb3a356333e0529d52f39c39fc915f
CRs-Fixed: 1019272
Signed-off-by: David Collins <collinsd@codeaurora.org>
2016-05-27 14:53:53 -07:00
Lior David
f9f1758723 wil6210: add oob_mode module parameter
Add module parameter oob_mode. Takes effect the next time
the interface is brought up and FW is loaded. Puts the FW
in special "out of the box" (OOB) mode which is used for
diagnostics and certification.

Change-Id: I561e4ab26c8ac74d6fbcf19492b01751033b64d9
Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Git-commit: 1f1a361abf73edfb94ca010c51587de378bc7c68
Git-repo: https://github.com/kvalo/ath.git
CRs-Fixed: 982931
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-27 14:53:41 -07:00
Lior David
097e60bd8a wil6210: pass is_go flag to firmware
When starting a PCP, pass the is_go flag to firmware in
wmi_pcp_start. This flag indicates whether we started
a PCP which is also a GO(P2P group owner) or just a regular
PCP.

Change-Id: I619abba9ef6e6fda3ea5fecd5ee87652b8ef37a5
Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Git-commit: b4944f2c081ea0e2fa7bc8bb510e1e6e5667f30b
Git-repo: https://github.com/kvalo/ath.git
CRs-Fixed: 982931
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-27 14:53:25 -07:00
Lior David
6237ecf917 wil6210: fix no_fw_recovery mode with change_virtual_intf
When FW crashed with no_fw_recovery mode enabled, user space
could still call wil_cfg80211_change_iface quickly to change
interface type, and this would cause recovery to proceed and
FW crash logs may be lost.
Fix this problem by not resetting the FW in case no_fw_recovery
is enabled.

Change-Id: I139a5e846555e30666f96675400c6db6e1999e05
Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
git-commit: 375a173fc1524eb569c7e8f9cf331126a9d29033
Git-repo: https://github.com/kvalo/ath.git
CRs-Fixed: 982931
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-27 14:53:13 -07:00
Lior David
f696bf2b3c wil6210: clean ioctl debug message
Fix a debug message related to IOCTL that was incorrectly logged
with the MISC category, and move it inside wil_ioctl so it will
always be logged even if we call wil_ioctl from other places.

Change-Id: I3cf69b18f195e5db01a1f5832013342c9f481286
Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Git-commit: 6777e71ca91ea488488362a919900488e0ade3f2
Git-repo: https://github.com/kvalo/ath.git
CRs-Fixed: 982931
[merez@codeaurora.org: fixed conflict due to android private ioctl]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-27 14:53:02 -07:00
Lior David
640664b4d9 wil6210: fix race conditions in p2p listen and search
Fix 2 race conditions found during test runs of P2P discovery:
1. Because wil_p2p_cancel_listen was not protected, user space
could start a new P2P listen/search before wmi_stop_discovery
completed. This caused a crash in the firmware.
2. In P2P listen, when listen timer expires and user space calls
cancel_remain_on_channel at the same time, code could send the
cfg80211_remain_on_channel_expired notification twice.

Added protections with wil->mutex to several places that call
wmi_stop_discovery.

Change-Id: I692113c222f278d6c4d4c282b4df0e28b0933556
Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Git-commit: 280ab987ef21d1c196acb3af4663a99f94d9da00
Git-repo: https://github.com/kvalo/ath.git
CRs-Fixed: 982931
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-27 14:52:50 -07:00
Lior David
9be37d74ff wil6210: P2P_DEVICE virtual interface support
Added support for the P2P_DEVICE virtual interface. This interface
is intended for P2P management operations such as discovery and
GO negotiation. Normally it is implemented by drivers to allow
a separate interface for P2P management with its own MAC address,
but for 11ad drivers it is needed to support P2P search, since it
cannot otherwise be separated from normal scan.

Since we only support a single interface/MAC address, we can't
easily separate between primary and P2P_DEVICE interfaces.
For example when a management packet arrives we can't tell for
which interface it is intended. To work around this, we store
a pointer to the interface where the last "radio operation" was
triggered such as scan or remain on channel, and we forward
management packets and scan results to this interface.

Change-Id: Ief04b007c0507f9240d8f0b02b98fe7712213a0e
Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Git-commit: 4332cac17b5c0cb80d8b99fda33a0faad3238b0e
Git-repo: https://github.com/kvalo/ath.git
CRs-Fixed: 982931
[merez@codeaurora.org: conflict in wil_cfg80211_add_iface definition]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-27 14:52:36 -07:00
Dedy Lansky
27342c0ece wil6210: p2p initial support
supporting p2p_find, p2p_listen and p2p_connect
Use updated cfg80211_get_bss API (additional argument)

Change-Id: I847ccd10da574bdc83c7eec8c8315c4e0d207d8b
Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com>
Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Git-commit: e6d68341e7286386451adf14cebb635a52b0effe
Git-repo: https://github.com/kvalo/ath.git
CRs-Fixed: 982931
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-27 14:52:25 -07:00
Chandan Uddaraju
b96f15ac07 clk: msm: mdss: fix DP register configurations
This change provides the below updates:

- Current DP PLL driver uses the pll_base and the base
  address for the TXn registers instead of phy_base address.
  Fix this by using the correct base address.

- Disable handoff for vco_divided_clk
  by implementing handoff function for this clock.

- Update the PLL settings to fix PLL locking issues.

CRs-Fixed: 1009740
Change-Id: Iea46c5b0482bceb841309175ede42ec3be3e20fd
Signed-off-by: Chandan Uddaraju <chandanu@codeaurora.org>
2016-05-27 14:52:13 -07:00
Chandan Uddaraju
d98ad5e9f4 clk: msm: mdss: fix dp_link_2x_clk_mux clock ops for DP PLL on msmcobalt
The DP link clock path in the DSI PLL has a mux clock (dp_link_2x_clk_mux)
which allows the pixel clock to be either sourced out two divider clocks.
In the current code, the ops for this mux clock is overloaded
incorrectly which results in the link clock being always sourced
out of the first divider clock. Fix this by using
the default mux clock ops for this clock.

CRs-Fixed: 1009740
Change-Id: Ie12d5ab272dbd79fe97225864c2360fdde7325a7
Signed-off-by: Chandan Uddaraju <chandanu@codeaurora.org>
2016-05-27 14:52:01 -07:00
Deepak Katragadda
18844f2f20 clk: msm: clock: Add the non_local_control setting for video clocks
The video subcore RCGs should be force enabled during rate
scaling to workaround video firmware potentially disabling
the branch clock at the same time on MSMCOBALT.

CRs-Fixed: 1020896
Change-Id: I45a119591efc36fa05ee7009d938e596b015e70c
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
2016-05-27 14:51:49 -07:00
Deepak Katragadda
a267aef00b clk: msm: clock-local2: Enable sources before force turning on RCG
Make sure that the RCG parents are turned on before force enabling
it and changing its configuration.

CRs-Fixed: 1020896
Change-Id: Ia633c4dcbab62fc6a4407c5896e36a7bbef48579
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
2016-05-27 14:51:38 -07:00
Satya Durga Srinivasu Prabhala
7f67e4650e arm64: defconfig: update config options for msm_defconfig
update config options for msm_defconfig to match with options on 3.18.

CRs-Fixed: 1020931
Change-Id: I3223c1f335e2f0e2b2401a5cd4b961fd5279ac8d
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-05-27 14:51:24 -07:00
Manaf Meethalavalappu Pallikunhi
cc884cf1ed defconfig: msm8996: Enable LMH hardware and interface driver
Enable the LMH hardware and the LMH interface driver for msm8996.
LMH hardware driver interacts with the LMH hardware and
uses the interface driver to register with thermal core.

CRs-Fixed: 1019086
Change-Id: I2d1ed8aa618c4ba8780f55fcc47add10edea3ba9
Signed-off-by: Manaf Meethalavalappu Pallikunhi <manafm@codeaurora.org>
2016-05-27 14:51:12 -07:00
Manaf Meethalavalappu Pallikunhi
bf61f5ba2f defconfig: msm: Enable thermal driver for msm8996
Enable kernel thermal driver for msm8996.
kernel thermal driver can monitor, mitigate and
provide interface to thermal-engine to mitigate.

CRs-Fixed: 1019086
Change-Id: Ifb47f300c4e73f7816f96c061ac5c1829bcd5491
Signed-off-by: Manaf Meethalavalappu Pallikunhi <manafm@codeaurora.org>
2016-05-27 14:51:01 -07:00
Rajesh Bondugula
cd9403e96d msm: camera: sensor: Add support for 3B read
Newer I2C slaves have 3bytes read address.
Add support to read the data from slaves that
support 3 byte address.

CRs-Fixed: 1013787
Change-Id: Ieb0a7aa1b1b5f23220854092dcc2119d29c57146
Signed-off-by: Rajesh Bondugula <rajeshb@codeaurora.org>
2016-05-26 15:30:24 -07:00
Subash Abhinov Kasiviswanathan
c6e1ec80cd net: rmnet_data: Fix use after free when sending MAP command ACK
Following stack trace was seen while doing a data transfer

Unable to handle kernel paging request at virtual address
6b6b6b6b6b6b6ef3
pgd = ffffffc01c7c5000 [6b6b6b6b6b6b6ef3] *pgd=0000000000000000,
*pud=0000000000000000
Internal error: Oops: 96000004 [#1] PREEMPT SMP
Call trace:
[<ffffffc000f669ac>] rmnet_map_command+0x19c/0x238
[<ffffffc000f6504c>] _rmnet_map_ingress_handler+0x3c/0x264
[<ffffffc000f65500>] rmnet_ingress_handler+0x1b4/0x3a4
[<ffffffc000f65704>] rmnet_rx_handler+0x14/0x2c
[<ffffffc000d8b5ac>] __netif_receive_skb_core+0x514/0x71c
[<ffffffc000d8c270>] __netif_receive_skb+0x30/0x98
[<ffffffc000d8d3bc>] process_backlog+0xb0/0x184
[<ffffffc000d8d1f8>] net_rx_action+0xfc/0x210
[<ffffffc00016a2e0>] __do_softirq+0x1c0/0x39c
[<ffffffc00016a824>] irq_exit+0x88/0xf4
[<ffffffc0001565e8>] handle_IPI+0x340/0x4b4
[<ffffffc0001455e8>] gic_handle_irq+0xc4/0xec

This is because an invalid MAP command was received and was freed
and rmnet_data was trying to send the freed skb as an ACK. Fix this
by returning if an invalid MAP command is detected.

CRs-Fixed: 1019188
Change-Id: Ib52e6551ac67215dab2bc5770ddcf037568f8b77
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-05-26 15:30:13 -07:00
Ingrid Gallardo
16ce590689 msm: mdss: fix amortized prefill calculations
Fix wrong calculation for the amortized prefill
parameters to use destination coordiates as well
as adjust ts_count denominators for the correct
units, also make sure vsync clock is enabled.
It was causing problem when feature was enabled.

Change-Id: I62a3bd31997be05181de98307089e2a69d98ab7b
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
2016-05-26 15:30:04 -07:00
Zhen Kong
7d2526e588 defconfig: msmcortex: enable qrng drivers
Enable qrng drivers for msmcortex

Change-Id: I1a8241c1e0a349394351be2ef98381e24f0c4ff4
Signed-off-by: Zhen Kong <zkong@codeaurora.org>
2016-05-26 15:29:54 -07:00
Abhijit Kulkarni
91785c5e5f msm: mdss: Fix qseed3 clk calculation overflow
Use u64 variables to store intermediate results while calculating
mdp clock for qseed3 scaling scenarios, using u32, results in overflow
and incorrect mdp clock setting.

Change-Id: I4fbc9aa1f30d36d35a9ad181185761e697cbbef7
Signed-off-by: Abhijit Kulkarni <kabhijit@codeaurora.org>
2016-05-26 15:29:42 -07:00
Alan Kwong
152fc477d3 ARM: dts: msm: Add v4l2 rotator node to msm8996
Add mdss_rotator node with smmu subnodes.

Change mdss_mdp to interrupt controller so rotator can receive interrupt
routed by mdp handler.

Also, reserve control 4 and writeback 0/1 and their associated mixers
for v4l2 rotator driver.

CRs-Fixed: 1017182
Change-Id: I32f312f11fcbebbff0799120448d6e8f0d9ec98d
Signed-off-by: Alan Kwong <akwong@codeaurora.org>
2016-05-26 15:29:32 -07:00
Abhijit Kulkarni
8da15ab2d0 ARM: msm: dts: fix register dump offsets/ranges for msmcobalt
Fix register offsets for top, ctl_path, qseed3 in reg-dumps for
capture of these registers in ram dump.

Change-Id: I312444176373f73f02aa0ceddf5e114a39702641
Signed-off-by: Abhijit Kulkarni <kabhijit@codeaurora.org>
2016-05-26 15:29:19 -07:00
Abhijit Kulkarni
de49813cce ARM: dts: msm: Support partial goods for msmcobalt
Adding support in mdss and pll drivers for such hardwares where
mdss part is not functional.

CRs-Fixed: 993024
Change-Id: I32b0e57c8e958b7e5f1d647e37e46fda052b3d1e
Signed-off-by: Abhijit Kulkarni <kabhijit@codeaurora.org>
2016-05-26 15:29:09 -07:00
Srivatsa Vaddagiri
e6aae1c3e0 sched: Aggregate for frequency
Related threads in a group could execute on different CPUs and hence
present a split-demand picture to cpufreq governor. IOW the governor
fails to see the net cpu demand of all related threads in a given
window if the threads's execution were to be split across CPUs. That
could result in sub-optimal frequency chosen in comparison to the
ideal frequency at which the aggregate work (taken up by related
threads) needs to be run.

This patch aggregates cpu execution stats in a window for all related
threads in a group. This helps present cpu busy time to governor as if
all related threads were part of the same thread and thus help select
the right frequency required by related threads. This aggregation
is done per-cluster.

Change-Id: I71e6047620066323721c6d542034ddd4b2950e7f
Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
[joonwoop@codeaurora.org: Fixed notify_migration() to hold rcu read
 lock as this version of Linux doesn't hold p->pi_lock when the
 function gets called while keeping use of rcu_access_pointer() since
 we never dereference return value.]
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-05-26 15:28:59 -07:00
Jack Pham
450ba6dd70 usb: pd: Update power_supply type to USB_PD after PD is established
The USB power_supply now allows PROP_TYPE to be modified. Update it
to 'USB_PD' only after PD communication has been established. This
can happen only in a couple places:

   - in sink mode, when a source capabilities message is received

   - in source mode, when GoodCRC is received after sending the
     source capabilities message successfully

Since PD_ACTIVE=1 is required to be set, also update it in source
mode prior to sending out the capabilities, and clear it if all the
attempts fail. Remove the unreachable/dead code found there as well.

Change-Id: I77c5875ee8514395a82fac0109b7cff1d507250b
Signed-off-by: Jack Pham <jackp@codeaurora.org>
2016-05-26 15:27:20 -07:00
Jack Pham
3aff97c7a3 qcom-charger: Don't automatically set USB_PD type when PD_ACTIVE=1
The POWER_SUPPLY_PROP_PD_ACTIVE property is intended to be a flag
set whenever the PD PHY is in use. But this includes attempts to
establish communication, which may involve trying to perform a hard
reset to see if the port partner responds. Thus updating the
psy_desc.type field to 'USB_PD' right when PD_ACTIVE=1 is premature
as the port partner may not be PD-capable and it could be un-set.
Instead allow the PD driver to directly update POWER_SUPPLY_PROP_TYPE
only after it is sure PD communication has succeeded.

Change-Id: Iae6804bcb3121e0852ec5d14d0939623b97a6e67
Signed-off-by: Jack Pham <jackp@codeaurora.org>
2016-05-26 15:27:09 -07:00
Sameer Thalappil
090978665c icnss: Add API to return the CE IRQ number
API retrieves the IRQ number for the CE ID passed.

Change-Id: I87cca1215134e6d406f60d54f6d0430978eeae9c
Signed-off-by: Sameer Thalappil <sameert@codeaurora.org>
2016-05-26 15:26:58 -07:00
Jordan Crouse
d16c4eb687 msm: kgsl: Defer adding the mem entry to a process
If we add the mem entry pointer in the process mem_idr too early
other threads can do operations on the entry by guessing the ID
or GPU address before the object gets returned by the creating
operation.

Allocate an ID for the object but don't assign the pointer until
right before the creating function returns ensuring that another
operation can't access it until it is ready.

CRs-Fixed: 1002974
Change-Id: Ic0dedbadc0dd2125bd2a7bcc152972c0555e07f8
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
2016-05-26 15:26:48 -07:00
Alan Kwong
eb2c3035ea defconfig: msm: sde: Add config for v4l2 sde rotator driver.
Enable v4l2 sde rotator driver, a replacement for mdss rotator driver.

CRs-Fixed: 1017182
Change-Id: I6fc5f90512d8024439d56d7c72ae2160df460f7a
Signed-off-by: Alan Kwong <akwong@codeaurora.org>
2016-05-26 15:25:36 -07:00
Alan Kwong
6c8d6db018 msm: mdss: Export rotator interrupt and share rotator smmu
Existing rotator block is serviced by fbdev rotator driver.
This change enables usermode to use external v4l2 rotator driver by
exporting rotator interrupts (WB0 & WB1) thru interrupt domain,
and share smmu access for writeback and rotator.

mdp_irq_export is only set if has_separate_rotator is specified
in device tree and MDSS version is prior to 2.0.

mdp_irq_export is set to zero otherwise, and will effectively
disable mdp irq export and will introduce only minimal overhead
to interrupt processing.  This is the default behaviour for
MDSS newer than 2.0.

CRs-Fixed: 1017182
Signed-off-by: Alan Kwong <akwong@codeaurora.org>
Change-Id: If634894768b02d124ceab071a9eca1c36f258600
2016-05-26 15:25:23 -07:00
Subbaraman Narayanamurthy
c9e1bc2af4 regulator: labibb: Fix slew rate calculation in LAB/IBB set_voltage
Currently, while setting the voltage on LAB and IBB regulators,
slew rate is always calculated based on the difference between
user specified minimum voltage(min_uV) and the minimum voltage
(min_volt) that can be supported on the regulator based on the
mode it is operating.

However, it should be really calculated based upon the difference
between current voltage and new voltage which will be set. Fix
it. Also, add the missing return -EINVAL to set_voltage of LAB
regulator if min_uV is less than min_volt.

While at it, remove the redundant function name added to the
pr_err() statements in set_voltage callbacks.

CRs-Fixed: 1013913
Change-Id: I9a17c83d6613ff37cede4a7bb52612465e4d0101
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
2016-05-26 15:25:13 -07:00
Skylar Chang
52d3e4b266 msm: ipa3: add support for TX of sk_buff's with paged data
This support is needed to enable GSO (Generic Segmentation
Offload) on msmcobalt.

Change-Id: Id9949bef91835318a7b344753983eea0aeab7bdc
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
2016-05-25 14:23:15 -07:00
Skylar Chang
c2698360a7 ARM: dts: msm: enable WA for IPA channel 20 for msmcobalt
Update IPA node to not not use IPA channel 20 due to hardware limitation.

Change-Id: Id849055526bf70e0cc8161239b4530a7fc575744
CRs-Fixed: 1005061
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
2016-05-25 14:23:05 -07:00
Skylar Chang
026e7f985b msm: ipa3: fix odu debugfs
Fix a bug in IPA ODU where debugfs directory was deleted after
creation.

CRs-Fixed: 1015545
Change-Id: I5aad7032f3f8048216a41765f1cf91fde98f6ade
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
2016-05-25 14:22:55 -07:00
Skylar Chang
1461f9a12d msm: ipa3: WA for incorrect state retention for GSI channel 20
This change in a software workaround for a hardware limitation
to not use GSI channel 20.

CRs-Fixed: 1005061
Change-Id: I4ed9f1c6ad089f80dcd19762fda151ce1572f471
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
2016-05-25 14:22:46 -07:00