| From: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> |
| Subject: mm: update resctl to use mmap_prepare |
| Date: Wed, 17 Sep 2025 20:11:16 +0100 |
| |
| Make use of the ability to specify a remap action within mmap_prepare to |
| update the resctl pseudo-lock to use mmap_prepare in favour of the |
| deprecated mmap hook. |
| |
| Link: https://lkml.kernel.org/r/ed05dfdff6f77e33628784b6492f66f347673b50.1758135681.git.lorenzo.stoakes@oracle.com |
| Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> |
| Acked-by: Reinette Chatre <reinette.chatre@intel.com> |
| Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> |
| Cc: Alexander Gordeev <agordeev@linux.ibm.com> |
| Cc: Al Viro <viro@zeniv.linux.org.uk> |
| Cc: Andreas Larsson <andreas@gaisler.com> |
| Cc: Andrey Konovalov <andreyknvl@gmail.com> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Baolin Wang <baolin.wang@linux.alibaba.com> |
| Cc: Baoquan He <bhe@redhat.com> |
| Cc: Christian Borntraeger <borntraeger@linux.ibm.com> |
| Cc: Christian Brauner <brauner@kernel.org> |
| Cc: Dan Williams <dan.j.williams@intel.com> |
| Cc: Dave Jiang <dave.jiang@intel.com> |
| Cc: Dave Martin <dave.martin@arm.com> |
| Cc: Dave Young <dyoung@redhat.com> |
| Cc: David Hildenbrand <david@redhat.com> |
| Cc: David S. Miller <davem@davemloft.net> |
| Cc: Dmitriy Vyukov <dvyukov@google.com> |
| Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Cc: Guo Ren <guoren@kernel.org> |
| Cc: Heiko Carstens <hca@linux.ibm.com> |
| Cc: Hugh Dickins <hughd@google.com> |
| Cc: James Morse <james.morse@arm.com> |
| Cc: Jan Kara <jack@suse.cz> |
| Cc: Jann Horn <jannh@google.com> |
| Cc: Jonathan Corbet <corbet@lwn.net> |
| Cc: Kevin Tian <kevin.tian@intel.com> |
| Cc: Konstantin Komarov <almaz.alexandrovich@paragon-software.com> |
| Cc: Liam Howlett <liam.howlett@oracle.com> |
| Cc: "Luck, Tony" <tony.luck@intel.com> |
| Cc: Matthew Wilcox (Oracle) <willy@infradead.org> |
| Cc: Michal Hocko <mhocko@suse.com> |
| Cc: Mike Rapoport <rppt@kernel.org> |
| Cc: Muchun Song <muchun.song@linux.dev> |
| Cc: Nicolas Pitre <nico@fluxnic.net> |
| Cc: Oscar Salvador <osalvador@suse.de> |
| Cc: Pedro Falcato <pfalcato@suse.de> |
| Cc: Robin Murohy <robin.murphy@arm.com> |
| Cc: Suren Baghdasaryan <surenb@google.com> |
| Cc: Sven Schnelle <svens@linux.ibm.com> |
| Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> |
| Cc: "Uladzislau Rezki (Sony)" <urezki@gmail.com> |
| Cc: Vasily Gorbik <gor@linux.ibm.com> |
| Cc: Vishal Verma <vishal.l.verma@intel.com> |
| Cc: Vivek Goyal <vgoyal@redhat.com> |
| Cc: Vlastimil Babka <vbabka@suse.cz> |
| Cc: Will Deacon <will@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| fs/resctrl/pseudo_lock.c | 20 +++++++++----------- |
| 1 file changed, 9 insertions(+), 11 deletions(-) |
| |
| --- a/fs/resctrl/pseudo_lock.c~mm-update-resctl-to-use-mmap_prepare |
| +++ a/fs/resctrl/pseudo_lock.c |
| @@ -995,10 +995,11 @@ static const struct vm_operations_struct |
| .mremap = pseudo_lock_dev_mremap, |
| }; |
| |
| -static int pseudo_lock_dev_mmap(struct file *filp, struct vm_area_struct *vma) |
| +static int pseudo_lock_dev_mmap_prepare(struct vm_area_desc *desc) |
| { |
| - unsigned long vsize = vma->vm_end - vma->vm_start; |
| - unsigned long off = vma->vm_pgoff << PAGE_SHIFT; |
| + unsigned long off = desc->pgoff << PAGE_SHIFT; |
| + unsigned long vsize = vma_desc_size(desc); |
| + struct file *filp = desc->file; |
| struct pseudo_lock_region *plr; |
| struct rdtgroup *rdtgrp; |
| unsigned long physical; |
| @@ -1043,7 +1044,7 @@ static int pseudo_lock_dev_mmap(struct f |
| * Ensure changes are carried directly to the memory being mapped, |
| * do not allow copy-on-write mapping. |
| */ |
| - if (!(vma->vm_flags & VM_SHARED)) { |
| + if (!(desc->vm_flags & VM_SHARED)) { |
| mutex_unlock(&rdtgroup_mutex); |
| return -EINVAL; |
| } |
| @@ -1055,12 +1056,9 @@ static int pseudo_lock_dev_mmap(struct f |
| |
| memset(plr->kmem + off, 0, vsize); |
| |
| - if (remap_pfn_range(vma, vma->vm_start, physical + vma->vm_pgoff, |
| - vsize, vma->vm_page_prot)) { |
| - mutex_unlock(&rdtgroup_mutex); |
| - return -EAGAIN; |
| - } |
| - vma->vm_ops = &pseudo_mmap_ops; |
| + desc->vm_ops = &pseudo_mmap_ops; |
| + mmap_action_remap_full(desc, physical + desc->pgoff); |
| + |
| mutex_unlock(&rdtgroup_mutex); |
| return 0; |
| } |
| @@ -1071,7 +1069,7 @@ static const struct file_operations pseu |
| .write = NULL, |
| .open = pseudo_lock_dev_open, |
| .release = pseudo_lock_dev_release, |
| - .mmap = pseudo_lock_dev_mmap, |
| + .mmap_prepare = pseudo_lock_dev_mmap_prepare, |
| }; |
| |
| int rdt_pseudo_lock_init(void) |
| _ |