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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0EC4C433EF for ; Fri, 12 Nov 2021 15:40:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 54AD761056 for ; Fri, 12 Nov 2021 15:40:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 54AD761056 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ziepe.ca Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id D90DD6B007B; Fri, 12 Nov 2021 10:40:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D19D76B007D; Fri, 12 Nov 2021 10:40:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BBB446B007E; Fri, 12 Nov 2021 10:40:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0161.hostedemail.com [216.40.44.161]) by kanga.kvack.org (Postfix) with ESMTP id AC8AC6B007B for ; Fri, 12 Nov 2021 10:40:44 -0500 (EST) Received: from smtpin25.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 6DEAB1844CACD for ; Fri, 12 Nov 2021 15:40:44 +0000 (UTC) X-FDA: 78800690808.25.335258C Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by imf21.hostedemail.com (Postfix) with ESMTP id DDE24D036A67 for ; Fri, 12 Nov 2021 15:40:37 +0000 (UTC) Received: by mail-pj1-f47.google.com with SMTP id w33-20020a17090a6ba400b001a722a06212so6420462pjj.0 for ; Fri, 12 Nov 2021 07:40:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=xrgHnzEuXdDQnDfAgVFJeYXWXU/wp4hergRrT9uknxk=; b=YS73mq9GAX47GV1Tsf0uXZhfamYp9oAAP4/sn6XnYKWBButpN58bewYuClCAhvbsx7 2OilYsQd6++EVff4d/Uf80/g6t/mN4x4hY/UqapMnzQjyFaSTJPqPOt+0A1aKQ2VJD1o wdcx1pzuCLnDZfQJ5QcdYsgd61V31BgE3N1Wb68yNMYmRixtzHYfhxSSxYOfxDkwt706 kNj5nV2Hpz2MgLGwRBolsQ8hj9VEy6/Vb6QUDIGPEM71390UqP6k/b3zPYQ8WboTiwjM rG/6yup165WRlvU6+1t5qSwEF/ZN8re/mxlvAbcX2CIU6genJ7KcSTrA0Sp9bxfLzz2H m16w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=xrgHnzEuXdDQnDfAgVFJeYXWXU/wp4hergRrT9uknxk=; b=WxlrMPpeO9Bn609UZGpnUJBv4arSUzn15o9K7CUyqDnpQqt50LVCK9r38yVv02anXE swUds7P/ngtgbSh1xAwq+X2pyaMjlp330t4EFmCGu2/LQj0b2BT8g8DH9xaqa4ecAnMZ shrupB2AOheTUunL+TkB41WOzIipRQMHWIC67xO5rmuTjc5Py+44jU7wggcc4bCcUzc9 2uuhsRtMb68CN2fMFu1q/dBB0dCPsUafRwZsjhZ45HKmXw6HzuIyliA6B6CNebwVJjas fmFNKld1fX8ZCkk4EsGAN/KegtE2siWwYTINghZN+S2u8mZqc3df9zY0eFWczQ2OAFus bSCQ== X-Gm-Message-State: AOAM533XMS7NfkRYJtPCYtYTSfN3Pwc3V0nqj6wIv+3byG92YnShvFSH obz8F/z8rjM6NpQOsVR2qDkWoT/241S1fA== X-Google-Smtp-Source: ABdhPJzPucpGQXurj467junIVP7ueDppunByZw5QMjrA4NaqFxle4jwuOw8Xm+N1RCQgaFjgpnjv7Q== X-Received: by 2002:a05:6214:250d:: with SMTP id gf13mr15263616qvb.39.1636731245689; Fri, 12 Nov 2021 07:34:05 -0800 (PST) Received: from ziepe.ca ([206.223.160.26]) by smtp.gmail.com with ESMTPSA id m68sm2815075qkb.105.2021.11.12.07.34.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Nov 2021 07:34:05 -0800 (PST) Received: from jgg by mlx with local (Exim 4.94) (envelope-from ) id 1mlYZ2-0096x0-4k; Fri, 12 Nov 2021 11:34:04 -0400 Date: Fri, 12 Nov 2021 11:34:04 -0400 From: Jason Gunthorpe To: Joao Martins Cc: linux-mm@kvack.org, Dan Williams , Vishal Verma , Dave Jiang , Naoya Horiguchi , Matthew Wilcox , John Hubbard , Jane Chu , Muchun Song , Mike Kravetz , Andrew Morton , Jonathan Corbet , Christoph Hellwig , nvdimm@lists.linux.dev, linux-doc@vger.kernel.org Subject: Re: [PATCH v5 8/8] device-dax: compound devmap support Message-ID: <20211112153404.GD876299@ziepe.ca> References: <20211112150824.11028-1-joao.m.martins@oracle.com> <20211112150824.11028-9-joao.m.martins@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20211112150824.11028-9-joao.m.martins@oracle.com> X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: DDE24D036A67 X-Stat-Signature: bs6rk4qspqwghpr9ntcq5f4y9jumddx7 Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=ziepe.ca header.s=google header.b=YS73mq9G; spf=pass (imf21.hostedemail.com: domain of jgg@ziepe.ca designates 209.85.216.47 as permitted sender) smtp.mailfrom=jgg@ziepe.ca; dmarc=none X-HE-Tag: 1636731637-557868 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 Fri, Nov 12, 2021 at 04:08:24PM +0100, Joao Martins wrote: > diff --git a/drivers/dax/device.c b/drivers/dax/device.c > index a65c67ab5ee0..0c2ac97d397d 100644 > +++ b/drivers/dax/device.c > @@ -192,6 +192,42 @@ static vm_fault_t __dev_dax_pud_fault(struct dev_dax *dev_dax, > } > #endif /* !CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */ > > +static void set_page_mapping(struct vm_fault *vmf, pfn_t pfn, > + unsigned long fault_size, > + struct address_space *f_mapping) > +{ > + unsigned long i; > + pgoff_t pgoff; > + > + pgoff = linear_page_index(vmf->vma, ALIGN(vmf->address, fault_size)); > + > + for (i = 0; i < fault_size / PAGE_SIZE; i++) { > + struct page *page; > + > + page = pfn_to_page(pfn_t_to_pfn(pfn) + i); > + if (page->mapping) > + continue; > + page->mapping = f_mapping; > + page->index = pgoff + i; > + } > +} > + > +static void set_compound_mapping(struct vm_fault *vmf, pfn_t pfn, > + unsigned long fault_size, > + struct address_space *f_mapping) > +{ > + struct page *head; > + > + head = pfn_to_page(pfn_t_to_pfn(pfn)); > + head = compound_head(head); > + if (head->mapping) > + return; > + > + head->mapping = f_mapping; > + head->index = linear_page_index(vmf->vma, > + ALIGN(vmf->address, fault_size)); > +} Should this stuff be setup before doing vmf_insert_pfn_XX? In normal cases the page should be returned in the vmf and populated to the page tables by the core code after all this is done. dax can't do that because of the refcount mess, but I would think the basic ordering should be the same. Jason