• Gavin Shan's avatar
    powerpc/eeh: Emulate EEH recovery for VFIO devices · 5cfb20b9
    Gavin Shan authored
    When enabling EEH functionality on passed through devices (PE)
    with VFIO, the devices in the PE would be removed permanently
    from guest side. In that case, the PE remains frozen state.
    When returning PE to host, or restarting the guest again, we
    had mechanism unfreezing the PE by clearing PESTA/B frozen
    bits. However, that's not enough for some adapters, which are
    indicated as following "lspci" shows. Those adapters require
    hot reset on the parent bus to bring their firmware back to
    workable state. Otherwise, those adaptrs won't be operative
    and the host (for returning case) or the guest will fail to
    load the drivers for those adapters without exception.
    
    0000:01:00.0 Ethernet controller: Emulex Corporation OneConnect \
                 10Gb NIC (be3) (rev 02)
    0000:01:00.0 0200: 19a2:0710 (rev 02)
    0001:03:00.0 Ethernet controller: Emulex Corporation OneConnect \
                 NIC (Lancer) (rev 10)
    0001:03:00.0 0200: 10df:e220 (rev 10)
    
    The patch adds mechanism to emulate EEH recovery (for hot reset
    on parent PCI bus) on 3 gates to fix the issue: open/release one
    adapter of the PE, enable EEH functionality on one adapter of the
    PE.
    Reported-by: default avatarMurilo Fossa Vicentini <muvic@br.ibm.com>
    Signed-off-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    5cfb20b9
eeh.h 14.3 KB