From: Christoph Hellwig <firstname.lastname@example.org> To: Felix Kuehling <email@example.com> Cc: Christoph Hellwig <firstname.lastname@example.org>, "Sierra Guiza, Alejandro (Alex)" <email@example.com>, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, Dan Williams <email@example.com> Subject: Re: [PATCH v1 03/14] mm: add iomem vma selection for memory migration Date: Thu, 2 Sep 2021 10:18:26 +0200 [thread overview] Message-ID: <20210902081826.GA16283@lst.de> (raw) In-Reply-To: <firstname.lastname@example.org> On Wed, Sep 01, 2021 at 11:40:43AM -0400, Felix Kuehling wrote: > >>> It looks like I'm totally misunderstanding what you are adding here > >>> then. Why do we need any special treatment at all for memory that > >>> has normal struct pages and is part of the direct kernel map? > >> The pages are like normal memory for purposes of mapping them in CPU > >> page tables and for coherent access from the CPU. > > That's the user page tables. What about the kernel direct map? > > If there is a normal kernel struct page backing there really should > > be no need for the pgmap. > > I'm not sure. The physical address ranges are in the UEFI system address > map as special-purpose memory. Does Linux create the struct pages and > kernel direct map for that without a pgmap call? I didn't see that last > time I went digging through that code. So doing some googling finds a patch from Dan that claims to hand EFI special purpose memory to the device dax driver. But when I try to follow the version that got merged it looks it is treated simply as an MMIO region to be claimed by drivers, which would not get a struct page. Dan, did I misunderstand how E820_TYPE_SOFT_RESERVED works? > >> From an application > >> perspective, we want file-backed and anonymous mappings to be able to > >> use DEVICE_PUBLIC pages with coherent CPU access. The goal is to > >> optimize performance for GPU heavy workloads while minimizing the need > >> to migrate data back-and-forth between system memory and device memory. > > I don't really understand that part. file backed pages are always > > allocated by the file system using the pagecache helpers, that is > > using the page allocator. Anonymouns memory also always comes from > > the page allocator. > > I'm coming at this from my experience with DEVICE_PRIVATE. Both > anonymous and file-backed pages should be migrateable to DEVICE_PRIVATE > memory by the migrate_vma_* helpers for more efficient access by our > GPU. (*) It's part of the basic premise of HMM as I understand it. I > would expect the same thing to work for DEVICE_PUBLIC memory. Ok, so you want to migrate to and from them. Not use DEVICE_PUBLIC for the actual page cache pages. That maks a lot more sense. > I see DEVICE_PUBLIC as an improved version of DEVICE_PRIVATE that allows > the CPU to map the device memory coherently to minimize the need for > migrations when CPU and GPU access the same memory concurrently or > alternatingly. But we're not going as far as putting that memory > entirely under the management of the Linux memory manager and VM > subsystem. Our (and HPE's) system architects decided that this memory is > not suitable to be used like regular NUMA system memory by the Linux > memory manager. So yes. It is a Memory Mapped I/O region, which unlike the PCIe BARs that people typically deal with is fully cache coherent. I think this does make more sense as a description. But to go back to what start this discussion: If these are memory mapped I/O pfn_valid should generally not return true for them. And as you already pointed out in reply to Alex we need to tighten the selection criteria one way or another.
next prev parent reply other threads:[~2021-09-02 8:18 UTC|newest] Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-25 3:48 [PATCH v1 00/14] Add MEMORY_DEVICE_PUBLIC for CPU-accessible coherent device memory Alex Sierra 2021-08-25 3:48 ` [PATCH v1 01/14] ext4/xfs: add page refcount helper Alex Sierra 2021-08-25 7:35 ` Christoph Hellwig 2021-08-25 15:09 ` Theodore Ts'o 2021-08-25 15:49 ` Darrick J. Wong 2021-08-25 3:48 ` [PATCH v1 02/14] mm: remove extra ZONE_DEVICE struct page refcount Alex Sierra 2021-08-25 7:35 ` Christoph Hellwig 2021-08-25 11:15 ` Vlastimil Babka 2021-08-25 17:49 ` Ralph Campbell 2021-08-27 11:26 ` Vlastimil Babka 2021-08-25 3:48 ` [PATCH v1 03/14] mm: add iomem vma selection for memory migration Alex Sierra 2021-08-25 7:40 ` Christoph Hellwig 2021-08-25 7:46 ` Christoph Hellwig 2021-08-25 18:24 ` Sierra Guiza, Alejandro (Alex) 2021-08-26 22:27 ` Felix Kuehling 2021-08-30 8:28 ` Christoph Hellwig 2021-08-30 17:04 ` Felix Kuehling 2021-09-01 8:29 ` Christoph Hellwig 2021-09-01 15:40 ` Felix Kuehling 2021-09-01 22:03 ` Dave Chinner 2021-09-01 23:07 ` Felix Kuehling 2021-09-02 1:14 ` Dave Chinner 2021-09-09 4:55 ` Felix Kuehling 2021-09-02 8:18 ` Christoph Hellwig [this message] 2021-09-02 18:07 ` Dan Williams 2021-09-09 4:02 ` Felix Kuehling 2021-08-25 14:24 ` Felix Kuehling 2021-08-25 3:48 ` [PATCH v1 04/14] mm: add zone device public type memory support Alex Sierra 2021-08-25 3:48 ` [PATCH v1 05/14] drm/amdkfd: ref count init for device pages Alex Sierra 2021-08-25 14:34 ` Felix Kuehling 2021-08-25 3:48 ` [PATCH v1 06/14] drm/amdkfd: add SPM support for SVM Alex Sierra 2021-08-25 14:45 ` Felix Kuehling 2021-08-25 3:48 ` [PATCH v1 07/14] drm/amdkfd: public type as sys mem on migration to ram Alex Sierra 2021-08-25 3:48 ` [PATCH v1 08/14] mm: add public type support to migrate_vma helpers Alex Sierra 2021-08-25 7:47 ` Christoph Hellwig 2021-08-25 3:48 ` [PATCH v1 09/14] mm: call pgmap->ops->page_free for DEVICE_PUBLIC pages Alex Sierra 2021-08-25 7:46 ` Christoph Hellwig 2021-08-25 3:48 ` [PATCH v1 10/14] lib: test_hmm add ioctl to get zone device type Alex Sierra 2021-08-25 3:48 ` [PATCH v1 11/14] lib: test_hmm add module param for " Alex Sierra 2021-08-25 3:48 ` [PATCH v1 12/14] lib: add support for device public type in test_hmm Alex Sierra 2021-08-25 3:48 ` [PATCH v1 13/14] tools: update hmm-test to support device public type Alex Sierra 2021-08-25 3:48 ` [PATCH v1 14/14] tools: update test_hmm script to support SP config Alex Sierra
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210902081826.GA16283@lst.de \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [PATCH v1 03/14] mm: add iomem vma selection for memory migration' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).