Add syscore system suspend and resume handlers,
to print gpio interrupts status during device resume.
Change-Id: I7c574d2e44a7e318ac9ef89063d2081bf63c09b6
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
For Mediabox project demux requires raise video frame events
only for MPEG-2 B frames and H264 non idr frames instead of all
frames. These changes are required for clock recovery & AV sync
for mediabox project.
CR's-Fixed: 2005724
Change-Id: I0c87d98b382c37381b9810b6de23267933e51c20
Signed-off-by: Udaya Bhaskara Reddy Mallavarapu <udaym@codeaurora.org>
Move the QSEE handle from user space to kernel space.
In addition, fix possible overflow, when checking that
the command and response buffers fit in the shared buffer.
CRs-Fixed: 1086530
Change-Id: I21b1866546a2825fe348a260c60e341bbe9600ea
Signed-off-by: Abir Ghosh <abirg@codeaurora.org>
There is a potential race between fuse_dev_do_write()
and request_wait_answer() contexts as shown below:
TASK 1:
__fuse_request_send():
|--spin_lock(&fiq->waitq.lock);
|--queue_request();
|--spin_unlock(&fiq->waitq.lock);
|--request_wait_answer():
|--if (test_bit(FR_SENT, &req->flags))
<gets pre-empted after it is validated true> TASK 2:
fuse_dev_do_write():
|--clears bit FR_SENT,
|--request_end():
|--sets bit FR_FINISHED
|--spin_lock(&fiq->waitq.lock);
|--list_del_init(&req->intr_entry);
|--spin_unlock(&fiq->waitq.lock);
|--fuse_put_request();
|--queue_interrupt();
<request gets queued to interrupts list>
|--wake_up_locked(&fiq->waitq);
|--wait_event_freezable();
<as FR_FINISHED is set, it returns and then
the caller frees this request>
Now, the next fuse_dev_do_read(), see interrupts list is not empty
and then calls fuse_read_interrupt() which tries to access the request
which is already free'd and gets the below crash:
[11432.401266] Unable to handle kernel paging request at virtual address
6b6b6b6b6b6b6b6b
...
[11432.456168] PC is at __list_del_entry+0x6c/0xc4
[11432.463573] LR is at fuse_dev_do_read+0x1ac/0x474
...
[11432.679999] __list_del_entry+0x6c/0xc4
[11432.687794] fuse_dev_do_read+0x1ac/0x474
[11432.693180] fuse_dev_read+0x6c/0x78
[11432.699082] __vfs_read+0xc0/0xe8
[11432.704459] vfs_read+0x90/0x108
As FR_FINISHED bit is set before deleting the intr_entry with input
queue lock in request completion path, do the testing of this flag and
queueing atomically with the same lock in queue_interrupt().
Change-Id: I84232771cf09a809806568144441fd356b87d46c
Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
There is a chance for a CPR controller to use the run-time calibrated
step_quot of lower modes for higher modes. This can sometimes lead
to closed-loop voltage getting stuck at open-loop voltage. To avoid
this, configure APC0/1 and GFX CPR controllers in sdm660 to first use
the default step_quot and then later switch to the run-time calibrated
step_quot.
CRs-Fixed: 2003482
Change-Id: Ic355a3a533ab65d9e2b28c67b7fca7df1dd49d48
Signed-off-by: Tirupathi Reddy <tirupath@codeaurora.org>
There is a possible race condition when debugfs files are concurrently
accessed by multiple threads. Fix this.
CRs-Fixed: 1109420, 1109326
Change-Id: I19e9107079ac8d039b12a37ae612727f824552d4
Signed-off-by: Ankit Sharma <ansharma@codeaurora.org>