Commit graph

564487 commits

Author SHA1 Message Date
Rohit Vaswani
81019a9135 arm64: spinlock: Drop the prfm from arch_spin_trylock
As per ARM the prefetch for store (prfm pstl1strm) in the arch_spin_trylock
routine can lead to some false positives, decreasing the lock performance.
On the Cortex-A57 / Cortex-A53, if the memory type is Shareable, then any
linefill started by a PST (prefetch for store)/PLDW instruction also causes
the data to be invalidated in other cores, so that the line is ready for
writing. This will also clear the exclusive marker associated with that
cache line (clearing the exclusive monitors).
So, in the scenario where we could have multiple cores trying to acquire
exclusive access to a cacheline, the removal of prefetch would help with
potentially increasing the chances of one of the cores making progress.

Example:
struct {
spinlock_t lock;
atomic_t count;
} x;

We have 2 cores trying to run the below code

spin_lock(&x.lock);
atomic_inc(&x.count);
spin_unlock(&x.lock);

lock and count are part of a struct so they fall into the same cacheline.
The lock function uses the trylock mechanism as part of debug spinlock.
1. Core1 has acquired the spinlock and is performing the ldxr, add, strx
loop in atomic_inc.
2. Core2 are trying to acquire the spinlock.

Core1		|    Core2
ldxr		|	|
|		|  prfm pstl1strm
add		|	|
|		|     ldaxr
stxr (fails)	|	|
|		|

Now, the prfm always clears the exclusive marker for the core1 ldxr,
so the stxr always fails. This prevents core1 from making progress and
releasing the spinlock that core2 is waiting for.
This could potentially go on forever and we end up breaking this pattern
if the timing changes or if an interrupt triggers.
This could happen with more cores trying to acquire the spinlock, cause
more prefetches and make the problem worse.
By removing the prfm, we allow the stxr @core1 to suceed and atomic_inc
completes, allowing core1 to unlock the spinlock and let core2 proceed.

Change-Id: I742ab9b6d98aded628e4dcf4a6ec68b8e2a4ec3e
Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
[abhimany: resolve minor merge conflicts]
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
2016-03-22 11:16:33 -07:00
Prasad Sodagudi
805c18d71c lib: spinlock: Trigger a watchdog bite on spin_dump for rwlock
Currently dump_stack is printed once a spin_bug is detected for rwlock.
So provide an options to trigger a panic or watchdog bite for debugging
rwlock magic corruptions and lockups.

Change-Id: I20807e8eceb8b81635e58701d1f9f9bd36ab5877
[abhimany: replace msm with qcom]
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
2016-03-22 11:16:32 -07:00
Rohit Vaswani
77d758e283 lib: spinlock: Cause a watchdog bite on spin_dump
Currently we cause a BUG_ON once a spin_bug is detected, but
that causes a whole lot of processing and the other CPUs would
have proceeded to perform other actions and the state of the system
is moved by the time we can analyze it.
Provide an option to trigger  a watchdog bite instead so that we
can get the traces as close to the issue as possible.

Change-Id: Ic8d692ebd02c6940a3b4e5798463744db20b0026
Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
2016-03-22 11:16:31 -07:00
Rohit Vaswani
a543061653 lib: spinlock_debug: Prevent continuous spin dump logs on panic
Once a spinlock lockup is detected on a CPU, we invoke a Kernel Panic.
During the panic handling, we might see more instances of spinlock
lockup from other CPUs. This causes the dmesg to be cluttered and makes
it cumbersome to detect what exactly happened.
Call spin_bug instead of calling spin_dump directly.

Change-Id: I57857a991345a8dac3cd952463d05129145867a8
Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
2016-03-22 11:16:30 -07:00
Syed Rameez Mustafa
e2cddd1040 kernel/lib: add additional debug capabilites for data corruption
Data corruptions in the kernel often end up in system crashes that
are easier to debug closer to the time of detection. Specifically,
if we do not panic immediately after lock or list corruptions have been
detected, the problem context is lost in the ensuing system mayhem.
Add support for allowing system crash immediately after such corruptions
are detected. The CONFIG option controls the enabling/disabling of the
feature.

Change-Id: I9b2eb62da506a13007acff63e85e9515145909ff
Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
[abhimany: minor merge conflict resolution]
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
2016-03-22 11:16:29 -07:00
Abhimanyu Kapur
e594000013 defconfig: msmcortex: Enable ARM Cortex-A edac support
Enable the error detection and correction driver for
L1/L2 caches on the ARM Cortex-A cpu clusters.

Change-Id: I8dc9e3719ae9868aaee51ef2186e513a3da1a4f7
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
2016-03-22 11:16:29 -07:00
Abhimanyu Kapur
a6aa6045d7 edac: Snapshot arm cortex-a cpu edac driver
Snapshot cortex-a arm cpu edac driver from msm-3.18@
0922caf50f22e751a05e6d613bb1d0c1dc940d7d
("Merge "usb: dwc3-msm: Fix incorrect roles with
multiple instances")
Also fix up ESR macro usage to follow upstream norms.

Change-Id: Ic5498a1ebc9c9d402baf4b839ed8f427e9510083
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
2016-03-22 11:16:28 -07:00
Rohit Vaswani
8469f207b4 edac: Allow the option of creating a deferrable work for polling
EDAC provides a mechanism to poll for errors using a callback function
and uses a delayed timer to schedule it. Provide an option to create
a deferrable timer if the error checking is not worth waking up
the cpu from idle.

Change-Id: Ia25216323eabf7fa4b894897c950414006921f3f
Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
2016-03-22 11:16:27 -07:00
Stepan Moskovchenko
0e0c931df1 edac: Allow panic on correctable errors (CE)
Add an EDAC device flag and associated sysfs entries to
allow an EDAC driver to be configured to panic the kernel
if a correctable error is detected. Though correctable
errors (by definition) have no adverse system effects,
a panic may still be useful, since a correctable error may
be indicative of a marginal system state.

Change-Id: I98921469254aa7b999979c1c7d9186286f982a0c
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
2016-03-22 11:16:26 -07:00
Srinivas Ramana
4a7d6158d6 arm64: Add macro for Cortex A72 primary part number
Add a macro containing the MIDR Primary Part Number value
needed to identify ARM Cortex A72 processors.

Change-Id: I6a0d04930070523c3dba83f3d7869ba75288b531
Signed-off-by: Srinivas Ramana <sramana@codeaurora.org>
[abhimany: resolve minor merge conflicts]
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
2016-03-22 11:16:25 -07:00
Puja Gupta
89ad80b38e ARM: dts: msm: Move SPSS device specific info for MSMCOBALT.
Move SCSR register offsets and bit positions specific to SPSS from
driver to device tree entry.

CRs-Fixed: 972423
Change-Id: I9712cc550b858af54c90ae92c8636e1d37b3f993
Signed-off-by: Puja Gupta <pujag@codeaurora.org>
2016-03-22 11:16:24 -07:00
Avaneesh Kumar Dwivedi
66573349f8 soc: qcom: pil-q6v5: Read the written value back in reset sequence
Read back value of QDSP6SS_MEM_PWR_CTL after writing, to comply with
reset sequence specification.

Change-Id: Ib803656355c4d498c83fe5cd017823afc5db2c60
Signed-off-by: Avaneesh Kumar Dwivedi <akdwived@codeaurora.org>
2016-03-22 11:16:22 -07:00
Avaneesh Kumar Dwivedi
92bec5f61b soc: qcom: pil-q6v5: Add support to read acc register value and override it
Update the reset sequence to read and override acc register based on msm
specific value provided in device tree.

Change-Id: I8ed290f5ab5e48e94ef5c8c91fd1d8f8414e86f7
Signed-off-by: Avaneesh Kumar Dwivedi <akdwived@codeaurora.org>
2016-03-22 11:16:22 -07:00
Puja Gupta
35012c464e soc: qcom: Add generic irq handler for secure processor
This patch adds the code to handle watchdog, err_ready and other
interrupts from secure processor subsystem to the PIL driver.

CRs-Fixed: 972423
Change-Id: I65455229ee14bd4da357358ac3977f2137f3c07e
Signed-off-by: Puja Gupta <pujag@codeaurora.org>
2016-03-22 11:16:21 -07:00
Stepan Moskovchenko
7581cb300a arm64: Call EDAC error handler on system error
One possible cause of a system error exception is an ECC
error in the CPU's caches. Call the ARM64 EDAC error
handler from the system error exception handler to print
EDAC error syndrome information to the kernel log.

Change-Id: If8757eda0c7fc82b0fccee573cf09627a752fdf3
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
[satyap: replace ESR_EL1_* with ESR_ELx_* to align with kernel 4.4]
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-03-22 11:16:20 -07:00
Mahesh Sivasubramanian
d0aebd3840 ARM64: smp: Prevent cluster LPM modes when pending IPIs on cluster CPUs
LPM modes can fail if there is a pending IPI interrupt at GIC CPU
interface. On some usecases frequent failure of LPM modes can
cause power and performance degradation. Hence, prevent cluster
low power modes when there is a pending IPI on cluster CPUs.

Change-Id: Id8a0ac24e4867ef824e0a6f11d989f1e1a2b0e93
Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
Signed-off-by: Murali Nalajala <mnalajal@codeaurora.org>
[satyap: trivial merge conflict resolution]
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-03-22 11:16:19 -07:00
Yan He
ee5580ee55 msm: ep_pcie: update the regulator API call on 4.4 kernel
Update the regulator API used in PCIe endpoint driver for 4.4
kernel upgrade.

Change-Id: Iacca851bfbd7f5a5544b97ac82630d9a2dc5ebfc
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:18 -07:00
Siddartha Mohanadoss
38d39426aa kbuild: export uapi header file
Export uapi header file for EPM driver.

Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
2016-03-22 11:16:17 -07:00
Yan He
a5ee9307d8 msm: ep_pcie: add the support of PCIe EP mode for mdmcalifornium
Add the support of PCIe Endpoint (EP) mode for mdmcalifornium.

Change-Id: I55c85813e674810d865b444b7e19ce4157cea479
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:17 -07:00
Siddartha Mohanadoss
980cf128c7 msm: ep_pcie: Update MSI configuration
Update check for valid MSI enable and setting using
MSI_ENABLE bit instead of address and data. Host can
set address and data to 0 therefore check if MSI_ENABLE
is set.

Change-Id: I686c3ed155b8c5c843d12a49218f4720655dcc18
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
2016-03-22 11:16:16 -07:00
Yan He
4f927fe01b msm: ep_pcie: update PCIe PHY configuration
Update the configuration of PCIe PHY based on the version of PHY.

Change-Id: I1faf65c2cc1215cd6ad679d0c4558a17f43db3fc
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:15 -07:00
Yan He
7adcccb4d1 msm: ep_pcie: support multiple link training options
Add the support to trigger link training based on PCIe PHY version.

Change-Id: I4c765797d8e8adf5c15effae95da350a0d8ec0c3
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:14 -07:00
Yan He
1e5604cf01 msm: ep_pcie: add the phy reset clock
Add the phy reset clock for PCIe endpoint mode and add the support
of this optional clock.

Change-Id: Id92e2fd589d0e97e8a3db2e1eeb1d6c99a464777
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:13 -07:00
Yan He
ce12d18898 msm: ep_pcie: fix the bug in debugfs testing
PCIe device ID can't be got from register when the power of the
core is off. Thus, use the saved device ID so that we can turn on
link in the debugfs testing.

Change-Id: I28ec17b4fdf84b130cd32267d097b1c0d7c32aed
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:12 -07:00
Yan He
0ce97567c5 msm: ep_pcie: fix the bug of power status
Fix the bug of the power status of PCIe core and update the power
status as soon as power is turned on.

Change-Id: Ib5b550c78a630d36049296daf1291065a1a44cd5
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:11 -07:00
Yan He
8133fd6791 msm: ep_pcie: update retry counters and intervals
Update retry counters and intervals for PCIe PHY init and PCIe link
training to accommodate various hosts.

Change-Id: I767de1f08580137559e974c0ef90273ccf5f4b76
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:11 -07:00
Yan He
6a7032666d msm: ep_pcie: update lpeak values of PCIe LDOs
Update the lpeak values of PCIe LDOs based on the updated HW
requirement.

Change-Id: I2f8b63edf3f8571ea960abdebde982324f7f6d74
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:10 -07:00
Yan He
d7de1f12d8 msm: ep_pcie: add L1ss support
Enable L1ss support in L1ss capability register.

Change-Id: I51e6e1bbd8073e7bb88c7e041199d862db020ae7
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:09 -07:00
Yan He
f31be11ecb msm: ep_pcie: disable debouncers
Disable debouncers for PCIe endpoint mode.

Change-Id: I504418193920861296d995bd898f01307e6dc518
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:08 -07:00
Yan He
a0ad90f548 msm: ep_pcie: update read-only registers for compliance testing
Update some read-only PCIe registers with non-arbitrary values
which are required by PCIe compliance testing.

Change-Id: I10fd448f38d874ba582d1a46a98a76d29e0d9cb4
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:07 -07:00
Yan He
3e255410ad msm: ep_pcie: fix duplicated counter increment
The logging macro has multiple outputs. If we increase the counter
as a parameter to the logging macro, the counter will be increased
for multiple times. The change here fixes this bug.

Change-Id: I321e281b506e35770e222def86f5b04ae0bfdce2
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:06 -07:00
Yan He
f7fa70a57d msm: ep_pcie: correct PME configuration
Correct the PME configuration for PCIe endpoint to support D0, D3
hot and D3 cold.

Change-Id: Ib906fbafc490be75e5f178176e33882c392d074e
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:05 -07:00
Yan He
4b39cc2da0 msm: ep_pcie: allow wake assertion during D3hot
PCIe client may need to wake up the host when PCIe link is still
on. Add the support to assert wake to host side when PCIe is in
D3hot.

Change-Id: I15ffd5f03183054c7ef5d143757b923f32de0adc
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:05 -07:00
Yan He
5dbc08812b msm: ep_pcie: add PCIe endpoint driver
The MSM PCIe endpoint driver enables the PCIe core in endpoint mode
and handles the control signaling with PCIe root complex on host
side.

Change-Id: Ifc2735e061820762c6040eda44089a2dc26fc065
Signed-off-by: Yan He <yanhe@codeaurora.org>
2016-03-22 11:16:04 -07:00
Abhijeet Dharmapurikar
3b1bda734d spmi: pmic_arb: use handle_fasteoi_irq handler
The interrupt controller uses level handler for all its interrupt.
The hardware irq controller confirms to the fasteoi handler type in
that it rearms itself when acknowledged. There is no need to
additionally mask the interrupt while being handled.

Use fasteoi handler type for pmic interrupts. Since fasteoi needs
an irq_eoi callback, use the same function used for irq_ack.

Change-Id: I9a941d8b56ad5698da38e16b2afcf87ef920ebfd
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2016-03-22 11:16:03 -07:00
Abhijeet Dharmapurikar
48018b31f8 spmi: pmic_arb: don't synchronize accesses to interrupt region
The current driver ensures that no read/write transaction is in progress
while it makes changes to the interrupt regions. This is not necessary
because read/writes over spmi and arbiter interrupt control are
independent operations.

Change-Id: Id6a93eed0aabe55a4b655a2050c31b48327dffe4
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2016-03-22 11:16:02 -07:00
Abhijeet Dharmapurikar
e99c7baba0 spmi: pmic_arb: remove disabling of ACC bit
The interrupt controller code in the arbiter disables
the peripheral accumulated interrupt (ACC) bit when none of the
interrupts in the peripheral is enabled.

This is not required since the controller disables the interrupt
at the pmic.

So leave the ACC bit enabled while masking an interrupt. Also
ensure that the ACC bit is enabled while unmasking an interrupt.
There is no issues with enabling ACC bit if it were already enabled.

Change-Id: Idbea562157e65a4dfe0c51b7a25eed5ce000068d
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2016-03-22 11:16:01 -07:00
Laura Abbott
c704acd5e0 arm: Add weak function definition for random pool intialization
The random pool relies on devices and other items in the system
to add entropy to the pool. Most of these devices may not be
added until later in the bootup process. This leaves a large
period of time where the random pool may not actually give
random numbers. Add a weak function for devices to override
with their own function to setup the random pool.

Change-Id: I0de63420b11f1dd363ccd0ef6ac0fa4a617a1152
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
[satyap: trivial merge conflict resolution]
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-03-22 11:16:00 -07:00
Se Wang (Patrick) Oh
0f97d15b0b arm64: Fix out of bound access to compat_hwcap_str
As compat_hwcap_str[] doesn't end with 'NULL', c_show()
tries to read the next element even after the end of the
array. So add 'NULL' at the end of compat_hwcap_str[].
Below is the KASan report for referencing.

BUG: KASan: out of bounds access in c_show+0x110/0x248 at addr ffffffc0011f6370
Read of size 8 by task pool-1-thread-1/10526
page:ffffffbac14b39c0 count:1 mapcount:0 mapping:          (null) index:0x0
flags: 0x400(reserved)
page dumped because: kasan: bad access detected
Address belongs to variable compat_hwcap_str+0xb0/0xe0
CPU: 0 PID: 10526 Comm: pool-1-thread-1 Tainted: G    B   W      3.18.18-ga7b28e9-11552-ge4a827f #1
Hardware name: Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 MTP (DT)
Call trace:
[<ffffffc000089ec4>] dump_backtrace+0x0/0x1c4
[<ffffffc00008a098>] show_stack+0x10/0x1c
[<ffffffc0011a7c58>] dump_stack+0x74/0xc8
[<ffffffc00020e94c>] kasan_report_error+0x2b0/0x408
[<ffffffc00020eb80>] kasan_report+0x34/0x40
[<ffffffc00020db14>] __asan_load8+0x84/0x90
[<ffffffc000088ae8>] c_show+0x10c/0x248
[<ffffffc000245bb8>] traverse+0x1a8/0x320
[<ffffffc000245dc8>] seq_lseek+0x98/0x148
[<ffffffc00028f4e0>] proc_reg_llseek+0xa0/0xd8
[<ffffffc000217d1c>] vfs_llseek+0x5c/0x70
[<ffffffc000218b0c>] SyS_lseek+0x48/0x80
[<ffffffc000218b50>] compat_SyS_lseek+0xc/0x18
Memory state around the buggy address:
 ffffffc0011f6200: 00 00 fa fa fa fa fa fa 00 03 fa fa fa fa fa fa
 ffffffc0011f6280: 04 fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
>ffffffc0011f6300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa fa
                                                             ^
 ffffffc0011f6380: fa fa fa fa 00 00 00 00 00 00 fa fa fa fa fa fa
 ffffffc0011f6400: 02 fa fa fa fa fa fa fa 00 00 00 02 fa fa fa fa

Change-Id: I5e2098f9a7a676c47a01baf10de3ac1c86265e69
Signed-off-by: Se Wang (Patrick) Oh <sewango@codeaurora.org>
[satyap: trivial merge conflict resolution and move changes
         in arch/arm64/kernel from setup.c to cpuinfo.c to
         align with kernel 4.4]
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-03-22 11:15:59 -07:00
Stepan Moskovchenko
d892726a6c ARM64: Add snapshot of edac.h from msm-3.10
Sync the ARM64 edac header to the version found in msm-3.10
as of commit 142c36711024877a2ec1eb13dbbca38503b26ee3 ("edac:
cortex_arm64_edac: Use dbe irq only") to bring in external
EDAC API definitions that were missed during the msm-3.18
upgrade.

Change-Id: If2dc53858d7a30086a95ea5047bd6b18e44f7e09
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
2016-03-22 11:15:59 -07:00
Stepan Moskovchenko
1166cdaff1 ARM64: Enable EDAC support for ARM64 targets
Select EDAC (Error Detection and Reporting) functionality
for ARM64 CPUs to allow EDAC drivers for ARM64.

Change-Id: I699cbefdba7afab65bf8b60c0d5df06dd3b57773
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
2016-03-22 11:15:58 -07:00
Rohit Vaswani
42fd183193 edac: arm64: Check for ECC errors on panic
Check for ecc errors on panic on all processors

Change-Id: I2a68644afb2730a69aca35abb1f10899a11514dd
Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
[stepanm@codeaurora.org: update argument to arm64_check_cache_ecc()]
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
[satyap: trivial merge conflict resolution]
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-03-22 11:15:57 -07:00
Stepan Moskovchenko
3182b97bad arm64: Fix conflict resolution in cpuinfo CPU reporting
Commit ebc4e05c338bde49382c7c46ce6b8a371713862e ("arm64: show
present cpu instead of online cpu in /proc/cpuinfo") did not
have its conflicts against msm-3.18 properly resolved.

Change-Id: I1f4eb1d8a20b2bc142a7f0b8890d383a9552557c
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
[satyap: trivial merge conflict resolution and move changes
         in arch/arm64/kernel from setup.c to cpuinfo.c to
         align with kernel 4.4]
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-03-22 11:15:56 -07:00
Abhimanyu Kapur
e901e28d56 ARM/ARM64: Introduce arch_read_hardware_id
Moving towards device tree and arm single binary refering to
machine descriptor name for hardware id information under
/proc/cpuinfo is not suitable for certain soc vendors. Add a
hook for soc vendors to supply a per-soc hardware read method.

Change-Id: Ifcccdffa3c0e1e8b5f96837eb1c023e468d4c287
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
[satyap: trivial merge conflict resolution and move changes
         in arch/arm64/kernel from setup.c to cpuinfo.c to
         align with kernel 4.4]
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-03-22 11:15:55 -07:00
Jordan Crouse
f9d0fc3347 arm64: Set CONFIG_QCOM_KGSL in the defconfig
Enable the KGSL GPU driver by enabling CONFIG_QCOM_KGSL in the
defconfig.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
2016-03-22 11:15:54 -07:00
Jordan Crouse
a43bd89897 msm: kgsl: Increase GPMU timeouts
The existing timeout values for the various GPMU interactions seems
to have been a tad optimistic for all conditions. Increase them to
cover measured worse case scenarios.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
2016-03-22 11:15:54 -07:00
Jordan Crouse
d31b0d97e6 msm: kgsl: Conditionally use bwmon governor if it exists
Wrap the code to use the bwmon governor or not depending if it
exists.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
2016-03-22 11:15:53 -07:00
Jordan Crouse
56930b9f17 msm: kgsl: Update various exernal APIs for the 4.4 kernel
Make several changes to build the GPU driver for 4.4:

 - Rename CONFIG_MSM to CONFIG_QCOM where applicable
 - Add msm_kgsl.h to the Kbuild exports
 - Remove linux/coresight_of.h (as it has been merged into
   coresight.h) and remove the .owner member of the
   coresight_desc struct.
 - Use the new location for the sync.h file (in staging)
 - Remove an unused sync function
 - Move oneshot_sync.h inside of #ifdef wrappers

Signed-off-by: Jordan Crouse <jcrouse@codeauorora.org>
2016-03-22 11:15:52 -07:00
Jordan Crouse
318be96313 devfreq: Add Qualcomm GPU devfreq governors
Snapshot of the Qualcomm GPU devfreq governors and support
as of msm-3.18 commit e70ad0cd5efd
("Promotion of kernel.lnx.3.18-151201.").

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
2016-03-22 11:15:51 -07:00
Jeremy Gebben
ef08f68897 PM / devfreq: allow governors to use devfreq_get_freq_level
Level based governors may need to perform this lookup to
interpret the current frequency of the device.

Signed-off-by: Jeremy Gebben <jgebben@codeaurora.org>
Signed-off-by: Vladimir Razgulin <vrazguli@codeaurora.org>
2016-03-22 11:15:50 -07:00