From: Jason Gunthorpe <jgg@ziepe.ca> To: linux-mm@kvack.org, Jerome Glisse <jglisse@redhat.com>, Ralph Campbell <rcampbell@nvidia.com>, John Hubbard <jhubbard@nvidia.com>, Felix.Kuehling@amd.com Cc: "Juergen Gross" <jgross@suse.com>, "David Zhou" <David1.Zhou@amd.com>, "Mike Marciniszyn" <mike.marciniszyn@intel.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "Oleksandr Andrushchenko" <oleksandr_andrushchenko@epam.com>, linux-rdma@vger.kernel.org, nouveau@lists.freedesktop.org, "Dennis Dalessandro" <dennis.dalessandro@intel.com>, amd-gfx@lists.freedesktop.org, "Christoph Hellwig" <hch@infradead.org>, "Jason Gunthorpe" <jgg@mellanox.com>, dri-devel@lists.freedesktop.org, "Alex Deucher" <alexander.deucher@amd.com>, xen-devel@lists.xenproject.org, "Boris Ostrovsky" <boris.ostrovsky@oracle.com>, "Petr Cvek" <petrcvekcz@gmail.com>, "Christian König" <christian.koenig@amd.com>, "Ben Skeggs" <bskeggs@redhat.com> Subject: [PATCH v3 01/14] mm/mmu_notifier: define the header pre-processor parts even if disabled Date: Tue, 12 Nov 2019 16:22:18 -0400 [thread overview] Message-ID: <20191112202231.3856-2-jgg@ziepe.ca> (raw) In-Reply-To: <20191112202231.3856-1-jgg@ziepe.ca> From: Jason Gunthorpe <jgg@mellanox.com> Now that we have KERNEL_HEADER_TEST all headers are generally compile tested, so relying on makefile tricks to avoid compiling code that depends on CONFIG_MMU_NOTIFIER is more annoying. Instead follow the usual pattern and provide most of the header with only the functions stubbed out when CONFIG_MMU_NOTIFIER is disabled. This ensures code compiles no matter what the config setting is. While here, struct mmu_notifier_mm is private to mmu_notifier.c, move it. Reviewed-by: Jérôme Glisse <jglisse@redhat.com> Tested-by: Ralph Campbell <rcampbell@nvidia.com> Reviewed-by: John Hubbard <jhubbard@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> --- include/linux/mmu_notifier.h | 46 +++++++++++++----------------------- mm/mmu_notifier.c | 13 ++++++++++ 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h index 1bd8e6a09a3c27..12bd603d318ce7 100644 --- a/include/linux/mmu_notifier.h +++ b/include/linux/mmu_notifier.h @@ -7,8 +7,9 @@ #include <linux/mm_types.h> #include <linux/srcu.h> +struct mmu_notifier_mm; struct mmu_notifier; -struct mmu_notifier_ops; +struct mmu_notifier_range; /** * enum mmu_notifier_event - reason for the mmu notifier callback @@ -40,36 +41,8 @@ enum mmu_notifier_event { MMU_NOTIFY_SOFT_DIRTY, }; -#ifdef CONFIG_MMU_NOTIFIER - -#ifdef CONFIG_LOCKDEP -extern struct lockdep_map __mmu_notifier_invalidate_range_start_map; -#endif - -/* - * The mmu notifier_mm structure is allocated and installed in - * mm->mmu_notifier_mm inside the mm_take_all_locks() protected - * critical section and it's released only when mm_count reaches zero - * in mmdrop(). - */ -struct mmu_notifier_mm { - /* all mmu notifiers registerd in this mm are queued in this list */ - struct hlist_head list; - /* to serialize the list modifications and hlist_unhashed */ - spinlock_t lock; -}; - #define MMU_NOTIFIER_RANGE_BLOCKABLE (1 << 0) -struct mmu_notifier_range { - struct vm_area_struct *vma; - struct mm_struct *mm; - unsigned long start; - unsigned long end; - unsigned flags; - enum mmu_notifier_event event; -}; - struct mmu_notifier_ops { /* * Called either by mmu_notifier_unregister or when the mm is @@ -249,6 +222,21 @@ struct mmu_notifier { unsigned int users; }; +#ifdef CONFIG_MMU_NOTIFIER + +#ifdef CONFIG_LOCKDEP +extern struct lockdep_map __mmu_notifier_invalidate_range_start_map; +#endif + +struct mmu_notifier_range { + struct vm_area_struct *vma; + struct mm_struct *mm; + unsigned long start; + unsigned long end; + unsigned flags; + enum mmu_notifier_event event; +}; + static inline int mm_has_notifiers(struct mm_struct *mm) { return unlikely(mm->mmu_notifier_mm); diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c index 7fde88695f35d6..367670cfd02b7b 100644 --- a/mm/mmu_notifier.c +++ b/mm/mmu_notifier.c @@ -27,6 +27,19 @@ struct lockdep_map __mmu_notifier_invalidate_range_start_map = { }; #endif +/* + * The mmu notifier_mm structure is allocated and installed in + * mm->mmu_notifier_mm inside the mm_take_all_locks() protected + * critical section and it's released only when mm_count reaches zero + * in mmdrop(). + */ +struct mmu_notifier_mm { + /* all mmu notifiers registered in this mm are queued in this list */ + struct hlist_head list; + /* to serialize the list modifications and hlist_unhashed */ + spinlock_t lock; +}; + /* * This function can't run concurrently against mmu_notifier_register * because mm->mm_users > 0 during mmu_notifier_register and exit_mmap -- 2.24.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@ziepe.ca> To: linux-mm@kvack.org, Jerome Glisse <jglisse@redhat.com>, Ralph Campbell <rcampbell@nvidia.com>, John Hubbard <jhubbard@nvidia.com>, Felix.Kuehling@amd.com Cc: "Juergen Gross" <jgross@suse.com>, "David Zhou" <David1.Zhou@amd.com>, "Mike Marciniszyn" <mike.marciniszyn@intel.com>, "Stefano Stabellini" <sstabellini@kernel.org>, "Oleksandr Andrushchenko" <oleksandr_andrushchenko@epam.com>, linux-rdma@vger.kernel.org, nouveau@lists.freedesktop.org, "Dennis Dalessandro" <dennis.dalessandro@intel.com>, amd-gfx@lists.freedesktop.org, "Christoph Hellwig" <hch@infradead.org>, "Jason Gunthorpe" <jgg@mellanox.com>, dri-devel@lists.freedesktop.org, "Alex Deucher" <alexander.deucher@amd.com>, xen-devel@lists.xenproject.org, "Boris Ostrovsky" <boris.ostrovsky@oracle.com>, "Petr Cvek" <petrcvekcz@gmail.com>, "Christian König" <christian.koenig@amd.com>, "Ben Skeggs" <bskeggs@redhat.com> Subject: [PATCH v3 01/14] mm/mmu_notifier: define the header pre-processor parts even if disabled Date: Tue, 12 Nov 2019 16:22:18 -0400 [thread overview] Message-ID: <20191112202231.3856-2-jgg@ziepe.ca> (raw) Message-ID: <20191112202218.Fxxyxhopo_tmdL3cuJWiuzX3FUUtCC4WxlIIsvOW11Q@z> (raw) In-Reply-To: <20191112202231.3856-1-jgg@ziepe.ca> From: Jason Gunthorpe <jgg@mellanox.com> Now that we have KERNEL_HEADER_TEST all headers are generally compile tested, so relying on makefile tricks to avoid compiling code that depends on CONFIG_MMU_NOTIFIER is more annoying. Instead follow the usual pattern and provide most of the header with only the functions stubbed out when CONFIG_MMU_NOTIFIER is disabled. This ensures code compiles no matter what the config setting is. While here, struct mmu_notifier_mm is private to mmu_notifier.c, move it. Reviewed-by: Jérôme Glisse <jglisse@redhat.com> Tested-by: Ralph Campbell <rcampbell@nvidia.com> Reviewed-by: John Hubbard <jhubbard@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> --- include/linux/mmu_notifier.h | 46 +++++++++++++----------------------- mm/mmu_notifier.c | 13 ++++++++++ 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h index 1bd8e6a09a3c27..12bd603d318ce7 100644 --- a/include/linux/mmu_notifier.h +++ b/include/linux/mmu_notifier.h @@ -7,8 +7,9 @@ #include <linux/mm_types.h> #include <linux/srcu.h> +struct mmu_notifier_mm; struct mmu_notifier; -struct mmu_notifier_ops; +struct mmu_notifier_range; /** * enum mmu_notifier_event - reason for the mmu notifier callback @@ -40,36 +41,8 @@ enum mmu_notifier_event { MMU_NOTIFY_SOFT_DIRTY, }; -#ifdef CONFIG_MMU_NOTIFIER - -#ifdef CONFIG_LOCKDEP -extern struct lockdep_map __mmu_notifier_invalidate_range_start_map; -#endif - -/* - * The mmu notifier_mm structure is allocated and installed in - * mm->mmu_notifier_mm inside the mm_take_all_locks() protected - * critical section and it's released only when mm_count reaches zero - * in mmdrop(). - */ -struct mmu_notifier_mm { - /* all mmu notifiers registerd in this mm are queued in this list */ - struct hlist_head list; - /* to serialize the list modifications and hlist_unhashed */ - spinlock_t lock; -}; - #define MMU_NOTIFIER_RANGE_BLOCKABLE (1 << 0) -struct mmu_notifier_range { - struct vm_area_struct *vma; - struct mm_struct *mm; - unsigned long start; - unsigned long end; - unsigned flags; - enum mmu_notifier_event event; -}; - struct mmu_notifier_ops { /* * Called either by mmu_notifier_unregister or when the mm is @@ -249,6 +222,21 @@ struct mmu_notifier { unsigned int users; }; +#ifdef CONFIG_MMU_NOTIFIER + +#ifdef CONFIG_LOCKDEP +extern struct lockdep_map __mmu_notifier_invalidate_range_start_map; +#endif + +struct mmu_notifier_range { + struct vm_area_struct *vma; + struct mm_struct *mm; + unsigned long start; + unsigned long end; + unsigned flags; + enum mmu_notifier_event event; +}; + static inline int mm_has_notifiers(struct mm_struct *mm) { return unlikely(mm->mmu_notifier_mm); diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c index 7fde88695f35d6..367670cfd02b7b 100644 --- a/mm/mmu_notifier.c +++ b/mm/mmu_notifier.c @@ -27,6 +27,19 @@ struct lockdep_map __mmu_notifier_invalidate_range_start_map = { }; #endif +/* + * The mmu notifier_mm structure is allocated and installed in + * mm->mmu_notifier_mm inside the mm_take_all_locks() protected + * critical section and it's released only when mm_count reaches zero + * in mmdrop(). + */ +struct mmu_notifier_mm { + /* all mmu notifiers registered in this mm are queued in this list */ + struct hlist_head list; + /* to serialize the list modifications and hlist_unhashed */ + spinlock_t lock; +}; + /* * This function can't run concurrently against mmu_notifier_register * because mm->mm_users > 0 during mmu_notifier_register and exit_mmap -- 2.24.0 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next prev parent reply other threads:[~2019-11-12 20:22 UTC|newest] Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-12 20:22 [PATCH hmm v3 00/14] Consolidate the mmu notifier interval_tree and locking Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe [this message] 2019-11-12 20:22 ` [PATCH v3 01/14] mm/mmu_notifier: define the header pre-processor parts even if disabled Jason Gunthorpe 2019-11-13 13:52 ` Christoph Hellwig 2019-11-13 13:52 ` Christoph Hellwig 2019-11-12 20:22 ` [PATCH v3 02/14] mm/mmu_notifier: add an interval tree notifier Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-13 13:59 ` Christoph Hellwig 2019-11-13 13:59 ` Christoph Hellwig 2019-11-13 16:46 ` Jason Gunthorpe 2019-11-13 16:46 ` Jason Gunthorpe 2019-11-23 0:54 ` Ralph Campbell 2019-11-23 0:54 ` Ralph Campbell 2019-11-23 23:59 ` Jason Gunthorpe 2019-11-23 23:59 ` Jason Gunthorpe 2019-11-12 20:22 ` [PATCH v3 03/14] mm/hmm: allow hmm_range to be used with a mmu_interval_notifier or hmm_mirror Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-13 14:00 ` Christoph Hellwig 2019-11-13 14:00 ` Christoph Hellwig 2019-11-12 20:22 ` [PATCH v3 04/14] mm/hmm: define the pre-processor related parts of hmm.h even if disabled Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-13 14:01 ` Christoph Hellwig 2019-11-13 14:01 ` Christoph Hellwig 2019-11-12 20:22 ` [PATCH v3 05/14] RDMA/odp: Use mmu_interval_notifier_insert() Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-12 20:22 ` [PATCH v3 06/14] RDMA/hfi1: Use mmu_interval_notifier_insert for user_exp_rcv Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-12 20:22 ` [PATCH v3 07/14] drm/radeon: use mmu_interval_notifier_insert Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-12 20:22 ` [PATCH v3 08/14] nouveau: use mmu_notifier directly for invalidate_range_start Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-12 20:22 ` [PATCH v3 09/14] nouveau: use mmu_interval_notifier instead of hmm_mirror Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-12 20:22 ` [PATCH v3 10/14] drm/amdgpu: Call find_vma under mmap_sem Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-12 20:22 ` [PATCH v3 11/14] drm/amdgpu: Use mmu_interval_insert instead of hmm_mirror Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-12 20:22 ` [PATCH v3 12/14] drm/amdgpu: Use mmu_interval_notifier " Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-19 19:59 ` Philip Yang 2019-11-19 19:59 ` Philip Yang 2019-11-12 20:22 ` [PATCH v3 13/14] mm/hmm: remove hmm_mirror and related Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe 2019-11-13 14:02 ` Christoph Hellwig 2019-11-13 14:02 ` Christoph Hellwig 2019-11-12 20:22 ` [PATCH v3 14/14] xen/gntdev: use mmu_interval_notifier_insert Jason Gunthorpe 2019-11-12 20:22 ` Jason Gunthorpe
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=20191112202231.3856-2-jgg@ziepe.ca \ --to=jgg@ziepe.ca \ --cc=David1.Zhou@amd.com \ --cc=Felix.Kuehling@amd.com \ --cc=alexander.deucher@amd.com \ --cc=amd-gfx@lists.freedesktop.org \ --cc=boris.ostrovsky@oracle.com \ --cc=bskeggs@redhat.com \ --cc=christian.koenig@amd.com \ --cc=dennis.dalessandro@intel.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=hch@infradead.org \ --cc=jgg@mellanox.com \ --cc=jglisse@redhat.com \ --cc=jgross@suse.com \ --cc=jhubbard@nvidia.com \ --cc=linux-mm@kvack.org \ --cc=linux-rdma@vger.kernel.org \ --cc=mike.marciniszyn@intel.com \ --cc=nouveau@lists.freedesktop.org \ --cc=oleksandr_andrushchenko@epam.com \ --cc=petrcvekcz@gmail.com \ --cc=rcampbell@nvidia.com \ --cc=sstabellini@kernel.org \ --cc=xen-devel@lists.xenproject.org \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).