serial: msm_geni_serial: Enable IRQ from port startup
uport->lock was first initialized in msm_geni_serial_probe() with IRQ
enabled and calling uart_add_one_port() API. Same uport->lock will
be re-initialized again from uart_add_one_port() context.
In issue case IRQ is getting fired in one core and acquiring uport-> lock,
at the same time uport->lock is getting re-initialized by serial_core.c
driver on other core and changing the lock owner value to initial value.
When msm_geni_serial_isr() trying unlock uport->lock it is checking for
owner value with initialized value and reporting kernel crash.
Fix this by setting NO_AUTO_ENABLE flag while IRQ registration in probe
and enable and disable the IRQ form port_open and port_close.
Also added changes in this patch to do not stop RX engine from
msm_geni_serial_poll_tx_done API. Currently driver sending
S_GENI_CMD_CANCEL instead of M_GENI_CMD_CANCEL to cancel TX.
Change-Id: I4077f07335f572f190f2f17eb6ee1bf99fe5f189
Signed-off-by:
Chandana Kishori Chiluveru <cchiluve@codeaurora.org>
Loading
Please register or sign in to comment