Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4705415pxj; Wed, 12 May 2021 11:18:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyIDGvCx2vMlGOdzmsmqbgQMZdHp4/+uxCbcmzHZaaSXcFMaZsvSzM0IsO5d3cj3n0V0WHy X-Received: by 2002:a9d:7654:: with SMTP id o20mr4538829otl.258.1620843511893; Wed, 12 May 2021 11:18:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620843511; cv=none; d=google.com; s=arc-20160816; b=eDBnKHIg4JNi7akpMViWWbnum9CtRM8cHnxxHLpkWn0aHu0hliZrBvgpMO8zhFwiVv CqtZW45sO+7G6KNj05DMxKYQtNeh/8ZAP+JAwUn+66wLfDh6fXzXhH3c743eghGI64nx DG2ftI/j3StvH2rYBuV7xEtAHM+k9UDmJmVs6+Y8R67wFT1dEYaN4/uKu32AwcsyhPUq tLc64UPZUPQDwAp3MthhqNzGn1K9ZJ4mdVoFwkpAqi2g4rPe8S7vtP4kp0DqfR8Vrxqb e26ZstogApR6FpO5/RViKSLwtXdpB7KvJR6PGBXNVp4vaA+rAEH048JWJnvdlGr79PFF 0oQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=Z1jNLB3wLDcskPEVKoXrAy/b8V7AtuVo4deTvSz6LE0=; b=zwc0eATO5kiNSSKAeyJ3NRNQIFa765hyDi5P5hfbGadLwNXD/syE/6R6PgdUFHLXZN 60EoErZ0xVYu1UF8u0g9FDvxkYTH7ViMfyRQC4ao3pzeOOEg8PoNbC/WldASRZCdCnKv 3EHhqCeM7r8bbJ/P88yHJtuneRVleZEXMu04q6cPkkVnRqpdpWyFx7JmQQobA11Z4d8v SMYgjPWAaM10SLRRGJynTaz6c/Emt3LgISrt8+qLlVkjXApxX07lEPryIRNhmHk67NUw zIhSFj5Q4pHN68MNme3waEyTKNjQu7rqXGchdjo+pGlqjw3eRjdao5Plw5IKamjK5McT Y6Bw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=looSmVpF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x5si451252otg.263.2021.05.12.11.18.00; Wed, 12 May 2021 11:18:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=looSmVpF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350475AbhELSKa (ORCPT + 99 others); Wed, 12 May 2021 14:10:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59172 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241655AbhELQ1p (ORCPT ); Wed, 12 May 2021 12:27:45 -0400 Received: from casper.infradead.org (casper.infradead.org [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BCF87C08C5CF; Wed, 12 May 2021 08:59:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=Z1jNLB3wLDcskPEVKoXrAy/b8V7AtuVo4deTvSz6LE0=; b=looSmVpFwooxSHE41z5+W6DarB 4mZTmUC995jRMx1vQRTbvFcv/3hV6YZkO/Dp/fTu2cqaZz9MnTOwTjeb0nmzENEfgSgktJSCpuqO2 Dg0G8N4LOmf7F0bRoS9mji4i+JDRXHfpEjgbAx7EAU0XZ9exEtk37hAqicHS6P4MBszbn/l+zFJDG dwvymKbSTKvTQsMHTV2zqoZrlOMq+ww+eEbaMCd91adNlcDL0/eZZ/0CW9BQjneU5esQPqEIuhvQG 2GKfMKdKLdBiHOGUxZOJR6YG6g39tp+HQ/q6DkTIy0Q/Scc4+Kfu0PCQAFSn3TE1lQy9DAlNvN7li uDwlSgzg==; Received: from willy by casper.infradead.org with local (Exim 4.94 #2 (Red Hat Linux)) id 1lgrEj-008T5g-IY; Wed, 12 May 2021 15:58:01 +0000 Date: Wed, 12 May 2021 16:57:25 +0100 From: Matthew Wilcox To: Ilias Apalodimas Cc: Matteo Croce , Networking , Linux-MM , Ayush Sawal , Vinay Kumar Yadav , Rohit Maheshwari , "David S. Miller" , Jakub Kicinski , Thomas Petazzoni , Marcin Wojtas , Russell King , Mirko Lindner , Stephen Hemminger , Tariq Toukan , Jesper Dangaard Brouer , Alexei Starovoitov , Daniel Borkmann , John Fastabend , Boris Pismenny , Arnd Bergmann , Andrew Morton , "Peter Zijlstra (Intel)" , Vlastimil Babka , Yu Zhao , Will Deacon , Michel Lespinasse , Fenghua Yu , Roman Gushchin , Hugh Dickins , Peter Xu , Jason Gunthorpe , Jonathan Lemon , Alexander Lobakin , Cong Wang , wenxu , Kevin Hao , Jakub Sitnicki , Marco Elver , Willem de Bruijn , Miaohe Lin , Yunsheng Lin , Guillaume Nault , open list , linux-rdma@vger.kernel.org, bpf , Eric Dumazet , David Ahern , Lorenzo Bianconi , Saeed Mahameed , Andrew Lunn , Paolo Abeni , Sven Auhagen Subject: Re: [PATCH net-next v4 1/4] mm: add a signature in struct page Message-ID: References: <20210511133118.15012-1-mcroce@linux.microsoft.com> <20210511133118.15012-2-mcroce@linux.microsoft.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 11, 2021 at 05:25:36PM +0300, Ilias Apalodimas wrote: > Nope not at all, either would work. we'll switch to that You'll need something like this because of the current use of page->index to mean "pfmemalloc". From ecd6d912056a21bbe55d997c01f96b0b8b9fbc31 Mon Sep 17 00:00:00 2001 From: "Matthew Wilcox (Oracle)" Date: Fri, 16 Apr 2021 18:12:33 -0400 Subject: [PATCH] mm: Indicate pfmemalloc pages in compound_head The net page_pool wants to use a magic value to identify page pool pages. The best place to put it is in the first word where it can be clearly a non-pointer value. That means shifting dma_addr up to alias with ->index, which means we need to find another way to indicate page_is_pfmemalloc(). Since page_pool doesn't want to set its magic value on pages which are pfmemalloc, we can use bit 1 of compound_head to indicate that the page came from the memory reserves. Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/mm.h | 12 +++++++----- include/linux/mm_types.h | 7 +++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index bd21864449bf..4f9b2007efad 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1670,10 +1670,12 @@ struct address_space *page_mapping(struct page *page); static inline bool page_is_pfmemalloc(const struct page *page) { /* - * Page index cannot be this large so this must be - * a pfmemalloc page. + * This is not a tail page; compound_head of a head page is unused + * at return from the page allocator, and will be overwritten + * by callers who do not care whether the page came from the + * reserves. */ - return page->index == -1UL; + return page->compound_head & 2; } /* @@ -1682,12 +1684,12 @@ static inline bool page_is_pfmemalloc(const struct page *page) */ static inline void set_page_pfmemalloc(struct page *page) { - page->index = -1UL; + page->compound_head = 2; } static inline void clear_page_pfmemalloc(struct page *page) { - page->index = 0; + page->compound_head = 0; } /* diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 5aacc1c10a45..1352e278939b 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -96,10 +96,9 @@ struct page { unsigned long private; }; struct { /* page_pool used by netstack */ - /** - * @dma_addr: might require a 64-bit value on - * 32-bit architectures. - */ + unsigned long pp_magic; + struct page_pool *pp; + unsigned long _pp_mapping_pad; unsigned long dma_addr[2]; }; struct { /* slab, slob and slub */ -- 2.30.2