From patchwork Mon Jun 17 12:27:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10998967 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 861F314B6 for ; Mon, 17 Jun 2019 12:27:48 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7745A288AC for ; Mon, 17 Jun 2019 12:27:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5FEBD28841; Mon, 17 Jun 2019 12:27:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2B4102867F for ; Mon, 17 Jun 2019 12:27:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D4E7C8E0004; Mon, 17 Jun 2019 08:27:45 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id CFCD98E0001; Mon, 17 Jun 2019 08:27:45 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C12158E0004; Mon, 17 Jun 2019 08:27:45 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by kanga.kvack.org (Postfix) with ESMTP id 8EBDC8E0001 for ; Mon, 17 Jun 2019 08:27:45 -0400 (EDT) Received: by mail-pl1-f199.google.com with SMTP id r7so5911703plo.6 for ; Mon, 17 Jun 2019 05:27:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=PvDb2Ox1k4dZazYGdHDZANbuB1HI2/N93WOg6eXhjAQ=; b=f0EvmgtSBp3I4VPUogExj4FF2qOkameNa+lTy9xIko9Nm0fUkE3fy6e6O3GU2qBnka TgbKDJ+fDcI93+C968u+0LIzuGnAqeCYrSRVeGyIeb2VOEBUjJ1glDosI7JkOSKvgJBB WF4Jp+12x3I9XXxW10hfcg3iyfbjlgNrRM2P4YwLT7MwPogCPoLuMOEsa/836wWI26T4 v8H8g2w9wwgfyC6gxIjd+BjLTjnaQReQ1g+Xu8U/ONvfALoP02l8lhnEeCZ6EcxOb9fZ lgypxoL4LV4umct7KmpJBTzY8XeyxCskMwSdCsDYPLgw76tvMS6G1kk1sGUVKaQSx6TH tQFQ== X-Gm-Message-State: APjAAAUevc6Ojq99Duf0p5woXYs9fh/lErA7uSdW1fxtG+qj3YQmxePM 6xcQQHnnQSeh56iIfou2tPmvx2ufsvmuiJl+N0rhzzQl481iGrWZJje7A/TZZumSC4B+0owLRX5 Q59Yp7Yqt+UwsvLER8/mAv2RFLtt5shY76nNJhtyzfZPBmhVZjL0yRe5uzjAEHpk= X-Received: by 2002:a65:5308:: with SMTP id m8mr23383097pgq.54.1560774464379; Mon, 17 Jun 2019 05:27:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqwEq0W0oM+uqrLCs35qpc+CGPrUvnJDuo7CnlcMVEnC881qwA+NI78NvS9P2XXqd9ZGmi+B X-Received: by 2002:a65:5308:: with SMTP id m8mr23383054pgq.54.1560774463465; Mon, 17 Jun 2019 05:27:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774463; cv=none; d=google.com; s=arc-20160816; b=m51aGx7XK71B6SwdO8ys1+63xDfvA+fIjVFbJwMibJnOdY+DqOJvUqMzGqjLzjHb7v y67f7ygQJ0B0rwYpCivSwXv9UUa7rezagXWtwfgJotN6az2poRFlnl8uQTD+53p1w72+ YeVj7qNKwNYm3nLzgZjEof0eSR7161x+7LVkCYAwKrG9vVaSlY34ExWZAzO265AYCAsP hvia5O3EjDuvsVjdR/r2I2oQ8+2Vu6rwdn5ai7qSAgv31QohHb75X1TvJ1Hvh+7+3uHs pQCtUIkIwZgiDCWLrtkpXtLd0p9yteNsQn2BoRz7scJR4lfOPMS4ARfKYoEL2j+sHO9g ZMzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=PvDb2Ox1k4dZazYGdHDZANbuB1HI2/N93WOg6eXhjAQ=; b=QDVi8HeLNColEUukyhTNL+79gWhO6Cm9q2nq9Nfyq7hUR7j4+znDpc+++e4lv0aSa3 NKLtUcwdZxrg7zboDkbOMSYM9gOVWdlIugY8FLBiU9JCUoCFPchXQ3OcgUv4dJg41c/9 E3InaXRu7lT7cdfzCSTJKDwE4E9wOlpTqfUfTCN9ZSV0fMwaK3Yo5T4zAuRozCGvb0Qg XpkC/DG+ZVI5BFkc1hKHxSijuTUqb+RiS/i2YAcJ/2yWVDbnx+2ov/Jt1rGR3GDYNbfV A2EDqx0tEjmiwfeKZs6zpqavr2wMV5BiwT6f+Si4A0FwB42ajOepwk0rhoHSxSPkVLUs PN/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=sb1bPHYS; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id t23si10590077pgu.320.2019.06.17.05.27.43 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:27:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=sb1bPHYS; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=PvDb2Ox1k4dZazYGdHDZANbuB1HI2/N93WOg6eXhjAQ=; b=sb1bPHYSDLwe702WgBPwsLs+J0 vhPm0vc39IREraw5fNiKWwVi9b2XYJL8w6l2OeJY6AgdG8fPQh63r1aibZKvGoX4P777qmADQIXze OYKNAjycAzImv4MUUNJ1Sv6fOnX95UP0Tu509ppILxE5n4d614sDWPMcRXsHXnhq1gEXEUCA1AvUq OqgqDRRmXt/AFAdHkWOVd0/MMaDaR60es8wSgvkI32aP283KFFhUOZkJ79kLqoS/P/7e6eF2EVA7o 0cDAzMOCQw8d61JCfYZgkqA5mYDhyXUXH6xL/G5qSJueB/oc/v0KwCGT+woKWUhfY5a9eI/qAtVq6 jjs4LpNQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjb-0008KG-Cp; Mon, 17 Jun 2019 12:27:39 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 01/25] mm: remove the unused ARCH_HAS_HMM_DEVICE Kconfig option Date: Mon, 17 Jun 2019 14:27:09 +0200 Message-Id: <20190617122733.22432-2-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- mm/Kconfig | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/mm/Kconfig b/mm/Kconfig index f0c76ba47695..0d2ba7e1f43e 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -675,16 +675,6 @@ config ARCH_HAS_HMM_MIRROR depends on (X86_64 || PPC64) depends on MMU && 64BIT -config ARCH_HAS_HMM_DEVICE - bool - default y - depends on (X86_64 || PPC64) - depends on MEMORY_HOTPLUG - depends on MEMORY_HOTREMOVE - depends on SPARSEMEM_VMEMMAP - depends on ARCH_HAS_ZONE_DEVICE - select XARRAY_MULTI - config ARCH_HAS_HMM bool default y From patchwork Mon Jun 17 12:27:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10998979 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D4BC213AF for ; Mon, 17 Jun 2019 12:27:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C60E427480 for ; Mon, 17 Jun 2019 12:27:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B9827285A3; Mon, 17 Jun 2019 12:27:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 35AB81FF0B for ; Mon, 17 Jun 2019 12:27:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 649DE8E0003; Mon, 17 Jun 2019 08:27:46 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 5D1BD8E0001; Mon, 17 Jun 2019 08:27:46 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4C0538E0006; Mon, 17 Jun 2019 08:27:46 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by kanga.kvack.org (Postfix) with ESMTP id 07A218E0001 for ; Mon, 17 Jun 2019 08:27:46 -0400 (EDT) Received: by mail-pl1-f198.google.com with SMTP id u10so5895497plq.21 for ; Mon, 17 Jun 2019 05:27:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=GMyD4ZeUwEyX4TLbYH+teiOZCsmaS5so5bsDBHXs5VU=; b=C85Uc63mkFZ7a9qxRcf4JYW2tX680DhCRaA1JsaYBYNNRzQTKj432Ltodr5Cfo5MM0 +nl673ppQEmK9Qwr1WQ838xYZF44K7cr8iqfyXdWiEs2MrASMoslgz81E3gZ3/2G1HCQ xNGvQVBOf5WgacoqLSiYV7F/NidF1b43DSLFqhg4M/cbayW9HHYgHBh18I6ivP2oAUN/ BAmqrNgZOL7jzEt0086DsWKH9OV7Ury6TfjPgJNz6Ozjow7ZhRMix7S/E9DyRFUb/o/u fJkP9/afHind14XAat0drhp1dqzyWlp4tNxA0P4OuUzFKfXYkJPPDjxfEwxYXT4QErHq RUSw== X-Gm-Message-State: APjAAAUUJz+ktOzA00xKPq3qwK3wJHYA3W8BixOUGRa8HQWzWsbs+u0f 0F+hbRasLwWvA8RJntkjFdvVCiMowtUxmPeVUci/CoXlo7Js6pC/2cM8caw/Nkazdo5wv3ipUd1 osCNvZY2cPmdShjcCReKIk01DZXzGWsCR7qVlG0PwE3S8UL2NbhLjk9qdUxY/1As= X-Received: by 2002:a63:de53:: with SMTP id y19mr48787289pgi.166.1560774465546; Mon, 17 Jun 2019 05:27:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqzY0bk4bUwHt3vHBgHyLvXqKiAOktx7NpO8urNZDkM1LC02Qj9hSPB2IajDQZGPTC0X+kYh X-Received: by 2002:a63:de53:: with SMTP id y19mr48787240pgi.166.1560774464725; Mon, 17 Jun 2019 05:27:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774464; cv=none; d=google.com; s=arc-20160816; b=0WUuLkGaq4C9KewN3bsBeEnH08gym05a01ao830oo4Mx0PISMaCDvYTbVHzzuWFQJL Iq+fqeZcFsl5ptT+YEKzf8hjtxynUAXFaV4YQFho6042JJkrYHIVt6+23h/i8kDXIC79 9biCoPcpiKh/PKa9grBX6PyGqGu3j3enhsz6i+gOOplw6Xtr/nRyC4t1ZeSe5el222TD TLVt1Q7jPCaDrHVFyFzN//ZW21CQQoY+Ym39+HXR96LMEDJKaL8NlYizUzTnIje7roa6 Bw3MaBlaetqmLVKPBfhnk+UlrWS2yv8n4iGk1uPqzf6Ryt3sgxW0EPdDHKECszsg9PIh e9IA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=GMyD4ZeUwEyX4TLbYH+teiOZCsmaS5so5bsDBHXs5VU=; b=BwKLlPmXSBABMQfBKchdqfVBe4bCJQRpa9ATlK/zZCNJliLsDGJZwO3p+M5fPy2LXx SeGxiAVcCg67wMTMfGd9JYk7JgcwwOwU1zYT7yic2IsgTZUThON5xM4QEYaGcpfKLgFf S5CUZupLYnr/WfLwyri+lE4JWtbkXzeonHrUDLXEhyGwE47+9lA0YyE4WyKMOQil5TGW 50L5KhGroPAZfY0IVsT+XDoIaP6biaowdIJ+rWQLC4FeoKeK+RSh1tNf9fVw0goXOX0/ K84SpV47ub1QV1XlvuQhQ217XYKToscOo1t34ah53dHlxAkhfU3AasJ6oKocRyqa0g/D VcOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=nUM3O0j+; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id b92si10355956pjc.17.2019.06.17.05.27.44 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:27:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=nUM3O0j+; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=GMyD4ZeUwEyX4TLbYH+teiOZCsmaS5so5bsDBHXs5VU=; b=nUM3O0j+v0YkuO+grtlLfHPwaH cV0WhQAmaitlmE6ROwsIKJCV/PlKqUn+0O2EWB1Hs1nEpKWW8txqk2fddXoiLre+dVvw9bHopOPj/ gxJDRUoHl+//i7XrIMZT3FKhCTu/PdfOYJCLGgo7rTAcjPqy99/URAGv7WeM7qn8F0aLO8QPfe2cq 07WYX982utWhvOtWHTzi5gbbLN1LvS1/WFqavQ6hw3qVrjla8/wu9w23XyHgB/5OiA5nsWfl2v27L xDnS8fKvcYcw4DwESFtDIxH0HLpADpbP4XBoQFGVGvrc38bZlNIwtghm8E94lATBAXFDfzbvWHgJL wMPWcrTA==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjd-0008Kg-IT; Mon, 17 Jun 2019 12:27:41 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH 02/25] mm: remove the struct hmm_device infrastructure Date: Mon, 17 Jun 2019 14:27:10 +0200 Message-Id: <20190617122733.22432-3-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP This code is a trivial wrapper around device model helpers, which should have been integrated into the driver device model usage from the start. Assuming it actually had users, which it never had since the code was added more than 1 1/2 years ago. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: John Hubbard --- include/linux/hmm.h | 20 ------------ mm/hmm.c | 80 --------------------------------------------- 2 files changed, 100 deletions(-) diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 7007123842ba..c92f353d701a 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -753,26 +753,6 @@ static inline unsigned long hmm_devmem_page_get_drvdata(const struct page *page) { return page->hmm_data; } - - -/* - * struct hmm_device - fake device to hang device memory onto - * - * @device: device struct - * @minor: device minor number - */ -struct hmm_device { - struct device device; - unsigned int minor; -}; - -/* - * A device driver that wants to handle multiple devices memory through a - * single fake device can use hmm_device to do so. This is purely a helper and - * it is not strictly needed, in order to make use of any HMM functionality. - */ -struct hmm_device *hmm_device_new(void *drvdata); -void hmm_device_put(struct hmm_device *hmm_device); #endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ #else /* IS_ENABLED(CONFIG_HMM) */ static inline void hmm_mm_destroy(struct mm_struct *mm) {} diff --git a/mm/hmm.c b/mm/hmm.c index 4c770a734c0d..f3350fc567ab 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1525,84 +1525,4 @@ struct hmm_devmem *hmm_devmem_add_resource(const struct hmm_devmem_ops *ops, return devmem; } EXPORT_SYMBOL_GPL(hmm_devmem_add_resource); - -/* - * A device driver that wants to handle multiple devices memory through a - * single fake device can use hmm_device to do so. This is purely a helper - * and it is not needed to make use of any HMM functionality. - */ -#define HMM_DEVICE_MAX 256 - -static DECLARE_BITMAP(hmm_device_mask, HMM_DEVICE_MAX); -static DEFINE_SPINLOCK(hmm_device_lock); -static struct class *hmm_device_class; -static dev_t hmm_device_devt; - -static void hmm_device_release(struct device *device) -{ - struct hmm_device *hmm_device; - - hmm_device = container_of(device, struct hmm_device, device); - spin_lock(&hmm_device_lock); - clear_bit(hmm_device->minor, hmm_device_mask); - spin_unlock(&hmm_device_lock); - - kfree(hmm_device); -} - -struct hmm_device *hmm_device_new(void *drvdata) -{ - struct hmm_device *hmm_device; - - hmm_device = kzalloc(sizeof(*hmm_device), GFP_KERNEL); - if (!hmm_device) - return ERR_PTR(-ENOMEM); - - spin_lock(&hmm_device_lock); - hmm_device->minor = find_first_zero_bit(hmm_device_mask, HMM_DEVICE_MAX); - if (hmm_device->minor >= HMM_DEVICE_MAX) { - spin_unlock(&hmm_device_lock); - kfree(hmm_device); - return ERR_PTR(-EBUSY); - } - set_bit(hmm_device->minor, hmm_device_mask); - spin_unlock(&hmm_device_lock); - - dev_set_name(&hmm_device->device, "hmm_device%d", hmm_device->minor); - hmm_device->device.devt = MKDEV(MAJOR(hmm_device_devt), - hmm_device->minor); - hmm_device->device.release = hmm_device_release; - dev_set_drvdata(&hmm_device->device, drvdata); - hmm_device->device.class = hmm_device_class; - device_initialize(&hmm_device->device); - - return hmm_device; -} -EXPORT_SYMBOL(hmm_device_new); - -void hmm_device_put(struct hmm_device *hmm_device) -{ - put_device(&hmm_device->device); -} -EXPORT_SYMBOL(hmm_device_put); - -static int __init hmm_init(void) -{ - int ret; - - ret = alloc_chrdev_region(&hmm_device_devt, 0, - HMM_DEVICE_MAX, - "hmm_device"); - if (ret) - return ret; - - hmm_device_class = class_create(THIS_MODULE, "hmm_device"); - if (IS_ERR(hmm_device_class)) { - unregister_chrdev_region(hmm_device_devt, HMM_DEVICE_MAX); - return PTR_ERR(hmm_device_class); - } - return 0; -} - -device_initcall(hmm_init); #endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ From patchwork Mon Jun 17 12:27:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10998983 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5664314B6 for ; Mon, 17 Jun 2019 12:27:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 484411FF0B for ; Mon, 17 Jun 2019 12:27:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3C59C285A3; Mon, 17 Jun 2019 12:27:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A90491FF0B for ; Mon, 17 Jun 2019 12:27:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D74F08E0006; Mon, 17 Jun 2019 08:27:47 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id CFF758E0001; Mon, 17 Jun 2019 08:27:47 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B29E08E0006; Mon, 17 Jun 2019 08:27:47 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by kanga.kvack.org (Postfix) with ESMTP id 7CCED8E0001 for ; Mon, 17 Jun 2019 08:27:47 -0400 (EDT) Received: by mail-pl1-f198.google.com with SMTP id i3so5905718plb.8 for ; Mon, 17 Jun 2019 05:27:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=7iZXhGqknpU44tD1MPjuSqDckdpKS/nLGoa4L7/1O94=; b=VfzkmcxorRnH/bBmmeULoLXsDjvGTnvoU5Trt8UfA/EpWujkyBgmgIcHLpsw1osy8y 6k/Lzqg7JGxSoxOFMKClfqMrA3fiJEJNQUdocltXHqKSEQisvC8FJRzwMtDPEGt9Jc3B 0lwPdpQDw1vEpIks/RYWUy0JaLorHaNaLz6o3rXVbZCeXAd/Cfz1T/DmCt6cugya7LcW V1J7oz9AEwvhDMb3nYrnMOtv2S2+51g78t80Y8ayayLEwik02zc4s6xUt9NDy0eoDrqB oEeMLrNXTgobPxpRy7m3yHxR4ey2/1UfFpjhS3/3nUWp6hKGKAmp6K/CeIQna0mR8ACf 6/+g== X-Gm-Message-State: APjAAAVE5JBWqlBRzSfJjXYQFXkirG83w7eG97Ty/5JZelTUGNX5VAUX QdKdXJyDSHZUpTvfeAXHB/aXpvmVy1KZlS/1buEghXlDBPzjSkncdwstxtRk5qp+rTUrEgSle0+ jP+TkgDuZEgpyFAg8GEinOh/yl0DxG9nhPTah+aNIDiaNR2BE5ixUPc2bi0zZnnU= X-Received: by 2002:a65:62cc:: with SMTP id m12mr48757975pgv.237.1560774467056; Mon, 17 Jun 2019 05:27:47 -0700 (PDT) X-Google-Smtp-Source: APXvYqxJBDlHs2uOue2PnDpvP3RptzGznjVlya2nFhM6FncKj8FUr2joQB2BMnNJp4cZh6XmgPQn X-Received: by 2002:a65:62cc:: with SMTP id m12mr48757931pgv.237.1560774466148; Mon, 17 Jun 2019 05:27:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774466; cv=none; d=google.com; s=arc-20160816; b=EggGR4PV2GSpcSsJFDJKP6Y4FG0G69WQHbhK/60DARhtX4avP9O0QRBKIfm+XjXIPs W4jvKOyuoU1MAITqgCsqLAr6dqmqpHF0/jea5bUlDIf27am2sL8boCCiVCUgKFZyu89s sixKnRR9Hnp4f8CHJ0f14CyBHikClKkFLHv5hBxhDCdwa57LrFpx3D48Hu1K5pUNBczV Aywubu7xuoVLQxb0brTF1i4v4q4W9wNFWdfvOI8cLjeV3I/iGHhIHb7pXu0+I5+Fv4Xy 3Xtu+4XRsVzfIUnDHdmlucnV2G0I8gO2HLD3HyYZP6kzTuLYLvNV3hPAgHZpAZ32av7Y vr9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=7iZXhGqknpU44tD1MPjuSqDckdpKS/nLGoa4L7/1O94=; b=VsrrX0YA/6c16N5vh2NQqsEAJjt4i+xYx3g3rMdbTGhaLjPyLNU3XYQGaKN2EDeI7Z zJShGtVODv7cJjVD/F0CKlkFezn0U7FeOJm87xBlQRTbSvLY3+O5kyOkVVUNneULgbwE zIBqls5lWiNZ54cF9QRWSAyzRR6fb2aGGW/3OHd8iz32hKfcRW3piqYeDSSJ+bz3z95K H1u2OhkoZJfQOY3IMguUTbzW1HFRP9A1/mdr3vyKOf51lr9RCpnMg/lo+2m4FSYkTADs uPsSHErbWGx2E3epFKMNwvK5wsrx9rmuOAc5CxlDWHCVjcQFL/+5GWVg/zduoCKuBZ+T FRDQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=FbRn9tnx; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id x3si10853777pgk.413.2019.06.17.05.27.46 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:27:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=FbRn9tnx; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=7iZXhGqknpU44tD1MPjuSqDckdpKS/nLGoa4L7/1O94=; b=FbRn9tnxZ5wWW5q5U1pZRBVxXs CxGwGMXKAq/9Ihv+awdUqjfKfebfLDdbVNObc0HyuE8WXKatstvj5dw/HK/igbfwoSFPnkwWo7ebj rUGor0jqTaP/NW3YZeZfVSnvBwAlo3Lo8EiyGtMu2ND6pJBqRtA/O5D4bGF6fo8S0K5psWYBY5XxU 2c+lcusAC9Bxse0Kr01AZ9/JkVgMHxvoDiwKVC1jNIBFfo+VKR+KrNeDEBaA0xzhkfYUvWAgWPrWC Lfcmv9DujdDUWC5tNLBcO6Ok6TTvo8HvDhBnnc9rcvR5/dgumLg41lBugJqDsgZ6cxqqK5EVO2485 CgZI5zyQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjf-0008Kt-OO; Mon, 17 Jun 2019 12:27:44 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH 03/25] mm: remove hmm_devmem_add_resource Date: Mon, 17 Jun 2019 14:27:11 +0200 Message-Id: <20190617122733.22432-4-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP This function has never been used since it was first added to the kernel more than a year and a half ago, and if we ever grow a consumer of the MEMORY_DEVICE_PUBLIC infrastructure it can easily use devm_memremap_pages directly. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: John Hubbard --- include/linux/hmm.h | 3 --- mm/hmm.c | 50 --------------------------------------------- 2 files changed, 53 deletions(-) diff --git a/include/linux/hmm.h b/include/linux/hmm.h index c92f353d701a..31e1c5347331 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -724,9 +724,6 @@ struct hmm_devmem { struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, struct device *device, unsigned long size); -struct hmm_devmem *hmm_devmem_add_resource(const struct hmm_devmem_ops *ops, - struct device *device, - struct resource *res); /* * hmm_devmem_page_set_drvdata - set per-page driver data field diff --git a/mm/hmm.c b/mm/hmm.c index f3350fc567ab..dc251c51803a 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1475,54 +1475,4 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, return devmem; } EXPORT_SYMBOL_GPL(hmm_devmem_add); - -struct hmm_devmem *hmm_devmem_add_resource(const struct hmm_devmem_ops *ops, - struct device *device, - struct resource *res) -{ - struct hmm_devmem *devmem; - void *result; - int ret; - - if (res->desc != IORES_DESC_DEVICE_PUBLIC_MEMORY) - return ERR_PTR(-EINVAL); - - dev_pagemap_get_ops(); - - devmem = devm_kzalloc(device, sizeof(*devmem), GFP_KERNEL); - if (!devmem) - return ERR_PTR(-ENOMEM); - - init_completion(&devmem->completion); - devmem->pfn_first = -1UL; - devmem->pfn_last = -1UL; - devmem->resource = res; - devmem->device = device; - devmem->ops = ops; - - ret = percpu_ref_init(&devmem->ref, &hmm_devmem_ref_release, - 0, GFP_KERNEL); - if (ret) - return ERR_PTR(ret); - - devmem->pfn_first = devmem->resource->start >> PAGE_SHIFT; - devmem->pfn_last = devmem->pfn_first + - (resource_size(devmem->resource) >> PAGE_SHIFT); - devmem->page_fault = hmm_devmem_fault; - - devmem->pagemap.type = MEMORY_DEVICE_PUBLIC; - devmem->pagemap.res = *devmem->resource; - devmem->pagemap.page_free = hmm_devmem_free; - devmem->pagemap.altmap_valid = false; - devmem->pagemap.ref = &devmem->ref; - devmem->pagemap.data = devmem; - devmem->pagemap.kill = hmm_devmem_ref_kill; - devmem->pagemap.cleanup = hmm_devmem_ref_exit; - - result = devm_memremap_pages(devmem->device, &devmem->pagemap); - if (IS_ERR(result)) - return result; - return devmem; -} -EXPORT_SYMBOL_GPL(hmm_devmem_add_resource); #endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ From patchwork Mon Jun 17 12:27:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10998987 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 96A4714C0 for ; Mon, 17 Jun 2019 12:27:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 880841FF0B for ; Mon, 17 Jun 2019 12:27:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7BE70285A3; Mon, 17 Jun 2019 12:27:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0ADE8288E5 for ; Mon, 17 Jun 2019 12:27:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 733B78E0007; Mon, 17 Jun 2019 08:27:50 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 6E46B8E0001; Mon, 17 Jun 2019 08:27:50 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5F9758E0007; Mon, 17 Jun 2019 08:27:50 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by kanga.kvack.org (Postfix) with ESMTP id 28F588E0001 for ; Mon, 17 Jun 2019 08:27:50 -0400 (EDT) Received: by mail-pf1-f199.google.com with SMTP id b127so6958291pfb.8 for ; Mon, 17 Jun 2019 05:27:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=K9g0rbDWkkxSMGlYVgcFvd5xNggbvRNJSx9Dd0Ro7/M=; b=ArshkJxIgZLOSxO3xzPM0xjT+VaR6BH0tp+71lU+z6tGMHF/oT2W0SpJ26/CWXFE8H A34BOYaPFx6GDIJx0fCDcGJtsJVGIISr70N+ZC5LxvZ9GNVFz3Q/+1escgyh7bytoTvf Bk/6u3ezThI83OgERDFgGH9kNO4CCOFWuz8MrE0gdqtln+bcNFZ4DUwf2rJfQD7gLdai zuiq0NKM0KUZFvhYGeCOj/X4kar3jkz/YKappFog+tlq0dWoEVsvO1INmeSugIzefrvW 2/6ZmJxKW1RC8TUJ8Emq1qqxtKrzAE6UQ//TY8JjEwnpgy5jQ7SynhQwDbWYwK3P4F3r WCWQ== X-Gm-Message-State: APjAAAVjmFfWs4Fh1/ygk4UIgLnCTr0ukb4GlFKDqJeMdnDXyQpt75gD YyE58TL+lSPQZv8sIclQZ9lwkTRNVILYUSUZXZXqJIWNRDqi03AP5CzEdwl+DngF2jMLAO8nqP4 D5zY8KMU9ojIGjdowvX6sVKJvGA0AWhg3PJAOD0iWjyOtG79eWkYiu30W0Fd8bS8= X-Received: by 2002:a65:4209:: with SMTP id c9mr50135414pgq.111.1560774469756; Mon, 17 Jun 2019 05:27:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqxXcI5VjnktuAuVxp2f465/1pXQUydBxvT3bpOhTjFq4gCaJ8/bYLOMBjriGGwB37s3FZNH X-Received: by 2002:a65:4209:: with SMTP id c9mr50135383pgq.111.1560774469102; Mon, 17 Jun 2019 05:27:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774469; cv=none; d=google.com; s=arc-20160816; b=o+H6Ph0dTiQp0v5Zt/kYh4NTNUUxYYvTSbZHVuOvbonf0W0sUzyk8oQz9xCRCvEp+6 nZTdlX5OmH9ObATIfSjeraXC2Tm3ilYNpUM41RWTzd8kjXBU4SSYnJ/q/oNBe+V6vXr/ gQph8uS5T78ocvuMOhqKHmlEwUCy42oWE07spKtpDk6ylEF9PyApNZ0PSCtgnaBbRX2t jrSjt6aBDAnOr5wI0IFtRXqJnBHdfxxo3SS4tlNDueUAFK+2VRSbR4t8B6H9vaG/ehV7 l87+r79l/3XckHKoQpbwZCS1ljr3QF5rYLCnzM7DujYB1GZl3svtdaOBJfYOAXTExRTC e9VA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=K9g0rbDWkkxSMGlYVgcFvd5xNggbvRNJSx9Dd0Ro7/M=; b=dde3ciQXGSg41i5n/oDXZDq2z5P6eBIpN5n68j6EUxvLDCB37g8hDzCDH1UBkNpUKP dh+yNdI6TH1wO67QHeEw+8f4XL69bvL6BH7ntzSlK/2EwCJLsBcWMq5SkvjUpoWnz/iv kyz9Cp03/pQ55b95WWYh45mUba8OzmKa6xQLvCyuEe/LxNYlz6nq2q1p7vbA4VRxNHKa 4UAcZM1kPkJJFbVLSLk3F+XwOPZP4wYUJgWFH94sPwdVk29eTqHZVqu+Ss8fdNtIlbjH uGaNPzMK4Sq3ozNQ47YUPaWbrQQ4FD8cElcjQJI4UCAsqbOlhTVo9opx8Eqy1tujNx54 6Qjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="Bpx0/+YD"; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id l1si11265778pgj.504.2019.06.17.05.27.49 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:27:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="Bpx0/+YD"; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=K9g0rbDWkkxSMGlYVgcFvd5xNggbvRNJSx9Dd0Ro7/M=; b=Bpx0/+YDXKRBCn8UCT2IVcE71B X2OqFR2P6cQnqBb88ElPZ9QzRIcJuB6fh/pwFQhL10fCq/BTxAcobe/zVEp/r2n7V0pP7sSWfY3vI grf6B5YyGDCZtvbTmqOmLHV4oQdCc5CWcHzwXul0Xks3Jy5S8OX2HaJLSwsERvlhqYUhbplZj+Hbe nGltq+FfZLW+kAOtOqlrJUw+V8Bf9yuRaWt+YX/y8HdJGvUzLzWUpFih1p8MBWWbxiSlX6mIpF/9f YI8qf3+O29zr6OMxqhKepaX1ADDNERghmpgXvc2+qF1AVzDFKhLXEhxF4xHhfGx1sWibYKtViGFl+ Wp33jgyA==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqji-0008Q6-8H; Mon, 17 Jun 2019 12:27:46 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH 04/25] mm: don't clear ->mapping in hmm_devmem_free Date: Mon, 17 Jun 2019 14:27:12 +0200 Message-Id: <20190617122733.22432-5-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP ->mapping isn't even used by HMM users, and the field at the same offset in the zone_device part of the union is declared as pad. (Which btw is rather confusing, as DAX uses ->pgmap and ->mapping from two different sides of the union, but DAX doesn't use hmm_devmem_free). Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: John Hubbard --- mm/hmm.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/mm/hmm.c b/mm/hmm.c index dc251c51803a..64e788bb1211 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1380,8 +1380,6 @@ static void hmm_devmem_free(struct page *page, void *data) { struct hmm_devmem *devmem = data; - page->mapping = NULL; - devmem->ops->free(devmem, page); } From patchwork Mon Jun 17 12:27:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10998995 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 01B0614C0 for ; Mon, 17 Jun 2019 12:28:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E6FD31FF0B for ; Mon, 17 Jun 2019 12:27:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB6902881A; Mon, 17 Jun 2019 12:27:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 74CD01FF0B for ; Mon, 17 Jun 2019 12:27:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F1B78E0008; Mon, 17 Jun 2019 08:27:53 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 0A47F8E0001; Mon, 17 Jun 2019 08:27:52 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E5E7B8E0008; Mon, 17 Jun 2019 08:27:52 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by kanga.kvack.org (Postfix) with ESMTP id B20008E0001 for ; Mon, 17 Jun 2019 08:27:52 -0400 (EDT) Received: by mail-pg1-f199.google.com with SMTP id z10so7646165pgf.15 for ; Mon, 17 Jun 2019 05:27:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=0rpTHljYB087yEOOsZI9c9yqKYmTPhfVemezVGqcscg=; b=j2xGdKAgIHTMiD9lJB8yKFjikdZsbWaFf0BUJPAXCy1yJfXpi/OrhQq8j2zDjS7B8f frGeoM/80NZOO5tYF27qdi0t6pJN7cR9bDDPcI/IJvlOHlgy65AAxLRTwrrwu7DbB4UX nYivIfCV0zClhUpXyCJsKnMtsrMiBZeQQnQ6FknwRdWkVK6/eXKW9ipahK4uYXHCYqGm Kyg0jXwsh+NTt8S5kiTJZRBdMxjrZc5lwWi/Ka6MDj/rGqGTMK9TcIon9pe1T7gZum51 BTVABcCio077B1+Y4HR18OwRDoIBxDZ7S80e8xOVrwtO7QmErSHtIYe5AtFVH39x6sZk O9Iw== X-Gm-Message-State: APjAAAXfpDzXJjDoXSDdV6QQWOqU/WzxQP1Exae6GVaFp6Wv8OfPMVvw ciaOXayLLDPO64j4vwoGiwkHORs5T9Zt3f+JD+jvME+LOfOU9r1vXQYrgYZbhrwFNmEfYvFdGhS iY3fQ00wrOGQo3lx/wQxmfxnTk/EieVQkO2kAYhgNpoOO3TyRspuhzNbcNsZeNcY= X-Received: by 2002:a63:80c8:: with SMTP id j191mr21007446pgd.442.1560774472287; Mon, 17 Jun 2019 05:27:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqznQn6USDLJ/2iDZ84aSk604KWShXiAYM5ZJoWMhDeXBnD/hammYFm5xqSYtbpt8iDrMTma X-Received: by 2002:a63:80c8:: with SMTP id j191mr21007390pgd.442.1560774471454; Mon, 17 Jun 2019 05:27:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774471; cv=none; d=google.com; s=arc-20160816; b=RNaItn6bx6SiWlOqjGf7nttLzBv/LDut+B5K9dagD2Ftt/bjwTs7x7i9ZWvJGGui2u HjSHR88ZTmqK2skq8hEZoGPmWQYxI9X0JHm99ul3/Bupf5BdjaYQ+Hzmjf8U/xhcsjW4 KOdPSPE8DXIXxBCYOJHGRfpt/aJjXTzKyE4qYeBSNZy9rXZCMSb8Yxu4XF0KcrqB5Q4r cvrNpOgYxViqxDi7jeNbTam8vy1fGvoPLx/O6vACfgO3Sw8K/KkyMhUzZdbb/zZTRVgJ soM5DiG0NyxndVezfYGoaPuOzCIyuYmdN235GP4UxmPfrDt1BFtcQwGVgd5BnXx/FcZr ouSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=0rpTHljYB087yEOOsZI9c9yqKYmTPhfVemezVGqcscg=; b=XYpCC/b2beI2hNVbov1uzzVt/e/xJtp8T4nbqj/MnEXHGZM+eIYudv4Q1ziciQnxlR TIAbDlNVCg5Ir2IGMlK2XGcbXRM1oCOGOiUaT6FrTPt+c5jYHUQgLYXkHre7ExgdSwb9 oqsvZDq3NWdJH34BjjESy66s5rhGZOhw5O7JxY5cSddMa7bcj9EwobdMSEhKINSs3F9F RmbUrwUA+ccEN+3eAbacWqSFXpNzY7TX9uJy+vCJlhsL6itNzQOfvuTe1kA7v61ME7i8 DpHv5kooYPFYzqDT62KHL+aJlnBYe7HsLWFYF79L+wEwKvjyFn9RlWmOZc/BX9rb5pRB 8iIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=gQAEn4aB; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id s6si9942649pjq.108.2019.06.17.05.27.51 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:27:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=gQAEn4aB; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=0rpTHljYB087yEOOsZI9c9yqKYmTPhfVemezVGqcscg=; b=gQAEn4aBEmQ132Z0wP5I7jCauB LBw2hOlfvCDQ7d5fQKNPO6djGCxEKQh4CVo9EuYbFLF4QJhOgBejZ8OlWo206WldjRYOfhT4AFXLE 9L9qHayf35ChGEv7g6MIcpHnXhCiExQ4fiDCZ31LF2RdPao4FFTC2z3uorshZP+Aw61Hgacx5tekH AsvC3ssCa68V+0zIIoesTfI1zxzVEaOuvsIAMGhuXyHQ3tSMzjWx14WKmPXgm3FDPe3h/HDsavVrv jUYfnpdHPmfR+1OXsOoS+idioOXrQhBTR8rrL0J5g0GVZnduKQ9EwD/JKCrznGMn1BshcDxe2+90o qyyv31zA==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjk-0008W5-FE; Mon, 17 Jun 2019 12:27:48 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH 05/25] mm: export alloc_pages_vma Date: Mon, 17 Jun 2019 14:27:13 +0200 Message-Id: <20190617122733.22432-6-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP nouveau is currently using this through an odd hmm wrapper, and I plan to switch it to the real thing later in this series. Signed-off-by: Christoph Hellwig Reviewed-by: John Hubbard --- mm/mempolicy.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 01600d80ae01..f9023b5fba37 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -2098,6 +2098,7 @@ alloc_pages_vma(gfp_t gfp, int order, struct vm_area_struct *vma, out: return page; } +EXPORT_SYMBOL_GPL(alloc_pages_vma); /** * alloc_pages_current - Allocate pages. From patchwork Mon Jun 17 12:27:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10998999 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BED3013AF for ; Mon, 17 Jun 2019 12:28:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B082B1FF0B for ; Mon, 17 Jun 2019 12:28:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A45FD285A3; Mon, 17 Jun 2019 12:28:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1378E1FF0B for ; Mon, 17 Jun 2019 12:28:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 22D9D8E0009; Mon, 17 Jun 2019 08:27:56 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 1B4E38E0001; Mon, 17 Jun 2019 08:27:56 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F207C8E0009; Mon, 17 Jun 2019 08:27:55 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by kanga.kvack.org (Postfix) with ESMTP id B53568E0001 for ; Mon, 17 Jun 2019 08:27:55 -0400 (EDT) Received: by mail-pg1-f197.google.com with SMTP id v6so3569264pgh.6 for ; Mon, 17 Jun 2019 05:27:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=7nriQi4Fr0xgTBcFIe6nSbwkyrDmfJykC6ITRKjgmyg=; b=n4Y70A8Rb57VxZnkxpec5M11ZhQtfIrJAy1agGEThpSSH1fTJwqoJrrKFbjwplRJhG /u9jwzg+pSyHftj1AL0UpORtFcYmmJ1adRbJiq12abLqjospy1pNjDjrrwneBnYoyFp2 +ZxEB6Gz4SEeWx58fYNawJRJGFOUneM4tfXviH9/+8Ijyn7QtAnizryelZR8vkC43hX7 4w5SGhX7uwM2OSjd5AaiuZDs+kkyD9KhlwFYAJqtrL7tfGeKwiDgBFOu3lAAcg1FLPyb +ebRdeoXcD6KltN8pgOgg0443Z9eFSyjsz4UqL6IWG11N213p7kTKnjZAlUlHJI3Rex5 RbZg== X-Gm-Message-State: APjAAAVe6BSvQMIu/ZFb6lgAbxirCtic44tyJ8aFO2yOomaFU3y3+dHx P1FCRfHHxiXINKpZqIcre6AWvN/6Glv3CGWSz2XIWntklBAjI7Q1vXvNLBD89f1fWx99PqL6XlT c2l0xq9vR0KE6iGfdXpFno0SXy2YZ4W7C1uy8inYv08E0hQrVit1QRCoCy2FqJaQ= X-Received: by 2002:aa7:8dd2:: with SMTP id j18mr43812035pfr.88.1560774474758; Mon, 17 Jun 2019 05:27:54 -0700 (PDT) X-Google-Smtp-Source: APXvYqwdN8H651eHy2L+0ZjZbJ2JjO7mImTz3EeleLdDLX88M0jb2dbKgCsEhxyiWvI31wGEq+WE X-Received: by 2002:aa7:8dd2:: with SMTP id j18mr43811975pfr.88.1560774473694; Mon, 17 Jun 2019 05:27:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774473; cv=none; d=google.com; s=arc-20160816; b=SeHxvOQUCmv1fIlO/9/HJZ31qzML9s6/JgOJcqdH0xQoIn1abuzOrlWzaO4itaj4OP ZtOPzD5F2OBrsKIy8uRwwPOMv6qmbzH3km/k3dBKwTlD+JwaOAaFch5CDrkKh7Vqezgw /9q81j6gIbEy6/dBa+gyWI68HaaZIT1CZmMzFTv3Pd/wPAfZ0seJOabHBZpOMnTf+37W U0pgGQFV1kefpndbLvybpA1a95gwh+it0uwCeRrQiLW6pDk+v2uRG+e5S5qWFf9sCsFZ p0q8CAPj5/MApfVnofqsVdLkFxDrSqH4Y1fK8nBYpT8Apb0o3po0VwpMwo7V7x7UfU9r 6ZNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=7nriQi4Fr0xgTBcFIe6nSbwkyrDmfJykC6ITRKjgmyg=; b=vR1X072Kaw79z1EF2TsnZjGhyf+V/ZCpZ5mMz1Z6CkCNRs1/x2cHsuwj0o3Wig8chl MyI0yjijzw5a7n2qWtrmV3yGk/jnNgI3s2OGpawLhXBrgqelAwo3UGDIZKdTs6JtVvLJ aXTQGHKbOhNryHdDg5tR4Zz9nK4AvNGgsY3Z76KF9XIsEG1pxX5EYqaxY/1NtaI9VCLg yMGCl7KO4Y+aBSdc9UybgPAZnsxPoyjpJw5fbbforSIdsMwSlVFr+g49w8ai3L/DpHW+ w4zRpNYJDVF75OSNOe5Sm8XVrfjQqIptNCCB3gOZqj3akytiVJ9WPUWNwHB7xOtzGObt Pjqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=JPXmnOG9; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id o127si11284109pga.593.2019.06.17.05.27.53 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:27:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=JPXmnOG9; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=7nriQi4Fr0xgTBcFIe6nSbwkyrDmfJykC6ITRKjgmyg=; b=JPXmnOG9f1PEc61lrxbukBEJb8 kAgyoN6nKfbqF4qgJGeYOSMsnUvVYOiNzN2ELCV9wb331fMUsuDPvIQ2S4r5iVE+JCOIpZVU/ZnK8 dg10C3MHJYXdAZTmF4BLfxG2dc8Atvw1ja3PcRbuQK5uf0NGUrlWTjZjdUMm+LmT5KZ4mg6dcjzCf nA6thuAWoFivx6vFYF6vFwxSQarTAh5reeveHpRf2VHZpvQwxJ0Aubqtm9mIGcUV8G0EMnD/b/Kne SuK9ATrScvwfXwUfU3ZjCaF0NF0bDLbzwZtyWHxXaykWVpfZDLI0bYGBnUqh16os+uOXFeWvkX15s SRYUphpQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjm-00004r-MH; Mon, 17 Jun 2019 12:27:51 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH 06/25] mm: factor out a devm_request_free_mem_region helper Date: Mon, 17 Jun 2019 14:27:14 +0200 Message-Id: <20190617122733.22432-7-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP Keep the physical address allocation that hmm_add_device does with the rest of the resource code, and allow future reuse of it without the hmm wrapper. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: John Hubbard --- include/linux/ioport.h | 2 ++ kernel/resource.c | 39 +++++++++++++++++++++++++++++++++++++++ mm/hmm.c | 33 ++++----------------------------- 3 files changed, 45 insertions(+), 29 deletions(-) diff --git a/include/linux/ioport.h b/include/linux/ioport.h index da0ebaec25f0..76a33ae3bf6c 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -286,6 +286,8 @@ static inline bool resource_overlaps(struct resource *r1, struct resource *r2) return (r1->start <= r2->end && r1->end >= r2->start); } +struct resource *devm_request_free_mem_region(struct device *dev, + struct resource *base, unsigned long size); #endif /* __ASSEMBLY__ */ #endif /* _LINUX_IOPORT_H */ diff --git a/kernel/resource.c b/kernel/resource.c index 158f04ec1d4f..d22423e85cf8 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -1628,6 +1628,45 @@ void resource_list_free(struct list_head *head) } EXPORT_SYMBOL(resource_list_free); +#ifdef CONFIG_DEVICE_PRIVATE +/** + * devm_request_free_mem_region - find free region for device private memory + * + * @dev: device struct to bind the resource to + * @size: size in bytes of the device memory to add + * @base: resource tree to look in + * + * This function tries to find an empty range of physical address big enough to + * contain the new resource, so that it can later be hotplugged as ZONE_DEVICE + * memory, which in turn allocates struct pages. + */ +struct resource *devm_request_free_mem_region(struct device *dev, + struct resource *base, unsigned long size) +{ + resource_size_t end, addr; + struct resource *res; + + size = ALIGN(size, 1UL << PA_SECTION_SHIFT); + end = min_t(unsigned long, base->end, (1UL << MAX_PHYSMEM_BITS) - 1); + addr = end - size + 1UL; + + for (; addr > size && addr >= base->start; addr -= size) { + if (region_intersects(addr, size, 0, IORES_DESC_NONE) != + REGION_DISJOINT) + continue; + + res = devm_request_mem_region(dev, addr, size, dev_name(dev)); + if (!res) + return ERR_PTR(-ENOMEM); + res->desc = IORES_DESC_DEVICE_PRIVATE_MEMORY; + return res; + } + + return ERR_PTR(-ERANGE); +} +EXPORT_SYMBOL_GPL(devm_request_free_mem_region); +#endif /* CONFIG_DEVICE_PRIVATE */ + static int __init strict_iomem(char *str) { if (strstr(str, "relaxed")) diff --git a/mm/hmm.c b/mm/hmm.c index 64e788bb1211..172d695dcb8b 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -25,8 +25,6 @@ #include #include -#define PA_SECTION_SIZE (1UL << PA_SECTION_SHIFT) - #if IS_ENABLED(CONFIG_HMM_MIRROR) static const struct mmu_notifier_ops hmm_mmu_notifier_ops; @@ -1405,7 +1403,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, unsigned long size) { struct hmm_devmem *devmem; - resource_size_t addr; void *result; int ret; @@ -1427,32 +1424,10 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, if (ret) return ERR_PTR(ret); - size = ALIGN(size, PA_SECTION_SIZE); - addr = min((unsigned long)iomem_resource.end, - (1UL << MAX_PHYSMEM_BITS) - 1); - addr = addr - size + 1UL; - - /* - * FIXME add a new helper to quickly walk resource tree and find free - * range - * - * FIXME what about ioport_resource resource ? - */ - for (; addr > size && addr >= iomem_resource.start; addr -= size) { - ret = region_intersects(addr, size, 0, IORES_DESC_NONE); - if (ret != REGION_DISJOINT) - continue; - - devmem->resource = devm_request_mem_region(device, addr, size, - dev_name(device)); - if (!devmem->resource) - return ERR_PTR(-ENOMEM); - break; - } - if (!devmem->resource) - return ERR_PTR(-ERANGE); - - devmem->resource->desc = IORES_DESC_DEVICE_PRIVATE_MEMORY; + devmem->resource = devm_request_free_mem_region(device, &iomem_resource, + size); + if (IS_ERR(devmem->resource)) + return ERR_CAST(devmem->resource); devmem->pfn_first = devmem->resource->start >> PAGE_SHIFT; devmem->pfn_last = devmem->pfn_first + (resource_size(devmem->resource) >> PAGE_SHIFT); From patchwork Mon Jun 17 12:27:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999005 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0837A13AF for ; Mon, 17 Jun 2019 12:28:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EE06C1FF0B for ; Mon, 17 Jun 2019 12:28:05 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E2902285A3; Mon, 17 Jun 2019 12:28:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D5E081FF0B for ; Mon, 17 Jun 2019 12:28:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 363F58E000A; Mon, 17 Jun 2019 08:27:58 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 317F38E0001; Mon, 17 Jun 2019 08:27:58 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 16A818E000A; Mon, 17 Jun 2019 08:27:57 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by kanga.kvack.org (Postfix) with ESMTP id C13678E0001 for ; Mon, 17 Jun 2019 08:27:57 -0400 (EDT) Received: by mail-pg1-f198.google.com with SMTP id x3so7655945pgp.8 for ; Mon, 17 Jun 2019 05:27:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=oE9zu8FnI80f0vIXdSsRJj3CowB8S40euLFZ8PS9IMM=; b=RRwLIXNKhj4OE4qI2BCy7MkUwEr9gepTZI48olMVQhPItv9MqYRkWyCQGWthV84HJG xyrjZc21zXRey2LY50fIi/DFxMjQOspQCUcWA2gZixBpuF+sy6kbfUl/4yihXMamE98k fUNpePxlnv0qdUxAXfGHUdPhpJlabgbXmL/k/sntF98pU40V1e6XZYk7f4zodD9SBRVE JlZ9qB9Tm4E/AMNyB/BDUUQPx1pdsuV53YfJAFrJr9ZQZGujDSwJS8RJ6SD9pLnM/Oq3 GUn2I+t6RX+xynqz+qxK5oRkP7rFPx9N3S7h3lkb46t/dpS8Xk6QVo6aX/HMEEue5BV5 Vf7A== X-Gm-Message-State: APjAAAWLoY/VzRczUYRADYckY+KwTWhNasi/XSqzC+JrWlPriZbGxdCu 3bLdQii6cluN3cUzKbHc7PaV92SNzGY9dRkh2hed4/YvP+64vdnwcfAYUSBZXG1DInvBf0/uhzK d1PD98rfIDqWurrHzYRAcYmoFXzQAdSWupy0ycbESUJ6TI6KjI0g8Uo2Ga2Xhjtc= X-Received: by 2002:a63:2d0:: with SMTP id 199mr48413954pgc.188.1560774477395; Mon, 17 Jun 2019 05:27:57 -0700 (PDT) X-Google-Smtp-Source: APXvYqxBF3/ft/owsEcaxmCQiSNT9HqJto8MuTtiebnuxZ1z4ipXjFGWOF7pxQfonvxnkXkiv+i1 X-Received: by 2002:a63:2d0:: with SMTP id 199mr48413903pgc.188.1560774476660; Mon, 17 Jun 2019 05:27:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774476; cv=none; d=google.com; s=arc-20160816; b=ajPdMDHAbdAsPctrN+AqQyymFm3f4OHA+bfoAB73GJ0IC87GTF4Kaq5xzEVLyJ+5M7 1Q4SEGK8ymis2U+bElh6Bcqc43Sd4YT8GerNyZr5RNf5JT8IUMWpSs0UPwfLfEhCx1AR sfPUFzAHI0Y82n97Rx+VdyF+1K3X4ujrayyAqRxlkys3DSelLIYULJccPk1ISQ58yVAG 7ISQCPcMGEWufys+Hr5S1xobBY9mz0y+kJoRGooYf7xMGbFshdB6y1f6WC6h6XnfuJaW MNPeM8wPPoMREHrTiTOZ0rOUshfDpVtxR2imBvDDF2aW+xjqcR2QAOJeLBjZwnyVgz9J vsmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=oE9zu8FnI80f0vIXdSsRJj3CowB8S40euLFZ8PS9IMM=; b=ohx5Cl3hvi972co3eguZky3wuGmRSSv9rIXMvEBcoLleDoRXCEj1XQVFM1d32jUYZX C3oF0Jj16ebvsyVkjxT7H6av7y1Qz0cdOssjvZrYcZQb0JpK3whjx/GjuKHwScY+xGRx 18AnIhHCJW3IaRecqh+iKz5xl2n1J/yJZM3ZC6FkcTG2PENP+BkknM3ky3Be/a9xg1t9 HOhnUhm5J5LYgiM4AdEAxe9VF9KLNh6X4zYo8H+xBgiP2xf43wCFWhS7X25wgaGlGiBt yn5vw3Q1WHjQkF04zkKkLAd0FjEQn/KmpOZgerBPLVSKS7lPkrSfM6ccCrwg0qQR8jSu GKJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=OFYLPou6; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id 22si10146134pfi.161.2019.06.17.05.27.56 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:27:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=OFYLPou6; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=oE9zu8FnI80f0vIXdSsRJj3CowB8S40euLFZ8PS9IMM=; b=OFYLPou6TnJdcozuPN11iH/XmD RXqmC2lmrDIc90Y8NVCjfx83nqCVoiH00luftBKkX1QDJ9uDCWGmyeDihR9euPlBZLFFLvJEN37Oo IIGmTTp9s0JMz7OdQZzjJL8bCIoH3QG3msxcqq8GDVUPyrKek3uGmO1P50zrhewkvIMSsilKB9HGc i4vW8MnTCxNbowvDwKJqKc0RrobmUyUT5HllZCeGgrgyTx/O9YaW+CGOhU3j1YYqPcXiTiC58Lsdi v5jaT4YEYq+jrlR8fw59fAbQne0n1H6nJnvoV8aVZnyedTnbxgGT+xJd2gzeJqPQ1tUfzHY9lv2CT M6eP8oLQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjo-00006K-S6; Mon, 17 Jun 2019 12:27:53 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 07/25] memremap: validate the pagemap type passed to devm_memremap_pages Date: Mon, 17 Jun 2019 14:27:15 +0200 Message-Id: <20190617122733.22432-8-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP Most pgmap types are only supported when certain config options are enabled. Check for a type that is valid for the current configuration before setting up the pagemap. Signed-off-by: Christoph Hellwig --- kernel/memremap.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/kernel/memremap.c b/kernel/memremap.c index 6e1970719dc2..6a2dd31a6250 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -157,6 +157,33 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) pgprot_t pgprot = PAGE_KERNEL; int error, nid, is_ram; + switch (pgmap->type) { + case MEMORY_DEVICE_PRIVATE: + if (!IS_ENABLED(CONFIG_DEVICE_PRIVATE)) { + WARN(1, "Device private memory not supported\n"); + return ERR_PTR(-EINVAL); + } + break; + case MEMORY_DEVICE_PUBLIC: + if (!IS_ENABLED(CONFIG_DEVICE_PUBLIC)) { + WARN(1, "Device public memory not supported\n"); + return ERR_PTR(-EINVAL); + } + break; + case MEMORY_DEVICE_FS_DAX: + if (!IS_ENABLED(CONFIG_ZONE_DEVICE) || + IS_ENABLED(CONFIG_FS_DAX_LIMITED)) { + WARN(1, "File system DAX not supported\n"); + return ERR_PTR(-EINVAL); + } + break; + case MEMORY_DEVICE_PCI_P2PDMA: + break; + default: + WARN(1, "Invalid pgmap type %d\n", pgmap->type); + break; + } + if (!pgmap->ref || !pgmap->kill || !pgmap->cleanup) { WARN(1, "Missing reference count teardown definition\n"); return ERR_PTR(-EINVAL); From patchwork Mon Jun 17 12:27:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999011 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6661014B6 for ; Mon, 17 Jun 2019 12:28:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 553711FF0B for ; Mon, 17 Jun 2019 12:28:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 494CE285A3; Mon, 17 Jun 2019 12:28:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 646FD27480 for ; Mon, 17 Jun 2019 12:28:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B53598E0001; Mon, 17 Jun 2019 08:28:00 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B046B8E000B; Mon, 17 Jun 2019 08:28:00 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9FD558E0001; Mon, 17 Jun 2019 08:28:00 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by kanga.kvack.org (Postfix) with ESMTP id 64DB88E0001 for ; Mon, 17 Jun 2019 08:28:00 -0400 (EDT) Received: by mail-pl1-f200.google.com with SMTP id g65so5913730plb.9 for ; Mon, 17 Jun 2019 05:28:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=7YtpHKyCpwh/jBnBJmxc0lcdvCMmZyq3FZMS/N8Gm6s=; b=p8tHLr3AqfeukyoTsYLxN2GTr0QkUjGvC7tgZ+jEmZjmcoi0Dl4Z+Iu1Vt18hGqspp ra2QmohCrE2Y6VNt8Xnc2I8uNG8UTQxN5x9ARjB/X9PspaDIEispJX59tYl1JofAgavn KINzeX3tvnLn1sDPNSqAfG8923aEZtuhw/DD9q5/aKTb9lzWzrYOGKR73ot859RKjeY5 fY4PdRtLKcuDBJniRvKOY4HzMJ6L+5vw/d2ki0wlFrpD3UARma9DyxRXXp17h39Uqf/E AZOW+IITiJdecTlAbN0omNhffpaqMacDlZDZ1D4dS09Qm0L8HF5AwttdRjTXnaSp2qH9 YNJg== X-Gm-Message-State: APjAAAVHfmYiFnO9Xdzp8sF3RSmr5AWGU2YCqeb0b6ZizsNU+Xm6yxPY ZFzjTyEGMGT2iw8AspviKWDMHi7sa93z4dLAOdCUdaGPs+4486hLtZ0yMo3Mh6iOArIKSWJ5wAW ud1XXGfzP3lJ0op9iLFQsOjvTM8ieku4sF3dLUp/PXnR614eltJ1dJPKNs26iNds= X-Received: by 2002:a63:79c8:: with SMTP id u191mr29701777pgc.366.1560774479964; Mon, 17 Jun 2019 05:27:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqxpgN56IK5RHDX+RwRjAAPl5iTBYHCMQhn3FWHUHwtrz3jofxtbLnEs0YnbMRdecFEZhVGz X-Received: by 2002:a63:79c8:: with SMTP id u191mr29701710pgc.366.1560774478747; Mon, 17 Jun 2019 05:27:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774478; cv=none; d=google.com; s=arc-20160816; b=uFkpibNxGvyecWTnMCSn/KtsmBSqgskwwGpIbxLyZwz0dEFHc2HYRcdEKjFnDXBUlu 3WMhXSauc02GFdoCYkCEVChweC8W02gpCB+OzpOoSpfD0ZGxQxQkGvZATEhMo9+lhGqa LpouFNzHNN6WL1lzlNtF9tb1U3KZik6GupKjEnjda069zQp624RIBnr0ceaYsJgzg1Jq v/KRvKa21iXUPJALEUCUL8nN07D2rE+7gitMJ2H1cx2KkTRzgzaw7Y7cOkbqEOvY2Z11 cIUD6jT9uXDUkhPJMz0yArrUjjogpuzNmGyXv5edpE/Jh4anmfmgIPKldN4G6zIY0/g2 0P+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=7YtpHKyCpwh/jBnBJmxc0lcdvCMmZyq3FZMS/N8Gm6s=; b=Oad+8lNtpEvji5AL4QdebGdTlwppEzwR3i3IaMZSdL37OcMtDTY3+ZBLqLRyVkI9kD g19Pw5zeq+1arieRabTmPB579OzJCtoaOVIBrXOroxf2IFtmtCPCNmje9AA9VD8uZwoW O7NYUvMc+9wdzjHYY5+AadMxFb09riSjqto6b+JvxnPwpqPbGAEfTFHwOe76Tx0c0V5g lLiJD4QrjyP5WfDTr/7YjpP42FVzcTiQi0jgUUJl0UMaprYrc33u2c+aA8qURO+zXv2d jtH07AJxSkuqlVJKWzsBO89auffTxgTJNrC1nZSjPd3zMaSaCgL3F5fZz+lg+IXYnXIv ftbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=WTYjqtZW; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id t18si222501pgv.57.2019.06.17.05.27.58 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:27:58 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=WTYjqtZW; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=7YtpHKyCpwh/jBnBJmxc0lcdvCMmZyq3FZMS/N8Gm6s=; b=WTYjqtZWDVPa1JoJT2LZGI83TG IRs4+NaNIEmp7EYCJWepGEdIrGAK30Qa0W3+f+sw2sPqTZuYZ+UM7HBbzX8/W1pQbd4yzdhwjyuQW uXvhM+BpRm7F1z1ytvBtf45PvnCfavUVPW4oIpHw3nzlf7jWvPgOxJIx1fLD03x0B5dBuBjtKLazj iJV8qt6qHJNno7vhSqOLtNiL9zFMGnXSsdrQ/xmJr7LtKYk1d2aLhR5JvzFWfzTV9h8Qvuu7KiKd3 3kb1DFVgXK3pdpIQVOgLxC7/An2SE4CCqT/20AAFOO/q4YjuwTv/Gs6O/ZvCSOJy1uLwmFsRbNh2e PzK0M9+Q==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjr-00007j-7B; Mon, 17 Jun 2019 12:27:55 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Logan Gunthorpe Subject: [PATCH 08/25] memremap: move dev_pagemap callbacks into a separate structure Date: Mon, 17 Jun 2019 14:27:16 +0200 Message-Id: <20190617122733.22432-9-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP The dev_pagemap is a growing too many callbacks. Move them into a separate ops structure so that they are not duplicated for multiple instances, and an attacker can't easily overwrite them. Signed-off-by: Christoph Hellwig Reviewed-by: Logan Gunthorpe Reviewed-by: Jason Gunthorpe --- drivers/dax/device.c | 11 ++++++---- drivers/dax/pmem/core.c | 2 +- drivers/nvdimm/pmem.c | 19 +++++++++------- drivers/pci/p2pdma.c | 9 +++++--- include/linux/memremap.h | 36 +++++++++++++++++-------------- kernel/memremap.c | 18 ++++++++-------- mm/hmm.c | 10 ++++++--- tools/testing/nvdimm/test/iomap.c | 9 ++++---- 8 files changed, 65 insertions(+), 49 deletions(-) diff --git a/drivers/dax/device.c b/drivers/dax/device.c index 8465d12fecba..cd483050a775 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -36,9 +36,8 @@ static void dev_dax_percpu_exit(struct percpu_ref *ref) percpu_ref_exit(ref); } -static void dev_dax_percpu_kill(struct percpu_ref *data) +static void dev_dax_percpu_kill(struct percpu_ref *ref) { - struct percpu_ref *ref = data; struct dev_dax *dev_dax = ref_to_dev_dax(ref); dev_dbg(&dev_dax->dev, "%s\n", __func__); @@ -442,6 +441,11 @@ static void dev_dax_kill(void *dev_dax) kill_dev_dax(dev_dax); } +static const struct dev_pagemap_ops dev_dax_pagemap_ops = { + .kill = dev_dax_percpu_kill, + .cleanup = dev_dax_percpu_exit, +}; + int dev_dax_probe(struct device *dev) { struct dev_dax *dev_dax = to_dev_dax(dev); @@ -466,8 +470,7 @@ int dev_dax_probe(struct device *dev) return rc; dev_dax->pgmap.ref = &dev_dax->ref; - dev_dax->pgmap.kill = dev_dax_percpu_kill; - dev_dax->pgmap.cleanup = dev_dax_percpu_exit; + dev_dax->pgmap.ops = &dev_dax_pagemap_ops; addr = devm_memremap_pages(dev, &dev_dax->pgmap); if (IS_ERR(addr)) return PTR_ERR(addr); diff --git a/drivers/dax/pmem/core.c b/drivers/dax/pmem/core.c index f9f51786d556..6eb6dfdf19bf 100644 --- a/drivers/dax/pmem/core.c +++ b/drivers/dax/pmem/core.c @@ -16,7 +16,7 @@ struct dev_dax *__dax_pmem_probe(struct device *dev, enum dev_dax_subsys subsys) struct dev_dax *dev_dax; struct nd_namespace_io *nsio; struct dax_region *dax_region; - struct dev_pagemap pgmap = { 0 }; + struct dev_pagemap pgmap = { }; struct nd_namespace_common *ndns; struct nd_dax *nd_dax = to_nd_dax(dev); struct nd_pfn *nd_pfn = &nd_dax->nd_pfn; diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index c4f5a808b9da..1a9986dc4dc6 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -311,7 +311,7 @@ static const struct attribute_group *pmem_attribute_groups[] = { NULL, }; -static void __pmem_release_queue(struct percpu_ref *ref) +static void pmem_pagemap_cleanup(struct percpu_ref *ref) { struct request_queue *q; @@ -321,10 +321,10 @@ static void __pmem_release_queue(struct percpu_ref *ref) static void pmem_release_queue(void *ref) { - __pmem_release_queue(ref); + pmem_pagemap_cleanup(ref); } -static void pmem_freeze_queue(struct percpu_ref *ref) +static void pmem_pagemap_kill(struct percpu_ref *ref) { struct request_queue *q; @@ -347,19 +347,24 @@ static void pmem_release_pgmap_ops(void *__pgmap) dev_pagemap_put_ops(); } -static void fsdax_pagefree(struct page *page, void *data) +static void pmem_pagemap_page_free(struct page *page, void *data) { wake_up_var(&page->_refcount); } +static const struct dev_pagemap_ops fsdax_pagemap_ops = { + .page_free = pmem_pagemap_page_free, + .kill = pmem_pagemap_kill, + .cleanup = pmem_pagemap_cleanup, +}; + static int setup_pagemap_fsdax(struct device *dev, struct dev_pagemap *pgmap) { dev_pagemap_get_ops(); if (devm_add_action_or_reset(dev, pmem_release_pgmap_ops, pgmap)) return -ENOMEM; pgmap->type = MEMORY_DEVICE_FS_DAX; - pgmap->page_free = fsdax_pagefree; - + pgmap->ops = &fsdax_pagemap_ops; return 0; } @@ -417,8 +422,6 @@ static int pmem_attach_disk(struct device *dev, pmem->pfn_flags = PFN_DEV; pmem->pgmap.ref = &q->q_usage_counter; - pmem->pgmap.kill = pmem_freeze_queue; - pmem->pgmap.cleanup = __pmem_release_queue; if (is_nd_pfn(dev)) { if (setup_pagemap_fsdax(dev, &pmem->pgmap)) return -ENOMEM; diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index a98126ad9c3a..e083567d26ef 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -100,7 +100,7 @@ static void pci_p2pdma_percpu_cleanup(struct percpu_ref *ref) struct p2pdma_pagemap *p2p_pgmap = to_p2p_pgmap(ref); wait_for_completion(&p2p_pgmap->ref_done); - percpu_ref_exit(&p2p_pgmap->ref); + percpu_ref_exit(ref); } static void pci_p2pdma_release(void *data) @@ -152,6 +152,11 @@ static int pci_p2pdma_setup(struct pci_dev *pdev) return error; } +static const struct dev_pagemap_ops pci_p2pdma_pagemap_ops = { + .kill = pci_p2pdma_percpu_kill, + .cleanup = pci_p2pdma_percpu_cleanup, +}; + /** * pci_p2pdma_add_resource - add memory for use as p2p memory * @pdev: the device to add the memory to @@ -207,8 +212,6 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, pgmap->type = MEMORY_DEVICE_PCI_P2PDMA; pgmap->pci_p2pdma_bus_offset = pci_bus_address(pdev, bar) - pci_resource_start(pdev, bar); - pgmap->kill = pci_p2pdma_percpu_kill; - pgmap->cleanup = pci_p2pdma_percpu_cleanup; addr = devm_memremap_pages(&pdev->dev, pgmap); if (IS_ERR(addr)) { diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 1732dea030b2..1cdcfd595770 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -63,41 +63,45 @@ enum memory_type { MEMORY_DEVICE_PCI_P2PDMA, }; -/* - * Additional notes about MEMORY_DEVICE_PRIVATE may be found in - * include/linux/hmm.h and Documentation/vm/hmm.rst. There is also a brief - * explanation in include/linux/memory_hotplug.h. - * - * The page_free() callback is called once the page refcount reaches 1 - * (ZONE_DEVICE pages never reach 0 refcount unless there is a refcount bug. - * This allows the device driver to implement its own memory management.) - */ -typedef void (*dev_page_free_t)(struct page *page, void *data); +struct dev_pagemap_ops { + /* + * Called once the page refcount reaches 1. (ZONE_DEVICE pages never + * reach 0 refcount unless there is a refcount bug. This allows the + * device driver to implement its own memory management.) + */ + void (*page_free)(struct page *page, void *data); + + /* + * Transition the refcount in struct dev_pagemap to the dead state. + */ + void (*kill)(struct percpu_ref *ref); + + /* + * Wait for refcount in struct dev_pagemap to be idle and reap it. + */ + void (*cleanup)(struct percpu_ref *ref); +}; /** * struct dev_pagemap - metadata for ZONE_DEVICE mappings - * @page_free: free page callback when page refcount reaches 1 * @altmap: pre-allocated/reserved memory for vmemmap allocations * @res: physical address range covered by @ref * @ref: reference count that pins the devm_memremap_pages() mapping - * @kill: callback to transition @ref to the dead state - * @cleanup: callback to wait for @ref to be idle and reap it * @dev: host device of the mapping for debug * @data: private data pointer for page_free() * @type: memory type: see MEMORY_* in memory_hotplug.h + * @ops: method table */ struct dev_pagemap { - dev_page_free_t page_free; struct vmem_altmap altmap; bool altmap_valid; struct resource res; struct percpu_ref *ref; - void (*kill)(struct percpu_ref *ref); - void (*cleanup)(struct percpu_ref *ref); struct device *dev; void *data; enum memory_type type; u64 pci_p2pdma_bus_offset; + const struct dev_pagemap_ops *ops; }; #ifdef CONFIG_ZONE_DEVICE diff --git a/kernel/memremap.c b/kernel/memremap.c index 6a2dd31a6250..85635ff57e04 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -92,10 +92,10 @@ static void devm_memremap_pages_release(void *data) unsigned long pfn; int nid; - pgmap->kill(pgmap->ref); + pgmap->ops->kill(pgmap->ref); for_each_device_pfn(pfn, pgmap) put_page(pfn_to_page(pfn)); - pgmap->cleanup(pgmap->ref); + pgmap->ops->cleanup(pgmap->ref); /* pages are dead and unused, undo the arch mapping */ align_start = res->start & ~(SECTION_SIZE - 1); @@ -128,8 +128,8 @@ static void devm_memremap_pages_release(void *data) * @pgmap: pointer to a struct dev_pagemap * * Notes: - * 1/ At a minimum the res, ref and type members of @pgmap must be initialized - * by the caller before passing it to this function + * 1/ At a minimum the res, ref and type and ops members of @pgmap must be + * initialized by the caller before passing it to this function * * 2/ The altmap field may optionally be initialized, in which case altmap_valid * must be set to true @@ -184,7 +184,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) break; } - if (!pgmap->ref || !pgmap->kill || !pgmap->cleanup) { + if (!pgmap->ref || !pgmap->ops || !pgmap->ops->kill || + !pgmap->ops->cleanup) { WARN(1, "Missing reference count teardown definition\n"); return ERR_PTR(-EINVAL); } @@ -298,9 +299,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) err_pfn_remap: pgmap_array_delete(res); err_array: - pgmap->kill(pgmap->ref); - pgmap->cleanup(pgmap->ref); - + pgmap->ops->kill(pgmap->ref); + pgmap->ops->cleanup(pgmap->ref); return ERR_PTR(error); } EXPORT_SYMBOL_GPL(devm_memremap_pages); @@ -393,7 +393,7 @@ void __put_devmap_managed_page(struct page *page) mem_cgroup_uncharge(page); - page->pgmap->page_free(page, page->pgmap->data); + page->pgmap->ops->page_free(page, page->pgmap->data); } else if (!count) __put_page(page); } diff --git a/mm/hmm.c b/mm/hmm.c index 172d695dcb8b..694e53bc55f4 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1381,6 +1381,12 @@ static void hmm_devmem_free(struct page *page, void *data) devmem->ops->free(devmem, page); } +static const struct dev_pagemap_ops hmm_pagemap_ops = { + .page_free = hmm_devmem_free, + .kill = hmm_devmem_ref_kill, + .cleanup = hmm_devmem_ref_exit, +}; + /* * hmm_devmem_add() - hotplug ZONE_DEVICE memory for device memory * @@ -1435,12 +1441,10 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; devmem->pagemap.res = *devmem->resource; - devmem->pagemap.page_free = hmm_devmem_free; + devmem->pagemap.ops = &hmm_pagemap_ops; devmem->pagemap.altmap_valid = false; devmem->pagemap.ref = &devmem->ref; devmem->pagemap.data = devmem; - devmem->pagemap.kill = hmm_devmem_ref_kill; - devmem->pagemap.cleanup = hmm_devmem_ref_exit; result = devm_memremap_pages(devmem->device, &devmem->pagemap); if (IS_ERR(result)) diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index 219dd0a1cb08..a667d974155e 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -106,11 +106,10 @@ EXPORT_SYMBOL(__wrap_devm_memremap); static void nfit_test_kill(void *_pgmap) { - struct dev_pagemap *pgmap = _pgmap; - - WARN_ON(!pgmap || !pgmap->ref || !pgmap->kill || !pgmap->cleanup); - pgmap->kill(pgmap->ref); - pgmap->cleanup(pgmap->ref); + WARN_ON(!pgmap || !pgmap->ref || !pgmap->ops->kill || + !pgmap->ops->cleanup); + pgmap->ops->kill(pgmap->ref); + pgmap->ops->cleanup(pgmap->ref); } void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) From patchwork Mon Jun 17 12:27:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999015 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 763EC13AF for ; Mon, 17 Jun 2019 12:28:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 672CB1FF0B for ; Mon, 17 Jun 2019 12:28:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5B76E2867F; Mon, 17 Jun 2019 12:28:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A1F791FF0B for ; Mon, 17 Jun 2019 12:28:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 538798E000C; Mon, 17 Jun 2019 08:28:02 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 4E99C8E000B; Mon, 17 Jun 2019 08:28:02 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 313A78E000C; Mon, 17 Jun 2019 08:28:02 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by kanga.kvack.org (Postfix) with ESMTP id E7C978E000B for ; Mon, 17 Jun 2019 08:28:01 -0400 (EDT) Received: by mail-pf1-f199.google.com with SMTP id x18so6970405pfj.4 for ; Mon, 17 Jun 2019 05:28:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=/E0slfLWeDjdtwPv18O2DXUsqAiZEZlsuEH6ro3Vi90=; b=G++EXzVjklabD0XgXxdquaY/1qdHJE9Isxq46+qYMYb/Th+yENmaRTnn522+rOTQ5w mG6J/7z51R9glrMSNBVusaPWyr8cjrYwbh5qOyskdgO3bZItNrOEOsHiSFmTOc/DUTUM P2ZBGX8tPIo6391sr+HaEi0d+nNH1GQ3biIE5Vly9YrskblGlAw4K1tu5G7jHNKQ0I6g bFjP/bIzFKrrTe6pXzX0jjVXo65M8nonFyK3c2f6k1qIQA5YCAxMQREOlJVt9VsaVIh9 ihJeARPMT1fMNZCj/nwCR+VaWJk1/BJKo5x+rf75JJ1cSiR5707pqCm9DYCyBesnK4hC DGTQ== X-Gm-Message-State: APjAAAVXv6+vXdY8Q8RFdTtD8BDIRo0wvlqG7+CbW+Hc2ENMOjZshWxE 2G6mUjwU3pQm3r2HHgLeX3ED79LYr9eOfg51rf0X5xSOU77lTHAW22ZB6hSORiy+ZURtCHebNto X9SKwLA0KqmsXEoiZekAbGvWR8uGOfQ3B+LvO805HPxpMMiUCmlN8aFJ+FuyEJxg= X-Received: by 2002:a63:f957:: with SMTP id q23mr49641612pgk.326.1560774481516; Mon, 17 Jun 2019 05:28:01 -0700 (PDT) X-Google-Smtp-Source: APXvYqy5x6Pro+qYkd1Vse57iORV8o3BIKM41ojx4G1/ZQ6R3USyk5iY/SYf3dHgNfw06BEoifbc X-Received: by 2002:a63:f957:: with SMTP id q23mr49641555pgk.326.1560774480437; Mon, 17 Jun 2019 05:28:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774480; cv=none; d=google.com; s=arc-20160816; b=YJhXTRumYRoqGVzMs/fPldvpZAHeQ/mOW5FpBzbtL4h2N5f5reHCJ+bO1MdfeWtzSu s30LXYpjq6RCnlSAaPmujsuM1dDxJkDwml6p5HN8+j9yedjlIX0UIUhksUgJPoI63hg0 7nCWcd9OdyI0qrSFyZ/0pc3MB/b3USi4+5ulsMKSc9mejg5gRFLWjQkmATSyPsJqOJPk K5rHXQythprlTKwvi189GF2W5MyfpoNwTqnZ0fTW9WSR34bepusgL76bQa3wmlV06RUD 6rFIJVF1uxQtLFkOeT3lLulpkrYVZKbbuXAvYo6fCtBCsxFeuezN+0vY6B4ioWuj/Vw0 LjlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=/E0slfLWeDjdtwPv18O2DXUsqAiZEZlsuEH6ro3Vi90=; b=fKpXQlkC6gcpGxckvTUTX1dHxa/ryqM75T9F+jQWebnUEd6p1mWKSAWE8I0hMZES0o e6WATlDHZFqnrD7oK2/EpaT6bjgqH4pJp0A9uKYLPw27lUnkm+xvsqmwQ3tMsuQxfJzo Qbcyi2/FBlesPQ5Pp2MwG8ZZfAOoOhMhQPfMAHp08SrqYV1OuztcrJ+hIwHvf7Fa2K6U kP69zj/OwVQ6SGZnnOPwA4j+TUSuKzx3ur+TYHSj+lsbAh6TGHkDxX/zgTgYLQGn/wtY vlmFU+39Vdsxwok9ChuJPWL5ir5swV2jTELDZwMvx6B09yLmpl5lvDslgax4JR3PoEqL u7zg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=mht+KGEK; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id 31si10846288pgo.151.2019.06.17.05.28.00 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:00 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=mht+KGEK; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=/E0slfLWeDjdtwPv18O2DXUsqAiZEZlsuEH6ro3Vi90=; b=mht+KGEKXAnAR1V8Ic6+i6oeHW 0tWBsrinEJoG1Q6hZYaYJZDrE5WGaooV4xMjhwwD4YH4ibn3pjK8izm0lzl80dlub7D0orE8Fdkf5 IzofW4vELGo9HDVR8Gwc0xrPDGISCb8EGT81cEagR2geTnwgoEHNfc4dGwCSfRdXcU/IqTpRLx69U /yQ1RGQWhb/Jj50NzebHdvB/+B+EqPw7AmGeHKXz5A4TdKANBAkq9sL2W45y72Bzm/RHdno4LDYdl VX6SZ0S352riLt1COZSy1nR/GcbbajQqK32Bc73IiJn4fglImtfxfFJHeg0/SX7cLIatO+K34Do2X vCG/QNGA==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjt-00008z-Cu; Mon, 17 Jun 2019 12:27:57 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Logan Gunthorpe Subject: [PATCH 09/25] memremap: pass a struct dev_pagemap to ->kill and ->cleanup Date: Mon, 17 Jun 2019 14:27:17 +0200 Message-Id: <20190617122733.22432-10-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP Passing the actual typed structure leads to more understandable code vs just passing the ref member. Reported-by: Logan Gunthorpe Signed-off-by: Christoph Hellwig Reviewed-by: Logan Gunthorpe Reviewed-by: Jason Gunthorpe Reviewed-by: Dan Williams --- drivers/dax/device.c | 12 ++++++------ drivers/nvdimm/pmem.c | 18 +++++++++--------- drivers/pci/p2pdma.c | 11 ++++++----- include/linux/memremap.h | 4 ++-- kernel/memremap.c | 8 ++++---- mm/hmm.c | 10 +++++----- tools/testing/nvdimm/test/iomap.c | 4 ++-- 7 files changed, 34 insertions(+), 33 deletions(-) diff --git a/drivers/dax/device.c b/drivers/dax/device.c index cd483050a775..17b46c1a76b4 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -27,21 +27,21 @@ static void dev_dax_percpu_release(struct percpu_ref *ref) complete(&dev_dax->cmp); } -static void dev_dax_percpu_exit(struct percpu_ref *ref) +static void dev_dax_percpu_exit(struct dev_pagemap *pgmap) { - struct dev_dax *dev_dax = ref_to_dev_dax(ref); + struct dev_dax *dev_dax = container_of(pgmap, struct dev_dax, pgmap); dev_dbg(&dev_dax->dev, "%s\n", __func__); wait_for_completion(&dev_dax->cmp); - percpu_ref_exit(ref); + percpu_ref_exit(pgmap->ref); } -static void dev_dax_percpu_kill(struct percpu_ref *ref) +static void dev_dax_percpu_kill(struct dev_pagemap *pgmap) { - struct dev_dax *dev_dax = ref_to_dev_dax(ref); + struct dev_dax *dev_dax = container_of(pgmap, struct dev_dax, pgmap); dev_dbg(&dev_dax->dev, "%s\n", __func__); - percpu_ref_kill(ref); + percpu_ref_kill(pgmap->ref); } static int check_vma(struct dev_dax *dev_dax, struct vm_area_struct *vma, diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 1a9986dc4dc6..469a0f5b3380 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -311,24 +311,24 @@ static const struct attribute_group *pmem_attribute_groups[] = { NULL, }; -static void pmem_pagemap_cleanup(struct percpu_ref *ref) +static void pmem_pagemap_cleanup(struct dev_pagemap *pgmap) { - struct request_queue *q; + struct request_queue *q = + container_of(pgmap->ref, struct request_queue, q_usage_counter); - q = container_of(ref, typeof(*q), q_usage_counter); blk_cleanup_queue(q); } -static void pmem_release_queue(void *ref) +static void pmem_release_queue(void *pgmap) { - pmem_pagemap_cleanup(ref); + pmem_pagemap_cleanup(pgmap); } -static void pmem_pagemap_kill(struct percpu_ref *ref) +static void pmem_pagemap_kill(struct dev_pagemap *pgmap) { - struct request_queue *q; + struct request_queue *q = + container_of(pgmap->ref, struct request_queue, q_usage_counter); - q = container_of(ref, typeof(*q), q_usage_counter); blk_freeze_queue_start(q); } @@ -443,7 +443,7 @@ static int pmem_attach_disk(struct device *dev, memcpy(&bb_res, &pmem->pgmap.res, sizeof(bb_res)); } else { if (devm_add_action_or_reset(dev, pmem_release_queue, - &q->q_usage_counter)) + &pmem->pgmap)) return -ENOMEM; addr = devm_memremap(dev, pmem->phys_addr, pmem->size, ARCH_MEMREMAP_PMEM); diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index e083567d26ef..48a88158e46a 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -90,17 +90,18 @@ static void pci_p2pdma_percpu_release(struct percpu_ref *ref) complete(&p2p_pgmap->ref_done); } -static void pci_p2pdma_percpu_kill(struct percpu_ref *ref) +static void pci_p2pdma_percpu_kill(struct dev_pagemap *pgmap) { - percpu_ref_kill(ref); + percpu_ref_kill(pgmap->ref); } -static void pci_p2pdma_percpu_cleanup(struct percpu_ref *ref) +static void pci_p2pdma_percpu_cleanup(struct dev_pagemap *pgmap) { - struct p2pdma_pagemap *p2p_pgmap = to_p2p_pgmap(ref); + struct p2pdma_pagemap *p2p_pgmap = + container_of(pgmap, struct p2pdma_pagemap, pgmap); wait_for_completion(&p2p_pgmap->ref_done); - percpu_ref_exit(ref); + percpu_ref_exit(&p2p_pgmap->ref); } static void pci_p2pdma_release(void *data) diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 1cdcfd595770..cec02d5400f1 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -74,12 +74,12 @@ struct dev_pagemap_ops { /* * Transition the refcount in struct dev_pagemap to the dead state. */ - void (*kill)(struct percpu_ref *ref); + void (*kill)(struct dev_pagemap *pgmap); /* * Wait for refcount in struct dev_pagemap to be idle and reap it. */ - void (*cleanup)(struct percpu_ref *ref); + void (*cleanup)(struct dev_pagemap *pgmap); }; /** diff --git a/kernel/memremap.c b/kernel/memremap.c index 85635ff57e04..ba7156bd52d1 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -92,10 +92,10 @@ static void devm_memremap_pages_release(void *data) unsigned long pfn; int nid; - pgmap->ops->kill(pgmap->ref); + pgmap->ops->kill(pgmap); for_each_device_pfn(pfn, pgmap) put_page(pfn_to_page(pfn)); - pgmap->ops->cleanup(pgmap->ref); + pgmap->ops->cleanup(pgmap); /* pages are dead and unused, undo the arch mapping */ align_start = res->start & ~(SECTION_SIZE - 1); @@ -299,8 +299,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) err_pfn_remap: pgmap_array_delete(res); err_array: - pgmap->ops->kill(pgmap->ref); - pgmap->ops->cleanup(pgmap->ref); + pgmap->ops->kill(pgmap); + pgmap->ops->cleanup(pgmap); return ERR_PTR(error); } EXPORT_SYMBOL_GPL(devm_memremap_pages); diff --git a/mm/hmm.c b/mm/hmm.c index 694e53bc55f4..ec3bf2c5c699 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1349,18 +1349,18 @@ static void hmm_devmem_ref_release(struct percpu_ref *ref) complete(&devmem->completion); } -static void hmm_devmem_ref_exit(struct percpu_ref *ref) +static void hmm_devmem_ref_exit(struct dev_pagemap *pgmap) { struct hmm_devmem *devmem; - devmem = container_of(ref, struct hmm_devmem, ref); + devmem = container_of(pgmap, struct hmm_devmem, pagemap); wait_for_completion(&devmem->completion); - percpu_ref_exit(ref); + percpu_ref_exit(pgmap->ref); } -static void hmm_devmem_ref_kill(struct percpu_ref *ref) +static void hmm_devmem_ref_kill(struct dev_pagemap *pgmap) { - percpu_ref_kill(ref); + percpu_ref_kill(pgmap->ref); } static vm_fault_t hmm_devmem_fault(struct vm_area_struct *vma, diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index a667d974155e..3a1fa7735f47 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -108,8 +108,8 @@ static void nfit_test_kill(void *_pgmap) { WARN_ON(!pgmap || !pgmap->ref || !pgmap->ops->kill || !pgmap->ops->cleanup); - pgmap->ops->kill(pgmap->ref); - pgmap->ops->cleanup(pgmap->ref); + pgmap->ops->kill(pgmap); + pgmap->ops->cleanup(pgmap); } void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) From patchwork Mon Jun 17 12:27:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999021 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C00A413AF for ; Mon, 17 Jun 2019 12:28:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AF1322867F for ; Mon, 17 Jun 2019 12:28:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9E0CB285A3; Mon, 17 Jun 2019 12:28:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F0CEB2867F for ; Mon, 17 Jun 2019 12:28:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3B1198E000D; Mon, 17 Jun 2019 08:28:04 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 364618E000B; Mon, 17 Jun 2019 08:28:04 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1DAFD8E000D; Mon, 17 Jun 2019 08:28:04 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by kanga.kvack.org (Postfix) with ESMTP id D86AD8E000B for ; Mon, 17 Jun 2019 08:28:03 -0400 (EDT) Received: by mail-pl1-f198.google.com with SMTP id 71so5899139pld.17 for ; Mon, 17 Jun 2019 05:28:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=SrlBfglV2hFr71vKq82TSTUn2RS300iWsrC5HG0Yr4o=; b=Vet9qj9lNUrTsPkwmXYn87agUDXV9SRj8/+Awe1B7UupubAIAuuq2bfVPFMHR52t5d 6+vJaKFMkLLtVo3VFkEepc7PwZTo0o0PL/TiFSe1WqenErPuSLyHEx8RkzTdKiiP0R6E 2DBU0y6tl67vsmNyRNOh+m0tUM8whFtvXs0Eam7n0zrisAaxypVFiwrgkU1UKE2xd3cq /Vk7YcU98/XiPcNNE429IyKJA8Jw6srk1iY+Ncgp+FCIBtd6F5KxoCwH8wCt/K9OH1mY Y3J7/tQ2Iw1avGuYNralzKDjR4/Drh/I54nWURl00RThs4Z47x9qqlJIfdgtBQHAtw7N 3JrQ== X-Gm-Message-State: APjAAAVshWr61mpfsSg/fJtMz37gVS7ZRNztV4hYHCXYA/JCOrxHrtaU xF52Z5mKCxMIKzc4nE1/B73x+U+qVUiqRuObcufuiUQtIWDtx6jarYcq2s7IbiGdJxvniH6qf+D WWtDXxkdoAT8dTQ2qh2RjtFr2F6P9xDjJOT35Hlasg1kEcF9ORb4YJr2JZr2CQGw= X-Received: by 2002:a63:e502:: with SMTP id r2mr20487896pgh.261.1560774483371; Mon, 17 Jun 2019 05:28:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqz9q8oAHlOtVIwODH/PCOpKpF9UwuiimGmtvEAG492si+Nok8wFdqbw4vkOZV73x6C0Wms+ X-Received: by 2002:a63:e502:: with SMTP id r2mr20487849pgh.261.1560774482428; Mon, 17 Jun 2019 05:28:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774482; cv=none; d=google.com; s=arc-20160816; b=V7ABcxES+mJbQM02gScjwGhNcMhK7eSXRDi9xNS90shJdmEwJ8RIqgNWP1dHx25NVU 0YetqbPdUTof6FUBWFtVdin4EDJg7qlZSGJAFJLpLECMIS0mi92EqXeK8DZl3tTD8R7D 4ZH2MeDBNPUVyK/b4LtN4bW0gGcig3TTIfNvKTvTwb0SpHJiR+VBsmMjXxf093jF8hsD 3fkecfaLR47zSScrVPz8lHtTFclOn4+PCfURjJB3nLOFgAKD632ZF8WzZM9jxC4c6mQY oNZGd1ITYsYvOZoxoShuk8l/WMQDp9cmwyRVIlPkmcDl2V2zKSId/clvAQduNKAKaN2l cifA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=SrlBfglV2hFr71vKq82TSTUn2RS300iWsrC5HG0Yr4o=; b=v38gxmLij9GuOTMBNZ4pIOxcWzK8yNba9tPan/5vlLY6BLyOMmsgE5JDLXjAMsYfuV TxscMxbsovNT6+SGUjZbRwYbCwhzxaMxa8lqkEAdBSsKlRLSW9PZ7rPY/1jvxdoznTWH 8psGH2zOVzSmFu4nDS+rZ/zmDEzgB/GOJsVJB7JFaeHzvuxaVmWLHKZ+y2JFIyN1XHGT AtoDCisL/8myAY0TdHDuc4TnMHUjlgb28llISxjJKcF9iEwC054T+BS/XFx0F/k9uTli ldx1Z/Ny9wYCZySCfJFpK2VdhwRzTD3oftt5E9JTIXtccejDVnoYsjB43pSwCWAdv+VE U0cQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=W2VpTqt7; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id b139si10497415pfb.38.2019.06.17.05.28.02 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=W2VpTqt7; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=SrlBfglV2hFr71vKq82TSTUn2RS300iWsrC5HG0Yr4o=; b=W2VpTqt7EskSNl6OuXPvH3bTWa Oxg4VSsFhUtYN/smPPmJ/TmFjbu6FrvzGufjEzmKE0uOJrxOjmjRrjYb/YHVyc13wqj4131sLqdMW Di83pcGzCmYLYtdJivugv1+KG0NJ3i0vHj4cqwGx6dLona+c6BJTgo+6AyG47cNDxzrOuhEbFZgta sSTuRxsX8hlFCFBDHEQVB7HhiHPeE6HZ+5YwoMol64nHRFYkCX0Sca+lcM6aXnuI41SjltLH0lSfU X9k4JK6mamu83Z+QHUj8CXn+SiW++AFS5aMwKTYRlnBMa8VbjP/mTavSO9PsG15HZSuj3gzWVrqZT Th+7BvSw==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjv-0000AI-IK; Mon, 17 Jun 2019 12:27:59 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 10/25] memremap: lift the devmap_enable manipulation into devm_memremap_pages Date: Mon, 17 Jun 2019 14:27:18 +0200 Message-Id: <20190617122733.22432-11-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP Just check if there is a ->page_free operation set and take care of the static key enable, as well as the put using device managed resources. Also check that a ->page_free is provided for the pgmaps types that require it, and check for a valid type as well while we are at it. Note that this also fixes the fact that hmm never called dev_pagemap_put_ops and thus would leave the slow path enabled forever, even after a device driver unload or disable. Signed-off-by: Christoph Hellwig --- drivers/nvdimm/pmem.c | 23 +++-------------- include/linux/mm.h | 10 -------- kernel/memremap.c | 57 ++++++++++++++++++++++++++----------------- mm/hmm.c | 2 -- 4 files changed, 39 insertions(+), 53 deletions(-) diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 469a0f5b3380..85364c59c607 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -342,11 +342,6 @@ static void pmem_release_disk(void *__pmem) put_disk(pmem->disk); } -static void pmem_release_pgmap_ops(void *__pgmap) -{ - dev_pagemap_put_ops(); -} - static void pmem_pagemap_page_free(struct page *page, void *data) { wake_up_var(&page->_refcount); @@ -358,16 +353,6 @@ static const struct dev_pagemap_ops fsdax_pagemap_ops = { .cleanup = pmem_pagemap_cleanup, }; -static int setup_pagemap_fsdax(struct device *dev, struct dev_pagemap *pgmap) -{ - dev_pagemap_get_ops(); - if (devm_add_action_or_reset(dev, pmem_release_pgmap_ops, pgmap)) - return -ENOMEM; - pgmap->type = MEMORY_DEVICE_FS_DAX; - pgmap->ops = &fsdax_pagemap_ops; - return 0; -} - static int pmem_attach_disk(struct device *dev, struct nd_namespace_common *ndns) { @@ -423,8 +408,8 @@ static int pmem_attach_disk(struct device *dev, pmem->pfn_flags = PFN_DEV; pmem->pgmap.ref = &q->q_usage_counter; if (is_nd_pfn(dev)) { - if (setup_pagemap_fsdax(dev, &pmem->pgmap)) - return -ENOMEM; + pmem->pgmap.type = MEMORY_DEVICE_FS_DAX; + pmem->pgmap.ops = &fsdax_pagemap_ops; addr = devm_memremap_pages(dev, &pmem->pgmap); pfn_sb = nd_pfn->pfn_sb; pmem->data_offset = le64_to_cpu(pfn_sb->dataoff); @@ -436,8 +421,8 @@ static int pmem_attach_disk(struct device *dev, } else if (pmem_should_map_pages(dev)) { memcpy(&pmem->pgmap.res, &nsio->res, sizeof(pmem->pgmap.res)); pmem->pgmap.altmap_valid = false; - if (setup_pagemap_fsdax(dev, &pmem->pgmap)) - return -ENOMEM; + pmem->pgmap.type = MEMORY_DEVICE_FS_DAX; + pmem->pgmap.ops = &fsdax_pagemap_ops; addr = devm_memremap_pages(dev, &pmem->pgmap); pmem->pfn_flags |= PFN_MAP; memcpy(&bb_res, &pmem->pgmap.res, sizeof(bb_res)); diff --git a/include/linux/mm.h b/include/linux/mm.h index 0e8834ac32b7..edcf2b821647 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -921,8 +921,6 @@ static inline bool is_zone_device_page(const struct page *page) #endif #ifdef CONFIG_DEV_PAGEMAP_OPS -void dev_pagemap_get_ops(void); -void dev_pagemap_put_ops(void); void __put_devmap_managed_page(struct page *page); DECLARE_STATIC_KEY_FALSE(devmap_managed_key); static inline bool put_devmap_managed_page(struct page *page) @@ -969,14 +967,6 @@ static inline bool is_pci_p2pdma_page(const struct page *page) #endif /* CONFIG_PCI_P2PDMA */ #else /* CONFIG_DEV_PAGEMAP_OPS */ -static inline void dev_pagemap_get_ops(void) -{ -} - -static inline void dev_pagemap_put_ops(void) -{ -} - static inline bool put_devmap_managed_page(struct page *page) { return false; diff --git a/kernel/memremap.c b/kernel/memremap.c index ba7156bd52d1..7272027fbdd7 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -17,6 +17,35 @@ static DEFINE_XARRAY(pgmap_array); #define SECTION_MASK ~((1UL << PA_SECTION_SHIFT) - 1) #define SECTION_SIZE (1UL << PA_SECTION_SHIFT) +#ifdef CONFIG_DEV_PAGEMAP_OPS +DEFINE_STATIC_KEY_FALSE(devmap_managed_key); +EXPORT_SYMBOL(devmap_managed_key); +static atomic_t devmap_enable; + +static void dev_pagemap_put_ops(void *data) +{ + if (atomic_dec_and_test(&devmap_enable)) + static_branch_disable(&devmap_managed_key); +} + +static int dev_pagemap_get_ops(struct device *dev, struct dev_pagemap *pgmap) +{ + if (!pgmap->ops->page_free) { + WARN(1, "Missing page_free method\n"); + return -EINVAL; + } + + if (atomic_inc_return(&devmap_enable) == 1) + static_branch_enable(&devmap_managed_key); + return devm_add_action_or_reset(dev, dev_pagemap_put_ops, NULL); +} +#else +static int dev_pagemap_get_ops(struct device *dev, struct dev_pagemap *pgmap) +{ + return -EINVAL; +} +#endif /* CONFIG_DEV_PAGEMAP_OPS */ + #if IS_ENABLED(CONFIG_DEVICE_PRIVATE) vm_fault_t device_private_entry_fault(struct vm_area_struct *vma, unsigned long addr, @@ -190,6 +219,12 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) return ERR_PTR(-EINVAL); } + if (pgmap->type != MEMORY_DEVICE_PCI_P2PDMA) { + error = dev_pagemap_get_ops(dev, pgmap); + if (error) + return ERR_PTR(error); + } + align_start = res->start & ~(SECTION_SIZE - 1); align_size = ALIGN(res->start + resource_size(res), SECTION_SIZE) - align_start; @@ -356,28 +391,6 @@ struct dev_pagemap *get_dev_pagemap(unsigned long pfn, EXPORT_SYMBOL_GPL(get_dev_pagemap); #ifdef CONFIG_DEV_PAGEMAP_OPS -DEFINE_STATIC_KEY_FALSE(devmap_managed_key); -EXPORT_SYMBOL(devmap_managed_key); -static atomic_t devmap_enable; - -/* - * Toggle the static key for ->page_free() callbacks when dev_pagemap - * pages go idle. - */ -void dev_pagemap_get_ops(void) -{ - if (atomic_inc_return(&devmap_enable) == 1) - static_branch_enable(&devmap_managed_key); -} -EXPORT_SYMBOL_GPL(dev_pagemap_get_ops); - -void dev_pagemap_put_ops(void) -{ - if (atomic_dec_and_test(&devmap_enable)) - static_branch_disable(&devmap_managed_key); -} -EXPORT_SYMBOL_GPL(dev_pagemap_put_ops); - void __put_devmap_managed_page(struct page *page) { int count = page_ref_dec_return(page); diff --git a/mm/hmm.c b/mm/hmm.c index ec3bf2c5c699..0add50944d64 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1412,8 +1412,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, void *result; int ret; - dev_pagemap_get_ops(); - devmem = devm_kzalloc(device, sizeof(*devmem), GFP_KERNEL); if (!devmem) return ERR_PTR(-ENOMEM); From patchwork Mon Jun 17 12:27:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999025 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AE55313AF for ; Mon, 17 Jun 2019 12:28:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9CFE01FF0B for ; Mon, 17 Jun 2019 12:28:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 90E7E285A3; Mon, 17 Jun 2019 12:28:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D23D51FF0B for ; Mon, 17 Jun 2019 12:28:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 140228E000E; Mon, 17 Jun 2019 08:28:07 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 0F3B48E000B; Mon, 17 Jun 2019 08:28:06 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DE8948E000E; Mon, 17 Jun 2019 08:28:06 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by kanga.kvack.org (Postfix) with ESMTP id A1AEF8E000B for ; Mon, 17 Jun 2019 08:28:06 -0400 (EDT) Received: by mail-pg1-f198.google.com with SMTP id c4so7633872pgm.21 for ; Mon, 17 Jun 2019 05:28:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=iv+pqtBnZ+9vrpFbmVzdknNqM8MSPQoIbzGf9L5B0pI=; b=VPt5Xs7JiZHSB5hkL0jAMNpN1EdG2TGDALaxPQqdYudkI6Ef1dU8rMkuUxNUb8vRk3 QAiKqsQQbqQBMXFvPYhQNDeqrerMTPZfvN0LKJutogImUikOR9ImWCpEc3BHgtEg7Mf8 Vf8EsEXHmf5nCavpc6gmdQKbVn4tcXrKQLQo4ArBsSOhp0qeN/eAEW11iY/eM2KbzG1B beDNVnkY7ujljIoN7KQQfM1aaehF7BREZ1Qq4DM1w5PSPDVtQLPp7uz6LYO9dE/a2gDn 7tvwJOad8dRaqc+yEyg/ZVmOVhzQZ3XOwiciWy0LdNWXuEpM6+8E9+pSc2LNROYkQF7d Efbw== X-Gm-Message-State: APjAAAWeQqneSWZ409MPqKCZncRHkVSxf9rrE7v4f5uIEFeOAoJQKD/T eMWMOqOXapsjIvDkxTL4gs/6F/mxdrJrmfimTakkQTxoTQSaUt0TlKfdug9sGQF7wJE/g5XBd9L o+AIBLpqdHlI+WFZKvlg2TiuXUXYBfqTH2NiTdA66DYYWciEA+RFT1kK5fABMaoQ= X-Received: by 2002:a63:5f16:: with SMTP id t22mr7976591pgb.156.1560774486200; Mon, 17 Jun 2019 05:28:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqwwJbRygqYjaexjcLzf9NhSwrmiUOWEjOAIBuuiJC3/6Iq1w2eV+KYIyZjkgsMFn+o6Rc49 X-Received: by 2002:a63:5f16:: with SMTP id t22mr7976528pgb.156.1560774485171; Mon, 17 Jun 2019 05:28:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774485; cv=none; d=google.com; s=arc-20160816; b=Iym/1f29bk8cEmfkoZSGeNZlMh9m01Q7tPpwbxLLmRSGruq/OqH54I7ujBlsWcZ0R4 ATrrGKEqGiiXzURSUzGJb0cakxZjZLlPKUx72fYWsneH+uq8jVYRQMj8yxQLePMr9L5l tOIs86dxsNOkakYWz9z7DAY6ogR1QxDHR2KQmLHvPo1YF+NGYDbIKELjn5d60SqKtYYZ OvO9J51LfDBnQORuf0oGOaWNNgOSG3g6z6BE0hFAbuolKfA6Gw0lh/Zm1S8JeNeIqS18 un6ZD0XcIZGgPZkK8Hi+bfRq/nklZzaWXvdVvs7G6nP4ZLCb7y38FRIVM8u6sPVay+ni dgJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=iv+pqtBnZ+9vrpFbmVzdknNqM8MSPQoIbzGf9L5B0pI=; b=kQuRCYFKw8F0RHaxGUJHLy3EbXwILNLLcMia6T7R93nkdfOsfNaWtcUeEjfjjZjluy i/AdOPzIdn3rSAed00yeYtrwHi1bEngUFEXVJR7cyiZz9HO2pZ1CfXRgVxkD15FEW3JI b5RgN1wCeS9Z1JCTCXe/QdkwU2IC1N8HnbFOBqa+dABcJ5wbd8lpucUD7BkUL7TCGKQz /u2Jvzq9g0GQIR105/bkfF7/i0mElahGkwMxroDSyi51aPj7UpN0q1TTWzrLB/H0sCSo UjRk6gup7aDdnccSDryM65r9PRogtkydWQvtxF2zEkNOmAQlyD+Ria7ZdB09ZClp0MRG Q48A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=N1OQ9Slu; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id g35si10259081pje.73.2019.06.17.05.28.05 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:05 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=N1OQ9Slu; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=iv+pqtBnZ+9vrpFbmVzdknNqM8MSPQoIbzGf9L5B0pI=; b=N1OQ9SluZvi98Ibke/xZB5BxX+ HVWJ4hNyQg5HMYWozA63VMEhvoz1tAI35jZCuaEI4zSvMgTLHihi6fu+a0yB4sgXvQ3JVywEeSgZ1 5SiPEROVO/ysqUEMXlfVOiurlEYPotzp3TK+XFRosVNjpnFs1vajh2o0y18nGPGqeTRoWrnTyxDw0 M2jB5LSQy0WGONV9HzAYr70iXUxoFl+jivgQYph5y5e1Hgh4qk1jq5BZsmSnDyboDV9+bP3LjgxMA naw6fZMlAMnEVTVPWK/9HITFPpo936y/jFr9k2lBoGKyjSmlOkHTKJnbkkvEQHbrFsg1d661VS7aU bp3DCnmQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjx-0000Ap-Ob; Mon, 17 Jun 2019 12:28:02 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Ralph Campbell Subject: [PATCH 11/25] memremap: add a migrate_to_ram method to struct dev_pagemap_ops Date: Mon, 17 Jun 2019 14:27:19 +0200 Message-Id: <20190617122733.22432-12-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP This replaces the hacky ->fault callback, which is currently directly called from common code through a hmm specific data structure as an exercise in layering violations. Signed-off-by: Christoph Hellwig Reviewed-by: Ralph Campbell --- include/linux/hmm.h | 6 ------ include/linux/memremap.h | 6 ++++++ include/linux/swapops.h | 15 --------------- kernel/memremap.c | 35 ++++------------------------------- mm/hmm.c | 13 +++++-------- mm/memory.c | 9 ++------- 6 files changed, 17 insertions(+), 67 deletions(-) diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 31e1c5347331..e64824334b85 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -694,11 +694,6 @@ struct hmm_devmem_ops { * chunk, as an optimization. It must, however, prioritize the faulting address * over all the others. */ -typedef vm_fault_t (*dev_page_fault_t)(struct vm_area_struct *vma, - unsigned long addr, - const struct page *page, - unsigned int flags, - pmd_t *pmdp); struct hmm_devmem { struct completion completion; @@ -709,7 +704,6 @@ struct hmm_devmem { struct dev_pagemap pagemap; const struct hmm_devmem_ops *ops; struct percpu_ref ref; - dev_page_fault_t page_fault; }; /* diff --git a/include/linux/memremap.h b/include/linux/memremap.h index cec02d5400f1..72a8a1a9303b 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -80,6 +80,12 @@ struct dev_pagemap_ops { * Wait for refcount in struct dev_pagemap to be idle and reap it. */ void (*cleanup)(struct dev_pagemap *pgmap); + + /* + * Used for private (un-addressable) device memory only. Must migrate + * the page back to a CPU accessible page. + */ + vm_fault_t (*migrate_to_ram)(struct vm_fault *vmf); }; /** diff --git a/include/linux/swapops.h b/include/linux/swapops.h index 4d961668e5fc..15bdb6fe71e5 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -129,12 +129,6 @@ static inline struct page *device_private_entry_to_page(swp_entry_t entry) { return pfn_to_page(swp_offset(entry)); } - -vm_fault_t device_private_entry_fault(struct vm_area_struct *vma, - unsigned long addr, - swp_entry_t entry, - unsigned int flags, - pmd_t *pmdp); #else /* CONFIG_DEVICE_PRIVATE */ static inline swp_entry_t make_device_private_entry(struct page *page, bool write) { @@ -164,15 +158,6 @@ static inline struct page *device_private_entry_to_page(swp_entry_t entry) { return NULL; } - -static inline vm_fault_t device_private_entry_fault(struct vm_area_struct *vma, - unsigned long addr, - swp_entry_t entry, - unsigned int flags, - pmd_t *pmdp) -{ - return VM_FAULT_SIGBUS; -} #endif /* CONFIG_DEVICE_PRIVATE */ #ifdef CONFIG_MIGRATION diff --git a/kernel/memremap.c b/kernel/memremap.c index 7272027fbdd7..5245c25b10e3 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -11,7 +11,6 @@ #include #include #include -#include static DEFINE_XARRAY(pgmap_array); #define SECTION_MASK ~((1UL << PA_SECTION_SHIFT) - 1) @@ -46,36 +45,6 @@ static int dev_pagemap_get_ops(struct device *dev, struct dev_pagemap *pgmap) } #endif /* CONFIG_DEV_PAGEMAP_OPS */ -#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) -vm_fault_t device_private_entry_fault(struct vm_area_struct *vma, - unsigned long addr, - swp_entry_t entry, - unsigned int flags, - pmd_t *pmdp) -{ - struct page *page = device_private_entry_to_page(entry); - struct hmm_devmem *devmem; - - devmem = container_of(page->pgmap, typeof(*devmem), pagemap); - - /* - * The page_fault() callback must migrate page back to system memory - * so that CPU can access it. This might fail for various reasons - * (device issue, device was unsafely unplugged, ...). When such - * error conditions happen, the callback must return VM_FAULT_SIGBUS. - * - * Note that because memory cgroup charges are accounted to the device - * memory, this should never fail because of memory restrictions (but - * allocation of regular system page might still fail because we are - * out of memory). - * - * There is a more in-depth description of what that callback can and - * cannot do, in include/linux/memremap.h - */ - return devmem->page_fault(vma, addr, page, flags, pmdp); -} -#endif /* CONFIG_DEVICE_PRIVATE */ - static void pgmap_array_delete(struct resource *res) { xa_store_range(&pgmap_array, PHYS_PFN(res->start), PHYS_PFN(res->end), @@ -192,6 +161,10 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) WARN(1, "Device private memory not supported\n"); return ERR_PTR(-EINVAL); } + if (!pgmap->ops || !pgmap->ops->migrate_to_ram) { + WARN(1, "Missing migrate_to_ram method\n"); + return ERR_PTR(-EINVAL); + } break; case MEMORY_DEVICE_PUBLIC: if (!IS_ENABLED(CONFIG_DEVICE_PUBLIC)) { diff --git a/mm/hmm.c b/mm/hmm.c index 0add50944d64..2e5642dc6b04 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1363,15 +1363,12 @@ static void hmm_devmem_ref_kill(struct dev_pagemap *pgmap) percpu_ref_kill(pgmap->ref); } -static vm_fault_t hmm_devmem_fault(struct vm_area_struct *vma, - unsigned long addr, - const struct page *page, - unsigned int flags, - pmd_t *pmdp) +static vm_fault_t hmm_devmem_migrate_to_ram(struct vm_fault *vmf) { - struct hmm_devmem *devmem = page->pgmap->data; + struct hmm_devmem *devmem = vmf->page->pgmap->data; - return devmem->ops->fault(devmem, vma, addr, page, flags, pmdp); + return devmem->ops->fault(devmem, vmf->vma, vmf->address, vmf->page, + vmf->flags, vmf->pmd); } static void hmm_devmem_free(struct page *page, void *data) @@ -1385,6 +1382,7 @@ static const struct dev_pagemap_ops hmm_pagemap_ops = { .page_free = hmm_devmem_free, .kill = hmm_devmem_ref_kill, .cleanup = hmm_devmem_ref_exit, + .migrate_to_ram = hmm_devmem_migrate_to_ram, }; /* @@ -1435,7 +1433,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, devmem->pfn_first = devmem->resource->start >> PAGE_SHIFT; devmem->pfn_last = devmem->pfn_first + (resource_size(devmem->resource) >> PAGE_SHIFT); - devmem->page_fault = hmm_devmem_fault; devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; devmem->pagemap.res = *devmem->resource; diff --git a/mm/memory.c b/mm/memory.c index ddf20bd0c317..e8d0012032d7 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2782,13 +2782,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) migration_entry_wait(vma->vm_mm, vmf->pmd, vmf->address); } else if (is_device_private_entry(entry)) { - /* - * For un-addressable device memory we call the pgmap - * fault handler callback. The callback must migrate - * the page back to some CPU accessible page. - */ - ret = device_private_entry_fault(vma, vmf->address, entry, - vmf->flags, vmf->pmd); + vmf->page = device_private_entry_to_page(entry); + ret = vmf->page->pgmap->ops->migrate_to_ram(vmf); } else if (is_hwpoison_entry(entry)) { ret = VM_FAULT_HWPOISON; } else { From patchwork Mon Jun 17 12:27:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999035 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EEE6F1902 for ; Mon, 17 Jun 2019 12:28:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DD3EE1FF0B for ; Mon, 17 Jun 2019 12:28:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D131A285A3; Mon, 17 Jun 2019 12:28:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5C03C27480 for ; Mon, 17 Jun 2019 12:28:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B79AA8E000F; Mon, 17 Jun 2019 08:28:09 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B50748E000B; Mon, 17 Jun 2019 08:28:09 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A19258E000F; Mon, 17 Jun 2019 08:28:09 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by kanga.kvack.org (Postfix) with ESMTP id 67FB38E000B for ; Mon, 17 Jun 2019 08:28:09 -0400 (EDT) Received: by mail-pg1-f197.google.com with SMTP id j36so7642235pgb.20 for ; Mon, 17 Jun 2019 05:28:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=CCDpYq0cfPU5A/VTH+xsLw5c5i/G2uDb/EZi5JVjZA8=; b=SDB7gbLrcWarI05wPntjs8X1rHurqaGdgOnG7/06eIGdICyHyJaAR3Xoe5+bt50139 oYN32NyJrpQf2SW4cocpf0fhe6yF5IuFmLZRVKpheU/6ce85ERj+UsLyF8+BkrMQ9h0W BHX8Ef0vzNBsfRO1w2i4nzfItt7CpTACADDRypdHhzT44PZf0iq2XDRAVQZ24NioptE9 +jQ5YT9RVckJ/IjOPZU6FXd+sI35FHd4aD4lUSncR4GLG8sb5/GfZL3Xarpn0Zjzobue s8wZcaPY8nJw/1Cdw/F6MaBCqCz3xX3+hYN/ZfdPeL5E6qNBsDIJWTUlZcclH3cJH+U9 jl3w== X-Gm-Message-State: APjAAAW4V2D5CIJNo3K/EcssYwEiGvN/6XFgQC0Od8RlFEKgMe52Fvif 0zPtK4aFdG6JARFmrW2PDzZW8OAcyfu566sR+8KZql53pxHs4G6EsTSmK2s4iCagl8XHDJKUhIn YEU/Tqq4awr9ASEs0VB+Ho2lUpzirwzDNrhmSevhRsn+oZZpH8/z6npjIeCYED2U= X-Received: by 2002:a17:902:54f:: with SMTP id 73mr105801100plf.246.1560774489090; Mon, 17 Jun 2019 05:28:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqwCW7YQlzz+Ar2eL8+d9QNnVFLMwYfMkA/JRnxkvvtbNH3NBQth4QYq9MBXBs13t0AI5Pz8 X-Received: by 2002:a17:902:54f:: with SMTP id 73mr105801061plf.246.1560774488335; Mon, 17 Jun 2019 05:28:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774488; cv=none; d=google.com; s=arc-20160816; b=ZO0y6eoJexROF10HnZpq6A8k/WbK6R0CZ+oGqhLkgFq2opi5Bjl5MxW3KotnizoPt4 ZLCkDdtAGvOe42hMNFb6XhC8s9+hHeKb8Zk7nxaRLaLpsKE/EHmYvXrlDKT+jMCPvgDh u1bR8c67txotuOfZCdRGArYFlyOINd714xC28T+qlgA4/82O1xDeLv5udQ2ZUXEBUkEY IxoBVBNakJiH0uA7Fuvqh4YOOwg3JWy9SziJyTItioZoxXo8KpyukcMW/Pjur1sm76Bm rxqbLoTSnacf3KvTpJ9slr3eBnyizOc/JqVdz4b3YKkqLpiuAMAx8l/fX1+M6VBCNCZD BsUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=CCDpYq0cfPU5A/VTH+xsLw5c5i/G2uDb/EZi5JVjZA8=; b=WgPuvT+Q8XAlrIh12aBACgtCTUXY99nTd8N0iqY9zQcGUTQ61NJiHthwK8nd/XWdOB fT3NB1fLpS1g/F1zlhSMqxCg5uTNLpq9vo0d5oknf7Uawg5SZnwZnsp7QFQdzG6g9UYd o9szultfy0AoxilH56TTAOF+ZRMDvsoZXQFMbnfnL9y97fkbj57v52YVoRK5cmI3I+4R /f6kTfFutESjKztF32YvrsN2ZDifVWwWnhnInC1DjuZ122Wdc+/ITn6t5VghINn5mWfw tVDTO0RooDpGzlzHXH2J+2L6Cd1IjUNfuGpdDmt0Cq/Cm3a4xLh87EAf4sYI7SB2PqXl WFww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="UAicujz/"; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id v38si10004190plg.277.2019.06.17.05.28.08 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="UAicujz/"; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=CCDpYq0cfPU5A/VTH+xsLw5c5i/G2uDb/EZi5JVjZA8=; b=UAicujz/YVlKK+WKFtiONSPd4O BJKs+xmHpssspGq3McquTV8vbga/nq3/q1eYBDV/EH8jgE9LbrEuhITcWWrtX4KP6gedHj21lXM7L fzIbsm/SnlwB5scY8jKHVKMRjExJvc6f+ggr7aJhlVwN6hXtbnw63NYAfc9m0pXlk8SqqOqvuwn91 oYdNf/bAVgS250D/KEXwGQLD+OIK8ngJNhKbAwHIwdznpPM3aCF9/hjhYag8FTwDYhgM5z8nMN0Hi BlsdruuEUAfUs3Ea4mKWmZ+OnZ3IAaE4JeL3zAlMq/tZkvynJuq+HxmOnhFK3av+Yv/7+kxYzEjYc bP3Y7R/w==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqjz-0000Cf-UU; Mon, 17 Jun 2019 12:28:04 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 12/25] memremap: remove the data field in struct dev_pagemap Date: Mon, 17 Jun 2019 14:27:20 +0200 Message-Id: <20190617122733.22432-13-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP struct dev_pagemap is always embedded into a containing structure, so there is no need to an additional private data field. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- drivers/nvdimm/pmem.c | 2 +- include/linux/memremap.h | 3 +-- kernel/memremap.c | 2 +- mm/hmm.c | 9 +++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 85364c59c607..1ff4b1c4c7c3 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -342,7 +342,7 @@ static void pmem_release_disk(void *__pmem) put_disk(pmem->disk); } -static void pmem_pagemap_page_free(struct page *page, void *data) +static void pmem_pagemap_page_free(struct page *page) { wake_up_var(&page->_refcount); } diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 72a8a1a9303b..036c637f0150 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -69,7 +69,7 @@ struct dev_pagemap_ops { * reach 0 refcount unless there is a refcount bug. This allows the * device driver to implement its own memory management.) */ - void (*page_free)(struct page *page, void *data); + void (*page_free)(struct page *page); /* * Transition the refcount in struct dev_pagemap to the dead state. @@ -104,7 +104,6 @@ struct dev_pagemap { struct resource res; struct percpu_ref *ref; struct device *dev; - void *data; enum memory_type type; u64 pci_p2pdma_bus_offset; const struct dev_pagemap_ops *ops; diff --git a/kernel/memremap.c b/kernel/memremap.c index 5245c25b10e3..9dd5ccdb1adb 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -379,7 +379,7 @@ void __put_devmap_managed_page(struct page *page) mem_cgroup_uncharge(page); - page->pgmap->ops->page_free(page, page->pgmap->data); + page->pgmap->ops->page_free(page); } else if (!count) __put_page(page); } diff --git a/mm/hmm.c b/mm/hmm.c index 2e5642dc6b04..8a0e04bbeee6 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1365,15 +1365,17 @@ static void hmm_devmem_ref_kill(struct dev_pagemap *pgmap) static vm_fault_t hmm_devmem_migrate_to_ram(struct vm_fault *vmf) { - struct hmm_devmem *devmem = vmf->page->pgmap->data; + struct hmm_devmem *devmem = + container_of(vmf->page->pgmap, struct hmm_devmem, pagemap); return devmem->ops->fault(devmem, vmf->vma, vmf->address, vmf->page, vmf->flags, vmf->pmd); } -static void hmm_devmem_free(struct page *page, void *data) +static void hmm_devmem_free(struct page *page) { - struct hmm_devmem *devmem = data; + struct hmm_devmem *devmem = + container_of(page->pgmap, struct hmm_devmem, pagemap); devmem->ops->free(devmem, page); } @@ -1439,7 +1441,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, devmem->pagemap.ops = &hmm_pagemap_ops; devmem->pagemap.altmap_valid = false; devmem->pagemap.ref = &devmem->ref; - devmem->pagemap.data = devmem; result = devm_memremap_pages(devmem->device, &devmem->pagemap); if (IS_ERR(result)) From patchwork Mon Jun 17 12:27:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999039 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DE9EB13AF for ; Mon, 17 Jun 2019 12:28:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CF10E1FF0B for ; Mon, 17 Jun 2019 12:28:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C2678285A3; Mon, 17 Jun 2019 12:28:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EAD3F1FF0B for ; Mon, 17 Jun 2019 12:28:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 140568E0010; Mon, 17 Jun 2019 08:28:11 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 0F0FA8E000B; Mon, 17 Jun 2019 08:28:11 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ED4588E0010; Mon, 17 Jun 2019 08:28:10 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by kanga.kvack.org (Postfix) with ESMTP id AE34E8E000B for ; Mon, 17 Jun 2019 08:28:10 -0400 (EDT) Received: by mail-pl1-f199.google.com with SMTP id r7so5912195plo.6 for ; Mon, 17 Jun 2019 05:28:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=uSjp1MI0/DxR5xPXt73Wodait3XTLM3SgT/b55inJKw=; b=t6LkhDnHAVmBZWj3lF9jSjec4qbLgKhntT88NJsbs3oPYcnd1RkwAaEha6Be44xM7d TbHRiHbM+UaMmLwvOnRc6HXexgGHrVuVmIKiPEFwoaPUcUFfL4XGPcuwYKDxuYE1BCsO 42uqksHtWMWuiCpnGyLZN1qHHfNDWuZttq7IXV8E2bEDNzoqqWl0nPbf1zwB8u6rPzie 8UxbHBGNdRmyjLL2jkJG3u5TNTbAbiuC+loGK1t1MPYdlySXrq8JNz9gxUt3kZ/tKYJq i7hdFISy+SM+b6v4WGeLI52uzJwjq156G5r83As3P6DL08H6/nhqSENHbS/6dFANCQjH k8RQ== X-Gm-Message-State: APjAAAUowiRLkxlRV/KZr0Z72fTWGrFnsdBapJY7G6nXl9RDB7ELa3Hv b3W8jv6AlFyupRcAyghkr7GuW44FY8gaatMPjOakVW68So8gGi/ssuemIREl5SKEfVteHX1Zcpa VemBpTDYhN+l/hwor5un32P+xW+AcBwGy5Zg3xhQJ1pXJKqsZeQDYqQfom82pkh0= X-Received: by 2002:a62:7a8a:: with SMTP id v132mr90612874pfc.103.1560774490364; Mon, 17 Jun 2019 05:28:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqzlVGBAnX/LQ+WUNG10404yQHaW3vQfJtk5/5sQ64HiJpLs23t9jjfAG3IqNUhQXGIDM85P X-Received: by 2002:a62:7a8a:: with SMTP id v132mr90612808pfc.103.1560774489295; Mon, 17 Jun 2019 05:28:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774489; cv=none; d=google.com; s=arc-20160816; b=WPGG99fBP21KViAyqtwBqyaqnjTbAS2i2HQQ04X5JGqMex1+BsoiEl/aOydpXGcjza 39Ih5Zes3B4GbFBvTL3kA6LpoCXujaEknyDc9/kyko0zH7vB67eKpFwZeGXTJctK1MNd o2pMLeMJ5DTpNCwtiPiKloYcNn2wC/gf0hqoP0c3us1MR18kiqHMUUqYyFQFCL2Irij0 wPHOGew04H2s6+Xx/461DboTgyfOTXMyP8j6L0EGhTt6uhBC8m24CRSWSpItHl6czQO4 Vuxefp+MAlTj9UUdv5X604TnG7KJFkcKlIRv8WgTMyEd+KjYo1I+38DRPmm5rD5RE8Xa S+og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=uSjp1MI0/DxR5xPXt73Wodait3XTLM3SgT/b55inJKw=; b=q2Szlh9dCk3Zl8zkq61WF4Vd3EXdfLDHKEsHXK7mRHyaapJ8hh4lSADyi+KfI2xsEw lZI002P03Y7Ef7g5ytHneo9Gv6OawMnufk8qq0eAj/44HjK6/0sd6L7DzWsfeWojVM9l ETBX1IptJqaRO8ugdjmKfJ+AIKSPQBqMO5ZdaQGKiRZaStRcZ8fMATfG35GjYRbDX5oq EgxP7xCIU5uBzvZGsWke6jYbxvodJQYSdhNKl4Ta0J4YHATXnJgiPgo58OCSxY+I+1eV RfKjoBBInGYipq9cVsn4tMFaNQxeccHuEQBzuzXUit1h+hCZVZTPR8tcM07qT4Fx2sWs 9/QA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=qgnwzBVA; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id d31si10237525pld.248.2019.06.17.05.28.09 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=qgnwzBVA; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=uSjp1MI0/DxR5xPXt73Wodait3XTLM3SgT/b55inJKw=; b=qgnwzBVAM+YfsPgl6+X6TbbF07 np3jaACyDrf8sNmktsLdcgBaaniAVDeCLEeQ1gpYchqPIqHg4ak6NXvf2IJbGFdSl4aCzlD/6OUh3 tSYPKbtPsWfr38tg5LTwBSiIUlRVqlIw2ifK+8dcXBt4+cgCEG+ciSFR6zQN1YKLVc6VqF892bUfL LSQ0uCxY4lml+pzKNaVcoXiUAwilJZgRIFAbn91YKF5rn2p9b24wvcEy3iBEwf8p8r9baGeuEL0MJ MKm42Vy8pvrogb7MNbe7XgcEEeT4QghjEE4XfaQ19W2XHXBi3YlixlAfVU0is7KKYc9tryjtzxtyz QAiVkQmQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqk2-0000Dt-40; Mon, 17 Jun 2019 12:28:06 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 13/25] memremap: replace the altmap_valid field with a PGMAP_ALTMAP_VALID flag Date: Mon, 17 Jun 2019 14:27:21 +0200 Message-Id: <20190617122733.22432-14-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP Add a flags field to struct dev_pagemap to replace the altmap_valid boolean to be a little more extensible. Also add a pgmap_altmap() helper to find the optional altmap and clean up the code using the altmap using it. Signed-off-by: Christoph Hellwig --- arch/powerpc/mm/mem.c | 10 +--------- arch/x86/mm/init_64.c | 8 ++------ drivers/nvdimm/pfn_devs.c | 3 +-- drivers/nvdimm/pmem.c | 1 - include/linux/memremap.h | 12 +++++++++++- kernel/memremap.c | 26 ++++++++++---------------- mm/hmm.c | 1 - mm/memory_hotplug.c | 6 ++---- mm/page_alloc.c | 5 ++--- 9 files changed, 29 insertions(+), 43 deletions(-) diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index cba29131bccc..f774d80df025 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -131,17 +131,9 @@ void __ref arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct page *page; + struct page *page = pfn_to_page(start_pfn) + vmem_altmap_offset(altmap); int ret; - /* - * If we have an altmap then we need to skip over any reserved PFNs - * when querying the zone. - */ - page = pfn_to_page(start_pfn); - if (altmap) - page += vmem_altmap_offset(altmap); - __remove_pages(page_zone(page), start_pfn, nr_pages, altmap); /* Remove htab bolted mappings for this section of memory */ diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 693aaf28d5fe..3139e992ef9d 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -1211,13 +1211,9 @@ void __ref arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct page *page = pfn_to_page(start_pfn); - struct zone *zone; + struct page *page = pfn_to_page(start_pfn) + vmem_altmap_offset(altmap); + struct zone *zone = page_zone(page); - /* With altmap the first mapped page is offset from @start */ - if (altmap) - page += vmem_altmap_offset(altmap); - zone = page_zone(page); __remove_pages(zone, start_pfn, nr_pages, altmap); kernel_physical_mapping_remove(start, start + size); } diff --git a/drivers/nvdimm/pfn_devs.c b/drivers/nvdimm/pfn_devs.c index 01f40672507f..24924a442129 100644 --- a/drivers/nvdimm/pfn_devs.c +++ b/drivers/nvdimm/pfn_devs.c @@ -630,7 +630,6 @@ static int __nvdimm_setup_pfn(struct nd_pfn *nd_pfn, struct dev_pagemap *pgmap) if (offset < reserve) return -EINVAL; nd_pfn->npfns = le64_to_cpu(pfn_sb->npfns); - pgmap->altmap_valid = false; } else if (nd_pfn->mode == PFN_MODE_PMEM) { nd_pfn->npfns = PFN_SECTION_ALIGN_UP((resource_size(res) - offset) / PAGE_SIZE); @@ -642,7 +641,7 @@ static int __nvdimm_setup_pfn(struct nd_pfn *nd_pfn, struct dev_pagemap *pgmap) memcpy(altmap, &__altmap, sizeof(*altmap)); altmap->free = PHYS_PFN(offset - reserve); altmap->alloc = 0; - pgmap->altmap_valid = true; + pgmap->flags |= PGMAP_ALTMAP_VALID; } else return -ENXIO; diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 1ff4b1c4c7c3..7c3d388cf2f7 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -420,7 +420,6 @@ static int pmem_attach_disk(struct device *dev, bb_res.start += pmem->data_offset; } else if (pmem_should_map_pages(dev)) { memcpy(&pmem->pgmap.res, &nsio->res, sizeof(pmem->pgmap.res)); - pmem->pgmap.altmap_valid = false; pmem->pgmap.type = MEMORY_DEVICE_FS_DAX; pmem->pgmap.ops = &fsdax_pagemap_ops; addr = devm_memremap_pages(dev, &pmem->pgmap); diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 036c637f0150..7289eb091b04 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -88,6 +88,8 @@ struct dev_pagemap_ops { vm_fault_t (*migrate_to_ram)(struct vm_fault *vmf); }; +#define PGMAP_ALTMAP_VALID (1 << 0) + /** * struct dev_pagemap - metadata for ZONE_DEVICE mappings * @altmap: pre-allocated/reserved memory for vmemmap allocations @@ -96,19 +98,27 @@ struct dev_pagemap_ops { * @dev: host device of the mapping for debug * @data: private data pointer for page_free() * @type: memory type: see MEMORY_* in memory_hotplug.h + * @flags: PGMAP_* flags to specify defailed behavior * @ops: method table */ struct dev_pagemap { struct vmem_altmap altmap; - bool altmap_valid; struct resource res; struct percpu_ref *ref; struct device *dev; enum memory_type type; + unsigned int flags; u64 pci_p2pdma_bus_offset; const struct dev_pagemap_ops *ops; }; +static inline struct vmem_altmap *pgmap_altmap(struct dev_pagemap *pgmap) +{ + if (pgmap->flags & PGMAP_ALTMAP_VALID) + return &pgmap->altmap; + return NULL; +} + #ifdef CONFIG_ZONE_DEVICE void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap); void devm_memunmap_pages(struct device *dev, struct dev_pagemap *pgmap); diff --git a/kernel/memremap.c b/kernel/memremap.c index 9dd5ccdb1adb..b41d98a64ebf 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -54,14 +54,8 @@ static void pgmap_array_delete(struct resource *res) static unsigned long pfn_first(struct dev_pagemap *pgmap) { - const struct resource *res = &pgmap->res; - struct vmem_altmap *altmap = &pgmap->altmap; - unsigned long pfn; - - pfn = res->start >> PAGE_SHIFT; - if (pgmap->altmap_valid) - pfn += vmem_altmap_offset(altmap); - return pfn; + return (pgmap->res.start >> PAGE_SHIFT) + + vmem_altmap_offset(pgmap_altmap(pgmap)); } static unsigned long pfn_end(struct dev_pagemap *pgmap) @@ -109,7 +103,7 @@ static void devm_memremap_pages_release(void *data) align_size >> PAGE_SHIFT, NULL); } else { arch_remove_memory(nid, align_start, align_size, - pgmap->altmap_valid ? &pgmap->altmap : NULL); + pgmap_altmap(pgmap)); kasan_remove_zero_shadow(__va(align_start), align_size); } mem_hotplug_done(); @@ -129,8 +123,8 @@ static void devm_memremap_pages_release(void *data) * 1/ At a minimum the res, ref and type and ops members of @pgmap must be * initialized by the caller before passing it to this function * - * 2/ The altmap field may optionally be initialized, in which case altmap_valid - * must be set to true + * 2/ The altmap field may optionally be initialized, in which case + * PGMAP_ALTMAP_VALID must be set in pgmap->flags. * * 3/ pgmap->ref must be 'live' on entry and will be killed and reaped * at devm_memremap_pages_release() time, or if this routine fails. @@ -142,15 +136,13 @@ static void devm_memremap_pages_release(void *data) void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) { resource_size_t align_start, align_size, align_end; - struct vmem_altmap *altmap = pgmap->altmap_valid ? - &pgmap->altmap : NULL; struct resource *res = &pgmap->res; struct dev_pagemap *conflict_pgmap; struct mhp_restrictions restrictions = { /* * We do not want any optional features only our own memmap */ - .altmap = altmap, + .altmap = pgmap_altmap(pgmap), }; pgprot_t pgprot = PAGE_KERNEL; int error, nid, is_ram; @@ -277,7 +269,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) zone = &NODE_DATA(nid)->node_zones[ZONE_DEVICE]; move_pfn_range_to_zone(zone, align_start >> PAGE_SHIFT, - align_size >> PAGE_SHIFT, altmap); + align_size >> PAGE_SHIFT, pgmap_altmap(pgmap)); } mem_hotplug_done(); @@ -322,7 +314,9 @@ EXPORT_SYMBOL_GPL(devm_memunmap_pages); unsigned long vmem_altmap_offset(struct vmem_altmap *altmap) { /* number of pfns from base where pfn_to_page() is valid */ - return altmap->reserve + altmap->free; + if (altmap) + return altmap->reserve + altmap->free; + return 0; } void vmem_altmap_free(struct vmem_altmap *altmap, unsigned long nr_pfns) diff --git a/mm/hmm.c b/mm/hmm.c index 8a0e04bbeee6..307c12d7531c 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1439,7 +1439,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; devmem->pagemap.res = *devmem->resource; devmem->pagemap.ops = &hmm_pagemap_ops; - devmem->pagemap.altmap_valid = false; devmem->pagemap.ref = &devmem->ref; result = devm_memremap_pages(devmem->device, &devmem->pagemap); diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index e096c987d261..6166ba5a15f3 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -557,10 +557,8 @@ void __remove_pages(struct zone *zone, unsigned long phys_start_pfn, int sections_to_remove; /* In the ZONE_DEVICE case device driver owns the memory region */ - if (is_dev_zone(zone)) { - if (altmap) - map_offset = vmem_altmap_offset(altmap); - } + if (is_dev_zone(zone)) + map_offset = vmem_altmap_offset(altmap); clear_zone_contiguous(zone); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d66bc8abe0af..17a39d40a556 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5853,6 +5853,7 @@ void __ref memmap_init_zone_device(struct zone *zone, { unsigned long pfn, end_pfn = start_pfn + size; struct pglist_data *pgdat = zone->zone_pgdat; + struct vmem_altmap *altmap = pgmap_altmap(pgmap); unsigned long zone_idx = zone_idx(zone); unsigned long start = jiffies; int nid = pgdat->node_id; @@ -5865,9 +5866,7 @@ void __ref memmap_init_zone_device(struct zone *zone, * of the pages reserved for the memmap, so we can just jump to * the end of that region and start processing the device pages. */ - if (pgmap->altmap_valid) { - struct vmem_altmap *altmap = &pgmap->altmap; - + if (altmap) { start_pfn = altmap->base_pfn + vmem_altmap_offset(altmap); size = end_pfn - start_pfn; } From patchwork Mon Jun 17 12:27:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999045 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CA93014B6 for ; Mon, 17 Jun 2019 12:28:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BACE01FF0B for ; Mon, 17 Jun 2019 12:28:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AF47A285A3; Mon, 17 Jun 2019 12:28:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 09CAD1FF0B for ; Mon, 17 Jun 2019 12:28:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B6788E0011; Mon, 17 Jun 2019 08:28:13 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 18F0C8E000B; Mon, 17 Jun 2019 08:28:13 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 056878E0011; Mon, 17 Jun 2019 08:28:13 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by kanga.kvack.org (Postfix) with ESMTP id C3E348E000B for ; Mon, 17 Jun 2019 08:28:12 -0400 (EDT) Received: by mail-pg1-f200.google.com with SMTP id c18so7675033pgk.2 for ; Mon, 17 Jun 2019 05:28:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=GlNxVMm8W4O5v065JMNFU6bkRl3AbEbXSnrBr8peAhc=; b=uL8NUXMiHdoL0XUr+wGAiAaPqpQL3dCL1Ko2/LBtvCO2JQsFEONnZ3SkeO6OXyQqrP SnaNsWp1TyvXBacVeYDgv7gidSEZzr/K/fC2v8QKlTbfYor8vGZKjk8qxoLC484/KppE +yfVjxzscH4iu2TAJbbsJLcF5VepCwM9PVwuoQ1A5fFXWiP+gfKMp2wOJ/tqmmfzvPtl Mei72x1PHn/rnWB4oU3bBRUtqyLuBmxTQcYNJAoYI8Y1qzTA6Sj16srnPBW6AgralJeT hpYOK6yCLfiHd4siY2BysoUJmM1EljVR/Syf2oA+A9IW4k7iLeZxCvSA9gb2ZMiroryc A9Eg== X-Gm-Message-State: APjAAAVGa4aIuTWbBYoCUKNtKmjvHeucdRccv0+bzguGQrrgBwAcGlnm G6IUuQ/D7xCloaX6OkaNweRRDGTgWTmQdMX2GjfBMMIFaFXJQzjdVdgXUuZu5FfDMjSWWHILslL zy7Mbe+6jBj5arKxXRFMi4/Lk618dUhvZpYsgmljXi92yLIRC5szcPNg1C5iYVIA= X-Received: by 2002:a62:ce4f:: with SMTP id y76mr30447961pfg.21.1560774492405; Mon, 17 Jun 2019 05:28:12 -0700 (PDT) X-Google-Smtp-Source: APXvYqx4Kw5irBbvopBWrbsOwD34nSjc2zHrH9Axr5+QgUwHDyTOx+phbtAkEH9+bqY9z7Fa5Owd X-Received: by 2002:a62:ce4f:: with SMTP id y76mr30447914pfg.21.1560774491491; Mon, 17 Jun 2019 05:28:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774491; cv=none; d=google.com; s=arc-20160816; b=lIXdhI6+7EwmRDmEf+QUUCLh57Vh5rMb2NBccKIFs2wOJVIe5MoDzwVYgSmOX/c/lC v1uzCQsU3tNF4BHxuebaMyeEkY/c9HI3Le/Pli9os/Cyoob4QvlBSMbqJ29lkZjkQSkn WdEmXDIoqQNpfuJSMVKh0RXkPLsZ6Vr4k8GT9vbD17wvHKJdFLSxRgGtZ1IeYG49Rv8X lh6em34L4XEG4PGcRXF+kfjicQAWkM9wkiJPD5A74Lwc4m0vV0cCXkDxiHMt4wbHQYlY YC5CZib1naQcTkl9H9MbzMytEYyBqczkmRa8uXcCbYCvbEQxenCtroH+Lzaz8beT+F0z ZYig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=GlNxVMm8W4O5v065JMNFU6bkRl3AbEbXSnrBr8peAhc=; b=s+T3jxOEe5261bUObdE6f2OX45KC5rI3qogYZLNPes3CTlNgatc9C9jXzMf4hW9C9w IdNiL8E++n7dTYjXyn59Pj55O0pBdoHaM91DxQpDrazn0zKAEf0hHyvnogXDr5B4RmM5 wsp3q8vDeAi47jDSgryqgbMxohgajHcmljVP+Cj1RY6ASGUfWjV+E6GEJnP2BheoQCsE zoBtrP48Bo1ObTNM+XL1uSIxzIgiYcqO+yi827Qphu0pFROs1rytGvpVxY2aKA6qdqhq nRo+GB2WvCeO8e2p0UDq4fYeSZO0VoOu5dzrC2ZV0LT8jf7uJejAtioMAp3k7JZLRVCn ul4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=hceq9aC6; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id k15si10763225pgh.331.2019.06.17.05.28.11 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:11 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=hceq9aC6; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=GlNxVMm8W4O5v065JMNFU6bkRl3AbEbXSnrBr8peAhc=; b=hceq9aC6tJ73idi0gys5khCNkb 4oa/Hc09tP2sutmhvsQMCCgbZeQ65RgYiliHtKl5ES7k4PIx5QoJOmP158XuVwgiaDMwakShQWbmE 2BQA9YBQorrWSgUr5kX4t9vAcPMRIvxeaD7vV44sRG6NUoWodLAfV48Htg6MQ2WO2MAtKlChRMtf5 wCam1QxlrgXhMZA6F9p2gc2Ek7aGGPTwazLl9Df998k9Zp7cthixwUdhiZdLy/lL4lTfdFLHfTxA4 MgbRgO934AqctA5SWdhgmmfrTW0+igprb3FsAQeA/tukrmljjK2fU4vyzRWkn67p8G3T2FPFSv6xF 0pBQDtSw==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqk4-0000Ep-9f; Mon, 17 Jun 2019 12:28:08 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 14/25] memremap: provide an optional internal refcount in struct dev_pagemap Date: Mon, 17 Jun 2019 14:27:22 +0200 Message-Id: <20190617122733.22432-15-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP Provide an internal refcounting logic if no ->ref field is provided in the pagemap passed into devm_memremap_pages so that callers don't have to reinvent it poorly. Signed-off-by: Christoph Hellwig --- include/linux/memremap.h | 4 ++ kernel/memremap.c | 64 ++++++++++++++++++++++++------- tools/testing/nvdimm/test/iomap.c | 17 ++++++-- 3 files changed, 68 insertions(+), 17 deletions(-) diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 7289eb091b04..7e0f072ddce7 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -95,6 +95,8 @@ struct dev_pagemap_ops { * @altmap: pre-allocated/reserved memory for vmemmap allocations * @res: physical address range covered by @ref * @ref: reference count that pins the devm_memremap_pages() mapping + * @internal_ref: internal reference if @ref is not provided by the caller + * @done: completion for @internal_ref * @dev: host device of the mapping for debug * @data: private data pointer for page_free() * @type: memory type: see MEMORY_* in memory_hotplug.h @@ -105,6 +107,8 @@ struct dev_pagemap { struct vmem_altmap altmap; struct resource res; struct percpu_ref *ref; + struct percpu_ref internal_ref; + struct completion done; struct device *dev; enum memory_type type; unsigned int flags; diff --git a/kernel/memremap.c b/kernel/memremap.c index b41d98a64ebf..60693a1e8e92 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -29,7 +29,7 @@ static void dev_pagemap_put_ops(void *data) static int dev_pagemap_get_ops(struct device *dev, struct dev_pagemap *pgmap) { - if (!pgmap->ops->page_free) { + if (!pgmap->ops || !pgmap->ops->page_free) { WARN(1, "Missing page_free method\n"); return -EINVAL; } @@ -75,6 +75,24 @@ static unsigned long pfn_next(unsigned long pfn) #define for_each_device_pfn(pfn, map) \ for (pfn = pfn_first(map); pfn < pfn_end(map); pfn = pfn_next(pfn)) +static void dev_pagemap_kill(struct dev_pagemap *pgmap) +{ + if (pgmap->ops && pgmap->ops->kill) + pgmap->ops->kill(pgmap); + else + percpu_ref_kill(pgmap->ref); +} + +static void dev_pagemap_cleanup(struct dev_pagemap *pgmap) +{ + if (pgmap->ops && pgmap->ops->cleanup) { + pgmap->ops->cleanup(pgmap); + } else { + wait_for_completion(&pgmap->done); + percpu_ref_exit(pgmap->ref); + } +} + static void devm_memremap_pages_release(void *data) { struct dev_pagemap *pgmap = data; @@ -84,10 +102,10 @@ static void devm_memremap_pages_release(void *data) unsigned long pfn; int nid; - pgmap->ops->kill(pgmap); + dev_pagemap_kill(pgmap); for_each_device_pfn(pfn, pgmap) put_page(pfn_to_page(pfn)); - pgmap->ops->cleanup(pgmap); + dev_pagemap_cleanup(pgmap); /* pages are dead and unused, undo the arch mapping */ align_start = res->start & ~(SECTION_SIZE - 1); @@ -114,20 +132,29 @@ static void devm_memremap_pages_release(void *data) "%s: failed to free all reserved pages\n", __func__); } +static void dev_pagemap_percpu_release(struct percpu_ref *ref) +{ + struct dev_pagemap *pgmap = + container_of(ref, struct dev_pagemap, internal_ref); + + complete(&pgmap->done); +} + /** * devm_memremap_pages - remap and provide memmap backing for the given resource * @dev: hosting device for @res * @pgmap: pointer to a struct dev_pagemap * * Notes: - * 1/ At a minimum the res, ref and type and ops members of @pgmap must be - * initialized by the caller before passing it to this function + * 1/ At a minimum the res and type members of @pgmap must be initialized + * by the caller before passing it to this function * * 2/ The altmap field may optionally be initialized, in which case * PGMAP_ALTMAP_VALID must be set in pgmap->flags. * - * 3/ pgmap->ref must be 'live' on entry and will be killed and reaped - * at devm_memremap_pages_release() time, or if this routine fails. + * 3/ The ref field may optionally be provided, in which pgmap->ref must be + * 'live' on entry and will be killed and reaped at + * devm_memremap_pages_release() time, or if this routine fails. * * 4/ res is expected to be a host memory range that could feasibly be * treated as a "System RAM" range, i.e. not a device mmio range, but @@ -178,10 +205,21 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) break; } - if (!pgmap->ref || !pgmap->ops || !pgmap->ops->kill || - !pgmap->ops->cleanup) { - WARN(1, "Missing reference count teardown definition\n"); - return ERR_PTR(-EINVAL); + if (!pgmap->ref) { + if (pgmap->ops && (pgmap->ops->kill || pgmap->ops->cleanup)) + return ERR_PTR(-EINVAL); + + init_completion(&pgmap->done); + error = percpu_ref_init(&pgmap->internal_ref, + dev_pagemap_percpu_release, 0, GFP_KERNEL); + if (error) + return ERR_PTR(error); + pgmap->ref = &pgmap->internal_ref; + } else { + if (!pgmap->ops || !pgmap->ops->kill || !pgmap->ops->cleanup) { + WARN(1, "Missing reference count teardown definition\n"); + return ERR_PTR(-EINVAL); + } } if (pgmap->type != MEMORY_DEVICE_PCI_P2PDMA) { @@ -299,8 +337,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) err_pfn_remap: pgmap_array_delete(res); err_array: - pgmap->ops->kill(pgmap); - pgmap->ops->cleanup(pgmap); + dev_pagemap_kill(pgmap); + dev_pagemap_cleanup(pgmap); return ERR_PTR(error); } EXPORT_SYMBOL_GPL(devm_memremap_pages); diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index 3a1fa7735f47..8cd9b9873a7f 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -106,10 +106,19 @@ EXPORT_SYMBOL(__wrap_devm_memremap); static void nfit_test_kill(void *_pgmap) { - WARN_ON(!pgmap || !pgmap->ref || !pgmap->ops->kill || - !pgmap->ops->cleanup); - pgmap->ops->kill(pgmap); - pgmap->ops->cleanup(pgmap); + WARN_ON(!pgmap || !pgmap->ref) + + if (pgmap->ops && pgmap->ops->kill) + pgmap->ops->kill(pgmap); + else + percpu_ref_kill(pgmap->ref); + + if (pgmap->ops && pgmap->ops->cleanup) { + pgmap->ops->cleanup(pgmap); + } else { + wait_for_completion(&pgmap->done); + percpu_ref_exit(pgmap->ref); + } } void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) From patchwork Mon Jun 17 12:27:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999053 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6650F14C0 for ; Mon, 17 Jun 2019 12:28:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 572991FF0B for ; Mon, 17 Jun 2019 12:28:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4B72527480; Mon, 17 Jun 2019 12:28:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CF60E285A3 for ; Mon, 17 Jun 2019 12:28:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8E17A8E0012; Mon, 17 Jun 2019 08:28:14 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 86A778E000B; Mon, 17 Jun 2019 08:28:14 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7583F8E0012; Mon, 17 Jun 2019 08:28:14 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by kanga.kvack.org (Postfix) with ESMTP id 3DF2A8E000B for ; Mon, 17 Jun 2019 08:28:14 -0400 (EDT) Received: by mail-pf1-f200.google.com with SMTP id x9so6951129pfm.16 for ; Mon, 17 Jun 2019 05:28:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=WoytrCxG5kt017Mi4r+qftdCcpzSPco9CT8jAnxV7AA=; b=KKO/pjSav8HJWv8JfaRuPM4EsyB6gQj9VH6me8vGxUXeFlUECtl+kb/eBTth6N7GVV o1vQy6eqZTB/coFKP2JiJioBTZzpdIci5lzOkR49Ukud+dQDW6xkwHdwblXsmKiBkfVq WNlmSSjl+Nd5VH/iG+JCz68itFzo5GSyVosJrdJHTYWibCUT35hC5xdtXQV2k5jdfSUK r1VYsaNBGG7rQipN0/c2ShUyXgnhrZkkupG3U3T6UpaY6eTDK6EkZjoHHFdpAs63gop3 QLqInXzHSHn7aB2iOnKSql8SDDbc0SONUNpSAv6nW68BzCBA8MGsSFgGhlzZc+j1dUFZ /skg== X-Gm-Message-State: APjAAAWVWbJzTqGjxnNkoSqWX0+O5+H4rJ4uQ9pjHbBLXtP5KCPPrjnV 2kh/8Rw747s/O/16o0JvUNVp4nfV0HQi+KpZhjpVN926R2cS+8ugdCMT2oo8iiK+2gXIuJLkZRE pSPqtepEe5ueeFgiXsUDGcDmd5TypcdqX7Er6y1UuHjHab6ArUWb8PjmoYFdMGY0= X-Received: by 2002:a17:90a:9905:: with SMTP id b5mr3185141pjp.70.1560774493906; Mon, 17 Jun 2019 05:28:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqwiDG+EBFcP59oC/dXbSIcveXAcv5VNxY4iUfg8uplE4Kf3Vk+wPuso4gTJzSvhI7eHtPfe X-Received: by 2002:a17:90a:9905:: with SMTP id b5mr3185111pjp.70.1560774493264; Mon, 17 Jun 2019 05:28:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774493; cv=none; d=google.com; s=arc-20160816; b=ZZSFH3gJ74m9dvIrxyVxsgEadVUhQsqaQgNqHeaWHbsedfufZ0gYw6GL0xeXY7ZDZq VHkd/VtkdnyvWfhg4QfQZyG8bszRcS+MlALlb2/UIWb4aleTu1rvz/3Ko9Ar8YOe2Vec 3oHKHkab6vj73AtIMPT7Sc1Iphk07y7iN42/yFtBUm2KpMXNKz5FVBWCxGbtBhc7A3u7 tz+bGOJzAFXUyE7tpOWWrN74AiGpwTrdCkcmAcGyhBlmA/kh5uNqpFf88M/RtdMDtsMV j7NHLkccbPlYNvNJEyt7iess/OolFrYGVE+a8ysguTGX95cl+SSgsHYq7tHdKsN3scqn fdfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=WoytrCxG5kt017Mi4r+qftdCcpzSPco9CT8jAnxV7AA=; b=meeIsSeeRuHFb76jzGt1LdgkTZqsMBCTcMfFgGeMTtZcrZNzMlJ1sDqZ2ZNVuEXu1U i+aIfV7iQXC37iC0jX/pQHMuBkzpVFPe6aTYOiZz7H/ou+MjyuPkAQI6i4vIzQoDMdMF R5bS/PopErz0JCX6eovJldxc2zwhq6EEdMLWdw5gaSH7cYiSQF75MUHmPBg+ZOcMTAAO KJiRkcNabUyL7IRa/S+V+GU0jGwPI4o//pqERmGzIUatX4zHojKEPRQdlYWYoRaJx40G yR1JTVAszzn7SfSThMp7hRc4TpSTFQtuPGD/Pi3+/oGbpyj/8tqbutvdTu7uQmkVhRVv i7IQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=cfjnQSuk; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id y7si10419609pfm.262.2019.06.17.05.28.13 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=cfjnQSuk; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=WoytrCxG5kt017Mi4r+qftdCcpzSPco9CT8jAnxV7AA=; b=cfjnQSuk0OePqkBqt1Zoo6BJSv YWzVaKyyvXJvGwKvelhIJkGt4h1MS45yu0wtaVOrOQWYQW9eQdRpwlluWo02xjodmYnwZgSZZt8+1 jzywQKVxgLg1An5u3r79qC0eTU+LiFdbrO0B+smIqOb9mh1Yv64a7TiGQAYJn6+yuTiEu6beGOzX4 PblogVq3IxXTL4MGO1JlQa7eryDUGRdrwy+ePIEKe0/njOwiXsi5TDAP2I6bETcHeOvI5IfFmsXAV It0kb/wuRPja6yBoYSJjboYG1k7cI0Koq9jvoZvICMYV+7UkSgs7yAO310r+FQswO/ZeVYTphiBrn eZrWu20w==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqk6-0000Fs-Fr; Mon, 17 Jun 2019 12:28:10 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 15/25] device-dax: use the dev_pagemap internal refcount Date: Mon, 17 Jun 2019 14:27:23 +0200 Message-Id: <20190617122733.22432-16-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP The functionality is identical to the one currently open coded in device-dax. Signed-off-by: Christoph Hellwig Signed-off-by: Dan Williams --- drivers/dax/dax-private.h | 4 ---- drivers/dax/device.c | 43 --------------------------------------- 2 files changed, 47 deletions(-) diff --git a/drivers/dax/dax-private.h b/drivers/dax/dax-private.h index a45612148ca0..ed04a18a35be 100644 --- a/drivers/dax/dax-private.h +++ b/drivers/dax/dax-private.h @@ -51,8 +51,6 @@ struct dax_region { * @target_node: effective numa node if dev_dax memory range is onlined * @dev - device core * @pgmap - pgmap for memmap setup / lifetime (driver owned) - * @ref: pgmap reference count (driver owned) - * @cmp: @ref final put completion (driver owned) */ struct dev_dax { struct dax_region *region; @@ -60,8 +58,6 @@ struct dev_dax { int target_node; struct device dev; struct dev_pagemap pgmap; - struct percpu_ref ref; - struct completion cmp; }; static inline struct dev_dax *to_dev_dax(struct device *dev) diff --git a/drivers/dax/device.c b/drivers/dax/device.c index 17b46c1a76b4..a9d7c90ecf1e 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -14,36 +14,6 @@ #include "dax-private.h" #include "bus.h" -static struct dev_dax *ref_to_dev_dax(struct percpu_ref *ref) -{ - return container_of(ref, struct dev_dax, ref); -} - -static void dev_dax_percpu_release(struct percpu_ref *ref) -{ - struct dev_dax *dev_dax = ref_to_dev_dax(ref); - - dev_dbg(&dev_dax->dev, "%s\n", __func__); - complete(&dev_dax->cmp); -} - -static void dev_dax_percpu_exit(struct dev_pagemap *pgmap) -{ - struct dev_dax *dev_dax = container_of(pgmap, struct dev_dax, pgmap); - - dev_dbg(&dev_dax->dev, "%s\n", __func__); - wait_for_completion(&dev_dax->cmp); - percpu_ref_exit(pgmap->ref); -} - -static void dev_dax_percpu_kill(struct dev_pagemap *pgmap) -{ - struct dev_dax *dev_dax = container_of(pgmap, struct dev_dax, pgmap); - - dev_dbg(&dev_dax->dev, "%s\n", __func__); - percpu_ref_kill(pgmap->ref); -} - static int check_vma(struct dev_dax *dev_dax, struct vm_area_struct *vma, const char *func) { @@ -441,11 +411,6 @@ static void dev_dax_kill(void *dev_dax) kill_dev_dax(dev_dax); } -static const struct dev_pagemap_ops dev_dax_pagemap_ops = { - .kill = dev_dax_percpu_kill, - .cleanup = dev_dax_percpu_exit, -}; - int dev_dax_probe(struct device *dev) { struct dev_dax *dev_dax = to_dev_dax(dev); @@ -463,14 +428,6 @@ int dev_dax_probe(struct device *dev) return -EBUSY; } - init_completion(&dev_dax->cmp); - rc = percpu_ref_init(&dev_dax->ref, dev_dax_percpu_release, 0, - GFP_KERNEL); - if (rc) - return rc; - - dev_dax->pgmap.ref = &dev_dax->ref; - dev_dax->pgmap.ops = &dev_dax_pagemap_ops; addr = devm_memremap_pages(dev, &dev_dax->pgmap); if (IS_ERR(addr)) return PTR_ERR(addr); From patchwork Mon Jun 17 12:27:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999059 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B3EAA14B6 for ; Mon, 17 Jun 2019 12:28:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A64481FF0B for ; Mon, 17 Jun 2019 12:28:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9A7E92881A; Mon, 17 Jun 2019 12:28:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 165621FF0B for ; Mon, 17 Jun 2019 12:28:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 55EB68E0013; Mon, 17 Jun 2019 08:28:18 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 50F288E000B; Mon, 17 Jun 2019 08:28:18 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3D65E8E0013; Mon, 17 Jun 2019 08:28:18 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by kanga.kvack.org (Postfix) with ESMTP id 02DA98E000B for ; Mon, 17 Jun 2019 08:28:18 -0400 (EDT) Received: by mail-pg1-f200.google.com with SMTP id a21so7650825pgh.11 for ; Mon, 17 Jun 2019 05:28:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=bqNW86dzEIGFtFX91S0QfixvDgbjQWnIT6qUU0eVEH4=; b=bbRxvwUZBnYkuy3b3gk5JBBcpTeig+VyjeSyPHPnqs14sS93OukhPkOm4TRvvetRe0 RrwpJQTX63fjrnKmp0zCmzdXuPUdkWP86yC9Wk9UeTbwIo5KtWX0VMrSpWkXzjIPJDl3 ZiM8k+/HuGarYhP3CwkwZPuoPFv/mwWHSGgC37f8zJ3jGhw5W6M6eH7SQ6ctVP/KfMhG PHSKtxVr2R3i9ZVnKyenWMxc7OQdYwTKqpt7ARO4zQkvpiS4xFjLCOT/2JbhLSYtzDiD 0J/21Xj5WIKgh4hD7F3himZcDo1/pYgePPZirg3yuzsD08Y/LWs1YiZT8b7g+1kYLqNI Q7cQ== X-Gm-Message-State: APjAAAVEJ8iLaQNIOPki1G7ZvRaHtVzmguSCtUS8tC88B0AHifzDD78B qcN6YKedNZItMOyqsHbGcqmILYCQ4kh8UBjqteu929TlpHSjfXNhEr/i+B+f5DHw87JBUGxUYGE bkomvMA5dC9u5uswc2z1RX8qxTDrqKIKKVWohzkXDcgEdcZuYV9arze0/aODA8vg= X-Received: by 2002:a63:6a47:: with SMTP id f68mr30230491pgc.230.1560774497598; Mon, 17 Jun 2019 05:28:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqzCusz5B3pyoLEKyBvXGROOSqqavVbJQPik6HYMZWSSFEkzzrikvknQefYIGCL4vzV3Mk2M X-Received: by 2002:a63:6a47:: with SMTP id f68mr30230444pgc.230.1560774496511; Mon, 17 Jun 2019 05:28:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774496; cv=none; d=google.com; s=arc-20160816; b=YdXInO0qeKenOxKONvNDJgS62X8FWjDKm4pRRCGYHVDKdnmyHaenNyeu06S6fP984i lm33ybtHuZxZ/m/BdFsKuhuqpJMe9FvcaIYbc0rpuOh3r3FRlZCumZHZW3X2HN8f1oqV YH5LzhHzkv/4SQ4ew8nfCyfGdazahnQwJ+illTQoLEQDBFYVmxtB8quxcZQ9BH5S/591 6o0tC/V3bf5CR+2wspatt4n/eQT12t5SwImJ2M6MPLCmDMeSHE1FJ4KdTFRm4VRTXhiV nERm9YzLfeytyM1LO7PRlUT0ir0g1AND0EoRfHg1bKZmsknMARha1TE9q1WSbOTB9C6g OjvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=bqNW86dzEIGFtFX91S0QfixvDgbjQWnIT6qUU0eVEH4=; b=vHYJWV/v2GcntjBTNEyi813LaAXNlVGSbhXsp5UojF620cflg+EuE5sk0JQUUAHPl2 aAtn44Df5bqXHWUNRciMuE69z0rSHqaRIQPrYy7PScNB/NBss2xf9EL91qv37LBEPU0D KmV2fbHFy7WgfVdaVDSK0i5DRdBQKD0G8tq3MKUb98x52qhtEaklagTWM+AQcFw4etNp sYDpcjNwc+wHO/gXIHtlyIhuM5k5VBXt83QOWTHBhKu4CSrdJNWpJY0B+3arbcXzUz77 A5fu+VEt7SbHuyvxhjKTrl67FEsbZ5xO0/nUaeNHRCJ/CUCoeyYamgl9CU10XbKROR7P uffA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=WuL0DYWb; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id d191si10392726pgc.460.2019.06.17.05.28.16 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:16 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=WuL0DYWb; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=bqNW86dzEIGFtFX91S0QfixvDgbjQWnIT6qUU0eVEH4=; b=WuL0DYWbzTX1df3odeTY431W11 U+IcQwoSHpIn1fMOzejiKLQ4T8swbios1PHMUkKcA2qDdFfDiObZfLsILw7OcEJxSkmTjZINPR6Ex JU5UL9obm/Ujq0gzLG5GLwV6DXCHwO9XcVhmV5JdSTTENkyBGpYwzs9vK4bZgbYpWH0X2uxeezDtb zTKdJMavLuTl530T4mh89YjZh7oD2lAFwjczLk5AV3FaKTfWD1grijdKZyC4ZIwEVCxgVy3oz5n7T RBeVOLMjWP1rN6VKNGoDkd/NFq1PppJFQffAUKysbEbgpOzqWo2a2uIJuDwVJADkhF56XaEwfYDf2 sPXWKLLg==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqk8-0000Gn-Ll; Mon, 17 Jun 2019 12:28:12 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 16/25] PCI/P2PDMA: use the dev_pagemap internal refcount Date: Mon, 17 Jun 2019 14:27:24 +0200 Message-Id: <20190617122733.22432-17-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP The functionality is identical to the one currently open coded in p2pdma.c. Signed-off-by: Christoph Hellwig Reviewed-by: Logan Gunthorpe --- drivers/pci/p2pdma.c | 56 ++++---------------------------------------- 1 file changed, 4 insertions(+), 52 deletions(-) diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index 48a88158e46a..608f84df604a 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -24,12 +24,6 @@ struct pci_p2pdma { bool p2pmem_published; }; -struct p2pdma_pagemap { - struct dev_pagemap pgmap; - struct percpu_ref ref; - struct completion ref_done; -}; - static ssize_t size_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -78,32 +72,6 @@ static const struct attribute_group p2pmem_group = { .name = "p2pmem", }; -static struct p2pdma_pagemap *to_p2p_pgmap(struct percpu_ref *ref) -{ - return container_of(ref, struct p2pdma_pagemap, ref); -} - -static void pci_p2pdma_percpu_release(struct percpu_ref *ref) -{ - struct p2pdma_pagemap *p2p_pgmap = to_p2p_pgmap(ref); - - complete(&p2p_pgmap->ref_done); -} - -static void pci_p2pdma_percpu_kill(struct dev_pagemap *pgmap) -{ - percpu_ref_kill(pgmap->ref); -} - -static void pci_p2pdma_percpu_cleanup(struct dev_pagemap *pgmap) -{ - struct p2pdma_pagemap *p2p_pgmap = - container_of(pgmap, struct p2pdma_pagemap, pgmap); - - wait_for_completion(&p2p_pgmap->ref_done); - percpu_ref_exit(&p2p_pgmap->ref); -} - static void pci_p2pdma_release(void *data) { struct pci_dev *pdev = data; @@ -153,11 +121,6 @@ static int pci_p2pdma_setup(struct pci_dev *pdev) return error; } -static const struct dev_pagemap_ops pci_p2pdma_pagemap_ops = { - .kill = pci_p2pdma_percpu_kill, - .cleanup = pci_p2pdma_percpu_cleanup, -}; - /** * pci_p2pdma_add_resource - add memory for use as p2p memory * @pdev: the device to add the memory to @@ -171,7 +134,6 @@ static const struct dev_pagemap_ops pci_p2pdma_pagemap_ops = { int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, u64 offset) { - struct p2pdma_pagemap *p2p_pgmap; struct dev_pagemap *pgmap; void *addr; int error; @@ -194,22 +156,12 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, return error; } - p2p_pgmap = devm_kzalloc(&pdev->dev, sizeof(*p2p_pgmap), GFP_KERNEL); - if (!p2p_pgmap) + pgmap = devm_kzalloc(&pdev->dev, sizeof(*pgmap), GFP_KERNEL); + if (!pgmap) return -ENOMEM; - - init_completion(&p2p_pgmap->ref_done); - error = percpu_ref_init(&p2p_pgmap->ref, - pci_p2pdma_percpu_release, 0, GFP_KERNEL); - if (error) - goto pgmap_free; - - pgmap = &p2p_pgmap->pgmap; - pgmap->res.start = pci_resource_start(pdev, bar) + offset; pgmap->res.end = pgmap->res.start + size - 1; pgmap->res.flags = pci_resource_flags(pdev, bar); - pgmap->ref = &p2p_pgmap->ref; pgmap->type = MEMORY_DEVICE_PCI_P2PDMA; pgmap->pci_p2pdma_bus_offset = pci_bus_address(pdev, bar) - pci_resource_start(pdev, bar); @@ -223,7 +175,7 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, error = gen_pool_add_owner(pdev->p2pdma->pool, (unsigned long)addr, pci_bus_address(pdev, bar) + offset, resource_size(&pgmap->res), dev_to_node(&pdev->dev), - &p2p_pgmap->ref); + pgmap->ref); if (error) goto pages_free; @@ -235,7 +187,7 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, pages_free: devm_memunmap_pages(&pdev->dev, pgmap); pgmap_free: - devm_kfree(&pdev->dev, p2p_pgmap); + devm_kfree(&pdev->dev, pgmap); return error; } EXPORT_SYMBOL_GPL(pci_p2pdma_add_resource); From patchwork Mon Jun 17 12:27:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999063 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D713B13AF for ; Mon, 17 Jun 2019 12:28:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C9A9A1FF0B for ; Mon, 17 Jun 2019 12:28:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BD798285A3; Mon, 17 Jun 2019 12:28:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6BF1A1FF0B for ; Mon, 17 Jun 2019 12:28:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B3938E0014; Mon, 17 Jun 2019 08:28:19 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 1652B8E000B; Mon, 17 Jun 2019 08:28:19 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 02C658E0014; Mon, 17 Jun 2019 08:28:18 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by kanga.kvack.org (Postfix) with ESMTP id C2CD88E000B for ; Mon, 17 Jun 2019 08:28:18 -0400 (EDT) Received: by mail-pl1-f200.google.com with SMTP id bb9so5918950plb.2 for ; Mon, 17 Jun 2019 05:28:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=wJ4xmBbrpfmUG188a6jPO21+BmohIhmVPW5AXcG365o=; b=i3N0TrXhisLFTgS+Ij+S9CxTUNP+F1RGCSYfnVv0YRrkoeDWAV0SJLw8/Gjt4bcnG3 3ENMe0zZRXHi8yt9pYytDbwdIDRduqKZHZwOsSIczXK3S7ZxZEIGt+A3PuWDfmrI1D/7 Bzi+79/CYv7fffzVtshhM+1O578en+IMd6b31hv+nJwif2hPjKhdQx7qM/TjZcen8UHa ZN9fLxF47YgT4Ok5/4meKIYs3T7cir8CWDsQIw6S2As/hnzhLqFSvLlQcy9NKg5ZdgEx Z6B2/JTavyCQEmK5QqVu4cvnB6h3rdYyzPXxD+H0Gv3Hqft33osixqa406J1idJ+ZVoI a3Sw== X-Gm-Message-State: APjAAAWN40wIqVuVkTJ5t6AV5b9fePklIYQMESlAUGk4CorXBbEwCbhe 8K8BbaOCsxvFWQiIkj1vG4JqvSo8KteDCZD2QcDlYhzsvckgsRIc5/4PqNp80/I+xjQ/OPFjviP jB1I53yxzyKtdmh+4WAhNrxpkNiIbBLEhHYH9lGKqvrQAta4plRwShuNl3GaO45I= X-Received: by 2002:a17:90a:3585:: with SMTP id r5mr24597549pjb.15.1560774498481; Mon, 17 Jun 2019 05:28:18 -0700 (PDT) X-Google-Smtp-Source: APXvYqyVX0tyQC6/RHV/SFYH/6ZQ9TkAwAhAW3RvqCe17nWCKpCGNKDyJtbYkdVwWEwAjh7k7WLI X-Received: by 2002:a17:90a:3585:: with SMTP id r5mr24597506pjb.15.1560774497842; Mon, 17 Jun 2019 05:28:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774497; cv=none; d=google.com; s=arc-20160816; b=Jhl5K7qgBNx0ESErhsS4QFQJDhBVb2LZKdBXLFRlIyjtFYBwQPImeRGV08lbO7wO8+ E69lPDppSefH52pUjzfcloatKFT+N5OKg2cyfCvdNP+Mj0IyYLgYTPL4mUXGDhySF1d+ VY3w2WLToRbJsrnJbnUFoxKh63T4Az1i/LxZ02+x+SjEjDz8Xv6TOeCOzIKtFAeOhiPy sH5/p5M4QAt90rdtXJeMjpHYPm8xvgmruXUfBrfJjuVm8uv76dXszrO2YffLi+HblpLc WyzDEiea5vnYN9s5FtCYOOiar/tgZRglIfmWJBueaZ2FMJCPZ003t3T5d/RVD1hVMzxM C4MQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=wJ4xmBbrpfmUG188a6jPO21+BmohIhmVPW5AXcG365o=; b=G9yjQQIPErkavKvnOmQSG/sr3b8yxz+Rglbqn6EOHCzcnXRQQpds7SWRqmxcxYXvol Hy53WadqCPDHtMjhGBS5xbANNqcjhVTf2iWxS5w1bECCUidbXMEvI07FCYSLcGuY7uRZ 5EQhT0xwwOhZq0SYWMya2VkEIP5+ZZwVQCKptD0rqqAgVrqteDMiHnaOglTSjwgNkX3M ptAyXwelw+RfwT8mLOKc1pg3LHH68pWTH6eS/NBMkam2VbUWiQoMCI9XElcYp9ZL6l4P HcgBALB7SnR5aNOElXgm7Dgy6kGK1s698fY4RxeSfeKzLz1sEGD7DrCXdCwQ5j6pd7tW wczg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=NvmFARNv; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id g2si3581782plp.1.2019.06.17.05.28.17 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=NvmFARNv; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=wJ4xmBbrpfmUG188a6jPO21+BmohIhmVPW5AXcG365o=; b=NvmFARNv3ttc4OZA1xiWtFgk6o tdVi27VruAOhBspuUA7ohwBhG+sI+yUMmYAM2rIE5UYw1cs2pTWfZ5xIVYWVSXUUYfaE8dtGle2Q+ 38vp2DyzOrGYunTTU5sPPOW1gV+9VLzWPhfKjWesQc1OJz9ey6i02luy1iyDV8NU1UR55DXdLFs9z B9xnWZA1uQSxsPRX5ddbG4TDgFEBCcCk03gT6ou9BHPOe0aifePHXmZwWJ2ck3Ck5I+IpfSXcmFDY +sO1BEfn842pbMLtdEO4fcpFGGwrpdcLeDmymIa1vyB92Bk6rnJwTQxlA1Cs4HiPx7qswZydHD0rW ZXjVyVEQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqkA-0000HW-SJ; Mon, 17 Jun 2019 12:28:15 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 17/25] nouveau: use alloc_page_vma directly Date: Mon, 17 Jun 2019 14:27:25 +0200 Message-Id: <20190617122733.22432-18-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP hmm_vma_alloc_locked_page is scheduled to go away, use the proper mm function directly. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- drivers/gpu/drm/nouveau/nouveau_dmem.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c index 40c47d6a7d78..a50f6fd2fe24 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dmem.c +++ b/drivers/gpu/drm/nouveau/nouveau_dmem.c @@ -148,11 +148,12 @@ nouveau_dmem_fault_alloc_and_copy(struct vm_area_struct *vma, if (!spage || !(src_pfns[i] & MIGRATE_PFN_MIGRATE)) continue; - dpage = hmm_vma_alloc_locked_page(vma, addr); + dpage = alloc_page_vma(GFP_HIGHUSER, vma, addr); if (!dpage) { dst_pfns[i] = MIGRATE_PFN_ERROR; continue; } + lock_page(dpage); dst_pfns[i] = migrate_pfn(page_to_pfn(dpage)) | MIGRATE_PFN_LOCKED; From patchwork Mon Jun 17 12:27:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999065 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7BA2913AF for ; Mon, 17 Jun 2019 12:28:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6BAD41FF0B for ; Mon, 17 Jun 2019 12:28:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5FFEC285A3; Mon, 17 Jun 2019 12:28:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BA72B1FF0B for ; Mon, 17 Jun 2019 12:28:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BA3778E0015; Mon, 17 Jun 2019 08:28:21 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B2A938E000B; Mon, 17 Jun 2019 08:28:21 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9F05D8E0015; Mon, 17 Jun 2019 08:28:21 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by kanga.kvack.org (Postfix) with ESMTP id 69FB78E000B for ; Mon, 17 Jun 2019 08:28:21 -0400 (EDT) Received: by mail-pg1-f199.google.com with SMTP id b10so7627937pgb.22 for ; Mon, 17 Jun 2019 05:28:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=h3EyOBgzIzwY5aTyr8+M/7FbufnJaVYVU0zNDtVIxKY=; b=iv5m8npy2deANeukcYy7ARQsk+G15VH+XHSK3XUYdGusTQ+9BoC2oWhtWwK7NCYU/J A3OoV3+PjJ+Mie9IR/cTR0Bq/X1C24to6wtuQ+5dsiYfUkvUInSc9Qhz1EDSg1y2na6K l8b0kOAi0Vnh7zcnqOyMdLhhOBGZE5Zg9YxOjMna8zpP/6M3gw7cp/AkM1po8oKYvfM1 DItoSCqcljj8xpcvmaMBejOj2WhKz4AWhyfUG0iphRiazCEX7HXc9mRD1btji8NPvnUf QYvM2jlwQjBPx2plDHt/KC/ZBplIGvrUagmh8PXpYNU510ASAF8pEYAdGoc+J0IQR5LK lH3g== X-Gm-Message-State: APjAAAWuxzYkE0Fcuxeq/Wk5quO/+eDPGa+IUTdRd9vgTwt/nw5m2wHp ruQFg36dkNnnj2HUWSgUeFTPUD5zBsAeLT9crUt6PN1sRydwvDdHRo7+Ni3FI5KfMNmWY5+rGnu DMHpa55e52pIy/o9Ck43E+ES83ZOs3zUl8R1MWBPFVf+eK1SczlX+VlaXg1slPEI= X-Received: by 2002:a17:902:d20f:: with SMTP id t15mr39067552ply.11.1560774501106; Mon, 17 Jun 2019 05:28:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqwCblmvIzIqAPZP9xtwipbwPjJqtnNLxU3z46zC7oRls/GkhDE6++LvBHvahZc5kfZoJ7K+ X-Received: by 2002:a17:902:d20f:: with SMTP id t15mr39067526ply.11.1560774500308; Mon, 17 Jun 2019 05:28:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774500; cv=none; d=google.com; s=arc-20160816; b=0fh6/LAwilHv+B4cmQJnDVSTV2I0yPPeMLvJ1l6J6mXi4upcenZKAfl/qhciX2HEnJ 2+HHUWezM+z7xKmSRGzgfWQWJlQ9/2zhRvCvSW2R4+1s66A0uJAH7cJuSkmiCQ4CB6P/ +5a5gvEQBEsS4BB+UvU8KYSThACUAAev9fiSX0blVvo3sovTzfRY0oXIfyCJtIxgJj+b eSAAU9pfX/M2Ji5+/L2LdWqaft0OgxZpEyVLgJ3qiXzBJAJAXY78ii9AImjWhAjh1lmh 31iK9EBT4Wv45rPRBtbVuZjxqUMH0m4xPb/2x74YgCzFqzXaBeXJXVBd0cqOf1uqnNqk ABjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=h3EyOBgzIzwY5aTyr8+M/7FbufnJaVYVU0zNDtVIxKY=; b=vMFBghUKDUC6KIB5LDAtmiN4tSsPwtGOIm3PtqhPsw4bhNw9kLBGRGkTZZJeBMdnbk xKZI9JYm+uFWImzab+jVnxnple+NnAnJ33tYB6isk9lvwHvc9vP2vSDEpzJ7RSFcvNsj zwVOQUJTPAh3HR+TU+gv8vIrhRX+RWdrHfCbGvaVMDWGovaPeodKXvG05rzPGtnN9H8u HexZTlm1It88UvXjRIiDwABmtsdO6DOvmpYEN73LCJKEyT1zYMJK4W624HXg30+9Yfm/ upcQSKhdAESC4nNlPMhoVdjpbNsCvaPwUbPNt09xlvmuSjyTddgWKDrnhuhr5eRrcNcr a5qg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=jhem4nax; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id w6si6432205pjr.100.2019.06.17.05.28.20 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=jhem4nax; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=h3EyOBgzIzwY5aTyr8+M/7FbufnJaVYVU0zNDtVIxKY=; b=jhem4naxAEB3/E/EyFooVJmX89 qYH2qsYs/WDwZEJOfMwfmQ54TUpvHqCIbNJXERKOBXmMMuBlvlvFiYclePuhxVw9aMmOnBuFSoTg3 9nkEIEN4dws8CB1+J5joluc+vAhIz4qZZLCHEnLI7ZCByChpUXt467Oq/VEDdzs7bieXwmeoPrO2x KgQ2BwzHzEIcne54Dd9BteRJlLHjdSyN0m5Yni8Sgd6Tsoe2wG5c3TUBxETk3jiR8b4ztSc4W8aEm 8wlUFGy35bnQHU4m3UM73AVSFDm3CVKODVZedRI9fLQcm3LZ+v6aPfmiGLMjyb9Nbh0NFrTEkwdku /dEEm1NA==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqkD-0000JC-2v; Mon, 17 Jun 2019 12:28:17 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 18/25] nouveau: use devm_memremap_pages directly Date: Mon, 17 Jun 2019 14:27:26 +0200 Message-Id: <20190617122733.22432-19-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP Just use devm_memremap_pages instead of hmm_devmem_add pages to allow killing that wrapper which doesn't provide a whole lot of benefits. Signed-off-by: Christoph Hellwig --- drivers/gpu/drm/nouveau/nouveau_dmem.c | 82 ++++++++++++-------------- 1 file changed, 38 insertions(+), 44 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c index a50f6fd2fe24..0fb7a44b8bc4 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dmem.c +++ b/drivers/gpu/drm/nouveau/nouveau_dmem.c @@ -72,7 +72,8 @@ struct nouveau_dmem_migrate { }; struct nouveau_dmem { - struct hmm_devmem *devmem; + struct nouveau_drm *drm; + struct dev_pagemap pagemap; struct nouveau_dmem_migrate migrate; struct list_head chunk_free; struct list_head chunk_full; @@ -80,6 +81,11 @@ struct nouveau_dmem { struct mutex mutex; }; +static inline struct nouveau_dmem *page_to_dmem(struct page *page) +{ + return container_of(page->pgmap, struct nouveau_dmem, pagemap); +} + struct nouveau_dmem_fault { struct nouveau_drm *drm; struct nouveau_fence *fence; @@ -96,8 +102,7 @@ struct nouveau_migrate { unsigned long dma_nr; }; -static void -nouveau_dmem_free(struct hmm_devmem *devmem, struct page *page) +static void nouveau_dmem_page_free(struct page *page) { struct nouveau_dmem_chunk *chunk; unsigned long idx; @@ -260,29 +265,21 @@ static const struct migrate_vma_ops nouveau_dmem_fault_migrate_ops = { .finalize_and_map = nouveau_dmem_fault_finalize_and_map, }; -static vm_fault_t -nouveau_dmem_fault(struct hmm_devmem *devmem, - struct vm_area_struct *vma, - unsigned long addr, - const struct page *page, - unsigned int flags, - pmd_t *pmdp) +static vm_fault_t nouveau_dmem_migrate_to_ram(struct vm_fault *vmf) { - struct drm_device *drm_dev = dev_get_drvdata(devmem->device); + struct nouveau_dmem *dmem = page_to_dmem(vmf->page); unsigned long src[1] = {0}, dst[1] = {0}; - struct nouveau_dmem_fault fault = {0}; + struct nouveau_dmem_fault fault = { .drm = dmem->drm }; int ret; - - /* * FIXME what we really want is to find some heuristic to migrate more * than just one page on CPU fault. When such fault happens it is very * likely that more surrounding page will CPU fault too. */ - fault.drm = nouveau_drm(drm_dev); - ret = migrate_vma(&nouveau_dmem_fault_migrate_ops, vma, addr, - addr + PAGE_SIZE, src, dst, &fault); + ret = migrate_vma(&nouveau_dmem_fault_migrate_ops, vmf->vma, + vmf->address, vmf->address + PAGE_SIZE, + src, dst, &fault); if (ret) return VM_FAULT_SIGBUS; @@ -292,10 +289,9 @@ nouveau_dmem_fault(struct hmm_devmem *devmem, return 0; } -static const struct hmm_devmem_ops -nouveau_dmem_devmem_ops = { - .free = nouveau_dmem_free, - .fault = nouveau_dmem_fault, +static const struct dev_pagemap_ops nouveau_dmem_pagemap_ops = { + .page_free = nouveau_dmem_page_free, + .migrate_to_ram = nouveau_dmem_migrate_to_ram, }; static int @@ -581,7 +577,8 @@ void nouveau_dmem_init(struct nouveau_drm *drm) { struct device *device = drm->dev->dev; - unsigned long i, size; + struct resource *res; + unsigned long i, size, pfn_first; int ret; /* This only make sense on PASCAL or newer */ @@ -591,6 +588,7 @@ nouveau_dmem_init(struct nouveau_drm *drm) if (!(drm->dmem = kzalloc(sizeof(*drm->dmem), GFP_KERNEL))) return; + drm->dmem->drm = drm; mutex_init(&drm->dmem->mutex); INIT_LIST_HEAD(&drm->dmem->chunk_free); INIT_LIST_HEAD(&drm->dmem->chunk_full); @@ -600,11 +598,8 @@ nouveau_dmem_init(struct nouveau_drm *drm) /* Initialize migration dma helpers before registering memory */ ret = nouveau_dmem_migrate_init(drm); - if (ret) { - kfree(drm->dmem); - drm->dmem = NULL; - return; - } + if (ret) + goto out_free; /* * FIXME we need some kind of policy to decide how much VRAM we @@ -612,14 +607,16 @@ nouveau_dmem_init(struct nouveau_drm *drm) * and latter if we want to do thing like over commit then we * could revisit this. */ - drm->dmem->devmem = hmm_devmem_add(&nouveau_dmem_devmem_ops, - device, size); - if (IS_ERR(drm->dmem->devmem)) { - kfree(drm->dmem); - drm->dmem = NULL; - return; - } - + res = devm_request_free_mem_region(device, &iomem_resource, size); + if (IS_ERR(res)) + goto out_free; + drm->dmem->pagemap.type = MEMORY_DEVICE_PRIVATE; + drm->dmem->pagemap.res = *res; + drm->dmem->pagemap.ops = &nouveau_dmem_pagemap_ops; + if (IS_ERR(devm_memremap_pages(device, &drm->dmem->pagemap))) + goto out_free; + + pfn_first = res->start >> PAGE_SHIFT; for (i = 0; i < (size / DMEM_CHUNK_SIZE); ++i) { struct nouveau_dmem_chunk *chunk; struct page *page; @@ -632,8 +629,7 @@ nouveau_dmem_init(struct nouveau_drm *drm) } chunk->drm = drm; - chunk->pfn_first = drm->dmem->devmem->pfn_first; - chunk->pfn_first += (i * DMEM_CHUNK_NPAGES); + chunk->pfn_first = pfn_first + (i * DMEM_CHUNK_NPAGES); list_add_tail(&chunk->list, &drm->dmem->chunk_empty); page = pfn_to_page(chunk->pfn_first); @@ -643,6 +639,10 @@ nouveau_dmem_init(struct nouveau_drm *drm) } NV_INFO(drm, "DMEM: registered %ldMB of device memory\n", size >> 20); + return; +out_free: + kfree(drm->dmem); + drm->dmem = NULL; } static void @@ -833,13 +833,7 @@ nouveau_dmem_migrate_vma(struct nouveau_drm *drm, static inline bool nouveau_dmem_page(struct nouveau_drm *drm, struct page *page) { - if (!is_device_private_page(page)) - return false; - - if (drm->dmem->devmem != page->pgmap->data) - return false; - - return true; + return is_device_private_page(page) && drm->dmem == page_to_dmem(page); } void From patchwork Mon Jun 17 12:27:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999067 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 70F2D14B6 for ; Mon, 17 Jun 2019 12:28:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 62E0C1FF0B for ; Mon, 17 Jun 2019 12:28:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 572DC2867F; Mon, 17 Jun 2019 12:28:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DB0451FF0B for ; Mon, 17 Jun 2019 12:28:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5101E8E0016; Mon, 17 Jun 2019 08:28:25 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 4EA8D8E000B; Mon, 17 Jun 2019 08:28:25 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 33AC88E0016; Mon, 17 Jun 2019 08:28:25 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by kanga.kvack.org (Postfix) with ESMTP id F11388E000B for ; Mon, 17 Jun 2019 08:28:24 -0400 (EDT) Received: by mail-pf1-f199.google.com with SMTP id u21so6961509pfn.15 for ; Mon, 17 Jun 2019 05:28:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=rfiOsXsxRAZCFDVo21abTS19/9zGASI6nRdrjMvZ5Iw=; b=r/9U07BOMINXczGGs4S3462isyzzGKsxXw0idrnk/IIhaxzzhy09pnpIQ80fmGg5t3 16OdHGD5kqMoeEktlQf7wuZYDxr5hExudt5XBncfkaeotq51eKvJn5gdmPmxuJC1c7ju R7Ye2sBtdzBv2PPvHdME2EWXBziHe3juVmx/pA92lbIfK0Fl+7RJR1L1TWVREihgAhB8 mHbJaSh4JBATpoaGqtR61G/29RflHJU2K9NJpHsklaIALgW19PQ+JEWo3TFx/i5A8tns UBWgf7GHLE7wKTanTnY1TlVtjrTlO6Qi783+TW7sns4jFqzAPYdsDvjtejAQU7Yi1xl2 oNNA== X-Gm-Message-State: APjAAAUUWUyac7r6Zv6bbIHq/L1VlDd5KV8uxCqE1TO75eb1CxXj7tzN KrrBitMZFjJtRHfzctr1RrkEjrbrzLq/KejaHJvSSa3neeZ+diYYeWYjcTl39SFQt7VoANYVzoJ saoqQyd96seSobQVb6J83fU2k/v/+gK0DziMIDc/+cDoduiOJFhmwE507SY46M34= X-Received: by 2002:a63:fc15:: with SMTP id j21mr9605408pgi.217.1560774504578; Mon, 17 Jun 2019 05:28:24 -0700 (PDT) X-Google-Smtp-Source: APXvYqx0ihKrPyURP9aQyYEa8VLnFHn8jLFe+9OLkBhER2Vo2dvpZHtSCVRUnmKKJfQwGplruYA3 X-Received: by 2002:a63:fc15:: with SMTP id j21mr9605373pgi.217.1560774503645; Mon, 17 Jun 2019 05:28:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774503; cv=none; d=google.com; s=arc-20160816; b=upTibT9PZeJWIBuxufmFewsI7SFqgX/dZ0dYul7Vi61sn9cG6R6Y5wzrU+eZytsrJD 7o0LCqXrESQP1+zMl9rdAkU6Ph+2Xb9n7mKyiXbPffvA0Zz3qzegzwSKNZZstczCaw8l tZVWNngokKuBTSdp3KwWj4m7gRW9X+6hnH2CjyJyrPsqAN5DlkFqJkSgQHFqJEpmzQL8 8lTjXEvZrSL10OrCkPluVitDK2D4h/Pv1VVgGezO42QY9IiKiYFaqieTeQDrtvcrYcC5 8Tzn0uSawyRIuY2Lgo6hmxJ3lKU7YWnk3PRTT9SxbdPrrdnX8WF1l781LahM+ZVq9A7J 2pKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=rfiOsXsxRAZCFDVo21abTS19/9zGASI6nRdrjMvZ5Iw=; b=RN3BB6qN/oLMl7Rd6jMazMwMED07ZKzXu0V3zRA0FbSwcZsGEgHP36jNPjzejeyKrN QGn+6wgs+3+D8CIKWtcRYtpaoKzCWVl4yvh8FSenVIVN67Gv3sQpjwl9Yvm/wHL3udF2 4uNdF3Ety+B9HgOir0QUBiMeHY77l+fAUuLWoJ+3Y/ZqQ8qso+xgByj/tRvNgo36JGMx rgwMhpjynxDl0pUwh8vNrb6rL670tQhiXjrrPcqVaQf5l52LvHtE3Vsi0ZHIvj7sBaYz 7doo3b9MfY7X7B8LrzFNsdv0hFt3J3nRLu6IYAri/kuAe8LNkglbWkdlG4wkfw0T1uBy tz1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="oLig9/TE"; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id h2si10899109plh.380.2019.06.17.05.28.23 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="oLig9/TE"; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=rfiOsXsxRAZCFDVo21abTS19/9zGASI6nRdrjMvZ5Iw=; b=oLig9/TEaZEXPR+t7+dEa5tPGZ RpcPa/hgJAoKo4WO6XIcMV1sCs82yI/lf9OjzRWEj+XFibg0CgidALCirzn9I/Ux8nEqBtGYl0Qhp UjkLcxgYpbFIOCt2hu8a+nzyW05x/LYTS/62NJNSg1oHibCDD2QPN0COJRNN2zrq9SkAjfzaA6Lr+ zYAG9oM+7PFTegy2bOQY0pdWVMTOTKk33rjMgeztaj1iyS1JvSCd/oKCL5f0rojkYJR/4cRDYuLKc J4VWWF9tGqI6teBCMBGayYjyd6VOGU6+ryOE8y398cTseQsF6pbV13QaK/gGJKuNaKx6HgHODXtXL AcMMPXXQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqkF-0000KX-9f; Mon, 17 Jun 2019 12:28:19 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 19/25] mm: remove hmm_vma_alloc_locked_page Date: Mon, 17 Jun 2019 14:27:27 +0200 Message-Id: <20190617122733.22432-20-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP The only user of it has just been removed, and there wasn't really any need to wrap a basic memory allocator to start with. Signed-off-by: Christoph Hellwig --- include/linux/hmm.h | 3 --- mm/hmm.c | 14 -------------- 2 files changed, 17 deletions(-) diff --git a/include/linux/hmm.h b/include/linux/hmm.h index e64824334b85..89571e8d9c63 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -589,9 +589,6 @@ static inline void hmm_mm_init(struct mm_struct *mm) {} #if IS_ENABLED(CONFIG_DEVICE_PRIVATE) || IS_ENABLED(CONFIG_DEVICE_PUBLIC) struct hmm_devmem; -struct page *hmm_vma_alloc_locked_page(struct vm_area_struct *vma, - unsigned long addr); - /* * struct hmm_devmem_ops - callback for ZONE_DEVICE memory events * diff --git a/mm/hmm.c b/mm/hmm.c index 307c12d7531c..0ef1a1921afb 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1327,20 +1327,6 @@ EXPORT_SYMBOL(hmm_range_dma_unmap); #if IS_ENABLED(CONFIG_DEVICE_PRIVATE) || IS_ENABLED(CONFIG_DEVICE_PUBLIC) -struct page *hmm_vma_alloc_locked_page(struct vm_area_struct *vma, - unsigned long addr) -{ - struct page *page; - - page = alloc_page_vma(GFP_HIGHUSER, vma, addr); - if (!page) - return NULL; - lock_page(page); - return page; -} -EXPORT_SYMBOL(hmm_vma_alloc_locked_page); - - static void hmm_devmem_ref_release(struct percpu_ref *ref) { struct hmm_devmem *devmem; From patchwork Mon Jun 17 12:27:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999081 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9FAC314B6 for ; Mon, 17 Jun 2019 12:28:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 920541FF0B for ; Mon, 17 Jun 2019 12:28:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8597F285A3; Mon, 17 Jun 2019 12:28:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9931027480 for ; Mon, 17 Jun 2019 12:28:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A66008E0017; Mon, 17 Jun 2019 08:28:29 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id A174C8E000B; Mon, 17 Jun 2019 08:28:29 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7CD4A8E0019; Mon, 17 Jun 2019 08:28:29 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by kanga.kvack.org (Postfix) with ESMTP id 353C78E0017 for ; Mon, 17 Jun 2019 08:28:29 -0400 (EDT) Received: by mail-pl1-f199.google.com with SMTP id f2so5877685plr.0 for ; Mon, 17 Jun 2019 05:28:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=p1ZrEtGR2yZrdK074qYGx4skRkZcef7n/LfOoR6uVVM=; b=B/fIWsv9k/Qmj4zrnrazvCC0L0LVCULvK7zZQmhvdNRdxTbbfZIn6B6Sm0P2I3h3S2 qRLIv6M70QuGNHDBtS2Aljobgt3GN/sOrR1BFNiyTnyMgrmf7RE+/L8SBuDPACkn0x4r MH88vXDLPH85CnTq/i4Zb8HAxKUOXjV6dUinypcuX3ZlRMttKR3HY8PqAb2cXKsD5twb FMPhouU8BhltGc5eqn9Xpazlx+vSfRN1y9xZV+8gPynkLBgRaxk5K7Stwski06A567ON nb7tl94GsOaAoBjEXzbHIDT79XpLcWt3GAGjzup94Dyu0prIK390lzBfmli9jcJfXLNM o6EA== X-Gm-Message-State: APjAAAXrfGuDkzGUaswrOcF44zW9ff0csH4HJ+ZNZXv5hDjZe2AHQUX9 iP5M4YLceZ1sktyZXYaBMRyrofMQkkLHI0cU7ukCfI/4RuGhDxt0iZcS3Lkf7ICfOylH1sQjm1z gYnlQ6rmHOIPVBHXRnXKEUKan/ZiyQAZqd3K/eSt6ZV1Bo0oa57IFNcelHOshLkQ= X-Received: by 2002:a17:90a:9291:: with SMTP id n17mr25422689pjo.66.1560774508814; Mon, 17 Jun 2019 05:28:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqxT4rOWYLyHcUgpi29Ueto1rcTCuEgEXL+xeFFDJcC1luxagNRKdwW2sFFi/jjgoiOI2EqB X-Received: by 2002:a17:90a:9291:: with SMTP id n17mr25422617pjo.66.1560774507645; Mon, 17 Jun 2019 05:28:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774507; cv=none; d=google.com; s=arc-20160816; b=v0dt4AqTkeWxmLugKTPEH4Q3I34AbLqYiTZBqkS+dVw7AwI576rHHjW/+3VU01dVOF Iw16+q7eBdIIKPejcWN5I1ZuXVzN2GmweCFp6W0SNw2mtxDteMlkYlr1dNaTmbjfEeL6 +vxiHQluWdBN7RVsvBiNqwkBL2Gdz8z3bHjDu/6QZIMFnD1rFpk9w+/UnGm9zeQHLhgq nEllODr/qo2Jltw0l5OMdCivWTuDxSPg/b47XdQwCdy8/ZTOcdl8bWYXyshLMaDIlbj9 tThtQzgeSyOAMLbohGDIGw0yVVeNoJjuzhhojpvEjn+0EoOc7loMPyXtX8AvUCh/eBLv Makg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=p1ZrEtGR2yZrdK074qYGx4skRkZcef7n/LfOoR6uVVM=; b=uFOPRHJ73oWdBlrgd3+f2rx+95Hr0hAw+c+XM8pvuHazlpr3Kmv93MypkTtrY2b3KE 67ibGHherKxzVA9DXPaPQ3XdnfLZ7xN5VU8wLrSTdWEnHtKaG7sFE04tQ9ZkVW50NpQl gHGXxx8I+FaxrxecyIQ3s/POj73rMm4o481dE6wEPaddcthvROn4MgMOVcWd1zqa+BGO xyfHpjdgvzIkBOCGW6hyAA2MPJYM3i7nqRym12xwja9vJqpkbnyvPFCQ1bo7z1Eg4K8r UdhUpD6y/FJZ7lHC86irbA0hyVTJ7M+ccDngFE17857YoM7p/q/EBSGEB+8oghM++0Qn tKrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=ikcpIHXB; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id 1si10149519pli.151.2019.06.17.05.28.27 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=ikcpIHXB; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=p1ZrEtGR2yZrdK074qYGx4skRkZcef7n/LfOoR6uVVM=; b=ikcpIHXBPSyetnmjaGo2E9ZIsW 47HEbyazOAyqWhsgjHN6tpxC4KMjCz7r7jdtURQnDY/ZTB2t1kgJMv2x03ocveBfX+ORj7e8sZA6R ieSeEYAqaDfExWXGSnzeMI0yTrExKrE0fMJPOAw/b4ddlk2ssmwGQ/BucqJEhR4PbovdTLprqbWip ca3eKxXEyvES9BB5GD1sh9R3VksCOisfE5Vq3HDM8SL2TPRBHQeVfuArHveID8tC06UO/2Joj+ZEo aD9QhETPJxx7sQj4d3rNLB3MJlhCc+8k0Sc55VlUja1/YodNjUQHHp7AE12rvOYXozFN7osSinvis bb2gYvew==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqkH-0000Nl-Ia; Mon, 17 Jun 2019 12:28:21 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 20/25] mm: remove hmm_devmem_add Date: Mon, 17 Jun 2019 14:27:28 +0200 Message-Id: <20190617122733.22432-21-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP There isn't really much value add in the hmm_devmem_add wrapper and more, as using devm_memremap_pages directly now is just as simple. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- Documentation/vm/hmm.rst | 26 -------- include/linux/hmm.h | 129 --------------------------------------- mm/hmm.c | 110 --------------------------------- 3 files changed, 265 deletions(-) diff --git a/Documentation/vm/hmm.rst b/Documentation/vm/hmm.rst index 7b6eeda5a7c0..b1c960fe246d 100644 --- a/Documentation/vm/hmm.rst +++ b/Documentation/vm/hmm.rst @@ -336,32 +336,6 @@ directly using struct page for device memory which left most kernel code paths unaware of the difference. We only need to make sure that no one ever tries to map those pages from the CPU side. -HMM provides a set of helpers to register and hotplug device memory as a new -region needing a struct page. This is offered through a very simple API:: - - struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, - struct device *device, - unsigned long size); - void hmm_devmem_remove(struct hmm_devmem *devmem); - -The hmm_devmem_ops is where most of the important things are:: - - struct hmm_devmem_ops { - void (*free)(struct hmm_devmem *devmem, struct page *page); - vm_fault_t (*fault)(struct hmm_devmem *devmem, - struct vm_area_struct *vma, - unsigned long addr, - struct page *page, - unsigned flags, - pmd_t *pmdp); - }; - -The first callback (free()) happens when the last reference on a device page is -dropped. This means the device page is now free and no longer used by anyone. -The second callback happens whenever the CPU tries to access a device page -which it cannot do. This second callback must trigger a migration back to -system memory. - Migration to and from device memory =================================== diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 89571e8d9c63..50ef29958604 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -587,135 +587,6 @@ static inline void hmm_mm_init(struct mm_struct *mm) {} #endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ #if IS_ENABLED(CONFIG_DEVICE_PRIVATE) || IS_ENABLED(CONFIG_DEVICE_PUBLIC) -struct hmm_devmem; - -/* - * struct hmm_devmem_ops - callback for ZONE_DEVICE memory events - * - * @free: call when refcount on page reach 1 and thus is no longer use - * @fault: call when there is a page fault to unaddressable memory - * - * Both callback happens from page_free() and page_fault() callback of struct - * dev_pagemap respectively. See include/linux/memremap.h for more details on - * those. - * - * The hmm_devmem_ops callback are just here to provide a coherent and - * uniq API to device driver and device driver should not register their - * own page_free() or page_fault() but rely on the hmm_devmem_ops call- - * back. - */ -struct hmm_devmem_ops { - /* - * free() - free a device page - * @devmem: device memory structure (see struct hmm_devmem) - * @page: pointer to struct page being freed - * - * Call back occurs whenever a device page refcount reach 1 which - * means that no one is holding any reference on the page anymore - * (ZONE_DEVICE page have an elevated refcount of 1 as default so - * that they are not release to the general page allocator). - * - * Note that callback has exclusive ownership of the page (as no - * one is holding any reference). - */ - void (*free)(struct hmm_devmem *devmem, struct page *page); - /* - * fault() - CPU page fault or get user page (GUP) - * @devmem: device memory structure (see struct hmm_devmem) - * @vma: virtual memory area containing the virtual address - * @addr: virtual address that faulted or for which there is a GUP - * @page: pointer to struct page backing virtual address (unreliable) - * @flags: FAULT_FLAG_* (see include/linux/mm.h) - * @pmdp: page middle directory - * Return: VM_FAULT_MINOR/MAJOR on success or one of VM_FAULT_ERROR - * on error - * - * The callback occurs whenever there is a CPU page fault or GUP on a - * virtual address. This means that the device driver must migrate the - * page back to regular memory (CPU accessible). - * - * The device driver is free to migrate more than one page from the - * fault() callback as an optimization. However if the device decides - * to migrate more than one page it must always priotirize the faulting - * address over the others. - * - * The struct page pointer is only given as a hint to allow quick - * lookup of internal device driver data. A concurrent migration - * might have already freed that page and the virtual address might - * no longer be backed by it. So it should not be modified by the - * callback. - * - * Note that mmap semaphore is held in read mode at least when this - * callback occurs, hence the vma is valid upon callback entry. - */ - vm_fault_t (*fault)(struct hmm_devmem *devmem, - struct vm_area_struct *vma, - unsigned long addr, - const struct page *page, - unsigned int flags, - pmd_t *pmdp); -}; - -/* - * struct hmm_devmem - track device memory - * - * @completion: completion object for device memory - * @pfn_first: first pfn for this resource (set by hmm_devmem_add()) - * @pfn_last: last pfn for this resource (set by hmm_devmem_add()) - * @resource: IO resource reserved for this chunk of memory - * @pagemap: device page map for that chunk - * @device: device to bind resource to - * @ops: memory operations callback - * @ref: per CPU refcount - * @page_fault: callback when CPU fault on an unaddressable device page - * - * This is a helper structure for device drivers that do not wish to implement - * the gory details related to hotplugging new memoy and allocating struct - * pages. - * - * Device drivers can directly use ZONE_DEVICE memory on their own if they - * wish to do so. - * - * The page_fault() callback must migrate page back, from device memory to - * system memory, so that the CPU can access it. This might fail for various - * reasons (device issues, device have been unplugged, ...). When such error - * conditions happen, the page_fault() callback must return VM_FAULT_SIGBUS and - * set the CPU page table entry to "poisoned". - * - * Note that because memory cgroup charges are transferred to the device memory, - * this should never fail due to memory restrictions. However, allocation - * of a regular system page might still fail because we are out of memory. If - * that happens, the page_fault() callback must return VM_FAULT_OOM. - * - * The page_fault() callback can also try to migrate back multiple pages in one - * chunk, as an optimization. It must, however, prioritize the faulting address - * over all the others. - */ - -struct hmm_devmem { - struct completion completion; - unsigned long pfn_first; - unsigned long pfn_last; - struct resource *resource; - struct device *device; - struct dev_pagemap pagemap; - const struct hmm_devmem_ops *ops; - struct percpu_ref ref; -}; - -/* - * To add (hotplug) device memory, HMM assumes that there is no real resource - * that reserves a range in the physical address space (this is intended to be - * use by unaddressable device memory). It will reserve a physical range big - * enough and allocate struct page for it. - * - * The device driver can wrap the hmm_devmem struct inside a private device - * driver struct. - */ -struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, - struct device *device, - unsigned long size); - /* * hmm_devmem_page_set_drvdata - set per-page driver data field * diff --git a/mm/hmm.c b/mm/hmm.c index 0ef1a1921afb..17ed080d9c32 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1324,113 +1324,3 @@ long hmm_range_dma_unmap(struct hmm_range *range, } EXPORT_SYMBOL(hmm_range_dma_unmap); #endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ - - -#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) || IS_ENABLED(CONFIG_DEVICE_PUBLIC) -static void hmm_devmem_ref_release(struct percpu_ref *ref) -{ - struct hmm_devmem *devmem; - - devmem = container_of(ref, struct hmm_devmem, ref); - complete(&devmem->completion); -} - -static void hmm_devmem_ref_exit(struct dev_pagemap *pgmap) -{ - struct hmm_devmem *devmem; - - devmem = container_of(pgmap, struct hmm_devmem, pagemap); - wait_for_completion(&devmem->completion); - percpu_ref_exit(pgmap->ref); -} - -static void hmm_devmem_ref_kill(struct dev_pagemap *pgmap) -{ - percpu_ref_kill(pgmap->ref); -} - -static vm_fault_t hmm_devmem_migrate_to_ram(struct vm_fault *vmf) -{ - struct hmm_devmem *devmem = - container_of(vmf->page->pgmap, struct hmm_devmem, pagemap); - - return devmem->ops->fault(devmem, vmf->vma, vmf->address, vmf->page, - vmf->flags, vmf->pmd); -} - -static void hmm_devmem_free(struct page *page) -{ - struct hmm_devmem *devmem = - container_of(page->pgmap, struct hmm_devmem, pagemap); - - devmem->ops->free(devmem, page); -} - -static const struct dev_pagemap_ops hmm_pagemap_ops = { - .page_free = hmm_devmem_free, - .kill = hmm_devmem_ref_kill, - .cleanup = hmm_devmem_ref_exit, - .migrate_to_ram = hmm_devmem_migrate_to_ram, -}; - -/* - * hmm_devmem_add() - hotplug ZONE_DEVICE memory for device memory - * - * @ops: memory event device driver callback (see struct hmm_devmem_ops) - * @device: device struct to bind the resource too - * @size: size in bytes of the device memory to add - * Return: pointer to new hmm_devmem struct ERR_PTR otherwise - * - * This function first finds an empty range of physical address big enough to - * contain the new resource, and then hotplugs it as ZONE_DEVICE memory, which - * in turn allocates struct pages. It does not do anything beyond that; all - * events affecting the memory will go through the various callbacks provided - * by hmm_devmem_ops struct. - * - * Device driver should call this function during device initialization and - * is then responsible of memory management. HMM only provides helpers. - */ -struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, - struct device *device, - unsigned long size) -{ - struct hmm_devmem *devmem; - void *result; - int ret; - - devmem = devm_kzalloc(device, sizeof(*devmem), GFP_KERNEL); - if (!devmem) - return ERR_PTR(-ENOMEM); - - init_completion(&devmem->completion); - devmem->pfn_first = -1UL; - devmem->pfn_last = -1UL; - devmem->resource = NULL; - devmem->device = device; - devmem->ops = ops; - - ret = percpu_ref_init(&devmem->ref, &hmm_devmem_ref_release, - 0, GFP_KERNEL); - if (ret) - return ERR_PTR(ret); - - devmem->resource = devm_request_free_mem_region(device, &iomem_resource, - size); - if (IS_ERR(devmem->resource)) - return ERR_CAST(devmem->resource); - devmem->pfn_first = devmem->resource->start >> PAGE_SHIFT; - devmem->pfn_last = devmem->pfn_first + - (resource_size(devmem->resource) >> PAGE_SHIFT); - - devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; - devmem->pagemap.res = *devmem->resource; - devmem->pagemap.ops = &hmm_pagemap_ops; - devmem->pagemap.ref = &devmem->ref; - - result = devm_memremap_pages(devmem->device, &devmem->pagemap); - if (IS_ERR(result)) - return result; - return devmem; -} -EXPORT_SYMBOL_GPL(hmm_devmem_add); -#endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ From patchwork Mon Jun 17 12:27:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999075 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id ABB1413AF for ; Mon, 17 Jun 2019 12:28:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9E5CF1FF0B for ; Mon, 17 Jun 2019 12:28:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 92B342867F; Mon, 17 Jun 2019 12:28:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2B4981FF0B for ; Mon, 17 Jun 2019 12:28:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7A96D8E0018; Mon, 17 Jun 2019 08:28:29 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 798168E000B; Mon, 17 Jun 2019 08:28:29 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 61FAA8E0018; Mon, 17 Jun 2019 08:28:29 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by kanga.kvack.org (Postfix) with ESMTP id 2E25B8E000B for ; Mon, 17 Jun 2019 08:28:29 -0400 (EDT) Received: by mail-pg1-f198.google.com with SMTP id z10so7646978pgf.15 for ; Mon, 17 Jun 2019 05:28:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=a9DxKrjk6QhfPonTyrF2mzugaowpnIicUuVlQP+zq4o=; b=CXYdy3M0Ir84E1BSeyuCVXsja78fcfroDFXh1KuMIzpt53z3WbPKVSD2mQ+qYbTVkr aIvo+yyh1Qu2cx8nTuV7fee8KzDRGhIcG8MzCT1dHNp3Ym4+Svb+maDTCp/Mf+gUxWMw 3nCeljzVHN0dp3esw/N+wRfSVssXfk3dI1DRrOfEeutzQb2MxInFQ/yvlibNn/6vAG/w 2R7c3RbkKIqw3EGzjn49hsq0Yv4IpmVSePcwSYxOLSRFMKIWLTefwMUQxz9O9UKv1AYU n1zGgsRTy7a532LSs2j0oFOcWjZ9VV05QDC8s0EDVkvjgSygl5snaRt4vCzL5ZsBQMMS K3Kg== X-Gm-Message-State: APjAAAXbpqWR50uc/cXlcXqw3YE7kh/1cgniVScZRPGc4voeA9r/HhS7 hZW2lyzyQxjICBmStNY34NkpOjq9LtX8VMmHTMiIY0ykuyBXhbi1MWbUWqfJdGMw9Nu22ahdoVV IqUhQYiy7MCsBs0SnFbLd4bdJQUzdQjceTTN46n2UJfglm3crLSw8nMKtSjfbzzk= X-Received: by 2002:a17:90a:22ef:: with SMTP id s102mr26702265pjc.2.1560774508866; Mon, 17 Jun 2019 05:28:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqxhz6XGz4YL7urjKA2gulmYABHmJHnXwzE9TkkVJS9SFB2sc/QJFuvLbic606q0dHk7a3vI X-Received: by 2002:a17:90a:22ef:: with SMTP id s102mr26702236pjc.2.1560774508275; Mon, 17 Jun 2019 05:28:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774508; cv=none; d=google.com; s=arc-20160816; b=m5x/WK5r8sHJI76T4I7486R0v08RSq/fxLZ46+E+2TTtIPP/dXvlZGavUER48IhFY6 XIIFi2AIlw3glurr3RC1ola3diJ5Xskqc4ihOTywqMRVlETHAopcIPUrLC6Nz7E9e3LN iAh0hJHhDOoDy5O0nbCXfqeMTMaZaV1wt96F6pJmxUjs8cqAXKZOb1de7jA2TipAmANO R/RcxeWJadftTdLrFP5Zr8h7EEDNWpRo4Qre31XJsg06rjWC0MinL2kc25GhaoNtxhuf Yhm7W/99kQOiMJ/zh486//PvS56PUjjYR5dku76usGCAOhzZnGlwcap48dgzUQ1YNFab Szng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=a9DxKrjk6QhfPonTyrF2mzugaowpnIicUuVlQP+zq4o=; b=NdxfNX3nl0boZam3Q0YFK3gE9hnsKExD+sw745m8/yev9b0UodwFAnQLbasXsWSS66 Bww8jP2ox1rRekJtuLCxkmQHzzKRaVBQizAqF+EoG+TdKERVX9duNjchR5vMa47T5JVG nsXxn18gOFWMgimkG2V3IyuigW2ZjX+XTXL50AhWieG0V9vioD+FFNKMqe5Tnmf3fkN3 jnsMii9YJ51lK1UkLvyM5btyXURuPupTC6aDHce9m6GUTwMJFWBltA4OuqB2GpZvOreN 1M7APgbRYXV+iTPN+rZ5n6wJyOSEWYwbgL5cqpnOawp+j3S8X1fZjwJH889Ivx/OfxBJ qLUg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=cb4e9uP9; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id p15si10997340pgj.191.2019.06.17.05.28.28 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=cb4e9uP9; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=a9DxKrjk6QhfPonTyrF2mzugaowpnIicUuVlQP+zq4o=; b=cb4e9uP9535wnLLOSnyqggTl8I 82wOdiYWnYuuZDAUgSyu83ySmcMJojBjfZpU/s/pwummAkreTbFbiDHxAlfmBp5zlGTCnvwaEkK/L m1+oWm8zfvKdQd7GjZ0w1pVZLn03vSyh1IoQL4nXiuZP60/CtR4bs0Fm58kSyrWF4OpfS1kgWP6tx YnPl/xrcUiJCqrWQhwC7a/lCoLnzRnV06voZ+USZ2cbZhzpOyPZZwkkTeqQsbHiFvOxIVh2073+QJ QM/0SM6iEz4vo+RuWl6T+Yc7bPyaPv8+xdh1ViBq0agPBngSwftA/sRBlGXYsGYx+CFcC1b9d2sia w6ZGeIZw==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqkJ-0000Qu-Su; Mon, 17 Jun 2019 12:28:24 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 21/25] mm: mark DEVICE_PUBLIC as broken Date: Mon, 17 Jun 2019 14:27:29 +0200 Message-Id: <20190617122733.22432-22-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP The code hasn't been used since it was added to the tree, and doesn't appear to actually be usable. Mark it as BROKEN until either a user comes along or we finally give up on it. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- mm/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/Kconfig b/mm/Kconfig index 0d2ba7e1f43e..406fa45e9ecc 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -721,6 +721,7 @@ config DEVICE_PRIVATE config DEVICE_PUBLIC bool "Addressable device memory (like GPU memory)" depends on ARCH_HAS_HMM + depends on BROKEN select HMM select DEV_PAGEMAP_OPS From patchwork Mon Jun 17 12:27:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999083 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CE6E613AF for ; Mon, 17 Jun 2019 12:28:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BDA141FF0B for ; Mon, 17 Jun 2019 12:28:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AF292285A3; Mon, 17 Jun 2019 12:28:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 134CA1FF0B for ; Mon, 17 Jun 2019 12:28:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D4E8A8E0019; Mon, 17 Jun 2019 08:28:30 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id CFD4F8E000B; Mon, 17 Jun 2019 08:28:30 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BEE148E0019; Mon, 17 Jun 2019 08:28:30 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by kanga.kvack.org (Postfix) with ESMTP id 84B058E000B for ; Mon, 17 Jun 2019 08:28:30 -0400 (EDT) Received: by mail-pg1-f197.google.com with SMTP id a21so7651061pgh.11 for ; Mon, 17 Jun 2019 05:28:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=0yZBn1Jd+ueRQDmZpJ4SByMI24Y/dLErXZNb3pgx5jo=; b=HNOzNs2MmgkZIjDh3B1y54Pt5Jqfg/4kbSNRxcjaV9sV07+pYejf8J+jjP4zQaqJ1i 3EU3pMNxmT9d2leN2AkDIqKKcnKSkRyyZcz7/objlWwXGFv/vG+SIdXoklS8Sm0AdOIt 3A5T6Gt04fWsq757549BA6y8GybmhnAcsNSu039UvSADF15oNDSc2COc/9O/BjEkw37Q AliZhkTM1iUN1fmMFd4DiV3d86S7RPNFuOqJpvyZ5noG67aWpwVJkoE4z8wUAyKba47H G96nwQGOVBBpzqqWlGRarQxD5bnZaXKZCj/ZhoRQl/4NOSA24nr4MfWdkgElQZBVMqjh YwhQ== X-Gm-Message-State: APjAAAUyexnShMdhFOgJIV4K4ivhHBm1xEdmQ58PkNaDcgIFPo4fqjos tija5SAZXmYldnU5YrencQ1MHZcPqPtqf8Z9hdbQClctgUjc5s3+dVzYNuJGONEv6RIm2yG78fk j4Pj6CBia2yj3A37fvzzOp17l2AvFzgecHvPUcA5XJDTlIhfROomhBrQJiiaX+mU= X-Received: by 2002:a17:902:8a87:: with SMTP id p7mr90649441plo.124.1560774510202; Mon, 17 Jun 2019 05:28:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqxl7Sy/zba6S0hv1JYSH80MlhcTaKiVKpBsP4CbMaqVDYJvkHtI/8QPQjoIn0V2q9QwyI3G X-Received: by 2002:a17:902:8a87:: with SMTP id p7mr90649392plo.124.1560774509352; Mon, 17 Jun 2019 05:28:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774509; cv=none; d=google.com; s=arc-20160816; b=bt/4VbHb5bEwSTHgLiJmxiXe3LEJOPZUr1y0styCTcTlUp855FPVOoY9dZzcH+6Jy6 borFPN8/lTFrsbj5tHBtCKb9kap0nZjMMVSwXlA8ZIAIoJV39C9IJuhdo/oWlf3YVish oJGctjT/0NrwZh/hCMCzCm8EFW7Yi/yIfx0fdCzJD2WSnGMvVZY+8Qa301Kx4KpqWCeX hGzY9MlKlP5ZD2HKDYF6A4Hjsy5Jbwv0ruNBP00ENjSTbv0ZfUNIkcty0EFL7lK+bFjJ QUbv36lRM20YwxOaCtFSy/xOs3qa5FXXxJ+zty6Ef0JQivsMxXVfsqsHw3ZHxj79He5M 9gqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=0yZBn1Jd+ueRQDmZpJ4SByMI24Y/dLErXZNb3pgx5jo=; b=hY44kI5C4ZGWrvbpFgaqvaQ/9A+Qy0tfNSMJGQxepcxsKm2iVw9jC8S6w1H8oDRaN1 fnNGDDNu8fRv5mIyNbVeLxjkcmq6MpcfTD74j/Qkk4c48NIyqq1i26RZxGe9JAd7kBnF MtJ5o1Cm38PRThNms33KwOLpyDfvDNIff8c67FTm+GOkEbVWDiqmpt/VLeeyDXfwCGGb OHCBx+J5+b3bZzjWvjQWmP+beH/pjLkqQv/bzA5k7n4KcO0CzQIrX/zkc7rXkuvVUFag dR0CrhOCIkm1eok+Ij72Q0xGGRwX9wOmvyUP+DG6UN612u/IL+mSGcKUzjeOzZVZJngR xGvg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=Lr8ynP2g; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id k8si11398160pgc.106.2019.06.17.05.28.29 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=Lr8ynP2g; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=0yZBn1Jd+ueRQDmZpJ4SByMI24Y/dLErXZNb3pgx5jo=; b=Lr8ynP2g3Y92KKaQ59/yF3NTjZ TWvdMWe/bvOmY4QOoQsr0PAX4STArOCo7mEUi5ObiE2nDvaD0ED1Se4EHb9iG6anywYQJKqI/EoND 3Stjx5oQyNFSGChcyE3FdbOUC6Vh4H22DHJFnNSOXAxsQPCXYPLk2oa3qawqsH6SF17xDKXt4gqT7 xRfQ6shEPBOeiXVoxuRIxQWgpjUzdiE4obV9yA0SFl92XkHvzIBK7uHvv5zVWETiOks0YpUrBkFuD ihfRs3rPAff7QWBnfqpn0u3FoUBDU7IvFBozznUeNQiQHB9Bu2g0gCk43wHfVG6TxCN6mY5jxGVfX r67td82A==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqkM-0000Td-4M; Mon, 17 Jun 2019 12:28:26 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 22/25] mm: simplify ZONE_DEVICE page private data Date: Mon, 17 Jun 2019 14:27:30 +0200 Message-Id: <20190617122733.22432-23-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP Remove the clumsy hmm_devmem_page_{get,set}_drvdata helpers, and instead just access the page directly. Also make the page data a void pointer, and thus much easier to use. Signed-off-by: Christoph Hellwig --- drivers/gpu/drm/nouveau/nouveau_dmem.c | 18 +++++++---------- include/linux/hmm.h | 27 -------------------------- include/linux/mm_types.h | 2 +- mm/page_alloc.c | 8 ++++---- 4 files changed, 12 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c index 0fb7a44b8bc4..42c026010938 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dmem.c +++ b/drivers/gpu/drm/nouveau/nouveau_dmem.c @@ -104,11 +104,8 @@ struct nouveau_migrate { static void nouveau_dmem_page_free(struct page *page) { - struct nouveau_dmem_chunk *chunk; - unsigned long idx; - - chunk = (void *)hmm_devmem_page_get_drvdata(page); - idx = page_to_pfn(page) - chunk->pfn_first; + struct nouveau_dmem_chunk *chunk = page->zone_device_data; + unsigned long idx = page_to_pfn(page) - chunk->pfn_first; /* * FIXME: @@ -200,7 +197,7 @@ nouveau_dmem_fault_alloc_and_copy(struct vm_area_struct *vma, dst_addr = fault->dma[fault->npages++]; - chunk = (void *)hmm_devmem_page_get_drvdata(spage); + chunk = spage->zone_device_data; src_addr = page_to_pfn(spage) - chunk->pfn_first; src_addr = (src_addr << PAGE_SHIFT) + chunk->bo->bo.offset; @@ -633,9 +630,8 @@ nouveau_dmem_init(struct nouveau_drm *drm) list_add_tail(&chunk->list, &drm->dmem->chunk_empty); page = pfn_to_page(chunk->pfn_first); - for (j = 0; j < DMEM_CHUNK_NPAGES; ++j, ++page) { - hmm_devmem_page_set_drvdata(page, (long)chunk); - } + for (j = 0; j < DMEM_CHUNK_NPAGES; ++j, ++page) + page->zone_device_data = chunk; } NV_INFO(drm, "DMEM: registered %ldMB of device memory\n", size >> 20); @@ -698,7 +694,7 @@ nouveau_dmem_migrate_alloc_and_copy(struct vm_area_struct *vma, if (!dpage || dst_pfns[i] == MIGRATE_PFN_ERROR) continue; - chunk = (void *)hmm_devmem_page_get_drvdata(dpage); + chunk = dpage->zone_device_data; dst_addr = page_to_pfn(dpage) - chunk->pfn_first; dst_addr = (dst_addr << PAGE_SHIFT) + chunk->bo->bo.offset; @@ -862,7 +858,7 @@ nouveau_dmem_convert_pfn(struct nouveau_drm *drm, continue; } - chunk = (void *)hmm_devmem_page_get_drvdata(page); + chunk = page->zone_device_data; addr = page_to_pfn(page) - chunk->pfn_first; addr = (addr + chunk->bo->bo.mem.start) << PAGE_SHIFT; diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 50ef29958604..454be41f2eaf 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -586,33 +586,6 @@ static inline void hmm_mm_destroy(struct mm_struct *mm) {} static inline void hmm_mm_init(struct mm_struct *mm) {} #endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ -#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) || IS_ENABLED(CONFIG_DEVICE_PUBLIC) -/* - * hmm_devmem_page_set_drvdata - set per-page driver data field - * - * @page: pointer to struct page - * @data: driver data value to set - * - * Because page can not be on lru we have an unsigned long that driver can use - * to store a per page field. This just a simple helper to do that. - */ -static inline void hmm_devmem_page_set_drvdata(struct page *page, - unsigned long data) -{ - page->hmm_data = data; -} - -/* - * hmm_devmem_page_get_drvdata - get per page driver data field - * - * @page: pointer to struct page - * Return: driver data value - */ -static inline unsigned long hmm_devmem_page_get_drvdata(const struct page *page) -{ - return page->hmm_data; -} -#endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ #else /* IS_ENABLED(CONFIG_HMM) */ static inline void hmm_mm_destroy(struct mm_struct *mm) {} static inline void hmm_mm_init(struct mm_struct *mm) {} diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 8ec38b11b361..f33a1289c101 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -158,7 +158,7 @@ struct page { struct { /* ZONE_DEVICE pages */ /** @pgmap: Points to the hosting device page map. */ struct dev_pagemap *pgmap; - unsigned long hmm_data; + void *zone_device_data; unsigned long _zd_pad_1; /* uses mapping */ }; diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 17a39d40a556..c0e031c52db5 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5886,12 +5886,12 @@ void __ref memmap_init_zone_device(struct zone *zone, __SetPageReserved(page); /* - * ZONE_DEVICE pages union ->lru with a ->pgmap back - * pointer and hmm_data. It is a bug if a ZONE_DEVICE - * page is ever freed or placed on a driver-private list. + * ZONE_DEVICE pages union ->lru with a ->pgmap back pointer + * and zone_device_data. It is a bug if a ZONE_DEVICE page is + * ever freed or placed on a driver-private list. */ page->pgmap = pgmap; - page->hmm_data = 0; + page->zone_device_data = NULL; /* * Mark the block movable so that blocks are reserved for From patchwork Mon Jun 17 12:27:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999087 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D43B014B6 for ; Mon, 17 Jun 2019 12:28:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C79421FF0B for ; Mon, 17 Jun 2019 12:28:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BC2402867F; Mon, 17 Jun 2019 12:28:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5DE881FF0B for ; Mon, 17 Jun 2019 12:28:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3B6F48E001A; Mon, 17 Jun 2019 08:28:34 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 33D388E000B; Mon, 17 Jun 2019 08:28:34 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 18B1F8E001A; Mon, 17 Jun 2019 08:28:34 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by kanga.kvack.org (Postfix) with ESMTP id DC5F08E000B for ; Mon, 17 Jun 2019 08:28:33 -0400 (EDT) Received: by mail-pl1-f199.google.com with SMTP id r7so5912541plo.6 for ; Mon, 17 Jun 2019 05:28:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=FtWCNVd4QOpMTthKbNz1MFUxeFEvCSuwTqmj0Q74N1M=; b=Tmtgu0jZ7czIj7uQOfoao76WsQ14+xBZSuMa5UxcWclgdZSlEqLrmtg9ksdwual903 rBa8t3YdBD4UJiFRcGinp833xLn0m//L+cSu/an7OG9kvWlM/vpuwojyf716yr7V67PL 4UyCGJpdhMDCFZmXQinAgtKmgoi8ZrVCMnx7nqy59hrgYBpMF+zoSnMW26GxKvmrZpft IZYL4EasyZzbo7K2HXZZaIRbyxSmkuRvSrHDBQWWTzA6GMmLqvZiCrk3wMGQEv6a/b3u j3/xlqYWwgcXqr4OjG2eYV1hw5F5a6U/xp6E5pZ4RhmESD3U0Pxav38m+sVeHPVh4BwZ Vz3g== X-Gm-Message-State: APjAAAVBR6n6dIie1p8Jgi0f5I3Hpswn98MuvSDZWXGn13W7kyspmEUW H/5s7H0zJLi4DxH7JZR37iNF0UyAPH7yFOWDwudXOylIj3Ip69cRcAfi9J7e/QKG2JCop6qczZg ADbLnMVaQdirEEIy7dzVBEVGMHNeDYMPqcwd+ZbQAnAqU8xM0PfkCEBjLEPCc3Sc= X-Received: by 2002:a63:c508:: with SMTP id f8mr11074701pgd.48.1560774513528; Mon, 17 Jun 2019 05:28:33 -0700 (PDT) X-Google-Smtp-Source: APXvYqyzbX5fRkzbxkxPGEaQgk0SqfwO21rDVGtQCNwXwkm1tdjdT2AM77Xa2jf88otbPlKI7g/g X-Received: by 2002:a63:c508:: with SMTP id f8mr11074648pgd.48.1560774512799; Mon, 17 Jun 2019 05:28:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774512; cv=none; d=google.com; s=arc-20160816; b=KkMSf7cZUoK4nChwQkOqWun16UXdT3CooHuGkEDXZ2SoPF0AlNbplwa6zefl/7bufW yQHR66B7TR/UCvZqSZsYy/r93rC8qw/SwWmr9aFfPUymyPWF0u2vMYK8BeMqYrR6skqG e3oGF0w2Mp+1rwUgF5cFFwwO59+yZDNQ+Cjj0MYEnyCuKcADix4UI543tpZA12oWYOIp z9jRVYwKZkHYjw4qsHuh3M3pi1gvOz861es+x8U0ov2sZ54/2BZ1TVhC2sVlMmBW6yZM gVNfKPadjgPbHJGpSoo4sCyWC3ZxIznVG+EHXsKizI2vz/UlXu1jDS0h4RLFdU1zT7iT LNTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=FtWCNVd4QOpMTthKbNz1MFUxeFEvCSuwTqmj0Q74N1M=; b=MuFXV7DN+YRyjfiVe0vfpSaTKtAtKGcOx85hCxwdvAJDHgGRfUrMsjk7uv7cxZ43e0 EpFSsQj61ykKgGcC0Nss1SIaC1MHKAAUojt+ev0fLOPnXVkgbKOIU+oD2eSZTMq8NtE8 inygApdzT8LYehby6pfjCgvzB2C0rbc6rBhr1ZO+KKxjGbeSqL/YGL7VGN5+Vd9eJx5v LUnU917hOqc1l+8lKPQpDdwbEVSKYqfvdbph5p4907Wu9lFD2g08hHCSeZgSD2wSfK4B s4XLUwAfmnQ3habgmcslIdbD/pX47wYQeaHVS4iQIvwvTWiPbCHl8vSnEP2gwscam9Ht zGog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=Z78KcWBb; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id i11si10240914pfa.240.2019.06.17.05.28.32 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:32 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=Z78KcWBb; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=FtWCNVd4QOpMTthKbNz1MFUxeFEvCSuwTqmj0Q74N1M=; b=Z78KcWBbsFX3gceHor7ikVE3Xz qTbuNA7cIzuIpzZqGXtGE+PWrq6MRN37GCRxbiHzeUrB8YXse/T2hIbfv5I/Nv94RL8TYyWumUDzY Iwhm/tvNNL22C4RRe6kUEw81nHAOzzaxylSaaEWyW9ggqOXKvgFWxPGzMDqRHyaofiDatgcCj/5jQ Kvok1nykqb8M0G7lY7ijcHY/VUiKcCkrkMVX5UPZWWWOwl17xrUk8W/xkoS+uAm5nyLGxOuV6JtVy qXd+BOjdKQ6KhZOBIxzhndIT5fce88/KzVDayE/YLhkBFFe8J+LNBG12buYQ7TZ26ZY5Ax0HIR1u9 Kbdo8lXg==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqkO-0000Xg-C5; Mon, 17 Jun 2019 12:28:28 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 23/25] mm: sort out the DEVICE_PRIVATE Kconfig mess Date: Mon, 17 Jun 2019 14:27:31 +0200 Message-Id: <20190617122733.22432-24-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP The ZONE_DEVICE support doesn't depend on anything HMM related, just on various bits of arch support as indicated by the architecture. Also don't select the option from nouveau as it isn't present in many setups, and depend on it instead. Signed-off-by: Christoph Hellwig --- drivers/gpu/drm/nouveau/Kconfig | 2 +- mm/Kconfig | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig index dba2613f7180..6303d203ab1d 100644 --- a/drivers/gpu/drm/nouveau/Kconfig +++ b/drivers/gpu/drm/nouveau/Kconfig @@ -85,10 +85,10 @@ config DRM_NOUVEAU_BACKLIGHT config DRM_NOUVEAU_SVM bool "(EXPERIMENTAL) Enable SVM (Shared Virtual Memory) support" depends on ARCH_HAS_HMM + depends on DEVICE_PRIVATE depends on DRM_NOUVEAU depends on STAGING select HMM_MIRROR - select DEVICE_PRIVATE default n help Say Y here if you want to enable experimental support for diff --git a/mm/Kconfig b/mm/Kconfig index 406fa45e9ecc..4dbd718c8cf4 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -677,13 +677,13 @@ config ARCH_HAS_HMM_MIRROR config ARCH_HAS_HMM bool - default y depends on (X86_64 || PPC64) depends on ZONE_DEVICE depends on MMU && 64BIT depends on MEMORY_HOTPLUG depends on MEMORY_HOTREMOVE depends on SPARSEMEM_VMEMMAP + default y config MIGRATE_VMA_HELPER bool @@ -709,8 +709,7 @@ config HMM_MIRROR config DEVICE_PRIVATE bool "Unaddressable device memory (GPU memory, ...)" - depends on ARCH_HAS_HMM - select HMM + depends on ZONE_DEVICE select DEV_PAGEMAP_OPS help From patchwork Mon Jun 17 12:27:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999091 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4C39013AF for ; Mon, 17 Jun 2019 12:29:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3E4261FF0B for ; Mon, 17 Jun 2019 12:29:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 32311285A3; Mon, 17 Jun 2019 12:29:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A2D221FF0B for ; Mon, 17 Jun 2019 12:29:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 119548E001B; Mon, 17 Jun 2019 08:28:36 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 07B538E000B; Mon, 17 Jun 2019 08:28:36 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EAB8B8E001B; Mon, 17 Jun 2019 08:28:35 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by kanga.kvack.org (Postfix) with ESMTP id B2B7D8E000B for ; Mon, 17 Jun 2019 08:28:35 -0400 (EDT) Received: by mail-pg1-f197.google.com with SMTP id b10so7628192pgb.22 for ; Mon, 17 Jun 2019 05:28:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=oJ6UkI2ll43ZwHiXYrdbiTYuFk63kXXY+nO1oYpLkTE=; b=R3grHY1OP+L23k4dK2q+fpNR2qxkE1Dq0bqHT7L5UNxgDTImEyiF/mCxAMolbmOBhk G5/ZvjdW4rN/aPNbdj7MmkYpwKhMkOlFT5702yY6Et2nvhNsKqpZZ2L+3hAiHhVGYFzg E5BfC4RsfWw2WNtfTuAaPhcRHu05V/c6Js4rSv56IdRInT0y5i7P3ZNExNArqmx1V5eB 0UImk6rahQqdzdRSuRPybUJdIuUjQQeyaxVVqz88WKRaEZ2zsCYGFl50i6TPNZWmr3xC esRfi85LwWQ5V3Cq6qsG3tRfZL0na+cAlpcWvPSBvCQ0i/hc9PcH1GS8tDVvC5weOJ8k oP/w== X-Gm-Message-State: APjAAAUuPs19LlBdEG7Kj7jeGUBbd3rRVRBLla3d0iiaSENPcYKcNRAU 8Xj2YNEYwLbiO60CyJm56puyFJxa085/F7fsmA/3PDLRHpwxJKzig2lGE6DZdvYnwnnYJSE6gXU SpovyFLitYyK9up/co1tPMsBmSVVOJvZWeYgNhBPhbB/3EXJz5lYgLv8PEW6MLF0= X-Received: by 2002:a63:292:: with SMTP id 140mr17300236pgc.88.1560774515238; Mon, 17 Jun 2019 05:28:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqyo5l+Qcz9MLgvkEM8lolTZD6kDXy4RS02+Uah0SMFjGdyhruu+Ma+RNrqe57oMC/J429SX X-Received: by 2002:a63:292:: with SMTP id 140mr17300190pgc.88.1560774514251; Mon, 17 Jun 2019 05:28:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774514; cv=none; d=google.com; s=arc-20160816; b=IejNBqW1XjTYug/dfxe6lX7vub59que+8a9TJhzXbmKn7setCP0ue3mH8bc8HYD6ek tQ96VlNog9t8WCmJCvrlljRU7wjoJ1s5t2L3dRf7Izp3a43YLR/nm671+17cpPRiZRhq bRSGEGavaNZFGyZTpQjOI81OCbgT5ChIYY1whh0jnwOZInmxCsCHTDVIsH2I1sHYNqSB gWR0TPK1YIzRApWE5by4BBnsMgVQFh7IzVOfMLZdv1j2/xqW4Dg6uXuMUW36yvSZ5y6o D6Hy8IFJev1z/XUPucPYGbwCIP876FiWPevpuCbOH7ASIhpmgvdnqxe+VEuldvYdMTS7 p6EA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=oJ6UkI2ll43ZwHiXYrdbiTYuFk63kXXY+nO1oYpLkTE=; b=iTWP+MWUtbkS8roG80tWYM1X3p+gM4R5WG9OtrwqBMTwJttPjbSOPFix0w+hypChXq sAke1XA02lmGaJscLtMcL+n0PCDmjhGIO3iQr+TzUoqxUc/9v0Z0iwJY1iCtoxlw6MN0 Bs1FLTJ9byQmZyC0sUDNfovNh+bZ+BSGj/Yz67jsn5HV8WOWsQV93vQmYjjtxxY3YCPE 1CYTDQqZqeWkEONsOLI6FqV6S9pFW1jabK6+wYCjl5UBUWOVn+3EqhB4DRNR4WsF/rdp LYtsSzM4QAEoZAmDGwWWanwZcGOYqoFMiTzKpeLeqK5aqHAMvmxu3uhDiEBYDrgm9Hkt Mieg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=UUq7egVT; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id w21si10622539pff.263.2019.06.17.05.28.34 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=UUq7egVT; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=oJ6UkI2ll43ZwHiXYrdbiTYuFk63kXXY+nO1oYpLkTE=; b=UUq7egVTFG3R6ymg30RMyb8xZb N4gLZFg+je0866s6fGFSQWP07O2W6hqApeIXVnHo5RGcIVYiYzqgJyRlHryVTgecysq2TS615QErk ilJpsjSBskMhBJF+fttIBW7l9k+zAIGLx2DizTuMzuhwmOqlhKk5CLOCmBJw2s4iDcDFNL6l7FHnU 1U3/WvF56rTxvB4JDAUygKm22RxHdTSqgSO6uL0kx5Uu22RUQb3Kh74REUN0YsRh2TOnjGvFfSGJS 4hq6hldBqT2FqB6axJvRuJ+QKnIoSd3vPSjJ3RRC8a/jLA8H4dmmneEFQ7DfXCzw85mWDkkY52rbE MreNdXsg==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqkQ-0000bA-Nv; Mon, 17 Jun 2019 12:28:31 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 24/25] mm: remove the HMM config option Date: Mon, 17 Jun 2019 14:27:32 +0200 Message-Id: <20190617122733.22432-25-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP All the mm/hmm.c code is better keyed off HMM_MIRROR. Also let nouveau depend on it instead of the mix of a dummy dependency symbol plus the actually selected one. Drop various odd dependencies, as the code is pretty portable. Signed-off-by: Christoph Hellwig --- drivers/gpu/drm/nouveau/Kconfig | 3 +-- include/linux/hmm.h | 10 +--------- include/linux/mm_types.h | 2 +- mm/Kconfig | 30 +++++------------------------- mm/Makefile | 2 +- mm/hmm.c | 2 -- 6 files changed, 9 insertions(+), 40 deletions(-) diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig index 6303d203ab1d..66c839d8e9d1 100644 --- a/drivers/gpu/drm/nouveau/Kconfig +++ b/drivers/gpu/drm/nouveau/Kconfig @@ -84,11 +84,10 @@ config DRM_NOUVEAU_BACKLIGHT config DRM_NOUVEAU_SVM bool "(EXPERIMENTAL) Enable SVM (Shared Virtual Memory) support" - depends on ARCH_HAS_HMM depends on DEVICE_PRIVATE depends on DRM_NOUVEAU + depends on HMM_MIRROR depends on STAGING - select HMM_MIRROR default n help Say Y here if you want to enable experimental support for diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 454be41f2eaf..ffc52820d976 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -62,7 +62,7 @@ #include #include -#if IS_ENABLED(CONFIG_HMM) +#ifdef CONFIG_HMM_MIRROR #include #include @@ -334,9 +334,6 @@ static inline uint64_t hmm_pfn_from_pfn(const struct hmm_range *range, return hmm_device_entry_from_pfn(range, pfn); } - - -#if IS_ENABLED(CONFIG_HMM_MIRROR) /* * Mirroring: how to synchronize device page table with CPU page table. * @@ -586,9 +583,4 @@ static inline void hmm_mm_destroy(struct mm_struct *mm) {} static inline void hmm_mm_init(struct mm_struct *mm) {} #endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ -#else /* IS_ENABLED(CONFIG_HMM) */ -static inline void hmm_mm_destroy(struct mm_struct *mm) {} -static inline void hmm_mm_init(struct mm_struct *mm) {} -#endif /* IS_ENABLED(CONFIG_HMM) */ - #endif /* LINUX_HMM_H */ diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index f33a1289c101..8d37182f8dbe 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -501,7 +501,7 @@ struct mm_struct { #endif struct work_struct async_put_work; -#if IS_ENABLED(CONFIG_HMM) +#ifdef CONFIG_HMM_MIRROR /* HMM needs to track a few things per mm */ struct hmm *hmm; #endif diff --git a/mm/Kconfig b/mm/Kconfig index 4dbd718c8cf4..7fa785551f96 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -669,37 +669,18 @@ config ZONE_DEVICE If FS_DAX is enabled, then say Y. -config ARCH_HAS_HMM_MIRROR - bool - default y - depends on (X86_64 || PPC64) - depends on MMU && 64BIT - -config ARCH_HAS_HMM - bool - depends on (X86_64 || PPC64) - depends on ZONE_DEVICE - depends on MMU && 64BIT - depends on MEMORY_HOTPLUG - depends on MEMORY_HOTREMOVE - depends on SPARSEMEM_VMEMMAP - default y - config MIGRATE_VMA_HELPER bool config DEV_PAGEMAP_OPS bool -config HMM - bool - select MMU_NOTIFIER - select MIGRATE_VMA_HELPER - config HMM_MIRROR bool "HMM mirror CPU page table into a device page table" - depends on ARCH_HAS_HMM - select HMM + depends on (X86_64 || PPC64) + depends on MMU && 64BIT + select MMU_NOTIFIER + select MIGRATE_VMA_HELPER help Select HMM_MIRROR if you want to mirror range of the CPU page table of a process into a device page table. Here, mirror means "keep synchronized". @@ -719,9 +700,8 @@ config DEVICE_PRIVATE config DEVICE_PUBLIC bool "Addressable device memory (like GPU memory)" - depends on ARCH_HAS_HMM depends on BROKEN - select HMM + depends on ZONE_DEVICE select DEV_PAGEMAP_OPS help diff --git a/mm/Makefile b/mm/Makefile index ac5e5ba78874..91c99040065c 100644 --- a/mm/Makefile +++ b/mm/Makefile @@ -102,5 +102,5 @@ obj-$(CONFIG_FRAME_VECTOR) += frame_vector.o obj-$(CONFIG_DEBUG_PAGE_REF) += debug_page_ref.o obj-$(CONFIG_HARDENED_USERCOPY) += usercopy.o obj-$(CONFIG_PERCPU_STATS) += percpu-stats.o -obj-$(CONFIG_HMM) += hmm.o +obj-$(CONFIG_HMM_MIRROR) += hmm.o obj-$(CONFIG_MEMFD_CREATE) += memfd.o diff --git a/mm/hmm.c b/mm/hmm.c index 17ed080d9c32..cefeec5c58aa 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -25,7 +25,6 @@ #include #include -#if IS_ENABLED(CONFIG_HMM_MIRROR) static const struct mmu_notifier_ops hmm_mmu_notifier_ops; static inline struct hmm *mm_get_hmm(struct mm_struct *mm) @@ -1323,4 +1322,3 @@ long hmm_range_dma_unmap(struct hmm_range *range, return cpages; } EXPORT_SYMBOL(hmm_range_dma_unmap); -#endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ From patchwork Mon Jun 17 12:27:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10999093 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C583D14B6 for ; Mon, 17 Jun 2019 12:29:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B811A1FF0B for ; Mon, 17 Jun 2019 12:29:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AC537285A3; Mon, 17 Jun 2019 12:29:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 483551FF0B for ; Mon, 17 Jun 2019 12:29:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B2BB28E001C; Mon, 17 Jun 2019 08:28:37 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id AB7088E000B; Mon, 17 Jun 2019 08:28:37 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 97D9D8E001C; Mon, 17 Jun 2019 08:28:37 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by kanga.kvack.org (Postfix) with ESMTP id 5EA478E000B for ; Mon, 17 Jun 2019 08:28:37 -0400 (EDT) Received: by mail-pg1-f199.google.com with SMTP id k2so7647106pga.12 for ; Mon, 17 Jun 2019 05:28:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=I8PlqMUI4C1+5AXdWNAvJGUn4z7E5OvP3cFwdUwwRcM=; b=MZPUxNAPLsiAwiDQsBffWiDBsUu2NmJJx3+SnadGpWRWufTRrAFY3ARX4yltzcIt5n Eqo1txcUDKnaNQJwGDv1w5xEHO0wWo6cLi7pRUjacS7YeZ8sHTKODzzubAaUCcM5hjyL OhpnFktvx7Sg8jfxQ45YsWOaoaDyzex9gfQUVlNtZmICfSZ5+VgjJJaTCOm5DD3S/Nax 8hLuXnQxnhEuGy4HJ74p16LpabbcS/pQDrFLSbTdWIBluuYwWZkmCal41NQgqYexeBc1 IlZdBJEz7LlvKr+ftsizZnA0SptZYBOdhkvQc5q0EUObUCdC7LLoRiOwK+n8UpB4MSnK 781A== X-Gm-Message-State: APjAAAXOaqOGbT1JY5yznElWXFIxhoYXX4GDEVyUeJWwtvtR1qCUWN4y vd3VJqV/s3zGzmPD0pgR1HpEy2Upuevnmr+f3OC8ZHzTmJu0f2hQY5Mi3ydPP+cl8fqNht+msCd gaOvuVnb+tjySlzYm4WxPjCUZJ7W6hU6IlFerTzWbZWEThWHb3wnFfziklA6qAKk= X-Received: by 2002:a63:c301:: with SMTP id c1mr40749467pgd.41.1560774516950; Mon, 17 Jun 2019 05:28:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqx3qJUYy6ApN1i7Tpy3xC2kRFGYutrOAz8nV2SW31Aa5a/zeHMpCnrvR+CXA7ck6dUkO3HJ X-Received: by 2002:a63:c301:: with SMTP id c1mr40749432pgd.41.1560774516291; Mon, 17 Jun 2019 05:28:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560774516; cv=none; d=google.com; s=arc-20160816; b=SI59YAn4z20vluHvBIO1zpHnQzbrjtx2P3C/qRn3s3TgiqagUEjA07431Wl3Tc8hAl zZMyScYb7ui9pSH25cPZy/YSD/D7DZGIdFI1SV2+DZRtj+SPc1TnazUfxattpZqjIr5S G9YgOnYZvtq81jfeOdvsWDr0L8O+TH8hOtAS90SH60Jk7JohBiVJCwbBVjW8mSSJwn2r wvuxfnNbguIA2SB67VZEl7WeZ9Gezz0BiMz7KcxF8TvjEglPw4uBeosvmyABA1v0hJE0 k/7HrdwVErNvXtvUpOUayPavR0y0PhFhnAAQF3mWkUexvSLGKCASYGmjLG0Kvm3oodMP mYow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=I8PlqMUI4C1+5AXdWNAvJGUn4z7E5OvP3cFwdUwwRcM=; b=nQWOGPSXFOkiAjgVpN1gWXdleUy+RvssA/TcH1G3h5i6gUxvpr91lWFSTCMczoQqx4 bN4+njxgnBYSfdgjR479dQ+tL9cKdEy7gwP5h+UHJF0Mvszoy4hVkGG3qYe2XhjkgAtV UiXrxs2gj0B4SXKMaD6eMXLYDW5LJCccUyPqahd+jLPd3weasY1zjdVGSYKp8zpptpQa ymMpUX1L28+FzqMbsueXhsj3/RMNlYv2d8+0iQDx2yc6Il5msd6qqoK77pgjdmEqANew iMi8TZtXUY0pTHaGTXBbV72r33zi7weodracFqM06+t3XJvmMOZhF/d9wBCJG4L1H6gJ yMIQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=idjxwSVc; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id c1si10862240pld.418.2019.06.17.05.28.36 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 17 Jun 2019 05:28:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=idjxwSVc; spf=pass (google.com: best guess record for domain of batv+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+a9ecd0bfb5b639be820a+5776+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=I8PlqMUI4C1+5AXdWNAvJGUn4z7E5OvP3cFwdUwwRcM=; b=idjxwSVcGR8gj/Hv9rgN32Pbhq n+B3Dw/eAY5nzc0hWjvE0/DJdYcXUudxghMTEfuhBlOZzQqw6Kp9Ri+RNMJ+ZbD/rpwTc7jNnggaJ oWqEp9P7byqhhh4K1c+iPeFxUZ8V7J2oZFOxQqqzjxHYw+5SJgb3oBcJchVokBPs8JXyeVW8tAhRx i7ntPKqW6sOS8kblCvWSXQcLZNVxYW/7zdv6j5cHwyvtGEDGaTmZwfX2j/Yje0mucmxOeMh4+QyGl st8aBl75weQTuuByjCtZpmELlzhnz8odxyh1rYlQ1/iPx/2DY6A/ochv2KYvVjetIbSP6uDrsRviB sLz4N94A==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hcqkS-0000eV-VL; Mon, 17 Jun 2019 12:28:33 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 25/25] mm: don't select MIGRATE_VMA_HELPER from HMM_MIRROR Date: Mon, 17 Jun 2019 14:27:33 +0200 Message-Id: <20190617122733.22432-26-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190617122733.22432-1-hch@lst.de> References: <20190617122733.22432-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP The migrate_vma helper is only used by noveau to migrate device private pages around. Other HMM_MIRROR users like amdgpu or infiniband don't need it. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- drivers/gpu/drm/nouveau/Kconfig | 1 + mm/Kconfig | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig index 66c839d8e9d1..96b9814e6d06 100644 --- a/drivers/gpu/drm/nouveau/Kconfig +++ b/drivers/gpu/drm/nouveau/Kconfig @@ -88,6 +88,7 @@ config DRM_NOUVEAU_SVM depends on DRM_NOUVEAU depends on HMM_MIRROR depends on STAGING + select MIGRATE_VMA_HELPER default n help Say Y here if you want to enable experimental support for diff --git a/mm/Kconfig b/mm/Kconfig index 7fa785551f96..55c9c661e2ee 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -680,7 +680,6 @@ config HMM_MIRROR depends on (X86_64 || PPC64) depends on MMU && 64BIT select MMU_NOTIFIER - select MIGRATE_VMA_HELPER help Select HMM_MIRROR if you want to mirror range of the CPU page table of a process into a device page table. Here, mirror means "keep synchronized".