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 055FEC4828D for ; Wed, 7 Feb 2024 20:13:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1CE526B0071; Wed, 7 Feb 2024 15:13:08 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 17F0B6B0074; Wed, 7 Feb 2024 15:13:08 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0459E6B0075; Wed, 7 Feb 2024 15:13:07 -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 E62096B0071 for ; Wed, 7 Feb 2024 15:13:07 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 7C978160D88 for ; Wed, 7 Feb 2024 20:13:07 +0000 (UTC) X-FDA: 81766106814.30.29DE775 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by imf12.hostedemail.com (Postfix) with ESMTP id A888D40012 for ; Wed, 7 Feb 2024 20:13:05 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Wl7u9xel; spf=pass (imf12.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=alexei.starovoitov@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=1707336785; 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=Fq0m9i8CTTh494YOstb8TqVY8AHpJlrOkTXkdU3/8q8=; b=0T6yOGO1hFeZJLEuYaIzNQQLJuZxJoQtG8kHzA2e/O9WB4sOuFy79/W9jC2FwadMBsI9Fn 1AMiXborn69UK+m234THTIkblw87F1rqcZ8OKgEvpzSfzsV1x1IDkz4fhEIyiKF5//o1mE n/IwnfBvCDp1uWtD5jaWoy3NbDHuLAk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707336785; a=rsa-sha256; cv=none; b=WNIN9APCMX33+S0YuhVOTaggANWKbbRwMXAM9Sow6yFYkvOKCiLheX1fjZvN6S6pTfw9Fe /vptE/YPONQikyi9+iQBcKqMYq9Jw4UGsuSCzIqERHZAhug3IZHqwGHJHel8KOgBWYiLCF fzwoPFO45i1LocMM9j0pLH/wfFZUAc0= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Wl7u9xel; spf=pass (imf12.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-337d05b8942so836655f8f.3 for ; Wed, 07 Feb 2024 12:13:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707336784; x=1707941584; 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=Fq0m9i8CTTh494YOstb8TqVY8AHpJlrOkTXkdU3/8q8=; b=Wl7u9xelvGvTvEwf9InaZT6JOCI8S9B/8UkbJy74XcSKNg4vV41RUbtCONQKjyHe5O I9EtRouf4RpPa3hybc5ZfjliZs+8aqF+EtI6khLQm2XkScufQQQT8dQ0qPXyTRtZq6Ox FA71YAslAHlrmcP/m+FL1an5vcyyAV7wJspEdKlBBF+sjm6vuhWumsjF7SkdYJBGg1v/ 4sUY7elO1Fr5mnpA5ax1OjwjEgNEw5QdFiIT3HeynwTNo3oY6edqFgwEdUZYXwOcWzwY xuXZxQBS3IKvVrRLihjLgEPF12SDvzlFyPvkb5vakHryNwTpgs1AYJxHxX09M7a+30Pt Mo3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707336784; x=1707941584; 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=Fq0m9i8CTTh494YOstb8TqVY8AHpJlrOkTXkdU3/8q8=; b=Gmlu0SA97Cr6gynWAeRSmR5ydtpr+hQV6vr7bz/67NBTGK6Ihv7PH5pYyE2A4qznN0 F/BVThQdHKKawR3rkymX7AjeoQZX90mxq5w1r0VccOcvKMLJcVqFgADyJebaOHfnsPgV PQhAQfK1EayUer7/OHZYOD8U2lpLySns8VK1yhIXboAOT5nqJ6wt86l5dTryjqAC5pu3 Z51rkl7Ynn6sQwnh6rjwHlNVSfgxmiiDh5M7VSooPUB5fvEbu250QECPvvP0ea55/gq+ /fuxUXy5OC4dGmopli67LeYmuocEiA9o4ykKwdOJkdOodIsggySX/KXfSeBJJg9IC+XN 0yDw== X-Forwarded-Encrypted: i=1; AJvYcCWdKnhUi6sC0a1B3dFaBTuhy/mJWCBonyQkYBOcSnVvoFl3jJEy1Yd14XWbWo1Uv8Lf5owGrLJd9El0xyfsFsOBZ10= X-Gm-Message-State: AOJu0YxlvLpYs7KsOwAmgkkU+desP0MlWM2aU7eiNEZ6z2eXfigOM5x3 Blcr0JtUjKqSZgofxVlYUlaDt9GvP92Jz+izRLZU9KHgmPtXQKy1e0xSFDbN0rw89Waf2qlwZAB Su6mCWATMnhUD1QeCSbWD0tEdlmo= X-Google-Smtp-Source: AGHT+IHkSZe05KlX94v5dTGtBC+zaUrcEZ9CtK6kdmJBJ1JSiSHSHWJzkin45YP1TRVpCKSq5yttKe5HEfNvYHgd9O8= X-Received: by 2002:a5d:47a2:0:b0:33b:4967:4d2 with SMTP id 2-20020a5d47a2000000b0033b496704d2mr4616162wrb.41.1707336783812; Wed, 07 Feb 2024 12:13:03 -0800 (PST) MIME-Version: 1.0 References: <20240206220441.38311-1-alexei.starovoitov@gmail.com> In-Reply-To: From: Alexei Starovoitov Date: Wed, 7 Feb 2024 12:12:52 -0800 Message-ID: Subject: Re: [PATCH bpf-next 00/16] bpf: Introduce BPF arena. To: Donald Hunter Cc: bpf , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Kumar Kartikeya Dwivedi , Eddy Z , Tejun Heo , Barret Rhoden , Johannes Weiner , linux-mm , Kernel Team Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: z8884tywrkkrghxfpyt8fsxetrto7byh X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: A888D40012 X-Rspam-User: X-HE-Tag: 1707336785-959547 X-HE-Meta: U2FsdGVkX19PaEu7xj5KupQjoAqZBdIM3EupWj2e1IhKwgglbizzMw0Be961AZddRNWRgvq7gZ7+clUzMV+4YSJiwGyLvA+Du9TobqtddsGQvj7m8qSGxS42XmNX51gOaba8tE+9UY2GkBGhWBB75znkSV817SLJQCil67NhHNFGkmq3+WNZnm1wAZsBT+0fU3Or6pb00Ru2tI+g9TPHNzie6j3Vg1MnBAHMFAO+5EP8M/+4KGKWi3uJ+5AgeCeLMIHtuYbp2eCsRsOpEaNFIKtkrYcqGCWjNSS5fKkgZOsaQL+EHSaaXKCs4eHhv7NDn88sYnYr6wbwa2Nz/fCW39DYBmnBsFQtQ+GlvxPWy9eLXetHHX/jCTSqouMQWl/L/0EqPI5EmKuqD67ZJAHpWhtVr6B+cqlicpQWIbEgw22QF70B/Ra9BUoIh1WthEADftL6QnCotGHU4ABVKd76BinbOGuIICb8Wyi1S6lnyeyk0yxTIQ7w9Y4eyNeik2gAdmq8eF1q4S6f960lxwQdCsUJFV52rYfYv6+/zFlW9abKdmOetipsVuZ1DXMw0njsWZQmVJrtA08hHDVidklIHXToZljlpiboRRDNnmwODsxVW8JOxAtG3kUImRnpf7qOmC7AmD5J52AXIuOor/hUP44u9obJmgHXvfyIrzetdggaQckvosbNy1EUbfx3rOCSeoPV2T0EodSSTAsXzeYMDn47CUxhCssP8LjiooRXrIzrQtdX/EFs3DLSz75htiD7tPhCwSCgnBVYfCNkREVTp27GYJG6fGY80Oi1lbvqprriLqL4zonzJlvZ1+dYeGIwjsB3n1MjCxAyYEwTuyTQLpIJbLKLjOwD0fN+NwHJ+75bU7uW6mI2+jDh4aCHGfQ3TZJz+lAB/fjNs3j0zdEt1BFjUJR3FeKpVfy1h2FhCSQy+30Q96cPR47ZGUr+hLZgD1lFnnbO2muoXlgp7ci XxgFg6sP bww1WX0P2866ohdb3On+cis6gSjBSe9i3307D16C87JHQxPPr+wvlEZfHSfMY0Uy1y19dFeKR+AIZqv6MTRNybUfh443OOdLfVgOgjla4AEJ65keg74q2f+mdpbl9hnGH+Ula74JB4QhXTpDu68jp4ex1u1zs7UkXRe0ii5UOTyjo4KpKhGOJ1LuVNxx8xrDPA+jH1Fc4x64PPDfhpR+RMy59IqcyEjh5ke7X1OY9xLjfRYf+HJsTPhAEwxc38oU8imRM7QqzRvwOH66oM+PnhFC1ZHMfEcGC3AOzm1Enrq6rcg0eC2vK4SgHxVS6azWRudnTfdVSFvuaWiw1n0tG0KLpfKBRItbsZ4HYYf7cni1/1DhSXDu0gEBRav9ykMPMxwN0QwNx6n/B8k6QuAJKou3DHUlQwuetRgr7riHl9iMs0G8Swtv8XCOubxDQ97EKcDRZmWLs4NL78740LJAzvvvWV+HMDil4QWqwAA1wqRTWUxOOj8sKthMYTaSgKFPtrKJ5KKzSEBc6c1NL+W0dvlQnup2ESsLqBHLSWGs5van7t/qce5dApDTewg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000172, 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 Wed, Feb 7, 2024 at 4:34=E2=80=AFAM Donald Hunter wrote: > > Alexei Starovoitov writes: > > > From: Alexei Starovoitov > > > > bpf programs have multiple options to communicate with user space: > > - Various ring buffers (perf, ftrace, bpf): The data is streamed > > unidirectionally from bpf to user space. > > - Hash map: The bpf program populates elements, and user space consumes= them > > via bpf syscall. > > - mmap()-ed array map: Libbpf creates an array map that is directly acc= essed by > > the bpf program and mmap-ed to user space. It's the fastest way. Its > > disadvantage is that memory for the whole array is reserved at the st= art. > > > > These patches introduce bpf_arena, which is a sparse shared memory regi= on > > between the bpf program and user space. > > This will need to be documented, probably in a new file at > Documentation/bpf/map_arena.rst of course. Once interfaces stop changing. > since it's cosplaying as a BPF map. cosplaying? It's a first class bpf map. > Why is it a map, when it doesn't have map semantics as evidenced by the > -EOPNOTSUPP map accessors? array map doesn't support delete. bloom filter map doesn't support lookup/update/delete. queue/stack map doesn't support lookup/update/delete. ringbuf map doesn't support lookup/update/delete. ringbuf map can be mmap-ed. array map can be mmap-ed. bloom filter cannot be mmaped, but that can easily be added if there is a use case. In some ways the arena is a superset of array and bloom filter. bpf prog can trivially implement the bloom filter inside the arena. 32-bit bounded pointers is what makes the arena so powerful. It might be one the last maps that we will add, since almost any algorithm can be implemented in the arena. > Is it the only way you can reuse the kernel / > userspace plumbing? What do you mean? > > shared with user space. This is use case 3. In such a case, the > > BPF_F_NO_USER_CONV flag is recommended. It will tell the verifier to tr= eat the > > I can see _what_ this flag does but it's not clear what the consequences > of this flag are. Perhaps it would be better named BPF_F_NO_USER_ACCESS? no_user_access doesn't make sense. Even when prog doesn't convert pointers to nice user pointers, the whole arena is still mmap-able and accessible from user space. One can operate it with offsets instead of pointers. Pls trim your replies.