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 E70E6C83F10 for ; Sun, 27 Aug 2023 07:03:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DD1058E0008; Sun, 27 Aug 2023 03:03:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D5A968E0001; Sun, 27 Aug 2023 03:03:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C217E8E0008; Sun, 27 Aug 2023 03:03:14 -0400 (EDT) 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 B04278E0001 for ; Sun, 27 Aug 2023 03:03:14 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 3D31480154 for ; Sun, 27 Aug 2023 07:03:14 +0000 (UTC) X-FDA: 81168993108.30.A3D1995 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) by imf15.hostedemail.com (Postfix) with ESMTP id 5F4C1A0008 for ; Sun, 27 Aug 2023 07:03:11 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=aACccfRC; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf15.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.46 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693119791; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=iV4y6Ekr4RdgR6lmtQFo/ijea7yN94G6IUPIKArMQeo=; b=3C29lzgzdf+QJq+2y3W8UKiSXPD+YkFVUUnpksV0U74tVDg5beIGs2juGZoNe7q2DliODC jybE035uNJWxD4lveh4Qzj4WicWoaNOeD1dx1O8LZu0jstcc5HLswjxi8ccPypPHmLb086 Y9YmpCkHnsYxL8O4yoTeLIMvWKlhtbc= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=aACccfRC; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf15.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.46 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693119791; a=rsa-sha256; cv=none; b=lF6FGyViCKP1e+6Nywjp7RrtaKrWb/iuisIQvglrrBkXOUkQ6eAkzmSdmcUSIkl68iQSdx nu80RZSiCKbWPuFxOcysOThOfob4M9ZwhpS2G9QGHY94ryBwabgOb0X+qY7O9U8JL16OHH Sh+o/bO5geoV7rgFjEjCESmw5dM9pHs= Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-3fef56f7222so21411555e9.2 for ; Sun, 27 Aug 2023 00:03:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693119790; x=1693724590; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=iV4y6Ekr4RdgR6lmtQFo/ijea7yN94G6IUPIKArMQeo=; b=aACccfRCQED+gEg5zgxIiU7QAEIC55kXPx7Wq+ly1RTG3eDM9+sY7LDLKttu4jWTDO BG3Q0X8lqtUOHRwalmdrIZJfbF4PxLaf43Gry65I1taVZrmHZEXTVasrG9D/ju4GT+HO wtaAlIjVfrN/3MNP+EDe60ffiI6rfNHF9hHdDKx8zMycIHs0Bn9LtSVmuUlct0jsQB+H Jt/YHDt2KPys0FmrcBQmlRKEE1xcyVM6qpm+zmU/DhqJ4EKTRB1T9mbmMTL8G3ftfse/ vGv47KjTZJliP0ng65T2TFpaFlH4j4fOM4KzSuWoBRh/Bom4XR2md0HUhrPI25Tu8Rgx 3PLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693119790; x=1693724590; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=iV4y6Ekr4RdgR6lmtQFo/ijea7yN94G6IUPIKArMQeo=; b=LLfQT1dnQ8yP+oshRCcI/HTyuzk1UpRTDIFeAwnGxHFBYohPm2ddKRUjJNVqRsNAlN h7MPFMx0H+Duw+NDsQQ2cbt2j6NsHW3K2qtA4sABEFX+u///v1FIbo6nj10TE2KGdgft umMqZtBFlj+sL/B1jJ8fQYlsfH0JUS1hnPDuYm3/VOrpD/Aaq/FLK8b4MuHiYpZNz0S8 GXo6aDZIrIjzKSCwmW06Eg5dxyf5Ohl7YT8xTbfIHM6R0zlv/1Vg+DBPok9OU2F/0iRy pf255g10tqtlOB2o4nixqSRwZyllPB7BYC9nJ+o+kuYFDRcIO0ECiF0gPjG+/+cAaqaR R9OA== X-Gm-Message-State: AOJu0YzqXl1KL4R3z6degCXhlYmLX7JAj0ffXS3vBtleL1PHPf5XhLS0 nJywv7taJiwR872aKTb0/Vc= X-Google-Smtp-Source: AGHT+IGz+nVEO6yAgt+pwnoQroxvPEu952BYqy05z1Y13fu9bXL3/S9IWFw8xdDSRLj+4J5oK/AhIQ== X-Received: by 2002:a05:600c:2191:b0:401:c075:d5b with SMTP id e17-20020a05600c219100b00401c0750d5bmr2277572wme.26.1693119789550; Sun, 27 Aug 2023 00:03:09 -0700 (PDT) Received: from localhost ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.gmail.com with ESMTPSA id t15-20020a7bc3cf000000b004013797efb6sm9867605wmj.9.2023.08.27.00.03.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Aug 2023 00:03:08 -0700 (PDT) Date: Sun, 27 Aug 2023 08:03:07 +0100 From: Lorenzo Stoakes To: "Matthew Wilcox (Oracle)" Cc: Uladzislau Rezki , linux-mm@kvack.org, Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm: Add vmalloc_user_node() Message-ID: <9e369ffd-8577-4416-83eb-35c25ca4f838@lucifer.local> References: <20230820194031.1395870-1-willy@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230820194031.1395870-1-willy@infradead.org> X-Rspamd-Queue-Id: 5F4C1A0008 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: iajjkrhh49nejhxskdfas49uskq5m9hz X-HE-Tag: 1693119791-537704 X-HE-Meta: U2FsdGVkX1/Jszx7XzowB2CSnRqKg0HkEz/n1sibKebGkrpZK9w1G7oHvI4qDe35nddumOxtDiNmmhgylikJCSKIZI6ZOMElRUKQxsQt9B2H38iXzJjS6WY0jyH7xjGcJRz4oq4ANpvt4OkDyuv/xVMwH6XrtMGThjhGuLRmCD/52yTVliKL/HXhjYPrJXrkhTga11FBJ3qW1krFv8+fVHM45ssk8NvsvsfK+muMA2hlvB6iB3nhT9ijPcCtA9jNdHiCTpWr6CT1idBED5QYBl1SCyUrVia3TLiRkwThJ/ngD//3Sv8fj83HIfdQtzWGvGA+cBj3WbEr0ruT2n6Cv/LV/KN6NnURR3Wtjnjw1TttAH7VM/hS4Mw5xkG33CptjCwhkWTxrA0EuO72IW/MMR0cgrC6KU7L5Wq8uQcb6pnc3NQznqKKQ6Np7KII8BqI4NukbpDPU6w6IhCpMc8CGdhCTlCm9W2upzUeVRppoNQBI2piWPDoH3ayaMktzg242dlsjqjLi7Lf2D5OjyMnY6c50YPGl03/eD6LixX0xv3evQI45Pwa/SXvO5uweollMUJHu8ueV0jC0ffn9Xqgrparv1KbHWyPn9cJ+h5ZuS8cqZ76m1/IQSWNxSud+CFuGwSJRNx6xe6jIF8UiMt4Z8LcZR4g57hdKS4RR3SvmM5cjS4+hSwpX6LLx5qiskM5nrEW3eh5Yw80npNT1XSjERL3hs5R65cB4MfvwGSEMGekQAhX0HlBJYgCpPt06wIVv7WlaGZzWaQx6mj75Ux4Ix1WP3tHzU7/CpizLsOajlnzb3TA71/SHIV7xCHKWQCJHPvJDpLgb/BSrKPxCcTyYdaghsY5a4q0Yyana5JPlj6rrXyMYKPhFX6NvnJWjhyW7i7MngCIacuIxgBILUq1s2pnTtqNIFI2SRESt4kVH3jfAzIiXU2JHiBT+O308Zr9aLzXlic/cvUt/y4RXGT U9kdJIH0 nJfGuZlsyFQ6eK1WOaYuxlrts5qrMn90Rw/ADRtx4YHaBndc6DNkqOfb/yfLMj8e158akyXR+TwXi0GkYmLNDHCdPHDC7uk9k8jCv7AKbdmO6mbHqzefW5H2xz5IsvMdozfAUqMQbkOfzLSepUPQNfdPtqVvfnnB+F0BTJUavVPS5F4MiogErF3kst0b+5VDcP8sN7c+KJGQt2ocJmn6LJyr3PFiThbt1prfALHOqkPY+61eFjMkzKHMBoa/m2sX6RqbYfgeTZ5LutgB54Xl31ZuSfO3FRT4V8sHk2bSIezYCBAPZj0llYiGeLYtxD8Y0rvghXhA+b+elCbi01vt2UiOW+CGtQyTgCEJvsmYEtLOCa8s0fqHsbqqPMG844QGQYRDXR9JeD4YjQmCkcL6seQlUX5l3p8b+BNSjRDDT8cZXbI/bp+KmGu33vM+aLV7d6Ar1yiF6kHoN5fzHNA23wdA3p46PilW4mnbwRhY6tQqslHj8kMRre77qY3LiAvSRi1eEHDNC1l+NrcORX/6b5c1tug== 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: On Sun, Aug 20, 2023 at 08:40:31PM +0100, Matthew Wilcox (Oracle) wrote: > Allow memory to be allocated on a specified node. Use it in the > perf ring-buffer code. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > I was looking at the perf ringbuffer code for other reasons, and I noticed > that everything else gets allocated on the specified node ... except > there's no way to do this for vmalloc. I assume it'd be helpful here too. > > include/linux/vmalloc.h | 17 ++++++++++++++++- > kernel/events/ring_buffer.c | 2 +- > mm/vmalloc.c | 9 +++++---- > 3 files changed, 22 insertions(+), 6 deletions(-) > > diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h > index c720be70c8dd..030bfe1a60ab 100644 > --- a/include/linux/vmalloc.h > +++ b/include/linux/vmalloc.h > @@ -6,6 +6,7 @@ > #include > #include > #include > +#include > #include /* pgprot_t */ > #include > #include > @@ -139,7 +140,7 @@ static inline unsigned long vmalloc_nr_pages(void) { return 0; } > > extern void *vmalloc(unsigned long size) __alloc_size(1); > extern void *vzalloc(unsigned long size) __alloc_size(1); > -extern void *vmalloc_user(unsigned long size) __alloc_size(1); > +extern void *vmalloc_user_node(unsigned long size, int node) __alloc_size(1); > extern void *vmalloc_node(unsigned long size, int node) __alloc_size(1); > extern void *vzalloc_node(unsigned long size, int node) __alloc_size(1); > extern void *vmalloc_32(unsigned long size) __alloc_size(1); > @@ -158,6 +159,20 @@ extern void *vmalloc_array(size_t n, size_t size) __alloc_size(1, 2); > extern void *__vcalloc(size_t n, size_t size, gfp_t flags) __alloc_size(1, 2); > extern void *vcalloc(size_t n, size_t size) __alloc_size(1, 2); > > +/** > + * vmalloc_user - allocate zeroed virtually contiguous memory for userspace > + * @size: allocation size > + * > + * The resulting memory area is zeroed so it can be mapped to userspace > + * without leaking data. > + * > + * Return: pointer to the allocated memory or %NULL on error > + */ > +static inline void *vmalloc_user(size_t size) > +{ > + return vmalloc_user_node(size, NUMA_NO_NODE); > +} > + > extern void vfree(const void *addr); > extern void vfree_atomic(const void *addr); > > diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c > index cc90d5299005..c73add132618 100644 > --- a/kernel/events/ring_buffer.c > +++ b/kernel/events/ring_buffer.c > @@ -918,7 +918,7 @@ struct perf_buffer *rb_alloc(int nr_pages, long watermark, int cpu, int flags) > > INIT_WORK(&rb->work, rb_free_work); > > - all_buf = vmalloc_user((nr_pages + 1) * PAGE_SIZE); > + all_buf = vmalloc_user_node((nr_pages + 1) * PAGE_SIZE, node); > if (!all_buf) > goto fail_all_buf; > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > index 228a4a5312f2..3616bfe4348f 100644 > --- a/mm/vmalloc.c > +++ b/mm/vmalloc.c > @@ -3461,22 +3461,23 @@ void *vzalloc(unsigned long size) > EXPORT_SYMBOL(vzalloc); > > /** > - * vmalloc_user - allocate zeroed virtually contiguous memory for userspace > + * vmalloc_user_node - allocate zeroed virtually contiguous memory for userspace > * @size: allocation size > + * @node: NUMA node > * > * The resulting memory area is zeroed so it can be mapped to userspace > * without leaking data. > * > * Return: pointer to the allocated memory or %NULL on error > */ > -void *vmalloc_user(unsigned long size) > +void *vmalloc_user_node(unsigned long size, int node) > { > return __vmalloc_node_range(size, SHMLBA, VMALLOC_START, VMALLOC_END, > GFP_KERNEL | __GFP_ZERO, PAGE_KERNEL, > - VM_USERMAP, NUMA_NO_NODE, > + VM_USERMAP, node, > __builtin_return_address(0)); > } > -EXPORT_SYMBOL(vmalloc_user); > +EXPORT_SYMBOL(vmalloc_user_node); > > /** > * vmalloc_node - allocate memory on a specific node > -- > 2.40.1 > Reviewed-by: Lorenzo Stoakes