3000
  *   ˆl–Ü4ý( ©³( 	Å€fàB¦-ÿ¿ƒw_†I|¥�+ÃÂ I    /* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2022 HiSilicon Limited.
 */

#ifndef _KERNEL_DMA_BENCHMARK_H
#define _KERNEL_DMA_BENCHMARK_H

#define DMA_MAP_BENCHMARK       _IOWR('d', 1, struct map_benchmark)
#define DMA_MAP_MAX_THREADS     1024
#define DMA_MAP_MAX_SECONDS     300
#define DMA_MAP_MAX_TRANS_DELAY (10 * NSEC_PER_MSEC)

#define DMA_MAP_BIDIRECTIONAL   0
#define DMA_MAP_TO_DEVICE       1
#define DMA_MAP_FROM_DEVICE     2

struct map_benchmark {
	__u64 avg_map_100ns; /* average map latency in 100ns */
	__u64 map_stddev; /* standard deviation of map latency */
	__u64 avg_unmap_100ns; /* as above */
	__u64 unmap_stddev;
	__u32 threads; /* how many threads will do map/unmap in parallel */
	__u32 seconds; /* how long the test will last */
	__s32 node; /* which numa node this benchmark will run on */
	__u32 dma_bits; /* DMA addressing capability */
	__u32 dma_dir; /* DMA data direction */
	__u32 dma_trans_ns; /* time for DMA transmission in ns */
	__u32 granule;  /* how many PAGE_SIZE will do map/unmap once a time */
};
#endif /* _KERNEL_DMA_BENCHMARK_H */
  0   ˆl–ßi~”êh¥8 Eq—î41hßÁƒqçž_ŒuÐb&=Ly[Ï¿ÅÄ è    ý7zXZ  i"Þ6 !   t/å£àÀ'¬] è€À(–RÏæ‰ô­÷6#[=Æ¹´�‡¢öVtQ-ÂÙÆ}ó¤œa¤ðïŒ":òÿL{Š´©u$Ç›”¶bžŽÐ®r}í¥‰0,ÓkjÃòW¥“]kKª—t<?žN�ÿZ•h~USX½Õö«}î0wÌ¶=†ÈüÝ«�ï8+”Åkôÿ!‰ÊD×x+€œÏœ‚²Â¶?±›ƒÚLŠè‰�ábÃ|á™ðÑä¯4x3¼�÷ÌOØå¶äTÞÞ%“F5‘CI1¤x]¹¬ÿ™Y:;³÷ºˆ�ó ¦¦‡Œúbx{
@ädRœšØ]/Lî·1	7Ñm5ˆØÐ‡p±Á:ã™l)wŽ@­ §ÑÉ~ó—¦!Rn¿<‘RTœÕÈ1ëì‹Ã‡†L]›«Y"¤í:sœ[�µGŒLem©h½>M®?ƒÁÔû®O¡šŠ/Ü%5ùùÃ€¸>ƒ}îZ¨æ«šv”�—ªúâòùs�k(\pJãC»ÊGxÀòàf[Û'Ö@`!ùìîFÚÒ*¤§Š8vXÄË&‚T6
[‘e]NÕa ¯s À~•™>±@ÑC‚œû”ühÍ%cøÒûÿx¾þ„±Ý Eë½ýOˆCb¢}ô÷š5`ÊÑôÐ€rŽüªD¢ä­´&)/`üý¹‘„ó1ðý=œˆà÷¤?3mhF·ïû"Úw(Ò’;a R°‹	@®¶­”õ"îô>´…¬9bÚìäàð”‚Rš¹)c‘Hÿê^tpzžÈ½_‘ÿEñ^2!Õ´mï!=5¯Ð°ã¬;€%œÔ&ÁuÕÚ�ÅÞÕÒ�º
Å5êˆ\òãÙj†d�7ç;vîÂ=óÓÓ&ÓËø7EÓlË7|F³ÀîX•V?Ü�dC„êw°2L€æûula4—S@Eé¨çÐh¬x0ªä�	óZ*ãC„§œ_ q#¦§§†° ¾ð¥ÿhW]}PèŸÈç×�0­ò"UìÝàmgI�‰ªjgSª“õÿ3ð!IWfÛ:VÛço£aü™ ”x“™¯<Åo´ ƒÔ™8¾VŽ}çŠu•ÚÕ÷ÖôÕˆ3c.w¢×J¯.äLµÓ3¼D¨IbVõãâfö‚
c�=¸¤§"ŒOf�•Ôoý»?ø¾ÞÐ�˜F_x•¬žbú*ºûV´üÈ{øïõêz™¤œoUä<UPR#¦Ê‰ˆvn'ç¤°þßõ[â€¿iæÉÖ0orëa¸À?_eRðŸõhŒPþ�‚1¬Ûð)æ”x¤÷«ÀÕŠ¸­REK¼‡(g¢–lì*'Wšh*ú.ÒQý<¹ÊEä*0`Ø}¯Áå‰}® ÷ñ•À5œ§�ã'¶ÌSzÎÙ}(gC/Ö=S�’ä»Lœ:c*JìJU]§)–´uÄ“„�ÜPÙ»³ø¿,´Ïzi™Ú ³S«á™øDÉHÍŸ,º?ùy¡ª
”½Õ¾Ù¦®°¶£‰âÆo®ßÖº=4gâ¿›Î[ß¨CR²T_ù(´KëÜ�µ«óDìß)V³˜ïKÍ8~… 1O’ UÐvŽ×ªÊŠ|ë.’((´U…@R“‚™íÔ©�¨ß)yú4k�(õhåÔ0÷SHˆÍbd>?•$^dÔÍ*ª_Rê/ã¬õ�ƒšQíYdTüX·tÀ¶Í´4¤çeBšþˆÔ³£j/O^Ã1ÑOP,:É¾;äœƒÝ�ÑÂ-hÙteUæ!,ãìG¿©àÒ2ôÑVd|Ã8Ýg˜L³ò–­orðÍÐÚÒ6¶eÚ°¿¶A´Z`ìüM ¿tO¦ÿ÷W·`yŸLém÷œè›cƒRÔs.¤/ŒÐØv€fu�¬%yâbµ‡ùLŽPUÂ¹sªSÄòTèJß5Y8�
|Á©�ýÌŸ`Hº¾0"QÜGF CãÌT„�ÓÕÖ
HNZ{WŠË#;KÆýIÀKÏ *	Ã¡ãþJ®¦úLµšÒNóÒyÜ
«Rk{&ëya!þ“–¼Ë¸”Œ_Ý_<¾Þ¤†O¶ßp…–
ìûš{ˆe\§}
ô®{?W’³‡ÙÓJŒÎ_7Õ´©0›:÷7tA|„y�‡Y€ÔÖÛUíé·¡dŸ¿@«~¹äøi±PÊU[žÇwãÐðvfÏ�ëÓ}<	s”^œF‡µÇ} žX+=CþØO×­Ë«ž_‰ðK=µ:Ï-§T•‚óÖÈìŠê‚0Y…˜òÇ‘¤ˆ�ò”g’[²b#oƒ…ËÑ÷ŽGZ¬6°,5�n§ÞÚœ©|¨lµ¢/*d²éÊ&�Q( ¼	¿)‚	G5‰  ytf"dS�÷ñ)½¦ EYy5]yžéÚª‹`ú0È¡�CY¤#áÊ¡­¯f£’_‡š‰J2xF‰y>ŽH‡‚·�ÙfÏÍÉÃì2CÕ¼Îw}ã™v†É~ÓÆ3~$ç•T×ªüþ ÂÎW*ÍGJïÖ*hÕ‚àýJ‘AÜåØ¡æz�úmè3$â¯fi2�¡éc�‘�íü­¿Jø5§ÙÞ0÷Õˆë”‘áBz�ã~æE—otÐ]IÌ=¹ª5àL¾G¨­—½ �‘HÎ™XcÇB;Ö7d¶K.wcòƒVÅÛæ´‡Ýö‚£šæši.­qŸ×)ú‰§ ÑäqDÌ4“°FþMù]Ãbeô€´ßi6±-—±BBÊ^å×ê?PÙNb?û%Ô~d¹ÿÝW>•×E!˜-h¬[Ôq÷LÐ„h€’-û¥ï)�‹‡|"sÇ±þ%Þ‰µé\Ë0ZÒ;#l!°K]3UÎ\ØcF·@$%OÜaiàŽÖ„EÌ²Æ3�ñT'Š&àháÈPî½Š±Ä¤B§EG«Ù6sÉO¥.ÌZÌÚsš~K6ej
$°R·ã-)Ÿ)YüQòäSÜG¼}qáÍ2ÖæcE¶!¬i§%KÛ~Ó§W�%Pg+Ìã�îéAœQòEÄ3#¡6®œJòrZ‹˜¨”®mÊ!5ÑÏm–£rˆn$õ<ÌÂhJ»�D»ÐZhš^ë6M3bkˆìE¶.ðépG:�ðñ»±�‡O+ìÚÇÛ›v �0æg+| `.mæä²U
ª¶aKJ4;ë¡	6è§Á3�„Â;àÄk‹ÛM×÷¦­DÇéÉRáb·ŒÄ×_m!h&táa_
>GV®^x±ÿ@Å8ƒvëc‚Ýt§ŒU6Ñ�Ð·'Pÿw*ßš".‡×=Ôk	%yò–õh*Ž­Ë"W MÕk�ž—È¶wTq›?#õX†žÈ+¡pœéÚ-éyàÀ<z÷5¾î!ÕbNò�ÂàMTúøúÆ
ÁÓæ¶ŒLAº¿6ÇúûL~Ÿˆ‡u9�é[bî¿þc`äf•¢‰+¹=ç*íè@æÒ¯·v+Ê
o¿n£èE­vË>3r<`jí}áòª€´4tÎéäbìÊçL©ûaq7Àg†Þ1¢qæøÌQúïò(­°ˆ}¢4A�"ì‡“¦‰M „Ìðy—‰~Ë`g»;¨>$$€Ú[ß4nöR8óq8&ìú)5ý¥6ÌØrÛ&°$]…ÉŠøäìQ‹c#â‚ŠIû÷¾²�˜Å,SDÈRæ\–£pÿ*ùV¤Þ�¾í™ýÖ?`LÖãO6P£„_„)~q}k¥=
[g¢0&+Ô¡’¹�)U´ø¼6*ò¬m7ƒCu¤ýAåÏ‹�Ã‡@¾/