diff --git a/shared/source/os_interface/linux/CMakeLists.txt b/shared/source/os_interface/linux/CMakeLists.txt index 6c64f1d5a1..75925f7414 100644 --- a/shared/source/os_interface/linux/CMakeLists.txt +++ b/shared/source/os_interface/linux/CMakeLists.txt @@ -52,6 +52,8 @@ set(NEO_CORE_OS_INTERFACE_LINUX ${CMAKE_CURRENT_SOURCE_DIR}/ioctl_helper.cpp ${CMAKE_CURRENT_SOURCE_DIR}/ioctl_helper_prelim.cpp ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}ioctl_helper_getter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/ioctl_strings.h + ${CMAKE_CURRENT_SOURCE_DIR}/ioctl_strings_prelim.cpp ${CMAKE_CURRENT_SOURCE_DIR}/engine_info.h ${CMAKE_CURRENT_SOURCE_DIR}/engine_info.cpp ${CMAKE_CURRENT_SOURCE_DIR}/flags${BRANCH_DIR_SUFFIX}drm_query_flags.h @@ -113,9 +115,11 @@ if("${BRANCH_TYPE}" STREQUAL "") if(NOT NEO_ENABLE_i915_PRELIM_DETECTION) list(APPEND NEO_CORE_OS_INTERFACE_LINUX ${CMAKE_CURRENT_SOURCE_DIR}/ioctl_helper_getter_upstream.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/ioctl_strings_upstream.cpp ) list(REMOVE_ITEM NEO_CORE_OS_INTERFACE_LINUX ${CMAKE_CURRENT_SOURCE_DIR}/ioctl_helper_getter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/ioctl_strings_prelim.cpp ) endif() endif() diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 30bf602852..5e689c789a 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -24,6 +24,7 @@ #include "shared/source/os_interface/linux/drm_memory_operations_handler_bind.h" #include "shared/source/os_interface/linux/hw_device_id.h" #include "shared/source/os_interface/linux/ioctl_helper.h" +#include "shared/source/os_interface/linux/ioctl_strings.h" #include "shared/source/os_interface/linux/os_context_linux.h" #include "shared/source/os_interface/linux/os_inc.h" #include "shared/source/os_interface/linux/pci_path.h" @@ -41,6 +42,161 @@ namespace NEO { +namespace IoctlToStringHelper { +std::string getIoctlParamString(int param) { + switch (param) { + case I915_PARAM_CHIPSET_ID: + return "I915_PARAM_CHIPSET_ID"; + case I915_PARAM_REVISION: + return "I915_PARAM_REVISION"; + case I915_PARAM_HAS_EXEC_SOFTPIN: + return "I915_PARAM_HAS_EXEC_SOFTPIN"; + case I915_PARAM_HAS_POOLED_EU: + return "I915_PARAM_HAS_POOLED_EU"; + case I915_PARAM_HAS_SCHEDULER: + return "I915_PARAM_HAS_SCHEDULER"; + case I915_PARAM_EU_TOTAL: + return "I915_PARAM_EU_TOTAL"; + case I915_PARAM_SUBSLICE_TOTAL: + return "I915_PARAM_SUBSLICE_TOTAL"; + case I915_PARAM_MIN_EU_IN_POOL: + return "I915_PARAM_MIN_EU_IN_POOL"; + case I915_PARAM_CS_TIMESTAMP_FREQUENCY: + return "I915_PARAM_CS_TIMESTAMP_FREQUENCY"; + default: + return getIoctlParamStringRemaining(param); + } +} + +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"; + case DRM_IOCTL_PRIME_FD_TO_HANDLE: + return "DRM_IOCTL_PRIME_FD_TO_HANDLE"; + case DRM_IOCTL_PRIME_HANDLE_TO_FD: + return "DRM_IOCTL_PRIME_HANDLE_TO_FD"; + default: + return getIoctlStringRemaining(request); + } +} + +} // namespace IoctlToStringHelper + Drm::Drm(std::unique_ptr &&hwDeviceIdIn, RootDeviceEnvironment &rootDeviceEnvironment) : DriverModel(DriverModelType::DRM), hwDeviceId(std::move(hwDeviceIdIn)), rootDeviceEnvironment(rootDeviceEnvironment) { @@ -60,7 +216,7 @@ int Drm::ioctl(unsigned long request, void *arg) { auto printIoctl = DebugManager.flags.PrintIoctlEntries.get(); if (printIoctl) { - printf("IOCTL %s called\n", ioctlHelper->getIoctlString(request).c_str()); + printf("IOCTL %s called\n", IoctlToStringHelper::getIoctlString(request).c_str()); } if (measureTime) { @@ -91,10 +247,10 @@ int Drm::ioctl(unsigned long request, void *arg) { if (printIoctl) { if (ret == 0) { printf("IOCTL %s returns %d\n", - ioctlHelper->getIoctlString(request).c_str(), ret); + IoctlToStringHelper::getIoctlString(request).c_str(), ret); } else { printf("IOCTL %s returns %d, errno %d(%s)\n", - ioctlHelper->getIoctlString(request).c_str(), ret, returnedErrno, strerror(returnedErrno)); + IoctlToStringHelper::getIoctlString(request).c_str(), ret, returnedErrno, strerror(returnedErrno)); } } @@ -111,7 +267,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).c_str(), + IoctlToStringHelper::getIoctlParamString(param).c_str(), *getParam.value, retVal); } @@ -542,7 +698,7 @@ void Drm::printIoctlStatistics() { printf("%41s %15s %10s %20s %20s %20s", "Request", "Total time(ns)", "Count", "Avg time per ioctl", "Min", "Max\n"); for (const auto &ioctlData : this->ioctlStatistics) { printf("%41s %15llu %10lu %20f %20lld %20lld\n", - ioctlHelper->getIoctlString(ioctlData.first).c_str(), + IoctlToStringHelper::getIoctlString(ioctlData.first).c_str(), ioctlData.second.totalTime, static_cast(ioctlData.second.count), ioctlData.second.totalTime / static_cast(ioctlData.second.count), diff --git a/shared/source/os_interface/linux/ioctl_helper.cpp b/shared/source/os_interface/linux/ioctl_helper.cpp index 1f53d98cbc..dcc2acd7a0 100644 --- a/shared/source/os_interface/linux/ioctl_helper.cpp +++ b/shared/source/os_interface/linux/ioctl_helper.cpp @@ -15,155 +15,4 @@ uint32_t IoctlHelper::ioctl(Drm *drm, unsigned long request, void *arg) { return drm->ioctl(request, arg); } -std::string IoctlHelper::getIoctlParamString(int param) { - switch (param) { - case I915_PARAM_CHIPSET_ID: - return "I915_PARAM_CHIPSET_ID"; - case I915_PARAM_REVISION: - return "I915_PARAM_REVISION"; - case I915_PARAM_HAS_EXEC_SOFTPIN: - return "I915_PARAM_HAS_EXEC_SOFTPIN"; - case I915_PARAM_HAS_POOLED_EU: - return "I915_PARAM_HAS_POOLED_EU"; - case I915_PARAM_HAS_SCHEDULER: - return "I915_PARAM_HAS_SCHEDULER"; - case I915_PARAM_EU_TOTAL: - return "I915_PARAM_EU_TOTAL"; - case I915_PARAM_SUBSLICE_TOTAL: - return "I915_PARAM_SUBSLICE_TOTAL"; - case I915_PARAM_MIN_EU_IN_POOL: - return "I915_PARAM_MIN_EU_IN_POOL"; - case I915_PARAM_CS_TIMESTAMP_FREQUENCY: - return "I915_PARAM_CS_TIMESTAMP_FREQUENCY"; - default: - return std::to_string(param); - } -} - -std::string IoctlHelper::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"; - case DRM_IOCTL_PRIME_FD_TO_HANDLE: - return "DRM_IOCTL_PRIME_FD_TO_HANDLE"; - case DRM_IOCTL_PRIME_HANDLE_TO_FD: - return "DRM_IOCTL_PRIME_HANDLE_TO_FD"; - default: - return std::to_string(request); - } -} } // namespace NEO diff --git a/shared/source/os_interface/linux/ioctl_helper.h b/shared/source/os_interface/linux/ioctl_helper.h index 294870b002..1c778549ef 100644 --- a/shared/source/os_interface/linux/ioctl_helper.h +++ b/shared/source/os_interface/linux/ioctl_helper.h @@ -73,8 +73,6 @@ class IoctlHelper { virtual ~IoctlHelper() {} static IoctlHelper *get(const PRODUCT_FAMILY productFamily, const std::string &prelimVersion); static uint32_t ioctl(Drm *drm, unsigned long request, void *arg); - virtual std::string getIoctlString(unsigned long request); - virtual std::string getIoctlParamString(int param); virtual IoctlHelper *clone() = 0; virtual bool isVmBindAvailable(Drm *drm) = 0; @@ -174,8 +172,6 @@ class IoctlHelperImpl : public IoctlHelperUpstream { class IoctlHelperPrelim20 : public IoctlHelper { public: - std::string getIoctlString(unsigned long request) override; - std::string getIoctlParamString(int param) override; IoctlHelper *clone() override; bool isVmBindAvailable(Drm *drm) override; diff --git a/shared/source/os_interface/linux/ioctl_helper_prelim.cpp b/shared/source/os_interface/linux/ioctl_helper_prelim.cpp index 8e8cea2c1c..ba0eaa114c 100644 --- a/shared/source/os_interface/linux/ioctl_helper_prelim.cpp +++ b/shared/source/os_interface/linux/ioctl_helper_prelim.cpp @@ -22,54 +22,6 @@ namespace NEO { -std::string IoctlHelperPrelim20::getIoctlString(unsigned long request) { - switch (request) { - case PRELIM_DRM_IOCTL_I915_GEM_VM_BIND: - return "PRELIM_DRM_IOCTL_I915_GEM_VM_BIND"; - case PRELIM_DRM_IOCTL_I915_GEM_VM_UNBIND: - return "PRELIM_DRM_IOCTL_I915_GEM_VM_UNBIND"; - case PRELIM_DRM_IOCTL_I915_GEM_WAIT_USER_FENCE: - return "PRELIM_DRM_IOCTL_I915_GEM_WAIT_USER_FENCE"; - case PRELIM_DRM_IOCTL_I915_GEM_CREATE_EXT: - return "PRELIM_DRM_IOCTL_I915_GEM_CREATE_EXT"; - case PRELIM_DRM_IOCTL_I915_GEM_VM_ADVISE: - return "PRELIM_DRM_IOCTL_I915_GEM_VM_ADVISE"; - case PRELIM_DRM_IOCTL_I915_GEM_VM_PREFETCH: - return "PRELIM_DRM_IOCTL_I915_GEM_VM_PREFETCH"; - case PRELIM_DRM_IOCTL_I915_UUID_REGISTER: - return "PRELIM_DRM_IOCTL_I915_UUID_REGISTER"; - case PRELIM_DRM_IOCTL_I915_UUID_UNREGISTER: - return "PRELIM_DRM_IOCTL_I915_UUID_UNREGISTER"; - case PRELIM_DRM_IOCTL_I915_DEBUGGER_OPEN: - return "PRELIM_DRM_IOCTL_I915_DEBUGGER_OPEN"; - case PRELIM_DRM_IOCTL_I915_GEM_CLOS_RESERVE: - return "PRELIM_DRM_IOCTL_I915_GEM_CLOS_RESERVE"; - case PRELIM_DRM_IOCTL_I915_GEM_CLOS_FREE: - return "PRELIM_DRM_IOCTL_I915_GEM_CLOS_FREE"; - case PRELIM_DRM_IOCTL_I915_GEM_CACHE_RESERVE: - return "PRELIM_DRM_IOCTL_I915_GEM_CACHE_RESERVE"; - case DRM_IOCTL_I915_GEM_MMAP_GTT: - return "DRM_IOCTL_I915_GEM_MMAP_GTT"; - case DRM_IOCTL_I915_GEM_MMAP_OFFSET: - return "DRM_IOCTL_I915_GEM_MMAP_OFFSET"; - case DRM_IOCTL_I915_GEM_VM_CREATE: - return "DRM_IOCTL_I915_GEM_VM_CREATE"; - case DRM_IOCTL_I915_GEM_VM_DESTROY: - return "DRM_IOCTL_I915_GEM_VM_DESTROY"; - default: - return IoctlHelper::getIoctlString(request); - } -} - -std::string IoctlHelperPrelim20::getIoctlParamString(int param) { - switch (param) { - case PRELIM_I915_PARAM_HAS_VM_BIND: - return "PRELIM_I915_PARAM_HAS_VM_BIND"; - default: - return IoctlHelper::getIoctlParamString(param); - } -} - IoctlHelper *IoctlHelperPrelim20::clone() { return new IoctlHelperPrelim20{}; } diff --git a/shared/source/os_interface/linux/ioctl_strings.h b/shared/source/os_interface/linux/ioctl_strings.h new file mode 100644 index 0000000000..16b58e71ca --- /dev/null +++ b/shared/source/os_interface/linux/ioctl_strings.h @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2022 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include + +namespace NEO { +namespace IoctlToStringHelper { +std::string getIoctlParamString(int param); +std::string getIoctlParamStringRemaining(int param); +std::string getIoctlString(unsigned long request); +std::string getIoctlStringRemaining(unsigned long request); +} // namespace IoctlToStringHelper +} // namespace NEO diff --git a/shared/source/os_interface/linux/ioctl_strings_prelim.cpp b/shared/source/os_interface/linux/ioctl_strings_prelim.cpp new file mode 100644 index 0000000000..3340a00b45 --- /dev/null +++ b/shared/source/os_interface/linux/ioctl_strings_prelim.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2022 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "third_party/uapi/prelim/drm/i915_drm.h" + +#include + +namespace NEO { + +namespace IoctlToStringHelper { +std::string getIoctlStringRemaining(unsigned long request) { + switch (request) { + case PRELIM_DRM_IOCTL_I915_GEM_VM_BIND: + return "PRELIM_DRM_IOCTL_I915_GEM_VM_BIND"; + case PRELIM_DRM_IOCTL_I915_GEM_VM_UNBIND: + return "PRELIM_DRM_IOCTL_I915_GEM_VM_UNBIND"; + case PRELIM_DRM_IOCTL_I915_GEM_WAIT_USER_FENCE: + return "PRELIM_DRM_IOCTL_I915_GEM_WAIT_USER_FENCE"; + case PRELIM_DRM_IOCTL_I915_GEM_CREATE_EXT: + return "PRELIM_DRM_IOCTL_I915_GEM_CREATE_EXT"; + case PRELIM_DRM_IOCTL_I915_GEM_VM_ADVISE: + return "PRELIM_DRM_IOCTL_I915_GEM_VM_ADVISE"; + case PRELIM_DRM_IOCTL_I915_GEM_VM_PREFETCH: + return "PRELIM_DRM_IOCTL_I915_GEM_VM_PREFETCH"; + case PRELIM_DRM_IOCTL_I915_UUID_REGISTER: + return "PRELIM_DRM_IOCTL_I915_UUID_REGISTER"; + case PRELIM_DRM_IOCTL_I915_UUID_UNREGISTER: + return "PRELIM_DRM_IOCTL_I915_UUID_UNREGISTER"; + case PRELIM_DRM_IOCTL_I915_DEBUGGER_OPEN: + return "PRELIM_DRM_IOCTL_I915_DEBUGGER_OPEN"; + case PRELIM_DRM_IOCTL_I915_GEM_CLOS_RESERVE: + return "PRELIM_DRM_IOCTL_I915_GEM_CLOS_RESERVE"; + case PRELIM_DRM_IOCTL_I915_GEM_CLOS_FREE: + return "PRELIM_DRM_IOCTL_I915_GEM_CLOS_FREE"; + case PRELIM_DRM_IOCTL_I915_GEM_CACHE_RESERVE: + return "PRELIM_DRM_IOCTL_I915_GEM_CACHE_RESERVE"; + case DRM_IOCTL_I915_GEM_MMAP_GTT: + return "DRM_IOCTL_I915_GEM_MMAP_GTT"; + case DRM_IOCTL_I915_GEM_MMAP_OFFSET: + return "DRM_IOCTL_I915_GEM_MMAP_OFFSET"; + case DRM_IOCTL_I915_GEM_VM_CREATE: + return "DRM_IOCTL_I915_GEM_VM_CREATE"; + case DRM_IOCTL_I915_GEM_VM_DESTROY: + return "DRM_IOCTL_I915_GEM_VM_DESTROY"; + default: + return std::to_string(request); + } +} + +std::string getIoctlParamStringRemaining(int param) { + switch (param) { + case PRELIM_I915_PARAM_HAS_VM_BIND: + return "PRELIM_I915_PARAM_HAS_VM_BIND"; + default: + return std::to_string(param); + } +} +} // namespace IoctlToStringHelper + +} // namespace NEO diff --git a/shared/source/os_interface/linux/ioctl_strings_upstream.cpp b/shared/source/os_interface/linux/ioctl_strings_upstream.cpp new file mode 100644 index 0000000000..db3dc167e2 --- /dev/null +++ b/shared/source/os_interface/linux/ioctl_strings_upstream.cpp @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2022 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include + +namespace NEO { + +namespace IoctlToStringHelper { +std::string getIoctlStringRemaining(unsigned long request) { + return std::to_string(request); +} + +std::string getIoctlParamStringRemaining(int param) { + return std::to_string(param); +} +} // namespace IoctlToStringHelper + +} // namespace NEO diff --git a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_prelim.cpp b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_prelim.cpp index 39082a0814..d6dc7306fd 100644 --- a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_prelim.cpp +++ b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_prelim.cpp @@ -6,6 +6,7 @@ */ #include "shared/source/os_interface/linux/ioctl_helper.h" +#include "shared/source/os_interface/linux/ioctl_strings.h" #include "shared/test/common/test_macros/test.h" #include "third_party/uapi/prelim/drm/i915_drm.h" @@ -23,32 +24,32 @@ struct IoctlPrelimHelperTests : ::testing::Test { TEST_F(IoctlPrelimHelperTests, givenIoctlWhenParseToStringThenProperStringIsReturned) { for (auto &ioctlCodeString : ioctlCodeStringMap) { - EXPECT_STREQ(ioctlHelper.getIoctlString(ioctlCodeString.first).c_str(), ioctlCodeString.second); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(ioctlCodeString.first).c_str(), ioctlCodeString.second); } - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_VM_BIND).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_VM_BIND"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_VM_UNBIND).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_VM_UNBIND"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_WAIT_USER_FENCE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_WAIT_USER_FENCE"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_CREATE_EXT).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_CREATE_EXT"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_VM_ADVISE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_VM_ADVISE"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_VM_PREFETCH).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_VM_PREFETCH"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_UUID_REGISTER).c_str(), "PRELIM_DRM_IOCTL_I915_UUID_REGISTER"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_UUID_UNREGISTER).c_str(), "PRELIM_DRM_IOCTL_I915_UUID_UNREGISTER"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_DEBUGGER_OPEN).c_str(), "PRELIM_DRM_IOCTL_I915_DEBUGGER_OPEN"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_CLOS_RESERVE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_CLOS_RESERVE"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_CLOS_FREE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_CLOS_FREE"); - EXPECT_STREQ(ioctlHelper.getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_CACHE_RESERVE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_CACHE_RESERVE"); - EXPECT_STREQ(ioctlHelper.getIoctlString(DRM_IOCTL_I915_GEM_MMAP_GTT).c_str(), "DRM_IOCTL_I915_GEM_MMAP_GTT"); - EXPECT_STREQ(ioctlHelper.getIoctlString(DRM_IOCTL_I915_GEM_MMAP_OFFSET).c_str(), "DRM_IOCTL_I915_GEM_MMAP_OFFSET"); - EXPECT_STREQ(ioctlHelper.getIoctlString(DRM_IOCTL_I915_GEM_VM_CREATE).c_str(), "DRM_IOCTL_I915_GEM_VM_CREATE"); - EXPECT_STREQ(ioctlHelper.getIoctlString(DRM_IOCTL_I915_GEM_VM_DESTROY).c_str(), "DRM_IOCTL_I915_GEM_VM_DESTROY"); - EXPECT_STREQ(ioctlHelper.getIoctlString(DRM_IOCTL_I915_GEM_VM_DESTROY).c_str(), "DRM_IOCTL_I915_GEM_VM_DESTROY"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_VM_BIND).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_VM_BIND"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_VM_UNBIND).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_VM_UNBIND"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_WAIT_USER_FENCE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_WAIT_USER_FENCE"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_CREATE_EXT).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_CREATE_EXT"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_VM_ADVISE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_VM_ADVISE"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_VM_PREFETCH).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_VM_PREFETCH"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_UUID_REGISTER).c_str(), "PRELIM_DRM_IOCTL_I915_UUID_REGISTER"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_UUID_UNREGISTER).c_str(), "PRELIM_DRM_IOCTL_I915_UUID_UNREGISTER"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_DEBUGGER_OPEN).c_str(), "PRELIM_DRM_IOCTL_I915_DEBUGGER_OPEN"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_CLOS_RESERVE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_CLOS_RESERVE"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_CLOS_FREE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_CLOS_FREE"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(PRELIM_DRM_IOCTL_I915_GEM_CACHE_RESERVE).c_str(), "PRELIM_DRM_IOCTL_I915_GEM_CACHE_RESERVE"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(DRM_IOCTL_I915_GEM_MMAP_GTT).c_str(), "DRM_IOCTL_I915_GEM_MMAP_GTT"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(DRM_IOCTL_I915_GEM_MMAP_OFFSET).c_str(), "DRM_IOCTL_I915_GEM_MMAP_OFFSET"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(DRM_IOCTL_I915_GEM_VM_CREATE).c_str(), "DRM_IOCTL_I915_GEM_VM_CREATE"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(DRM_IOCTL_I915_GEM_VM_DESTROY).c_str(), "DRM_IOCTL_I915_GEM_VM_DESTROY"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(DRM_IOCTL_I915_GEM_VM_DESTROY).c_str(), "DRM_IOCTL_I915_GEM_VM_DESTROY"); } TEST_F(IoctlPrelimHelperTests, givenIoctlParamWhenParseToStringThenProperStringIsReturned) { for (auto &ioctlParamCodeString : ioctlParamCodeStringMap) { - EXPECT_STREQ(ioctlHelper.getIoctlParamString(ioctlParamCodeString.first).c_str(), ioctlParamCodeString.second); + EXPECT_STREQ(IoctlToStringHelper::getIoctlParamString(ioctlParamCodeString.first).c_str(), ioctlParamCodeString.second); } - EXPECT_STREQ(ioctlHelper.getIoctlParamString(PRELIM_I915_PARAM_HAS_VM_BIND).c_str(), "PRELIM_I915_PARAM_HAS_VM_BIND"); + EXPECT_STREQ(IoctlToStringHelper::getIoctlParamString(PRELIM_I915_PARAM_HAS_VM_BIND).c_str(), "PRELIM_I915_PARAM_HAS_VM_BIND"); } TEST_F(IoctlPrelimHelperTests, givenPrelimsWhenTranslateToMemoryRegionsThenReturnSameData) { diff --git a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp index d80775a41b..7abcc98660 100644 --- a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp +++ b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp @@ -6,6 +6,7 @@ */ #include "shared/source/os_interface/linux/ioctl_helper.h" +#include "shared/source/os_interface/linux/ioctl_strings.h" #include "shared/test/common/helpers/debug_manager_state_restore.h" #include "shared/test/common/helpers/default_hw_info.h" #include "shared/test/common/mocks/mock_execution_environment.h" @@ -24,16 +25,14 @@ TEST(IoctlHelperUpstreamTest, whenGettingVmBindAvailabilityThenFalseIsReturned) } TEST(IoctlHelperUpstreamTest, givenIoctlWhenParseToStringThenProperStringIsReturned) { - IoctlHelperUpstream ioctlHelper{}; for (auto ioctlCodeString : ioctlCodeStringMap) { - EXPECT_STREQ(ioctlHelper.getIoctlString(ioctlCodeString.first).c_str(), ioctlCodeString.second); + EXPECT_STREQ(IoctlToStringHelper::getIoctlString(ioctlCodeString.first).c_str(), ioctlCodeString.second); } } TEST(IoctlHelperUpstreamTest, givenIoctlParamWhenParseToStringThenProperStringIsReturned) { - IoctlHelperUpstream ioctlHelper{}; for (auto ioctlParamCodeString : ioctlParamCodeStringMap) { - EXPECT_STREQ(ioctlHelper.getIoctlParamString(ioctlParamCodeString.first).c_str(), ioctlParamCodeString.second); + EXPECT_STREQ(IoctlToStringHelper::getIoctlParamString(ioctlParamCodeString.first).c_str(), ioctlParamCodeString.second); } }