Revert "fix: don't use fake userptr flag in ioctl helper xe"

This reverts commit d3ab256f55.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
This commit is contained in:
Compute-Runtime-Validation
2024-03-15 02:39:40 +01:00
committed by Compute-Runtime-Automation
parent e11917cfcd
commit 94cc48f81b
12 changed files with 19 additions and 162 deletions

View File

@@ -1048,7 +1048,7 @@ TEST_F(DrmMemoryManagerTest, WhenAskedButNotAllowedHostPtrThenDoNotPinAfterAlloc
TEST_F(DrmMemoryManagerTest, WhenUnreferenceIsCalledThenCallSucceeds) {
mock->ioctlExpected.gemUserptr = 1;
mock->ioctlExpected.gemClose = 1;
BufferObject *bo = memoryManager->allocUserptr(1234, (size_t)1024, rootDeviceIndex);
BufferObject *bo = memoryManager->allocUserptr(0, (size_t)1024, rootDeviceIndex);
ASSERT_NE(nullptr, bo);
memoryManager->unreference(bo, false);
}

View File

@@ -533,14 +533,11 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) {
drm.testMode(0);
{
GemUserPtr test = {};
test.userPtr = 2;
test.handle = 1;
ret = mockXeIoctlHelper->ioctl(DrmIoctl::gemUserptr, &test);
EXPECT_EQ(0, ret);
EXPECT_EQ(test.userPtr, mockXeIoctlHelper->bindInfo[0].userptr);
EXPECT_EQ(0u, mockXeIoctlHelper->bindInfo[0].handle);
GemClose cl = {};
cl.userptr = test.userPtr;
cl.handle = test.handle;
ret = mockXeIoctlHelper->ioctl(DrmIoctl::gemClose, &cl);
EXPECT_EQ(0, ret);
}
@@ -645,7 +642,6 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) {
}
{
GemClose test = {};
test.handle = 1;
ret = mockXeIoctlHelper->ioctl(DrmIoctl::gemClose, &test);
EXPECT_EQ(0, ret);
}
@@ -1770,120 +1766,3 @@ TEST(IoctlHelperXeTest, whenCallingGetStatusAndFlagsForResetStatsThenZeroIsRetur
EXPECT_FALSE(ioctlHelper->validPageFault(0u));
}
TEST(IoctlHelperXeTest, givenMultipleBindInfosWhenGemCloseIsCalledThenProperHandleIsTaken) {
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
auto ioctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
drm.gemCloseCalled = 0;
BindInfo bindInfo{};
bindInfo.handle = 1;
ioctlHelper->bindInfo.push_back(bindInfo);
bindInfo.handle = 2;
ioctlHelper->bindInfo.push_back(bindInfo);
bindInfo = {};
bindInfo.userptr = 1;
ioctlHelper->bindInfo.push_back(bindInfo);
bindInfo.userptr = 2;
ioctlHelper->bindInfo.push_back(bindInfo);
GemClose gemClose{};
gemClose.handle = 0;
gemClose.userptr = 2;
EXPECT_EQ(0, ioctlHelper->ioctl(DrmIoctl::gemClose, &gemClose));
EXPECT_EQ(0, drm.gemCloseCalled);
gemClose.handle = 2;
gemClose.userptr = 0;
EXPECT_EQ(0, ioctlHelper->ioctl(DrmIoctl::gemClose, &gemClose));
EXPECT_EQ(1, drm.gemCloseCalled);
EXPECT_EQ(2u, drm.passedGemClose.handle);
gemClose.handle = 0;
gemClose.userptr = 1;
EXPECT_EQ(0, ioctlHelper->ioctl(DrmIoctl::gemClose, &gemClose));
EXPECT_EQ(1, drm.gemCloseCalled);
gemClose.handle = 1;
gemClose.userptr = 0;
EXPECT_EQ(0, ioctlHelper->ioctl(DrmIoctl::gemClose, &gemClose));
EXPECT_EQ(2, drm.gemCloseCalled);
EXPECT_EQ(1u, drm.passedGemClose.handle);
EXPECT_EQ(0ul, ioctlHelper->bindInfo.size());
}
TEST(IoctlHelperXeTest, givenMultipleBindInfosWhenVmBindIsCalledThenProperHandleIsTaken) {
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
auto ioctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
drm.vmBindInputs.clear();
BindInfo bindInfo{};
bindInfo.handle = 1;
ioctlHelper->bindInfo.push_back(bindInfo);
bindInfo.handle = 2;
ioctlHelper->bindInfo.push_back(bindInfo);
bindInfo = {};
bindInfo.userptr = 1;
ioctlHelper->bindInfo.push_back(bindInfo);
bindInfo.userptr = 2;
ioctlHelper->bindInfo.push_back(bindInfo);
MockIoctlHelperXe::UserFenceExtension userFence{};
userFence.tag = userFence.tagValue;
VmBindParams vmBindParams{};
vmBindParams.userFence = castToUint64(&userFence);
vmBindParams.handle = 0;
vmBindParams.userptr = 2;
EXPECT_EQ(0, ioctlHelper->vmBind(vmBindParams));
EXPECT_EQ(1ul, drm.vmBindInputs.size());
EXPECT_EQ(0u, drm.vmBindInputs[0].bind.obj);
EXPECT_EQ(2u, drm.vmBindInputs[0].bind.obj_offset);
drm.vmBindInputs.clear();
vmBindParams.handle = 2;
vmBindParams.userptr = 0;
EXPECT_EQ(0, ioctlHelper->vmBind(vmBindParams));
EXPECT_EQ(1ul, drm.vmBindInputs.size());
EXPECT_EQ(2u, drm.vmBindInputs[0].bind.obj);
EXPECT_EQ(0u, drm.vmBindInputs[0].bind.obj_offset);
drm.vmBindInputs.clear();
vmBindParams.handle = 0;
vmBindParams.userptr = 1;
EXPECT_EQ(0, ioctlHelper->vmBind(vmBindParams));
EXPECT_EQ(1ul, drm.vmBindInputs.size());
EXPECT_EQ(0u, drm.vmBindInputs[0].bind.obj);
EXPECT_EQ(1u, drm.vmBindInputs[0].bind.obj_offset);
drm.vmBindInputs.clear();
vmBindParams.handle = 1;
vmBindParams.userptr = 0;
EXPECT_EQ(0, ioctlHelper->vmBind(vmBindParams));
EXPECT_EQ(1ul, drm.vmBindInputs.size());
EXPECT_EQ(1u, drm.vmBindInputs[0].bind.obj);
EXPECT_EQ(0u, drm.vmBindInputs[0].bind.obj_offset);
drm.vmBindInputs.clear();
vmBindParams.handle = 0;
vmBindParams.userptr = 0;
EXPECT_NE(0, ioctlHelper->vmBind(vmBindParams));
EXPECT_EQ(0ul, drm.vmBindInputs.size());
ioctlHelper->bindInfo.clear();
}

View File

@@ -33,7 +33,6 @@ struct MockIoctlHelperXe : IoctlHelperXe {
using IoctlHelperXe::getFdFromVmExport;
using IoctlHelperXe::IoctlHelperXe;
using IoctlHelperXe::setDefaultEngine;
using IoctlHelperXe::UserFenceExtension;
using IoctlHelperXe::xeFindMatchingEngine;
using IoctlHelperXe::xeGetBindFlagsName;
using IoctlHelperXe::xeGetBindOperationName;
@@ -135,15 +134,10 @@ class DrmMockXe : public DrmMockCustom {
v->vm_id = testValueVmId;
ret = 0;
} break;
case DrmIoctl::gemUserptr: {
case DrmIoctl::gemUserptr:
case DrmIoctl::gemClose:
ret = 0;
} break;
case DrmIoctl::gemClose: {
auto gemClose = reinterpret_cast<GemClose *>(arg);
passedGemClose = *gemClose;
gemCloseCalled++;
ret = 0;
} break;
break;
case DrmIoctl::gemVmDestroy: {
struct drm_xe_vm_destroy *v = static_cast<struct drm_xe_vm_destroy *>(arg);
if (v->vm_id == testValueVmId)
@@ -271,8 +265,6 @@ class DrmMockXe : public DrmMockCustom {
int forceIoctlAnswer = 0;
int setIoctlAnswer = 0;
int gemVmBindReturn = 0;
GemClose passedGemClose{};
int gemCloseCalled = 0;
static_assert(sizeof(drm_xe_engine) == 4 * sizeof(uint64_t), "");
uint64_t queryEngines[45]{}; // 1 qword for num engines and 4 qwords per engine