BCM5301X: GIC: PPI11 is secure or misconfigured (same for PPI13)

Rafał Miłecki rafal at milecki.pl
Thu Mar 2 06:32:28 PST 2017


Hi,

I just updated kernel on my SmartRG SR400ac (bcm4708-smartrg-sr400ac.dts) from
4.4 to 4.9 and noticed following warnings in the boot log:
[    0.000000] GIC: PPI11 is secure or misconfigured
[    0.000007] sched_clock: 64 bits at 400MHz, resolution 2ns, wraps every 4398046511103ns
[    0.008553] clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x5c4093a7d1, max_idle_ns: 440795210635 ns
[    0.020380] GIC: PPI11 is secure or misconfigured
[    0.025446] GIC: PPI13 is secure or misconfigured
[    0.030498] GIC: PPI13 is secure or misconfigured
[    0.035690] Calibrating delay loop... 1594.16 BogoMIPS (lpj=7970816)
[    0.123484] pid_max: default: 32768 minimum: 301
[    0.128511] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.135591] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.143687] CPU: Testing write buffer coherency: ok
[    0.149226] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.155371] Setting up static identity map for 0x82a0 - 0x82d4
[    0.163390] GIC: PPI11 is secure or misconfigured
[    0.163407] GIC: PPI13 is secure or misconfigured

This is caused by following commits:
992345a58e0c ("irqchip/gic: WARN if setting the interrupt type for a PPI fails")
4b357daed698 ("genirq: Look-up trigger type if not specified by caller")
f35ad083783e ("genirq: Look-up percpu trigger type if not specified by caller")

There warnings are coming from the following (forward) traces:
request_percpu_irq → __setup_irq → (...) → gic_set_type → gic_configure_irq
cpuhp_setup_state → (...) → gt_starting_cpu → enable_percpu_irq → __irq_set_trigger → chip->irq_set_type
(see e.g. global_timer_of_register).
Later ones are coming e.g. from twd_local_timer_of_register.

Before adding mentioned commits gic_set_type was never called for there IRQs.

AFAIU we need to update following entries in the bcm5301x.dtsi:

timer at 20200 {
	compatible = "arm,cortex-a9-global-timer";
	reg = <0x20200 0x100>;
	interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
	clocks = <&periph_clk>;
};

local-timer at 20600 {
	compatible = "arm,cortex-a9-twd-timer";
	reg = <0x20600 0x100>;
	interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
	clocks = <&periph_clk>;
};

Does anyone happen to know how to define these IRQs properly?



More information about the linux-arm-kernel mailing list