All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Wang <wei.wang2@amd.com>
To: xen-devel@lists.xensource.com
Subject: Fwd: [osrc-patches] [PATCH 2 of 7 V4] amd iommu: Add a new flag to indication iommuv2 feature enabled or not
Date: Fri, 20 Jan 2012 16:55:43 +0100	[thread overview]
Message-ID: <4F198E7F.9040709@amd.com> (raw)
In-Reply-To: <ea3af8fa078c07d357de.1327074282@gran.amd.com>

# HG changeset patch
# User Wei Wang <wei.wang2@amd.com>
# Date 1327066820 -3600
# Node ID ea3af8fa078c07d357de79931a102450b59156ea
# Parent  978e61814be49ec544151803be3e3b2717551316
amd iommu: Add a new flag to indication iommuv2 feature enabled or not.
Hypercalls should return early on non-iommuv2 systems.

Signed-off-by: Wei Wang <wei.wang2@amd.com>

diff -r 978e61814be4 -r ea3af8fa078c 
xen/drivers/passthrough/amd/iommu_guest.c
--- a/xen/drivers/passthrough/amd/iommu_guest.c	Fri Jan 20 14:40:11 2012 
+0100
+++ b/xen/drivers/passthrough/amd/iommu_guest.c	Fri Jan 20 14:40:20 2012 
+0100
@@ -825,6 +825,9 @@ int guest_iommu_set_base(struct domain *
      if ( !iommu )
          return -EACCES;

+    if ( !is_hvm_domain(d) || !iommuv2_enabled )
+        return 1;
+
      iommu->mmio_base = base;
      base >>= PAGE_SHIFT;

@@ -884,7 +887,7 @@ int guest_iommu_init(struct domain* d)
      struct guest_iommu *iommu;
      struct hvm_iommu *hd  = domain_hvm_iommu(d);

-    if ( !is_hvm_domain(d) )
+    if ( !is_hvm_domain(d) || !iommuv2_enabled )
          return 0;

      iommu = xzalloc(struct guest_iommu);
@@ -916,6 +919,9 @@ void guest_iommu_destroy(struct domain *
      iommu = domain_iommu(d);
      if ( !iommu )
          return;
+
+    if ( !iommuv2_enabled )
+        return;

      tasklet_kill(&iommu->cmd_buffer_tasklet);
      xfree(iommu);
@@ -944,7 +950,7 @@ int iommu_bind_bdf(struct domain* d, uin
      struct pci_dev *pdev;
      int ret = -ENODEV;

-    if ( !iommu_found() )
+    if ( !iommu_found() || !iommuv2_enabled )
          return 0;

      spin_lock(&pcidevs_lock);
@@ -970,7 +976,7 @@ void iommu_set_msi(struct domain* d, uin
  {
      struct guest_iommu *iommu = domain_iommu(d);

-    if ( !iommu_found() )
+    if ( !iommu_found() || !iommuv2_enabled )
          return;

      iommu->msi.vector = vector;
diff -r 978e61814be4 -r ea3af8fa078c 
xen/drivers/passthrough/amd/iommu_init.c
--- a/xen/drivers/passthrough/amd/iommu_init.c	Fri Jan 20 14:40:11 2012 
+0100
+++ b/xen/drivers/passthrough/amd/iommu_init.c	Fri Jan 20 14:40:20 2012 
+0100
@@ -38,6 +38,7 @@ unsigned short ivrs_bdf_entries;
  static struct radix_tree_root ivrs_maps;
  struct list_head amd_iommu_head;
  struct table_struct device_table;
+bool_t iommuv2_enabled;

  static int iommu_has_ht_flag(struct amd_iommu *iommu, u8 mask)
  {
@@ -799,6 +800,10 @@ static void enable_iommu(struct amd_iomm
          amd_iommu_flush_all_caches(iommu);

      iommu->enabled = 1;
+
+    if ( iommu->features )
+        iommuv2_enabled = 1;
+
      spin_unlock_irqrestore(&iommu->lock, flags);

  }
diff -r 978e61814be4 -r ea3af8fa078c xen/include/asm-x86/amd-iommu.h
--- a/xen/include/asm-x86/amd-iommu.h	Fri Jan 20 14:40:11 2012 +0100
+++ b/xen/include/asm-x86/amd-iommu.h	Fri Jan 20 14:40:20 2012 +0100
@@ -182,4 +182,6 @@ struct guest_iommu {
      struct guest_iommu_msi  msi;
  };

+extern bool_t iommuv2_enabled;
+
  #endif /* _ASM_X86_64_AMD_IOMMU_H */
_______________________________________________
osrc-patches mailing list
osrc-patches@elbe.amd.com
https://elbe.amd.com/mailman/listinfo/osrc-patches

       reply	other threads:[~2012-01-20 15:55 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <ea3af8fa078c07d357de.1327074282@gran.amd.com>
2012-01-20 15:55 ` Wei Wang [this message]
2012-01-20 16:16 ` [PATCH 2 of 7 V4] amd iommu: Add a new flag to indication iommuv2 feature enabled or not Wei Wang

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=4F198E7F.9040709@amd.com \
    --to=wei.wang2@amd.com \
    --cc=xen-devel@lists.xensource.com \
    /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.