[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen staging] xen/arm: Cap the number of interrupt lines for dom0



commit a41feccdb6c03f12bddb4fb650a0465f0ed6eeca
Author:     Lukas Juenger <juenger@xxxxxxxxxxxxxxxxxx>
AuthorDate: Fri Apr 5 15:54:04 2019 +0200
Commit:     Julien Grall <julien.grall@xxxxxxx>
CommitDate: Mon Apr 8 11:24:15 2019 +0100

    xen/arm: Cap the number of interrupt lines for dom0
    
    Dom0 vGIC will use the same number of interrupt lines as the hardware GIC.
    While the hardware GIC can support up to 1020 interrupt lines,
    the vGIC is only supporting up to 992 interrupt lines.
    This means that Xen will not be able to boot on platforms where the hardware
    GIC supports more than 992 interrupt lines.
    While it would make sense to increase the limits in the vGICs, this is not
    trivial because of the design choices.
    At the moment, only models seem to report the maximum of interrupt lines.
    They also do not have any interrupt wired above the 992 limit.
    So it should be fine to cap the number of interrupt lines for dom0 to 992 
lines.
    
    Signed-off-by: Lukas Juenger <juenger@xxxxxxxxxxxxxxxxxx>
    Acked-by: Julien Grall <julien.grall@xxxxxxx>
---
 xen/arch/arm/setup.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 444857a967..ccb0f181ea 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -888,7 +888,13 @@ void __init start_xen(unsigned long boot_phys_offset,
     /* Create initial domain 0. */
     /* The vGIC for DOM0 is exactly emulating the hardware GIC */
     dom0_cfg.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
-    dom0_cfg.arch.nr_spis = gic_number_lines() - 32;
+    /*
+     * Xen vGIC supports a maximum of 992 interrupt lines.
+     * 32 are substracted to cover local IRQs.
+     */
+    dom0_cfg.arch.nr_spis = min(gic_number_lines(), (unsigned int) 992) - 32;
+    if ( gic_number_lines() > 992 )
+        printk(XENLOG_WARNING "Maximum number of vGIC IRQs exceeded.\n");
     dom0_cfg.max_vcpus = dom0_max_vcpus();
 
     dom0 = domain_create(0, &dom0_cfg, true);
--
generated by git-patchbot for /home/xen/git/xen.git#staging

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.