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 3B098C02180 for ; Wed, 15 Jan 2025 23:15:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9DD706B007B; Wed, 15 Jan 2025 18:15:24 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 98CF66B0082; Wed, 15 Jan 2025 18:15:24 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 854CF6B0085; Wed, 15 Jan 2025 18:15:24 -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 674A96B007B for ; Wed, 15 Jan 2025 18:15:24 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E02CD140416 for ; Wed, 15 Jan 2025 23:15:23 +0000 (UTC) X-FDA: 83011244526.27.952A969 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by imf01.hostedemail.com (Postfix) with ESMTP id D254140002 for ; Wed, 15 Jan 2025 23:15:21 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cRcJNDyE; spf=pass (imf01.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.48 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=1736982922; 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=mgw2OJBwLljHvsYzR/kjGTspzbsGhv33WTN+4cKKAwA=; b=JNEXGWez/jzWGVjDJ9OOlx37qrfDrpvqjL8lwWXZ/PXVPrfT1Kfl8e6RHj/57ztURuWc7p Fv6gkUOwBYcKhZ0JlYWwkgQePWsmSjqadJJdhO5a4gqygv7QZOYVDNxkpCtMe0OubFlPkv JUparxiofd1BeOx4By9bif3uZF55n4M= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cRcJNDyE; spf=pass (imf01.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.48 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736982922; a=rsa-sha256; cv=none; b=sevQPqMXDtdNt/ZQEbW0OieDhJe+uK/Z7sQ32n2U/NTyt2n+R5OrAe2k/Ehjd8inOyh7Zn mYLC3/NBbJlOyUS/8S1l3RKvRsJ1Q/9dDS/OfaCKFo2kmzUxTcQVdH7UwiDN7gD1TsDYMZ 4sPpnkmTkKSkXQrUd+7SNeyIcfl43aY= Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-385ddcfc97bso279655f8f.1 for ; Wed, 15 Jan 2025 15:15:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736982920; x=1737587720; 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=mgw2OJBwLljHvsYzR/kjGTspzbsGhv33WTN+4cKKAwA=; b=cRcJNDyEfEnQtq0takVm33yPDwWHmHkNZdiSxWLq0KvZLFywbEofM0FL7EB7VY1XjR 81L5U4xkuA9xMmcQpNKobJCoJTd7HueKkGCowBmTgndkHUPKnIZV0+KsW504nlN/O+vX 4ThQsM9pyiIPo/0MvKTru8RKai0d4/efGFHcq0SKavlHsYC//xFkJ9aFe9aBEY8oyWGr JgqtLd6R/4SnQF0DxKnhEf39S5/DPt0tULY3qXNtJg+mQIN6yf+pFNA+Cu98J/NPYc6l rE9VXQhB/gAa/W1zOxEK+Tg63J7Ag0E5yjL0utEGMCkvFytXqJPgxan5tk+/IUTxhxs5 q+rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736982920; x=1737587720; 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=mgw2OJBwLljHvsYzR/kjGTspzbsGhv33WTN+4cKKAwA=; b=CAreUO/5rhKq4X7eCBm/vBgyFA8J7le+Dkzn8zrIlCdtEOvG9WNAJ+I0YOOZmbGx8p 4Ek5OehyDUEpJflB4cWPbB78Dyc6NsB7ImLHLRMhKLkJ1/o23AzP5hvOxDgaIYxcoEX/ i7StztOYAzE/558WuA44w0ZAZPyWuVyCRaseliPJhQVtlKXmWh/HAzT3iJsWyG02UgyT Db/ZT7m5It9mTt5VgL3WRBM75FMYd4aJ3u73+wqlR9izVCZw8euUMLi5xUtcnkSPFS9P uO5WW4JdWnPPwq8veKLwVLq+CD1fe8XIYAHLzgZu5NeZbnynfTi43piA//wyeTrVXD9V u+7A== X-Forwarded-Encrypted: i=1; AJvYcCVv6NcyBCBo1TQ4k6CCtZY5aArLFUBABQ3Gna//1WQSLJ63gBvcbBRFfHNa3Z5mAjS5xhUFhK8TIw==@kvack.org X-Gm-Message-State: AOJu0YyV+OYCd5lpQwPVSCKie2vf25Yo/5Zwwn1ZdRlZJM5rmdGCT9WV qLsbWpjd/PkJ2xluEnNygozxIcyBH43zNuZYnxUp+XKQqJQEiGQfBi+ci0ynYN9etE0SoeB6J8F XwsS8p10J6NhHspE+KwlF7wf1WFQ= X-Gm-Gg: ASbGncvJDd851JQpfYXqPRY76C8/bXvGFTcpmLnY8Ihs4WJ/HyQ7Q9B5VA2WRA4EGv/ DsmJtJmrUHdqgJbdqf51aYLk60E7PMQGoebSjZrvhUS1GMOCWIFS1wg== X-Google-Smtp-Source: AGHT+IFZxa/YyLENIta0ohBOdKPRMerHYG0hyhLWGSEwLN3/6MaD+aUZihZRYyl0F6jSkpQQAfnOfBjKYkvmnxPPj+o= X-Received: by 2002:a05:6000:460b:b0:385:dffb:4d56 with SMTP id ffacd0b85a97d-38a87317e45mr26387484f8f.53.1736982920100; Wed, 15 Jan 2025 15:15:20 -0800 (PST) MIME-Version: 1.0 References: <20250115021746.34691-1-alexei.starovoitov@gmail.com> <20250115021746.34691-3-alexei.starovoitov@gmail.com> In-Reply-To: From: Alexei Starovoitov Date: Wed, 15 Jan 2025 15:15:06 -0800 X-Gm-Features: AbW1kvargeHy_8egiu4qs9-6n6zF-u4SSC7PsI9lpRW_o5Wc1UnKYbdz_CdhNEo Message-ID: Subject: Re: [PATCH bpf-next v5 2/7] mm, bpf: Introduce free_pages_nolock() To: Vlastimil Babka Cc: bpf , Andrii Nakryiko , Kumar Kartikeya Dwivedi , Andrew Morton , Peter Zijlstra , Sebastian Sewior , Steven Rostedt , Hou Tao , Johannes Weiner , Shakeel Butt , Michal Hocko , Matthew Wilcox , Thomas Gleixner , Jann Horn , Tejun Heo , linux-mm , Kernel Team Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: D254140002 X-Stat-Signature: do6gpn7crf5tduqsq15hztc9kwbyk7p8 X-Rspam-User: X-HE-Tag: 1736982921-56772 X-HE-Meta: U2FsdGVkX1/y1GGMw1LKKLTt057tblgdI5k6PDgHZS1W8eM2fyu4woRiBZSnMqBGTh7E5Pr7MtB1I1S3zyCx5Plzjumylmm7Ih9Wvit0LT9Sz/KxtSBp//hfeIr5qovs1FAgbIc9vkLZBQKZvKAiGUZBl80H4ZgGSLomxHHttISVnrCYyeUKOyZAFU6GT5i2xUO51NP6aftuHvCuRHj5jMApW1YzAfKZA6a67dxEHlJU3YSsDcFXLazPadQ/YPMS/bFdQEVccDwZvZAJgHLIigTikH6ON3Sc6Y5VMES/bsDrGhBTIgU5voMfVVF36KXcXKde+U+s8H4AFjw+yh7gwFjl+zgucHFQrktCc/LvGWPDQzGVtLo7Y0tcstC8Siw+hlyzjkEgtA+P1H3dnqlPxmfUr33Om32BQkfEZj/VRWPb0lw1esYG9+gGBFoK6z0skFJtm5qcgEFdcdfrz57UVpb2AbVG3f8N+JQWiDeCrcmpfu7NUiPfL5X9s60JOOaW9eEzAj2GXjSPFgFSIg27nICWGqjTja5Ll1tfUWfaSUx+5U+QEAJTtTiWvEdCHp0Wqk35fftbV7nHDJnCC9ORB/geNb5d6GumIqWQlnCW7oy8JrXq9b575VEr2rfQbva41VPtbCq0p/rQz3yEyRUnuFHEQnpCwFk0Q91VuEF1EvmT+XBmzx6PmECC4+r8adGM+0W5jbD5W1ve2O08KbxJ6yPW8yNs18IhSjwJZ8jplYlaeuwybBNZ0p4VkgZ6I4c+Kn/8i6gAcOlvP1GWXY7fgKky0UAOnuDoqneqkXrneKy1dZ/oa3/alOY3SKHbO6+AhTa+Y4afCa3mQDFLkrZPsuJs57xz5ckAtuW750796I6gfXAsp2EN8vfQxBJKwq5QC9gRhdAVPwLyfqeF7hyGy/F0+Gb62/5yPJ6Bq3zcPYgillm26A2lvTpVzJgVtg91G0f17TeQgY1CQKf27Z9 ENjgYVJ+ dBheJsQnuRdiFmYtTBryXKLN6sd9mkVXTcsHw2r6Ea/sLUNlQWz4S2OEiKmV91Jcfg1jvGj66UcPiBW1T6b9ByrqBLfsPy+7bVQ8iZxmZBWmuz0UnotY8SLfSnTWcF8VUxbDU+HbPeSDmXZHIWf0LlhxF1mUXyNId109kGSYVtVAOK2dtXTTtGdMdQ/dqBJW1etE1Ako76ASNDbw5+ViNxm0902/aGg4ixx+8Dymn0y/spQ8cJSSER6s08ofbA4osXG9qtWf4oVxXoSHHrWA1kqylKdiP5RkZFHXNt4xzqJ0mHBifK+4fFzvm81ddkmvSS0ow1UQielpgxTC+5ZNe2FALbj+DGrAf8qAjobwpXeiZHbmIFSvHVF22CGWh88aVtyL3pAgjCoasUMqDY4C5q6wHlNKPc/1uP+fvDNNfk6egZlqYSSuWWCznaeAcBQEcGggKgjSLepB5lg0= 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 Wed, Jan 15, 2025 at 3:47=E2=80=AFAM Vlastimil Babka wr= ote: > > On 1/15/25 03:17, Alexei Starovoitov wrote: > > From: Alexei Starovoitov > > > > Introduce free_pages_nolock() that can free pages without taking locks. > > It relies on trylock and can be called from any context. > > Since spin_trylock() cannot be used in RT from hard IRQ or NMI > > it uses lockless link list to stash the pages which will be freed > > by subsequent free_pages() from good context. > > > > Do not use llist unconditionally. BPF maps continuously > > allocate/free, so we cannot unconditionally delay the freeing to > > llist. When the memory becomes free make it available to the > > kernel and BPF users right away if possible, and fallback to > > llist as the last resort. > > > > Signed-off-by: Alexei Starovoitov > > Acked-by: Vlastimil Babka > > With: > > > @@ -4853,6 +4905,17 @@ void __free_pages(struct page *page, unsigned in= t order) > > } > > EXPORT_SYMBOL(__free_pages); > > > > +/* > > + * Can be called while holding raw_spin_lock or from IRQ and NMI, > > + * but only for pages that came from try_alloc_pages(): > > + * order <=3D 3, !folio, etc > > I think order > 3 is fine, as !pcp_allowed_order() case is handled too? try_alloc_page() has: if (!pcp_allowed_order(order)) return NULL; to make sure it tries pcp first. bpf has no use for order > 1. Even 3 is overkill, but it's kinda free to support order <=3D 3, so why not. > And > what does "!folio" mean? That's what we discussed last year. __free_pages() has all the extra stuff if (!head) and support for dropping ref on the middle page. !folio captures this more broadly. > > + */ > > +void free_pages_nolock(struct page *page, unsigned int order) > > +{ > > + if (put_page_testzero(page)) > > + __free_unref_page(page, order, FPI_TRYLOCK); > > Hmm this will reach reset_page_owner() and thus stackdepot so same mental > note as for patch 1. save_stack() has recursions protection already. So should be fine. > > +} > > + > > void free_pages(unsigned long addr, unsigned int order) > > { > > if (addr !=3D 0) { >