linux/drivers/net/mlx4
Roland Dreier fa0681d212 mlx4_core: Allocate and map sufficient ICM memory for EQ context
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: Eli Cohen <eli@mellanox.co.il>
Tested-by: Christoph Lameter <cl@linux-foundation.org>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2009-09-05 20:24:49 -07:00
..
alloc.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2008-10-23 08:16:03 -07:00
catas.c mlx4_core: Add link type autosensing 2009-03-18 19:45:11 -07:00
cmd.c mlx4_core: Handle multi-physical function devices 2009-07-06 16:10:03 -07:00
cq.c mlx4_core: Remove unnecessary includes of <linux/init.h> 2009-09-05 20:24:49 -07:00
en_cq.c mlx4_en: Fix partial rings feature 2009-05-25 00:35:53 -07:00
en_ethtool.c drivers/net/mlx4: Adjust constant 2009-07-21 13:00:46 -07:00
en_main.c mlx4_en: multiqueue support 2009-06-02 02:29:06 -07:00
en_netdev.c mlx4_en: Remove redundant refill code on RX 2009-06-21 19:18:07 -07:00
en_port.c mlx4_en: Move to SW counters for total bytes and packets 2009-04-21 01:47:07 -07:00
en_port.h mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC 2008-10-22 15:47:49 -07:00
en_resources.c mlx4_en: Assign dummy event handler for TX queue 2009-04-21 01:47:05 -07:00
en_rx.c mlx4_en: Fix read buffer overflow in mlx4_en_complete_rx_desc() 2009-08-09 21:47:01 -07:00
en_tx.c drivers/net: fixed drivers that support netpoll use ndo_start_xmit() 2009-08-23 19:51:03 -07:00
eq.c mlx4_core: Allocate and map sufficient ICM memory for EQ context 2009-09-05 20:24:49 -07:00
fw.c mlx4: Setting the correct offset for default mac address 2008-10-27 14:50:03 -04:00
fw.h mlx4_core: Multiple port type support 2008-10-22 15:38:42 -07:00
icm.c mlx4_core: Remove unnecessary includes of <linux/init.h> 2009-09-05 20:24:49 -07:00
icm.h mlx4: Update/add Mellanox Technologies copyright lines to mlx4 driver files 2008-07-25 10:32:52 -07:00
intf.c mlx4: Update/add Mellanox Technologies copyright lines to mlx4 driver files 2008-07-25 10:32:52 -07:00
main.c mlx4_core: Allocate and map sufficient ICM memory for EQ context 2009-09-05 20:24:49 -07:00
Makefile mlx4_en renamed en_params.c to en_ethtool.c 2009-06-02 02:29:04 -07:00
mcg.c mlx4_core: Remove unnecessary includes of <linux/init.h> 2009-09-05 20:24:49 -07:00
mlx4_en.h mlx4_en: Remove redundant refill code on RX 2009-06-21 19:18:07 -07:00
mlx4.h mlx4_core: Allocate and map sufficient ICM memory for EQ context 2009-09-05 20:24:49 -07:00
mr.c mlx4_core: Remove unnecessary includes of <linux/init.h> 2009-09-05 20:24:49 -07:00
pd.c mlx4_core: Remove unnecessary includes of <linux/init.h> 2009-09-05 20:24:49 -07:00
port.c mlx4_core: Don't leak mailbox for SET_PORT on Ethernet ports 2009-03-31 09:54:15 -07:00
profile.c mlx4_core: Remove unnecessary includes of <linux/init.h> 2009-09-05 20:24:49 -07:00
qp.c mlx4_core: Remove unnecessary includes of <linux/init.h> 2009-09-05 20:24:49 -07:00
reset.c mlx4_core: Remove unnecessary includes of <linux/init.h> 2009-09-05 20:24:49 -07:00
sense.c workqueue: add to_delayed_work() helper function 2009-04-02 19:04:50 -07:00
srq.c mlx4_core: Remove unnecessary includes of <linux/init.h> 2009-09-05 20:24:49 -07:00