diff options
Diffstat (limited to 'arch/tile/gxio/iorpc_mpipe.c')
-rw-r--r-- | arch/tile/gxio/iorpc_mpipe.c | 529 |
1 files changed, 529 insertions, 0 deletions
diff --git a/arch/tile/gxio/iorpc_mpipe.c b/arch/tile/gxio/iorpc_mpipe.c new file mode 100644 index 000000000000..31b87bf8c027 --- /dev/null +++ b/arch/tile/gxio/iorpc_mpipe.c | |||
@@ -0,0 +1,529 @@ | |||
1 | /* | ||
2 | * Copyright 2012 Tilera Corporation. All Rights Reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | ||
5 | * modify it under the terms of the GNU General Public License | ||
6 | * as published by the Free Software Foundation, version 2. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, but | ||
9 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | ||
11 | * NON INFRINGEMENT. See the GNU General Public License for | ||
12 | * more details. | ||
13 | */ | ||
14 | |||
15 | /* This file is machine-generated; DO NOT EDIT! */ | ||
16 | #include "gxio/iorpc_mpipe.h" | ||
17 | |||
18 | struct alloc_buffer_stacks_param { | ||
19 | unsigned int count; | ||
20 | unsigned int first; | ||
21 | unsigned int flags; | ||
22 | }; | ||
23 | |||
24 | int gxio_mpipe_alloc_buffer_stacks(gxio_mpipe_context_t * context, | ||
25 | unsigned int count, unsigned int first, | ||
26 | unsigned int flags) | ||
27 | { | ||
28 | struct alloc_buffer_stacks_param temp; | ||
29 | struct alloc_buffer_stacks_param *params = &temp; | ||
30 | |||
31 | params->count = count; | ||
32 | params->first = first; | ||
33 | params->flags = flags; | ||
34 | |||
35 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
36 | sizeof(*params), | ||
37 | GXIO_MPIPE_OP_ALLOC_BUFFER_STACKS); | ||
38 | } | ||
39 | |||
40 | EXPORT_SYMBOL(gxio_mpipe_alloc_buffer_stacks); | ||
41 | |||
42 | struct init_buffer_stack_aux_param { | ||
43 | union iorpc_mem_buffer buffer; | ||
44 | unsigned int stack; | ||
45 | unsigned int buffer_size_enum; | ||
46 | }; | ||
47 | |||
48 | int gxio_mpipe_init_buffer_stack_aux(gxio_mpipe_context_t * context, | ||
49 | void *mem_va, size_t mem_size, | ||
50 | unsigned int mem_flags, unsigned int stack, | ||
51 | unsigned int buffer_size_enum) | ||
52 | { | ||
53 | int __result; | ||
54 | unsigned long long __cpa; | ||
55 | pte_t __pte; | ||
56 | struct init_buffer_stack_aux_param temp; | ||
57 | struct init_buffer_stack_aux_param *params = &temp; | ||
58 | |||
59 | __result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte); | ||
60 | if (__result != 0) | ||
61 | return __result; | ||
62 | params->buffer.kernel.cpa = __cpa; | ||
63 | params->buffer.kernel.size = mem_size; | ||
64 | params->buffer.kernel.pte = __pte; | ||
65 | params->buffer.kernel.flags = mem_flags; | ||
66 | params->stack = stack; | ||
67 | params->buffer_size_enum = buffer_size_enum; | ||
68 | |||
69 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
70 | sizeof(*params), | ||
71 | GXIO_MPIPE_OP_INIT_BUFFER_STACK_AUX); | ||
72 | } | ||
73 | |||
74 | EXPORT_SYMBOL(gxio_mpipe_init_buffer_stack_aux); | ||
75 | |||
76 | |||
77 | struct alloc_notif_rings_param { | ||
78 | unsigned int count; | ||
79 | unsigned int first; | ||
80 | unsigned int flags; | ||
81 | }; | ||
82 | |||
83 | int gxio_mpipe_alloc_notif_rings(gxio_mpipe_context_t * context, | ||
84 | unsigned int count, unsigned int first, | ||
85 | unsigned int flags) | ||
86 | { | ||
87 | struct alloc_notif_rings_param temp; | ||
88 | struct alloc_notif_rings_param *params = &temp; | ||
89 | |||
90 | params->count = count; | ||
91 | params->first = first; | ||
92 | params->flags = flags; | ||
93 | |||
94 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
95 | sizeof(*params), GXIO_MPIPE_OP_ALLOC_NOTIF_RINGS); | ||
96 | } | ||
97 | |||
98 | EXPORT_SYMBOL(gxio_mpipe_alloc_notif_rings); | ||
99 | |||
100 | struct init_notif_ring_aux_param { | ||
101 | union iorpc_mem_buffer buffer; | ||
102 | unsigned int ring; | ||
103 | }; | ||
104 | |||
105 | int gxio_mpipe_init_notif_ring_aux(gxio_mpipe_context_t * context, void *mem_va, | ||
106 | size_t mem_size, unsigned int mem_flags, | ||
107 | unsigned int ring) | ||
108 | { | ||
109 | int __result; | ||
110 | unsigned long long __cpa; | ||
111 | pte_t __pte; | ||
112 | struct init_notif_ring_aux_param temp; | ||
113 | struct init_notif_ring_aux_param *params = &temp; | ||
114 | |||
115 | __result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte); | ||
116 | if (__result != 0) | ||
117 | return __result; | ||
118 | params->buffer.kernel.cpa = __cpa; | ||
119 | params->buffer.kernel.size = mem_size; | ||
120 | params->buffer.kernel.pte = __pte; | ||
121 | params->buffer.kernel.flags = mem_flags; | ||
122 | params->ring = ring; | ||
123 | |||
124 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
125 | sizeof(*params), | ||
126 | GXIO_MPIPE_OP_INIT_NOTIF_RING_AUX); | ||
127 | } | ||
128 | |||
129 | EXPORT_SYMBOL(gxio_mpipe_init_notif_ring_aux); | ||
130 | |||
131 | struct request_notif_ring_interrupt_param { | ||
132 | union iorpc_interrupt interrupt; | ||
133 | unsigned int ring; | ||
134 | }; | ||
135 | |||
136 | int gxio_mpipe_request_notif_ring_interrupt(gxio_mpipe_context_t * context, | ||
137 | int inter_x, int inter_y, | ||
138 | int inter_ipi, int inter_event, | ||
139 | unsigned int ring) | ||
140 | { | ||
141 | struct request_notif_ring_interrupt_param temp; | ||
142 | struct request_notif_ring_interrupt_param *params = &temp; | ||
143 | |||
144 | params->interrupt.kernel.x = inter_x; | ||
145 | params->interrupt.kernel.y = inter_y; | ||
146 | params->interrupt.kernel.ipi = inter_ipi; | ||
147 | params->interrupt.kernel.event = inter_event; | ||
148 | params->ring = ring; | ||
149 | |||
150 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
151 | sizeof(*params), | ||
152 | GXIO_MPIPE_OP_REQUEST_NOTIF_RING_INTERRUPT); | ||
153 | } | ||
154 | |||
155 | EXPORT_SYMBOL(gxio_mpipe_request_notif_ring_interrupt); | ||
156 | |||
157 | struct enable_notif_ring_interrupt_param { | ||
158 | unsigned int ring; | ||
159 | }; | ||
160 | |||
161 | int gxio_mpipe_enable_notif_ring_interrupt(gxio_mpipe_context_t * context, | ||
162 | unsigned int ring) | ||
163 | { | ||
164 | struct enable_notif_ring_interrupt_param temp; | ||
165 | struct enable_notif_ring_interrupt_param *params = &temp; | ||
166 | |||
167 | params->ring = ring; | ||
168 | |||
169 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
170 | sizeof(*params), | ||
171 | GXIO_MPIPE_OP_ENABLE_NOTIF_RING_INTERRUPT); | ||
172 | } | ||
173 | |||
174 | EXPORT_SYMBOL(gxio_mpipe_enable_notif_ring_interrupt); | ||
175 | |||
176 | struct alloc_notif_groups_param { | ||
177 | unsigned int count; | ||
178 | unsigned int first; | ||
179 | unsigned int flags; | ||
180 | }; | ||
181 | |||
182 | int gxio_mpipe_alloc_notif_groups(gxio_mpipe_context_t * context, | ||
183 | unsigned int count, unsigned int first, | ||
184 | unsigned int flags) | ||
185 | { | ||
186 | struct alloc_notif_groups_param temp; | ||
187 | struct alloc_notif_groups_param *params = &temp; | ||
188 | |||
189 | params->count = count; | ||
190 | params->first = first; | ||
191 | params->flags = flags; | ||
192 | |||
193 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
194 | sizeof(*params), GXIO_MPIPE_OP_ALLOC_NOTIF_GROUPS); | ||
195 | } | ||
196 | |||
197 | EXPORT_SYMBOL(gxio_mpipe_alloc_notif_groups); | ||
198 | |||
199 | struct init_notif_group_param { | ||
200 | unsigned int group; | ||
201 | gxio_mpipe_notif_group_bits_t bits; | ||
202 | }; | ||
203 | |||
204 | int gxio_mpipe_init_notif_group(gxio_mpipe_context_t * context, | ||
205 | unsigned int group, | ||
206 | gxio_mpipe_notif_group_bits_t bits) | ||
207 | { | ||
208 | struct init_notif_group_param temp; | ||
209 | struct init_notif_group_param *params = &temp; | ||
210 | |||
211 | params->group = group; | ||
212 | params->bits = bits; | ||
213 | |||
214 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
215 | sizeof(*params), GXIO_MPIPE_OP_INIT_NOTIF_GROUP); | ||
216 | } | ||
217 | |||
218 | EXPORT_SYMBOL(gxio_mpipe_init_notif_group); | ||
219 | |||
220 | struct alloc_buckets_param { | ||
221 | unsigned int count; | ||
222 | unsigned int first; | ||
223 | unsigned int flags; | ||
224 | }; | ||
225 | |||
226 | int gxio_mpipe_alloc_buckets(gxio_mpipe_context_t * context, unsigned int count, | ||
227 | unsigned int first, unsigned int flags) | ||
228 | { | ||
229 | struct alloc_buckets_param temp; | ||
230 | struct alloc_buckets_param *params = &temp; | ||
231 | |||
232 | params->count = count; | ||
233 | params->first = first; | ||
234 | params->flags = flags; | ||
235 | |||
236 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
237 | sizeof(*params), GXIO_MPIPE_OP_ALLOC_BUCKETS); | ||
238 | } | ||
239 | |||
240 | EXPORT_SYMBOL(gxio_mpipe_alloc_buckets); | ||
241 | |||
242 | struct init_bucket_param { | ||
243 | unsigned int bucket; | ||
244 | MPIPE_LBL_INIT_DAT_BSTS_TBL_t bucket_info; | ||
245 | }; | ||
246 | |||
247 | int gxio_mpipe_init_bucket(gxio_mpipe_context_t * context, unsigned int bucket, | ||
248 | MPIPE_LBL_INIT_DAT_BSTS_TBL_t bucket_info) | ||
249 | { | ||
250 | struct init_bucket_param temp; | ||
251 | struct init_bucket_param *params = &temp; | ||
252 | |||
253 | params->bucket = bucket; | ||
254 | params->bucket_info = bucket_info; | ||
255 | |||
256 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
257 | sizeof(*params), GXIO_MPIPE_OP_INIT_BUCKET); | ||
258 | } | ||
259 | |||
260 | EXPORT_SYMBOL(gxio_mpipe_init_bucket); | ||
261 | |||
262 | struct alloc_edma_rings_param { | ||
263 | unsigned int count; | ||
264 | unsigned int first; | ||
265 | unsigned int flags; | ||
266 | }; | ||
267 | |||
268 | int gxio_mpipe_alloc_edma_rings(gxio_mpipe_context_t * context, | ||
269 | unsigned int count, unsigned int first, | ||
270 | unsigned int flags) | ||
271 | { | ||
272 | struct alloc_edma_rings_param temp; | ||
273 | struct alloc_edma_rings_param *params = &temp; | ||
274 | |||
275 | params->count = count; | ||
276 | params->first = first; | ||
277 | params->flags = flags; | ||
278 | |||
279 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
280 | sizeof(*params), GXIO_MPIPE_OP_ALLOC_EDMA_RINGS); | ||
281 | } | ||
282 | |||
283 | EXPORT_SYMBOL(gxio_mpipe_alloc_edma_rings); | ||
284 | |||
285 | struct init_edma_ring_aux_param { | ||
286 | union iorpc_mem_buffer buffer; | ||
287 | unsigned int ring; | ||
288 | unsigned int channel; | ||
289 | }; | ||
290 | |||
291 | int gxio_mpipe_init_edma_ring_aux(gxio_mpipe_context_t * context, void *mem_va, | ||
292 | size_t mem_size, unsigned int mem_flags, | ||
293 | unsigned int ring, unsigned int channel) | ||
294 | { | ||
295 | int __result; | ||
296 | unsigned long long __cpa; | ||
297 | pte_t __pte; | ||
298 | struct init_edma_ring_aux_param temp; | ||
299 | struct init_edma_ring_aux_param *params = &temp; | ||
300 | |||
301 | __result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte); | ||
302 | if (__result != 0) | ||
303 | return __result; | ||
304 | params->buffer.kernel.cpa = __cpa; | ||
305 | params->buffer.kernel.size = mem_size; | ||
306 | params->buffer.kernel.pte = __pte; | ||
307 | params->buffer.kernel.flags = mem_flags; | ||
308 | params->ring = ring; | ||
309 | params->channel = channel; | ||
310 | |||
311 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
312 | sizeof(*params), GXIO_MPIPE_OP_INIT_EDMA_RING_AUX); | ||
313 | } | ||
314 | |||
315 | EXPORT_SYMBOL(gxio_mpipe_init_edma_ring_aux); | ||
316 | |||
317 | |||
318 | int gxio_mpipe_commit_rules(gxio_mpipe_context_t * context, const void *blob, | ||
319 | size_t blob_size) | ||
320 | { | ||
321 | const void *params = blob; | ||
322 | |||
323 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, blob_size, | ||
324 | GXIO_MPIPE_OP_COMMIT_RULES); | ||
325 | } | ||
326 | |||
327 | EXPORT_SYMBOL(gxio_mpipe_commit_rules); | ||
328 | |||
329 | struct register_client_memory_param { | ||
330 | unsigned int iotlb; | ||
331 | HV_PTE pte; | ||
332 | unsigned int flags; | ||
333 | }; | ||
334 | |||
335 | int gxio_mpipe_register_client_memory(gxio_mpipe_context_t * context, | ||
336 | unsigned int iotlb, HV_PTE pte, | ||
337 | unsigned int flags) | ||
338 | { | ||
339 | struct register_client_memory_param temp; | ||
340 | struct register_client_memory_param *params = &temp; | ||
341 | |||
342 | params->iotlb = iotlb; | ||
343 | params->pte = pte; | ||
344 | params->flags = flags; | ||
345 | |||
346 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
347 | sizeof(*params), | ||
348 | GXIO_MPIPE_OP_REGISTER_CLIENT_MEMORY); | ||
349 | } | ||
350 | |||
351 | EXPORT_SYMBOL(gxio_mpipe_register_client_memory); | ||
352 | |||
353 | struct link_open_aux_param { | ||
354 | _gxio_mpipe_link_name_t name; | ||
355 | unsigned int flags; | ||
356 | }; | ||
357 | |||
358 | int gxio_mpipe_link_open_aux(gxio_mpipe_context_t * context, | ||
359 | _gxio_mpipe_link_name_t name, unsigned int flags) | ||
360 | { | ||
361 | struct link_open_aux_param temp; | ||
362 | struct link_open_aux_param *params = &temp; | ||
363 | |||
364 | params->name = name; | ||
365 | params->flags = flags; | ||
366 | |||
367 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
368 | sizeof(*params), GXIO_MPIPE_OP_LINK_OPEN_AUX); | ||
369 | } | ||
370 | |||
371 | EXPORT_SYMBOL(gxio_mpipe_link_open_aux); | ||
372 | |||
373 | struct link_close_aux_param { | ||
374 | int mac; | ||
375 | }; | ||
376 | |||
377 | int gxio_mpipe_link_close_aux(gxio_mpipe_context_t * context, int mac) | ||
378 | { | ||
379 | struct link_close_aux_param temp; | ||
380 | struct link_close_aux_param *params = &temp; | ||
381 | |||
382 | params->mac = mac; | ||
383 | |||
384 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
385 | sizeof(*params), GXIO_MPIPE_OP_LINK_CLOSE_AUX); | ||
386 | } | ||
387 | |||
388 | EXPORT_SYMBOL(gxio_mpipe_link_close_aux); | ||
389 | |||
390 | |||
391 | struct get_timestamp_aux_param { | ||
392 | uint64_t sec; | ||
393 | uint64_t nsec; | ||
394 | uint64_t cycles; | ||
395 | }; | ||
396 | |||
397 | int gxio_mpipe_get_timestamp_aux(gxio_mpipe_context_t * context, uint64_t * sec, | ||
398 | uint64_t * nsec, uint64_t * cycles) | ||
399 | { | ||
400 | int __result; | ||
401 | struct get_timestamp_aux_param temp; | ||
402 | struct get_timestamp_aux_param *params = &temp; | ||
403 | |||
404 | __result = | ||
405 | hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params), | ||
406 | GXIO_MPIPE_OP_GET_TIMESTAMP_AUX); | ||
407 | *sec = params->sec; | ||
408 | *nsec = params->nsec; | ||
409 | *cycles = params->cycles; | ||
410 | |||
411 | return __result; | ||
412 | } | ||
413 | |||
414 | EXPORT_SYMBOL(gxio_mpipe_get_timestamp_aux); | ||
415 | |||
416 | struct set_timestamp_aux_param { | ||
417 | uint64_t sec; | ||
418 | uint64_t nsec; | ||
419 | uint64_t cycles; | ||
420 | }; | ||
421 | |||
422 | int gxio_mpipe_set_timestamp_aux(gxio_mpipe_context_t * context, uint64_t sec, | ||
423 | uint64_t nsec, uint64_t cycles) | ||
424 | { | ||
425 | struct set_timestamp_aux_param temp; | ||
426 | struct set_timestamp_aux_param *params = &temp; | ||
427 | |||
428 | params->sec = sec; | ||
429 | params->nsec = nsec; | ||
430 | params->cycles = cycles; | ||
431 | |||
432 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
433 | sizeof(*params), GXIO_MPIPE_OP_SET_TIMESTAMP_AUX); | ||
434 | } | ||
435 | |||
436 | EXPORT_SYMBOL(gxio_mpipe_set_timestamp_aux); | ||
437 | |||
438 | struct adjust_timestamp_aux_param { | ||
439 | int64_t nsec; | ||
440 | }; | ||
441 | |||
442 | int gxio_mpipe_adjust_timestamp_aux(gxio_mpipe_context_t * context, | ||
443 | int64_t nsec) | ||
444 | { | ||
445 | struct adjust_timestamp_aux_param temp; | ||
446 | struct adjust_timestamp_aux_param *params = &temp; | ||
447 | |||
448 | params->nsec = nsec; | ||
449 | |||
450 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
451 | sizeof(*params), | ||
452 | GXIO_MPIPE_OP_ADJUST_TIMESTAMP_AUX); | ||
453 | } | ||
454 | |||
455 | EXPORT_SYMBOL(gxio_mpipe_adjust_timestamp_aux); | ||
456 | |||
457 | struct arm_pollfd_param { | ||
458 | union iorpc_pollfd pollfd; | ||
459 | }; | ||
460 | |||
461 | int gxio_mpipe_arm_pollfd(gxio_mpipe_context_t * context, int pollfd_cookie) | ||
462 | { | ||
463 | struct arm_pollfd_param temp; | ||
464 | struct arm_pollfd_param *params = &temp; | ||
465 | |||
466 | params->pollfd.kernel.cookie = pollfd_cookie; | ||
467 | |||
468 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
469 | sizeof(*params), GXIO_MPIPE_OP_ARM_POLLFD); | ||
470 | } | ||
471 | |||
472 | EXPORT_SYMBOL(gxio_mpipe_arm_pollfd); | ||
473 | |||
474 | struct close_pollfd_param { | ||
475 | union iorpc_pollfd pollfd; | ||
476 | }; | ||
477 | |||
478 | int gxio_mpipe_close_pollfd(gxio_mpipe_context_t * context, int pollfd_cookie) | ||
479 | { | ||
480 | struct close_pollfd_param temp; | ||
481 | struct close_pollfd_param *params = &temp; | ||
482 | |||
483 | params->pollfd.kernel.cookie = pollfd_cookie; | ||
484 | |||
485 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
486 | sizeof(*params), GXIO_MPIPE_OP_CLOSE_POLLFD); | ||
487 | } | ||
488 | |||
489 | EXPORT_SYMBOL(gxio_mpipe_close_pollfd); | ||
490 | |||
491 | struct get_mmio_base_param { | ||
492 | HV_PTE base; | ||
493 | }; | ||
494 | |||
495 | int gxio_mpipe_get_mmio_base(gxio_mpipe_context_t * context, HV_PTE *base) | ||
496 | { | ||
497 | int __result; | ||
498 | struct get_mmio_base_param temp; | ||
499 | struct get_mmio_base_param *params = &temp; | ||
500 | |||
501 | __result = | ||
502 | hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params), | ||
503 | GXIO_MPIPE_OP_GET_MMIO_BASE); | ||
504 | *base = params->base; | ||
505 | |||
506 | return __result; | ||
507 | } | ||
508 | |||
509 | EXPORT_SYMBOL(gxio_mpipe_get_mmio_base); | ||
510 | |||
511 | struct check_mmio_offset_param { | ||
512 | unsigned long offset; | ||
513 | unsigned long size; | ||
514 | }; | ||
515 | |||
516 | int gxio_mpipe_check_mmio_offset(gxio_mpipe_context_t * context, | ||
517 | unsigned long offset, unsigned long size) | ||
518 | { | ||
519 | struct check_mmio_offset_param temp; | ||
520 | struct check_mmio_offset_param *params = &temp; | ||
521 | |||
522 | params->offset = offset; | ||
523 | params->size = size; | ||
524 | |||
525 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
526 | sizeof(*params), GXIO_MPIPE_OP_CHECK_MMIO_OFFSET); | ||
527 | } | ||
528 | |||
529 | EXPORT_SYMBOL(gxio_mpipe_check_mmio_offset); | ||