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 11147C4829A for ; Tue, 13 Feb 2024 23:11:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 73A086B0089; Tue, 13 Feb 2024 18:11:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E9E86B00A8; Tue, 13 Feb 2024 18:11:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5BAF36B00A9; Tue, 13 Feb 2024 18:11:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 48F1C6B0089 for ; Tue, 13 Feb 2024 18:11:21 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 15A41C0C8A for ; Tue, 13 Feb 2024 23:11:21 +0000 (UTC) X-FDA: 81788328762.22.31A9D84 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by imf21.hostedemail.com (Postfix) with ESMTP id 08F551C0019 for ; Tue, 13 Feb 2024 23:11:18 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=LoiJAlWj; spf=pass (imf21.hostedemail.com: domain of eddyz87@gmail.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=eddyz87@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707865879; 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=zwZNV60Bg7J4ukK9pApuB5uU5L+uWW9Uc7N8fGemWv4=; b=XkX9hbu61UsFCO2iTM8T9oXhXcig6tg4KqbZOQa8lqtEHyTOCuzh1B6LbOtxGzJ5zk49Zo MJRDBdIojwwNNaVj836IpsGnwdEqyphL5ZRMXtn4dk/10Fv8GsXp5SvdnYLzhBlYX/tpOu MzxtRmm5KRiWqLu1NCR0pbbcgwQIgm8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707865879; a=rsa-sha256; cv=none; b=H1C5au6715AIKeKohYglPZ1RMpRtRBh1qj+yNnfPG8gX0C510vhxqwgDtVTnxDzkLMKujY fOCkEAOzH38gxLqltL7scsvkyQmXjgvIOJPTa+d3U3Mf6QjuvlZAwWcKiJymaneYf/qvWL DkCaaoHbujGafMW177qJywlR+u6IoJ8= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=LoiJAlWj; spf=pass (imf21.hostedemail.com: domain of eddyz87@gmail.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=eddyz87@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a3d002bc6f7so131008766b.3 for ; Tue, 13 Feb 2024 15:11:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707865877; x=1708470677; darn=kvack.org; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:cc:to:from:subject:message-id:from:to :cc:subject:date:message-id:reply-to; bh=zwZNV60Bg7J4ukK9pApuB5uU5L+uWW9Uc7N8fGemWv4=; b=LoiJAlWjUoNza4uokIqfaJVpySlfh566pqwyqZRYdp7d45buRaimvpMz0MSbf+G3fp t1pO5aO50FZTFot3RqW1WzOTHSIcqIyA+MlABFJZ5lVOP1XCzmhyEpnn9R/1ar8JN/x2 dLimMD4hn1WhetCnkw9z7bNT9r87uUFfii296g8qI3g6kfWgxD07unAhWLfMfxTd2mlV 8WAqeVesW00DKY0mxpKo9ehu/fwk5sjOSHuY96WRBBoRiw2k6pYSHvXOJuhn7HYDgtm5 3v99MfSRKdfJMq2+YPtQ1QFE4l1FRdpTbJkrL+3SIoen9Qv/iB3LGoMq6GukGlYrnD3o EzwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707865877; x=1708470677; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:cc:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zwZNV60Bg7J4ukK9pApuB5uU5L+uWW9Uc7N8fGemWv4=; b=GTWzM/MK2NcyBy+tyfkHJXB1iNLshTncvc5FTBz7lwIuSElK65rTIwTGeskK1gr8gI YcQX/ja/J1C41HqoYbMuBcNGvhVM1oRsdxcMClcOk1ZUd5DOZsdqUE1U0/o8tTNzxfTT vy6it3UjijSEENJQ9kydVLMuRWQi/wcuyfsF4P4m1dCba9jsNFifayHD/eDD1xgg7xlt u+oJlQWTrcgoCkqf0VEY+tDnmS8q1dRAJ6iFwDJEE2PyE7NAoyqNWc+ZxTpr6zNh5xQC 7mpxt9D3C5LI2Qz69ZVbK5eDSUDAwdJ/7QgcQ03tdSdAe9HN5/6bMSZ95KFN7Z0ndTa4 maog== X-Forwarded-Encrypted: i=1; AJvYcCVAXVBqijCRSteM7VTH3G0IY5eQNRWDgcFqCOMMW/M7dld20HyinPhZCi85U74MIwfWyQaoUedjoQeHwy0JHDswrJo= X-Gm-Message-State: AOJu0YxGL7vLDE2I1gb5wrzL1nNs2fia3d1wjHE+ypyrVROynRBXosQu RuklFECAvIZVdHaZ5tdubdl3zyOSbc4qwuzYyv+9zZPu81uAu8sd6dycFWZmxNE= X-Google-Smtp-Source: AGHT+IGGfSC7ij2uT/hYCRSkDBRZNu2Ah+JvzAM4soG7/6d8Sfr040orNq/t4ujSKod/SmD2iUb2jg== X-Received: by 2002:a17:906:513:b0:a3d:3aee:85f5 with SMTP id j19-20020a170906051300b00a3d3aee85f5mr235964eja.75.1707865877333; Tue, 13 Feb 2024 15:11:17 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCX4iq2ArCjNttVyd2AdTBHD4mbnT1iU40adRJtIV1kx20/k2Kv1uE2Vb4bEdypxNhJjuvOcylqDhN4s4cwJZjfyTNyXx5hhrY4Yg+XJE23LSVEKReP9C/CQtuwea0dJPX0ZsZcPzJvP7L23OFeVvDEp6wxXhQoWuZa+oAqSbA0xHiblJBkwNy1l0PYoclS9VcBFmeNlbzApDWqRWGKbvtpF/CvA8+hJiB1jgDMv7uTlzm9X+mLfyEPEagWmMX9dtLYvxGzQ3gnc1s9xGDugsVQ9Q3h2mWVLgPCF9KkV1dpHGySenZsKUP7JkDOJz6Kwq5KTKEPlhNtP2UjWri80u+YNIAJg+FDGhkpOMGZvHHcXPxmscBHgdwur Received: from [192.168.1.94] (host-176-36-0-241.b024.la.net.ua. [176.36.0.241]) by smtp.gmail.com with ESMTPSA id d12-20020a170906040c00b00a3c24e20d56sm1712181eja.102.2024.02.13.15.11.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Feb 2024 15:11:16 -0800 (PST) Message-ID: Subject: Re: [PATCH v2 bpf-next 14/20] libbpf: Recognize __arena global varaibles. From: Eduard Zingerman To: Alexei Starovoitov , bpf@vger.kernel.org Cc: daniel@iogearbox.net, andrii@kernel.org, memxor@gmail.com, tj@kernel.org, brho@google.com, hannes@cmpxchg.org, lstoakes@gmail.com, akpm@linux-foundation.org, urezki@gmail.com, hch@infradead.org, linux-mm@kvack.org, kernel-team@fb.com Date: Wed, 14 Feb 2024 01:11:15 +0200 In-Reply-To: <20240209040608.98927-15-alexei.starovoitov@gmail.com> References: <20240209040608.98927-1-alexei.starovoitov@gmail.com> <20240209040608.98927-15-alexei.starovoitov@gmail.com> Autocrypt: addr=eddyz87@gmail.com; prefer-encrypt=mutual; keydata=mQGNBGKNNQEBDACwcUNXZOGTzn4rr7Sd18SA5Wv0Wna/ONE0ZwZEx+sIjyGrPOIhR14/DsOr3ZJer9UJ/WAJwbxOBj6E5Y2iF7grehljNbLr/jMjzPJ+hJpfOEAb5xjCB8xIqDoric1WRcCaRB+tDSk7jcsIIiMish0diTK3qTdu4MB6i/sh4aeFs2nifkNi3LdBuk8Xnk+RJHRoKFJ+C+EoSmQPuDQIRaF9N2m4yO0eG36N8jLwvUXnZzGvHkphoQ9ztbRJp58oh6xT7uH62m98OHbsVgzYKvHyBu/IU2ku5kVG9pLrFp25xfD4YdlMMkJH6l+jk+cpY0cvMTS1b6/g+1fyPM+uzD8Wy+9LtZ4PHwLZX+t4ONb/48i5AKq/jSsb5HWdciLuKEwlMyFAihZamZpEj+9n91NLPX4n7XeThXHaEvaeVVl4hfW/1Qsao7l1YjU/NCHuLaDeH4U1P59bagjwo9d1n5/PESeuD4QJFNqW+zkmE4tmyTZ6bPV6T5xdDRHeiITGc00AEQEAAbQkRWR1YXJkIFppbmdlcm1hbiA8ZWRkeXo4N0BnbWFpbC5jb20+iQHUBBMBCgA+FiEEx+6LrjApQyqnXCYELgxleklgRAkFAmKNNQECGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQLgxleklgRAlWZAv/cJ5v3zlEyP0/jMKQBqbVCCHTirPEw+nqxbkeSO6r2FUds0NnGA9a6NPOpBH+qW7a6+n6q3sIbvH7jlss4pzLI7LYlDC6z+egTv7KR5X1xFrY1uR5UGs1beAjnzYeV2hK4yqRUfygsT0Wk5e4FiNBv4+DUZ8r0cNDkO6swJxU55DO21mcteC147+4aDoHZ40R0tsAu+brDGSSoOPpb0RWVsEf9XOBJqWW A+T7mluw nYzhLWGcczc6J71q1Dje0l5vIPaSFOgwmWD4DA+WvuxM/shH4rtWeodbv iCTce6yYIygHgUAtJcHozAlgRrL0jz44cggBTcoeXp/atckXK546OugZPnl00J3qmm5uWAznU6T5YDv2vCvAMEbz69ib+kHtnOSBvR0Jb86UZZqSb4ATfwMOWe9htGTjKMb0QQOLK0mTcrk/TtymaG+T4Fsos0kgrxqjgfrxxEhYcVNW8v8HISmFGFbqsJmFbVtgk68BcU0wgF8oFxo7u+XYQDdKbI1uQGNBGKNNQEBDADbQIdo8L3sdSWGQtu+LnFqCZoAbYurZCmUjLV3df1b+sg+GJZvVTmMZnzDP/ADufcbjopBBjGTRAY4L76T2niu2EpjclMMM3mtrOc738Kr3+RvPjUupdkZ1ZEZaWpf4cZm+4wH5GUfyu5pmD5WXX2i1r9XaUjeVtebvbuXWmWI1ZDTfOkiz/6Z0GDSeQeEqx2PXYBcepU7S9UNWttDtiZ0+IH4DZcvyKPUcK3tOj4u8GvO3RnOrglERzNCM/WhVdG1+vgU9fXO83TB/PcfAsvxYSie7u792s/I+yA4XKKh82PSTvTzg2/4vEDGpI9yubkfXRkQN28w+HKF5qoRB8/L1ZW/brlXkNzA6SveJhCnH7aOF0Yezl6TfX27w1CW5Xmvfi7X33V/SPvo0tY1THrO1c+bOjt5F+2/K3tvejmXMS/I6URwa8n1e767y5ErFKyXAYRweE9zarEgpNZTuSIGNNAqK+SiLLXt51G7P30TVavIeB6s2lCt1QKt62ccLqUAEQEAAYkBvAQYAQoAJhYhBMfui64wKUMqp1wmBC4MZXpJYEQJBQJijTUBAhsMBQkDwmcAAAoJEC4MZXpJYEQJkRAMAKNvWVwtXm/WxWoiLnXyF2WGXKoDe5+itTLvBmKcV/b1OKZF1s90V7WfSBz712eFAynEzyeezPbwU8QBiTpZcHXwQni3 IYKvsh7s t1iq+gsfnXbPz5AnS598ScZI1oP7OrPSFJkt/z4acEbOQDQs8aUqrd46PV jsdqGvKnXZxzylux29UTNby4jTlz9pNJM+wPrDRmGfchLDUmf6CffaUYCbu4FiId+9+dcTCDvxbABRy1C3OJ8QY7cxfJ+pEZW18fRJ0XCl/fiV/ecAOfB3HsqgTzAn555h0rkFgay0hAvMU/mAW/CFNSIxV397zm749ZNLA0L2dMy1AKuOqH+/B+/ImBfJMDjmdyJQ8WU/OFRuGLdqOd2oZrA1iuPIa+yUYyZkaZfz/emQwpIL1+Q4p1R/OplA4yc301AqruXXUcVDbEB+joHW3hy5FwK5t5OwTKatrSJBkydSF9zdXy98fYzGniRyRA65P0Ix/8J3BYB4edY2/w0Ip/mdYsYQljBY0A== Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.50.3 MIME-Version: 1.0 X-Rspamd-Queue-Id: 08F551C0019 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: 6irppajxyt5eey3daktaib69uuq4qt88 X-HE-Tag: 1707865878-101036 X-HE-Meta: U2FsdGVkX19Ev3XMBOXhV2l9ZMejU1EuA9MPxnO0DOUgUCF/GXj7ImAfgMMxIZACCjYUPjXbbURKz6GcmRo/8ivjTGTR3d7zfwGUhlMbmMZz0oR00yYXNPZX2rxUkdPO+PC7u28S2t8GtXZFH7bw4sy7ZbBBudAqRYPfawKMCLdzOi8UXH2EiRMUdNxWyx7lKevadvdwOiw3fKd+ApYHx9TbVaOSNpYQm8Lde5Qjqsp4yWWnWE/q0RZJsvaVoegZm7rUeR3dK+C/y2mjNjdPd0nQ+LayMOcPgNJb7YFYOm5abqObuVoeGA6GEJBWFJZacRi0j6PqpJUpCcCeICv2ZJig+S+S3zzyMOCE6EJKbgTKnfk+Y9lF/m5PfyBvv6ZjJA1sFlcV+Mov2gvjbkna2kgOlPYXfwQ1yhLjucz0HoY6IjTi8iyACAM0p6PN69LtYN7aF2CcEP8wYwgR5hQznUEyD1XM9y6aZZOjlpz+3lzoccCTdCm8puiOiZNHA60YLXCeGRUQxdOY7o2FFY517iEfoGyPqDLqoNIiaEMn2BXojviH4jTs+doHvQYjQhHpeH4vopi1S/F0rTnziDpsDmUJcDCFZUb986B9xeOn7pp3MW3i/JT10cuJdolCx2rgvtC43AQ2iJAikVR0qjBFhar36a+t1SP3vn8VnlcsluZ6SgEoHweEdMPLW08LhVgvF0fF7ru4EgEzHUY7H4Ey/KAErMNs0v91vN0145yP4PNJsty0LK3MTHGsjKfiCXfml1BWFTg7iJvuv0ETPbzBBxJFtvsLXjPlHbX0zgonankr+yjzXWrCx8M6uG49949HCOmhSpK6+qHOl6tLvCn2xWjSmaMdcfsvZfx2juN6D8CnlvADXPi9g5ZkXGRQLFif33UmHkXfSEz0cfnyWrP2aKrTe0YlYT0MefdTAc2GNw87KI/Z9F3WjshUsEc6anHoGEOIAj77C9n7ZxVVF8X eS/OFNrP cALARh25kcVjKsr8mCH6+8I6LoH2Xlk9rkuSEkPU9JKUsxZ2bIbBxP+E+1MZD9upLFPig6ckh1DgyZwdJETN5Yctk05i4uWSeb+7GmUZsm/p/KRu/wDxfp5uo+AeP1ddXtTCqWxGzsjHlHVqHn+MNxW/Ml1MhkvwEXfSoWq2D7WSNn1GfiZpXC+Xi4hadr1ge7sEyejfdSJ2YgYAY2ngNvMppoi3V9nMpfQABrH4QWv9yz3IMjOpvBcP63PV0gFHtMHaawKyaXOJlJrIikRZIpc8E4f6CrAAxfuecq0b2DPZ8yyLsvC8dKLSshnMYCuYXrwjYN8mqoY/3TOipyqYWhBjEMBqfTngQKPTZY9Hq2/RPaWBM+h69WqWpj0pJxjQRdLAimOxRJVcp+rDJI1ZD6A+7Gag8j0El5kAEbp3IbiGhRjO7t2eQXYNEe+ptTBfN/rFxbKNAQskEgJhLDstu6X5CWYzDnFEX9nKnvBDeflhNrl/2rZY4irHsxEHCZaWhEYQP5k1WIjhnY6zb1PVAYVNd6+/LhiGZIyMopXiBy9jpkxO0wGGULJS0slaRHvVX22zbBQ9MC44NWkgT5aouhtrmhcECWAEQoWCK/csI+GMYW0E= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, 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 Thu, 2024-02-08 at 20:06 -0800, Alexei Starovoitov wrote: > From: Alexei Starovoitov >=20 > LLVM automatically places __arena variables into ".arena.1" ELF section. > When libbpf sees such section it creates internal 'struct bpf_map' LIBBPF= _MAP_ARENA > that is connected to actual BPF_MAP_TYPE_ARENA 'struct bpf_map'. > They share the same kernel's side bpf map and single map_fd. > Both are emitted into skeleton. Real arena with the name given by bpf pro= gram > in SEC(".maps") and another with "__arena_internal" name. > All global variables from ".arena.1" section are accessible from user spa= ce > via skel->arena->name_of_var. >=20 > For bss/data/rodata the skeleton/libbpf perform the following sequence: > 1. addr =3D mmap(MAP_ANONYMOUS) > 2. user space optionally modifies global vars > 3. map_fd =3D bpf_create_map() > 4. bpf_update_map_elem(map_fd, addr) // to store values into the kernel > 5. mmap(addr, MAP_FIXED, map_fd) > after step 5 user spaces see the values it wrote at step 2 at the same ad= dresses >=20 > arena doesn't support update_map_elem. Hence skeleton/libbpf do: > 1. addr =3D mmap(MAP_ANONYMOUS) > 2. user space optionally modifies global vars > 3. map_fd =3D bpf_create_map(MAP_TYPE_ARENA) > 4. real_addr =3D mmap(map->map_extra, MAP_SHARED | MAP_FIXED, map_fd) > 5. memcpy(real_addr, addr) // this will fault-in and allocate pages > 6. munmap(addr) >=20 > At the end look and feel of global data vs __arena global data is the sam= e from bpf prog pov. [...] So, at first I thought that having two maps is a bit of a hack. However, after trying to make it work with only one map I don't really like that either :) The patch looks good to me, have not spotted any logical issues. I have two questions if you don't mind: First is regarding initialization data. In bpf_object__init_internal_map() the amount of bpf_map_mmap_sz(map) bytes is mmaped and only data_sz bytes are copied, then bpf_map_mmap_sz(map) bytes are copied in bpf_object__create_maps(). Is Linux/libc smart enough to skip action on pages which were mmaped but never touched? Second is regarding naming. Currently only one arena is supported, and generated skel has a single '->a= rena' field. Is there a plan to support multiple arenas at some point? If so, should '->arena' field use the same name as arena map declared in pr= ogram?