• Jack Morgenstein's avatar
    net/mlx4_core: Fix quota handling in the QUERY_FUNC_CAP wrapper · eb456a68
    Jack Morgenstein authored
    In current kernels, the mlx4 driver running on a VM does not
    differentiate between max resource numbers for the HCA and
    max quotas -- it simply takes the quota values passed to it
    as max-resource values.
    
    However, the driver actually requires the VFs to be aware of
    the actual number of resources that the HCA was initialized with,
    for QPs, CQs, SRQs and MPTs.
    
    For QPs, CQs and SRQs, the reason is that in completion handling
    the driver must know which of the 24 bits are the actual resource
    number, and which are "padding" bits.
    
    For MPTs, also, the driver assumes knowledge of the number of MPTs
    in the system.
    
    The previous commit fixes the quota logic on the VM for the quota values
    passed to it by QUERY_FUNC_CAPS.
    
    For QPs, CQs, SRQs, and MPTs, it takes the max resource numbers
    from QUERY_HCA (and not QUERY_FUNC_CAPS).  The quotas passed
    in QUERY_FUNC_CAPS are used to report max resource number values
    in the response to ib_query_device.
    
    However, the Hypervisor driver must consider that VMs
    may be running previous kernels, and compatibility must be preserved.
    
    To resolve the incompatibility with previous kernels running on VMs,
    we deprecated the quota fields in mlx4_QUERY_FUNC_CAP.  In the
    deprecated fields, we pass the max-resource values from INIT_HCA
    
    The quota fields are moved to a new location, and the current kernel
    driver takes the proper values from that location. There is
    also a new flag in dword 0, bit 28 of the mlx4_QUERY_FUNC_CAP mailbox;
    if this flag is set, the (VM) driver takes the quota values from the
    new location.
    
    VMs running previous kernels will work properly, except that the max resource
    numbers reported in ib_query_device for these resources will be
    too high.  The Hypervisor driver will, however, enforce the quotas
    for these VMs.
    Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    eb456a68
fw.c 61.3 KB