msm: kgsl: Detect and avoid malformed ioctl codes

Because we were using _IO_NR, one could construct a malformed ioctl
code that would avoid allocating memory yet go to a function that
expected that memory. Still use _IO_NR to index the array of ioctls,
but check that the full values match before jumping to the helper
function.

CRs-fixed: 385592
Change-Id: Ic0dedbaded469035bd0a2bb0f20fecb2a3045ca5
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
(cherry picked from commit 1e76f61bb001b93795a227f8f808104b6c10b048)

Signed-off-by: Dhivya Subramanian <dthiru@codeaurora.org>
msm: kgsl: In kgsl release do not idle if device is in HUNG
 state

When recovery fails we are in HUNG state and clocks are turned off,
If a client closes kgsl device, driver release gets called and
we will try to idle the device which leads to accessing GPU registers
without clock being on. This leads to excessive kernel logging
"kgsl_pre_hwaccess hw access while clocks off from state HUNG"
and this eventually leads to watchdog.

Change-Id: Ib15c83fa06f6d32382b20c68a3ceb5081f1cfd69
CRs-fixed: 397149
Signed-off-by: Tarun Karra <tkarra@codeaurora.org>
Signed-off-by: Gopal Goberu <ggober@codeaurora.org>
msm: kgsl: Invalidate base pointers when tlb is flushed

Invalidate the base pointer even when tlb is flushed. For
gpummu the base pointers are invalidated even after just
a tlb flush, with IOMMU do the same.

Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
(cherry picked from commit 967c91794d71107053471f33b903176a3522431d)

Conflicts:

	drivers/gpu/msm/adreno.c

Change-Id: Ic2e6d9b323d8aadabfe73b57d82cbe4500d666fe
Signed-off-by: Sridhar Gujje <sgujje@codeaurora.org>
msm: kgsl: Add idle after writing SMMU ASID register

Add an idle for synchronization after writing the SMMU ASID register.

Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
(cherry picked from commit be39728459a2b7a9c0a5b1faf11e7406976ddcc7)

Change-Id: I6dedb2ff1c51a3ee0ffe55ce64567e8bcdf03e7f
Signed-off-by: Sridhar Gujje <sgujje@codeaurora.org>
tty: hold lock across tty buffer finding and buffer filling

tty_buffer_request_room is well protected, but while after it returns,
 it releases the port->lock. tty->buf.tail might be modified
by either irq handler or other threads. The patch adds more protection
by holding the lock across tty buffer finding and buffer filling.

Signed-off-by: Alek Du <alek.du@intel.com>
Signed-off-by: Xiaobing Tu <xiaobing.tu@intel.com>
Cc: Jiri Slaby <jslaby@suse.cz>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
CRs-Fixed: 387308
Signed-off-by: Vamsi Krishna <vskrishn@codeaurora.org>
(cherry picked from commit 09236b0fbea5268bce3568d974654f8d9ddb83ec)

Change-Id: If383e12d6e65cfde1e2df2e65df8c3a4c30385ed
Signed-off-by: Sridhar Gujje <sgujje@codeaurora.org>
msm: kgsl: In kgsl release do not idle if device is in HUNG
 state

When recovery fails we are in HUNG state and clocks are turned off,
If a client closes kgsl device, driver release gets called and
we will try to idle the device which leads to accessing GPU registers
without clock being on. This leads to excessive kernel logging
"kgsl_pre_hwaccess hw access while clocks off from state HUNG"
and this eventually leads to watchdog.

Change-Id: Ib15c83fa06f6d32382b20c68a3ceb5081f1cfd69
CRs-fixed: 397149
Signed-off-by: Tarun Karra <tkarra@codeaurora.org>
Signed-off-by: Gopal Goberu <ggober@codeaurora.org>
Signed-off-by: Subrahmanyam Uppala <csuppal@codeaurora.org>