[PATCH 0/3] hwspinlock: sun6i: Allwinner D1 and T113 support
Indrek Kruusa
indrek.kruusa at gmail.com
Thu Oct 22 12:01:15 PDT 2026
Hi,
I managed to run this patch series on a Sipeed Lichee RV Dock (Allwinner D1),
in this setup:
- FreeRTOS on the HiFi4 DSP, running a task that contends for the lock
- a test kernel module touching the same shared memory, with and without
taking the lock
The series is applied on top of v7.3-rc7.
What I ran:
- probe: 3005000.hwlock binds and the driver reports 32 locks
- mutual exclusion: lock 0, taken alternately by the C906 and the HiFi4.
Each side added 1 to a shared counter under the lock, 1,000,000 times:
counter=2000000 expected=2000000 -> EXACT
tripwire linux=0 dsp=0 -> no overlap
A tripwire field is set while inside the critical section and read by the
other side, so overlap is caught independently of the counter.
- negative control, identical loop with the lock not taken:
counter=1885761 expected=2000000 -> LOST UPDATES (5.7% lost)
tripwire linux=100302 dsp=674915 -> OVERLAP DETECTED
The loss rate in the negative control varies between runs (5-19% observed);
the log linked below is one sample.
Tested-by: Indrek Kruusa <indrek.kruusa at gmail.com>
I put this test setup together with AI assistance. Sources, build
instructions, ready-to-use images (DSP firmware included) for the RV Dock
and for the Nezha (untested), and the captured console logs are here:
https://github.com/ikruusa/d1-hwspinlock-test
Greetings,
Indrek
More information about the linux-riscv
mailing list