The setup phase of the IPA driver occurs in one of two ways. Normally, it is done directly by the main driver probe function. But some systems (those having a "modem-init" DTS property) don't start setup until an SMP2P interrupt (sent by the modem) arrives. Because it isn't performed by the probe function, setup on "modem-init" systems could be underway at the time a driver remove (or shutdown) request arrives (or vice-versa). This situation can lead to hardware state not being cleaned up properly. This series addresses this problem by having the driver remove function disable the setup interrupt. A consequence of this is that setup will complete if it is underway when the remove function is called. So now, when removing the driver, setup: - will have already completed; - is underway, and will complete before proceeding; or - will not have begun (and will not occur). -Alex PS These patches might not back-port cleanly; I'll gladly provide equivalent code for older kernel releases if needed. Alex Elder (2): net: ipa: directly disable ipa-setup-ready interrupt net: ipa: separate disabling setup from modem stop drivers/net/ipa/ipa_main.c | 6 ++++++ drivers/net/ipa/ipa_modem.c | 6 +++--- drivers/net/ipa/ipa_smp2p.c | 21 ++++++++++----------- drivers/net/ipa/ipa_smp2p.h | 7 +++---- 4 files changed, 22 insertions(+), 18 deletions(-) -- 2.32.0