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 BB914C4828F for ; Thu, 8 Feb 2024 18:46:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3AE996B007D; Thu, 8 Feb 2024 13:46:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 35F286B007E; Thu, 8 Feb 2024 13:46:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 226426B0080; Thu, 8 Feb 2024 13:46:00 -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 0F3916B007D for ; Thu, 8 Feb 2024 13:46:00 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id A71FD120EA2 for ; Thu, 8 Feb 2024 18:45:59 +0000 (UTC) X-FDA: 81769516038.30.B52C02C Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by imf19.hostedemail.com (Postfix) with ESMTP id A40381A0003 for ; Thu, 8 Feb 2024 18:45:57 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RjsneugJ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.52 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=1707417957; 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=Uoidg8jtyamuAXUa0zJiO0kLCu5An00+T5KbzBdmD3M=; b=Xr9EI1QD16BMMauqk6BNeAnX8JlJuuHnW4uXmXWfCsiOgCs1edCBmpRw2zaYZBky7IvvcH cOXBNz4VoYVE7o/i2v3y/8gV4t2rUncVVIgIkI3plOPaiilVa9bMl5LKvRAKrJjieow7aD hZjr4+4D/QLwww1BjXK26TufLq8kWLQ= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RjsneugJ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707417957; a=rsa-sha256; cv=none; b=YT0kjreJgsbH7FlyCI+/IRgAyfx1LgNmHltAYlnyYzz0ekGNeM8dgNGWyOXml8HVgF+1YK VmRGdYeQEy2/3Yx5qy+W/uvZL0LGAs7/I0DfiW8cwuS0y7LT1SpDszkQz1bSlm0EEAv5oI HTCeI6mhpv2VvV/+6Mq0a0M3dDsqgT4= Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-33b5cb49837so8875f8f.3 for ; Thu, 08 Feb 2024 10:45:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707417956; x=1708022756; 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=Uoidg8jtyamuAXUa0zJiO0kLCu5An00+T5KbzBdmD3M=; b=RjsneugJoFwDWoSKnkd07o5Y343Nk4wuQOYjhkySKvRzRahzzV011k75C20jhi3HOz 2TaSeZ0CdQH/hXBPBkhmO2cC/UGocC20r0U7U/gqxHwNyt0bZS5YyXg+/FdieQC/3myL 6rupKPopUHzKEfF3ZiwUvhm394l6Gn9xTCT+xAGZADxfIH+Y/zClnQSAIcHa6EDjiQWm mENMS7LNPVXepZ+aFnMvKxuIue4ied9dbCm9uBSXYxutn405QSRzwU59McisMgjy+aHM IYwJFCRdUpfBrG3t9PEDNJXMnPC2IDK0MbmZoDM4UMbyBtt8vhDBDeGc2L8Q+RAraVfA S42g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707417956; x=1708022756; 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=Uoidg8jtyamuAXUa0zJiO0kLCu5An00+T5KbzBdmD3M=; b=wMnhK0VYKPn7pk+OvS70YQpyh3XYoo7PeM9iY+F0pn6+7+nIFgwvu/lUHCaRwmGB2H PxKRMlYPh2DX8yh8/Eg1HJlaYF89orvNhx0qmT12pLHYb6JkgZDIRfyUFJBVAwLN2UJD LlNw3cI3DoROOAVZU0q+KwR5/Sxqx4cw/LMlf7bgfYFLp5Q6K1mZiYTCt07EQUa29qtz j5+yWvw8OZjVPS+LybNl40/QiTgCXb1uUMqLMkVyPuL6i6/VmYNByrtcVk2wsWZvgugP qGE2eJnxGwL7N8Z0Rm4mgm48I2Tj8l+WpyIPj6jd+HomYHDOKSwpN3zuZVsulz9GoGK8 jAsw== X-Gm-Message-State: AOJu0YzD5c21Ebg4Ngr+6zJ7s/zuGUX8/IxwOa0HpI99vmX1qJr97UsI qpU2WAQYNzJ6utOUURruMo30kjzSfuvcwW1GJZ6Fhl0WhGsjKd/OWn0nJh4uWUdyzSs+KG/FVE+ VRkkzYDLQxWC+BnfPVJ+ckbPp6XE= X-Google-Smtp-Source: AGHT+IFxiN2IOCoshVTm5pZG4zD0LuOVCO362rjxDyFXTRwL1uu1ge6OeDcy1OxvlVMq6xuzwRoSwDoNM5J9/ceoACo= X-Received: by 2002:a5d:4b92:0:b0:33b:343c:2e68 with SMTP id b18-20020a5d4b92000000b0033b343c2e68mr283345wrt.10.1707417956089; Thu, 08 Feb 2024 10:45:56 -0800 (PST) MIME-Version: 1.0 References: <20240206220441.38311-1-alexei.starovoitov@gmail.com> <20240206220441.38311-12-alexei.starovoitov@gmail.com> In-Reply-To: From: Alexei Starovoitov Date: Thu, 8 Feb 2024 10:45:44 -0800 Message-ID: Subject: Re: [PATCH bpf-next 11/16] libbpf: Add support for bpf_arena. To: Andrii Nakryiko 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-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: A40381A0003 X-Stat-Signature: 7xgbnw9b571n8teccdn9a61ezfu66e84 X-Rspam-User: X-HE-Tag: 1707417957-207960 X-HE-Meta: U2FsdGVkX18Q96nIsVIbzfWmeUWWAfdxn1XtFDxtHdEHKAG9Eq+IWcrC9ZUjuB1MfRmaRAGOaUgq1sNpfnpIPV6SseFFBlwsuISfpm9UefGad+bQQiYbDBpwGUJemikNBhVX6u/8TZf48Nknmvcrq3uobkCQivDvo55ctN9yMMFo882zRs0z23/Gg3lLsXngDXNFTAbnaSPUPtg+iP2V0ENTO2fqGHvbyr1iHMASyyzTogqCAjFJP76dz1HZBZv2cnD1UwijYsQcBjtvoTb+pBc4w0CXJzePE1iYEVpEoJ6pa2Qv1894/pyhKmmOiqq92zw5YlrYDDgp40+1rhzyaVmbMXGeB40bEEh/KG8UESX/9WF61FhwT8eplxTHld4uRARfsfgwdfiqHHL+84ce7J1KNkRrmVvyYEC+TWPU3zbuMLdskxU4A9A180nSpAPlF7owS0C+4tEBw8oo9cv/mVfB9dTYsCfGl40tgIguGUBOZADqa2o3Bmb/c2hfIZIs3MiN2tiudw8DpCmYvCd5moADj3DK7yEF2PHtVEfRAr6gMWpIlEr6Al5JqmBNa2bOaw2D/c0iXA9ieqi3Hp4YJ+49m9ZZyrSpajiZLLwn2xmse9FIIrUDkZW+9Y3UECd5KoB0yKzNPeuqvqG88FJF3aaF+ITcOR+2IjvdN6r/+cd8jfdkdYeLrtcMENa5jXSLY1/GikhfeolEOFt0OKbfPXwCKi3wXhQGeWYbWWsujBNF3ii7HxhL3/McXlVGJX5YYnAN42f62hsRqDfEMCUgWTmf0XMV3QvY5wIx7KY8vhO4O2GbSzzjvOVIU7OmEj8gjwjNerU6YC09Y84xnBBx8PZoxA2cGFLZcZEp5yv0wW0nofL+554QMzPumBr56Q1GSpSrKAOf5CqompJ6cqF4oI/NPDuUPQugIzDqVWokcA54qTVkHUYd0PUMIlS2I78s70aqSXNgq+9vrtXYBO3 dtUPLEF2 +c7evPvhlwScyffPlfAttOdGwG8vqL098nxe/iMOftP3S8hBNqwdbPsQUON4A8BkJDIFXoV9+L4sq//ZGB3+LrMn3e28b+SBeEJq8XVIl1oXZ8jpn6W6UrKBUI9aB1wNt+5ZmYwFf60k9Ac6a67EphloqKcUiLWsh0Hd6Y5JpKsJBInK5dJDZo2C0NnFL8L1BoupA3bBgbRiAK/BXcCWasc56cV2adpdRbWZPUj5PBmz08efmiQpEQWxFBpmLLgQqtEcdwbNM8nIFt3PfH1vXAZDt09zN9lKGYWhQ4Bl73abd70g8NK0AYFlfnstOS9sFw2wTR4VxTjFE+ReLXD2VTlSSacvbGfqJ/ZFRcLulAVcd19pcIWkii9hI1fPUtiB/M6wr8ZR0AEaOLWaHMhtHPrNbHDFasdwm2OdHwRojss5GlXxpge/grpUI6OXtdoAkFn3a5ZOzLTrN6eJ0ihao+gCZCUEne2sVuFzg1v1ZM0CusXeQpix+hmhVLQKOcqdhGDp8LVyAbSLXHJve0Zrc9oPUaRnSdQrNM/+LhuN8V1OOiFJq6LDyH4R11nKTGwsHFrcGqG/OsosXFoM= 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, Feb 8, 2024 at 10:29=E2=80=AFAM Andrii Nakryiko wrote: > > On Wed, Feb 7, 2024 at 5:38=E2=80=AFPM Alexei Starovoitov > wrote: > > > > On Wed, Feb 7, 2024 at 5:15=E2=80=AFPM Andrii Nakryiko > > wrote: > > > > > > On Tue, Feb 6, 2024 at 2:05=E2=80=AFPM Alexei Starovoitov > > > wrote: > > > > > > > > From: Alexei Starovoitov > > > > > > > > mmap() bpf_arena right after creation, since the kernel needs to > > > > remember the address returned from mmap. This is user_vm_start. > > > > LLVM will generate bpf_arena_cast_user() instructions where > > > > necessary and JIT will add upper 32-bit of user_vm_start > > > > to such pointers. > > > > > > > > Use traditional map->value_size * map->max_entries to calculate mma= p sz, > > > > though it's not the best fit. > > > > > > We should probably make bpf_map_mmap_sz() aware of specific map type > > > and do different calculations based on that. It makes sense to have > > > round_up(PAGE_SIZE) for BPF map arena, and use just just value_size o= r > > > max_entries to specify the size (fixing the other to be zero). > > > > I went with value_size =3D=3D key_size =3D=3D 8 in order to be able to = extend > > it in the future and allow map_lookup/update/delete to do something > > useful. Ex: lookup/delete can behave just like arena_alloc/free_pages. > > > > Are you proposing to force key/value_size to zero ? > > Yeah, I was thinking either (value_size=3D and > max_entries=3D0) or (value_size=3D0 and max_entries=3D). T= he > latter is what we do for BPF ringbuf, for example. Ouch. since map_update_elem() does: value_size =3D bpf_map_value_size(map); value =3D kvmemdup_bpfptr(uvalue, value_size); ... static inline void *kvmemdup_bpfptr(bpfptr_t src, size_t len) { void *p =3D kvmalloc(len, GFP_USER | __GFP_NOWARN); if (!p) return ERR_PTR(-ENOMEM); if (copy_from_bpfptr(p, src, len)) { ... if (unlikely(!size)) return ZERO_SIZE_PTR; and it's probably crashing the kernel. Looks like we have fixes to do anyway :(