[for-4.13,v2] AMD/IOMMU: honour IR setting while pre-filling DTEs
diff mbox series

Message ID 1574788099-11821-1-git-send-email-igor.druzhinin@citrix.com
State New, archived
Headers show
Series
  • [for-4.13,v2] AMD/IOMMU: honour IR setting while pre-filling DTEs
Related show

Commit Message

Igor Druzhinin Nov. 26, 2019, 5:08 p.m. UTC
IV bit shouldn't be set in DTE if interrupt remapping is not
enabled. It's a regression in behavior of "iommu=no-intremap"
option which otherwise would keep interrupt requests untranslated
for all of the devices in the system regardless of wether it's
described as valid in IVRS or not.

Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
---
 xen/drivers/passthrough/amd/iommu_init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Andrew Cooper Nov. 26, 2019, 5:14 p.m. UTC | #1
On 26/11/2019 17:08, Igor Druzhinin wrote:
> IV bit shouldn't be set in DTE if interrupt remapping is not
> enabled. It's a regression in behavior of "iommu=no-intremap"
> option which otherwise would keep interrupt requests untranslated
> for all of the devices in the system regardless of wether it's
> described as valid in IVRS or not.
>
> Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

Juergen: 4.13 justification - this is a regression from 4.12.

~Andrew
Jürgen Groß Nov. 27, 2019, 4:24 a.m. UTC | #2
On 26.11.19 18:08, Igor Druzhinin wrote:
> IV bit shouldn't be set in DTE if interrupt remapping is not
> enabled. It's a regression in behavior of "iommu=no-intremap"
> option which otherwise would keep interrupt requests untranslated
> for all of the devices in the system regardless of wether it's
> described as valid in IVRS or not.
> 
> Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>

Release-acked-by: Juergen Gross <jgross@suse.com>


Juergen

Patch
diff mbox series

diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthrough/amd/iommu_init.c
index 16e84d4..2b81e38 100644
--- a/xen/drivers/passthrough/amd/iommu_init.c
+++ b/xen/drivers/passthrough/amd/iommu_init.c
@@ -1279,7 +1279,7 @@  static int __init amd_iommu_setup_device_table(
         for ( bdf = 0, size /= sizeof(*dt); bdf < size; ++bdf )
             dt[bdf] = (struct amd_iommu_dte){
                           .v = true,
-                          .iv = true,
+                          .iv = iommu_intremap,
                       };
     }