mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-04 23:56:39 +08:00
Repeat ioctl when device is busy
Change-Id: I29007c316df610c9410a71a59c5098bd4539b504 Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
960aff5637
commit
038577eaf4
@@ -242,6 +242,16 @@ TEST_F(DrmTests, createReturnsDrm) {
|
|||||||
EXPECT_EQ(0, ret);
|
EXPECT_EQ(0, ret);
|
||||||
EXPECT_EQ(deviceId, lDeviceId);
|
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;
|
ioctlCnt = 0;
|
||||||
ioctlSeq[0] = -1;
|
ioctlSeq[0] = -1;
|
||||||
errno = 0;
|
errno = 0;
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ int Drm::ioctl(unsigned long request, void *arg) {
|
|||||||
SYSTEM_ENTER();
|
SYSTEM_ENTER();
|
||||||
do {
|
do {
|
||||||
ret = SysCalls::ioctl(getFileDescriptor(), request, arg);
|
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);
|
SYSTEM_LEAVE(request);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user