Message ID | 1702276972-41296-1-git-send-email-quic_qianyu@quicinc.com (mailing list archive) |
---|---|
Headers | show |
Series | bus: mhi: host: Add lock to avoid race when ringing channel DB | expand |
On Mon, Dec 11, 2023 at 02:42:50PM +0800, Qiang Yu wrote: > > 1. We need a write lock in mhi_gen_tre otherwise there is race of the WP > used for ringing channel DB between mhi_queue and M0 transition. > 2. We can not invoke local_bh_enable() when irqs are disabled, so move > read_lock_irqsave() under the mhi_gen_tre() since we add write_lock_bh() in > mhi_gen_tre(). > 3. Unlock xfer_cb to prevent potential lockup > Applied to mhi-next! - Mani > v1 -> v2: > Added write_unlock_bh(&mhi_chan->lock) in mhi_gen_tre() before return > because of error process. > > v2 -> v3: > 1. split protecting WP and unlocking xfer_cb into two patches > 2. Add a new patch to stop processing buffer and eventof a disabled or > stopped channel. > > v3 -> v4: > 1. Modify commit message > 2. Add unlock operation before return error > > v4 -> v5: > 1. Squash "protecting WP" and "Take irqsave lock" into one patch > 2. Drop patch 3/4 of patch v4 > > Bhaumik Bhatt (1): > bus: mhi: host: Add spinlock to protect WP access when queueing TREs > > Qiang Yu (1): > bus: mhi: host: Drop chan lock before queuing buffers > > drivers/bus/mhi/host/main.c | 26 +++++++++++++++++--------- > 1 file changed, 17 insertions(+), 9 deletions(-) > > -- > 2.7.4 > >