Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp2557002ybc; Wed, 13 Nov 2019 16:51:21 -0800 (PST) X-Google-Smtp-Source: APXvYqzg/Jk2Z9j9ZWH9ZoVyLKQauWRxcZVHc0ZcpZL5qQieU8+ngeTWqDoxC++5sPBIrIfptEAJ X-Received: by 2002:a17:906:6a8e:: with SMTP id p14mr5792478ejr.137.1573692681807; Wed, 13 Nov 2019 16:51:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573692681; cv=none; d=google.com; s=arc-20160816; b=Aipgittn61e4rE8gHLHi3sEM7hwL3AcuGMr1yUxSu9MYiZp4Ru3rGauOZaRjcVG/kR dwwJHTLaUSGNbTrgKE3Rp9zQN1Reyq/ztDczVjoiTkEfn34zVXvIuQe5OGuHRkT3PR2V CrGJA5jLUuAZKYNKPyarvFEj/OeAYMn9Cdo2kwIZCY1gxSV0l3PO+sem+dlVNfZnMUsp W9F6fCnWaN/Ks2cX/nOJpb+c+IVQizQN3xw310sbzjaKmstF6xyR1Y1qcbDoEO4VgSAr YyCZ9bnQb8aeF5Ue79+r5AFTTxmvdx4WVR1E3VPF0reOBYZ1ps4uP4s+FenL9u/Fok9g Ce0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=JM0dXEnMbhhl1OhBMrYQPa4kYdncN1u/Wddm5L/nHXY=; b=arrDMqoBo16yvgDqo0ZAeisFoXOB2wpDRFwMzknuE/qhp/SxYVjlC7uiHtAYLybRGf yv1a93XEDs9afSFd05k1UC9s5rc7aqG52nT8F93cRp7l31Ol2DVevV5j7a1xZduFa/bL 1i9jRShHvZJw0Md+VIexHBdGSZUvN14Dp0OF7kHi6fczROh6sfiUmxDSFln/9NwYvgcA UdPigJRItSzlc0hEW97yOBJATRS4FmqizDnXKRmhTozxlIH4a585I8hHZ9Ajt9lRwrRU 9LxEODeDxcxyj8WmT71ZzUv9c5EdHJj8BSHsnWEM6BqvCu+zWeqycXpVhqJKnIg4fc8n O86w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel-com.20150623.gappssmtp.com header.s=20150623 header.b=VFxT5Ht5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ci3si2083896ejb.37.2019.11.13.16.50.56; Wed, 13 Nov 2019 16:51:21 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@intel-com.20150623.gappssmtp.com header.s=20150623 header.b=VFxT5Ht5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726452AbfKNArt (ORCPT + 99 others); Wed, 13 Nov 2019 19:47:49 -0500 Received: from mail-oi1-f196.google.com ([209.85.167.196]:43203 "EHLO mail-oi1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726195AbfKNArt (ORCPT ); Wed, 13 Nov 2019 19:47:49 -0500 Received: by mail-oi1-f196.google.com with SMTP id l20so3639232oie.10 for ; Wed, 13 Nov 2019 16:47:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=JM0dXEnMbhhl1OhBMrYQPa4kYdncN1u/Wddm5L/nHXY=; b=VFxT5Ht5WgclaogJt6FVDC9JnKcmVgOsS3Bzjz9RF7QJJNV/Xb1fHXe7C2P1cE8g1D NpiOedzfyNJBGjBn9IjMkX9VHTvoVZxFShBn/UZsMRN9mruaoPwn6CeF14i5gGZXnGjb EnokZzTGgPWLWltVH47ExnvwD8zOROPLm8ofoCDYhZDLgnVfJ9kyjvTWcD9XVG5pDQwC ELVfd7BB+s6Ix1tO+6nLC/EgJgB9kVCKsrLY6njjiUXymYwObN2N7qb7PyIXTgoVQU5I 9u75Zl776E9b2e/VLB2WSX47ps086nsiXLTbMUdjJNptpUrDmVdlNZdMQuMQj5KM944e UAKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=JM0dXEnMbhhl1OhBMrYQPa4kYdncN1u/Wddm5L/nHXY=; b=f5dXwWyHh0Y78YQ+VT4zuBIE0vGPDNYrULY8pkkLW6MIFcv7um8RR9EMJvXkjSWBbo 3Srxn9hrYDHa3txC4LbZLW2RxRLqaU4LIhwdBI67XM0TnflwdsC4ascmNbyTUQOIUnHf igkKM89W+SYRHDflC4fwNY8fFGuHbzO/6I3YZAn2bd9cY0aDzxJ+BgZ9OpLd9kAAM2/p bF1LSpJ+CYR5NxenZmZk8GRmcjTP0uzxNSiHgsxb7a3Em4+4hAA+SsnFeQzbvjHqDgH5 O63DafR0Vh46o9oRTIuzqAW9YomOW8z0u7jz+OJsA2tgITHklpzzQ4TfHud0SUTZG+Xa KQ+Q== X-Gm-Message-State: APjAAAW4nIltdBPs5umfhZAQpBjqIPYV7qnrWp73aHVNpxsOBMwnWyqo GnjL/Es/ITAaOniU6bvUvWMoZmAviNjQBFGmFOvZzQ== X-Received: by 2002:aca:3d84:: with SMTP id k126mr1206841oia.70.1573692468621; Wed, 13 Nov 2019 16:47:48 -0800 (PST) MIME-Version: 1.0 References: <157368992671.2974225.13512647385398246617.stgit@dwillia2-desk3.amr.corp.intel.com> <913133b7-58d8-9645-fc89-c2819825e1ee@nvidia.com> In-Reply-To: <913133b7-58d8-9645-fc89-c2819825e1ee@nvidia.com> From: Dan Williams Date: Wed, 13 Nov 2019 16:47:38 -0800 Message-ID: Subject: Re: [PATCH] mm: Cleanup __put_devmap_managed_page() vs ->page_free() To: John Hubbard Cc: Jan Kara , Christoph Hellwig , Ira Weiny , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , linux-nvdimm , Linux Kernel Mailing List , Linux MM Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 13, 2019 at 4:42 PM John Hubbard wrote: > > On 11/13/19 4:07 PM, Dan Williams wrote: > > After the removal of the device-public infrastructure there are only 2 > > ->page_free() call backs in the kernel. One of those is a device-privat= e > > callback in the nouveau driver, the other is a generic wakeup needed in > > the DAX case. In the hopes that all ->page_free() callbacks can be > > migrated to common core kernel functionality, move the device-private > > specific actions in __put_devmap_managed_page() under the > > is_device_private_page() conditional, including the ->page_free() > > callback. For the other page types just open-code the generic wakeup. > > > > Yes, the wakeup is only needed in the MEMORY_DEVICE_FSDAX case, but it > > does no harm in the MEMORY_DEVICE_DEVDAX and MEMORY_DEVICE_PCI_P2PDMA > > case. > > > > Cc: Jan Kara > > Cc: Christoph Hellwig > > Cc: Ira Weiny > > Cc: J=C3=A9r=C3=B4me Glisse > > Cc: John Hubbard > > Signed-off-by: Dan Williams > > --- > > Hi John, > > > > This applies on top of today's linux-next and passes my nvdimm unit > > tests. That testing noticed that devmap_managed_enable_get() needed a > > small fixup as well. > > Got it. This will appear in the next posted version of my "mm/gup: track > dma-pinned pages: FOLL_PIN, FOLL_LONGTERM" patchset. Thanks! > > > > > > drivers/nvdimm/pmem.c | 6 ------ > > mm/memremap.c | 22 ++++++++++++---------- > > 2 files changed, 12 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c > > index f9f76f6ba07b..21db1ce8c0ae 100644 > > --- a/drivers/nvdimm/pmem.c > > +++ b/drivers/nvdimm/pmem.c > > @@ -338,13 +338,7 @@ static void pmem_release_disk(void *__pmem) > > put_disk(pmem->disk); > > } > > > > -static void pmem_pagemap_page_free(struct page *page) > > -{ > > - wake_up_var(&page->_refcount); > > -} > > - > > static const struct dev_pagemap_ops fsdax_pagemap_ops =3D { > > - .page_free =3D pmem_pagemap_page_free, > > .kill =3D pmem_pagemap_kill, > > .cleanup =3D pmem_pagemap_cleanup, > > }; > > diff --git a/mm/memremap.c b/mm/memremap.c > > index 022e78e68ea0..6e6f3d6fdb73 100644 > > --- a/mm/memremap.c > > +++ b/mm/memremap.c > > @@ -27,7 +27,8 @@ static void devmap_managed_enable_put(void) > > > > static int devmap_managed_enable_get(struct dev_pagemap *pgmap) > > { > > - if (!pgmap->ops || !pgmap->ops->page_free) { > > + if (!pgmap->ops || (pgmap->type =3D=3D MEMORY_DEVICE_PRIVATE > > + && !pgmap->ops->page_free)) { > > > OK, so only MEMORY_DEVICE_PRIVATE has .page_free ops. That looks > correct to me, based on looking at the .page_free setters--I > only see Nouveau setting it. Correct. The FSDAX case still needs to enable the 'devmap_managed_key' static key, but other than that the core will handle all the follow-on details.