Re: [PATCH linux-evl v2 0/2] Add RISC-V support to EVL

Tobias Schaffner <[email protected]>
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
Hi all!

Some additional notes on this patch set:

This has been tested together with the underlying v5 version of the 
RISC-V Dovetail patches in QEMU, as well as on the StarFive VisionFive 2 
board.

These tests were done in my home lab, but I plan to integrate one of my 
boards into the Xenomai-images lab next week.

All tests of the evl testsuite pass besides the ptrace-sync test. See 
the mail "evl: ptrace continue without hardware singlestepping support" 
from 19th of February on this open issue.

Please find the results of the latency tests attached.

* All tests were done with two isolated cores.
* The tests show one latmus thread per core (isolated and system cores), 
started with "latmus -m --user -p 200 -P 99 -c 0".
* In the stressed version, stressing was done with "stress-ng --procfs 1 
--null 1 --getdent 1 --sock 1 --cpu 1 --vm 1 --vm-bytes 64M --timer 1 
--hrtimers 1 --switch 1 --fp 1".

While testing different background loads, I noticed that stressing 
virtual memory and the MMC at the same time leads to high latency 
spikes. The memlat-correlation.png shows a correlation between 
concurrent memory access latency and latmus latency measurements while 
stressing the system in this way. The results indicate that the 
latencies occur when the measurement thread is evicted from the cache 
and competes with the MMC for the DDR controller. While I can only 
observe this with targeted stressing, this hardware limitation should be 
kept in mind.

Thanks to Philippe, Jan and Florian for answering all my questions and 
the guidance at this point. :)

Best,
Tobias

On 3/20/26 22:41, Tobias Schaffner wrote:
> Hi all,
> 
> this series introduces an initial EVL port for RISC-V.
> 
> While some tests are still failing, I’d like to share this early
> version with the community to gather feedback, reviews, and hopefully
> some assistance in refining the port.
> 
> The patches have been tested in combination with the Dovetail RISC-V
> port on top of v7.0-evl-rebase.
> 
> Looking forward to your feedback and suggestions.
> 
> Changes since v1:
>   * rebase to v7.0-evl-rebase
>   * add missing guards for building without evl
> 
> Best,
> Tobias
> 
> Tobias Schaffner (1):
>    riscv: Add EVL core
> 
> shannmu (1):
>    riscv: Add FPU register test support
> 
>   arch/riscv/Kconfig                        |   2 +
>   arch/riscv/include/asm/evl/calibration.h  |  12 ++
>   arch/riscv/include/asm/evl/fptest.h       |  31 +++++
>   arch/riscv/include/asm/evl/syscall.h      |  25 ++++
>   arch/riscv/include/asm/evl/thread.h       |  12 ++
>   arch/riscv/include/dovetail/irq.h         |  11 ++
>   arch/riscv/include/dovetail/mm_info.h     |  11 ++
>   arch/riscv/include/dovetail/net.h         |  11 ++
>   arch/riscv/include/dovetail/netdevice.h   |  11 ++
>   arch/riscv/include/dovetail/poll.h        |  11 ++
>   arch/riscv/include/dovetail/skbuff.h      |  11 ++
>   arch/riscv/include/dovetail/thread_info.h |  11 ++
>   arch/riscv/include/uapi/asm/evl/fptest.h  | 138 ++++++++++++++++++++++
>   13 files changed, 297 insertions(+)
>   create mode 100644 arch/riscv/include/asm/evl/calibration.h
>   create mode 100644 arch/riscv/include/asm/evl/fptest.h
>   create mode 100644 arch/riscv/include/asm/evl/syscall.h
>   create mode 100644 arch/riscv/include/asm/evl/thread.h
>   create mode 100644 arch/riscv/include/dovetail/irq.h
>   create mode 100644 arch/riscv/include/dovetail/mm_info.h
>   create mode 100644 arch/riscv/include/dovetail/net.h
>   create mode 100644 arch/riscv/include/dovetail/netdevice.h
>   create mode 100644 arch/riscv/include/dovetail/poll.h
>   create mode 100644 arch/riscv/include/dovetail/skbuff.h
>   create mode 100644 arch/riscv/include/dovetail/thread_info.h
>   create mode 100644 arch/riscv/include/uapi/asm/evl/fptest.h
>
starfive-visionfive2-idle.hist (text/plain, 2.3 KB)
# Histogram
000000 000162	000024	000000	000000
000001 000028	000018	000000	000550
000002 605831	11531769	16939742	17560151
000003 16558139	5503512	1055107	434602
000004 704492	013283	001437	000988
000005 068513	006523	003336	003646
000006 021035	011538	000364	000053
000007 021811	015118	000011	000007
000008 008499	012080	000004	000003
000009 002550	004405	000001	000002
000010 000508	000466	000000	000001
000011 000181	000137	000001	000000
000012 000107	000212	000000	000000
000013 000082	109854	000000	000000
000014 000079	584582	000000	000000
000015 000070	174735	000000	000000
000016 000079	013743	000000	000000
000017 000071	012129	000000	000000
000018 000056	001289	000000	000000
000019 000040	000374	000000	000000
000020 000045	000280	000000	000000
000021 000033	000370	000000	000000
000022 000142	001108	000000	000000
000023 000389	000555	000000	000000
000024 000205	000373	000000	000000
000025 000365	000236	000000	000000
000026 000669	000139	000000	000000
000027 000217	000098	000000	000000
000028 000268	000100	000000	000000
000029 000328	000114	000000	000000
000030 000185	000112	000000	000000
000031 000299	000100	000000	000000
000032 000577	000056	000000	000000
000033 000168	000053	000000	000000
000034 000038	000024	000000	000000
000035 000022	000020	000000	000000
000036 000026	000018	000000	000000
000037 000046	000013	000000	000000
000038 000876	000014	000000	000000
000039 002452	000020	000000	000000
000040 000075	000020	000000	000000
000041 000040	000033	000000	000000
000042 000056	000171	000000	000000
000043 000024	000137	000000	000000
000044 000013	000010	000001	000000
000045 000012	000018	000000	000000
000046 000018	000012	000000	000000
000047 000004	000002	000000	000000
000048 000008	000002	000000	000000
000049 000018	000003	000000	000000
000050 000019	000003	000000	000000
000051 000007	000003	000000	000000
000052 000004	000001	000000	000000
000053 000004	000000	000000	000000
000054 000007	000000	000000	000000
000055 000004	000000	000000	000000
000056 000004	000000	000000	000001
000057 000001	000000	000000	000000
000058 000002	000000	000000	000000
000063 000001	000000	000000	000000
# Min Latencies: 00000 00000 00002 00002
# Avg Latencies: 00003 00003 00002 00002
# Max Latencies: 00064 00052 00045 00057
# Histogram Overflows: 00000 00000 00000 00000
# Histogram Overflow at cycle number:
# Thread 0:
# Thread 1:
# Thread 2:
# Thread 3:
starfive-visionfive2-stressed.hist (text/plain, 4.7 KB)
# Histogram
000000 000298	000271	000000	000000
000001 1365649	1147852	000000	128723
000002 3255238	3149408	170981427	172907314
000003 5523415	5201440	8475195	6623584
000004 4268176	4738927	387897	227768
000005 5958965	5686618	098008	051302
000006 4345929	4507408	031171	044555
000007 4732138	4605322	011559	008048
000008 4033190	4059773	006060	003664
000009 3246945	3187209	003132	001849
000010 3113761	3014555	001847	001151
000011 3094542	3002110	001230	000745
000012 3137909	3031995	000845	000470
000013 3173485	3048881	000586	000326
000014 3154537	3061814	000410	000190
000015 3155876	3090590	000268	000144
000016 3172007	3094844	000167	000065
000017 3213439	3104380	000093	000035
000018 3224031	3110763	000050	000023
000019 3207087	3118207	000027	000014
000020 3180461	3129550	000016	000004
000021 3134351	3146040	000006	000002
000022 3109412	3129901	000002	000006
000023 3172150	3086721	000000	000002
000024 3212994	3127421	000002	000001
000025 3171637	3162140	000000	000000
000026 3128601	3160173	000000	000001
000027 3108850	3136732	000000	000001
000028 3091616	3091763	000000	000001
000029 3098752	3023359	000000	000001
000030 3128752	3067158	000002	000002
000031 3160528	3115533	000000	000000
000032 3172687	3108988	000000	000003
000033 3052074	3020177	000000	000000
000034 3038342	2979157	000000	000000
000035 3061835	2956068	000000	000000
000036 3059074	2973890	000000	000001
000037 3061157	3004101	000000	000000
000038 2915501	3044316	000000	000001
000039 2863069	2900129	000000	000000
000040 2895844	2784597	000000	000001
000041 2922463	2855541	000000	000001
000042 2978640	2888323	000000	000002
000043 3011863	2948385	000001	000000
000044 2989303	2993999	000000	000000
000045 2984829	2965400	000001	000000
000046 2945167	2999269	000000	000001
000047 2829527	2968550	000000	000000
000048 2656067	2864730	000000	000000
000049 2574906	2763590	000000	000000
000050 2527369	2691625	000000	000000
000051 2529703	2662687	000001	000000
000052 2502752	2656700	000000	000004
000053 2470108	2656853	000000	000000
000054 2502687	2633408	000001	000000
000055 2514517	2635547	000000	000000
000056 2342000	2576305	000000	000000
000057 891655	1537547	000000	000000
000058 266176	321357	000000	000000
000059 244776	265988	000000	000000
000060 240738	252868	000000	000000
000061 237474	244935	000000	000000
000062 223219	204594	000000	000000
000063 210625	185565	000000	000000
000064 203323	178735	000000	000000
000065 194443	169109	000000	000000
000066 178916	154952	000000	000000
000067 157581	137808	000000	000000
000068 098260	104993	000000	000000
000069 066589	072025	000000	000000
000070 045544	045868	000000	000000
000071 038470	034039	000000	000000
000072 034633	030592	000000	000000
000073 033244	028266	000000	000000
000074 032854	027732	000000	000000
000075 027149	026779	000000	000000
000076 009720	015136	000000	000000
000077 007062	006976	000000	000000
000078 006689	006849	000000	000000
000079 006382	006874	000000	000000
000080 006370	006622	000000	000000
000081 006360	006661	000000	000000
000082 006458	006842	000000	000000
000083 006277	006835	000000	000000
000084 006366	006580	000000	000000
000085 006151	006421	000000	000000
000086 005522	005853	000000	000000
000087 004668	004763	000000	000000
000088 003677	003881	000000	000000
000089 002775	003052	000000	000000
000090 002200	002344	000000	000000
000091 001805	001972	000000	000000
000092 001534	001716	000000	000000
000093 001196	001451	000000	000000
000094 001110	001198	000000	000000
000095 000960	001195	000000	000000
000096 000842	000985	000000	000000
000097 000792	000867	000000	000000
000098 000645	000722	000000	000000
000099 000562	000524	000000	000000
000100 000458	000455	000000	000000
000101 000442	000374	000000	000000
000102 000385	000282	000000	000000
000103 000289	000248	000000	000000
000104 000185	000157	000000	000000
000105 000145	000059	000000	000000
000106 000124	000049	000000	000000
000107 000096	000030	000000	000000
000108 000133	000039	000000	000000
000109 000112	000019	000000	000000
000110 000109	000021	000000	000000
000111 000092	000013	000000	000000
000112 000102	000014	000000	000000
000113 000064	000011	000000	000000
000114 000072	000005	000000	000000
000115 000053	000006	000000	000000
000116 000040	000005	000000	000000
000117 000035	000005	000000	000000
000118 000032	000002	000000	000000
000119 000021	000003	000000	000000
000120 000014	000005	000000	000000
000121 000008	000002	000000	000000
000122 000008	000001	000000	000000
000123 000001	000000	000000	000000
000125 000001	000000	000000	000000
# Min Latencies: 00000 00000 00002 00002
# Avg Latencies: 00027 00028 00002 00002
# Max Latencies: 00125 00122 00055 00053
# Histogram Overflows: 00000 00000 00000 00000
# Histogram Overflow at cycle number:
# Thread 0:
# Thread 1:
# Thread 2:
# Thread 3:
starfive-visionfive2-idle.png (image/png, 210.7 KB) - not displayed
starfive-visionfive2-stressed.png (image/png, 196.1 KB) - not displayed
memlat-correlation.png (image/png, 246.7 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.