1. 17 2月, 2016 1 次提交
    • H
      net/mlx4_core: Set UAR page size to 4KB regardless of system page size · 85743f1e
      Huy Nguyen 提交于
      problem description:
      
      The current code sets UAR page size equal to system page size.
      The ConnectX-3 and ConnectX-3 Pro HWs require minimum 128 UAR pages.
      The mlx4 kernel drivers are not loaded if there is less than 128 UAR pages.
      
      solution:
      
      Always set UAR page to 4KB. This allows more UAR pages if the OS
      has PAGE_SIZE larger than 4KB. For example, PowerPC kernel use 64KB
      system page size, with 4MB uar region, there are 4MB/2/64KB = 32
      uars (half for uar, half for blueflame). This does not meet minimum 128
      UAR pages requirement. With 4KB UAR page, there are 4MB/2/4KB = 512 uars
      which meet the minimum requirement.
      
      Note that only codes in mlx4_core that deal with firmware know that uar
      page size is 4KB. Codes that deal with usr page in cq and qp context
      (mlx4_ib, mlx4_en and part of mlx4_core) still have the same assumption
      that uar page size equals to system page size.
      
      Note that with this implementation, on 64KB system page size kernel, there
      are 16 uars per system page but only one uars is used. The other 15
      uars are ignored because of the above assumption.
      
      Regarding SR-IOV, mlx4_core in hypervisor will set the uar page size
      to 4KB and mlx4_core code in virtual OS will obtain the uar page size from
      firmware.
      
      Regarding backward compatibility in SR-IOV, if hypervisor has this new code,
      the virtual OS must be updated. If hypervisor has old code, and the virtual
      OS has this new code, the new code will be backward compatible with the
      old code. If the uar size is big enough, this new code in VF continues to
      work with 64 KB uar page size (on PowerPc kernel). If the uar size does not
      meet 128 uars requirement, this new code not loaded in VF and print the same
      error message as the old code in Hypervisor.
      Signed-off-by: NHuy Nguyen <huyn@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      85743f1e
  2. 28 1月, 2015 1 次提交
  3. 26 1月, 2015 1 次提交
  4. 17 1月, 2014 1 次提交
  5. 10 12月, 2013 1 次提交
    • J
      mlx4_core: Roll back round robin bitmap allocation commit for CQs, SRQs, and MPTs · 7c6d74d2
      Jack Morgenstein 提交于
      Commit f4ec9e95 "mlx4_core: Change bitmap allocator to work in round-robin fashion"
      introduced round-robin allocation (via bitmap) for all resources which allocate
      via a bitmap.
      
      Round robin allocation is desirable for mcgs, counters, pd's, UARs, and xrcds.
      These are simply numbers, with no involvement of ICM memory mapping.
      
      Round robin is required for QPs, since we had a problem with immediate
      reuse of a 24-bit QP number (commit f4ec9e95).
      
      However, for other resources which use the bitmap allocator and involve
      mapping ICM memory -- MPTs, CQs, SRQs -- round-robin is not desirable.
      
      What happens in these cases is the following:
      
      ICM memory is allocated and mapped in chunks of 256K.
      
      Since the resource allocation index goes up monotonically, the allocator
      will eventually require mapping a new chunk. Now, chunks are also unmapped
      when their reference count goes back to zero.  Thus, if a single app is
      running and starts/exits frequently we will have the following situation:
      
      When the app starts, a new chunk must be allocated and mapped.
      
      When the app exits, the chunk reference count goes back to zero, and the
      chunk is unmapped and freed. Therefore, the app must pay the cost of allocation
      and mapping of ICM memory each time it runs (although the price is paid only when
      allocating the initial entry in the new chunk).
      
      For apps which allocate MPTs/SRQs/CQs and which operate as described above,
      this presented a performance problem.
      
      We therefore roll back the round-robin allocator modification for MPTs, CQs, SRQs.
      Reported-by: NMatthew Finlay <matt@mellanox.com>
      Signed-off-by: NJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7c6d74d2
  6. 08 11月, 2013 1 次提交
  7. 08 3月, 2013 1 次提交
  8. 16 5月, 2012 1 次提交
  9. 23 1月, 2012 1 次提交
  10. 14 12月, 2011 1 次提交
  11. 01 11月, 2011 1 次提交
  12. 11 8月, 2011 1 次提交
  13. 24 3月, 2011 2 次提交
  14. 06 9月, 2009 1 次提交
  15. 23 10月, 2008 1 次提交
  16. 23 7月, 2008 1 次提交
    • R
      mlx4_core: Improve error message when not enough UAR pages are available · 76442640
      Roland Dreier 提交于
      If an mlx4 device with default FW (which gives a UAR BAR size of 8 MB)
      is used in a system with 64 KB pages, then there are only 8192/64==128
      UAR pages available.  However, the first 128 UAR pages are reserved
      for use with event queue doorbells, so no UAR pages are available to
      do anything else with, which means that the driver cannot work.
      
      The current driver fails with a fairly cryptic "Failed to allocate
      driver access region, aborting" message in this situation.  Fix the
      driver to detect the problem earlier and print out a clearer
      description of the problem and a suggestion of how to fix it (use a
      new firmware image).
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      76442640
  17. 11 10月, 2007 1 次提交
    • R
      mlx4_core: Fix section mismatches · 3d73c288
      Roland Dreier 提交于
          
      Commit ee49bd93 ("mlx4_core: Reset device when internal error is
      detected") introduced some section mismatch problems when
      CONFIG_HOTPLUG=n, because the error recovery code tears down and
      reinitializes the device after everything is loaded, which ends up
      calling into lots of code marked __devinit and __devexit from regular
      .text.  Fix this by getting rid of these now-incorrect section
      markers.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      3d73c288
  18. 09 5月, 2007 1 次提交
    • R
      IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters · 225c7b1f
      Roland Dreier 提交于
      Add an InfiniBand driver for Mellanox ConnectX adapters.  Because
      these adapters can also be used as ethernet NICs and Fibre Channel 
      HBAs, the driver is split into two modules: 
       
        mlx4_core: Handles low-level things like device initialization and 
          processing firmware commands.  Also controls resource allocation 
          so that the InfiniBand, ethernet and FC functions can share a 
          device without stepping on each other. 
       
        mlx4_ib: Handles InfiniBand-specific things; plugs into the 
          InfiniBand midlayer. 
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      225c7b1f
  19. 23 9月, 2006 1 次提交
  20. 30 3月, 2006 1 次提交
  21. 21 3月, 2006 1 次提交
    • R
      IB/mthca: Get rid of might_sleep() annotations · 399d7921
      Roland Dreier 提交于
      The might_sleep() annotations in mthca are silly -- they all occur
      shortly before calls that will end up in core functions like kmalloc()
      that will print the same warning in an unsafe context anyway.  In
      fact, beyond cluttering the source, we're actually bloating text with
      CONFIG_DEBUG_SPINLOCK_SLEEP and/or CONFIG_PREEMPT_VOLUNTARY set.
      
      With both options set, getting rid of the might_sleep()s saves a lot:
      add/remove: 0/0 grow/shrink: 0/7 up/down: 0/-171 (-171)
      function                                     old     new   delta
      mthca_pd_alloc                               132     109     -23
      mthca_init_cq                                969     946     -23
      mthca_mr_alloc                               592     568     -24
      mthca_pd_free                                 67      42     -25
      mthca_free_mr                                219     194     -25
      mthca_free_cq                                570     545     -25
      mthca_fmr_alloc                              742     716     -26
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      399d7921
  22. 27 8月, 2005 1 次提交
  23. 08 7月, 2005 1 次提交
  24. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4