Revert "fix: add missing pagefault support query on XeKMD"
This reverts commit 50dfe33efa
.
Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
This commit is contained in:
parent
478d905c7a
commit
1731c09d3a
|
@ -1037,7 +1037,11 @@ void Drm::queryPageFaultSupport() {
|
|||
return;
|
||||
}
|
||||
|
||||
pageFaultSupported = this->ioctlHelper->isPageFaultSupported();
|
||||
if (const auto paramId = ioctlHelper->getHasPageFaultParamId(); paramId) {
|
||||
int support = 0;
|
||||
const auto ret = getParamIoctl(*paramId, &support);
|
||||
pageFaultSupported = (0 == ret) && (support > 0);
|
||||
}
|
||||
}
|
||||
|
||||
bool Drm::hasPageFaultSupport() const {
|
||||
|
|
|
@ -123,7 +123,7 @@ class IoctlHelper {
|
|||
virtual uint16_t getWaitUserFenceSoftFlag() = 0;
|
||||
virtual int execBuffer(ExecBuffer *execBuffer, uint64_t completionGpuAddress, TaskCountType counterValue) = 0;
|
||||
virtual bool completionFenceExtensionSupported(const bool isVmBindAvailable) = 0;
|
||||
virtual bool isPageFaultSupported() = 0;
|
||||
virtual std::optional<DrmParam> getHasPageFaultParamId() = 0;
|
||||
virtual std::unique_ptr<uint8_t[]> createVmControlExtRegion(const std::optional<MemoryClassInstance> ®ionInstanceClass) = 0;
|
||||
virtual uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) = 0;
|
||||
virtual uint32_t createContextWithAccessCounters(GemContextCreateExt &gcc) = 0;
|
||||
|
@ -274,7 +274,7 @@ class IoctlHelperUpstream : public IoctlHelperI915 {
|
|||
uint16_t getWaitUserFenceSoftFlag() override;
|
||||
int execBuffer(ExecBuffer *execBuffer, uint64_t completionGpuAddress, TaskCountType counterValue) override;
|
||||
bool completionFenceExtensionSupported(const bool isVmBindAvailable) override;
|
||||
bool isPageFaultSupported() override;
|
||||
std::optional<DrmParam> getHasPageFaultParamId() override;
|
||||
std::unique_ptr<uint8_t[]> createVmControlExtRegion(const std::optional<MemoryClassInstance> ®ionInstanceClass) override;
|
||||
uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) override;
|
||||
uint32_t createContextWithAccessCounters(GemContextCreateExt &gcc) override;
|
||||
|
@ -352,7 +352,7 @@ class IoctlHelperPrelim20 : public IoctlHelperI915 {
|
|||
uint16_t getWaitUserFenceSoftFlag() override;
|
||||
int execBuffer(ExecBuffer *execBuffer, uint64_t completionGpuAddress, TaskCountType counterValue) override;
|
||||
bool completionFenceExtensionSupported(const bool isVmBindAvailable) override;
|
||||
bool isPageFaultSupported() override;
|
||||
std::optional<DrmParam> getHasPageFaultParamId() override;
|
||||
std::unique_ptr<uint8_t[]> createVmControlExtRegion(const std::optional<MemoryClassInstance> ®ionInstanceClass) override;
|
||||
uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) override;
|
||||
uint32_t createContextWithAccessCounters(GemContextCreateExt &gcc) override;
|
||||
|
|
|
@ -557,19 +557,8 @@ int IoctlHelperPrelim20::queryDistances(std::vector<QueryItem> &queryItems, std:
|
|||
return ret;
|
||||
}
|
||||
|
||||
bool IoctlHelperPrelim20::isPageFaultSupported() {
|
||||
int pagefaultSupport{};
|
||||
GetParam getParam{};
|
||||
getParam.param = PRELIM_I915_PARAM_HAS_PAGE_FAULT;
|
||||
getParam.value = &pagefaultSupport;
|
||||
|
||||
int retVal = ioctl(DrmIoctl::getparam, &getParam);
|
||||
if (debugManager.flags.PrintIoctlEntries.get()) {
|
||||
printf("DRM_IOCTL_I915_GETPARAM: param: PRELIM_I915_PARAM_HAS_PAGE_FAULT, output value: %d, retCode:% d\n",
|
||||
*getParam.value,
|
||||
retVal);
|
||||
}
|
||||
return (retVal == 0) && (pagefaultSupport > 0);
|
||||
std::optional<DrmParam> IoctlHelperPrelim20::getHasPageFaultParamId() {
|
||||
return DrmParam::paramHasPageFault;
|
||||
};
|
||||
|
||||
bool IoctlHelperPrelim20::getEuStallProperties(std::array<uint64_t, 12u> &properties, uint64_t dssBufferSize, uint64_t samplingRate,
|
||||
|
|
|
@ -191,8 +191,8 @@ bool IoctlHelperUpstream::completionFenceExtensionSupported(const bool isVmBindA
|
|||
return false;
|
||||
}
|
||||
|
||||
bool IoctlHelperUpstream::isPageFaultSupported() {
|
||||
return false;
|
||||
std::optional<DrmParam> IoctlHelperUpstream::getHasPageFaultParamId() {
|
||||
return std::nullopt;
|
||||
};
|
||||
|
||||
bool IoctlHelperUpstream::getEuStallProperties(std::array<uint64_t, 12u> &properties, uint64_t dssBufferSize,
|
||||
|
|
|
@ -11,7 +11,7 @@ set(NEO_CORE_OS_INTERFACE_LINUX_XE
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/ioctl_helper_xe.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ioctl_helper_xe.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/ioctl_helper_xe_query_hw_ip_version.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/ioctl_helper_xe_query_features.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/ioctl_helper_xe_vm_bind_flags.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/ioctl_helper_xe_perf.cpp
|
||||
)
|
||||
|
||||
|
|
|
@ -794,10 +794,9 @@ int IoctlHelperXe::queryDistances(std::vector<QueryItem> &queryItems, std::vecto
|
|||
return 0;
|
||||
}
|
||||
|
||||
bool IoctlHelperXe::isPageFaultSupported() {
|
||||
xeLog(" -> IoctlHelperXe::%s %d\n", __FUNCTION__, supportedFeatures.flags.pageFault == true);
|
||||
|
||||
return supportedFeatures.flags.pageFault;
|
||||
std::optional<DrmParam> IoctlHelperXe::getHasPageFaultParamId() {
|
||||
xeLog(" -> IoctlHelperXe::%s\n", __FUNCTION__);
|
||||
return {};
|
||||
};
|
||||
|
||||
uint32_t IoctlHelperXe::getEuStallFdParameter() {
|
||||
|
|
|
@ -65,7 +65,7 @@ class IoctlHelperXe : public IoctlHelper {
|
|||
uint16_t getWaitUserFenceSoftFlag() override;
|
||||
int execBuffer(ExecBuffer *execBuffer, uint64_t completionGpuAddress, TaskCountType counterValue) override;
|
||||
bool completionFenceExtensionSupported(const bool isVmBindAvailable) override;
|
||||
bool isPageFaultSupported() override;
|
||||
std::optional<DrmParam> getHasPageFaultParamId() override;
|
||||
std::unique_ptr<uint8_t[]> createVmControlExtRegion(const std::optional<MemoryClassInstance> ®ionInstanceClass) override;
|
||||
uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) override;
|
||||
uint32_t createContextWithAccessCounters(GemContextCreateExt &gcc) override;
|
||||
|
@ -212,8 +212,7 @@ class IoctlHelperXe : public IoctlHelper {
|
|||
struct {
|
||||
uint32_t vmBindReadOnly : 1;
|
||||
uint32_t vmBindImmediate : 1;
|
||||
uint32_t pageFault : 1;
|
||||
uint32_t reserved : 29;
|
||||
uint32_t reserved : 30;
|
||||
} flags;
|
||||
uint32_t allFlags = 0;
|
||||
};
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/os_interface/linux/xe/ioctl_helper_xe.h"
|
||||
|
||||
#include "xe_drm.h"
|
||||
|
||||
namespace NEO {
|
||||
void IoctlHelperXe::querySupportedFeatures() {
|
||||
auto checkVmCreateFlagsSupport = [&](uint32_t flags) -> bool {
|
||||
struct drm_xe_vm_create vmCreate = {};
|
||||
vmCreate.flags = flags;
|
||||
|
||||
auto ret = IoctlHelper::ioctl(DrmIoctl::gemVmCreate, &vmCreate);
|
||||
if (ret == 0) {
|
||||
struct drm_xe_vm_destroy vmDestroy = {};
|
||||
vmDestroy.vm_id = vmCreate.vm_id;
|
||||
ret = IoctlHelper::ioctl(DrmIoctl::gemVmDestroy, &vmDestroy);
|
||||
DEBUG_BREAK_IF(ret != 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
supportedFeatures.flags.pageFault = checkVmCreateFlagsSupport(DRM_XE_VM_CREATE_FLAG_LR_MODE | DRM_XE_VM_CREATE_FLAG_FAULT_MODE);
|
||||
};
|
||||
|
||||
uint64_t IoctlHelperXe::getAdditionalFlagsForVmBind(bool bindImmediate, bool readOnlyResource) {
|
||||
return 0;
|
||||
}
|
||||
} // namespace NEO
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* Copyright (C) 2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/os_interface/linux/xe/ioctl_helper_xe.h"
|
||||
|
||||
namespace NEO {
|
||||
void IoctlHelperXe::querySupportedFeatures(){};
|
||||
|
||||
uint64_t IoctlHelperXe::getAdditionalFlagsForVmBind(bool bindImmediate, bool readOnlyResource) {
|
||||
return 0;
|
||||
}
|
||||
} // namespace NEO
|
|
@ -9,7 +9,6 @@ set(NEO_CORE_OS_INTERFACE_TESTS_LINUX_XE
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/ioctl_helper_xe_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/ioctl_helper_xe_perf_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ioctl_helper_xe_tests.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ioctl_helper_xe_query_features_tests.cpp
|
||||
)
|
||||
if(NEO_ENABLE_XE_EU_DEBUG_SUPPORT)
|
||||
list(APPEND NEO_CORE_OS_INTERFACE_TESTS_LINUX_XE
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.h"
|
||||
|
||||
class DrmMockXeQueryFeatures : public DrmMockXe {
|
||||
public:
|
||||
using DrmMockXe::DrmMockXe;
|
||||
|
||||
int ioctl(DrmIoctl request, void *arg) override {
|
||||
switch (request) {
|
||||
case DrmIoctl::gemVmCreate: {
|
||||
auto vmCreate = static_cast<drm_xe_vm_create *>(arg);
|
||||
|
||||
if ((vmCreate->flags & DRM_XE_VM_CREATE_FLAG_FAULT_MODE) == DRM_XE_VM_CREATE_FLAG_FAULT_MODE &&
|
||||
(vmCreate->flags & DRM_XE_VM_CREATE_FLAG_LR_MODE) == DRM_XE_VM_CREATE_FLAG_LR_MODE &&
|
||||
(!supportsRecoverablePageFault)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
} break;
|
||||
|
||||
default:
|
||||
return DrmMockXe::ioctl(request, arg);
|
||||
}
|
||||
};
|
||||
bool supportsRecoverablePageFault = true;
|
||||
};
|
||||
|
||||
TEST(IoctlHelperXeQueryFeaturesTest, whenInitializeIoctlHelperThenQueryRecoverablePageFaultSupport) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXeQueryFeatures drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
|
||||
for (const auto &recoverablePageFault : ::testing::Bool()) {
|
||||
drm.supportsRecoverablePageFault = recoverablePageFault;
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
|
||||
xeIoctlHelper->initialize();
|
||||
EXPECT_EQ(xeIoctlHelper->supportedFeatures.flags.pageFault, recoverablePageFault);
|
||||
}
|
||||
}
|
|
@ -279,7 +279,7 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingAnyMethodThenDummyValueIsRe
|
|||
|
||||
EXPECT_FALSE(xeIoctlHelper->completionFenceExtensionSupported(false));
|
||||
|
||||
EXPECT_EQ(false, xeIoctlHelper->isPageFaultSupported());
|
||||
EXPECT_EQ(std::nullopt, xeIoctlHelper->getHasPageFaultParamId());
|
||||
|
||||
EXPECT_EQ(nullptr, xeIoctlHelper->createVmControlExtRegion({}));
|
||||
|
||||
|
|
Loading…
Reference in New Issue