From patchwork Fri Oct 2 10:18:22 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konstantin Khlebnikov X-Patchwork-Id: 525446 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id E6323140157 for ; Fri, 2 Oct 2015 20:26:20 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yandex-team.ru header.i=@yandex-team.ru header.b=b+2rwEhw; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751904AbbJBK0Q (ORCPT ); Fri, 2 Oct 2015 06:26:16 -0400 Received: from forward-corp1o.mail.yandex.net ([37.140.190.172]:46554 "EHLO forward-corp1o.mail.yandex.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750730AbbJBK0P (ORCPT ); Fri, 2 Oct 2015 06:26:15 -0400 X-Greylist: delayed 468 seconds by postgrey-1.27 at vger.kernel.org; Fri, 02 Oct 2015 06:26:15 EDT Received: from smtpcorp4.mail.yandex.net (smtpcorp4.mail.yandex.net [95.108.252.2]) by forward-corp1o.mail.yandex.net (Yandex) with ESMTP id A0DB33920558; Fri, 2 Oct 2015 13:18:22 +0300 (MSK) Received: from smtpcorp4.mail.yandex.net (localhost [127.0.0.1]) by smtpcorp4.mail.yandex.net (Yandex) with ESMTP id 6EA852C02C0; Fri, 2 Oct 2015 13:18:22 +0300 (MSK) Received: from unknown (unknown [2a02:6b8:0:40c:1d94:f128:123b:8ff5]) by smtpcorp4.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id tTozrmCyyW-IMCWQtnK; Fri, 2 Oct 2015 13:18:22 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client certificate not present) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1443781102; bh=Igf79IC9SQzoMbKqo6MK6p794StQEs+eaG799rXdoqk=; h=Subject:From:To:Cc:Date:Message-ID:User-Agent:MIME-Version: Content-Type:Content-Transfer-Encoding; b=b+2rwEhwf9MMVIdBPxwBiOAdheQ+9rE1Q7qbaxqJJzeqUfX0CwDB4JRPjBo7NRfhE fx8ENjBNQ9g3XGqbMBIiND8Qhb0co4hMgXOe47FqlZ8S8PpkutxK405yzIYRwN+yDc D9rIxD2Z2IfrTcqjsFBUw+z/zLI9DW1uUk8ov+xE= Authentication-Results: smtpcorp4.mail.yandex.net; dkim=pass header.i=@yandex-team.ru Subject: [PATCH] ovs: do not allocate memory from offline numa node From: Konstantin Khlebnikov To: dev@openvswitch.org, Pravin Shelar , "David S. Miller" Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Vlastimil Babka , linux-mm@kvack.org Date: Fri, 02 Oct 2015 13:18:22 +0300 Message-ID: <20151002101822.12499.27658.stgit@buzz> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When openvswitch tries allocate memory from offline numa node 0: stats = kmem_cache_alloc_node(flow_stats_cache, GFP_KERNEL | __GFP_ZERO, 0) It catches VM_BUG_ON(nid < 0 || nid >= MAX_NUMNODES || !node_online(nid)) [ replaced with VM_WARN_ON(!node_online(nid)) recently ] in linux/gfp.h This patch disables numa affinity in this case. Signed-off-by: Konstantin Khlebnikov Acked-by: Pravin B Shelar --- <4>[ 24.368805] ------------[ cut here ]------------ <2>[ 24.368846] kernel BUG at include/linux/gfp.h:325! <4>[ 24.368868] invalid opcode: 0000 [#1] SMP <4>[ 24.368892] Modules linked in: openvswitch vxlan udp_tunnel ip6_udp_tunnel gre libcrc32c kvm_amd kvm crc32_pclmul ghash_clmulni_intel aesni_intel ablk_helper cryptd lrw mgag200 ttm drm_kms_helper drm gf128mul glue_helper serio_raw aes_x86_64 sysimgblt sysfillrect syscopyarea sp5100_tco amd64_edac_mod edac_core edac_mce_amd i2c_piix4 k10temp fam15h_power microcode raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq raid1 raid0 igb multipath i2c_algo_bit i2c_core linear dca psmouse ptp ahci pata_atiixp pps_core libahci <4>[ 24.369225] CPU: 22 PID: 987 Comm: ovs-vswitchd Not tainted 3.18.19-24 #1 <4>[ 24.369255] Hardware name: Supermicro H8DGU/H8DGU, BIOS 3.0b 05/07/2013 <4>[ 24.369286] task: ffff8807f2433240 ti: ffff8807ec9a0000 task.ti: ffff8807ec9a0000 <4>[ 24.369317] RIP: 0010:[] [] new_slab+0x2d4/0x380 <4>[ 24.369359] RSP: 0018:ffff8807ec9a35d8 EFLAGS: 00010246 <4>[ 24.369383] RAX: 0000000000000000 RBX: ffff8807ff403c00 RCX: 0000000000000000 <4>[ 24.369412] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00000000002012d0 <4>[ 24.369441] RBP: ffff8807ec9a3608 R08: ffff8807f193cfe0 R09: 000000010080000a <4>[ 24.369471] R10: 00000000f193cf01 R11: 0000000000015f38 R12: 0000000000000000 <4>[ 24.369501] R13: 0000000000000080 R14: 0000000000000000 R15: 00000000000000d0 <4>[ 24.369531] FS: 00007febb0cbe980(0000) GS:ffff8807ffd80000(0000) knlGS:0000000000000000 <4>[ 24.369563] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 <4>[ 24.369588] CR2: 00007efc53abc1b8 CR3: 00000007f213f000 CR4: 00000000000407e0 <4>[ 24.369618] Stack: <4>[ 24.369630] ffff8807ec9a3618 0000000000000000 0000000000000000 ffff8807ffd958c0 <4>[ 24.369669] ffff8807ff403c00 00000000000080d0 ffff8807ec9a36f8 ffffffff816cc548 <4>[ 24.370755] ffff8807ec9a3708 0000000000000296 0000000000000004 0000000000000000 <4>[ 24.371777] Call Trace: <4>[ 24.372929] [] __slab_alloc+0x33b/0x459 <4>[ 24.374179] [] ? ovs_flow_alloc+0x59/0x110 [openvswitch] <4>[ 24.375390] [] ? get_page_from_freelist+0x483/0x9f0 <4>[ 24.376623] [] ? memzero_explicit+0xe/0x10 <4>[ 24.377767] [] ? ovs_flow_alloc+0x59/0x110 [openvswitch] <4>[ 24.378951] [] kmem_cache_alloc_node+0x9c/0x1b0 <4>[ 24.379916] [] ? kmem_cache_alloc+0x18b/0x1a0 <4>[ 24.390806] [] ? ovs_flow_alloc+0x1d/0x110 [openvswitch] <4>[ 24.391779] [] ovs_flow_alloc+0x59/0x110 [openvswitch] <4>[ 24.392875] [] ovs_flow_cmd_new+0x5b/0x360 [openvswitch] <4>[ 24.394004] [] ? __alloc_pages_nodemask+0x16c/0xaf0 <4>[ 24.394973] [] ? __alloc_skb+0x87/0x2a0 <4>[ 24.395926] [] ? nla_parse+0x90/0x110 <4>[ 24.476276] [] genl_family_rcv_msg+0x373/0x3d0 <4>[ 24.477704] [] ? __kmalloc_node_track_caller+0x6c/0x220 <4>[ 24.478859] [] genl_rcv_msg+0x44/0x80 <4>[ 24.479987] [] ? genl_family_rcv_msg+0x3d0/0x3d0 <4>[ 24.481325] [] netlink_rcv_skb+0xb9/0xe0 <4>[ 24.482466] [] genl_rcv+0x2c/0x40 <4>[ 24.483554] [] netlink_unicast+0x12b/0x1c0 <4>[ 24.484739] [] netlink_sendmsg+0x392/0x6d0 <4>[ 24.485942] [] sock_sendmsg+0xaf/0xc0 <4>[ 24.486953] [] ? netlink_sendmsg+0x202/0x6d0 <4>[ 24.487969] [] ___sys_sendmsg.part.19+0x322/0x330 <4>[ 24.489167] [] ? SYSC_sendto+0xf9/0x130 <4>[ 24.490217] [] ___sys_sendmsg+0x4a/0x70 <4>[ 24.491162] [] __sys_sendmsg+0x49/0x90 <4>[ 24.492082] [] SyS_sendmsg+0x19/0x20 <4>[ 24.493181] [] system_call_fastpath+0x12/0x17 <4>[ 24.494124] Code: 40 e9 ea fe ff ff 90 e8 6b 69 ff ff 49 89 c4 e9 07 fe ff ff 4c 89 f7 ff d0 e9 26 ff ff ff 49 c7 04 06 00 00 00 00 e9 3c ff ff ff <0f> 0b ba 00 10 00 00 be 5a 00 00 00 4c 89 ef 48 d3 e2 e8 65 2a <1>[ 24.496071] RIP [] new_slab+0x2d4/0x380 <4>[ 24.497152] RSP <4>[ 24.498945] ---[ end trace 6f97360ff4a9ee45 ]--- --- net/openvswitch/flow_table.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/net/openvswitch/flow_table.c b/net/openvswitch/flow_table.c index f2ea83ba4763..c7f74aab34b9 100644 --- a/net/openvswitch/flow_table.c +++ b/net/openvswitch/flow_table.c @@ -93,7 +93,8 @@ struct sw_flow *ovs_flow_alloc(void) /* Initialize the default stat node. */ stats = kmem_cache_alloc_node(flow_stats_cache, - GFP_KERNEL | __GFP_ZERO, 0); + GFP_KERNEL | __GFP_ZERO, + node_online(0) ? 0 : NUMA_NO_NODE); if (!stats) goto err;