• James Smart's avatar
    scsi: lpfc: Add registration for CPU Offline/Online events · 93a4d6f4
    James Smart authored
    The recent affinitization didn't address cpu offlining/onlining.  If an
    interrupt vector is shared and the low order cpu owning the vector is
    offlined, as interrupts are managed, the vector is taken offline. This
    causes the other CPUs sharing the vector will hang as they can't get io
    completions.
    
    Correct by registering callbacks with the system for Offline/Online
    events. When a cpu is taken offline, its eq, which is tied to an interrupt
    vector is found. If the cpu is the "owner" of the vector and if the
    eq/vector is shared by other CPUs, the eq is placed into a polled mode.
    Additionally, code paths that perform io submission on the "sharing CPUs"
    will check the eq state and poll for completion after submission of new io
    to a wq that uses the eq.
    
    Similarly, when a cpu comes back online and owns an offlined vector, the eq
    is taken out of polled mode and rearmed to start driving interrupts for eq.
    
    Link: https://lore.kernel.org/r/20191105005708.7399-9-jsmart2021@gmail.comSigned-off-by: default avatarDick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: default avatarJames Smart <jsmart2021@gmail.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    93a4d6f4
lpfc_init.c 401 KB