1. 30 3月, 2010 1 次提交
    • T
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking... · 5a0e3ad6
      Tejun Heo 提交于
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
      
      percpu.h is included by sched.h and module.h and thus ends up being
      included when building most .c files.  percpu.h includes slab.h which
      in turn includes gfp.h making everything defined by the two files
      universally available and complicating inclusion dependencies.
      
      percpu.h -> slab.h dependency is about to be removed.  Prepare for
      this change by updating users of gfp and slab facilities include those
      headers directly instead of assuming availability.  As this conversion
      needs to touch large number of source files, the following script is
      used as the basis of conversion.
      
        http://userweb.kernel.org/~tj/misc/slabh-sweep.py
      
      The script does the followings.
      
      * Scan files for gfp and slab usages and update includes such that
        only the necessary includes are there.  ie. if only gfp is used,
        gfp.h, if slab is used, slab.h.
      
      * When the script inserts a new include, it looks at the include
        blocks and try to put the new include such that its order conforms
        to its surrounding.  It's put in the include block which contains
        core kernel includes, in the same order that the rest are ordered -
        alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
        doesn't seem to be any matching order.
      
      * If the script can't find a place to put a new include (mostly
        because the file doesn't have fitting include block), it prints out
        an error message indicating which .h file needs to be added to the
        file.
      
      The conversion was done in the following steps.
      
      1. The initial automatic conversion of all .c files updated slightly
         over 4000 files, deleting around 700 includes and adding ~480 gfp.h
         and ~3000 slab.h inclusions.  The script emitted errors for ~400
         files.
      
      2. Each error was manually checked.  Some didn't need the inclusion,
         some needed manual addition while adding it to implementation .h or
         embedding .c file was more appropriate for others.  This step added
         inclusions to around 150 files.
      
      3. The script was run again and the output was compared to the edits
         from #2 to make sure no file was left behind.
      
      4. Several build tests were done and a couple of problems were fixed.
         e.g. lib/decompress_*.c used malloc/free() wrappers around slab
         APIs requiring slab.h to be added manually.
      
      5. The script was run on all .h files but without automatically
         editing them as sprinkling gfp.h and slab.h inclusions around .h
         files could easily lead to inclusion dependency hell.  Most gfp.h
         inclusion directives were ignored as stuff from gfp.h was usually
         wildly available and often used in preprocessor macros.  Each
         slab.h inclusion directive was examined and added manually as
         necessary.
      
      6. percpu.h was updated not to include slab.h.
      
      7. Build test were done on the following configurations and failures
         were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
         distributed build env didn't work with gcov compiles) and a few
         more options had to be turned off depending on archs to make things
         build (like ipr on powerpc/64 which failed due to missing writeq).
      
         * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
         * powerpc and powerpc64 SMP allmodconfig
         * sparc and sparc64 SMP allmodconfig
         * ia64 SMP allmodconfig
         * s390 SMP allmodconfig
         * alpha SMP allmodconfig
         * um on x86_64 SMP allmodconfig
      
      8. percpu.h modifications were reverted so that it could be applied as
         a separate patch and serve as bisection point.
      
      Given the fact that I had only a couple of failures from tests on step
      6, I'm fairly confident about the coverage of this conversion patch.
      If there is a breakage, it's likely to be something in one of the arch
      headers which should be easily discoverable easily on most builds of
      the specific arch.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Guess-its-ok-by: NChristoph Lameter <cl@linux-foundation.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
      5a0e3ad6
  2. 19 3月, 2010 1 次提交
  3. 08 1月, 2010 1 次提交
  4. 07 1月, 2010 1 次提交
  5. 15 10月, 2009 1 次提交
  6. 08 10月, 2009 1 次提交
  7. 06 9月, 2009 3 次提交
    • Y
      mlx4_core: Avoid double free_icms · 1af92e2a
      Yevgeny Petrilin 提交于
      On the error path of mlx4_init_hca(), mlx4_close_hca() is called,
      followed by mlx4_free_icms() and mlx4_UNMAP_FA().  But both those
      functions are also called from mlx4_close_hca(), which leads to a
      double free.
      Signed-off-by: NYevgeny Petrilin <yevgenyp@mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      1af92e2a
    • R
      mlx4_core: Allocate and map sufficient ICM memory for EQ context · fa0681d2
      Roland Dreier 提交于
      The current implementation allocates a single host page for EQ context
      memory, which was OK when we only allocated a few EQs.  However, since
      we now allocate an EQ for each CPU core, this patch removes the
      hard-coded limit (which we exceed with 4 KB pages and 128 byte EQ
      context entries with 32 CPUs) and uses the same ICM table code as all
      other context tables, which ends up simplifying the code quite a bit
      while fixing the problem.
      
      This problem was actually hit in practice on a dual-socket Nehalem box
      with 16 real hardware threads and sufficiently odd ACPI tables that it
      shows on boot
      
          SMP: Allowing 32 CPUs, 16 hotplug CPUs
      
      so num_possible_cpus() ends up 32, and mlx4 ends up creating 33 MSI-X
      interrupts and 33 EQs.  This mlx4 bug means that mlx4 can't even
      initialize at all on this quite mainstream system.
      
      Cc: <stable@kernel.org>
      Reported-by: NEli Cohen <eli@mellanox.co.il>
      Tested-by: NChristoph Lameter <cl@linux-foundation.org>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      fa0681d2
    • R
      mlx4_core: Use pci_request_regions() · a01df0fe
      Roland Dreier 提交于
      The old code used two calls to pci_request_region() to get the two BARs
      for the mlx4 device, for no particularly good reason.  Clean up the code
      a little by converting this to a single call to pci_request_regions().
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      a01df0fe
  8. 07 7月, 2009 2 次提交
  9. 28 5月, 2009 1 次提交
  10. 22 4月, 2009 1 次提交
  11. 07 4月, 2009 2 次提交
  12. 19 3月, 2009 1 次提交
  13. 28 2月, 2009 1 次提交
  14. 10 1月, 2009 1 次提交
    • R
      mlx4_core: Fix warning from min() · 70cb9253
      Roland Dreier 提交于
      Recent cpumask changes changed num_possible_cpus() from returning an int
      to returning an unsigned int.  This means that doing
      
          min(num_possible_cpus(), <int expression>)
      
      now produces a warning like
      
          drivers/net/mlx4/main.c: In function 'mlx4_enable_msi_x':
          drivers/net/mlx4/main.c:915: warning: comparison of distinct pointer types lacks a cast
      
      Fix this by using min_t(int, ...).
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      70cb9253
  15. 22 12月, 2008 1 次提交
  16. 29 11月, 2008 1 次提交
  17. 23 10月, 2008 5 次提交
  18. 26 7月, 2008 1 次提交
  19. 23 7月, 2008 1 次提交
  20. 15 7月, 2008 1 次提交
    • V
      mlx4_core: Use MOD_STAT_CFG command to get minimal page size · 2d928651
      Vladimir Sokolovsky 提交于
      There was a bug in some versions of the mlx4 driver in
      mlx4_alloc_fmr(), which hardcoded the minimum acceptable page_shift to
      be 12.  However, new ConnectX firmware can support a minimum
      page_shift of 9 (log_pg_sz of 9 returned by QUERY_DEV_LIM) -- so with
      old drivers, ib_fmr_alloc() would fail for ULPs using the device
      minimum when creating FMRs.
      
      To preserve firmware compatibility with released mlx4 drivers, the
      firmware will continue to return 12 as before for log_page_sz in
      QUERY_DEV_CAP for these drivers.  However, to enable new drivers to
      take advantage of the available smaller page size, the mlx4 driver now
      first sets the log_pg_sz to the device minimum by setting a
      log_page_sz value to 0 via the MOD_STAT_CFG command and then reading
      the real minimum via QUERY_DEV_CAP.
      Signed-off-by: NJack Morgenstein <jackm@mellanox.co.il>
      Signed-off-by: NVladimir Sokolovsky <vlad@mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      2d928651
  21. 24 4月, 2008 1 次提交
  22. 17 4月, 2008 3 次提交
  23. 05 2月, 2008 3 次提交
  24. 14 10月, 2007 1 次提交
  25. 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
  26. 10 10月, 2007 3 次提交