05-05-2018 02:20 PM
Sometimes my Linux Zynq 7z035 system stops to increase jiffies. It shows this behaviour sporadically at reboot when Linux is trying to calibrate delay loop and calculating BogoMIPS. Obvioulsy the whole system will hang.
Does anyone know which timer is used for increasing jiffies? I thought it was scutimer/private timer but it is not.
Can I change which timer is used for system tick?
05-05-2018 03:01 PM - edited 05-06-2018 12:13 AM
I think the source timer for Linux system tick is GLOBAL ARM TIMER. At least when Linux is up and running I'm sure that GLOBAL ARM TIMER is used because if I try to stop it, then jiffies stop counting.
Anyway, I'm not sure if during "Calibration of loop delay" the system is using GLOBAL ARM TIMER. What else could it be using?
As additional info my Linux (using only CPU0) is recovering from an AWDT (APU WDT) when the Calibration hangs, I never observed it while doing a power on startup.
05-06-2018 01:13 PM
Now it is clear:
My Zynq Linux uses SCU TIMER to perform calibration of loop delay then switches to ARM GLOBAL TIMER.
My system gets stuck (sporadically) during Calibration of loop delay due to the fact that GIC is not working. This happens after triggering the SCU WDT (aka AWDT), in FSBL I tried to reset the GIC but I don't know which is the best sequence.