24
24
#include " shared/source/os_interface/linux/drm_memory_operations_handler_bind.h"
25
25
#include " shared/source/os_interface/linux/hw_device_id.h"
26
26
#include " shared/source/os_interface/linux/ioctl_helper.h"
27
+ #include " shared/source/os_interface/linux/ioctl_strings.h"
27
28
#include " shared/source/os_interface/linux/os_context_linux.h"
28
29
#include " shared/source/os_interface/linux/os_inc.h"
29
30
#include " shared/source/os_interface/linux/pci_path.h"
41
42
42
43
namespace NEO {
43
44
45
+ namespace IoctlToStringHelper {
46
+ std::string getIoctlParamString (int param) {
47
+ switch (param) {
48
+ case I915_PARAM_CHIPSET_ID:
49
+ return " I915_PARAM_CHIPSET_ID" ;
50
+ case I915_PARAM_REVISION:
51
+ return " I915_PARAM_REVISION" ;
52
+ case I915_PARAM_HAS_EXEC_SOFTPIN:
53
+ return " I915_PARAM_HAS_EXEC_SOFTPIN" ;
54
+ case I915_PARAM_HAS_POOLED_EU:
55
+ return " I915_PARAM_HAS_POOLED_EU" ;
56
+ case I915_PARAM_HAS_SCHEDULER:
57
+ return " I915_PARAM_HAS_SCHEDULER" ;
58
+ case I915_PARAM_EU_TOTAL:
59
+ return " I915_PARAM_EU_TOTAL" ;
60
+ case I915_PARAM_SUBSLICE_TOTAL:
61
+ return " I915_PARAM_SUBSLICE_TOTAL" ;
62
+ case I915_PARAM_MIN_EU_IN_POOL:
63
+ return " I915_PARAM_MIN_EU_IN_POOL" ;
64
+ case I915_PARAM_CS_TIMESTAMP_FREQUENCY:
65
+ return " I915_PARAM_CS_TIMESTAMP_FREQUENCY" ;
66
+ default :
67
+ return getIoctlParamStringRemaining (param);
68
+ }
69
+ }
70
+
71
+ std::string getIoctlString (unsigned long request) {
72
+ switch (request) {
73
+ case DRM_IOCTL_I915_GEM_EXECBUFFER2:
74
+ return " DRM_IOCTL_I915_GEM_EXECBUFFER2" ;
75
+ case DRM_IOCTL_I915_GEM_WAIT:
76
+ return " DRM_IOCTL_I915_GEM_WAIT" ;
77
+ case DRM_IOCTL_GEM_CLOSE:
78
+ return " DRM_IOCTL_GEM_CLOSE" ;
79
+ case DRM_IOCTL_I915_GEM_USERPTR:
80
+ return " DRM_IOCTL_I915_GEM_USERPTR" ;
81
+ case DRM_IOCTL_I915_INIT:
82
+ return " DRM_IOCTL_I915_INIT" ;
83
+ case DRM_IOCTL_I915_FLUSH:
84
+ return " DRM_IOCTL_I915_FLUSH" ;
85
+ case DRM_IOCTL_I915_FLIP:
86
+ return " DRM_IOCTL_I915_FLIP" ;
87
+ case DRM_IOCTL_I915_BATCHBUFFER:
88
+ return " DRM_IOCTL_I915_BATCHBUFFER" ;
89
+ case DRM_IOCTL_I915_IRQ_EMIT:
90
+ return " DRM_IOCTL_I915_IRQ_EMIT" ;
91
+ case DRM_IOCTL_I915_IRQ_WAIT:
92
+ return " DRM_IOCTL_I915_IRQ_WAIT" ;
93
+ case DRM_IOCTL_I915_GETPARAM:
94
+ return " DRM_IOCTL_I915_GETPARAM" ;
95
+ case DRM_IOCTL_I915_SETPARAM:
96
+ return " DRM_IOCTL_I915_SETPARAM" ;
97
+ case DRM_IOCTL_I915_ALLOC:
98
+ return " DRM_IOCTL_I915_ALLOC" ;
99
+ case DRM_IOCTL_I915_FREE:
100
+ return " DRM_IOCTL_I915_FREE" ;
101
+ case DRM_IOCTL_I915_INIT_HEAP:
102
+ return " DRM_IOCTL_I915_INIT_HEAP" ;
103
+ case DRM_IOCTL_I915_CMDBUFFER:
104
+ return " DRM_IOCTL_I915_CMDBUFFER" ;
105
+ case DRM_IOCTL_I915_DESTROY_HEAP:
106
+ return " DRM_IOCTL_I915_DESTROY_HEAP" ;
107
+ case DRM_IOCTL_I915_SET_VBLANK_PIPE:
108
+ return " DRM_IOCTL_I915_SET_VBLANK_PIPE" ;
109
+ case DRM_IOCTL_I915_GET_VBLANK_PIPE:
110
+ return " DRM_IOCTL_I915_GET_VBLANK_PIPE" ;
111
+ case DRM_IOCTL_I915_VBLANK_SWAP:
112
+ return " DRM_IOCTL_I915_VBLANK_SWAP" ;
113
+ case DRM_IOCTL_I915_HWS_ADDR:
114
+ return " DRM_IOCTL_I915_HWS_ADDR" ;
115
+ case DRM_IOCTL_I915_GEM_INIT:
116
+ return " DRM_IOCTL_I915_GEM_INIT" ;
117
+ case DRM_IOCTL_I915_GEM_EXECBUFFER:
118
+ return " DRM_IOCTL_I915_GEM_EXECBUFFER" ;
119
+ case DRM_IOCTL_I915_GEM_EXECBUFFER2_WR:
120
+ return " DRM_IOCTL_I915_GEM_EXECBUFFER2_WR" ;
121
+ case DRM_IOCTL_I915_GEM_PIN:
122
+ return " DRM_IOCTL_I915_GEM_PIN" ;
123
+ case DRM_IOCTL_I915_GEM_UNPIN:
124
+ return " DRM_IOCTL_I915_GEM_UNPIN" ;
125
+ case DRM_IOCTL_I915_GEM_BUSY:
126
+ return " DRM_IOCTL_I915_GEM_BUSY" ;
127
+ case DRM_IOCTL_I915_GEM_SET_CACHING:
128
+ return " DRM_IOCTL_I915_GEM_SET_CACHING" ;
129
+ case DRM_IOCTL_I915_GEM_GET_CACHING:
130
+ return " DRM_IOCTL_I915_GEM_GET_CACHING" ;
131
+ case DRM_IOCTL_I915_GEM_THROTTLE:
132
+ return " DRM_IOCTL_I915_GEM_THROTTLE" ;
133
+ case DRM_IOCTL_I915_GEM_ENTERVT:
134
+ return " DRM_IOCTL_I915_GEM_ENTERVT" ;
135
+ case DRM_IOCTL_I915_GEM_LEAVEVT:
136
+ return " DRM_IOCTL_I915_GEM_LEAVEVT" ;
137
+ case DRM_IOCTL_I915_GEM_CREATE:
138
+ return " DRM_IOCTL_I915_GEM_CREATE" ;
139
+ case DRM_IOCTL_I915_GEM_PREAD:
140
+ return " DRM_IOCTL_I915_GEM_PREAD" ;
141
+ case DRM_IOCTL_I915_GEM_PWRITE:
142
+ return " DRM_IOCTL_I915_GEM_PWRITE" ;
143
+ case DRM_IOCTL_I915_GEM_SET_DOMAIN:
144
+ return " DRM_IOCTL_I915_GEM_SET_DOMAIN" ;
145
+ case DRM_IOCTL_I915_GEM_SW_FINISH:
146
+ return " DRM_IOCTL_I915_GEM_SW_FINISH" ;
147
+ case DRM_IOCTL_I915_GEM_SET_TILING:
148
+ return " DRM_IOCTL_I915_GEM_SET_TILING" ;
149
+ case DRM_IOCTL_I915_GEM_GET_TILING:
150
+ return " DRM_IOCTL_I915_GEM_GET_TILING" ;
151
+ case DRM_IOCTL_I915_GEM_GET_APERTURE:
152
+ return " DRM_IOCTL_I915_GEM_GET_APERTURE" ;
153
+ case DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID:
154
+ return " DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID" ;
155
+ case DRM_IOCTL_I915_GEM_MADVISE:
156
+ return " DRM_IOCTL_I915_GEM_MADVISE" ;
157
+ case DRM_IOCTL_I915_OVERLAY_PUT_IMAGE:
158
+ return " DRM_IOCTL_I915_OVERLAY_PUT_IMAGE" ;
159
+ case DRM_IOCTL_I915_OVERLAY_ATTRS:
160
+ return " DRM_IOCTL_I915_OVERLAY_ATTRS" ;
161
+ case DRM_IOCTL_I915_SET_SPRITE_COLORKEY:
162
+ return " DRM_IOCTL_I915_SET_SPRITE_COLORKEY" ;
163
+ case DRM_IOCTL_I915_GET_SPRITE_COLORKEY:
164
+ return " DRM_IOCTL_I915_GET_SPRITE_COLORKEY" ;
165
+ case DRM_IOCTL_I915_GEM_CONTEXT_CREATE:
166
+ return " DRM_IOCTL_I915_GEM_CONTEXT_CREATE" ;
167
+ case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT:
168
+ return " DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT" ;
169
+ case DRM_IOCTL_I915_GEM_CONTEXT_DESTROY:
170
+ return " DRM_IOCTL_I915_GEM_CONTEXT_DESTROY" ;
171
+ case DRM_IOCTL_I915_REG_READ:
172
+ return " DRM_IOCTL_I915_REG_READ" ;
173
+ case DRM_IOCTL_I915_GET_RESET_STATS:
174
+ return " DRM_IOCTL_I915_GET_RESET_STATS" ;
175
+ case DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM:
176
+ return " DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM" ;
177
+ case DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM:
178
+ return " DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM" ;
179
+ case DRM_IOCTL_I915_PERF_OPEN:
180
+ return " DRM_IOCTL_I915_PERF_OPEN" ;
181
+ case DRM_IOCTL_I915_PERF_ADD_CONFIG:
182
+ return " DRM_IOCTL_I915_PERF_ADD_CONFIG" ;
183
+ case DRM_IOCTL_I915_PERF_REMOVE_CONFIG:
184
+ return " DRM_IOCTL_I915_PERF_REMOVE_CONFIG" ;
185
+ case DRM_IOCTL_I915_QUERY:
186
+ return " DRM_IOCTL_I915_QUERY" ;
187
+ case DRM_IOCTL_I915_GEM_MMAP:
188
+ return " DRM_IOCTL_I915_GEM_MMAP" ;
189
+ case DRM_IOCTL_PRIME_FD_TO_HANDLE:
190
+ return " DRM_IOCTL_PRIME_FD_TO_HANDLE" ;
191
+ case DRM_IOCTL_PRIME_HANDLE_TO_FD:
192
+ return " DRM_IOCTL_PRIME_HANDLE_TO_FD" ;
193
+ default :
194
+ return getIoctlStringRemaining (request);
195
+ }
196
+ }
197
+
198
+ } // namespace IoctlToStringHelper
199
+
44
200
Drm::Drm (std::unique_ptr<HwDeviceIdDrm> &&hwDeviceIdIn, RootDeviceEnvironment &rootDeviceEnvironment)
45
201
: DriverModel(DriverModelType::DRM),
46
202
hwDeviceId (std::move(hwDeviceIdIn)), rootDeviceEnvironment(rootDeviceEnvironment) {
@@ -60,7 +216,7 @@ int Drm::ioctl(unsigned long request, void *arg) {
60
216
auto printIoctl = DebugManager.flags .PrintIoctlEntries .get ();
61
217
62
218
if (printIoctl) {
63
- printf (" IOCTL %s called\n " , ioctlHelper-> getIoctlString (request).c_str ());
219
+ printf (" IOCTL %s called\n " , IoctlToStringHelper:: getIoctlString (request).c_str ());
64
220
}
65
221
66
222
if (measureTime) {
@@ -91,10 +247,10 @@ int Drm::ioctl(unsigned long request, void *arg) {
91
247
if (printIoctl) {
92
248
if (ret == 0 ) {
93
249
printf (" IOCTL %s returns %d\n " ,
94
- ioctlHelper-> getIoctlString (request).c_str (), ret);
250
+ IoctlToStringHelper:: getIoctlString (request).c_str (), ret);
95
251
} else {
96
252
printf (" IOCTL %s returns %d, errno %d(%s)\n " ,
97
- ioctlHelper-> getIoctlString (request).c_str (), ret, returnedErrno, strerror (returnedErrno));
253
+ IoctlToStringHelper:: getIoctlString (request).c_str (), ret, returnedErrno, strerror (returnedErrno));
98
254
}
99
255
}
100
256
@@ -111,7 +267,7 @@ int Drm::getParamIoctl(int param, int *dstValue) {
111
267
int retVal = ioctl (DRM_IOCTL_I915_GETPARAM, &getParam);
112
268
if (DebugManager.flags .PrintIoctlEntries .get ()) {
113
269
printf (" DRM_IOCTL_I915_GETPARAM: param: %s, output value: %d, retCode:% d\n " ,
114
- ioctlHelper-> getIoctlParamString (param).c_str (),
270
+ IoctlToStringHelper:: getIoctlParamString (param).c_str (),
115
271
*getParam.value ,
116
272
retVal);
117
273
}
@@ -542,7 +698,7 @@ void Drm::printIoctlStatistics() {
542
698
printf (" %41s %15s %10s %20s %20s %20s" , " Request" , " Total time(ns)" , " Count" , " Avg time per ioctl" , " Min" , " Max\n " );
543
699
for (const auto &ioctlData : this ->ioctlStatistics ) {
544
700
printf (" %41s %15llu %10lu %20f %20lld %20lld\n " ,
545
- ioctlHelper-> getIoctlString (ioctlData.first ).c_str (),
701
+ IoctlToStringHelper:: getIoctlString (ioctlData.first ).c_str (),
546
702
ioctlData.second .totalTime ,
547
703
static_cast <unsigned long >(ioctlData.second .count ),
548
704
ioctlData.second .totalTime / static_cast <double >(ioctlData.second .count ),
0 commit comments