All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@linaro.org>
To: xen-devel@lists.xenproject.org
Cc: stefano.stabellini@citrix.com,
	Julien Grall <julien.grall@linaro.org>,
	tim@xen.org, ian.campbell@citrix.com
Subject: [PATCH v3 02/24] xen/arm: Divide GIC initialization in 2 parts
Date: Tue, 13 Jan 2015 14:25:11 +0000	[thread overview]
Message-ID: <1421159133-31526-3-git-send-email-julien.grall@linaro.org> (raw)
In-Reply-To: <1421159133-31526-1-git-send-email-julien.grall@linaro.org>

Currently the function to translate IRQ from the device tree is set
unconditionally  to be able to be able to retrieve serial/timer IRQ before the
GIC has been initialized.

It assumes that the xlate function won't never changed. We may also need to
have the primary interrupt controller very early.

Rework the gic initialization in 2 parts:
    - gic_preinit: Get the interrupt controller device tree node and set
up GIC and xlate callbacks
    - gic_init: Initialize the interrupt controller and the boot CPU
    interrupts.

The former function will be called just after the IRQ subsystem as been
initialized.

Signed-off-by: Julien Grall <julien.grall@linaro.org>

---
    Changes in v3:
        - Patch was previously sent in a separate series [1]
        - Reorder the function to avoid forward declaration
        - Make gic-v3 driver compliant to the new interface
        - Remove spurious field addition in gicv2 structure

    Changelog based on the separate series:

    Changes in v3:
        - Patch added.

    [1] https://patches.linaro.org/33313/
---
 xen/arch/arm/gic-v2.c     | 70 ++++++++++++++++++++++---------------------
 xen/arch/arm/gic-v3.c     | 75 ++++++++++++++++++++++++-----------------------
 xen/arch/arm/gic.c        | 16 ++++++++--
 xen/arch/arm/setup.c      |  3 +-
 xen/include/asm-arm/gic.h |  8 +++++
 5 files changed, 100 insertions(+), 72 deletions(-)

diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
index 15916c9..016b0fd 100644
--- a/xen/arch/arm/gic-v2.c
+++ b/xen/arch/arm/gic-v2.c
@@ -655,37 +655,10 @@ static hw_irq_controller gicv2_guest_irq_type = {
     .set_affinity = gicv2_irq_set_affinity,
 };
 
-const static struct gic_hw_operations gicv2_ops = {
-    .info                = &gicv2_info,
-    .secondary_init      = gicv2_secondary_cpu_init,
-    .save_state          = gicv2_save_state,
-    .restore_state       = gicv2_restore_state,
-    .dump_state          = gicv2_dump_state,
-    .gicv_setup          = gicv2v_setup,
-    .gic_host_irq_type   = &gicv2_host_irq_type,
-    .gic_guest_irq_type  = &gicv2_guest_irq_type,
-    .eoi_irq             = gicv2_eoi_irq,
-    .deactivate_irq      = gicv2_dir_irq,
-    .read_irq            = gicv2_read_irq,
-    .set_irq_properties  = gicv2_set_irq_properties,
-    .send_SGI            = gicv2_send_SGI,
-    .disable_interface   = gicv2_disable_interface,
-    .update_lr           = gicv2_update_lr,
-    .update_hcr_status   = gicv2_hcr_status,
-    .clear_lr            = gicv2_clear_lr,
-    .read_lr             = gicv2_read_lr,
-    .write_lr            = gicv2_write_lr,
-    .read_vmcr_priority  = gicv2_read_vmcr_priority,
-    .read_apr            = gicv2_read_apr,
-    .make_dt_node        = gicv2_make_dt_node,
-};
-
-/* Set up the GIC */
-static int __init gicv2_init(struct dt_device_node *node, const void *data)
+static int __init gicv2_init(void)
 {
     int res;
-
-    dt_device_set_used_by(node, DOMID_XEN);
+    const struct dt_device_node *node = gicv2_info.node;
 
     res = dt_device_get_address(node, 0, &gicv2.dbase, NULL);
     if ( res || !gicv2.dbase || (gicv2.dbase & ~PAGE_MASK) )
@@ -708,9 +681,6 @@ static int __init gicv2_init(struct dt_device_node *node, const void *data)
         panic("GICv2: Cannot find the maintenance IRQ");
     gicv2_info.maintenance_irq = res;
 
-    /* Set the GIC as the primary interrupt controller */
-    dt_interrupt_controller = node;
-
     /* TODO: Add check on distributor, cpu size */
 
     printk("GICv2 initialization:\n"
@@ -755,8 +725,42 @@ static int __init gicv2_init(struct dt_device_node *node, const void *data)
 
     spin_unlock(&gicv2.lock);
 
+    return 0;
+}
+
+const static struct gic_hw_operations gicv2_ops = {
+    .info                = &gicv2_info,
+    .init                = gicv2_init,
+    .secondary_init      = gicv2_secondary_cpu_init,
+    .save_state          = gicv2_save_state,
+    .restore_state       = gicv2_restore_state,
+    .dump_state          = gicv2_dump_state,
+    .gicv_setup          = gicv2v_setup,
+    .gic_host_irq_type   = &gicv2_host_irq_type,
+    .gic_guest_irq_type  = &gicv2_guest_irq_type,
+    .eoi_irq             = gicv2_eoi_irq,
+    .deactivate_irq      = gicv2_dir_irq,
+    .read_irq            = gicv2_read_irq,
+    .set_irq_properties  = gicv2_set_irq_properties,
+    .send_SGI            = gicv2_send_SGI,
+    .disable_interface   = gicv2_disable_interface,
+    .update_lr           = gicv2_update_lr,
+    .update_hcr_status   = gicv2_hcr_status,
+    .clear_lr            = gicv2_clear_lr,
+    .read_lr             = gicv2_read_lr,
+    .write_lr            = gicv2_write_lr,
+    .read_vmcr_priority  = gicv2_read_vmcr_priority,
+    .read_apr            = gicv2_read_apr,
+    .make_dt_node        = gicv2_make_dt_node,
+};
+
+/* Set up the GIC */
+static int __init gicv2_preinit(struct dt_device_node *node, const void *data)
+{
     gicv2_info.hw_version = GIC_V2;
+    gicv2_info.node = node;
     register_gic_ops(&gicv2_ops);
+    dt_irq_xlate = gic_irq_xlate;
 
     return 0;
 }
@@ -769,7 +773,7 @@ static const struct dt_device_match gicv2_dt_match[] __initconst =
 
 DT_DEVICE_START(gicv2, "GICv2", DEVICE_GIC)
         .dt_match = gicv2_dt_match,
-        .init = gicv2_init,
+        .init = gicv2_preinit,
 DT_DEVICE_END
 
 /*
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index 2ddcbab..f650756 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1141,37 +1141,13 @@ static const hw_irq_controller gicv3_guest_irq_type = {
     .set_affinity = gicv3_irq_set_affinity,
 };
 
-static const struct gic_hw_operations gicv3_ops = {
-    .info                = &gicv3_info,
-    .save_state          = gicv3_save_state,
-    .restore_state       = gicv3_restore_state,
-    .dump_state          = gicv3_dump_state,
-    .gicv_setup          = gicv_v3_init,
-    .gic_host_irq_type   = &gicv3_host_irq_type,
-    .gic_guest_irq_type  = &gicv3_guest_irq_type,
-    .eoi_irq             = gicv3_eoi_irq,
-    .deactivate_irq      = gicv3_dir_irq,
-    .read_irq            = gicv3_read_irq,
-    .set_irq_properties  = gicv3_set_irq_properties,
-    .send_SGI            = gicv3_send_sgi,
-    .disable_interface   = gicv3_disable_interface,
-    .update_lr           = gicv3_update_lr,
-    .update_hcr_status   = gicv3_hcr_status,
-    .clear_lr            = gicv3_clear_lr,
-    .read_lr             = gicv3_read_lr,
-    .write_lr            = gicv3_write_lr,
-    .read_vmcr_priority  = gicv3_read_vmcr_priority,
-    .read_apr            = gicv3_read_apr,
-    .secondary_init      = gicv3_secondary_cpu_init,
-    .make_dt_node        = gicv3_make_dt_node,
-};
-
 /* Set up the GIC */
-static int __init gicv3_init(struct dt_device_node *node, const void *data)
+static int __init gicv3_init(void)
 {
     struct rdist_region *rdist_regs;
     int res, i;
     uint32_t reg;
+    const struct dt_device_node *node = gicv3_info.node;
 
     if ( !cpu_has_gicv3 )
     {
@@ -1179,8 +1155,6 @@ static int __init gicv3_init(struct dt_device_node *node, const void *data)
         return -ENODEV;
     }
 
-    dt_device_set_used_by(node, DOMID_XEN);
-
     res = dt_device_get_address(node, 0, &gicv3.dbase, &gicv3.dbase_size);
     if ( res || !gicv3.dbase )
         panic("GICv3: Cannot find a valid distributor address");
@@ -1232,9 +1206,6 @@ static int __init gicv3_init(struct dt_device_node *node, const void *data)
         panic("GICv3: Cannot find the maintenance IRQ");
     gicv3_info.maintenance_irq = res;
 
-    /* Set the GIC as the primary interrupt controller */
-    dt_interrupt_controller = node;
-
     for ( i = 0; i < gicv3.rdist_count; i++ )
     {
         /* map dbase & rdist regions */
@@ -1269,15 +1240,47 @@ static int __init gicv3_init(struct dt_device_node *node, const void *data)
     res = gicv3_cpu_init();
     gicv3_hyp_init();
 
-    gicv3_info.hw_version = GIC_V3;
-    /* Register hw ops*/
-    register_gic_ops(&gicv3_ops);
-
     spin_unlock(&gicv3.lock);
 
     return res;
 }
 
+static const struct gic_hw_operations gicv3_ops = {
+    .info                = &gicv3_info,
+    .init                = gicv3_init,
+    .save_state          = gicv3_save_state,
+    .restore_state       = gicv3_restore_state,
+    .dump_state          = gicv3_dump_state,
+    .gicv_setup          = gicv_v3_init,
+    .gic_host_irq_type   = &gicv3_host_irq_type,
+    .gic_guest_irq_type  = &gicv3_guest_irq_type,
+    .eoi_irq             = gicv3_eoi_irq,
+    .deactivate_irq      = gicv3_dir_irq,
+    .read_irq            = gicv3_read_irq,
+    .set_irq_properties  = gicv3_set_irq_properties,
+    .send_SGI            = gicv3_send_sgi,
+    .disable_interface   = gicv3_disable_interface,
+    .update_lr           = gicv3_update_lr,
+    .update_hcr_status   = gicv3_hcr_status,
+    .clear_lr            = gicv3_clear_lr,
+    .read_lr             = gicv3_read_lr,
+    .write_lr            = gicv3_write_lr,
+    .read_vmcr_priority  = gicv3_read_vmcr_priority,
+    .read_apr            = gicv3_read_apr,
+    .secondary_init      = gicv3_secondary_cpu_init,
+    .make_dt_node        = gicv3_make_dt_node,
+};
+
+static int __init gicv3_preinit(struct dt_device_node *node, const void *data)
+{
+    gicv3_info.hw_version = GIC_V3;
+    gicv3_info.node = node;
+    register_gic_ops(&gicv3_ops);
+    dt_irq_xlate = gic_irq_xlate;
+
+    return 0;
+}
+
 static const struct dt_device_match gicv3_dt_match[] __initconst =
 {
     DT_MATCH_GIC_V3,
@@ -1286,7 +1289,7 @@ static const struct dt_device_match gicv3_dt_match[] __initconst =
 
 DT_DEVICE_START(gicv3, "GICv3", DEVICE_GIC)
         .dt_match = gicv3_dt_match,
-        .init = gicv3_init,
+        .init = gicv3_preinit,
 DT_DEVICE_END
 
 /*
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index d1ab6b5..63147f3 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -163,8 +163,10 @@ int gic_irq_xlate(const u32 *intspec, unsigned int intsize,
     return 0;
 }
 
-/* Set up the GIC */
-void __init gic_init(void)
+/* Find the interrupt controller and set up the callback to translate
+ * device tree IRQ.
+ */
+void __init gic_preinit(void)
 {
     int rc;
     struct dt_device_node *node;
@@ -189,6 +191,16 @@ void __init gic_init(void)
     if ( !num_gics )
         panic("Unable to find compatible GIC in the device tree");
 
+    /* Set the GIC as the primary interrupt controller */
+    dt_interrupt_controller = node;
+    dt_device_set_used_by(node, DOMID_XEN);
+}
+
+/* Set up the GIC */
+void __init gic_init(void)
+{
+    if ( gic_hw_ops->init() )
+        panic("Failed to initialize the GIC drivers");
     /* Clear LR mask for cpu0 */
     clear_cpu_lr_mask();
 }
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 4d242e0..18227f6 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -740,10 +740,11 @@ void __init start_xen(unsigned long boot_phys_offset,
 
     vm_init();
     dt_unflatten_host_device_tree();
-    dt_irq_xlate = gic_irq_xlate;
 
     init_IRQ();
 
+    gic_preinit();
+
     dt_uart_init();
     console_init_preirq();
     console_init_ring();
diff --git a/xen/include/asm-arm/gic.h b/xen/include/asm-arm/gic.h
index 73ca3cf..6286c71 100644
--- a/xen/include/asm-arm/gic.h
+++ b/xen/include/asm-arm/gic.h
@@ -229,6 +229,10 @@ extern void gic_remove_from_queues(struct vcpu *v, unsigned int virtual_irq);
 
 /* Accept an interrupt from the GIC and dispatch its handler */
 extern void gic_interrupt(struct cpu_user_regs *regs, int is_fiq);
+/* Find the interrupt controller and set up the callback to translate
+ * device tree IRQ.
+ */
+extern void gic_preinit(void);
 /* Bring up the interrupt controller, and report # cpus attached */
 extern void gic_init(void);
 /* Bring up a secondary CPU's per-CPU GIC interface */
@@ -281,11 +285,15 @@ struct gic_info {
     uint8_t nr_lrs;
     /* Maintenance irq number */
     unsigned int maintenance_irq;
+    /* Pointer to the device tree node representing the interrupt controller */
+    const struct dt_device_node *node;
 };
 
 struct gic_hw_operations {
     /* Hold GIC HW information */
     const struct gic_info *info;
+    /* Initialize the GIC and the boot CPU */
+    int (*init)(void);
     /* Save GIC registers */
     void (*save_state)(struct vcpu *);
     /* Restore GIC registers */
-- 
2.1.4

  parent reply	other threads:[~2015-01-13 14:26 UTC|newest]

Thread overview: 251+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-13 14:25 [PATCH v3 00/24] xen/arm: Add support for non-pci passthrough Julien Grall
2015-01-13 14:25 ` [PATCH v3 01/24] xen: Extend DOMCTL createdomain to support arch configuration Julien Grall
2015-01-13 15:08   ` Daniel De Graaf
2015-01-19 16:46   ` Jan Beulich
2015-01-20 12:40     ` Julien Grall
2015-01-28 15:50   ` Stefano Stabellini
2015-02-20 15:15   ` Ian Campbell
2015-02-20 16:09     ` Julien Grall
2015-02-20 16:37       ` Jan Beulich
2015-02-23 15:09       ` Ian Campbell
2015-02-20 16:35     ` Jan Beulich
2015-02-23 15:48     ` Andrew Cooper
2015-02-23 16:00       ` Ian Campbell
2015-02-23 21:48         ` Julien Grall
2015-02-24 10:06           ` Ian Campbell
2015-01-13 14:25 ` Julien Grall [this message]
2015-01-28 16:09   ` [PATCH v3 02/24] xen/arm: Divide GIC initialization in 2 parts Stefano Stabellini
2015-02-20 15:19     ` Ian Campbell
2015-02-20 15:19   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 03/24] xen/dts: Allow only IRQ translation that are mapped to main GIC Julien Grall
2015-01-28 16:11   ` Stefano Stabellini
2015-02-20 15:20   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 04/24] xen: guestcopy: Provide an helper to safely copy string from guest Julien Grall
2015-01-13 15:10   ` Daniel De Graaf
2015-01-19 16:51   ` Jan Beulich
2015-01-20 12:45     ` Julien Grall
2015-01-20 13:16       ` Jan Beulich
2015-02-20 15:22   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 05/24] xen/arm: vgic: Introduce a function to initialize pending_irq Julien Grall
2015-02-20 15:24   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 06/24] xen/arm: Map disabled device in DOM0 Julien Grall
2015-01-28 16:18   ` Stefano Stabellini
2015-01-28 16:23     ` Julien Grall
2015-01-29 11:41       ` Stefano Stabellini
2015-02-20 15:27   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 07/24] xen/arm: Introduce xen, passthrough property Julien Grall
2015-01-28 16:36   ` Stefano Stabellini
2015-01-28 16:53     ` Julien Grall
2015-01-29 11:43       ` Stefano Stabellini
2015-02-20 15:38   ` Ian Campbell
2015-02-20 17:01     ` Julien Grall
2015-02-23 15:12       ` Ian Campbell
2015-02-23 15:43         ` Julien Grall
2015-02-20 15:42   ` Ian Campbell
2015-02-20 17:03     ` Julien Grall
2015-02-23 15:15       ` Ian Campbell
2015-02-23 15:44         ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 08/24] xen/arm: Allow virq != irq Julien Grall
2015-01-28 16:47   ` Stefano Stabellini
2015-01-28 16:56     ` Julien Grall
2015-01-28 17:00       ` Julien Grall
2015-01-29 11:50       ` Stefano Stabellini
2015-02-20 15:52   ` Ian Campbell
2015-02-20 17:09     ` Julien Grall
2015-02-27 14:33       ` Julien Grall
2015-02-27 14:44         ` Ian Campbell
2015-02-27 15:55           ` Julien Grall
2015-02-27 14:25     ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 09/24] xen/arm: route_irq_to_guest: Check validity of the IRQ Julien Grall
2015-01-28 17:55   ` Stefano Stabellini
2015-01-28 18:05     ` Julien Grall
2015-01-29 11:52       ` Stefano Stabellini
2015-02-20 16:00   ` Ian Campbell
2015-02-20 17:21     ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 10/24] xen/arm: gic: Add sanity checks gic_route_irq_to_guest Julien Grall
2015-01-28 18:15   ` Stefano Stabellini
2015-02-20 16:07   ` Ian Campbell
2015-02-20 17:28     ` Julien Grall
2015-02-23 15:20       ` Ian Campbell
2015-02-23 15:47         ` Julien Grall
2015-02-23 15:52           ` Ian Campbell
2015-02-23 15:54             ` Julien Grall
2015-02-23 16:04               ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 11/24] xen/arm: Let the toolstack configure the number of SPIs Julien Grall
2015-01-28 18:26   ` Stefano Stabellini
2015-01-28 18:58     ` Julien Grall
2015-01-29 12:01       ` Stefano Stabellini
2015-01-29 12:14         ` Julien Grall
2015-02-20 16:08     ` Ian Campbell
2015-02-20 17:29       ` Julien Grall
2015-02-23 15:22         ` Ian Campbell
2015-02-23 15:48           ` Julien Grall
2015-02-20 16:23   ` Ian Campbell
2015-02-20 17:31     ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 12/24] xen/arm: Release IRQ routed to a domain when it's destroying Julien Grall
2015-01-28 18:38   ` Stefano Stabellini
2015-02-20 16:31   ` Ian Campbell
2015-02-20 17:41     ` Julien Grall
2015-02-23 15:25       ` Ian Campbell
2015-02-23 15:49         ` Julien Grall
2015-03-03 12:50       ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 13/24] xen/arm: Implement hypercall PHYSDEVOP_{, un}map_pirq Julien Grall
2015-01-19 16:54   ` Jan Beulich
2015-01-20 14:01     ` Julien Grall
2015-01-28 18:52   ` Stefano Stabellini
2015-01-28 19:04     ` Julien Grall
2015-01-29 12:17       ` Stefano Stabellini
2015-01-29 12:26         ` Julien Grall
2015-01-29 12:33           ` Stefano Stabellini
2015-02-20 16:53             ` Ian Campbell
2015-02-23  9:33               ` Jan Beulich
2015-02-23 15:28                 ` Ian Campbell
2015-02-23 15:53                   ` Julien Grall
2015-02-23 16:04                     ` Ian Campbell
2015-02-23 16:11                       ` Julien Grall
2015-02-23 16:34                         ` Ian Campbell
2015-02-23 21:54                           ` Julien Grall
2015-02-23 16:22                     ` Jan Beulich
2015-02-23 15:51               ` Julien Grall
2015-02-23 16:02                 ` Ian Campbell
2015-03-04 14:37                   ` Julien Grall
2015-03-04 14:55                     ` Jan Beulich
2015-03-04 14:56                       ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 14/24] xen/dts: Use unsigned int for MMIO and IRQ index Julien Grall
2015-02-20 16:55   ` Ian Campbell
2015-02-23 15:57     ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 15/24] xen/dts: Provide an helper to get a DT node from a path provided by a guest Julien Grall
2015-02-20 16:56   ` Ian Campbell
2015-02-20 17:43     ` Julien Grall
2015-02-23 15:29       ` Ian Campbell
2015-02-23 15:30   ` Ian Campbell
2015-02-23 16:01     ` Julien Grall
2015-02-23 16:27       ` Ian Campbell
2015-03-10 13:58         ` Julien Grall
2015-03-11 12:34           ` Ian Campbell
2015-03-19 14:53             ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 16/24] xen/passthrough: Introduce iommu_construct Julien Grall
2015-01-19 17:02   ` Jan Beulich
2015-01-20 14:28     ` Julien Grall
2015-01-20 16:40       ` Jan Beulich
2015-01-20 17:11         ` Julien Grall
2015-01-21 10:23           ` Jan Beulich
2015-01-21 10:37             ` Julien Grall
2015-01-21 10:48               ` Jan Beulich
2015-01-21 12:13                 ` Julien Grall
2015-01-21 14:13                   ` Jan Beulich
2015-01-21 14:22                     ` Julien Grall
2015-01-21 14:29                       ` Jan Beulich
2015-02-20 16:58   ` Ian Campbell
2015-02-20 17:45     ` Julien Grall
2015-02-23 15:31       ` Ian Campbell
2015-02-23 16:04         ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 17/24] xen/passthrough: arm: release earlier the DT devices assigned to a guest Julien Grall
2015-01-20  9:19   ` Jan Beulich
2015-01-20 14:30     ` Julien Grall
2015-01-20 16:42       ` Jan Beulich
2015-01-28 18:59   ` Stefano Stabellini
2015-02-20 17:03   ` Ian Campbell
2015-02-20 17:46     ` Julien Grall
2015-02-23  9:37       ` Jan Beulich
2015-02-23 15:33         ` Ian Campbell
2015-02-23 16:22           ` Jan Beulich
2015-01-13 14:25 ` [PATCH v3 18/24] xen/passthrough: iommu_deassign_device_dt: By default reassign device to nobody Julien Grall
2015-01-20  9:21   ` Jan Beulich
2015-01-20 14:31     ` Julien Grall
2015-01-29 10:20   ` Stefano Stabellini
2015-02-20 17:04   ` Ian Campbell
2015-02-23  9:40     ` Jan Beulich
2015-02-23 10:10       ` Julien Grall
2015-02-23 10:20         ` Jan Beulich
2015-02-23 15:39           ` Ian Campbell
2015-02-23 16:24             ` Jan Beulich
2015-02-23 16:35               ` Ian Campbell
2015-02-23 16:37             ` Julien Grall
2015-02-23 16:47               ` Jan Beulich
2015-02-23 16:54                 ` Julien Grall
2015-02-23 10:10     ` Julien Grall
2015-02-23 15:34       ` Ian Campbell
2015-03-10 15:29         ` Julien Grall
2015-03-11 12:35           ` Ian Campbell
2015-03-19 15:07             ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 19/24] xen/iommu: arm: Wire iommu DOMCTL for ARM Julien Grall
2015-01-20  9:22   ` Jan Beulich
2015-01-20 14:32     ` Julien Grall
2015-02-20 17:06   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 20/24] xen/passthrough: Extend XEN_DOMCTL_assign_device to support DT device Julien Grall
2015-01-20  9:34   ` Jan Beulich
2015-01-20 14:37     ` Julien Grall
2015-01-20 16:43       ` Jan Beulich
2015-01-29 10:29     ` Stefano Stabellini
2015-01-29 10:37       ` Jan Beulich
2015-01-29 11:40       ` Julien Grall
2015-01-29 10:29   ` Stefano Stabellini
2015-01-29 11:45     ` Julien Grall
2015-01-29 12:09       ` Stefano Stabellini
2015-01-29 13:09         ` Julien Grall
2015-01-29 15:03           ` Stefano Stabellini
2015-01-29 15:14             ` Julien Grall
2015-02-20 17:17   ` Ian Campbell
2015-02-23 16:25     ` Daniel De Graaf
2015-03-10 16:52       ` Julien Grall
2015-03-10 22:45         ` Daniel De Graaf
2015-03-10 23:07           ` Julien Grall
2015-03-10 23:39             ` Daniel De Graaf
2015-03-11 12:30               ` Julien Grall
2015-03-11  8:53           ` Jan Beulich
2015-03-11 12:15             ` Julien Grall
2015-03-11 12:23               ` Ian Campbell
2015-03-11 12:35                 ` Julien Grall
2015-03-11 12:45               ` Jan Beulich
2015-03-10 16:33     ` Julien Grall
2015-03-11 12:37       ` Ian Campbell
2015-03-11 13:50         ` Julien Grall
2015-03-11 13:55           ` Ian Campbell
2015-03-11 14:03             ` Jan Beulich
2015-03-11 14:11               ` Julien Grall
2015-03-13 16:47           ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 21/24] tools/(lib)xl: Add partial device tree support for ARM Julien Grall
2015-01-29 11:03   ` Stefano Stabellini
2015-01-29 12:02     ` Julien Grall
2015-01-29 12:26       ` Stefano Stabellini
2015-02-23 11:31     ` Ian Campbell
2015-02-23 11:46   ` Ian Campbell
2015-02-23 17:06     ` Julien Grall
2015-02-23 17:22       ` Ian Campbell
2015-03-17 13:32         ` Julien Grall
2015-02-23 12:03   ` Ian Jackson
2015-02-23 12:44     ` Ian Jackson
2015-02-23 18:43     ` Julien Grall
2015-02-23 19:12       ` Ian Jackson
2015-01-13 14:25 ` [PATCH v3 22/24] tools/libxl: arm: Use an higher value for the GIC phandle Julien Grall
2015-01-29 11:07   ` Stefano Stabellini
2015-01-29 12:05     ` Julien Grall
2015-01-29 12:28       ` Stefano Stabellini
2015-01-29 13:48         ` Julien Grall
2015-01-29 15:04           ` Stefano Stabellini
2015-01-29 15:12             ` Julien Grall
2015-02-23 14:36           ` Ian Campbell
2015-02-23 22:02             ` Julien Grall
2015-02-24 10:08               ` Ian Campbell
2015-03-18 14:14                 ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 23/24] libxl: Add support for non-PCI passthrough Julien Grall
2015-01-29 11:12   ` Stefano Stabellini
2015-01-29 12:08     ` Julien Grall
2015-01-29 12:31       ` Stefano Stabellini
2015-01-29 13:51         ` Julien Grall
2015-02-23 14:41           ` Ian Campbell
2015-02-23 14:42   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 24/24] xl: Add new option dtdev Julien Grall
2015-01-29 11:18   ` Stefano Stabellini
2015-01-29 12:09     ` Julien Grall
2015-01-29 12:32       ` Stefano Stabellini
2015-01-29 13:51         ` Julien Grall
2015-01-29 15:06           ` Stefano Stabellini
2015-02-23 14:44             ` Ian Campbell
2015-02-23 14:45   ` Ian Campbell
2015-02-23 22:03     ` Julien Grall
2015-02-24 10:07       ` Ian Campbell
2015-01-13 17:56 ` [PATCH v3 00/24] xen/arm: Add support for non-pci passthrough Julien Grall
2015-02-20 17:18 ` Ian Campbell
2015-02-20 17:47   ` 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=1421159133-31526-3-git-send-email-julien.grall@linaro.org \
    --to=julien.grall@linaro.org \
    --cc=ian.campbell@citrix.com \
    --cc=stefano.stabellini@citrix.com \
    --cc=tim@xen.org \
    --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.