BPI-R64 hardpps soak — patches 1-4 only (old pps_get_ts), tickless, 1Hz pulses

1 Hz pulses5 s pulses
tickless (NO_HZ_IDLE)tickless, 1Hztickless, 5s
tickful (nohz=off)tickful, 1Hztickful, 5s
back-dated (entry.S timestamp)tickful, 1Hztickless, 5s
spin-poll (mlichvar mode)tickful, 1Hz—
spin-poll (bracketed counter)tickless, 1Hz—

Cortex-A53 (BPI-R64), 12.5 MHz arch counter, u-blox GNSS timepulse into pps-gpio, in-kernel hardpps() disciplining CLOCK_REALTIME with STA_PPSTIME|STA_PPSFREQ|STA_PLL. Kernel: ONLY patches 1-4 of the posted series (rodolfo-14-test branch) on 7.3-rc1 — the old pps_get_ts() path, no snapshot ntp_error correction — plus the NTP_PPS Kconfig change to allow tickless — plus silent bench instrumentation (per-pulse ring captured in the PPS hardirq, drained to disk once a minute in the pulse's shadow). No distro userspace: a single static PID 1 sets the date from NMEA, binds hardpps, and sleeps. All periodic wakeup sources were disabled (vmstat, runtime-PM autosuspend, fair dl_server, ethernet not probed). Tickless cells boot NO_HZ_IDLE; tickful cells add nohz=off on the same kernel binary.

31481 pulses over 8.7 h. Steady state (|ntp_error| at pulse, after 30 min): median 0 ns, p95 0 ns, p99 0 ns, max 0 ns. Corrected pulse phase: median 0.3 µs, p95 2.2 µs.

Per-pulse snapshot ntp_error

Pulse arrival phase (corrected ts_real)

Discipline state

Disciplined frequency vs room temperature

Room air temperature (sensor near the board, not on it) against the PLL-disciplined frequency. Context only: the crystal's own temperature is not measured.

Methodology

This run is the test asked for on the list: hardpps on a tickless kernel driven by a real PPS source, with its real jitter and IRQ latency, and the CPU genuinely idle between pulses.

Data