mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-11-01 09:13:37 +00:00 
			
		
		
		
	arm64: Enable the support of pseudo-NMIs
Add a build option and a command line parameter to build and enable the support of pseudo-NMIs. Signed-off-by: Julien Thierry <julien.thierry@arm.com> Suggested-by: Daniel Thompson <daniel.thompson@linaro.org> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
		
							parent
							
								
									c25349fd3c
								
							
						
					
					
						commit
						bc3c03ccb4
					
				
					 3 changed files with 28 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -1831,6 +1831,11 @@
 | 
			
		|||
			to let secondary kernels in charge of setting up
 | 
			
		||||
			LPIs.
 | 
			
		||||
 | 
			
		||||
	irqchip.gicv3_pseudo_nmi= [ARM64]
 | 
			
		||||
			Enables support for pseudo-NMIs in the kernel. This
 | 
			
		||||
			requires the kernel to be built with
 | 
			
		||||
			CONFIG_ARM64_PSEUDO_NMI.
 | 
			
		||||
 | 
			
		||||
	irqfixup	[HW]
 | 
			
		||||
			When an interrupt is not handled search all handlers
 | 
			
		||||
			for it. Intended to get systems with badly broken
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1327,6 +1327,20 @@ config ARM64_MODULE_PLTS
 | 
			
		|||
	bool
 | 
			
		||||
	select HAVE_MOD_ARCH_SPECIFIC
 | 
			
		||||
 | 
			
		||||
config ARM64_PSEUDO_NMI
 | 
			
		||||
	bool "Support for NMI-like interrupts"
 | 
			
		||||
	select CONFIG_ARM_GIC_V3
 | 
			
		||||
	help
 | 
			
		||||
	  Adds support for mimicking Non-Maskable Interrupts through the use of
 | 
			
		||||
	  GIC interrupt priority. This support requires version 3 or later of
 | 
			
		||||
	  Arm GIC.
 | 
			
		||||
 | 
			
		||||
	  This high priority configuration for interrupts needs to be
 | 
			
		||||
	  explicitly enabled by setting the kernel parameter
 | 
			
		||||
	  "irqchip.gicv3_pseudo_nmi" to 1.
 | 
			
		||||
 | 
			
		||||
	  If unsure, say N
 | 
			
		||||
 | 
			
		||||
config RELOCATABLE
 | 
			
		||||
	bool
 | 
			
		||||
	help
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1207,10 +1207,18 @@ static void cpu_enable_address_auth(struct arm64_cpu_capabilities const *cap)
 | 
			
		|||
#endif /* CONFIG_ARM64_PTR_AUTH */
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_ARM64_PSEUDO_NMI
 | 
			
		||||
static bool enable_pseudo_nmi;
 | 
			
		||||
 | 
			
		||||
static int __init early_enable_pseudo_nmi(char *p)
 | 
			
		||||
{
 | 
			
		||||
	return strtobool(p, &enable_pseudo_nmi);
 | 
			
		||||
}
 | 
			
		||||
early_param("irqchip.gicv3_pseudo_nmi", early_enable_pseudo_nmi);
 | 
			
		||||
 | 
			
		||||
static bool can_use_gic_priorities(const struct arm64_cpu_capabilities *entry,
 | 
			
		||||
				   int scope)
 | 
			
		||||
{
 | 
			
		||||
	return false;
 | 
			
		||||
	return enable_pseudo_nmi && has_useable_gicv3_cpuif(entry, scope);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue