• Alex Elder's avatar
    net: ipa: separate disabling setup from modem stop · 8afc7e47
    Alex Elder authored
    The IPA setup_complete flag is set at the end of ipa_setup(), when
    the setup phase of initialization has completed successfully.  This
    occurs as part of driver probe processing, or (if "modem-init" is
    specified in the DTS file) it is triggered by the "ipa-setup-ready"
    SMP2P interrupt generated by the modem.
    
    In the latter case, it's possible for driver shutdown (or remove) to
    begin while setup processing is underway, and this can't be allowed.
    The problem is that the setup_complete flag is not adequate to signal
    that setup is underway.
    
    If setup_complete is set, it will never be un-set, so that case is
    not a problem.  But if setup_complete is false, there's a chance
    setup is underway.
    
    Because setup is triggered by an interrupt on a "modem-init" system,
    there is a simple way to ensure the value of setup_complete is safe
    to read.  The threaded handler--if it is executing--will complete as
    part of a request to disable the "ipa-modem-ready" interrupt.  This
    ...
    8afc7e47
ipa_main.c 24.5 KB