xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Chris Patterson <cjp256@gmail.com>
To: xen-devel@lists.xen.org
Cc: Chris Patterson <pattersonc@ainfosec.com>,
	julien.grall@arm.com, sstabellini@kernel.org,
	temkink@ainfosec.com
Subject: [PATCH 2/6] xen/arm: domain_build: Inherit GIC's interrupt-parent from host device tree
Date: Thu,  6 Apr 2017 15:47:50 -0400	[thread overview]
Message-ID: <1491508074-31647-3-git-send-email-cjp256@gmail.com> (raw)
In-Reply-To: <1491508074-31647-1-git-send-email-cjp256@gmail.com>

From: "Chris Patterson" <pattersonc@ainfosec.com>

Currently, the interrupt parent is left undefined during creation in
make_gic_node().  In cases where a non-GIC interrupt controller is present,
this can lead to incorrect assignment of interrupt parents.

On the Tegra, the gic's interrupt parent is set to itself:

	gic: interrupt-controller@0,50041000 {
		compatible = "arm,gic-400";
		#interrupt-cells = <3>;
		interrupt-controller;
		reg = <0x0 0x50041000 0x0 0x1000>,
		      <0x0 0x50042000 0x0 0x2000>,
		      <0x0 0x50044000 0x0 0x2000>,
		      <0x0 0x50046000 0x0 0x2000>;
		interrupts = <GIC_PPI 9
			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
		interrupt-parent = <&gic>;
	};

To prevent the hardware domain from assuming the Legacy Interrupt Controller
(lic) as the GIC's interrupt-parent, this change explicitly assigns
the interrupt-parent property from the host device tree.

Authored-by: Kyle Temkin <temkink@ainfosec.com>
Signed-off-by: Kyle Temkin <temkink@ainfosec.com>
Signed-off-by: Chris Patterson <pattersonc@ainfosec.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---

changes from rfc:
- commit message documentation improvements

---
 xen/arch/arm/domain_build.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index de59e5f..cb66304 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -778,8 +778,8 @@ static int make_gic_node(const struct domain *d, void *fdt,
 {
     const struct dt_device_node *gic = dt_interrupt_controller;
     int res = 0;
-    const void *addrcells, *sizecells;
-    u32 addrcells_len, sizecells_len;
+    const void *addrcells, *sizecells, *iparent;
+    u32 addrcells_len, sizecells_len, iparent_len;
 
     /*
      * Xen currently supports only a single GIC. Discard any secondary
@@ -809,6 +809,19 @@ static int make_gic_node(const struct domain *d, void *fdt,
             return res;
     }
 
+    /*
+     * If available, explicitly inherit interrupt-parent property from host
+     * device tree.  This will prevent the risk of incorrect identification
+     * of the parent on platforms with more than one interrupt controller.
+     */
+    iparent = dt_get_property(gic, "interrupt-parent", &iparent_len);
+    if ( iparent )
+    {
+        res = fdt_property(fdt, "interrupt-parent", iparent, iparent_len);
+        if ( res )
+          return res;
+    }
+
     addrcells = dt_get_property(gic, "#address-cells", &addrcells_len);
     if ( addrcells )
     {
-- 
2.1.4


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

  parent reply	other threads:[~2017-04-06 19:47 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-06 19:47 [PATCH 0/6] Initial Tegra platform support Chris Patterson
2017-04-06 19:47 ` [PATCH 1/6] xen/arm: platforms: Add earlyprintk and serial support for Tegra boards Chris Patterson
2017-04-13 23:09   ` Stefano Stabellini
2017-04-18  7:49   ` Julien Grall
2017-04-19 20:37     ` Chris Patterson
2017-04-06 19:47 ` Chris Patterson [this message]
2017-04-18  8:01   ` [PATCH 2/6] xen/arm: domain_build: Inherit GIC's interrupt-parent from host device tree Julien Grall
2017-04-19 20:09     ` Christopher Patterson
2017-04-06 19:47 ` [PATCH 3/6] xen/arm: Allow platforms to hook IRQ routing Chris Patterson
2017-04-13 23:26   ` Stefano Stabellini
2017-04-06 19:47 ` [PATCH 4/6] xen/arm: platforms: Add Tegra platform to support basic " Chris Patterson
2017-04-13 23:46   ` Stefano Stabellini
2017-04-17 15:03     ` Chris Patterson
2017-04-18  7:58       ` Julien Grall
2017-07-06 22:00         ` Chris Patterson
2017-07-07 16:25           ` Julien Grall
2017-07-07 18:08             ` Chris Patterson
2017-07-26 16:49               ` Julien Grall
2017-04-18  8:26   ` Julien Grall
2017-07-06 23:12     ` Chris Patterson
2017-07-07 16:30       ` Julien Grall
2017-07-07 18:53         ` Chris Patterson
2017-07-24 19:38           ` Chris Patterson
2017-07-26 16:10             ` Julien Grall
2017-04-06 19:47 ` [PATCH 5/6] xen/arm: Add function to query IRQ 'ownership' Chris Patterson
2017-04-18  8:27   ` Julien Grall
2017-04-06 19:47 ` [PATCH 6/6] xen/arm: platforms/tegra: Ensure the hwdom can only affect its own interrupts Chris Patterson
2017-04-13 23:54   ` Stefano Stabellini
2017-04-18  8:39   ` Julien Grall
2017-07-06 23:13     ` Chris Patterson

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=1491508074-31647-3-git-send-email-cjp256@gmail.com \
    --to=cjp256@gmail.com \
    --cc=julien.grall@arm.com \
    --cc=pattersonc@ainfosec.com \
    --cc=sstabellini@kernel.org \
    --cc=temkink@ainfosec.com \
    --cc=xen-devel@lists.xen.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).