fix: remove invalid hardcoded flags for vm create in xe path

Related-To: NEO-10496
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2024-03-26 15:42:15 +00:00
committed by Compute-Runtime-Automation
parent 420a6092ae
commit 0b57b0fb7a
3 changed files with 17 additions and 27 deletions

View File

@@ -781,15 +781,9 @@ std::unique_ptr<uint8_t[]> IoctlHelperXe::createVmControlExtRegion(const std::op
uint32_t IoctlHelperXe::getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) {
xeLog(" -> IoctlHelperXe::%s %d,%d,%d\n", __FUNCTION__, disableScratch, enablePageFault, useVmBind);
uint32_t flags = 0u;
if (disableScratch) {
flags |= XE_NEO_VMCREATE_DISABLESCRATCH_FLAG;
}
uint32_t flags = DRM_XE_VM_CREATE_FLAG_LR_MODE;
if (enablePageFault) {
flags |= XE_NEO_VMCREATE_ENABLEPAGEFAULT_FLAG;
}
if (useVmBind) {
flags |= XE_NEO_VMCREATE_USEVMBIND_FLAG;
flags |= DRM_XE_VM_CREATE_FLAG_FAULT_MODE;
}
return flags;
}
@@ -1052,12 +1046,9 @@ int IoctlHelperXe::ioctl(DrmIoctl request, void *arg) {
xeLog(" -> IoctlHelperXe::ioctl GemClose found=%d h=0x%x r=%d\n", found, d->handle, ret);
} break;
case DrmIoctl::gemVmCreate: {
GemVmControl *d = static_cast<GemVmControl *>(arg);
GemVmControl *vmControl = static_cast<GemVmControl *>(arg);
struct drm_xe_vm_create args = {};
args.flags = DRM_XE_VM_CREATE_FLAG_LR_MODE;
if (drm.hasPageFaultSupport()) {
args.flags |= DRM_XE_VM_CREATE_FLAG_FAULT_MODE;
}
args.flags = vmControl->flags;
if (drm.getRootDeviceEnvironment().executionEnvironment.getDebuggingMode() != DebuggingMode::disabled) {
args.extensions = reinterpret_cast<unsigned long long>(allocateDebugMetadata());
@@ -1067,9 +1058,8 @@ int IoctlHelperXe::ioctl(DrmIoctl request, void *arg) {
args.extensions = reinterpret_cast<unsigned long long>(freeDebugMetadata(reinterpret_cast<void *>(args.extensions)));
}
d->vmId = ret ? 0 : args.vm_id;
d->flags = ret ? 0 : args.flags;
xeLog(" -> IoctlHelperXe::ioctl gemVmCreate f=0x%x vmid=0x%x r=%d\n", d->flags, d->vmId, ret);
vmControl->vmId = args.vm_id;
xeLog(" -> IoctlHelperXe::ioctl gemVmCreate f=0x%x vmid=0x%x r=%d\n", vmControl->flags, vmControl->vmId, ret);
} break;
case DrmIoctl::gemVmDestroy: {

View File

@@ -22,10 +22,6 @@ struct drm_xe_engine_class_instance;
#define XE_NEO_BIND_IMMEDIATE_FLAG 0x20
#define XE_NEO_BIND_MAKERESIDENT_FLAG 0x300
#define XE_NEO_VMCREATE_DISABLESCRATCH_FLAG 0x100000
#define XE_NEO_VMCREATE_ENABLEPAGEFAULT_FLAG 0x20000
#define XE_NEO_VMCREATE_USEVMBIND_FLAG 0x3000
#define PRELIM_I915_UFENCE_WAIT_SOFT (1 << 15)
#define XE_ONE_SEC 1000000000

View File

@@ -279,8 +279,6 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingAnyMethodThenDummyValueIsRe
EXPECT_EQ(nullptr, xeIoctlHelper->createVmControlExtRegion({}));
EXPECT_EQ(0u, xeIoctlHelper->getFlagsForVmCreate(false, false, false));
GemContextCreateExt gcc;
EXPECT_EQ(0u, xeIoctlHelper->createContextWithAccessCounters(gcc));
@@ -398,10 +396,16 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingAnyMethodThenDummyValueIsRe
EXPECT_TRUE(xeIoctlHelper->completionFenceExtensionSupported(true));
EXPECT_EQ(static_cast<uint32_t>(XE_NEO_VMCREATE_DISABLESCRATCH_FLAG |
XE_NEO_VMCREATE_ENABLEPAGEFAULT_FLAG |
XE_NEO_VMCREATE_USEVMBIND_FLAG),
EXPECT_EQ(static_cast<uint32_t>(DRM_XE_VM_CREATE_FLAG_LR_MODE |
DRM_XE_VM_CREATE_FLAG_FAULT_MODE),
xeIoctlHelper->getFlagsForVmCreate(true, true, true));
EXPECT_EQ(static_cast<uint32_t>(DRM_XE_VM_CREATE_FLAG_LR_MODE |
DRM_XE_VM_CREATE_FLAG_FAULT_MODE),
xeIoctlHelper->getFlagsForVmCreate(false, true, false));
EXPECT_EQ(static_cast<uint32_t>(DRM_XE_VM_CREATE_FLAG_LR_MODE),
xeIoctlHelper->getFlagsForVmCreate(true, false, true));
EXPECT_EQ(static_cast<uint32_t>(DRM_XE_VM_CREATE_FLAG_LR_MODE),
xeIoctlHelper->getFlagsForVmCreate(false, false, false));
EXPECT_EQ(static_cast<uint64_t>(XE_NEO_BIND_CAPTURE_FLAG |
XE_NEO_BIND_IMMEDIATE_FLAG |
@@ -545,16 +549,16 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) {
}
{
GemVmControl test = {};
drm.pageFaultSupported = false;
uint32_t expectedVmCreateFlags = DRM_XE_VM_CREATE_FLAG_LR_MODE;
test.flags = expectedVmCreateFlags;
ret = mockXeIoctlHelper->ioctl(DrmIoctl::gemVmCreate, &test);
EXPECT_EQ(0, ret);
EXPECT_EQ(static_cast<int>(test.vmId), testValueVmId);
EXPECT_EQ(test.flags, expectedVmCreateFlags);
drm.pageFaultSupported = true;
expectedVmCreateFlags = DRM_XE_VM_CREATE_FLAG_LR_MODE |
DRM_XE_VM_CREATE_FLAG_FAULT_MODE;
test.flags = expectedVmCreateFlags;
ret = mockXeIoctlHelper->ioctl(DrmIoctl::gemVmCreate, &test);
EXPECT_EQ(0, ret);
EXPECT_EQ(static_cast<int>(test.vmId), testValueVmId);