Hi Team,
we are using J5eco (DRA62x) in one of our project.
I am trying to register PMU irq line as FIQ, to do this I am modifying the INTCPS_ILR0-127(Interrupt priority register) making bit 0 to 1.
below is the code snippet responsible for this setting
static int omap_set_nmi_routing(struct irq_data *d, unsigned int nmi)
+{
+ uint32_t ilr;
+
+ printk(KERN_ALERT "%s/%d: ++++ nmi=%u irq=%u hwirq=%lu\n", __FUNCTION__, __LINE__, nmi, d->irq, d->hwirq);
+
+ ilr = intc_readl((INTC_ILR0 + 0x4 * d->hwirq));
+ if ( nmi )
+ ilr |= 0x00000001;
+ else
+ ilr &= ~0x00000001;
+ intc_writel(INTC_ILR0 + 0x4 * d->hwirq, ilr);
+
+ return nmi;
+}
Once i modified INTCPS_ILR0-127 bit 0 to 1, system ends up in hanging after few seconds (attaching complete logs)
Could you please help us to support on configuring PMU irq as FIQ,
The reason for we are looking for this feature is to get the back trace from the hard locked up CPU by using FIQ.
Also please let us know is this can be achieved on J5Eco and What else we need to look in to for enabling this feature.
PL: B273,D0(8),19233A[2019-06-05 08:13:33],J5eco,PG2.1,SLC=256,RAM=128,RST=9
CLK: 600/700/333 MHz (ARM/DSP/DDR)
IOC: 050001(01,00)
BOOT:!I2C@01,!SPIN[10]@1,MCOREAPP1,CAFDATA0?877A0000,CAFDATA1?877C0000,ADJUSTDATA?877E0000,EARLYWAVBLOB?87700000,EQU?86EE0000,ASDIN?86F80000,ASDOUT?86FA0000,ESOUNDIN?86FC0000,VSG?86F60000,MPERS?87fe0000,!SPIN[10]@0,NORMALWAVBLOB?86BE0000,VSGWAVBLOB?87D00000,DSP1,APPLINUX
Use DSP MMU configuration found in flash @ 0x820f395c
boot Linux (DTB@83000000)
ipl done (233 ms)
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 4.4.14 (vdevalam@awsmblx401bs008.ad.harman.com) (gcc version 5.2.0 (GCC) ) #Rel_Elina_J6_IUKRAM_19394A PREEMPT Thu Oct 17 09:15:49 UTC 2019
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=50c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine model: RAM BMW MID DAB SAMPLE
[ 0.000000] bootconsole [earlycon0] enabled
[ 0.000000] __setup_irq/1130: ++++ EPERM irq = 16
[ 0.000000] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.000000] omap_set_nmi_routing/193: ++++ nmi=0 irq=16 hwirq=67
[ 0.061325] kernel_init_freeable/1020: ++++
[ 0.065954] kernel_init_freeable/1024: ++++
[ 0.070462] kernel_init_freeable/1026: ++++
[ 0.074963] kernel_init_freeable/1029: ++++
[ 0.139057] __setup_irq/1130: ++++ EPERM irq = 22
[ 0.144740] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.149679] omap_set_nmi_routing/193: ++++ nmi=0 irq=22 hwirq=100
[ 0.163486] __setup_irq/1130: ++++ EPERM irq = 34
[ 0.168677] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.173614] omap_set_nmi_routing/193: ++++ nmi=0 irq=34 hwirq=96
[ 0.181568] __setup_irq/1130: ++++ EPERM irq = 68
[ 0.186859] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.191796] omap_set_nmi_routing/193: ++++ nmi=0 irq=68 hwirq=98
[ 0.199586] __setup_irq/1130: ++++ EPERM irq = 102
[ 0.204918] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.209857] omap_set_nmi_routing/193: ++++ nmi=0 irq=102 hwirq=32
[ 0.217629] __setup_irq/1130: ++++ EPERM irq = 136
[ 0.222914] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.227851] omap_set_nmi_routing/193: ++++ nmi=0 irq=136 hwirq=62
[ 0.265864] __setup_irq/1130: ++++ EPERM irq = 19
[ 0.271859] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.276805] omap_set_nmi_routing/193: ++++ nmi=0 irq=19 hwirq=12
[ 0.283586] __setup_irq/1130: ++++ EPERM irq = 21
[ 0.288657] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.293591] omap_set_nmi_routing/193: ++++ nmi=0 irq=21 hwirq=14
[ 0.320087] __setup_irq/1130: ++++ EPERM irq = 27
[ 0.326800] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.331746] omap_set_nmi_routing/193: ++++ nmi=0 irq=27 hwirq=71
[ 0.339100] __setup_irq/1130: ++++ EPERM irq = 28
[ 0.344382] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.349319] omap_set_nmi_routing/193: ++++ nmi=0 irq=28 hwirq=30
[ 0.356369] __setup_irq/1130: ++++ EPERM irq = 29
[ 0.361619] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.366556] omap_set_nmi_routing/193: ++++ nmi=0 irq=29 hwirq=31
[ 0.511627] __setup_irq/1130: ++++ EPERM irq = 25
[ 0.517432] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.522174] omap_set_nmi_routing/193: ++++ nmi=0 irq=25 hwirq=4
[ 0.543411] __setup_irq/1130: ++++ EPERM irq = 173
[ 0.548605] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.553344] omap_set_nmi_routing/193: ++++ nmi=0 irq=173 hwirq=41
[ 0.560243] __setup_irq/1130: ++++ EPERM irq = 174
[ 0.565189] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.569921] omap_set_nmi_routing/193: ++++ nmi=0 irq=174 hwirq=42
[ 0.591288] __setup_irq/1130: ++++ EPERM irq = 177
[ 0.596266] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.601001] omap_set_nmi_routing/193: ++++ nmi=0 irq=177 hwirq=77
[ 0.613434] __setup_irq/1130: ++++ EPERM irq = 177
[ 0.660626] __setup_irq/1130: ++++ EPERM irq = 176
[ 0.665589] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.670324] omap_set_nmi_routing/193: ++++ nmi=0 irq=176 hwirq=122
[ 0.810117] kernel_init_freeable/1032: ++++
[ 0.814897] kernel_init_freeable/1034: ++++
[ 0.819306] armpmu_event_init/459: ++++
[ 0.823540] __setup_irq/1130: ++++ EPERM irq = 30
[ 0.828339] cpu_pmu_request_irq/638: ++++
[ 0.832499] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.837231] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ 0.843580] cpu_pmu_request_irq/649: ++++ irq=18
[ 0.848279] __setup_irq/1130: ++++ EPERM irq = 18
[ 0.853042] __irq_set_nmi_routing/646: ++++ EPERM
[ 0.857771] omap_set_nmi_routing/193: ++++ nmi=1 irq=18 hwirq=3
[ 0.876190] cpu_pmu_request_irq/686: ++++ IRQF_NMI irq=18 err=0
[ 0.888137] cpu_pmu_request_irq/692: ++++ IRQF_NMI irq=18 err=0
[ 0.900105] armpmu_reserve_hardware/363: ++++ err=0
[ 1.240500] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.245357] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.250091] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ 1.267718] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.272621] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.277356] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
Welcome to HARMANs Embedded Linux for Automotive 2.0.2015143A!
[ 1.497755] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.502631] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.507366] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Created slice -.slice.
[ 1.523122] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.528005] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.532739] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Listening on Syslog Socket.
[ 1.546433] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.551332] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.556066] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Created slice System Slice.
[ 1.578267] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.588274] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.593029] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
Starting Apply Kernel Variables...
[ 1.654822] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.681077] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.685843] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
Mounting Mount /var/volatile...
[ 1.741860] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.756303] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.761068] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
Mounting Mount /tmp...
[ 1.810811] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.824546] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.829309] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
Mounting Mounting /var/systemsettings with ubi0:APERS ubi image...
[ 1.891007] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.908257] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.913014] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
Starting Load Kernel Modules...
[ 1.964847] __setup_irq/1130: ++++ EPERM irq = 30
[ 1.976408] __irq_set_nmi_routing/646: ++++ EPERM
[ 1.981165] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
Starting Networking on eth0 to MGU...
[ 2.019048] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.032333] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.037095] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Created slice tracing slice.
[ 2.065150] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.078965] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.083729] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Reached target Slices.
[ 2.109413] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.120258] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.125011] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Listening on udev Control Socket.
[ 2.153331] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.164226] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.168976] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Listening on Journal Socket (/dev/log).
[ 2.205402] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.218617] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.223378] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
Starting Journal Service...
[ 2.266750] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.280144] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.284889] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Mounted Mounting /var/systemsettings with ubi0:APERS ubi image.
[ 2.313033] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.324231] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.328985] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Mounted Mount /var/volatile.
[ 2.357112] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.368317] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.373074] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Mounted Mount /tmp.
[ 2.408620] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.416172] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.420911] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Started Apply Kernel Variables.
[ 2.888029] __setup_irq/1130: ++++ EPERM irq = 30
[ 2.900203] __irq_set_nmi_routing/646: ++++ EPERM
[ 2.904957] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Started Journal Service.
[ 3.096668] __setup_irq/1130: ++++ EPERM irq = 30
[ 3.108279] __irq_set_nmi_routing/646: ++++ EPERM
[ 3.113041] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
Starting Create Volatile Files and Directories...
[ 3.529802] __setup_irq/1130: ++++ EPERM irq = 30
[ 3.535900] __setup_irq/1130: ++++ EPERM irq = 108
[ 3.541102] __irq_set_nmi_routing/646: ++++ EPERM
[ 3.545842] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[FAILED] Failed to start Create Volatile Files and Dir[ 3.563697] __irq_set_nmi_routing/646: ++++ EPERM
ectories.
[ 3.580733] __setup_irq/1130: ++++ EPERM irq = 30
[ 3.592388] __irq_set_nmi_routing/646: ++++ EPERM
[ 3.597153] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
See 'systemctl status systemd-tmpfiles-setup.service' for details.
[ 3.677565] __setup_irq/1130: ++++ EPERM irq = 30
[ 3.688331] __irq_set_nmi_routing/646: ++++ EPERM
[ 3.693097] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Reached target sysinit.
[ 3.725508] __setup_irq/1130: ++++ EPERM irq = 30
[ 3.736311] __irq_set_nmi_routing/646: ++++ EPERM
[ 3.741077] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Listening on RPCbind Server Activation Socket.
[ 3.789242] __setup_irq/1130: ++++ EPERM irq = 30
[ 3.804429] __irq_set_nmi_routing/646: ++++ EPERM
[ 3.809197] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Started DLT Daemon for logging and tracing.
[ 3.851035] __setup_irq/1130: ++++ EPERM irq = 30
[ 3.867522] __irq_set_nmi_routing/646: ++++ EPERM
[ 3.872291] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Started thox.service.
[ 3.927929] __setup_irq/1130: ++++ EPERM irq = 30
[ 3.937143] __irq_set_nmi_routing/646: ++++ EPERM
[ 3.941906] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Started GENIVI DLT system. Applicat...em information, logs and files..
[ 3.981796] __setup_irq/1130: ++++ EPERM irq = 30
[ 3.992229] __irq_set_nmi_routing/646: ++++ EPERM
[ 3.996988] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Listening on D-Bus System Message Bus Socket.
[ 4.038769] __setup_irq/1130: ++++ EPERM irq = 30
[ 4.051810] __irq_set_nmi_routing/646: ++++ EPERM
[ 4.056574] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Listening on dropbear.socket.
[ 4.085032] __setup_irq/1130: ++++ EPERM irq = 30
[ 4.089979] __irq_set_nmi_routing/646: ++++ EPERM
[ 4.094716] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Reached target Sockets target.
[ 4.111331] __setup_irq/1130: ++++ EPERM irq = 30
[ 4.120356] __irq_set_nmi_routing/646: ++++ EPERM
[ 4.125120] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Started Load Kernel Modules.
[ 4.159038] __setup_irq/1130: ++++ EPERM irq = 30
[ 4.173898] __irq_set_nmi_routing/646: ++++ EPERM
[ 4.178664] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Started Networking on eth0 to MGU.
[ 4.367387] __setup_irq/1130: ++++ EPERM irq = 30
[ 4.384377] __irq_set_nmi_routing/646: ++++ EPERM
[ 4.389146] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Started start dhcp client udhcpc.
[ 4.421397] __setup_irq/1130: ++++ EPERM irq = 30
[ 4.432310] __irq_set_nmi_routing/646: ++++ EPERM
[ 4.437070] omap_set_nmi_routing/193: ++++ nmi=0 irq=30 hwirq=72
[ OK ] Reached target Basic target.
[ 4.481476] __setup_irq/1130: ++++ EPERM irq = 30
Thanks,
Viswa