aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/admin-guide/kernel-parameters.txt8
-rw-r--r--drivers/irqchip/irq-gic-v3.c10
2 files changed, 17 insertions, 1 deletions
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 1d1d53f85ddd..60130231db3b 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -1743,6 +1743,14 @@
1743 of a GICv2 controller even if the memory range 1743 of a GICv2 controller even if the memory range
1744 exposed by the device tree is too small. 1744 exposed by the device tree is too small.
1745 1745
1746 irqchip.gicv3_nolpi=
1747 [ARM, ARM64]
1748 Force the kernel to ignore the availability of
1749 LPIs (and by consequence ITSs). Intended for system
1750 that use the kernel as a bootloader, and thus want
1751 to let secondary kernels in charge of setting up
1752 LPIs.
1753
1746 irqfixup [HW] 1754 irqfixup [HW]
1747 When an interrupt is not handled search all handlers 1755 When an interrupt is not handled search all handlers
1748 for it. Intended to get systems with badly broken 1756 for it. Intended to get systems with badly broken
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
index 0ea02504115d..3e9eeb6cb294 100644
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -613,9 +613,17 @@ static void gic_cpu_sys_reg_init(void)
613 pr_crit_once("RSS is required but GICD doesn't support it\n"); 613 pr_crit_once("RSS is required but GICD doesn't support it\n");
614} 614}
615 615
616static bool gicv3_nolpi;
617
618static int __init gicv3_nolpi_cfg(char *buf)
619{
620 return strtobool(buf, &gicv3_nolpi);
621}
622early_param("irqchip.gicv3_nolpi", gicv3_nolpi_cfg);
623
616static int gic_dist_supports_lpis(void) 624static int gic_dist_supports_lpis(void)
617{ 625{
618 return !!(readl_relaxed(gic_data.dist_base + GICD_TYPER) & GICD_TYPER_LPIS); 626 return !!(readl_relaxed(gic_data.dist_base + GICD_TYPER) & GICD_TYPER_LPIS) && !gicv3_nolpi;
619} 627}
620 628
621static void gic_cpu_init(void) 629static void gic_cpu_init(void)