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 6B45FC46CD2 for ; Wed, 27 Dec 2023 22:01:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 91F116B0080; Wed, 27 Dec 2023 17:01:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8CECB6B0081; Wed, 27 Dec 2023 17:01:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 748986B0082; Wed, 27 Dec 2023 17:01:15 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 60A3F6B0080 for ; Wed, 27 Dec 2023 17:01:15 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 2C22D120477 for ; Wed, 27 Dec 2023 22:01:15 +0000 (UTC) X-FDA: 81613969710.13.0557125 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf25.hostedemail.com (Postfix) with ESMTP id B9D2EA0022 for ; Wed, 27 Dec 2023 22:01:12 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=sgmtaeG9; dmarc=none; spf=pass (imf25.hostedemail.com: domain of akpm@linux-foundation.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1703714473; 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=hvQPM/WQs01RVNWywP82EMfR+rAWPMUYBgUrk3o7Yuo=; b=RImhHt211jRsZhZTG7XFpqUkiT1beS6vn1QppFqpgFEQwB13JxbHbe5IDslj8jKaVsnrk6 KG2iD+fKTw8cs2gJsUcCILSaSbYSvwRvFvcgVD9Fx7MdkiOAwMUoMZrq/j7f2yPtTfgGFi 9rv/5KnPoNcLnfhrFi3Nyp4qWPr9x3k= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=sgmtaeG9; dmarc=none; spf=pass (imf25.hostedemail.com: domain of akpm@linux-foundation.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1703714473; a=rsa-sha256; cv=none; b=hWFGcz5jcL6+6GWMlvprBCtHRT7eGLsBJIriXCr7F33DGmKaNqV2/eohC9i2W1UUWpMz/i PEcUurdiOHEVFpkE/s3FAS5Pa4MO5aCP5H978MK6c8Bswq8dXVda2L/bCefd9ofyoN7ioC VM6os1ajCnbdHUYml8Fhy/+jMZZ19bU= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id F0B2ECE130A; Wed, 27 Dec 2023 22:01:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1008CC433C8; Wed, 27 Dec 2023 22:01:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1703714468; bh=pyjZq//78Sfi/G3DasR7x5XfPQa0BRvzoCU2wkV4Pnc=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=sgmtaeG9jczUxH2xhdOfsLf81nMVcWuti+mFM3d8H3Q1N/PZw6OiT8p8/k868UQZy t9POIQU4UahivGpscyns2YmVCst51g1kBbnl/VugWwLOdz2Q35qoPErXqb2h7d7Lzv UH28uDRMWv80bwyorfP2NoXU83MsN+Wi4HdfxyWA= Date: Wed, 27 Dec 2023 14:01:07 -0800 From: Andrew Morton To: "Matthew Wilcox (Oracle)" Cc: linux-mm@kvack.org, Johannes Weiner , Vlastimil Babka , Stephen Rothwell Subject: Re: [PATCH 2/4] slab: Convert __kmalloc_large_node() and free_large_kmalloc() to use folios Message-Id: <20231227140107.c868d55966378862e5a7f3f2@linux-foundation.org> In-Reply-To: <20231222202807.2135717-3-willy@infradead.org> References: <20231222202807.2135717-1-willy@infradead.org> <20231222202807.2135717-3-willy@infradead.org> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: B9D2EA0022 X-Stat-Signature: 5ecox1kog9w83q35tj1apwmw7ojb6r8n X-HE-Tag: 1703714472-215609 X-HE-Meta: U2FsdGVkX1+keCglToJItsXJDm/mzD2jswh4yKS15BIXooWE6alpivngIhRusdJJsDDBzHdMi7H8DbKRkCuSAHW3phpXOLA590yA3eUN/mKLWPEGrX+mSAeKn3ljRP3BxN8XJFu8c2zwfnXNy2eoMcUlF71zchJDasIAcYuncxQk6zy4R240QX7r894oSR1rSeEpap6R/iNAcF58UOP/h8atagXgod0uloAkLGhTldEMmSr5DqLfVrpa68zXaansHYbzMBX7yXsOYj4+VSZw+DvbI7FbYNfE5mIO3iKQPbDnGnBYOu1IgQl34h1qOspdQv3fCGY+vJTgUaHPFcNF/FjCA21zP3sBbosWUiW1vUzzrVvGEBq9/KY4VNgyACe3DzGZMJpt31HkkwDCTKj5mooZ3S6LxqHxWaBIFhKvRbQz8cBt4JXqMsmjJedsZhbcOw/61IVpLWFSG+6/f8vKLQtOXTc0a+xeeDZKSLJTrD1QLyKTo717e5FCuNFesWy8FigzV0qZmrlfS1sssehTpOy0gGnw5nB8LEAsP6Z0uvystT/RR9lZ6D6wukQcfRc2AJv7TrQHQ4J2dIxI6M26aajJeQVNXTxqSs1X/BHWIS8eQypcX9KqyOn/tb6MzBwINhTArFnhLN1LEJ8ypoGNWH3xUHYrVyQbVxTYFJrTDnr9odXg2ECl5XsTK+dmyjNIJGWxee2Pw65mUMKADoxs1Wb7Qzo1fWe+RnY81+Yc/RakTbkXoykZpqt803ey0oTikXGQs0ka3grhFCeo3rSFRyf17FcVTIBg4gFi6RZZvY8UnAEJ/Zqmbug1nmdyRKxRNjrCMdR++rycZHlv7xgvvW+mdmjva58sVvcoLAtokLjJI5ouM6qrRylmuAMfE8+ScFH9gtIGA6MNMPamN9XshmhRsUeEu6EF5okQWAT/4iGtClF7exI+URVAh8fqXlKrkHZZ4KHPNy5MgdAwyNu r49esv6m 9KLnzi9EzL7Z+oBEPGZf6+XjOEuKS3ar5xNPLlNQI/p1Yh2AjkIyU/Pe/Gj3WLb6NsLqRw0X15Mnw8goBUJOQ1X1BFsH202JE7DAosL/c8WcbCRygKB1ZUnQg7ZFaonYwZgQ1I56TNFlPDTVAq6+Uoo315rFonkGuxVo0PlxaipMCzFN+eIB7oKpi/3vsjRd/GWk5j5NNQviEk+zABI6nyprL/WRr97sxwzxrLxpj8haQgsJ8vyCUeB7KF/Fhc1FdH3Vof2KWkJZo6lsYNdHky1u2uwzAqyn1lSqrq5yMPdkTmdjdAFbaYUH6X3/Inzm2QvvYzSJu0mmn044= 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 Fri, 22 Dec 2023 20:28:05 +0000 "Matthew Wilcox (Oracle)" wrote: > Add folio_alloc_node() to replace alloc_pages_node() and then use > folio APIs throughout instead of converting back to pages. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > include/linux/gfp.h | 9 +++++++++ > mm/slub.c | 15 +++++++-------- This depends on changes which are in Vlastimil's tree and linux-next. So I reworked it to not do that, which means there will be a resolution for Linus to do, which Stephen will tell us about. It's simple, just from code motion. Maybe mm.git should include the slab tree, I haven't really considered what would be the implications of that. include/linux/gfp.h | 9 +++++++++ mm/slab_common.c | 15 +++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) --- a/include/linux/gfp.h~slab-convert-__kmalloc_large_node-and-free_large_kmalloc-to-use-folios +++ a/include/linux/gfp.h @@ -247,6 +247,15 @@ struct folio *__folio_alloc_node(gfp_t g return __folio_alloc(gfp, order, nid, NULL); } +static inline +struct folio *folio_alloc_node(gfp_t gfp, unsigned int order, int nid) +{ + if (nid == NUMA_NO_NODE) + nid = numa_mem_id(); + + return __folio_alloc_node(gfp, order, nid); +} + /* * Allocate pages, preferring the node given as nid. When nid == NUMA_NO_NODE, * prefer the current CPU's closest node. Otherwise node must be valid and --- a/mm/slab_common.c~slab-convert-__kmalloc_large_node-and-free_large_kmalloc-to-use-folios +++ a/mm/slab_common.c @@ -979,9 +979,9 @@ void free_large_kmalloc(struct folio *fo kasan_kfree_large(object); kmsan_kfree_large(object); - mod_lruvec_page_state(folio_page(folio, 0), NR_SLAB_UNRECLAIMABLE_B, + lruvec_stat_mod_folio(folio, NR_SLAB_UNRECLAIMABLE_B, -(PAGE_SIZE << order)); - __free_pages(folio_page(folio, 0), order); + folio_put(folio); } static void *__kmalloc_large_node(size_t size, gfp_t flags, int node); @@ -1137,18 +1137,17 @@ gfp_t kmalloc_fix_flags(gfp_t flags) static void *__kmalloc_large_node(size_t size, gfp_t flags, int node) { - struct page *page; + struct folio *folio; void *ptr = NULL; unsigned int order = get_order(size); if (unlikely(flags & GFP_SLAB_BUG_MASK)) flags = kmalloc_fix_flags(flags); - flags |= __GFP_COMP; - page = alloc_pages_node(node, flags, order); - if (page) { - ptr = page_address(page); - mod_lruvec_page_state(page, NR_SLAB_UNRECLAIMABLE_B, + folio = folio_alloc_node(flags, order, node); + if (folio) { + ptr = folio_address(folio); + lruvec_stat_mod_folio(folio, NR_SLAB_UNRECLAIMABLE_B, PAGE_SIZE << order); } _