]> git.openfabrics.org - ~shefty/rdma-win.git/commit
[MLX4] Allocate and map sufficient ICM memory for EQ context. [mlnx: 4946]
authorleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Mon, 26 Oct 2009 10:30:10 +0000 (10:30 +0000)
committerleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Mon, 26 Oct 2009 10:30:10 +0000 (10:30 +0000)
commit235829a03ee85ada3dfc51bfcae5b4383ff07339
tree7fa8618e6406ae9e8bc728e33fff4432ebf73383
parentd4dd5c2f4869221f3edee9c8478077c10895867b
[MLX4] Allocate and map sufficient ICM memory for EQ context. [mlnx: 4946]

    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.

git-svn-id: svn://openib.tc.cornell.edu/gen1@2515 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
trunk/hw/mlx4/kernel/bus/net/eq.c
trunk/hw/mlx4/kernel/bus/net/mlx4.h
trunk/hw/mlx4/kernel/bus/net/profile.c
trunk/hw/mlx4/kernel/inc/l2w.h