msm: Fix high load average from uninterruptible waits

 * The load average on all MSMs is currently hovering at around 14
   due to uninterruptible waits in various places.
 * Convert these waits to interruptible waits to bring the load
   back down to zero at idle.

Change-Id: I14bad4af135b1594e235e2252cb484cb34d91054
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: thermal: add my Thermal solution

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
cpufreq: create a helper function to get CPU utilization

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Display gamma control

TODO: confirm rgb channels, identify other tunables, cleanup,
apply values without switching screen (off and) on.

sysfs: /sys/devices/qcom,mdss_dsi_jdi_command_ors.69/*
Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Apply commands values without switching screen (off and) on

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Remove tunable for command 32

Even slight changes look ugly or distort the screen.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: distinguish between Gamma RGB polarity Positive/Negative

Signed-off-by: Paul Reioux <reioux@gmail.com>
Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Remove sysfs for unused commands

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Identify white point in sysfs

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Add safety check for user input

Leave more checks either to the control app or the user's intelligence.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Finalize gamma interface and cleanup

- Remove all sysfs files of unused commands
- Remove auto sync for negative polarities, these must be written separately
- Protect offset bit of white point command as well
- Apply white point bit 2 as duplicate of bit 1

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Send panel commands via separate function

Sending panel comnmands is very expensive, add a separate function to
accomplish this. Once all commands have been stored write anything to
the kgamma_send file.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Add hardware revision check

Our gamma interface works with both current hardware revisions,
11 and 11j, although all testing was carried out on 11. As we
don't know about possible future revisions, let's bail out until
correct offsets for panel commands have been added.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Use workqueue to send panel commands

Sending panel commands is known to be expensive, honor this by
scheduling this task. Also check for panel state and send commands
only when we're actually awake.

These fixes adress bug reports regarding behaviour during boot.

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: mdss: Find a stable sysfs node for the gamma interface

Move sysfs files to /sys/module/dsi_panel/*

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
msm: vidc: Initialize kernel space stack variables

This change initializes kernel space stack variables
that are passed between kernel space and user space
using ioctls.
Non initialization of these variables may lead to
leakage of memory values from the kernel stack to
user space.

PS2-3: Correct authorship and date.

Change-Id: I5b45f3a7baf9c538fee2ec356cd8545f8b042b5e
CRs-fixed: 556771,563420
Signed-off-by: Deepak Verma <dverma@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
fbcmap: prevent memory overflow

Add bounds check before copying data to prevent
buffer overflow.

Change-Id: I47b9685b1ab13c4863fb6db62bbb9497a00b36da
Signed-off-by: Shalabh Jain <shalabhj@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
gpu: ion: Also shrink memory cached in the deferred free list

When the system is low on memory, we want to shrink any cached
system memory ion is holding.  Previously we were shrinking memory
in the page pools, but not in the deferred free list.  This patch
makes it possible to shrink both.  It also moves the shrinker
code into the heaps so they can correctly manage any caches they
might contain.

Change-Id: I177f587f999a5220eddbf7af94745aae736cac75
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
Git-commit: 072beca55150c0c0b652bbb24267da271e0bdf19
Git-repo: https://android.googlesource.com/kernel/common
[mitchelh@codeaurora.org: minor context fixups due to MSM changes]
Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
gpu: ion: Add buffer flag to skip page pooling on free

Currently, when we free a buffer it might actually just go back into a
heap-specific page pool rather than going back to the system. This poses
a problem because sometimes (like when we're running a shrinker in low
memory conditions) we need to force the memory associated with the
buffer to truly be relinquished to the system rather than just going
back into a page pool.

There isn't an obvious use case for this flag by Ion clients. The main
use case right now is to provide a mechanism for the deferred free code
to force stale buffers to bypass page pooling.

Change-Id: I724f89cc037083fe8576784363caa18a34e8705a
Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>
gpu: ion: optimize zero'ing of pages

Instead of using __GFP_ZERO, vmap high-order pages for zero'ing all at
once (or in a few large chunks).

Test results show a ~25% speedup for allocations that are fulfilled from
lowmem, and ~100% speedup for allocations that are fulfilled from
highmem.

Change-Id: I57270361ff195780370e1c6f458985bdbb641efe
Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Signed-off-by: Aditya Amirullah <adityaamirullah@gmail.com>