From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A68AC4829E for ; Tue, 13 Feb 2024 02:08:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E045D6B0075; Mon, 12 Feb 2024 21:08:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D8EA06B007B; Mon, 12 Feb 2024 21:08:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C07E56B007D; Mon, 12 Feb 2024 21:08:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id AB75D6B0075 for ; Mon, 12 Feb 2024 21:08:18 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 7FB431C1463 for ; Tue, 13 Feb 2024 02:08:18 +0000 (UTC) X-FDA: 81785145876.18.44396DA Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) by imf21.hostedemail.com (Postfix) with ESMTP id B8AEB1C0004 for ; Tue, 13 Feb 2024 02:08:16 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OapPDFU8; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.43 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707790096; a=rsa-sha256; cv=none; b=LasobtBRKYel4Df+WAlJa3b2/QxpS9TMnlFRtqsSMpCgaTrutm1QxikrFrtd0KuLfjKj/J cDs5GJICkxNVWyEm/3L2PVg9fFeVNb+F+SIby8Qz3Gh1r82SzSvvkJhrqqHYJeTsQNSXXo 1PZU5odhhU5AHtpyayuhrmUq7U6C/GA= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OapPDFU8; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.43 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707790096; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=gCVPGq7xkTZZj+31+inSh51d7yxblFaxniCEk4ehpcI=; b=kBs7qeqk9F7LKctPuHq5LDJc9z7IeQboCalyojm9mjiLCwscclv2tmDKXiTkcUcGzQCdN2 3Dgi7eFiMBTxXlg1s3DwvQhAO/NPdXdjf3IMyPOj7GZI/iF4ZASSXmvOeTW+usmfuN1qRc unClRae7SaLBQGXsS5Ypon6+MUpvD8o= Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-33b66883de9so2714588f8f.0 for ; Mon, 12 Feb 2024 18:08:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707790095; x=1708394895; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=gCVPGq7xkTZZj+31+inSh51d7yxblFaxniCEk4ehpcI=; b=OapPDFU8RTF1+do1PprMC0jnovZa3FigSPQ62pdIxLLbiNLklKc2DM+0CLUYl0Mukm BMXxVqn6bJJ3U/vSo0dSNaabwyiRvyrqZZbME8FePGGYbUiBTdLsIFrJ0YQUXcpruIHW VxfyeQK2P6MX6VkLNOqK2BYQqTzpDostMitP41jxuw25rqx9l4tK8lXHPPUZ8Os0irs4 3uXZ6F33I5G3y/kzYUp9R5uXwn9CgBTB0o9vMwQFfCqZnRGJyAketWMgrsZ7k5yr36Kp 6N4e2EtSIUVALfy76d9Arlo2VimSHbK2226RQtL2tc8I9zyk+MdRCv3k0OtjzSxWOIhB zfSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707790095; x=1708394895; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gCVPGq7xkTZZj+31+inSh51d7yxblFaxniCEk4ehpcI=; b=o/NnnhNIQmfmAiqDOpScJwJdcFg5Io2vIDKs7x/fi0VCr8S+moUKXyJ85HYxdkKfc1 t+sNKaMw4ZKZqSOjUjGqD8Nu9kJtsYInispWQLAJtyuju6krskWQAJ+1R4oF0RNXjODq e6OEHPEfYx+OBqbNPmr3QlrijFaG4/9sVr8cQ4xODKQiidPadWP44FNn6LUnV7WC7aoF 7y5UQj3s0KWBAXUjv8W5Pc4NdbfbXM4LpDsi32sxoWyE4/EuV6wp0jC9/TWsHeh5upjk Wa5Jh+sdBNsD3X7eOyguYd+BIICbwRjuHHcNN81mNTHU/DepxlkOXrFF/IE9Tb8EuJl4 mQtQ== X-Gm-Message-State: AOJu0Yw4+6rgDL8DdKWQeYPYnFfs1yfJ6FQPWyFioco6PtGYs6bqOtEt 9AzeQg3cIsSR4XIBST9+hQ5peKD6ROk+Si+goJI8OwZUkiwZD+rCB++6LHa03z62K1Zb9IimrJu x6NjmOXUBCIqxb0gQ9QVVSnGphq8= X-Google-Smtp-Source: AGHT+IENG2Apsdf5ZioK1UUsKy3MrIM2d3d5X0J5qVxfcC51UXW8pB+wVVh8dHIS5bolNIP/auhdhhtjOLA8i80TuLs= X-Received: by 2002:adf:ead1:0:b0:33b:87c2:725f with SMTP id o17-20020adfead1000000b0033b87c2725fmr2070418wrn.64.1707790095023; Mon, 12 Feb 2024 18:08:15 -0800 (PST) MIME-Version: 1.0 References: <20240209040608.98927-1-alexei.starovoitov@gmail.com> <20240209040608.98927-15-alexei.starovoitov@gmail.com> In-Reply-To: From: Alexei Starovoitov Date: Mon, 12 Feb 2024 18:08:03 -0800 Message-ID: Subject: Re: [PATCH v2 bpf-next 14/20] libbpf: Recognize __arena global varaibles. To: Eduard Zingerman Cc: bpf , Daniel Borkmann , Andrii Nakryiko , Kumar Kartikeya Dwivedi , Tejun Heo , Barret Rhoden , Johannes Weiner , Lorenzo Stoakes , Andrew Morton , Uladzislau Rezki , Christoph Hellwig , linux-mm , Kernel Team Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: B8AEB1C0004 X-Stat-Signature: z46ipfbenbctizsnm1cc9dg33ju6tjao X-HE-Tag: 1707790096-803614 X-HE-Meta: U2FsdGVkX1+UJoyupWTTEQuxzid5FRgUjTvj6aCU2l4HQA6+vX0ISLOK8MytABIeIyGGbw6eZ8NNjEhi820WbzDxY7HOoi16B8WiB3TMPuhDWfeGlRUpr64QbL0lmva1Pd/rrub6sNRcw4dEkMnpZU1m7B72Xgneq+xZJdyVC59CzjgCmX31ZfCD0rFqVAgGXfOYDg9NgjJejTvMuZs90ZRDeQA81y1Jjfrgx/6Hu9c0k6GTeJlyOR4lyAteKA+Q9I6I3AJvSNFMBNXGv9JpRRhr8kLk26NT9kE7QtSEdmvRM7fQ96mKYC9oBDgIKqzZbHBm68FICjtQLnxaY0tNge8ucMp5DjTag68fVHSyZzxIVIkUy1p9pDNelB/VqUK9Yu6B4AUNmt0E+pYx1JLgW6Cx4tKl7n/Ky3dx6Vr6mWxtVY13sKYzpHwmmq0YvVinHvPSLVroW8p15k/ZX1AKe8GmGWYsZ2v2KHT9w4CI+tThouFyQatg4vo01UVZuhRKxCd6wQ19San7t1Ls7CYVb6Jzyb5EK99E05sSyuz851ZAEz2gJ9eNAUceIR9GcN3PuGbA9FIW4zCCRLD1wnvPiDbdLanMOj0X2WFXPTh+o8mGLbIoCkkQ0nwUm6st9Y4hwHj0DB3i1lR7SE+uvd62AyCMmz+U48efmqn/3HRSRhWB0OSzsqhjWYvm/gVLDpiRLIe7OXw74cUsrSEnKg7VFN0uEeih2k/gZwA8yyb2dnuJZqgmhs+pagjEVzSQNT86htDkJ8isgGxVEjqji9+S3nHjSGy/t42HIWVh84krDnP3DJxhKk39tWMvL8ZRkBI4U0gplP/047LPIRxHB4HDfx4rAQxEUUAUjcrqlUdLaH37MQpAbpvqXQ/asOhOQoZMe/l4Em8g/zyXsNFtKxg+VOJxt0rD+3zwPc0X1S6+4Ine5WXx3tGLq1ylJpog07U0HY0rq6W8FTvbl1utqjh vDTn65Ce ZAg4aA5+5HpXakZpQN+qp5WRySq1a0qnEuIt44cgAqpCtfZ28z9sqUv9roIYE/wRBme4ejyW+GctM1wo9oSy1LxMFcgSajSYl1je/7YLxzk4LbdhpK5Lng/1M2J81o2lrh2qDUyOeurXT+3OCiRgfkuU6pyfJoxj3yg2ifCJlFUL638w+dalU5iYAx3s3RehWSLW3HS/DkaIZcaVotVUYFhhem6KS/YsKLZCU4AwRffphGmfaFw7irJu3onRrYb+Mlg+KvMoXt9K1ltEs9YzeG6g6LL1KjRExZlw5yJ5Km0LUxaooeKmvf0uXmk4jcL7g3VP+6TZVYkwVYXshWSgL0GdnE6co8QIa0KQXqL/RDJoDVwlitaIkL4oOec0Uc5REmEOhxHXZIh8sIhG8r14acQQLt+zoDZJaOicAHBrcvMLpswrPBT899MTqqk+GYq8kroxj4fOX3Pay9fA= X-Bogosity: Ham, tests=bogofilter, spamicity=0.002331, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, Feb 12, 2024 at 4:49=E2=80=AFPM Eduard Zingerman wrote: > > On Mon, 2024-02-12 at 16:44 -0800, Alexei Starovoitov wrote: > > > I hit a strange bug when playing with patch. Consider a simple exampl= e [0]. > > > When the following BPF global variable: > > > > > > int __arena * __arena bar; > > > > > > - is commented -- the test passes; > > > - is uncommented -- in the test fails because global variable 'shared= ' is NULL. > > > > Right. That's expected, because __uint(max_entries, 1); > > The test creates an area on 1 page and it's consumed > > by int __arena * __arena bar; variable. > > Of course, one variable doesn't take the whole page. > > There could have been many arena global vars. > > But that page is not available anymore to bpf_arena_alloc_pages, > > so it returns NULL. > > My bad, thank you for explaining. Since it was a surprising behavior we can make libbpf to auto-extend max_entries with the number of pages necessary for arena global vars, but it will be surprising too. struct { __uint(type, BPF_MAP_TYPE_ARENA); __uint(map_flags, BPF_F_MMAPABLE); __ulong(map_extra, 2ull << 44); // this is start of user VMA __uint(max_entries, 1000); // this is length of user VMA in pages } arena SEC(".maps"); if libbpf adds extra pages to max_entries the user_vm_end shifts too and libbpf would need to mmap() it with that size. When all is hidden in libbpf it's fine, but still can be a surprise to see a different max_entries in map_info and bpftool map list. Not sure which way is user friendlier.