diff --git a/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp b/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp index 1b2d7321452fa..dc94de7fbffee 100644 --- a/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp +++ b/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp @@ -1304,6 +1304,7 @@ int IoctlHelperXe::createDrmContext(Drm &drm, OsContextLinux &osContext, uint32_ create.vm_id = drmVmId; create.instances = castToUint64(contextParamEngine.data()); create.extensions = (extPropertyIndex > 0U ? castToUint64(extProperties.data()) : 0UL); + create.flags = DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT; applyContextFlags(&create, allocateInterrupt); int ret = IoctlHelper::ioctl(DrmIoctl::gemContextCreateExt, &create); diff --git a/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp b/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp index 69cc8084f2b88..7da2422737ce8 100644 --- a/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp @@ -2590,3 +2590,20 @@ TEST_F(IoctlHelperXeTest, whenQueryDeviceIdAndRevisionThenProperValuesAreSet) { EXPECT_EQ(mockDeviceId, hwInfo->platform.usDeviceID); EXPECT_EQ(mockRevisionId, hwInfo->platform.usRevId); } + +TEST_F(IoctlHelperXeTest, givenXeIoctlHelperWhenCreateDrmContextThenLowLatencyFlagApplied) { + class MockLinuxOsContext : public OsContextLinux { + public: + using OsContextLinux::initializeContext; + using OsContextLinux::OsContextLinux; + }; + + auto executionEnvironment = std::make_unique(); + auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]); + auto xeIoctlHelper = static_cast(drm->getIoctlHelper()); + xeIoctlHelper->contextParamEngine.push_back(drm_xe_engine_class_instance{}); + MockLinuxOsContext osContext(*drm, 0, 5u, NEO::EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_CCS, EngineUsage::regular})); + + osContext.initializeContext(false); + EXPECT_EQ(static_cast(DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT), drm->latestExecQueueCreate.flags); +} \ No newline at end of file diff --git a/third_party/uapi-eudebug/drm/xe_drm.h b/third_party/uapi-eudebug/drm/xe_drm.h index ce20f8998ebdb..c3dc13cc75c77 100644 --- a/third_party/uapi-eudebug/drm/xe_drm.h +++ b/third_party/uapi-eudebug/drm/xe_drm.h @@ -1148,6 +1148,7 @@ struct drm_xe_exec_queue_create { /** @vm_id: VM to use for this exec queue */ __u32 vm_id; +#define DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT (1 << 0) /** @flags: MBZ */ __u32 flags; diff --git a/third_party/uapi/drm-uapi-helper/xe/xe_drm.h b/third_party/uapi/drm-uapi-helper/xe/xe_drm.h index 0642561f1d8c5..fabdd76db67c2 100644 --- a/third_party/uapi/drm-uapi-helper/xe/xe_drm.h +++ b/third_party/uapi/drm-uapi-helper/xe/xe_drm.h @@ -1121,6 +1121,7 @@ struct drm_xe_exec_queue_create { /** @vm_id: VM to use for this exec queue */ __u32 vm_id; +#define DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT (1 << 0) /** @flags: MBZ */ __u32 flags; diff --git a/third_party/uapi/upstream/xe/xe_drm.h b/third_party/uapi/upstream/xe/xe_drm.h index f0a450db957b5..b056bf5f667b3 100644 --- a/third_party/uapi/upstream/xe/xe_drm.h +++ b/third_party/uapi/upstream/xe/xe_drm.h @@ -1121,6 +1121,7 @@ struct drm_xe_exec_queue_create { /** @vm_id: VM to use for this exec queue */ __u32 vm_id; +#define DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT (1 << 0) /** @flags: MBZ */ __u32 flags;