All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/4] ARM: ITS: Deny hardware domain access to its region
@ 2017-06-16 10:27 Manish Jaggi
  0 siblings, 0 replies; only message in thread
From: Manish Jaggi @ 2017-06-16 10:27 UTC (permalink / raw
  To: Stefano Stabellini, Julien Grall, Kumar, Vijaya,
	xen-devel@lists.xenproject.org

This patch extends the gicv3_iomem_deny_access functionality by adding 
support
for its region as well. Added function gicv3_its_deny_access.

Signed-off-by: Manish Jaggi <mjaggi@cavium.com>
---
  xen/arch/arm/gic-v3-its.c        | 19 +++++++++++++++++++
  xen/arch/arm/gic-v3.c            |  7 +++++++
  xen/include/asm-arm/gic_v3_its.h |  8 ++++++++
  3 files changed, 34 insertions(+)

diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
index e11f29a..98c8f46 100644
--- a/xen/arch/arm/gic-v3-its.c
+++ b/xen/arch/arm/gic-v3-its.c
@@ -20,6 +20,7 @@

  #include <xen/lib.h>
  #include <xen/delay.h>
+#include <xen/iocap.h>
  #include <xen/libfdt/libfdt.h>
  #include <xen/mm.h>
  #include <xen/rbtree.h>
@@ -905,6 +906,24 @@ struct pending_irq *gicv3_assign_guest_event(struct 
domain *d,
      return pirq;
  }

+int gicv3_its_deny_access(const struct domain *d)
+{
+    int rc = 0;
+    unsigned long mfn, nr;
+    const struct host_its *its_data;
+
+    list_for_each_entry(its_data, &host_its_list, entry)
+    {
+        mfn = paddr_to_pfn(its_data->addr);
+        nr = PFN_UP(ACPI_GICV3_ITS_MEM_SIZE);
+        rc = iomem_deny_access(d, mfn, mfn + nr);
+        if ( rc )
+            break;
+    }
+
+    return rc;
+}
+
  /*
   * Create the respective guest DT nodes from a list of host ITSes.
   * This copies the reg property, so the guest sees the ITS at the same 
address
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index 558b32c..f6fbf2f 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1308,6 +1308,13 @@ static int gicv3_iomem_deny_access(const struct 
domain *d)
      if ( rc )
          return rc;

+    if ( gicv3_its_host_has_its() )
+    {
+        rc = gicv3_its_deny_access(d);
+        if ( rc )
+            return rc;
+    }
+
      for ( i = 0; i < gicv3.rdist_count; i++ )
      {
          mfn = gicv3.rdist_regions[i].base >> PAGE_SHIFT;
diff --git a/xen/include/asm-arm/gic_v3_its.h 
b/xen/include/asm-arm/gic_v3_its.h
index bcfa181..84dbb9c 100644
--- a/xen/include/asm-arm/gic_v3_its.h
+++ b/xen/include/asm-arm/gic_v3_its.h
@@ -143,6 +143,9 @@ int gicv3_its_acpi_init(struct acpi_subtable_header 
*header,
                                      const unsigned long end);
  #endif

+/* Deny iomem access for its */
+int gicv3_its_deny_access(const struct domain *d);
+
  bool gicv3_its_host_has_its(void);

  unsigned int vgic_v3_its_count(const struct domain *d);
@@ -212,6 +215,11 @@ static inline int gicv3_its_acpi_init(struct 
acpi_subtable_header *header,
  }
  #endif

+static inline int gicv3_its_deny_access(const struct domain *d)
+{
+    return 0;
+}
+
  static inline bool gicv3_its_host_has_its(void)
  {
      return false;
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2017-06-16 10:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-16 10:27 [PATCH 3/4] ARM: ITS: Deny hardware domain access to its region Manish Jaggi

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.