diff --git a/opencl/test/unit_test/linux/mock_os_layer.cpp b/opencl/test/unit_test/linux/mock_os_layer.cpp index 29d3fbbe1f..f300940c1a 100644 --- a/opencl/test/unit_test/linux/mock_os_layer.cpp +++ b/opencl/test/unit_test/linux/mock_os_layer.cpp @@ -216,10 +216,10 @@ int drmGetContextParam(NEO::GemContextParam *param) { return ret; } -int drmContextCreate(drm_i915_gem_context_create_ext *create) { +int drmContextCreate(NEO::GemContextCreateExt *create) { assert(create); - create->ctx_id = 1; + create->contextId = 1; return failOnContextCreate; } @@ -302,7 +302,7 @@ int ioctl(int fd, unsigned long int request, ...) throw() { res = drmGetContextParam(va_arg(vl, NEO::GemContextParam *)); break; case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT: - res = drmContextCreate(va_arg(vl, drm_i915_gem_context_create_ext *)); + res = drmContextCreate(va_arg(vl, NEO::GemContextCreateExt *)); break; case DRM_IOCTL_I915_GEM_CONTEXT_DESTROY: res = drmContextDestroy(va_arg(vl, drm_i915_gem_context_destroy *)); diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 86ccb7db5f..4c7576b973 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -432,7 +432,7 @@ void Drm::setUnrecoverableContext(uint32_t drmContextId) { } uint32_t Drm::createDrmContext(uint32_t drmVmId, bool isDirectSubmissionRequested, bool isCooperativeContextRequested) { - drm_i915_gem_context_create_ext gcc = {}; + GemContextCreateExt gcc{}; if (DebugManager.flags.DirectSubmissionDrmContext.get() != -1) { isDirectSubmissionRequested = DebugManager.flags.DirectSubmissionDrmContext.get(); @@ -464,7 +464,7 @@ uint32_t Drm::createDrmContext(uint32_t drmVmId, bool isDirectSubmissionRequeste auto ioctlResult = ioctl(DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &gcc); UNRECOVERABLE_IF(ioctlResult != 0); - return gcc.ctx_id; + return gcc.contextId; } void Drm::destroyDrmContext(uint32_t drmContextId) { diff --git a/shared/source/os_interface/linux/drm_wrappers.cpp b/shared/source/os_interface/linux/drm_wrappers.cpp index 3602b09f0f..7440ca2b32 100644 --- a/shared/source/os_interface/linux/drm_wrappers.cpp +++ b/shared/source/os_interface/linux/drm_wrappers.cpp @@ -114,4 +114,9 @@ static_assert(sizeof(GemContextCreateExtSetParam) == sizeof(drm_i915_gem_context static_assert(offsetof(GemContextCreateExtSetParam, base) == offsetof(drm_i915_gem_context_create_ext_setparam, base)); static_assert(offsetof(GemContextCreateExtSetParam, param) == offsetof(drm_i915_gem_context_create_ext_setparam, param)); +static_assert(sizeof(GemContextCreateExt) == sizeof(drm_i915_gem_context_create_ext)); +static_assert(offsetof(GemContextCreateExt, contextId) == offsetof(drm_i915_gem_context_create_ext, ctx_id)); +static_assert(offsetof(GemContextCreateExt, flags) == offsetof(drm_i915_gem_context_create_ext, flags)); +static_assert(offsetof(GemContextCreateExt, extensions) == offsetof(drm_i915_gem_context_create_ext, extensions)); + } // namespace NEO diff --git a/shared/source/os_interface/linux/drm_wrappers.h b/shared/source/os_interface/linux/drm_wrappers.h index e58e89a058..d8f88f86a0 100644 --- a/shared/source/os_interface/linux/drm_wrappers.h +++ b/shared/source/os_interface/linux/drm_wrappers.h @@ -130,4 +130,10 @@ struct GemContextCreateExtSetParam { GemContextParam param; }; +struct GemContextCreateExt { + uint32_t contextId; + uint32_t flags; + uint64_t extensions; +}; + } // namespace NEO diff --git a/shared/source/os_interface/linux/ioctl_helper.h b/shared/source/os_interface/linux/ioctl_helper.h index f11e9cd2dc..837eacb3db 100644 --- a/shared/source/os_interface/linux/ioctl_helper.h +++ b/shared/source/os_interface/linux/ioctl_helper.h @@ -18,8 +18,6 @@ #include #include -struct drm_i915_gem_context_create_ext; - namespace NEO { class Drm; class IoctlHelper; @@ -99,8 +97,8 @@ class IoctlHelper { virtual std::optional getHasPageFaultParamId() = 0; virtual std::unique_ptr createVmControlExtRegion(const std::optional ®ionInstanceClass) = 0; virtual uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) = 0; - virtual uint32_t createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) = 0; - virtual uint32_t createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) = 0; + virtual uint32_t createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) = 0; + virtual uint32_t createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) = 0; virtual void fillVmBindExtSetPat(VmBindExtSetPatT &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) = 0; virtual void fillVmBindExtUserFence(VmBindExtUserFenceT &vmBindExtUserFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) = 0; virtual std::optional getCopyClassSaturatePCIECapability() = 0; @@ -156,8 +154,8 @@ class IoctlHelperUpstream : public IoctlHelper { std::optional getHasPageFaultParamId() override; std::unique_ptr createVmControlExtRegion(const std::optional ®ionInstanceClass) override; uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) override; - uint32_t createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) override; - uint32_t createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) override; + uint32_t createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) override; + uint32_t createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) override; void fillVmBindExtSetPat(VmBindExtSetPatT &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) override; void fillVmBindExtUserFence(VmBindExtUserFenceT &vmBindExtUserFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) override; std::optional getCopyClassSaturatePCIECapability() override; @@ -220,8 +218,8 @@ class IoctlHelperPrelim20 : public IoctlHelper { std::optional getHasPageFaultParamId() override; std::unique_ptr createVmControlExtRegion(const std::optional ®ionInstanceClass) override; uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) override; - uint32_t createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) override; - uint32_t createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) override; + uint32_t createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) override; + uint32_t createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) override; void fillVmBindExtSetPat(VmBindExtSetPatT &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) override; void fillVmBindExtUserFence(VmBindExtUserFenceT &vmBindExtUserFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) override; std::optional getCopyClassSaturatePCIECapability() override; diff --git a/shared/source/os_interface/linux/ioctl_helper_prelim.cpp b/shared/source/os_interface/linux/ioctl_helper_prelim.cpp index f1d37ea27e..222c080fbd 100644 --- a/shared/source/os_interface/linux/ioctl_helper_prelim.cpp +++ b/shared/source/os_interface/linux/ioctl_helper_prelim.cpp @@ -393,17 +393,17 @@ uint32_t IoctlHelperPrelim20::getFlagsForVmCreate(bool disableScratch, bool enab return flags; } -uint32_t gemCreateContextExt(Drm *drm, drm_i915_gem_context_create_ext &gcc, GemContextCreateExtSetParam &extSetparam) { +uint32_t gemCreateContextExt(Drm *drm, GemContextCreateExt &gcc, GemContextCreateExtSetParam &extSetparam) { gcc.flags |= I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS; extSetparam.base.nextExtension = gcc.extensions; gcc.extensions = reinterpret_cast(&extSetparam); auto ioctlResult = IoctlHelper::ioctl(drm, DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &gcc); UNRECOVERABLE_IF(ioctlResult != 0); - return gcc.ctx_id; + return gcc.contextId; } -uint32_t gemCreateContextAcc(Drm *drm, drm_i915_gem_context_create_ext &gcc, uint16_t trigger, uint8_t granularity) { +uint32_t gemCreateContextAcc(Drm *drm, GemContextCreateExt &gcc, uint16_t trigger, uint8_t granularity) { prelim_drm_i915_gem_context_param_acc paramAcc = {}; paramAcc.trigger = trigger; paramAcc.notify = 1; @@ -424,7 +424,7 @@ uint32_t gemCreateContextAcc(Drm *drm, drm_i915_gem_context_create_ext &gcc, uin return gemCreateContextExt(drm, gcc, extSetparam); } -uint32_t IoctlHelperPrelim20::createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) { +uint32_t IoctlHelperPrelim20::createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) { uint16_t trigger = 0; if (DebugManager.flags.AccessCountersTrigger.get() != -1) { trigger = static_cast(DebugManager.flags.AccessCountersTrigger.get()); @@ -436,7 +436,7 @@ uint32_t IoctlHelperPrelim20::createContextWithAccessCounters(Drm *drm, drm_i915 return gemCreateContextAcc(drm, gcc, trigger, granularity); } -uint32_t IoctlHelperPrelim20::createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) { +uint32_t IoctlHelperPrelim20::createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) { GemContextCreateExtSetParam extSetparam{}; extSetparam.base.name = I915_CONTEXT_CREATE_EXT_SETPARAM; extSetparam.param.param = PRELIM_I915_CONTEXT_PARAM_RUNALONE; diff --git a/shared/source/os_interface/linux/ioctl_helper_upstream.cpp b/shared/source/os_interface/linux/ioctl_helper_upstream.cpp index 87990127e8..6e62a8e71d 100644 --- a/shared/source/os_interface/linux/ioctl_helper_upstream.cpp +++ b/shared/source/os_interface/linux/ioctl_helper_upstream.cpp @@ -188,11 +188,11 @@ uint32_t IoctlHelperUpstream::getFlagsForVmCreate(bool disableScratch, bool enab return 0u; } -uint32_t IoctlHelperUpstream::createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) { +uint32_t IoctlHelperUpstream::createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) { return EINVAL; } -uint32_t IoctlHelperUpstream::createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) { +uint32_t IoctlHelperUpstream::createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) { return EINVAL; } diff --git a/shared/test/common/libult/linux/drm_mock.cpp b/shared/test/common/libult/linux/drm_mock.cpp index 22f2756c87..aee63d242c 100644 --- a/shared/test/common/libult/linux/drm_mock.cpp +++ b/shared/test/common/libult/linux/drm_mock.cpp @@ -76,9 +76,8 @@ int DrmMock::ioctl(unsigned long request, void *arg) { if ((request == DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT) && (arg != nullptr)) { ioctlCount.contextCreate++; - auto create = static_cast(arg); - auto contextCreate = static_cast(arg); - contextCreate->ctx_id = this->storedDrmContextId; + auto create = static_cast(arg); + create->contextId = this->storedDrmContextId; this->receivedContextCreateFlags = create->flags; if (create->extensions == 0) { return this->storedRetVal; diff --git a/shared/test/common/libult/linux/drm_mock_prelim_context.cpp b/shared/test/common/libult/linux/drm_mock_prelim_context.cpp index cf844f93b8..fc3d339bdd 100644 --- a/shared/test/common/libult/linux/drm_mock_prelim_context.cpp +++ b/shared/test/common/libult/linux/drm_mock_prelim_context.cpp @@ -58,7 +58,7 @@ int DrmMockPrelimContext::handlePrelimRequest(unsigned long request, void *arg) } } break; case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT: { - auto create = static_cast(arg); + auto create = static_cast(arg); auto setParam = reinterpret_cast(create->extensions); if (setParam->param.param == PRELIM_I915_CONTEXT_PARAM_ACC) { const auto paramAcc = reinterpret_cast(setParam->param.value); diff --git a/shared/test/common/os_interface/linux/device_command_stream_fixture.cpp b/shared/test/common/os_interface/linux/device_command_stream_fixture.cpp index ade1cd45ac..3c5e9f8b22 100644 --- a/shared/test/common/os_interface/linux/device_command_stream_fixture.cpp +++ b/shared/test/common/os_interface/linux/device_command_stream_fixture.cpp @@ -171,8 +171,8 @@ int DrmMockCustom::ioctl(unsigned long request, void *arg) { } break; case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT: { - auto contextCreateParam = reinterpret_cast(arg); - contextCreateParam->ctx_id = ++ioctl_cnt.contextCreate; + auto contextCreateParam = static_cast(arg); + contextCreateParam->contextId = ++ioctl_cnt.contextCreate; } break; case DRM_IOCTL_I915_GEM_CONTEXT_DESTROY: { ioctl_cnt.contextDestroy++; diff --git a/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp index 765f26ae3a..a9eba40f2b 100644 --- a/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp @@ -134,7 +134,7 @@ TEST_F(IoctlHelperPrelimFixture, givenPrelimsWhenCreateGemExtWithDebugFlagThenPr } TEST_F(IoctlHelperPrelimFixture, givenPrelimsWhenCallIoctlThenProperIoctlRegistered) { - drm_i915_gem_context_create_ext arg{}; + GemContextCreateExt arg{}; auto ret = IoctlHelper::ioctl(drm.get(), DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &arg); EXPECT_EQ(0u, ret); EXPECT_EQ(1u, drm->ioctlCallsCount); @@ -398,7 +398,7 @@ TEST_F(IoctlHelperPrelimFixture, givenIoctlFailureWhenCreateContextWithAccessCou drm->ioctlRetVal = EINVAL; auto ioctlHelper = drm->getIoctlHelper(); - drm_i915_gem_context_create_ext gcc{}; + GemContextCreateExt gcc{}; EXPECT_THROW(ioctlHelper->createContextWithAccessCounters(drm.get(), gcc), std::runtime_error); EXPECT_EQ(1u, drm->ioctlCallsCount); } @@ -407,7 +407,7 @@ TEST_F(IoctlHelperPrelimFixture, givenIoctlSuccessWhenCreateContextWithAccessCou drm->ioctlRetVal = 0; auto ioctlHelper = drm->getIoctlHelper(); - drm_i915_gem_context_create_ext gcc{}; + GemContextCreateExt gcc{}; EXPECT_EQ(0u, ioctlHelper->createContextWithAccessCounters(drm.get(), gcc)); EXPECT_EQ(1u, drm->ioctlCallsCount); } @@ -416,7 +416,7 @@ TEST_F(IoctlHelperPrelimFixture, givenIoctlFailureWhenCreateCooperativeContexIsC drm->ioctlRetVal = EINVAL; auto ioctlHelper = drm->getIoctlHelper(); - drm_i915_gem_context_create_ext gcc{}; + GemContextCreateExt gcc{}; EXPECT_THROW(ioctlHelper->createCooperativeContext(drm.get(), gcc), std::runtime_error); EXPECT_EQ(1u, drm->ioctlCallsCount); } @@ -425,7 +425,7 @@ TEST_F(IoctlHelperPrelimFixture, givenIoctlSuccessWhenCreateCooperativeContexIsC drm->ioctlRetVal = 0u; auto ioctlHelper = drm->getIoctlHelper(); - drm_i915_gem_context_create_ext gcc{}; + GemContextCreateExt gcc{}; EXPECT_EQ(0u, ioctlHelper->createCooperativeContext(drm.get(), gcc)); EXPECT_EQ(1u, drm->ioctlCallsCount); } 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 e5a3dfdce3..5189c77288 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 @@ -269,7 +269,7 @@ TEST(IoctlHelperTestsUpstream, whenCreateContextWithAccessCountersIsCalledThenEr auto drm = std::make_unique(*executionEnvironment->rootDeviceEnvironments[0]); ASSERT_NE(nullptr, drm); - drm_i915_gem_context_create_ext gcc{}; + GemContextCreateExt gcc{}; IoctlHelperUpstream ioctlHelper{}; EXPECT_EQ(static_cast(EINVAL), ioctlHelper.createContextWithAccessCounters(drm.get(), gcc)); @@ -280,7 +280,7 @@ TEST(IoctlHelperTestsUpstream, whenCreateCooperativeContexIsCalledThenErrorIsRet auto drm = std::make_unique(*executionEnvironment->rootDeviceEnvironments[0]); ASSERT_NE(nullptr, drm); - drm_i915_gem_context_create_ext gcc{}; + GemContextCreateExt gcc{}; IoctlHelperUpstream ioctlHelper{}; EXPECT_EQ(static_cast(EINVAL), ioctlHelper.createCooperativeContext(drm.get(), gcc));