arm/xen: Correctly check if the event channel interrupt is present
The function irq_of_parse_and_map returns 0 when the IRQ is not found.
Futhermore, move the check before notifying the user that we are running on
Xen.
Signed-off-by: Julien Grall <julien.grall@linaro.org>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index 7d0f070..6fbdc8f 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -51,7 +51,7 @@
int xen_platform_pci_unplug = XEN_UNPLUG_ALL;
EXPORT_SYMBOL_GPL(xen_platform_pci_unplug);
-static __read_mostly int xen_events_irq = -1;
+static __read_mostly unsigned int xen_events_irq;
int xen_remap_domain_mfn_array(struct vm_area_struct *vma,
unsigned long addr,
@@ -179,12 +179,14 @@
return 0;
grant_frames = res.start;
xen_events_irq = irq_of_parse_and_map(node, 0);
+ if (!xen_events_irq) {
+ pr_debug("Xen event channel interrupt not found\n");
+ return -ENODEV;
+ }
+
pr_info("Xen %s support found, events_irq=%d gnttab_frame=%pa\n",
version, xen_events_irq, &grant_frames);
- if (xen_events_irq < 0)
- return -ENODEV;
-
xen_domain_type = XEN_HVM_DOMAIN;
xen_setup_features();