Normally in epfile_io() and epfile_ioctl(), if the endpoint is
not enabled the system call will block waiting until the endpoint
is enabled. During a USB disconnect, the function's endpoints get
disabled, so that if an IO call occurs right after that, it would
perform the same blocking wait. From the kernel perspective this
is indistinguishable from an IO call happening after the function
is first initialized but not yet enabled. Hence a userspace
process would be blocked and unaware of the cable disconnection.
For userspace daemons such as ADB, this can be a problem since its
read/write threads cannot be reaped until the I/O call returns,
which won't happen until the cable is reconnected. In that case,
the previous pending read/write would proceed to get successfully
queued. In the case of a read, the previous read consumes data
meant for the new session, and in the case of a write, stale data
could be sent to the host.
To fix this, add a counter to keep track of the epfile's open status.
Upon the endpoint getting disabled mark the endpoint as invalid so as
to fail subsequent IOs until the epfile is fully closed. Returning
-ENODEV upon failure should allow the userspace process to close the
file, so that it can reopen and begin a new session.
Change-Id: I655ffdaa03485753431ff05dc521bf8d1b463ff1
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Currently IRQ APIs are combined with notifications to VMs for sharing the
handles. This limit the clients for managing the error handling from the
drivers. Hence separate the notifications from the actual APIs so that
clients manage the error handling better. Add support for notifications
like IRQ_LEND/ACCEPT/RELEASE from SVM to PVM when SVM accept the irq
handle shared by PVM.
Change-Id: I49999c2d9494c68b1542680e521c012a25e3f6a8
Signed-off-by: Murali Nalajala <mnalajal@codeaurora.org>
For firmware and RDDM images, notify MHI driver not to free them after
successful allocation. This can help avoid future memory allocation
failure.
Change-Id: Ic19d42c6d56707200099969e36da91f4afed0163
Signed-off-by: Yue Ma <yuem@codeaurora.org>
This allows controller to keep the memory allocated for bhi
vector table for rddm and fbc images. Memory remains allocated
after controller powers down. Add a controller flag to make the
decision for memory allocation.
Change-Id: Ic8aee54ae57f5f9351158b18cd96faf7eeb81429
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Enable CONFIG_QCOM_INITIAL_LOGBUF for Holi. This enables
copying of dmesg logs into separate buffer at 100 sec from
bootup.
Change-Id: I36b7addc6060fc6cea03cc2cf006d454c9a1a6d6
Signed-off-by: Ashish Bhimanpalliwar <abhiman@codeaurora.org>
Below race can come, if trace_open and resize of
cpu buffer is running parallely on different cpus
CPUX CPUY
ring_buffer_resize
atomic_read(&buffer->resize_disabled)
tracing_open
tracing_reset_online_cpus
ring_buffer_reset_cpu
rb_reset_cpu
rb_update_pages
remove/insert pages
resetting pointer
This race can cause data abort or some times infine loop in rb_remove_pages
and rb_insert_pages while checking pages for sanity.
Take ring buffer lock in rb reset to avoid resetting of cpu buffer.
Change-Id: I1d3344cca99e936d4e04a0e430e0ef9a975404c8
Signed-off-by: Gaurav Kohli <gkohli@codeaurora.org>
When ECM is enabled, disable ECM if display goes blank, and reenable
ECM once display restores to unblank. This helps in keeping ECM HW
enabled only when display is active.
Meanwhile, update the logic a little bit on calculating the average
current. When any of the accumulated values is invalid, just ignore
the calculation instead of disabling the ECM.
Change-Id: Ibfe973df4dabd1b1cd48927ce567a094da6382a3
Signed-off-by: Fenglin Wu <fenglinw@codeaurora.org>
Glink irq for all the remote edges are registered with same name
glink-native. It is difficult to distinguish each irq in logs.
Appending remote edge name to generic irq name.
Change-Id: I6ead87e0e4adae204535b599d07d9471387c861b
Signed-off-by: Deepak Kumar Singh <deesin@codeaurora.org>