[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] [PATCH v3 2/2] xen/dt: Allow only IRQ translation that are mapped to main GIC
On 16/07/14 14:14, Ian Campbell wrote:
On Wed, 2014-07-09 at 14:23 +0100, Julien Grall wrote:
Xen is only able to handle one GIC controller. Some platform may contain
other interrupt controller.
Make sure to only translate IRQ mapped into the GIC handled by Xen.
Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
---
Changes in v3:
- Add an ASSERT to check that dt_interrupt_controller is not
NULL.
Changes in v2:
- Fix compilation...
---
xen/common/device_tree.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c
index 310635e..cc45bd1 100644
--- a/xen/common/device_tree.c
+++ b/xen/common/device_tree.c
@@ -1442,9 +1442,12 @@ int dt_irq_translate(const struct dt_raw_irq *raw,
struct dt_irq *out_irq)
{
ASSERT(dt_irq_xlate != NULL);
+ ASSERT(dt_interrupt_controller != NULL);
- /* TODO: Retrieve the right irq_xlate. This is only work for the gic */
+ if ( raw->controller != dt_interrupt_controller )
+ return -EINVAL;
+ /* TODO: Retrieve the right irq_xlate. This is only work for the gic */
"This only works for ...".
Do you mean it to say "primary gic"? In which case I think it was in the
correct location before (i.e. before the check which enforced that).
Which location are you talking about? The one in map_device?
If so, it doesn't protect anything, but only avoid to assign an IRQ to
DOM0 which is not routed to the primary interrupt controller.
Checking the controller in the location will prevent platform_get_irq to
translate IRQ not handled by the gic controller. Futhermore, it will
avoid the new hypercall to list interrupt for a specific device node
returning an invalid IRQ number.
Regards,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|