In the IOCTL path, the command queue is halted before servicing
the ioctl requests. Once the ioctl request is serviced, the ioctl
context releases mmc host and then unhalts the controller. This can
cause race conditions where mmc driver would end up in a bad state.
If another context B, which wants to send a legacy command, comes up
between the time ioctl releases the host and unhalts the controller.
Then the context B will see that cmdq is already halted and will prepare
a legacy command. Once context B sends the legacy command, the ioctl
context may unhalt the cmdq. This will mask the legacy interrupts and
context B will never receive interrupts for the command it sent.
To prevent this, unhalt the controller before the ioctl context releases
the host.
Change-Id: I65d3b4a709813549e7e5d48d94065a753164f9d0
Signed-off-by: Vijay Viswanath <vviswana@codeaurora.org>
Switching HDMI display mode many times, could find
sometimes color distortion or no signal display.
If disable HDMI block before setting HDMI core off,
that could be fixed.
Change-Id: Ib0e8002f59e017a81298d4a5a39736a7516e3435
Signed-off-by: Yuan Zhao <yzhao@codeaurora.org>
composite driver is using sprintf() function to expose value to
userspace. This sprintf() is banned function and instead required
to use snprintf() function. Hence replace sprintf() with snprintf()
function to fix static analysis tool error.
Change-Id: I85f38fe3f2121f6a0cb76b7178a3e699ba1dc7f2
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
Remove circular dependency deadlock in a scenario where hotplug of CPU is
being done while there is updation in cgroup and cpuset triggered from
userspace.
Process A => kthreadd => Process B => Process C => Process A
Process A
cpu_subsys_offline();
cpu_down();
_cpu_down();
mutex_lock(&cpuhotplug.lock); //held
__cpu_notify();
workqueue_cpu_down_callback();
queue_work_on(system_highpri_wq);
__queue_work();
insert_work();
wake_up_worker(); //pool->nr_running = 0
flush_work();
wait_for_completion();
worker_thread();
need_more_worker(); // returns true
manage_workers();
maybe_create_worker();
create_worker();
kthread_create_on_node();
wake_up_process(kthreadd_task);
kthreadd
kthreadd();
kernel_thread();
do_fork();
copy_process();
percpu_down_read(&cgroup_threadgroup_rwsem);
__rwsem_down_read_failed_common(); //waiting
Process B
kernfs_fop_write();
cgroup_file_write();
cgroup_tasks_write();
percpu_down_write(&cgroup_threadgroup_rwsem); //held
cgroup_attach_task();
cgroup_migrate();
cgroup_taskset_migrate();
cpuset_can_attach();
mutex_lock(&cpuset_mutex); //waiting
Process C
kernfs_fop_write();
cgroup_file_write();
cpuset_write_resmask();
mutex_lock(&cpuset_mutex); //held
update_cpumask();
update_cpumasks_hier();
rebuild_sched_domains_locked();
get_online_cpus();
mutex_lock(&cpuhotplug.lock); //waiting
Eliminate this dependecy by reordering locking of cpuset_mutex
and cpuhotplug.lock.
Change-Id: Ifd76373d717c53b531623a3be76b7d32e0d959fd
Signed-off-by: Prateek Sood <prsood@codeaurora.org>
Initial ISPIF waiting was one second which causes
hang for one second in case of sensor removal hence
wait is reduced to 200ms.
Change-Id: I531a880435983fe2e1e4f0f7616c6a6b1632dac8
Signed-off-by: Rahul Sharma <sharah@codeaurora.org>
There might be a possible race condition in rotator, where two
threads can free same perf structures. Adding proper locking
to avoid such race conditions.
Change-Id: I4976da6f176df24da2ec86c4c1f176cc43aba05b
Signed-off-by: Krishna Chaitanya Devarakonda <kdevarak@codeaurora.org>
The maximum number of layers could be 13 including the
cursor layer. Increasing the maximum layer count to
accommodate cursor layer.
Change-Id: I907feb14fbd2d2ab5de66b4dee83d90d94c59595
Signed-off-by: Krishna Chaitanya Devarakonda <kdevarak@codeaurora.org>
Enable CSI 4 lane in adv7481 to support 1080p and 60fps.
Suggested-by: Suprith Malligere <c_suprit@qti.qualcomm.com>
Change-Id: I053602fc73fe300cff780dfe75c546ff3768ee3c
Signed-off-by: Jaiju Yesudasan <cjaijuy@codeaurora.org>
In msm_isp_get_bufq, if bufq_index == buf_mgr->num_buf_q,
it will pass the check, leading to off-by-one overflow
(exceed the length of array by one element).
CRs-Fixed: 2031677
Change-Id: I7ea465897e2c37de6ca0155c3e225f1444b3cf13
Signed-off-by: Gaoxiang Chen <gaochen@codeaurora.org>
If context wait for global timeouts in detach path there is
no use to process its pending commands. Hence to handle context
detach timeout failure,invalidate the context and remove all
the pending commands from that context. So that other context
commands proceed successfully after the context detach timeout
fault recovery.
Change-Id: Ie4ff0ed5d08312d345b248a2404ce085552b0b09
Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
Fix access of a dangling pointer by assigning it to NULL.
CRs-Fixed: 2096407
Change-Id: I22c1d55ea611ac59cdca51924787f6831bad8c2b
Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
For use with A/B partition feature, remove early mount of system
image. Change fs mgr flags from verify to slotselect.
System image is to be mounted in the lk when enabling A/B.
Change-Id: I4fc2ac5f5bd22dea2fd6ff832cd31d1f3697b4d4
Signed-off-by: Anthony Mah <amah@codeaurora.org>
Currently, when becoming inactive, PD leaves the HDC and input
limited interrupt enabled.
Correct it by disabling it.
Change-Id: I62a1d837f6126951cb428a982fe1d8876f1d5bdc
Signed-off-by: Harry Yang <harryy@codeaurora.org>
Correct the checks while setting the max scaling frequency supported
by the card. With the present checks, even for HS card max frequency
would set as max frequency of HS200 card.
Change-Id: Ie8b42229ef189e591f49b227d043f6186aa7e205
Signed-off-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
SDHC core with 14lpp tech DLL should not enable PWRSAVE_DLL since
such controller's internal gating cannot meet following MCLK requirement:
when MCLK is gated OFF, it is not gated for less than 0.5us and MCLK must
be switched on for at-least 1us before DATA starts coming.
Since all the latest versions of sdhc host has this 14lpp tech DLL
Don't set PWRSAVE_DLL bit accordingly.
Change-Id: I7cccc79a79b32a33e74212fc5f41408c2e07b5cb
Signed-off-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
Enable SDHC FIFO explicitly by disabling the alternative FIFO.
The boot-loaders might use alternative FIFO instead of HC FIFO.
And the vendor specific register which has this setting won't get
reset with controller reset. So the FIFO setting done by the
bootloader would remain as it is unless its explicitly cleared.
Without clearing this setting, mmc driver can't make use of regular
FIFO mode.
Change-Id: I8c7ff9b20c33518fb9013cce2f9284117fc2ce3c
Signed-off-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
In case of HDMI interface as primary, if device boots up with
HDMI connected, external interface driver is unable to notify
audio events as audio codec is getting registered later.
Add change to send audio event once audio codec gets registered.
Change-Id: I8d630adf892714ff2eb4d6039dc058b54c425b83
Signed-off-by: Narender Ankam <nankam@codeaurora.org>
Modify HDMI driver so that video and audio events are notified
separately. Notify video events asynchronously. send audio
events only after video is up.
Change-Id: Ie6e4e564456d65f6b6d733b8accd14b9ce4c7e15
Signed-off-by: Narender Ankam <nankam@codeaurora.org>
When several threads permanently, e.g., read/write the debugfs
file that triggers vfe_debugfs_statistics_read(), the content of
stats will be modified in an unintended manner, add spin_lock
to protect that.
Change-Id: I15d46498e669132ef1d1f5ad9c4305ee5fdb0da4
Signed-off-by: Ramesh V <ramev@codeaurora.org>