qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 3/3] intel_iommu: Bypass barrier wait descriptor


From: Yi Liu
Subject: Re: [PATCH v2 3/3] intel_iommu: Bypass barrier wait descriptor
Date: Fri, 5 Jul 2024 11:01:30 +0800
User-agent: Mozilla Thunderbird

On 2024/7/4 23:12, CLEMENT MATHIEU--DRIF wrote:
From: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>

wait_desc with SW=0,IF=0,FN=1 must not be considered as an
invalid descriptor as it is used to implement section 7.10 of
the VT-d spec

After a second thinking. t would be better to move this patch to the
PRI series [1]. Reason as below:

This wait descriptor is used to drain PRQ. While, the guest need not
to drain PRQ until the PRI series which advertises the PRI cap to the
guest. So QEMU won't get such a wait descriptor before that series.

[1] https://lore.kernel.org/qemu-devel/713ece39-bc1e-4189-a1d9-f81f9cdbd03b@eviden.com/

Signed-off-by: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
---
  hw/i386/intel_iommu.c | 6 ++++++
  1 file changed, 6 insertions(+)

diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index be0cb39b5c..12ea3a9aa0 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -2561,6 +2561,12 @@ static bool vtd_process_wait_desc(IntelIOMMUState *s, 
VTDInvDesc *inv_desc)
      } else if (inv_desc->lo & VTD_INV_DESC_WAIT_IF) {
          /* Interrupt flag */
          vtd_generate_completion_event(s);
+    } else if (inv_desc->lo & VTD_INV_DESC_WAIT_FN) {
+        /*
+         * SW = 0, IF = 0, FN = 1
+         * This kind of descriptor is defined in section 7.10 of VT-d
+         * Nothing to do as we process the events sequentially
+         */
      } else {
          error_report_once("%s: invalid wait desc: hi=%"PRIx64", lo=%"PRIx64
                            " (unknown type)", __func__, inv_desc->hi,

--
Regards,
Yi Liu



reply via email to

[Prev in Thread] Current Thread [Next in Thread]