[RHEL7,COMMIT] net/drivers/i40e: suppress high order allocation warning

Submitted by Konstantin Khorenko on Dec. 19, 2018, 9:25 a.m.

Details

Message ID 201812190925.wBJ9PB27004677@finist-ce7.sw.ru
State New
Series "net/drivers/i40e: suppress high order allocation warning"
Headers show

Commit Message

Konstantin Khorenko Dec. 19, 2018, 9:25 a.m.
The commit is pushed to "branch-rh7-3.10.0-957.1.3.vz7.83.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-957.1.3.vz7.83.4
------>
commit 483f8f01c5537f9551f4f7203a32873452b3cad8
Author: Konstantin Khorenko <khorenko@virtuozzo.com>
Date:   Wed Dec 19 12:16:44 2018 +0300

    net/drivers/i40e: suppress high order allocation warning
    
    If we use RDMA over Intel X722 NICs we get complains about 3rd order
    allocation in i40e_setup_tx_descriptors().
    
      bi_size = sizeof(struct i40e_tx_buffer) * tx_ring->count;
    
    sizeof(struct i40e_tx_buffer) == 40 bytes and
    tx_ring->count can easily be I40E_DEFAULT_NUM_DESCRIPTORS == 512,
    so total allocation size is 20480 bytes.
    
    tx_ring is used for DMA, so we cannot switch to kvmalloc() here,
    allocation happens on interface UP and on some parameters
    change via ethtool, so it's not an often case,
    so let's just suppress the warning here.
    
    https://pmc.acronis.com/browse/VSTOR-18622
    
    Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com>
---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 4edb18c5a04c..70974759169c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -1322,7 +1322,7 @@  int i40e_setup_tx_descriptors(struct i40e_ring *tx_ring)
 	/* warn if we are about to overwrite the pointer */
 	WARN_ON(tx_ring->tx_bi);
 	bi_size = sizeof(struct i40e_tx_buffer) * tx_ring->count;
-	tx_ring->tx_bi = kzalloc(bi_size, GFP_KERNEL);
+	tx_ring->tx_bi = kzalloc(bi_size, GFP_KERNEL | __GFP_NOWARN);
 	if (!tx_ring->tx_bi)
 		goto err;