msm: mhi_dev: Avoid MSI trigger during device cold boot scenario
In hibernate scenario, due to recent changes on host side the BHI register value is updated before M0 is issued. This causes a mismatch with the reset value 0xfffffff expectations. As a result device ends up sending an MSI to indicate ready status. This is not expected from host side, and causes race conditions where it leads the host to process MHI initialization and MHI reset concurrently in two thread contexts. This manifest into two different signatures primarily: a) M0 is acknowledged in Thread 1 context, host keep waiting for device to Acknowledged M0 sent as part of Thread 2. Device ignores the 2nd request as its already in M0. b) MMIO event ring is initialized with a primary value x, because of Thread 2 doing a re-installation the event ring base is updated by the host to another value y. The device which is only aware of the primary value send completion event with RP value corresponding to x. This is treated as a junk RP and ends up resulting in a host crash with BSOD 0xdeaddead. Change-Id: Iae0ee996ad086ff5e6430c198f29e56d994c1ef7 Signed-off-by:Subramanian Ananthanarayanan <skananth@codeaurora.org> Signed-off-by:
Gauri Joshi <gaurjosh@codeaurora.org>
Loading
Please register or sign in to comment