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
next prev 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).