• Mintz, Yuval's avatar
    qed: Fix race with multiple VFs · fd3c615a
    Mintz, Yuval authored
    A PF syncronizes all IOV activity relating to its VFs
    by using a single workqueue handling the work.
    The workqueue would reach a bitmask of pending VF events
    and act upon each in turn.
    
    Problem is that the indication of a VF message [which sets
    the 'vf event' bit for that VF] arrives and is set in
    the slowpath attention context, which isn't syncronized with
    the processing of the events.
    When multiple VFs are present, it's possible that PF would
    lose the indication of one of the VF's pending evens, leading
    that VF to later timeout.
    
    Instead of adding locks/barriers, simply move from a bitmask
    into a per-VF indication inside that VF entry in the PF database.
    Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@cavium.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    fd3c615a
qed_sriov.c 114 KB