From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 25E44C0044D for ; Mon, 16 Mar 2020 20:55:45 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E7F6A20679 for ; Mon, 16 Mar 2020 20:55:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=nvidia.com header.i=@nvidia.com header.b="DITaQRak" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E7F6A20679 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 425376E4DD; Mon, 16 Mar 2020 20:55:44 +0000 (UTC) Received: from hqnvemgate26.nvidia.com (hqnvemgate26.nvidia.com [216.228.121.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8548F6E4DD; Mon, 16 Mar 2020 20:55:43 +0000 (UTC) Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate26.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Mon, 16 Mar 2020 13:55:30 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate102.nvidia.com (PGP Universal service); Mon, 16 Mar 2020 13:55:43 -0700 X-PGP-Universal: processed; by hqpgpgate102.nvidia.com on Mon, 16 Mar 2020 13:55:43 -0700 Received: from rcampbell-dev.nvidia.com (10.124.1.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 16 Mar 2020 20:55:42 +0000 Subject: Re: [PATCH 1/4] memremap: add an owner field to struct dev_pagemap To: Christoph Hellwig , Jason Gunthorpe , Dan Williams , Bharata B Rao , =?UTF-8?Q?Christian_K=c3=b6nig?= , Ben Skeggs References: <20200316193216.920734-1-hch@lst.de> <20200316193216.920734-2-hch@lst.de> X-Nvconfidentiality: public From: Ralph Campbell Message-ID: Date: Mon, 16 Mar 2020 13:55:40 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 MIME-Version: 1.0 In-Reply-To: <20200316193216.920734-2-hch@lst.de> X-Originating-IP: [10.124.1.5] X-ClientProxiedBy: HQMAIL101.nvidia.com (172.20.187.10) To HQMAIL107.nvidia.com (172.20.187.13) Content-Language: en-US DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1584392130; bh=0aYvPtJbjqch4ne24GuhOWD+PoFcLm231x6U+7kZWAs=; h=X-PGP-Universal:Subject:To:CC:References:X-Nvconfidentiality:From: Message-ID:Date:User-Agent:MIME-Version:In-Reply-To: X-Originating-IP:X-ClientProxiedBy:Content-Type:Content-Language: Content-Transfer-Encoding; b=DITaQRakDsVSmGgSZKi1PGUUH+bPNs/QPdDH6im7uTaWf10+4t1ICJeKBx2iGGrjO D1Nm4+XFyD1CTkESpqEJCLF5vL6O6R9u4RqmGc6sQkE1lfAn0DcpTCCVa6soJ+nrXj 47qWJWoqGKXcox8VntW4qx/9NaOhfRYGMtzwQF5Bx3muX+BK1gGKH1b/mORuFsz1gw DSW+RtOQ7304OqeICUUdFZqcg71Na861f/VbjiE+o3bFI53V1SgzsCf1SDFF1jhxpH NyEgrQwVohlRMiOS7pNX9UKWoLGWUSQC4lnW9zknTBG9RsCtbJHttoiKllzaf6fRzH D4VSBo4TyProQ== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kvm-ppc@vger.kernel.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, Jerome Glisse , amd-gfx@lists.freedesktop.org Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On 3/16/20 12:32 PM, Christoph Hellwig wrote: > Add a new opaque owner field to struct dev_pagemap, which will allow > the hmm and migrate_vma code to identify who owns ZONE_DEVICE memory, > and refuse to work on mappings not owned by the calling entity. > > Signed-off-by: Christoph Hellwig This looks like a reasonable approach to take. Reviewed-by: Ralph Campbell > --- > arch/powerpc/kvm/book3s_hv_uvmem.c | 2 ++ > drivers/gpu/drm/nouveau/nouveau_dmem.c | 1 + > include/linux/memremap.h | 4 ++++ > mm/memremap.c | 4 ++++ > 4 files changed, 11 insertions(+) > > diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c > index 79b1202b1c62..67fefb03b9b7 100644 > --- a/arch/powerpc/kvm/book3s_hv_uvmem.c > +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c > @@ -779,6 +779,8 @@ int kvmppc_uvmem_init(void) > kvmppc_uvmem_pgmap.type = MEMORY_DEVICE_PRIVATE; > kvmppc_uvmem_pgmap.res = *res; > kvmppc_uvmem_pgmap.ops = &kvmppc_uvmem_ops; > + /* just one global instance: */ > + kvmppc_uvmem_pgmap.owner = &kvmppc_uvmem_pgmap; > addr = memremap_pages(&kvmppc_uvmem_pgmap, NUMA_NO_NODE); > if (IS_ERR(addr)) { > ret = PTR_ERR(addr); > diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c > index 0ad5d87b5a8e..a4682272586e 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_dmem.c > +++ b/drivers/gpu/drm/nouveau/nouveau_dmem.c > @@ -526,6 +526,7 @@ nouveau_dmem_init(struct nouveau_drm *drm) > drm->dmem->pagemap.type = MEMORY_DEVICE_PRIVATE; > drm->dmem->pagemap.res = *res; > drm->dmem->pagemap.ops = &nouveau_dmem_pagemap_ops; > + drm->dmem->pagemap.owner = drm->dev; > if (IS_ERR(devm_memremap_pages(device, &drm->dmem->pagemap))) > goto out_free; > > diff --git a/include/linux/memremap.h b/include/linux/memremap.h > index 6fefb09af7c3..60d97e8fd3c0 100644 > --- a/include/linux/memremap.h > +++ b/include/linux/memremap.h > @@ -103,6 +103,9 @@ struct dev_pagemap_ops { > * @type: memory type: see MEMORY_* in memory_hotplug.h > * @flags: PGMAP_* flags to specify defailed behavior > * @ops: method table > + * @owner: an opaque pointer identifying the entity that manages this > + * instance. Used by various helpers to make sure that no > + * foreign ZONE_DEVICE memory is accessed. > */ > struct dev_pagemap { > struct vmem_altmap altmap; > @@ -113,6 +116,7 @@ struct dev_pagemap { > enum memory_type type; > unsigned int flags; > const struct dev_pagemap_ops *ops; > + void *owner; > }; > > static inline struct vmem_altmap *pgmap_altmap(struct dev_pagemap *pgmap) > diff --git a/mm/memremap.c b/mm/memremap.c > index 09b5b7adc773..9b2c97ceb775 100644 > --- a/mm/memremap.c > +++ b/mm/memremap.c > @@ -181,6 +181,10 @@ void *memremap_pages(struct dev_pagemap *pgmap, int nid) > WARN(1, "Missing migrate_to_ram method\n"); > return ERR_PTR(-EINVAL); > } > + if (!pgmap->owner) { > + WARN(1, "Missing owner\n"); > + return ERR_PTR(-EINVAL); > + } > break; > case MEMORY_DEVICE_FS_DAX: > if (!IS_ENABLED(CONFIG_ZONE_DEVICE) || > _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel