From: Viktor Mitin <viktor.mitin.19@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
Julien Grall <julien.grall@arm.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Viktor Mitin <viktor_mitin@epam.com>,
Viktor Mitin <viktor.mitin.19@gmail.com>
Subject: [Xen-devel] [PATCH] xen/arm: extend fdt_property_interrupts
Date: Fri, 26 Jul 2019 12:01:24 +0300 [thread overview]
Message-ID: <20190726090124.26444-1-viktor.mitin.19@gmail.com> (raw)
xen/arm: extend fdt_property_interrupts to deal with other
domain than the hwdom
Tested with aarch64 qemu dom0 and dom0less boot.
Suggested-by: Julien Grall <julien.grall@arm.com>
Signed-off-by: Viktor Mitin <viktor_mitin@epam.com>
---
See discussion in mail:
[PATCH] xen/arm: merge make_timer_node and make_timer_domU_node
xen/arch/arm/domain_build.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 4c8404155a..5f68603392 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -621,17 +621,19 @@ static void __init set_interrupt(gic_interrupt_t interrupt,
* "interrupts": contains the list of interrupts
* "interrupt-parent": link to the GIC
*/
-static int __init fdt_property_interrupts(void *fdt, gic_interrupt_t *intr,
- unsigned num_irq)
+static int __init fdt_property_interrupts(const struct kernel_info *kinfo,
+ gic_interrupt_t *intr, unsigned num_irq)
{
int res;
+ uint32_t phandle = is_hardware_domain(kinfo->d) ?
+ dt_interrupt_controller->phandle : GUEST_PHANDLE_GIC;
- res = fdt_property(fdt, "interrupts", intr, sizeof (intr[0]) * num_irq);
+ res = fdt_property(kinfo->fdt, "interrupts",
+ intr, sizeof (intr[0]) * num_irq);
if ( res )
return res;
- res = fdt_property_cell(fdt, "interrupt-parent",
- dt_interrupt_controller->phandle);
+ res = fdt_property_cell(kinfo->fdt, "interrupt-parent", phandle);
return res;
}
@@ -733,7 +735,7 @@ static int __init make_hypervisor_node(struct domain *d,
* TODO: Handle properly the cpumask;
*/
set_interrupt(intr, d->arch.evtchn_irq, 0xf, DT_IRQ_TYPE_LEVEL_LOW);
- res = fdt_property_interrupts(fdt, &intr, 1);
+ res = fdt_property_interrupts(kinfo, &intr, 1);
if ( res )
return res;
@@ -960,8 +962,10 @@ static int __init make_gic_node(const struct domain *d, void *fdt,
return res;
}
-static int __init make_timer_node(const struct domain *d, void *fdt)
+static int __init make_timer_node(const struct kernel_info *kinfo)
{
+ void *fdt = kinfo->fdt;
+
static const struct dt_device_match timer_ids[] __initconst =
{
DT_MATCH_COMPATIBLE("arm,armv7-timer"),
@@ -1016,7 +1020,7 @@ static int __init make_timer_node(const struct domain *d, void *fdt)
dt_dprintk(" Virt interrupt %u\n", irq);
set_interrupt(intrs[2], irq, 0xf, DT_IRQ_TYPE_LEVEL_LOW);
- res = fdt_property_interrupts(fdt, intrs, 3);
+ res = fdt_property_interrupts(kinfo, intrs, 3);
if ( res )
return res;
@@ -1377,7 +1381,7 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
if ( device_get_class(node) == DEVICE_GIC )
return make_gic_node(d, kinfo->fdt, node);
if ( dt_match_node(timer_matches, node) )
- return make_timer_node(d, kinfo->fdt);
+ return make_timer_node(kinfo);
/* Skip nodes used by Xen */
if ( dt_device_used_by(node) == DOMID_XEN )
--
2.17.1
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
next reply other threads:[~2019-07-26 9:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-26 9:01 Viktor Mitin [this message]
2019-07-26 11:57 ` [Xen-devel] [PATCH] xen/arm: extend fdt_property_interrupts Volodymyr Babchuk
2019-07-26 12:46 ` Viktor Mitin
2019-07-26 13:24 ` Volodymyr Babchuk
2019-07-27 13:05 ` Julien Grall
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=20190726090124.26444-1-viktor.mitin.19@gmail.com \
--to=viktor.mitin.19@gmail.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=julien.grall@arm.com \
--cc=sstabellini@kernel.org \
--cc=viktor_mitin@epam.com \
--cc=xen-devel@lists.xenproject.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 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.