linux/drivers/infiniband/hw/mthca
Roland Dreier e8bb4beb2b IB/mthca: Keep free count for MTT buddy allocator
MTT entries are allocated with a buddy allocator, which just keeps
bitmaps for each level of the buddy table.  However, all free space
starts out at the highest order, and small allocations start scanning
from the lowest order.  When the lowest order tables have no free
space, this can lead to scanning potentially millions of bits before
finding a free entry at a higher order.

We can avoid this by just keeping a count of how many free entries
each order has, and skipping the bitmap scan when an order is
completely empty.  This provides a nice performance boost for a
negligible increase in memory usage.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
2008-07-22 14:20:05 -07:00
..
Kconfig IB: Use menuconfig for InfiniBand menu 2007-07-09 20:12:26 -07:00
Makefile IB/mthca: Always build debugging code unless CONFIG_EMBEDDED=y 2006-04-02 14:39:20 -07:00
mthca_allocator.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_av.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_catas.c IB/mthca: Use round_jiffies() for catastrophic error polling timer 2008-07-14 23:48:52 -07:00
mthca_cmd.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_cmd.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_config_reg.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_cq.c RDMA/core: Add memory management extensions support 2008-07-14 23:48:45 -07:00
mthca_dev.h IB/mthca: Keep free count for MTT buddy allocator 2008-07-22 14:20:05 -07:00
mthca_doorbell.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_eq.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_mad.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_main.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_mcg.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_memfree.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_memfree.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_mr.c IB/mthca: Keep free count for MTT buddy allocator 2008-07-22 14:20:05 -07:00
mthca_pd.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_profile.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_profile.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_provider.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_provider.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_qp.c IB/mthca: Fix check of max_send_sge for special QPs 2008-07-14 23:48:52 -07:00
mthca_reset.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_srq.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_uar.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_user.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_wqe.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00