Skip to content

Commit 038577e

Browse files
Repeat ioctl when device is busy
Change-Id: I29007c316df610c9410a71a59c5098bd4539b504 Signed-off-by: Lukasz Jobczyk <[email protected]>
1 parent 960aff5 commit 038577e

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

opencl/test/unit_test/linux/main_linux_dll.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,16 @@ TEST_F(DrmTests, createReturnsDrm) {
242242
EXPECT_EQ(0, ret);
243243
EXPECT_EQ(deviceId, lDeviceId);
244244

245+
ioctlCnt = 0;
246+
ioctlSeq[0] = -1;
247+
errno = EBUSY;
248+
// check if device works, although there was EBUSY error from KMD
249+
getParam.param = I915_PARAM_CHIPSET_ID;
250+
getParam.value = &lDeviceId;
251+
ret = drm->ioctl(DRM_IOCTL_I915_GETPARAM, &getParam);
252+
EXPECT_EQ(0, ret);
253+
EXPECT_EQ(deviceId, lDeviceId);
254+
245255
ioctlCnt = 0;
246256
ioctlSeq[0] = -1;
247257
errno = 0;

shared/source/os_interface/linux/drm_neo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ int Drm::ioctl(unsigned long request, void *arg) {
6565
SYSTEM_ENTER();
6666
do {
6767
ret = SysCalls::ioctl(getFileDescriptor(), request, arg);
68-
} while (ret == -1 && (errno == EINTR || errno == EAGAIN));
68+
} while (ret == -1 && (errno == EINTR || errno == EAGAIN || errno == EBUSY));
6969
SYSTEM_LEAVE(request);
7070
return ret;
7171
}

0 commit comments

Comments
 (0)