Revert "Cleanup ramdisk"

This reverts commit 764ad71d41917e0132a2972e754d3aa60fdbf33d.
Revert "Set own mV for cpu"

This reverts commit b73489d6adbd93b973f65a328ed37db4d99dddc5.
hotplug: add a tunable for all_cpus_threshold

Previously adding a tunable for this parameter would end up in
some sort of deadlock as soon as the device enters deepsleep.
This is now avoided by allocating the right amount of memory
for the hotplug data.
Since the hotplug driver is enabled by default and shouldn't be
replaced by userspace we don't need to bother about freeing up the
memory.

This commit also contains a big cleanup for various things.

Signed-off-by: Blechd0se <alex.christ@hotmail.de>
hotplug: fix missing bits

Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: thermal: add new thermal solution

This is directly based on this work; https://github.com/franciscofranco/hammerhead/commit/7c64ea63d67b254c8dd10739a5dd722af8452f6f

I just adjusted a few things and made some coding style
fixes for easier reading.
The temp threshold is controlable over this interface;
/sys/module/msm_thermal/parameters/temp_threshold

Signed-off-by: Blechd0se <alex.christ@hotmail.de>
cpufreq: freq_table: bail out early if freq = target_freq

If the target_freq is equal to freq we don't need
to do some extra checks, we can just bail out.

Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: When switching pagetable use current context ID

When we switch pagetables then the pagetable switch commands
should be executed on behalf of the currect active context and
not the context to which we are switching. This is because
until the pagetable switch occurs the GPU will be using the
pagetable of the active context.

CRs-fixed: 574989
Change-Id: I9ca65ea399e39a158dc72adc2c7b661f62f18c93
Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
Signed-off-by: Tarun Karra <tkarra@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Account for fixed perfcounter groups

Most performance counter groups have general purpose counters that
can be programmed to any number of countable types.  That said
some groups have counters with fixed countables.  When reserving those
groups the countable is equal to the register - so when you ask for
countable 0 in VBIF_PWR for example it is expected that will always
match to a certain register.  Add a flag member to the perfcounter
group and declare PWR and VBIF_PWR as fixed groups and handle them
accordingly in adreno_perfcounter_get() so that the correct register
is returned.

CRs-fixed: 582739
Change-Id: Ic0dedbad271c7472efce5f79e9055b7b3d224d17
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Restrict the maximum memory entries for bulk cache sync

Restrict the maximum number of memory entries that can be specified
to a single bulk cache sync call to PAGE_SIZE / sizeof(unsigned int)
so that the allocation can always fit within one page.

CRs-fixed: 578062
Change-Id: Ic0dedbad07e1986cd6ccc5b260ffef82b5adb6d3
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: avoid zero length scatterlist allocation

During sglist allocation we calculate sglen as
per below

sglen_alloc = PAGE_ALIGN(size) >> PAGE_SHIFT;

sglen_alloc can be zero if size falls within the
last page. For example, when size = 0xFFFF_FF7B,
PAGE_ALIGN(0xFFFF_FF7B) will be 0, considering
0x1000 (4kb) PAGE_SIZE. if kzalloc() with
zero size, it will return ZERO_SIZE_PTR which is
not NULL and we always do NULL check. Dereferencing
ZERO_SIZE_PTR will lead to a distinct access fault.

Signed-off-by: Blechd0se <alex.christ@hotmail.de>

Conflicts:
	drivers/gpu/msm/kgsl_sharedmem.h

Change-Id: Ibcc6198438c13b5111be0faa736328db92511597
CRs-Fixed: 563106
Signed-off-by: Prakash Kamliya <pkamliya@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>

Conflicts:
	drivers/gpu/msm/kgsl_sharedmem.h
msm: kgsl: Increase fault timer for slower a305 GPU

Slower GPU's need larger fault timer to detect hangs correctly.
we use 50ms fault timer for faster GPU's, a305 GPU is slower
compared to faster GPU, use a larger 200ms fault timer to
prevent false hang detection.

Change-Id: I0f0bf492ae2d9941979893b75b2e1dbc832e1ba8
Signed-off-by: Tarun Karra <tkarra@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Increase fault timer for A305B GPU

Slower GPU's need larger fault timer to detect hangs
correctly. Frodo A305B GPU is slower compared to faster
GPU, hence use a larger 200ms fault timer to prevent
false hang detection.

Signed-off-by: Prabhat Awasthi <pawasthi@codeaurora.org>
Change-Id: I6338cecc3be81700ab10c45fab66daa7a1078e42
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Fix mem leak when page allocation fails

Page allocation may fail during OOM condition. Update
sglen and size to correct value (allocated) so that
they get freed in kgsl_sharedmem_free().

Change-Id: I1aa0ca77bb767523dfcf0f6cc3a21eac2b6b80e4
Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: when unmapping from the mmu flush the entire tlb

Flushes the entire tlb when calling mmu_unmap to make sure there
is no race condition between unmapping and freeing the pages.

Change-Id: I911f8479a3aef2006f9df40a3419284423937542
Signed-off-by: Shrenuj Bansal <shrenujb@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Force the ME off before reading the microcode

On A3XX reading the microcode while the CP is running is dangerous
beyond words.  By setting the offset address for the read, we are
essentially changing the instruction pointer for the ME while it
is running causing opcode errors, gpu faults and/or system errors.

We do not want to stop the CP at the beginning of the snapshot
process beacuse doing so changes the RBBM status and the state of
the CP registers which may damage the debug effort.  But by the
time we get to the microcode read we no longer care about the state
of the registers so we can freely halt the ME just before starting
the read.

CRs-fixed: 585449
Change-Id: Ic0dedbad85d7ec26915f054dd597e226e8101a29
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Ensure signals do not cause waits to end early

Move to using uninterruptible (which will bail if any signal is received)
when waiting on events.  A signal was causing the wait to finish
prematurely, freeing memory while the GPU was still using it.  This caused
quite a few page faults and the device to become unstable.

Change-Id: Ic0dedbade9143c9377830a209c3ffd252aa9668b
Signed-off-by: Carter Cooper <ccooper@codeaurora.org>
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Panic if global timestamp wait fails in context detach

If we timeout while waiting for the last issued global timestamp for
a detaching context to expire (10 seconds!) then we are on a fast
train to crashville.  BUG_ON() so we can stand a chance of debugging
this very rare issue.

Change-Id: Ic0dedbaddb9cbc5681f9c872785ce26b7cf9b87b
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Add check for NULL value from dev_get_drvdata

Check to see if dev_get_drvdata returns NULL and handle it.

CRs-Fixed: 552580
Change-Id: Ic0dedbad426dbbe15896608213067ee7337f3b34
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Ensure signals do not cause waits to end early.

Move to using uninterruptible (which will bail if any signal is received)
when waiting on events.  A signal was causing the wait to finish
prematurely, freeing memory while the GPU was still using it.  This caused
quite a few page faults and the device to become unstable.

Change-Id: Ied4dfc40649892ab37924cbec87a517b7bf5ef74
Signed-off-by: Carter Cooper <ccooper@codeaurora.org>
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Panwar Vivek <vpanwa@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>
msm: kgsl: Don't open kgsl device in erroneous case

If kgsl_get_process_private() returns NULL, it goes to
err_stop with result = -ENOMEM. If open_count is 0,
adreno_stop() overwrites the result variable with 0.
This leads to kgsl_open() to be successful while it
shouldn't.

Change-Id: Ic12d92a099280e4d958fa192fa5128211120d361
Signed-off-by: Prabhat Awasthi <pawasthi@codeaurora.org>
Signed-off-by: Blechd0se <alex.christ@hotmail.de>