All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: Dave Hansen <dave.hansen@intel.com>,
	Fenghua Yu <fenghua.yu@intel.com>,
	Tony Luck <tony.luck@intel.com>, Ashok Raj <ashok.raj@intel.com>,
	Ravi V Shankar <ravi.v.shankar@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	robin.murphy@arm.com, Dave Hansen <dave.hansen@linux.intel.com>,
	x86 <x86@kernel.org>, linux-kernel <linux-kernel@vger.kernel.org>,
	iommu <iommu@lists.linux-foundation.org>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Andy Lutomirski <luto@kernel.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	zhangfei.gao@linaro.org, Thomas Gleixner <tglx@linutronix.de>,
	will@kernel.org
Subject: Re: [PATCH v4 05/11] iommu/sva: Assign a PASID to mm on PASID allocation and free it on mm exit
Date: Mon, 25 Apr 2022 17:13:02 +0100	[thread overview]
Message-ID: <YmbIjnHtibY7n4Wb@myrica> (raw)
In-Reply-To: <20220425083444.00af5674@jacob-builder>

Hi Jacob,

On Mon, Apr 25, 2022 at 08:34:44AM -0700, Jacob Pan wrote:
> Hi Jean-Philippe,
> 
> On Mon, 25 Apr 2022 15:26:40 +0100, Jean-Philippe Brucker
> <jean-philippe@linaro.org> wrote:
> 
> > On Mon, Apr 25, 2022 at 07:18:36AM -0700, Dave Hansen wrote:
> > > On 4/25/22 06:53, Jean-Philippe Brucker wrote:  
> > > > On Sat, Apr 23, 2022 at 07:13:39PM +0800, zhangfei.gao@foxmail.com
> > > > wrote:  
> > > >>>> On 5.17
> > > >>>> fops_release is called automatically, as well as
> > > >>>> iommu_sva_unbind_device. On 5.18-rc1.
> > > >>>> fops_release is not called, have to manually call close(fd)  
> > > >>> Right that's weird  
> > > >> Looks it is caused by the fix patch, via mmget, which may add
> > > >> refcount of fd.  
> > > > Yes indirectly I think: when the process mmaps the queue,
> > > > mmap_region() takes a reference to the uacce fd. That reference is
> > > > released either by explicit close() or munmap(), or by exit_mmap()
> > > > (which is triggered by mmput()). Since there is an mm->fd dependency,
> > > > we cannot add a fd->mm dependency, so no mmget()/mmput() in
> > > > bind()/unbind().
> > > > 
> > > > I guess we should go back to refcounted PASIDs instead, to avoid
> > > > freeing them until unbind().  
> > > 
> > > Yeah, this is a bit gnarly for -rc4.  Let's just make sure there's
> > > nothing else simple we can do.
> > > 
> > > How does the IOMMU hardware know that all activity to a given PASID is
> > > finished?  That activity should, today, be independent of an mm or a
> > > fd's lifetime.  
> > 
> > In the case of uacce, it's tied to the fd lifetime: opening an accelerator
> > queue calls iommu_sva_bind_device(), which sets up the PASID context in
> > the IOMMU. Closing the queue calls iommu_sva_unbind_device() which
> > destroys the PASID context (after the device driver stopped all DMA for
> > this PASID).
> > 
> For VT-d, it is essentially the same flow except managed by the individual
> drivers such as DSA.
> If free() happens before unbind(), we deactivate the PASIDs and suppress
> faults from the device. When the unbind finally comes, we finalize the
> PASID teardown. It seems we have a need for an intermediate state where
> PASID is "pending free"?

Yes we do have that state, though I'm not sure we need to make it explicit
in the ioasid allocator.

Could we move mm_pasid_drop() to __mmdrop() instead of __mmput()?  For Arm
we do need to hold the mm_count until unbind(), and mmgrab()/mmdrop() is
also part of Lu's rework [1].

Thanks,
Jean

[1] https://lore.kernel.org/linux-iommu/20220421052121.3464100-9-baolu.lu@linux.intel.com/

WARNING: multiple messages have this Message-ID (diff)
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: Ravi V Shankar <ravi.v.shankar@intel.com>,
	Tony Luck <tony.luck@intel.com>, Ashok Raj <ashok.raj@intel.com>,
	Fenghua Yu <fenghua.yu@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	will@kernel.org, Dave Hansen <dave.hansen@linux.intel.com>,
	x86 <x86@kernel.org>, linux-kernel <linux-kernel@vger.kernel.org>,
	Dave Hansen <dave.hansen@intel.com>,
	iommu <iommu@lists.linux-foundation.org>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Andy Lutomirski <luto@kernel.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	zhangfei.gao@linaro.org, Thomas Gleixner <tglx@linutronix.de>,
	robin.murphy@arm.com
Subject: Re: [PATCH v4 05/11] iommu/sva: Assign a PASID to mm on PASID allocation and free it on mm exit
Date: Mon, 25 Apr 2022 17:13:02 +0100	[thread overview]
Message-ID: <YmbIjnHtibY7n4Wb@myrica> (raw)
In-Reply-To: <20220425083444.00af5674@jacob-builder>

Hi Jacob,

On Mon, Apr 25, 2022 at 08:34:44AM -0700, Jacob Pan wrote:
> Hi Jean-Philippe,
> 
> On Mon, 25 Apr 2022 15:26:40 +0100, Jean-Philippe Brucker
> <jean-philippe@linaro.org> wrote:
> 
> > On Mon, Apr 25, 2022 at 07:18:36AM -0700, Dave Hansen wrote:
> > > On 4/25/22 06:53, Jean-Philippe Brucker wrote:  
> > > > On Sat, Apr 23, 2022 at 07:13:39PM +0800, zhangfei.gao@foxmail.com
> > > > wrote:  
> > > >>>> On 5.17
> > > >>>> fops_release is called automatically, as well as
> > > >>>> iommu_sva_unbind_device. On 5.18-rc1.
> > > >>>> fops_release is not called, have to manually call close(fd)  
> > > >>> Right that's weird  
> > > >> Looks it is caused by the fix patch, via mmget, which may add
> > > >> refcount of fd.  
> > > > Yes indirectly I think: when the process mmaps the queue,
> > > > mmap_region() takes a reference to the uacce fd. That reference is
> > > > released either by explicit close() or munmap(), or by exit_mmap()
> > > > (which is triggered by mmput()). Since there is an mm->fd dependency,
> > > > we cannot add a fd->mm dependency, so no mmget()/mmput() in
> > > > bind()/unbind().
> > > > 
> > > > I guess we should go back to refcounted PASIDs instead, to avoid
> > > > freeing them until unbind().  
> > > 
> > > Yeah, this is a bit gnarly for -rc4.  Let's just make sure there's
> > > nothing else simple we can do.
> > > 
> > > How does the IOMMU hardware know that all activity to a given PASID is
> > > finished?  That activity should, today, be independent of an mm or a
> > > fd's lifetime.  
> > 
> > In the case of uacce, it's tied to the fd lifetime: opening an accelerator
> > queue calls iommu_sva_bind_device(), which sets up the PASID context in
> > the IOMMU. Closing the queue calls iommu_sva_unbind_device() which
> > destroys the PASID context (after the device driver stopped all DMA for
> > this PASID).
> > 
> For VT-d, it is essentially the same flow except managed by the individual
> drivers such as DSA.
> If free() happens before unbind(), we deactivate the PASIDs and suppress
> faults from the device. When the unbind finally comes, we finalize the
> PASID teardown. It seems we have a need for an intermediate state where
> PASID is "pending free"?

Yes we do have that state, though I'm not sure we need to make it explicit
in the ioasid allocator.

Could we move mm_pasid_drop() to __mmdrop() instead of __mmput()?  For Arm
we do need to hold the mm_count until unbind(), and mmgrab()/mmdrop() is
also part of Lu's rework [1].

Thanks,
Jean

[1] https://lore.kernel.org/linux-iommu/20220421052121.3464100-9-baolu.lu@linux.intel.com/
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

  reply	other threads:[~2022-04-25 16:13 UTC|newest]

Thread overview: 214+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-07 23:02 [PATCH v4 00/11] Re-enable ENQCMD and PASID MSR Fenghua Yu
2022-02-07 23:02 ` Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 01/11] iommu/sva: Rename CONFIG_IOMMU_SVA_LIB to CONFIG_IOMMU_SVA Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-08  2:39   ` Lu Baolu
2022-02-08  2:39     ` Lu Baolu
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 02/11] mm: Change CONFIG option for mm->pasid field Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-08  2:40   ` Lu Baolu
2022-02-08  2:40     ` Lu Baolu
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 03/11] iommu/ioasid: Introduce a helper to check for valid PASIDs Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-08  2:40   ` Lu Baolu
2022-02-08  2:40     ` Lu Baolu
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 04/11] kernel/fork: Initialize mm's PASID Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-14 17:23   ` Thomas Gleixner
2022-02-14 17:23     ` Thomas Gleixner
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 05/11] iommu/sva: Assign a PASID to mm on PASID allocation and free it on mm exit Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-08  2:41   ` Lu Baolu
2022-02-08  2:41     ` Lu Baolu
2022-02-08 15:01     ` Fenghua Yu
2022-02-08 15:01       ` Fenghua Yu
2022-02-10  3:16   ` Jacob Pan
2022-02-10  3:16     ` Jacob Pan
2022-02-10 16:27     ` Fenghua Yu
2022-02-10 16:27       ` Fenghua Yu
2022-02-10 17:24       ` Luck, Tony
2022-02-10 17:24         ` Luck, Tony
2022-02-10 18:31         ` Fenghua Yu
2022-02-10 18:31           ` Fenghua Yu
2022-02-10 23:52           ` Fenghua Yu
2022-02-10 23:52             ` Fenghua Yu
2022-02-10 18:49     ` Jacob Pan
2022-02-10 18:49       ` Jacob Pan
2022-02-10 23:15       ` Fenghua Yu
2022-02-10 23:15         ` Fenghua Yu
2022-02-11 22:00   ` Dave Hansen
2022-02-11 22:00     ` Dave Hansen
2022-02-14 17:24   ` Thomas Gleixner
2022-02-14 17:24     ` Thomas Gleixner
2022-02-15  9:55   ` Joerg Roedel
2022-02-15  9:55     ` Joerg Roedel
2022-04-11 14:00     ` Zhangfei Gao
2022-04-11 14:10       ` Dave Hansen
2022-04-11 14:10         ` Dave Hansen
2022-04-11 14:20         ` zhangfei.gao
2022-04-11 14:20           ` zhangfei.gao
2022-04-11 14:36           ` Dave Hansen
2022-04-11 14:36             ` Dave Hansen
2022-04-11 14:44             ` zhangfei.gao
2022-04-11 14:44               ` zhangfei.gao
2022-04-11 14:52               ` Dave Hansen
2022-04-11 14:52                 ` Dave Hansen
2022-04-11 15:13                 ` zhangfei.gao
2022-04-11 15:13                   ` zhangfei.gao
2022-04-12  7:04                 ` zhangfei.gao
2022-04-12  7:04                   ` zhangfei.gao
2022-04-12 13:41                   ` Fenghua Yu
2022-04-12 13:41                     ` Fenghua Yu
2022-04-12 14:39                     ` Dave Hansen
2022-04-12 14:39                       ` Dave Hansen
2022-04-15  9:59                       ` Fenghua Yu
2022-04-15  9:59                         ` Fenghua Yu
2022-04-12 15:35                     ` zhangfei.gao
2022-04-12 15:35                       ` zhangfei.gao
2022-04-14 10:08                       ` zhangfei.gao
2022-04-14 10:08                         ` zhangfei.gao
2022-04-15  9:51                         ` Fenghua Yu
2022-04-15  9:51                           ` Fenghua Yu
2022-04-15 10:14                           ` zhangfei.gao
2022-04-15 10:14                             ` zhangfei.gao
2022-04-15 10:14                               ` zhangfei.gao
2022-04-15 10:50                             ` Fenghua Yu
2022-04-15 10:50                               ` Fenghua Yu
2022-04-15 11:52                               ` zhangfei.gao
2022-04-15 11:52                                 ` zhangfei.gao
2022-04-15 12:37                                 ` Fenghua Yu
2022-04-15 12:37                                   ` Fenghua Yu
2022-04-16  1:30                                   ` zhangfei.gao
2022-04-16  1:30                                     ` zhangfei.gao
2022-04-15 19:07                                 ` Fenghua Yu
2022-04-15 19:07                                   ` Fenghua Yu
2022-04-15 21:00                                 ` Jacob Pan
2022-04-15 21:00                                   ` Jacob Pan
2022-04-16  1:43                                   ` zhangfei.gao
2022-04-16  1:43                                     ` zhangfei.gao
2022-04-18 18:14                                     ` Jacob Pan
2022-04-18 18:14                                       ` Jacob Pan
2022-04-19  1:02                                       ` zhangfei.gao
2022-04-19  1:02                                         ` zhangfei.gao
2022-04-18  6:34                                   ` Tian, Kevin
2022-04-18  6:34                                     ` Tian, Kevin
2022-04-18 18:11                                     ` Jacob Pan
2022-04-18 18:11                                       ` Jacob Pan
2022-04-20 16:45                           ` Jean-Philippe Brucker
2022-04-20 16:45                             ` Jean-Philippe Brucker
2022-04-21  6:47                             ` zhangfei.gao
2022-04-21  6:47                               ` zhangfei.gao
2022-04-22  9:03                               ` zhangfei.gao
2022-04-22  9:03                                 ` zhangfei.gao
2022-04-22 10:11                                 ` Jean-Philippe Brucker
2022-04-22 10:11                                   ` Jean-Philippe Brucker
2022-04-22 13:15                                   ` zhangfei.gao
2022-04-22 13:15                                     ` zhangfei.gao
2022-04-22 15:50                                     ` Jean-Philippe Brucker
2022-04-22 15:50                                       ` Jean-Philippe Brucker
2022-04-23 11:13                                       ` zhangfei.gao
2022-04-23 11:13                                         ` zhangfei.gao
2022-04-24  2:58                                         ` Zhangfei Gao
2022-04-24  2:58                                           ` Zhangfei Gao
2022-04-24  9:52                                           ` Zhangfei Gao
2022-04-24  9:52                                             ` Zhangfei Gao
2022-04-25 13:53                                         ` Jean-Philippe Brucker
2022-04-25 13:53                                           ` Jean-Philippe Brucker
2022-04-25 14:18                                           ` Dave Hansen
2022-04-25 14:18                                             ` Dave Hansen
2022-04-25 14:26                                             ` Jean-Philippe Brucker
2022-04-25 14:26                                               ` Jean-Philippe Brucker
2022-04-25 15:34                                               ` Jacob Pan
2022-04-25 15:34                                                 ` Jacob Pan
2022-04-25 16:13                                                 ` Jean-Philippe Brucker [this message]
2022-04-25 16:13                                                   ` Jean-Philippe Brucker
2022-04-25 22:32                                                   ` Jacob Pan
2022-04-25 22:32                                                     ` Jacob Pan
2022-04-26  4:20                                                   ` Fenghua Yu
2022-04-26  4:20                                                     ` Fenghua Yu
2022-04-26  5:04                                                     ` Zhangfei Gao
2022-04-26  5:04                                                       ` Zhangfei Gao
2022-04-28  0:54                                                       ` Fenghua Yu
2022-04-28  0:54                                                         ` Fenghua Yu
2022-04-28  8:43                                                         ` Jean-Philippe Brucker
2022-04-28  8:43                                                           ` Jean-Philippe Brucker
2022-04-28 15:09                                                     ` Dave Hansen
2022-04-28 15:09                                                       ` Dave Hansen
2022-04-28 15:28                                                       ` Fenghua Yu
2022-04-28 15:28                                                         ` Fenghua Yu
2022-04-28 15:42                                                         ` Dave Hansen
2022-04-28 15:42                                                           ` Dave Hansen
2022-04-28 16:01                                                       ` Jean-Philippe Brucker
2022-04-28 16:01                                                         ` Jean-Philippe Brucker
2022-04-28 16:35                                                         ` Dave Hansen
2022-04-28 16:35                                                           ` Dave Hansen
2022-04-26  4:28                                                   ` Zhangfei Gao
2022-04-26  4:28                                                     ` Zhangfei Gao
2022-04-26  4:36                                                     ` Fenghua Yu
2022-04-26  4:36                                                       ` Fenghua Yu
2022-04-26  5:19                                                       ` Zhangfei Gao
2022-04-26  5:19                                                         ` Zhangfei Gao
2022-04-25 15:55                                               ` Dave Hansen
2022-04-25 15:55                                                 ` Dave Hansen
2022-04-25 16:40                                                 ` Jean-Philippe Brucker
2022-04-25 16:40                                                   ` Jean-Philippe Brucker
2022-04-26 15:27                                                   ` Dave Hansen
2022-04-26 15:27                                                     ` Dave Hansen
2022-04-26 16:48                                                     ` Jean-Philippe Brucker
2022-04-26 16:48                                                       ` Jean-Philippe Brucker
2022-04-26 23:31                                                       ` Dave Hansen
2022-04-26 23:31                                                         ` Dave Hansen
2022-04-28  8:39                                                         ` Jean-Philippe Brucker
2022-04-28  8:39                                                           ` Jean-Philippe Brucker
2022-04-29  7:53                                                           ` Baolu Lu
2022-04-29  7:53                                                             ` Baolu Lu
2022-04-29 13:51                                                             ` Fenghua Yu
2022-04-29 13:51                                                               ` Fenghua Yu
2022-04-29 14:34                                                               ` Jean-Philippe Brucker
2022-04-29 14:34                                                                 ` Jean-Philippe Brucker
2022-04-29 22:19                                                                 ` Fenghua Yu
2022-04-29 22:19                                                                   ` Fenghua Yu
2022-04-30  7:33                                                                   ` Baolu Lu
2022-04-30  7:33                                                                     ` Baolu Lu
2022-05-03  7:49                                                                     ` Jean-Philippe Brucker
2022-05-03  7:49                                                                       ` Jean-Philippe Brucker
2022-05-06  5:36                                                                       ` Baolu Lu
2022-05-06  5:36                                                                         ` Baolu Lu
2022-04-12 14:36                   ` Dave Hansen
2022-04-12 14:36                     ` Dave Hansen
2022-04-12 15:10                     ` Jean-Philippe Brucker
2022-04-12 15:10                       ` Jean-Philippe Brucker
2022-04-12 15:35                       ` Dave Hansen
2022-04-12 15:35                         ` Dave Hansen
2022-04-13 11:14                         ` Lu Baolu
2022-04-13 11:14                           ` Lu Baolu
2022-04-25  2:57                         ` zhangfei.gao
2022-04-25  2:57                           ` zhangfei.gao
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 06/11] x86/fpu: Clear PASID when copying fpstate Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 07/11] sched: Define and initialize a flag to identify valid PASID in the task Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Peter Zijlstra
2022-02-07 23:02 ` [PATCH v4 08/11] x86/traps: Demand-populate PASID MSR via #GP Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 09/11] x86/cpufeatures: Re-enable ENQCMD Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 10/11] tools/objtool: Check for use of the ENQCMD instruction in the kernel Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-15 10:54   ` [tip: x86/pasid] " tip-bot2 for Fenghua Yu
2022-03-09  7:55   ` [tip: x86/core] " tip-bot2 for Fenghua Yu
2022-03-15 10:44   ` tip-bot2 for Fenghua Yu
2022-02-07 23:02 ` [PATCH v4 11/11] docs: x86: Change documentation for SVA (Shared Virtual Addressing) Fenghua Yu
2022-02-07 23:02   ` Fenghua Yu
2022-02-14 17:25   ` Thomas Gleixner
2022-02-14 17:25     ` Thomas Gleixner
2022-02-15 10:54   ` [tip: x86/pasid] Documentation/x86: Update " tip-bot2 for Fenghua Yu
2022-02-11 20:04 ` [PATCH v4 00/11] Re-enable ENQCMD and PASID MSR Fenghua Yu
2022-02-11 20:04   ` Fenghua Yu

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=YmbIjnHtibY7n4Wb@myrica \
    --to=jean-philippe@linaro.org \
    --cc=ashok.raj@intel.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=fenghua.yu@intel.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@linux.intel.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=ravi.v.shankar@intel.com \
    --cc=robin.murphy@arm.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    --cc=zhangfei.gao@linaro.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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.