From: Lu Baolu <baolu.lu@linux.intel.com>
To: "Tian, Kevin" <kevin.tian@intel.com>,
Jason Gunthorpe <jgg@nvidia.com>,
Alex Williamson <alex.williamson@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
David Woodhouse <dwmw2@infradead.org>,
"iommu@lists.linux-foundation.org"
<iommu@lists.linux-foundation.org>,
Joerg Roedel <joro@8bytes.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
Will Deacon <will@kernel.org>
Cc: Robin Murphy <robin.murphy@arm.com>, Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v2 2/4] vfio: Move the Intel no-snoop control off of IOMMU_CACHE
Date: Sat, 9 Apr 2022 20:50:52 +0800 [thread overview]
Message-ID: <8df77a0f-55ee-bbc3-8ada-ab109d9323eb@linux.intel.com> (raw)
In-Reply-To: <BN9PR11MB5276796235136C1E6C50A5AF8CE99@BN9PR11MB5276.namprd11.prod.outlook.com>
On 2022/4/8 16:16, Tian, Kevin wrote:
>> From: Jason Gunthorpe <jgg@nvidia.com>
>> Sent: Thursday, April 7, 2022 11:24 PM
>>
>> IOMMU_CACHE means "normal DMA to this iommu_domain's IOVA should
>> be cache
>> coherent" and is used by the DMA API. The definition allows for special
>> non-coherent DMA to exist - ie processing of the no-snoop flag in PCIe
>> TLPs - so long as this behavior is opt-in by the device driver.
>>
>> The flag is mainly used by the DMA API to synchronize the IOMMU setting
>> with the expected cache behavior of the DMA master. eg based on
>> dev_is_dma_coherent() in some case.
>>
>> For Intel IOMMU IOMMU_CACHE was redefined to mean 'force all DMA to
>> be
>> cache coherent' which has the practical effect of causing the IOMMU to
>> ignore the no-snoop bit in a PCIe TLP.
>>
>> x86 platforms are always IOMMU_CACHE, so Intel should ignore this flag.
>>
>> Instead use the new domain op enforce_cache_coherency() which causes
>> every
>> IOPTE created in the domain to have the no-snoop blocking behavior.
>>
>> Reconfigure VFIO to always use IOMMU_CACHE and call
>> enforce_cache_coherency() to operate the special Intel behavior.
>>
>> Remove the IOMMU_CACHE test from Intel IOMMU.
>>
>> Ultimately VFIO plumbs the result of enforce_cache_coherency() back into
>> the x86 platform code through kvm_arch_register_noncoherent_dma()
>> which
>> controls if the WBINVD instruction is available in the guest. No other
>> arch implements kvm_arch_register_noncoherent_dma().
>>
>> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
>
> Reviewed-by: Kevin Tian <kevin.tian@intel.com>
>
> btw as discussed in last version it is not necessarily to recalculate
> snoop control globally with this new approach. Will follow up to
> clean it up after this series is merged.
Agreed. But it also requires the enforce_cache_coherency() to be called
only after domain being attached to a device just as VFIO is doing.
Anyway, for this change in iommu/vt-d:
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Best regards,
baolu
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Lu Baolu <baolu.lu@linux.intel.com>
To: "Tian, Kevin" <kevin.tian@intel.com>,
Jason Gunthorpe <jgg@nvidia.com>,
Alex Williamson <alex.williamson@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
David Woodhouse <dwmw2@infradead.org>,
"iommu@lists.linux-foundation.org"
<iommu@lists.linux-foundation.org>,
Joerg Roedel <joro@8bytes.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
Will Deacon <will@kernel.org>
Cc: baolu.lu@linux.intel.com, Christoph Hellwig <hch@lst.de>,
Robin Murphy <robin.murphy@arm.com>
Subject: Re: [PATCH v2 2/4] vfio: Move the Intel no-snoop control off of IOMMU_CACHE
Date: Sat, 9 Apr 2022 20:50:52 +0800 [thread overview]
Message-ID: <8df77a0f-55ee-bbc3-8ada-ab109d9323eb@linux.intel.com> (raw)
In-Reply-To: <BN9PR11MB5276796235136C1E6C50A5AF8CE99@BN9PR11MB5276.namprd11.prod.outlook.com>
On 2022/4/8 16:16, Tian, Kevin wrote:
>> From: Jason Gunthorpe <jgg@nvidia.com>
>> Sent: Thursday, April 7, 2022 11:24 PM
>>
>> IOMMU_CACHE means "normal DMA to this iommu_domain's IOVA should
>> be cache
>> coherent" and is used by the DMA API. The definition allows for special
>> non-coherent DMA to exist - ie processing of the no-snoop flag in PCIe
>> TLPs - so long as this behavior is opt-in by the device driver.
>>
>> The flag is mainly used by the DMA API to synchronize the IOMMU setting
>> with the expected cache behavior of the DMA master. eg based on
>> dev_is_dma_coherent() in some case.
>>
>> For Intel IOMMU IOMMU_CACHE was redefined to mean 'force all DMA to
>> be
>> cache coherent' which has the practical effect of causing the IOMMU to
>> ignore the no-snoop bit in a PCIe TLP.
>>
>> x86 platforms are always IOMMU_CACHE, so Intel should ignore this flag.
>>
>> Instead use the new domain op enforce_cache_coherency() which causes
>> every
>> IOPTE created in the domain to have the no-snoop blocking behavior.
>>
>> Reconfigure VFIO to always use IOMMU_CACHE and call
>> enforce_cache_coherency() to operate the special Intel behavior.
>>
>> Remove the IOMMU_CACHE test from Intel IOMMU.
>>
>> Ultimately VFIO plumbs the result of enforce_cache_coherency() back into
>> the x86 platform code through kvm_arch_register_noncoherent_dma()
>> which
>> controls if the WBINVD instruction is available in the guest. No other
>> arch implements kvm_arch_register_noncoherent_dma().
>>
>> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
>
> Reviewed-by: Kevin Tian <kevin.tian@intel.com>
>
> btw as discussed in last version it is not necessarily to recalculate
> snoop control globally with this new approach. Will follow up to
> clean it up after this series is merged.
Agreed. But it also requires the enforce_cache_coherency() to be called
only after domain being attached to a device just as VFIO is doing.
Anyway, for this change in iommu/vt-d:
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Best regards,
baolu
next prev parent reply other threads:[~2022-04-09 12:51 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-07 15:23 [PATCH v2 0/4] Make the iommu driver no-snoop block feature consistent Jason Gunthorpe via iommu
2022-04-07 15:23 ` Jason Gunthorpe
2022-04-07 15:23 ` [PATCH v2 1/4] iommu: Introduce the domain op enforce_cache_coherency() Jason Gunthorpe via iommu
2022-04-07 15:23 ` Jason Gunthorpe
2022-04-08 8:05 ` Tian, Kevin
2022-04-08 8:05 ` Tian, Kevin
2022-04-09 12:44 ` Lu Baolu
2022-04-09 12:44 ` Lu Baolu
2022-04-11 14:11 ` Jason Gunthorpe via iommu
2022-04-11 14:11 ` Jason Gunthorpe
2022-04-08 8:27 ` Tian, Kevin
2022-04-08 8:27 ` Tian, Kevin
2022-04-07 15:23 ` [PATCH v2 2/4] vfio: Move the Intel no-snoop control off of IOMMU_CACHE Jason Gunthorpe via iommu
2022-04-07 15:23 ` Jason Gunthorpe
2022-04-08 8:16 ` Tian, Kevin
2022-04-08 8:16 ` Tian, Kevin
2022-04-09 12:50 ` Lu Baolu [this message]
2022-04-09 12:50 ` Lu Baolu
2022-04-12 7:44 ` Tian, Kevin
2022-04-12 7:44 ` Tian, Kevin
2022-04-12 13:13 ` Lu Baolu
2022-04-12 13:13 ` Lu Baolu
2022-04-12 13:20 ` Jason Gunthorpe via iommu
2022-04-12 13:20 ` Jason Gunthorpe
2022-04-12 23:04 ` Tian, Kevin
2022-04-12 23:04 ` Tian, Kevin
2022-04-13 11:37 ` Lu Baolu
2022-04-13 11:37 ` Lu Baolu
2022-04-08 15:47 ` Alex Williamson
2022-04-08 15:47 ` Alex Williamson
2022-04-11 14:13 ` Jason Gunthorpe via iommu
2022-04-11 14:13 ` Jason Gunthorpe
2022-04-07 15:23 ` [PATCH v2 3/4] iommu: Redefine IOMMU_CAP_CACHE_COHERENCY as the cap flag for IOMMU_CACHE Jason Gunthorpe via iommu
2022-04-07 15:23 ` Jason Gunthorpe
2022-04-08 8:21 ` Tian, Kevin
2022-04-08 8:21 ` Tian, Kevin
2022-04-08 12:21 ` Jason Gunthorpe via iommu
2022-04-08 12:21 ` Jason Gunthorpe
2022-04-09 12:51 ` Lu Baolu
2022-04-09 12:51 ` Lu Baolu
2022-04-07 15:23 ` [PATCH v2 4/4] vfio: Require that devices support DMA cache coherence Jason Gunthorpe via iommu
2022-04-07 15:23 ` Jason Gunthorpe
2022-04-08 8:26 ` Tian, Kevin
2022-04-08 8:26 ` Tian, Kevin
2022-04-08 12:22 ` Jason Gunthorpe via iommu
2022-04-08 12:22 ` Jason Gunthorpe
2022-04-08 13:28 ` Robin Murphy
2022-04-08 13:28 ` Robin Murphy
2022-04-08 13:37 ` Jason Gunthorpe via iommu
2022-04-08 13:37 ` Jason Gunthorpe
2022-04-08 15:48 ` Alex Williamson
2022-04-08 15:48 ` Alex Williamson
2022-07-01 4:57 ` Alexey Kardashevskiy
2022-07-01 4:57 ` Alexey Kardashevskiy
2022-07-01 6:07 ` Tian, Kevin
2022-07-01 6:07 ` Tian, Kevin
2022-07-01 6:24 ` Alexey Kardashevskiy
2022-07-01 6:24 ` Alexey Kardashevskiy
2022-04-07 17:03 ` [PATCH v2 0/4] Make the iommu driver no-snoop block feature consistent Robin Murphy
2022-04-07 17:03 ` Robin Murphy
2022-04-07 17:43 ` Jason Gunthorpe via iommu
2022-04-07 17:43 ` Jason Gunthorpe
2022-04-07 18:02 ` Robin Murphy
2022-04-07 18:02 ` Robin Murphy
2022-04-07 19:08 ` Jason Gunthorpe via iommu
2022-04-07 19:08 ` Jason Gunthorpe
2022-04-07 19:27 ` Robin Murphy
2022-04-07 19:27 ` Robin Murphy
2022-04-08 12:18 ` Jason Gunthorpe via iommu
2022-04-08 12:18 ` Jason Gunthorpe
2022-04-08 13:11 ` Robin Murphy
2022-04-08 13:11 ` Robin Murphy
2022-04-08 13:35 ` Jason Gunthorpe via iommu
2022-04-08 13:35 ` Jason Gunthorpe
2022-04-08 17:44 ` Robin Murphy
2022-04-08 17:44 ` Robin Murphy
2022-04-12 2:51 ` Tian, Kevin
2022-04-12 2:51 ` Tian, Kevin
2022-04-08 9:08 ` Tian, Kevin
2022-04-08 9:08 ` Tian, Kevin
2022-04-08 10:11 ` Robin Murphy
2022-04-08 10:11 ` Robin Murphy
2022-04-12 2:49 ` Tian, Kevin
2022-04-12 2:49 ` Tian, Kevin
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=8df77a0f-55ee-bbc3-8ada-ab109d9323eb@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=alex.williamson@redhat.com \
--cc=cohuck@redhat.com \
--cc=dwmw2@infradead.org \
--cc=hch@lst.de \
--cc=iommu@lists.linux-foundation.org \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=robin.murphy@arm.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=will@kernel.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.