@@ -427,7 +427,21 @@ TEST(IoctlPrelimHelperFabricLatencyTest, givenPrelimWhenGettingFabricLatencyAndI
427
427
drm->mockBandwidth = 0 ;
428
428
EXPECT_FALSE (ioctlHelper.getFabricLatency (fabricId, latency, bandwidth));
429
429
}
430
- HWTEST2_F (IoctlPrelimHelperTests, givenXeHpcWhenCallingIoctlWithGemExecbufferThenShouldBreakOnWouldBlock, IsXeHpcCore) {
430
+ HWTEST2_F (IoctlPrelimHelperTests, givenXeHpcWhenCallingIoctlWithGemExecbufferThenShouldNotBreakOnWouldBlock, IsXeHpcCore) {
431
+ EXPECT_TRUE (ioctlHelper.checkIfIoctlReinvokeRequired (EAGAIN, DrmIoctl::GemExecbuffer2));
432
+ EXPECT_TRUE (ioctlHelper.checkIfIoctlReinvokeRequired (EAGAIN, DrmIoctl::GemVmBind));
433
+ EXPECT_TRUE (ioctlHelper.checkIfIoctlReinvokeRequired (EBUSY, DrmIoctl::GemExecbuffer2));
434
+ }
435
+
436
+ HWTEST2_F (IoctlPrelimHelperTests, givenXeHpcWhenCallingIoctlWithGemExecbufferAndForceNonblockingExecbufferCallsThenShouldBreakOnWouldBlock, IsXeHpcCore) {
437
+ DebugManagerStateRestore restorer;
438
+ DebugManager.flags .ForceNonblockingExecbufferCalls .set (1 );
439
+
440
+ MockExecutionEnvironment executionEnvironment{};
441
+ std::unique_ptr<Drm> drm{Drm::create (std::make_unique<HwDeviceIdDrm>(0 , " " ), *executionEnvironment.rootDeviceEnvironments [0 ])};
442
+
443
+ IoctlHelperPrelim20 ioctlHelper{*drm};
444
+
431
445
EXPECT_FALSE (ioctlHelper.checkIfIoctlReinvokeRequired (EAGAIN, DrmIoctl::GemExecbuffer2));
432
446
EXPECT_TRUE (ioctlHelper.checkIfIoctlReinvokeRequired (EAGAIN, DrmIoctl::GemVmBind));
433
447
EXPECT_TRUE (ioctlHelper.checkIfIoctlReinvokeRequired (EBUSY, DrmIoctl::GemExecbuffer2));
@@ -449,9 +463,27 @@ HWTEST2_F(IoctlPrelimHelperTests, givenXeHpcWhenCreatingIoctlHelperThenProperFla
449
463
450
464
IoctlHelperPrelim20 ioctlHelper{*drm};
451
465
452
- EXPECT_EQ (1 , SysCalls::getFileDescriptorFlagsCalled);
453
- EXPECT_EQ (1 , SysCalls::setFileDescriptorFlagsCalled);
454
- EXPECT_EQ ((O_RDWR | O_NONBLOCK), SysCalls::passedFileDescriptorFlagsToSet);
466
+ EXPECT_EQ (0 , SysCalls::getFileDescriptorFlagsCalled);
467
+ EXPECT_EQ (0 , SysCalls::setFileDescriptorFlagsCalled);
468
+ EXPECT_EQ (0 , SysCalls::passedFileDescriptorFlagsToSet);
469
+ }
470
+
471
+ HWTEST2_F (IoctlPrelimHelperTests, givenXeHpcWhenCreatingIoctlHelperWithForceNonblockingExecbufferCallsThenProperFlagsAreSetToFileDescriptor, IsXeHpcCore) {
472
+ DebugManagerStateRestore restorer;
473
+ DebugManager.flags .ForceNonblockingExecbufferCalls .set (0 );
474
+
475
+ MockExecutionEnvironment executionEnvironment{};
476
+ std::unique_ptr<Drm> drm{Drm::create (std::make_unique<HwDeviceIdDrm>(0 , " " ), *executionEnvironment.rootDeviceEnvironments [0 ])};
477
+
478
+ VariableBackup<decltype (SysCalls::getFileDescriptorFlagsCalled)> backupGetFlags (&SysCalls::getFileDescriptorFlagsCalled, 0 );
479
+ VariableBackup<decltype (SysCalls::setFileDescriptorFlagsCalled)> backupSetFlags (&SysCalls::setFileDescriptorFlagsCalled, 0 );
480
+ VariableBackup<decltype (SysCalls::passedFileDescriptorFlagsToSet)> backupPassedFlags (&SysCalls::passedFileDescriptorFlagsToSet, 0 );
481
+
482
+ IoctlHelperPrelim20 ioctlHelper{*drm};
483
+
484
+ EXPECT_EQ (0 , SysCalls::getFileDescriptorFlagsCalled);
485
+ EXPECT_EQ (0 , SysCalls::setFileDescriptorFlagsCalled);
486
+ EXPECT_EQ (0 , SysCalls::passedFileDescriptorFlagsToSet);
455
487
}
456
488
457
489
HWTEST2_F (IoctlPrelimHelperTests, givenNonXeHpcWhenCreatingIoctlHelperThenProperFlagsAreSetToFileDescriptor, IsNotXeHpcCore) {
0 commit comments