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 34C37C4829A for ; Thu, 8 Feb 2024 18:55:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5D6516B0074; Thu, 8 Feb 2024 13:55:12 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5869E6B007D; Thu, 8 Feb 2024 13:55:12 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 426E16B00A2; Thu, 8 Feb 2024 13:55:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 2CDE36B0074 for ; Thu, 8 Feb 2024 13:55:12 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id F3712160F7F for ; Thu, 8 Feb 2024 18:55:11 +0000 (UTC) X-FDA: 81769539222.09.B6B432B Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by imf13.hostedemail.com (Postfix) with ESMTP id 31DC92001A for ; Thu, 8 Feb 2024 18:55:09 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=AUoeU04w; spf=pass (imf13.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=andrii.nakryiko@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=1707418510; 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=SWXbZgKWtvijsMvDIT+yzcg24ikiAe312anPEYmIWVc=; b=gvaJ5lgFEdhmDJPPfg4eU9nv+vl3rDiTDZ9aj3WFM6P3qu25wdzXbUit8YbdvoZePB4j+M Dn6bwE0VqsYdV81WG+vO9H5UwY+zsmb/U51bOLRdKJK8cJyxWge41NRjn34OXG2UXPJIcC EaJlMN+IfniB32ifOOD9Pr+TW4Iu4Yg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707418510; a=rsa-sha256; cv=none; b=jFs5mkTcTKd0m/p+iL6wRmnUqSnJrwQ6EYAgzNNIS7z2kYV1xuJbn8j/5tpjT8OK785/V0 EytobxYK0WQf63MUrlwTgUMH63wLs3stJ2FtnTWzfT/DW0HXTNeQtR/Y4kd86HX/6ViqbI tnBY71WxicUcIAy/yVxobz71nY+OUmg= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=AUoeU04w; spf=pass (imf13.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2909978624eso101418a91.1 for ; Thu, 08 Feb 2024 10:55:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707418509; x=1708023309; 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=SWXbZgKWtvijsMvDIT+yzcg24ikiAe312anPEYmIWVc=; b=AUoeU04wXstNj3YsOaKI1k8VkQ44GeICY+fnME6Vm4Wp6u33KPjz9/SuuvjZnsPZCc MC+Xw9UyN+36omIXiC8THOpwYNiKRg5k50476iejogqBl4YOqJ0XotKh8s8WnyPUtfyn V+qFvB/zNp1+9Z35edGLffm7kg+zyfaCnojY7ogfODyXTEI0jxllmY3pOXCB6n5bvgk7 Bg+z1acQo2EOehQGA9i2ZSvFrf1ZclBiqUtY/vgayhXEmIiT+ze3xYH0Bje+PW5+1WDH MCzT+xMwlkJIp2qHg8hNqi8NZeBgxboae4qDZ9YOkk9VmuDHDNPG1gKAkIhFCo04d87V dBaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707418509; x=1708023309; 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=SWXbZgKWtvijsMvDIT+yzcg24ikiAe312anPEYmIWVc=; b=Xjgkn0I221plo0+jSl5WtsU/dxGfMu3ObYLQbdmj+9LLIRWPALfkaVQYg4Pe/ygmIV XJ9oQGPZgG4gVYPHT6KdfE/I6nDTOYZej47HgEYOsWk1VweXkjw2fozmbdLrPeMczTPs Sh2pmDfee5y4hjWsHkW47aCqlUfoexOL827x7UMe7InS2UFd7Ate++rXQR2PMxsJVSPO lzewSmfwyKlSjzxXk8fBnT7g6DDc3Hg5F+SCxgqZGcYSMpFfUWFtOLso84C///+icl7u Y48K9IaEBa2WBSeH+B3dlj8qUFZlv3raG5cgqN6T8ruQ41sWXcKo/7TJm0StcRK4zBZ1 NZ0w== X-Forwarded-Encrypted: i=1; AJvYcCX1z5+GbR+eyzYG+FKgn7Ycbxxu3+e6tTCE5rQMF/isMjTZ39PG2uRA+gjojMqbiDWu9Jb2wRAzVuIiV+W2cQ5K8fg= X-Gm-Message-State: AOJu0YzeHSO93bTaq52Gu7eG7zM+cLT99BEcPtZBWu9/v+ET0Szfllwz EUAUHZYi6gdvWjoxiR/rz5TaP6kgWiydCij2BuAz3uDTji0bcodI/cqonfEuhA10x7+lgO/qJ7W RhEObx/6KHySruAp6DgB8bOJ4AYI= X-Google-Smtp-Source: AGHT+IEK8ovRbD8PpPYg56udbFYc4wM458hlpGpgSiG3OaqqQ2JuFv/0m7UvKEm66AWvFQsQCyA41JMRXrzCaqxuMaM= X-Received: by 2002:a17:90b:e96:b0:296:bf9:dc6b with SMTP id fv22-20020a17090b0e9600b002960bf9dc6bmr139779pjb.27.1707418508724; Thu, 08 Feb 2024 10:55:08 -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: Andrii Nakryiko Date: Thu, 8 Feb 2024 10:54:57 -0800 Message-ID: Subject: Re: [PATCH bpf-next 11/16] libbpf: Add support for bpf_arena. To: Alexei Starovoitov 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: 6bgfuwq6nwbbs81wre4175nswfce413i X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 31DC92001A X-Rspam-User: X-HE-Tag: 1707418509-217316 X-HE-Meta: U2FsdGVkX194rlH5niHaGYOBjsDsedPnVPYu2RyLvgyQNpSJBKyHFIEk40qEj8YcIuNrpRu7FNsGg4Zu4RzXXWR3OdwnYNwhCy+dhUDwayvkKZnWfZaQE3MRq7wCvmbw2Ary8iaD+OvAQu1tUNmqvzutb5+t0OlLWaT3h4jw09Jm6fELz0vg5LoS6vZDHDJAfvyQ59H/AHsN51TKIxo6SK+waAkp0jOS0U+S7CTpgM1xjkDB5d5qkP8bcIBGl7rLQxyyJ+Y+d76bM+HP2wihBbM1wqsgavtbt3LxlP0BCwC2zmLEFCUNpzXZ1zjdkbInMYMXk86n8O7YWaCTcT2myxkPCaA/tK196MUQAqGflMpq/aLOjZF7F84vMw4Of9QEjTGQ0/CLYfQKGZLl5+XAsdiI6Jk9tlvYfIe3rBmIctjRnohQZ9phlrrJMg7ArWLL/xCdBLgSK1qC/bdUrSF71e8fE2vnK66BoWdlhs1xIGlvuOm53yYhe5Ww/+iTlA5L7uaOBfU/X8WMYznX5vuDsQ7/rla+04Lnn7M4+Be93y9aLbEEt7n+2/Z38wuSpKXghdl+v3kp9XjZaymr6bVQihV4myFl7wP9LiGHf/DEEuXn/rnGU2IsO5miG6F+k7lBZmmK4eL9svFE0BLIbub+bk0AzYjX06ExuSllqWQrmuSPC2BVmwmlwmIuZqVoDOZXMaM2hC0UawMEZDJze853J6e870B5/BTvTnlWuY84PaEkv4ejmmhaHkJ6A28kiG3gWkISrHzGzlmXzT8VTfAHOQ1OY9EhzFRP6jos4dOeWaA1US+Jgpq10RbcP5ftAi1GojD0aggNGUtj1eNT728THbajT/fM+zQLwPGsepZePpSfzh+ZiavN0Mx1JtGsLDgud2qcviOHBeUaZRSRxQrn2RCOZPLSSjx2art1t0rD11AmXERKMSdKPbJKqKDjkM+ydCaruKawmLNo1uMyr4w zR/hZkSS 4jC3+UG7cY7ycahNIh22/Zv2NSL8hcSiL2j3K5AujOVZiozkHFGDINAj98+QTsoadCEv4yAHQwYKUx8RFE8VGF8/dRqDbxvXF6u7ve0w91fPB9gQ/eVs4T9c6t/T1fRSrmHt37qU1wCPBqxQG+35xUMiSxPOwUMAOpaOBKaqbfRMClpTlKRdTddzegZyN+23y+V9lIG3MzK40qzUuBKlgc08GizuCTPRKGEDvPqTuOtIQHq4fWhcK9D6zS4CvRedLkX2TrWqZY5xXRTaNCHuMcsrs+xrgz18v6G5n1bIXNJY5vuGdsCtU7C3mCTCAcijM6m8xyOW5ZiJ4LJFzDTEXeyBN/lUqDY7k/wNLVo4pr/LYM9ihjaMHP2s98WCAKQD+rIFd7qSBvn0LuPQcc//4DfCSulmZoc769RwfAtAkOA5KAgRoFjpqLrwsKyLcSNs3xYdrnnpGDN72gH5qyVEEqrvGxAfBnBE9Kpk+tfpM7nhthwi1oGGQtlmAcYufgpK/CvtNty5ddNSLkT6S74ciBGUNinZo9eVLZK5/4mni7ts+uNuY0+x4pMqbuUhUO+WLSidd8OiU7kyodgk= 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:45=E2=80=AFAM Alexei Starovoitov wrote: > > 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 m= map sz, > > > > > though it's not the best fit. > > > > > > > > We should probably make bpf_map_mmap_sz() aware of specific map typ= e > > > > 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= or > > > > 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 t= o 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).= The > > 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. You mean when doing this from SYSCALL program? > > Looks like we have fixes to do anyway :( Yeah, it's kind of weird to first read key/value "memory", and then getting -ENOTSUP for maps that don't support lookup/update. We should error out sooner.