diff --git a/opencl/test/unit_test/linux/main_linux_dll.cpp b/opencl/test/unit_test/linux/main_linux_dll.cpp index 45e39ec5c7..7d7bff079a 100644 --- a/opencl/test/unit_test/linux/main_linux_dll.cpp +++ b/opencl/test/unit_test/linux/main_linux_dll.cpp @@ -242,6 +242,16 @@ TEST_F(DrmTests, createReturnsDrm) { EXPECT_EQ(0, ret); EXPECT_EQ(deviceId, lDeviceId); + ioctlCnt = 0; + ioctlSeq[0] = -1; + errno = EBUSY; + // check if device works, although there was EBUSY error from KMD + getParam.param = I915_PARAM_CHIPSET_ID; + getParam.value = &lDeviceId; + ret = drm->ioctl(DRM_IOCTL_I915_GETPARAM, &getParam); + EXPECT_EQ(0, ret); + EXPECT_EQ(deviceId, lDeviceId); + ioctlCnt = 0; ioctlSeq[0] = -1; errno = 0; diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 57c9159ea8..f28736053c 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -65,7 +65,7 @@ int Drm::ioctl(unsigned long request, void *arg) { SYSTEM_ENTER(); do { ret = SysCalls::ioctl(getFileDescriptor(), request, arg); - } while (ret == -1 && (errno == EINTR || errno == EAGAIN)); + } while (ret == -1 && (errno == EINTR || errno == EAGAIN || errno == EBUSY)); SYSTEM_LEAVE(request); return ret; }