lkml.org 
[lkml]   [2022]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v3 2/5] vfio/iommu_type1: Prefer to reuse domains vs match enforced cache coherency
    From
    On 2022/6/24 04:00, Nicolin Chen wrote:
    > From: Jason Gunthorpe <jgg@nvidia.com>
    >
    > The KVM mechanism for controlling wbinvd is based on OR of the coherency
    > property of all devices attached to a guest, no matter whether those
    > devices are attached to a single domain or multiple domains.
    >
    > On the other hand, the benefit to using separate domains was that those
    > devices attached to domains supporting enforced cache coherency always
    > mapped with the attributes necessary to provide that feature, therefore
    > if a non-enforced domain was dropped, the associated group removal would
    > re-trigger an evaluation by KVM.
    >
    > In practice however, the only known cases of such mixed domains included
    > an Intel IGD device behind an IOMMU lacking snoop control, where such
    > devices do not support hotplug, therefore this scenario lacks testing and
    > is not considered sufficiently relevant to support.
    >
    > After all, KVM won't take advantage of trying to push a device that could
    > do enforced cache coherency to a dedicated domain vs re-using an existing
    > domain, which is non-coherent.
    >
    > Simplify this code and eliminate the test. This removes the only logic
    > that needed to have a dummy domain attached prior to searching for a
    > matching domain and simplifies the next patches.
    >
    > It's unclear whether we want to further optimize the Intel driver to
    > update the domain coherency after a device is detached from it, at
    > least not before KVM can be verified to handle such dynamics in related
    > emulation paths (wbinvd, vcpu load, write_cr0, ept, etc.). In reality
    > we don't see an usage requiring such optimization as the only device
    > which imposes such non-coherency is Intel GPU which even doesn't
    > support hotplug/hot remove.
    >
    > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    > Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    > Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
    > ---
    > drivers/vfio/vfio_iommu_type1.c | 4 +---
    > 1 file changed, 1 insertion(+), 3 deletions(-)
    >
    > diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
    > index c13b9290e357..f4e3b423a453 100644
    > --- a/drivers/vfio/vfio_iommu_type1.c
    > +++ b/drivers/vfio/vfio_iommu_type1.c
    > @@ -2285,9 +2285,7 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
    > * testing if they're on the same bus_type.
    > */
    > list_for_each_entry(d, &iommu->domain_list, next) {
    > - if (d->domain->ops == domain->domain->ops &&
    > - d->enforce_cache_coherency ==
    > - domain->enforce_cache_coherency) {
    > + if (d->domain->ops == domain->domain->ops) {
    > iommu_detach_group(domain->domain, group->iommu_group);
    > if (!iommu_attach_group(d->domain,
    > group->iommu_group)) {

    Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>

    Best regards,
    baolu

    \
     
     \ /
      Last update: 2022-06-24 03:51    [W:2.173 / U:0.276 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site