3636namespace NEO {
3737
3838namespace IoctlHelper {
39- constexpr const char * getIoctlParamString (int param) {
39+ std::string getIoctlParamString (int param) {
4040 switch (param) {
4141 case I915_PARAM_CHIPSET_ID:
4242 return " I915_PARAM_CHIPSET_ID" ;
@@ -57,10 +57,131 @@ constexpr const char *getIoctlParamString(int param) {
5757 case I915_PARAM_CS_TIMESTAMP_FREQUENCY:
5858 return " I915_PARAM_CS_TIMESTAMP_FREQUENCY" ;
5959 default :
60- break ;
60+ return getIoctlParamStringRemaining (param) ;
6161 }
62+ }
6263
63- return " UNKNOWN" ;
64+ std::string getIoctlString (unsigned long request) {
65+ switch (request) {
66+ case DRM_IOCTL_I915_GEM_EXECBUFFER2:
67+ return " DRM_IOCTL_I915_GEM_EXECBUFFER2" ;
68+ case DRM_IOCTL_I915_GEM_WAIT:
69+ return " DRM_IOCTL_I915_GEM_WAIT" ;
70+ case DRM_IOCTL_GEM_CLOSE:
71+ return " DRM_IOCTL_GEM_CLOSE" ;
72+ case DRM_IOCTL_I915_GEM_USERPTR:
73+ return " DRM_IOCTL_I915_GEM_USERPTR" ;
74+ case DRM_IOCTL_I915_INIT:
75+ return " DRM_IOCTL_I915_INIT" ;
76+ case DRM_IOCTL_I915_FLUSH:
77+ return " DRM_IOCTL_I915_FLUSH" ;
78+ case DRM_IOCTL_I915_FLIP:
79+ return " DRM_IOCTL_I915_FLIP" ;
80+ case DRM_IOCTL_I915_BATCHBUFFER:
81+ return " DRM_IOCTL_I915_BATCHBUFFER" ;
82+ case DRM_IOCTL_I915_IRQ_EMIT:
83+ return " DRM_IOCTL_I915_IRQ_EMIT" ;
84+ case DRM_IOCTL_I915_IRQ_WAIT:
85+ return " DRM_IOCTL_I915_IRQ_WAIT" ;
86+ case DRM_IOCTL_I915_GETPARAM:
87+ return " DRM_IOCTL_I915_GETPARAM" ;
88+ case DRM_IOCTL_I915_SETPARAM:
89+ return " DRM_IOCTL_I915_SETPARAM" ;
90+ case DRM_IOCTL_I915_ALLOC:
91+ return " DRM_IOCTL_I915_ALLOC" ;
92+ case DRM_IOCTL_I915_FREE:
93+ return " DRM_IOCTL_I915_FREE" ;
94+ case DRM_IOCTL_I915_INIT_HEAP:
95+ return " DRM_IOCTL_I915_INIT_HEAP" ;
96+ case DRM_IOCTL_I915_CMDBUFFER:
97+ return " DRM_IOCTL_I915_CMDBUFFER" ;
98+ case DRM_IOCTL_I915_DESTROY_HEAP:
99+ return " DRM_IOCTL_I915_DESTROY_HEAP" ;
100+ case DRM_IOCTL_I915_SET_VBLANK_PIPE:
101+ return " DRM_IOCTL_I915_SET_VBLANK_PIPE" ;
102+ case DRM_IOCTL_I915_GET_VBLANK_PIPE:
103+ return " DRM_IOCTL_I915_GET_VBLANK_PIPE" ;
104+ case DRM_IOCTL_I915_VBLANK_SWAP:
105+ return " DRM_IOCTL_I915_VBLANK_SWAP" ;
106+ case DRM_IOCTL_I915_HWS_ADDR:
107+ return " DRM_IOCTL_I915_HWS_ADDR" ;
108+ case DRM_IOCTL_I915_GEM_INIT:
109+ return " DRM_IOCTL_I915_GEM_INIT" ;
110+ case DRM_IOCTL_I915_GEM_EXECBUFFER:
111+ return " DRM_IOCTL_I915_GEM_EXECBUFFER" ;
112+ case DRM_IOCTL_I915_GEM_EXECBUFFER2_WR:
113+ return " DRM_IOCTL_I915_GEM_EXECBUFFER2_WR" ;
114+ case DRM_IOCTL_I915_GEM_PIN:
115+ return " DRM_IOCTL_I915_GEM_PIN" ;
116+ case DRM_IOCTL_I915_GEM_UNPIN:
117+ return " DRM_IOCTL_I915_GEM_UNPIN" ;
118+ case DRM_IOCTL_I915_GEM_BUSY:
119+ return " DRM_IOCTL_I915_GEM_BUSY" ;
120+ case DRM_IOCTL_I915_GEM_SET_CACHING:
121+ return " DRM_IOCTL_I915_GEM_SET_CACHING" ;
122+ case DRM_IOCTL_I915_GEM_GET_CACHING:
123+ return " DRM_IOCTL_I915_GEM_GET_CACHING" ;
124+ case DRM_IOCTL_I915_GEM_THROTTLE:
125+ return " DRM_IOCTL_I915_GEM_THROTTLE" ;
126+ case DRM_IOCTL_I915_GEM_ENTERVT:
127+ return " DRM_IOCTL_I915_GEM_ENTERVT" ;
128+ case DRM_IOCTL_I915_GEM_LEAVEVT:
129+ return " DRM_IOCTL_I915_GEM_LEAVEVT" ;
130+ case DRM_IOCTL_I915_GEM_CREATE:
131+ return " DRM_IOCTL_I915_GEM_CREATE" ;
132+ case DRM_IOCTL_I915_GEM_PREAD:
133+ return " DRM_IOCTL_I915_GEM_PREAD" ;
134+ case DRM_IOCTL_I915_GEM_PWRITE:
135+ return " DRM_IOCTL_I915_GEM_PWRITE" ;
136+ case DRM_IOCTL_I915_GEM_SET_DOMAIN:
137+ return " DRM_IOCTL_I915_GEM_SET_DOMAIN" ;
138+ case DRM_IOCTL_I915_GEM_SW_FINISH:
139+ return " DRM_IOCTL_I915_GEM_SW_FINISH" ;
140+ case DRM_IOCTL_I915_GEM_SET_TILING:
141+ return " DRM_IOCTL_I915_GEM_SET_TILING" ;
142+ case DRM_IOCTL_I915_GEM_GET_TILING:
143+ return " DRM_IOCTL_I915_GEM_GET_TILING" ;
144+ case DRM_IOCTL_I915_GEM_GET_APERTURE:
145+ return " DRM_IOCTL_I915_GEM_GET_APERTURE" ;
146+ case DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID:
147+ return " DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID" ;
148+ case DRM_IOCTL_I915_GEM_MADVISE:
149+ return " DRM_IOCTL_I915_GEM_MADVISE" ;
150+ case DRM_IOCTL_I915_OVERLAY_PUT_IMAGE:
151+ return " DRM_IOCTL_I915_OVERLAY_PUT_IMAGE" ;
152+ case DRM_IOCTL_I915_OVERLAY_ATTRS:
153+ return " DRM_IOCTL_I915_OVERLAY_ATTRS" ;
154+ case DRM_IOCTL_I915_SET_SPRITE_COLORKEY:
155+ return " DRM_IOCTL_I915_SET_SPRITE_COLORKEY" ;
156+ case DRM_IOCTL_I915_GET_SPRITE_COLORKEY:
157+ return " DRM_IOCTL_I915_GET_SPRITE_COLORKEY" ;
158+ case DRM_IOCTL_I915_GEM_CONTEXT_CREATE:
159+ return " DRM_IOCTL_I915_GEM_CONTEXT_CREATE" ;
160+ case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT:
161+ return " DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT" ;
162+ case DRM_IOCTL_I915_GEM_CONTEXT_DESTROY:
163+ return " DRM_IOCTL_I915_GEM_CONTEXT_DESTROY" ;
164+ case DRM_IOCTL_I915_REG_READ:
165+ return " DRM_IOCTL_I915_REG_READ" ;
166+ case DRM_IOCTL_I915_GET_RESET_STATS:
167+ return " DRM_IOCTL_I915_GET_RESET_STATS" ;
168+ case DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM:
169+ return " DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM" ;
170+ case DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM:
171+ return " DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM" ;
172+ case DRM_IOCTL_I915_PERF_OPEN:
173+ return " DRM_IOCTL_I915_PERF_OPEN" ;
174+ case DRM_IOCTL_I915_PERF_ADD_CONFIG:
175+ return " DRM_IOCTL_I915_PERF_ADD_CONFIG" ;
176+ case DRM_IOCTL_I915_PERF_REMOVE_CONFIG:
177+ return " DRM_IOCTL_I915_PERF_REMOVE_CONFIG" ;
178+ case DRM_IOCTL_I915_QUERY:
179+ return " DRM_IOCTL_I915_QUERY" ;
180+ case DRM_IOCTL_I915_GEM_MMAP:
181+ return " DRM_IOCTL_I915_GEM_MMAP" ;
182+ default :
183+ return getIoctlStringRemaining (request);
184+ }
64185}
65186
66187} // namespace IoctlHelper
@@ -88,15 +209,15 @@ int Drm::ioctl(unsigned long request, void *arg) {
88209 auto printIoctl = DebugManager.flags .PrintIoctlEntries .get ();
89210
90211 if (printIoctl) {
91- printf (" IOCTL %s called\n " , this -> ioctlToString (request).c_str ());
212+ printf (" IOCTL %s called\n " , IoctlHelper::getIoctlString (request).c_str ());
92213 }
93214
94215 ret = SysCalls::ioctl (getFileDescriptor (), request, arg);
95216
96217 returnedErrno = errno;
97218
98219 if (printIoctl) {
99- printf (" IOCTL %s returns %d, errno %d(%s)\n " , this -> ioctlToString (request).c_str (), ret, returnedErrno, strerror (returnedErrno));
220+ printf (" IOCTL %s returns %d, errno %d(%s)\n " , IoctlHelper::getIoctlString (request).c_str (), ret, returnedErrno, strerror (returnedErrno));
100221 }
101222
102223 if (measureTime) {
@@ -127,7 +248,7 @@ int Drm::getParamIoctl(int param, int *dstValue) {
127248 int retVal = ioctl (DRM_IOCTL_I915_GETPARAM, &getParam);
128249 if (DebugManager.flags .PrintIoctlEntries .get ()) {
129250 printf (" DRM_IOCTL_I915_GETPARAM: param: %s, output value: %d, retCode:% d\n " ,
130- IoctlHelper::getIoctlParamString (param),
251+ IoctlHelper::getIoctlParamString (param). c_str () ,
131252 *getParam.value ,
132253 retVal);
133254 }
@@ -493,132 +614,11 @@ void Drm::printIoctlStatistics() {
493614 printf (" \n --- Ioctls statistics ---\n " );
494615 printf (" %40s %15s %10s %20s" , " Request" , " Total time(ns)" , " Count" , " Avg time per ioctl\n " );
495616 for (const auto &ioctlData : this ->ioctlStatistics ) {
496- printf (" %40s %15llu %10lu %20f\n " , this -> ioctlToString (ioctlData.first ).c_str (), ioctlData.second .first , static_cast <unsigned long >(ioctlData.second .second ), ioctlData.second .first / static_cast <double >(ioctlData.second .second ));
617+ printf (" %40s %15llu %10lu %20f\n " , IoctlHelper::getIoctlString (ioctlData.first ).c_str (), ioctlData.second .first , static_cast <unsigned long >(ioctlData.second .second ), ioctlData.second .first / static_cast <double >(ioctlData.second .second ));
497618 }
498619 printf (" \n " );
499620}
500621
501- std::string Drm::ioctlToString (unsigned long request) {
502- switch (request) {
503- case DRM_IOCTL_I915_GEM_EXECBUFFER2:
504- return " DRM_IOCTL_I915_GEM_EXECBUFFER2" ;
505- case DRM_IOCTL_I915_GEM_WAIT:
506- return " DRM_IOCTL_I915_GEM_WAIT" ;
507- case DRM_IOCTL_GEM_CLOSE:
508- return " DRM_IOCTL_GEM_CLOSE" ;
509- case DRM_IOCTL_I915_GEM_USERPTR:
510- return " DRM_IOCTL_I915_GEM_USERPTR" ;
511- case DRM_IOCTL_I915_INIT:
512- return " DRM_IOCTL_I915_INIT" ;
513- case DRM_IOCTL_I915_FLUSH:
514- return " DRM_IOCTL_I915_FLUSH" ;
515- case DRM_IOCTL_I915_FLIP:
516- return " DRM_IOCTL_I915_FLIP" ;
517- case DRM_IOCTL_I915_BATCHBUFFER:
518- return " DRM_IOCTL_I915_BATCHBUFFER" ;
519- case DRM_IOCTL_I915_IRQ_EMIT:
520- return " DRM_IOCTL_I915_IRQ_EMIT" ;
521- case DRM_IOCTL_I915_IRQ_WAIT:
522- return " DRM_IOCTL_I915_IRQ_WAIT" ;
523- case DRM_IOCTL_I915_GETPARAM:
524- return " DRM_IOCTL_I915_GETPARAM" ;
525- case DRM_IOCTL_I915_SETPARAM:
526- return " DRM_IOCTL_I915_SETPARAM" ;
527- case DRM_IOCTL_I915_ALLOC:
528- return " DRM_IOCTL_I915_ALLOC" ;
529- case DRM_IOCTL_I915_FREE:
530- return " DRM_IOCTL_I915_FREE" ;
531- case DRM_IOCTL_I915_INIT_HEAP:
532- return " DRM_IOCTL_I915_INIT_HEAP" ;
533- case DRM_IOCTL_I915_CMDBUFFER:
534- return " DRM_IOCTL_I915_CMDBUFFER" ;
535- case DRM_IOCTL_I915_DESTROY_HEAP:
536- return " DRM_IOCTL_I915_DESTROY_HEAP" ;
537- case DRM_IOCTL_I915_SET_VBLANK_PIPE:
538- return " DRM_IOCTL_I915_SET_VBLANK_PIPE" ;
539- case DRM_IOCTL_I915_GET_VBLANK_PIPE:
540- return " DRM_IOCTL_I915_GET_VBLANK_PIPE" ;
541- case DRM_IOCTL_I915_VBLANK_SWAP:
542- return " DRM_IOCTL_I915_VBLANK_SWAP" ;
543- case DRM_IOCTL_I915_HWS_ADDR:
544- return " DRM_IOCTL_I915_HWS_ADDR" ;
545- case DRM_IOCTL_I915_GEM_INIT:
546- return " DRM_IOCTL_I915_GEM_INIT" ;
547- case DRM_IOCTL_I915_GEM_EXECBUFFER:
548- return " DRM_IOCTL_I915_GEM_EXECBUFFER" ;
549- case DRM_IOCTL_I915_GEM_EXECBUFFER2_WR:
550- return " DRM_IOCTL_I915_GEM_EXECBUFFER2_WR" ;
551- case DRM_IOCTL_I915_GEM_PIN:
552- return " DRM_IOCTL_I915_GEM_PIN" ;
553- case DRM_IOCTL_I915_GEM_UNPIN:
554- return " DRM_IOCTL_I915_GEM_UNPIN" ;
555- case DRM_IOCTL_I915_GEM_BUSY:
556- return " DRM_IOCTL_I915_GEM_BUSY" ;
557- case DRM_IOCTL_I915_GEM_SET_CACHING:
558- return " DRM_IOCTL_I915_GEM_SET_CACHING" ;
559- case DRM_IOCTL_I915_GEM_GET_CACHING:
560- return " DRM_IOCTL_I915_GEM_GET_CACHING" ;
561- case DRM_IOCTL_I915_GEM_THROTTLE:
562- return " DRM_IOCTL_I915_GEM_THROTTLE" ;
563- case DRM_IOCTL_I915_GEM_ENTERVT:
564- return " DRM_IOCTL_I915_GEM_ENTERVT" ;
565- case DRM_IOCTL_I915_GEM_LEAVEVT:
566- return " DRM_IOCTL_I915_GEM_LEAVEVT" ;
567- case DRM_IOCTL_I915_GEM_CREATE:
568- return " DRM_IOCTL_I915_GEM_CREATE" ;
569- case DRM_IOCTL_I915_GEM_PREAD:
570- return " DRM_IOCTL_I915_GEM_PREAD" ;
571- case DRM_IOCTL_I915_GEM_PWRITE:
572- return " DRM_IOCTL_I915_GEM_PWRITE" ;
573- case DRM_IOCTL_I915_GEM_SET_DOMAIN:
574- return " DRM_IOCTL_I915_GEM_SET_DOMAIN" ;
575- case DRM_IOCTL_I915_GEM_SW_FINISH:
576- return " DRM_IOCTL_I915_GEM_SW_FINISH" ;
577- case DRM_IOCTL_I915_GEM_SET_TILING:
578- return " DRM_IOCTL_I915_GEM_SET_TILING" ;
579- case DRM_IOCTL_I915_GEM_GET_TILING:
580- return " DRM_IOCTL_I915_GEM_GET_TILING" ;
581- case DRM_IOCTL_I915_GEM_GET_APERTURE:
582- return " DRM_IOCTL_I915_GEM_GET_APERTURE" ;
583- case DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID:
584- return " DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID" ;
585- case DRM_IOCTL_I915_GEM_MADVISE:
586- return " DRM_IOCTL_I915_GEM_MADVISE" ;
587- case DRM_IOCTL_I915_OVERLAY_PUT_IMAGE:
588- return " DRM_IOCTL_I915_OVERLAY_PUT_IMAGE" ;
589- case DRM_IOCTL_I915_OVERLAY_ATTRS:
590- return " DRM_IOCTL_I915_OVERLAY_ATTRS" ;
591- case DRM_IOCTL_I915_SET_SPRITE_COLORKEY:
592- return " DRM_IOCTL_I915_SET_SPRITE_COLORKEY" ;
593- case DRM_IOCTL_I915_GET_SPRITE_COLORKEY:
594- return " DRM_IOCTL_I915_GET_SPRITE_COLORKEY" ;
595- case DRM_IOCTL_I915_GEM_CONTEXT_CREATE:
596- return " DRM_IOCTL_I915_GEM_CONTEXT_CREATE" ;
597- case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT:
598- return " DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT" ;
599- case DRM_IOCTL_I915_GEM_CONTEXT_DESTROY:
600- return " DRM_IOCTL_I915_GEM_CONTEXT_DESTROY" ;
601- case DRM_IOCTL_I915_REG_READ:
602- return " DRM_IOCTL_I915_REG_READ" ;
603- case DRM_IOCTL_I915_GET_RESET_STATS:
604- return " DRM_IOCTL_I915_GET_RESET_STATS" ;
605- case DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM:
606- return " DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM" ;
607- case DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM:
608- return " DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM" ;
609- case DRM_IOCTL_I915_PERF_OPEN:
610- return " DRM_IOCTL_I915_PERF_OPEN" ;
611- case DRM_IOCTL_I915_PERF_ADD_CONFIG:
612- return " DRM_IOCTL_I915_PERF_ADD_CONFIG" ;
613- case DRM_IOCTL_I915_PERF_REMOVE_CONFIG:
614- return " DRM_IOCTL_I915_PERF_REMOVE_CONFIG" ;
615- case DRM_IOCTL_I915_QUERY:
616- return " DRM_IOCTL_I915_QUERY" ;
617- default :
618- return ioctlToStringImpl (request);
619- }
620- }
621-
622622bool Drm::createVirtualMemoryAddressSpace (uint32_t vmCount) {
623623 for (auto i = 0u ; i < vmCount; i++) {
624624 uint32_t id = i;
0 commit comments