diff --git a/opencl/test/unit_test/os_interface/linux/drm_mock.cpp b/opencl/test/unit_test/os_interface/linux/drm_mock.cpp index 9a0eb86945..74091aa954 100644 --- a/opencl/test/unit_test/os_interface/linux/drm_mock.cpp +++ b/opencl/test/unit_test/os_interface/linux/drm_mock.cpp @@ -267,3 +267,76 @@ void DrmMockEngine::handleQueryItem(drm_i915_query_item *queryItem) { break; } } + +std::map ioctlCodeStringMap = { + {DRM_IOCTL_I915_INIT, "DRM_IOCTL_I915_INIT"}, + {DRM_IOCTL_I915_FLUSH, "DRM_IOCTL_I915_FLUSH"}, + {DRM_IOCTL_I915_FLIP, "DRM_IOCTL_I915_FLIP"}, + {DRM_IOCTL_GEM_CLOSE, "DRM_IOCTL_GEM_CLOSE"}, + {DRM_IOCTL_I915_BATCHBUFFER, "DRM_IOCTL_I915_BATCHBUFFER"}, + {DRM_IOCTL_I915_IRQ_EMIT, "DRM_IOCTL_I915_IRQ_EMIT"}, + {DRM_IOCTL_I915_IRQ_WAIT, "DRM_IOCTL_I915_IRQ_WAIT"}, + {DRM_IOCTL_I915_GETPARAM, "DRM_IOCTL_I915_GETPARAM"}, + {DRM_IOCTL_I915_SETPARAM, "DRM_IOCTL_I915_SETPARAM"}, + {DRM_IOCTL_I915_ALLOC, "DRM_IOCTL_I915_ALLOC"}, + {DRM_IOCTL_I915_FREE, "DRM_IOCTL_I915_FREE"}, + {DRM_IOCTL_I915_INIT_HEAP, "DRM_IOCTL_I915_INIT_HEAP"}, + {DRM_IOCTL_I915_CMDBUFFER, "DRM_IOCTL_I915_CMDBUFFER"}, + {DRM_IOCTL_I915_DESTROY_HEAP, "DRM_IOCTL_I915_DESTROY_HEAP"}, + {DRM_IOCTL_I915_SET_VBLANK_PIPE, "DRM_IOCTL_I915_SET_VBLANK_PIPE"}, + {DRM_IOCTL_I915_GET_VBLANK_PIPE, "DRM_IOCTL_I915_GET_VBLANK_PIPE"}, + {DRM_IOCTL_I915_VBLANK_SWAP, "DRM_IOCTL_I915_VBLANK_SWAP"}, + {DRM_IOCTL_I915_HWS_ADDR, "DRM_IOCTL_I915_HWS_ADDR"}, + {DRM_IOCTL_I915_GEM_INIT, "DRM_IOCTL_I915_GEM_INIT"}, + {DRM_IOCTL_I915_GEM_EXECBUFFER, "DRM_IOCTL_I915_GEM_EXECBUFFER"}, + {DRM_IOCTL_I915_GEM_EXECBUFFER2, "DRM_IOCTL_I915_GEM_EXECBUFFER2"}, + {DRM_IOCTL_I915_GEM_EXECBUFFER2_WR, "DRM_IOCTL_I915_GEM_EXECBUFFER2_WR"}, + {DRM_IOCTL_I915_GEM_PIN, "DRM_IOCTL_I915_GEM_PIN"}, + {DRM_IOCTL_I915_GEM_UNPIN, "DRM_IOCTL_I915_GEM_UNPIN"}, + {DRM_IOCTL_I915_GEM_BUSY, "DRM_IOCTL_I915_GEM_BUSY"}, + {DRM_IOCTL_I915_GEM_SET_CACHING, "DRM_IOCTL_I915_GEM_SET_CACHING"}, + {DRM_IOCTL_I915_GEM_GET_CACHING, "DRM_IOCTL_I915_GEM_GET_CACHING"}, + {DRM_IOCTL_I915_GEM_THROTTLE, "DRM_IOCTL_I915_GEM_THROTTLE"}, + {DRM_IOCTL_I915_GEM_ENTERVT, "DRM_IOCTL_I915_GEM_ENTERVT"}, + {DRM_IOCTL_I915_GEM_LEAVEVT, "DRM_IOCTL_I915_GEM_LEAVEVT"}, + {DRM_IOCTL_I915_GEM_CREATE, "DRM_IOCTL_I915_GEM_CREATE"}, + {DRM_IOCTL_I915_GEM_PREAD, "DRM_IOCTL_I915_GEM_PREAD"}, + {DRM_IOCTL_I915_GEM_PWRITE, "DRM_IOCTL_I915_GEM_PWRITE"}, + {DRM_IOCTL_I915_GEM_SET_DOMAIN, "DRM_IOCTL_I915_GEM_SET_DOMAIN"}, + {DRM_IOCTL_I915_GEM_SW_FINISH, "DRM_IOCTL_I915_GEM_SW_FINISH"}, + {DRM_IOCTL_I915_GEM_SET_TILING, "DRM_IOCTL_I915_GEM_SET_TILING"}, + {DRM_IOCTL_I915_GEM_GET_TILING, "DRM_IOCTL_I915_GEM_GET_TILING"}, + {DRM_IOCTL_I915_GEM_GET_APERTURE, "DRM_IOCTL_I915_GEM_GET_APERTURE"}, + {DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID, "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID"}, + {DRM_IOCTL_I915_GEM_MADVISE, "DRM_IOCTL_I915_GEM_MADVISE"}, + {DRM_IOCTL_I915_OVERLAY_PUT_IMAGE, "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE"}, + {DRM_IOCTL_I915_OVERLAY_ATTRS, "DRM_IOCTL_I915_OVERLAY_ATTRS"}, + {DRM_IOCTL_I915_SET_SPRITE_COLORKEY, "DRM_IOCTL_I915_SET_SPRITE_COLORKEY"}, + {DRM_IOCTL_I915_GET_SPRITE_COLORKEY, "DRM_IOCTL_I915_GET_SPRITE_COLORKEY"}, + {DRM_IOCTL_I915_GEM_WAIT, "DRM_IOCTL_I915_GEM_WAIT"}, + {DRM_IOCTL_I915_GEM_CONTEXT_CREATE, "DRM_IOCTL_I915_GEM_CONTEXT_CREATE"}, + {DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, "DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT"}, + {DRM_IOCTL_I915_GEM_CONTEXT_DESTROY, "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY"}, + {DRM_IOCTL_I915_REG_READ, "DRM_IOCTL_I915_REG_READ"}, + {DRM_IOCTL_I915_GET_RESET_STATS, "DRM_IOCTL_I915_GET_RESET_STATS"}, + {DRM_IOCTL_I915_GEM_USERPTR, "DRM_IOCTL_I915_GEM_USERPTR"}, + {DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM, "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM"}, + {DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM, "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM"}, + {DRM_IOCTL_I915_PERF_OPEN, "DRM_IOCTL_I915_PERF_OPEN"}, + {DRM_IOCTL_I915_PERF_ADD_CONFIG, "DRM_IOCTL_I915_PERF_ADD_CONFIG"}, + {DRM_IOCTL_I915_PERF_REMOVE_CONFIG, "DRM_IOCTL_I915_PERF_REMOVE_CONFIG"}, + {DRM_IOCTL_I915_QUERY, "DRM_IOCTL_I915_QUERY"}, + {DRM_IOCTL_I915_GEM_MMAP, "DRM_IOCTL_I915_GEM_MMAP"}, + {static_cast(101010101), "101010101"}}; + +std::map ioctlParamCodeStringMap = { + {I915_PARAM_CHIPSET_ID, "I915_PARAM_CHIPSET_ID"}, + {I915_PARAM_REVISION, "I915_PARAM_REVISION"}, + {I915_PARAM_HAS_EXEC_SOFTPIN, "I915_PARAM_HAS_EXEC_SOFTPIN"}, + {I915_PARAM_HAS_POOLED_EU, "I915_PARAM_HAS_POOLED_EU"}, + {I915_PARAM_HAS_SCHEDULER, "I915_PARAM_HAS_SCHEDULER"}, + {I915_PARAM_EU_TOTAL, "I915_PARAM_EU_TOTAL"}, + {I915_PARAM_SUBSLICE_TOTAL, "I915_PARAM_SUBSLICE_TOTAL"}, + {I915_PARAM_MIN_EU_IN_POOL, "I915_PARAM_MIN_EU_IN_POOL"}, + {I915_PARAM_CS_TIMESTAMP_FREQUENCY, "I915_PARAM_CS_TIMESTAMP_FREQUENCY"}, + {static_cast(101010101), "101010101"}}; diff --git a/opencl/test/unit_test/os_interface/linux/drm_mock.h b/opencl/test/unit_test/os_interface/linux/drm_mock.h index dc7db48bb1..0afed95a0d 100644 --- a/opencl/test/unit_test/os_interface/linux/drm_mock.h +++ b/opencl/test/unit_test/os_interface/linux/drm_mock.h @@ -23,6 +23,7 @@ #include #include #include +#include using namespace NEO; @@ -247,3 +248,6 @@ class DrmMockResources : public DrmMock { size_t registeredDataSize; uint32_t currentCookie = 2; }; + +extern std::map ioctlCodeStringMap; +extern std::map ioctlParamCodeStringMap; diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 54392a4614..c82dc51efa 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -36,7 +36,7 @@ namespace NEO { namespace IoctlHelper { -constexpr const char *getIoctlParamString(int param) { +std::string getIoctlParamString(int param) { switch (param) { case I915_PARAM_CHIPSET_ID: return "I915_PARAM_CHIPSET_ID"; @@ -57,10 +57,131 @@ constexpr const char *getIoctlParamString(int param) { case I915_PARAM_CS_TIMESTAMP_FREQUENCY: return "I915_PARAM_CS_TIMESTAMP_FREQUENCY"; default: - break; + return getIoctlParamStringRemaining(param); } +} - return "UNKNOWN"; +std::string getIoctlString(unsigned long request) { + switch (request) { + case DRM_IOCTL_I915_GEM_EXECBUFFER2: + return "DRM_IOCTL_I915_GEM_EXECBUFFER2"; + case DRM_IOCTL_I915_GEM_WAIT: + return "DRM_IOCTL_I915_GEM_WAIT"; + case DRM_IOCTL_GEM_CLOSE: + return "DRM_IOCTL_GEM_CLOSE"; + case DRM_IOCTL_I915_GEM_USERPTR: + return "DRM_IOCTL_I915_GEM_USERPTR"; + case DRM_IOCTL_I915_INIT: + return "DRM_IOCTL_I915_INIT"; + case DRM_IOCTL_I915_FLUSH: + return "DRM_IOCTL_I915_FLUSH"; + case DRM_IOCTL_I915_FLIP: + return "DRM_IOCTL_I915_FLIP"; + case DRM_IOCTL_I915_BATCHBUFFER: + return "DRM_IOCTL_I915_BATCHBUFFER"; + case DRM_IOCTL_I915_IRQ_EMIT: + return "DRM_IOCTL_I915_IRQ_EMIT"; + case DRM_IOCTL_I915_IRQ_WAIT: + return "DRM_IOCTL_I915_IRQ_WAIT"; + case DRM_IOCTL_I915_GETPARAM: + return "DRM_IOCTL_I915_GETPARAM"; + case DRM_IOCTL_I915_SETPARAM: + return "DRM_IOCTL_I915_SETPARAM"; + case DRM_IOCTL_I915_ALLOC: + return "DRM_IOCTL_I915_ALLOC"; + case DRM_IOCTL_I915_FREE: + return "DRM_IOCTL_I915_FREE"; + case DRM_IOCTL_I915_INIT_HEAP: + return "DRM_IOCTL_I915_INIT_HEAP"; + case DRM_IOCTL_I915_CMDBUFFER: + return "DRM_IOCTL_I915_CMDBUFFER"; + case DRM_IOCTL_I915_DESTROY_HEAP: + return "DRM_IOCTL_I915_DESTROY_HEAP"; + case DRM_IOCTL_I915_SET_VBLANK_PIPE: + return "DRM_IOCTL_I915_SET_VBLANK_PIPE"; + case DRM_IOCTL_I915_GET_VBLANK_PIPE: + return "DRM_IOCTL_I915_GET_VBLANK_PIPE"; + case DRM_IOCTL_I915_VBLANK_SWAP: + return "DRM_IOCTL_I915_VBLANK_SWAP"; + case DRM_IOCTL_I915_HWS_ADDR: + return "DRM_IOCTL_I915_HWS_ADDR"; + case DRM_IOCTL_I915_GEM_INIT: + return "DRM_IOCTL_I915_GEM_INIT"; + case DRM_IOCTL_I915_GEM_EXECBUFFER: + return "DRM_IOCTL_I915_GEM_EXECBUFFER"; + case DRM_IOCTL_I915_GEM_EXECBUFFER2_WR: + return "DRM_IOCTL_I915_GEM_EXECBUFFER2_WR"; + case DRM_IOCTL_I915_GEM_PIN: + return "DRM_IOCTL_I915_GEM_PIN"; + case DRM_IOCTL_I915_GEM_UNPIN: + return "DRM_IOCTL_I915_GEM_UNPIN"; + case DRM_IOCTL_I915_GEM_BUSY: + return "DRM_IOCTL_I915_GEM_BUSY"; + case DRM_IOCTL_I915_GEM_SET_CACHING: + return "DRM_IOCTL_I915_GEM_SET_CACHING"; + case DRM_IOCTL_I915_GEM_GET_CACHING: + return "DRM_IOCTL_I915_GEM_GET_CACHING"; + case DRM_IOCTL_I915_GEM_THROTTLE: + return "DRM_IOCTL_I915_GEM_THROTTLE"; + case DRM_IOCTL_I915_GEM_ENTERVT: + return "DRM_IOCTL_I915_GEM_ENTERVT"; + case DRM_IOCTL_I915_GEM_LEAVEVT: + return "DRM_IOCTL_I915_GEM_LEAVEVT"; + case DRM_IOCTL_I915_GEM_CREATE: + return "DRM_IOCTL_I915_GEM_CREATE"; + case DRM_IOCTL_I915_GEM_PREAD: + return "DRM_IOCTL_I915_GEM_PREAD"; + case DRM_IOCTL_I915_GEM_PWRITE: + return "DRM_IOCTL_I915_GEM_PWRITE"; + case DRM_IOCTL_I915_GEM_SET_DOMAIN: + return "DRM_IOCTL_I915_GEM_SET_DOMAIN"; + case DRM_IOCTL_I915_GEM_SW_FINISH: + return "DRM_IOCTL_I915_GEM_SW_FINISH"; + case DRM_IOCTL_I915_GEM_SET_TILING: + return "DRM_IOCTL_I915_GEM_SET_TILING"; + case DRM_IOCTL_I915_GEM_GET_TILING: + return "DRM_IOCTL_I915_GEM_GET_TILING"; + case DRM_IOCTL_I915_GEM_GET_APERTURE: + return "DRM_IOCTL_I915_GEM_GET_APERTURE"; + case DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID: + return "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID"; + case DRM_IOCTL_I915_GEM_MADVISE: + return "DRM_IOCTL_I915_GEM_MADVISE"; + case DRM_IOCTL_I915_OVERLAY_PUT_IMAGE: + return "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE"; + case DRM_IOCTL_I915_OVERLAY_ATTRS: + return "DRM_IOCTL_I915_OVERLAY_ATTRS"; + case DRM_IOCTL_I915_SET_SPRITE_COLORKEY: + return "DRM_IOCTL_I915_SET_SPRITE_COLORKEY"; + case DRM_IOCTL_I915_GET_SPRITE_COLORKEY: + return "DRM_IOCTL_I915_GET_SPRITE_COLORKEY"; + case DRM_IOCTL_I915_GEM_CONTEXT_CREATE: + return "DRM_IOCTL_I915_GEM_CONTEXT_CREATE"; + case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT: + return "DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT"; + case DRM_IOCTL_I915_GEM_CONTEXT_DESTROY: + return "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY"; + case DRM_IOCTL_I915_REG_READ: + return "DRM_IOCTL_I915_REG_READ"; + case DRM_IOCTL_I915_GET_RESET_STATS: + return "DRM_IOCTL_I915_GET_RESET_STATS"; + case DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM: + return "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM"; + case DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM: + return "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM"; + case DRM_IOCTL_I915_PERF_OPEN: + return "DRM_IOCTL_I915_PERF_OPEN"; + case DRM_IOCTL_I915_PERF_ADD_CONFIG: + return "DRM_IOCTL_I915_PERF_ADD_CONFIG"; + case DRM_IOCTL_I915_PERF_REMOVE_CONFIG: + return "DRM_IOCTL_I915_PERF_REMOVE_CONFIG"; + case DRM_IOCTL_I915_QUERY: + return "DRM_IOCTL_I915_QUERY"; + case DRM_IOCTL_I915_GEM_MMAP: + return "DRM_IOCTL_I915_GEM_MMAP"; + default: + return getIoctlStringRemaining(request); + } } } // namespace IoctlHelper @@ -88,7 +209,7 @@ int Drm::ioctl(unsigned long request, void *arg) { auto printIoctl = DebugManager.flags.PrintIoctlEntries.get(); if (printIoctl) { - printf("IOCTL %s called\n", this->ioctlToString(request).c_str()); + printf("IOCTL %s called\n", IoctlHelper::getIoctlString(request).c_str()); } ret = SysCalls::ioctl(getFileDescriptor(), request, arg); @@ -96,7 +217,7 @@ int Drm::ioctl(unsigned long request, void *arg) { returnedErrno = errno; if (printIoctl) { - printf("IOCTL %s returns %d, errno %d(%s)\n", this->ioctlToString(request).c_str(), ret, returnedErrno, strerror(returnedErrno)); + printf("IOCTL %s returns %d, errno %d(%s)\n", IoctlHelper::getIoctlString(request).c_str(), ret, returnedErrno, strerror(returnedErrno)); } if (measureTime) { @@ -127,7 +248,7 @@ int Drm::getParamIoctl(int param, int *dstValue) { int retVal = ioctl(DRM_IOCTL_I915_GETPARAM, &getParam); if (DebugManager.flags.PrintIoctlEntries.get()) { printf("DRM_IOCTL_I915_GETPARAM: param: %s, output value: %d, retCode:% d\n", - IoctlHelper::getIoctlParamString(param), + IoctlHelper::getIoctlParamString(param).c_str(), *getParam.value, retVal); } @@ -493,132 +614,11 @@ void Drm::printIoctlStatistics() { printf("\n--- Ioctls statistics ---\n"); printf("%40s %15s %10s %20s", "Request", "Total time(ns)", "Count", "Avg time per ioctl\n"); for (const auto &ioctlData : this->ioctlStatistics) { - printf("%40s %15llu %10lu %20f\n", this->ioctlToString(ioctlData.first).c_str(), ioctlData.second.first, static_cast(ioctlData.second.second), ioctlData.second.first / static_cast(ioctlData.second.second)); + printf("%40s %15llu %10lu %20f\n", IoctlHelper::getIoctlString(ioctlData.first).c_str(), ioctlData.second.first, static_cast(ioctlData.second.second), ioctlData.second.first / static_cast(ioctlData.second.second)); } printf("\n"); } -std::string Drm::ioctlToString(unsigned long request) { - switch (request) { - case DRM_IOCTL_I915_GEM_EXECBUFFER2: - return "DRM_IOCTL_I915_GEM_EXECBUFFER2"; - case DRM_IOCTL_I915_GEM_WAIT: - return "DRM_IOCTL_I915_GEM_WAIT"; - case DRM_IOCTL_GEM_CLOSE: - return "DRM_IOCTL_GEM_CLOSE"; - case DRM_IOCTL_I915_GEM_USERPTR: - return "DRM_IOCTL_I915_GEM_USERPTR"; - case DRM_IOCTL_I915_INIT: - return "DRM_IOCTL_I915_INIT"; - case DRM_IOCTL_I915_FLUSH: - return "DRM_IOCTL_I915_FLUSH"; - case DRM_IOCTL_I915_FLIP: - return "DRM_IOCTL_I915_FLIP"; - case DRM_IOCTL_I915_BATCHBUFFER: - return "DRM_IOCTL_I915_BATCHBUFFER"; - case DRM_IOCTL_I915_IRQ_EMIT: - return "DRM_IOCTL_I915_IRQ_EMIT"; - case DRM_IOCTL_I915_IRQ_WAIT: - return "DRM_IOCTL_I915_IRQ_WAIT"; - case DRM_IOCTL_I915_GETPARAM: - return "DRM_IOCTL_I915_GETPARAM"; - case DRM_IOCTL_I915_SETPARAM: - return "DRM_IOCTL_I915_SETPARAM"; - case DRM_IOCTL_I915_ALLOC: - return "DRM_IOCTL_I915_ALLOC"; - case DRM_IOCTL_I915_FREE: - return "DRM_IOCTL_I915_FREE"; - case DRM_IOCTL_I915_INIT_HEAP: - return "DRM_IOCTL_I915_INIT_HEAP"; - case DRM_IOCTL_I915_CMDBUFFER: - return "DRM_IOCTL_I915_CMDBUFFER"; - case DRM_IOCTL_I915_DESTROY_HEAP: - return "DRM_IOCTL_I915_DESTROY_HEAP"; - case DRM_IOCTL_I915_SET_VBLANK_PIPE: - return "DRM_IOCTL_I915_SET_VBLANK_PIPE"; - case DRM_IOCTL_I915_GET_VBLANK_PIPE: - return "DRM_IOCTL_I915_GET_VBLANK_PIPE"; - case DRM_IOCTL_I915_VBLANK_SWAP: - return "DRM_IOCTL_I915_VBLANK_SWAP"; - case DRM_IOCTL_I915_HWS_ADDR: - return "DRM_IOCTL_I915_HWS_ADDR"; - case DRM_IOCTL_I915_GEM_INIT: - return "DRM_IOCTL_I915_GEM_INIT"; - case DRM_IOCTL_I915_GEM_EXECBUFFER: - return "DRM_IOCTL_I915_GEM_EXECBUFFER"; - case DRM_IOCTL_I915_GEM_EXECBUFFER2_WR: - return "DRM_IOCTL_I915_GEM_EXECBUFFER2_WR"; - case DRM_IOCTL_I915_GEM_PIN: - return "DRM_IOCTL_I915_GEM_PIN"; - case DRM_IOCTL_I915_GEM_UNPIN: - return "DRM_IOCTL_I915_GEM_UNPIN"; - case DRM_IOCTL_I915_GEM_BUSY: - return "DRM_IOCTL_I915_GEM_BUSY"; - case DRM_IOCTL_I915_GEM_SET_CACHING: - return "DRM_IOCTL_I915_GEM_SET_CACHING"; - case DRM_IOCTL_I915_GEM_GET_CACHING: - return "DRM_IOCTL_I915_GEM_GET_CACHING"; - case DRM_IOCTL_I915_GEM_THROTTLE: - return "DRM_IOCTL_I915_GEM_THROTTLE"; - case DRM_IOCTL_I915_GEM_ENTERVT: - return "DRM_IOCTL_I915_GEM_ENTERVT"; - case DRM_IOCTL_I915_GEM_LEAVEVT: - return "DRM_IOCTL_I915_GEM_LEAVEVT"; - case DRM_IOCTL_I915_GEM_CREATE: - return "DRM_IOCTL_I915_GEM_CREATE"; - case DRM_IOCTL_I915_GEM_PREAD: - return "DRM_IOCTL_I915_GEM_PREAD"; - case DRM_IOCTL_I915_GEM_PWRITE: - return "DRM_IOCTL_I915_GEM_PWRITE"; - case DRM_IOCTL_I915_GEM_SET_DOMAIN: - return "DRM_IOCTL_I915_GEM_SET_DOMAIN"; - case DRM_IOCTL_I915_GEM_SW_FINISH: - return "DRM_IOCTL_I915_GEM_SW_FINISH"; - case DRM_IOCTL_I915_GEM_SET_TILING: - return "DRM_IOCTL_I915_GEM_SET_TILING"; - case DRM_IOCTL_I915_GEM_GET_TILING: - return "DRM_IOCTL_I915_GEM_GET_TILING"; - case DRM_IOCTL_I915_GEM_GET_APERTURE: - return "DRM_IOCTL_I915_GEM_GET_APERTURE"; - case DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID: - return "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID"; - case DRM_IOCTL_I915_GEM_MADVISE: - return "DRM_IOCTL_I915_GEM_MADVISE"; - case DRM_IOCTL_I915_OVERLAY_PUT_IMAGE: - return "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE"; - case DRM_IOCTL_I915_OVERLAY_ATTRS: - return "DRM_IOCTL_I915_OVERLAY_ATTRS"; - case DRM_IOCTL_I915_SET_SPRITE_COLORKEY: - return "DRM_IOCTL_I915_SET_SPRITE_COLORKEY"; - case DRM_IOCTL_I915_GET_SPRITE_COLORKEY: - return "DRM_IOCTL_I915_GET_SPRITE_COLORKEY"; - case DRM_IOCTL_I915_GEM_CONTEXT_CREATE: - return "DRM_IOCTL_I915_GEM_CONTEXT_CREATE"; - case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT: - return "DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT"; - case DRM_IOCTL_I915_GEM_CONTEXT_DESTROY: - return "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY"; - case DRM_IOCTL_I915_REG_READ: - return "DRM_IOCTL_I915_REG_READ"; - case DRM_IOCTL_I915_GET_RESET_STATS: - return "DRM_IOCTL_I915_GET_RESET_STATS"; - case DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM: - return "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM"; - case DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM: - return "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM"; - case DRM_IOCTL_I915_PERF_OPEN: - return "DRM_IOCTL_I915_PERF_OPEN"; - case DRM_IOCTL_I915_PERF_ADD_CONFIG: - return "DRM_IOCTL_I915_PERF_ADD_CONFIG"; - case DRM_IOCTL_I915_PERF_REMOVE_CONFIG: - return "DRM_IOCTL_I915_PERF_REMOVE_CONFIG"; - case DRM_IOCTL_I915_QUERY: - return "DRM_IOCTL_I915_QUERY"; - default: - return ioctlToStringImpl(request); - } -} - bool Drm::createVirtualMemoryAddressSpace(uint32_t vmCount) { for (auto i = 0u; i < vmCount; i++) { uint32_t id = i; diff --git a/shared/source/os_interface/linux/drm_neo.h b/shared/source/os_interface/linux/drm_neo.h index 5d717822c3..26975b636b 100644 --- a/shared/source/os_interface/linux/drm_neo.h +++ b/shared/source/os_interface/linux/drm_neo.h @@ -55,6 +55,13 @@ struct DeviceDescriptor { // NOLINT(clang-analyzer-optin.performance.Padding) extern const DeviceDescriptor deviceDescriptorTable[]; +namespace IoctlHelper { +std::string getIoctlParamString(int param); +std::string getIoctlParamStringRemaining(int param); +std::string getIoctlString(unsigned long request); +std::string getIoctlStringRemaining(unsigned long request); +} // namespace IoctlHelper + class Drm : public DriverModel { friend DeviceFactory; @@ -232,8 +239,6 @@ class Drm : public DriverModel { bool translateTopologyInfo(const drm_i915_query_topology_info *queryTopologyInfo, QueryTopologyData &data, TopologyMapping &mapping); std::string generateUUID(); std::string generateElfUUID(const void *data); - std::string ioctlToString(unsigned long request); - std::string ioctlToStringImpl(unsigned long request); std::string getSysFsPciPath(); std::unique_ptr query(uint32_t queryId, uint32_t queryItemFlags, int32_t &length); void printIoctlStatistics(); diff --git a/shared/source/os_interface/linux/drm_query.cpp b/shared/source/os_interface/linux/drm_query.cpp index 6a3d626c18..abdb3e323a 100644 --- a/shared/source/os_interface/linux/drm_query.cpp +++ b/shared/source/os_interface/linux/drm_query.cpp @@ -17,6 +17,22 @@ namespace NEO { +namespace IoctlHelper { +std::string getIoctlStringRemaining(unsigned long request) { + switch (request) { + default: + return std::to_string(request); + } +} + +std::string getIoctlParamStringRemaining(int param) { + switch (param) { + default: + return std::to_string(param); + } +} +} // namespace IoctlHelper + int Drm::getMaxGpuFrequency(HardwareInfo &hwInfo, int &maxGpuFrequency) { maxGpuFrequency = 0; std::string clockSysFsPath = getSysFsPciPath(); @@ -86,10 +102,6 @@ bool Drm::isVmBindAvailable() { void Drm::appendDrmContextFlags(drm_i915_gem_context_create_ext &gcc, bool isSpecialContextRequested) { } -std::string Drm::ioctlToStringImpl(unsigned long request) { - return std::to_string(request); -} - void Drm::setupCacheInfo(const HardwareInfo &hwInfo) { this->cacheInfo.reset(new CacheInfoImpl()); } diff --git a/shared/source/os_interface/linux/drm_query_dg1.cpp b/shared/source/os_interface/linux/drm_query_dg1.cpp index bd68cd942e..4dd9f27891 100644 --- a/shared/source/os_interface/linux/drm_query_dg1.cpp +++ b/shared/source/os_interface/linux/drm_query_dg1.cpp @@ -19,6 +19,22 @@ namespace NEO { class OsContext; +namespace IoctlHelper { +std::string getIoctlStringRemaining(unsigned long request) { + switch (request) { + default: + return std::to_string(request); + } +} + +std::string getIoctlParamStringRemaining(int param) { + switch (param) { + default: + return std::to_string(param); + } +} +} // namespace IoctlHelper + int Drm::getMaxGpuFrequency(HardwareInfo &hwInfo, int &maxGpuFrequency) { maxGpuFrequency = 0; std::string clockSysFsPath = getSysFsPciPath(); @@ -95,10 +111,6 @@ bool Drm::isVmBindAvailable() { void Drm::appendDrmContextFlags(drm_i915_gem_context_create_ext &gcc, bool isSpecialContextRequested) { } -std::string Drm::ioctlToStringImpl(unsigned long request) { - return std::to_string(request); -} - void Drm::setupCacheInfo(const HardwareInfo &hwInfo) { this->cacheInfo.reset(new CacheInfoImpl()); } diff --git a/shared/test/unit_test/os_interface/linux/drm_query_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_query_tests.cpp index 0f72698098..3cab58f1c5 100644 --- a/shared/test/unit_test/os_interface/linux/drm_query_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_query_tests.cpp @@ -123,3 +123,15 @@ HWTEST2_F(HwConfigTopologyQuery, WhenGettingTopologyFailsThenSetMaxValuesBasedOn EXPECT_EQ(static_cast(drm->storedEUVal), outHwInfo.gtSystemInfo.EUCount); EXPECT_EQ(static_cast(drm->storedSSVal), outHwInfo.gtSystemInfo.SubSliceCount); } + +TEST(DrmQueryTest, givenIoctlWhenParseToStringThenProperStringIsReturned) { + for (auto ioctlCodeString : ioctlCodeStringMap) { + EXPECT_STREQ(IoctlHelper::getIoctlString(ioctlCodeString.first).c_str(), ioctlCodeString.second); + } +} + +TEST(DrmQueryTest, givenIoctlParamWhenParseToStringThenProperStringIsReturned) { + for (auto ioctlParamCodeString : ioctlParamCodeStringMap) { + EXPECT_STREQ(IoctlHelper::getIoctlParamString(ioctlParamCodeString.first).c_str(), ioctlParamCodeString.second); + } +}