mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 09:09:04 +08:00
refactor: Add conditions for metadata and vmbind handling
Resolves: NEO-16089 Signed-off-by: Jemale Lockett <jemale.lockett@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
71cec32d50
commit
dbf9e7ff63
@@ -243,5 +243,5 @@ std::unique_ptr<void, void (*)(void *)> MockEuDebugInterface::toDrmEuDebugAckEve
|
||||
}
|
||||
|
||||
char MockEuDebugInterface::sysFsContent = '1';
|
||||
[[maybe_unused]] static EnableEuDebugInterface enableMockEuDebug(MockEuDebugInterface::euDebugInterfaceType, MockEuDebugInterface::sysFsXeEuDebugFile, []() -> std::unique_ptr<EuDebugInterface> { return std::make_unique<MockEuDebugInterface>(); });
|
||||
[[maybe_unused]] static EnableEuDebugInterface enableMockEuDebug(EuDebugInterfaceType::upstream, MockEuDebugInterface::sysFsXeEuDebugFile, []() -> std::unique_ptr<EuDebugInterface> { return std::make_unique<MockEuDebugInterface>(); });
|
||||
} // namespace NEO
|
||||
|
||||
@@ -14,10 +14,9 @@ class MockEuDebugInterface : public EuDebugInterface {
|
||||
static char sysFsContent;
|
||||
static constexpr const char *sysFsXeEuDebugFile = "/mock_eudebug";
|
||||
static constexpr uintptr_t sysFsFd = 0xE0DEB0;
|
||||
static constexpr EuDebugInterfaceType euDebugInterfaceType = EuDebugInterfaceType::upstream;
|
||||
bool isExecQueuePageFaultEnableSupported() override { return pageFaultEnableSupported; };
|
||||
uint32_t getParamValue(EuDebugParam param) const override;
|
||||
EuDebugInterfaceType getInterfaceType() const override { return euDebugInterfaceType; };
|
||||
EuDebugInterfaceType getInterfaceType() const override { return currentInterfaceType; };
|
||||
uint64_t getDefaultClientHandle() const override {
|
||||
return 1; // EuDebugInterfaceUpstream::defaultClientHandle
|
||||
};
|
||||
@@ -42,6 +41,11 @@ class MockEuDebugInterface : public EuDebugInterface {
|
||||
std::unique_ptr<void, void (*)(void *)> toDrmEuDebugAckEvent(const EuDebugAckEvent &ackEvent) override;
|
||||
|
||||
bool pageFaultEnableSupported = false;
|
||||
|
||||
EuDebugInterfaceType currentInterfaceType = EuDebugInterfaceType::upstream;
|
||||
void setCurrentInterfaceType(EuDebugInterfaceType newType) {
|
||||
currentInterfaceType = newType;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -242,7 +242,7 @@ TEST_F(IoctlHelperXeTest, givenInvalidPathWhenCreateEuDebugInterfaceThenReturnNu
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
|
||||
VariableBackup<size_t> mockFreadReturnBackup(&IoFunctions::mockFreadReturn, 0);
|
||||
VariableBackup<const char *> eudebugSysFsEntryBackup(&eudebugSysfsEntry[static_cast<uint32_t>(MockEuDebugInterface::euDebugInterfaceType)], "invalidEntry");
|
||||
VariableBackup<const char *> eudebugSysFsEntryBackup(&eudebugSysfsEntry[static_cast<uint32_t>(EuDebugInterfaceType::upstream)], "invalidEntry");
|
||||
|
||||
auto euDebugInterface = EuDebugInterface::create(drm->getSysFsPciPath());
|
||||
EXPECT_EQ(nullptr, euDebugInterface);
|
||||
@@ -263,6 +263,8 @@ TEST_F(IoctlHelperXeTest, givenXeRegisterResourceThenCorrectIoctlCalled) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
auto &eudebugInterface = xeIoctlHelper->euDebugInterface;
|
||||
static_cast<MockEuDebugInterface *>(eudebugInterface.get())->setCurrentInterfaceType(EuDebugInterfaceType::prelim);
|
||||
constexpr size_t bufferSize = 20;
|
||||
uint8_t buffer[bufferSize];
|
||||
|
||||
@@ -298,7 +300,6 @@ TEST_F(IoctlHelperXeTest, givenXeRegisterResourceThenCorrectIoctlCalled) {
|
||||
EXPECT_EQ(drm->metadataAddr, buffer);
|
||||
EXPECT_EQ(drm->metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm->metadataType, static_cast<uint64_t>(EuDebugParam::metadataSbaArea));
|
||||
|
||||
drm->metadataID = 0;
|
||||
drm->metadataAddr = nullptr;
|
||||
drm->metadataSize = 0;
|
||||
@@ -313,6 +314,9 @@ TEST_F(IoctlHelperXeTest, givenXeunregisterResourceThenCorrectIoctlCalled) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
auto &eudebugInterface = xeIoctlHelper->euDebugInterface;
|
||||
static_cast<MockEuDebugInterface *>(eudebugInterface.get())->setCurrentInterfaceType(EuDebugInterfaceType::prelim);
|
||||
|
||||
xeIoctlHelper->unregisterResource(0x1234);
|
||||
EXPECT_EQ(drm->metadataID, 0x1234u);
|
||||
}
|
||||
@@ -321,6 +325,8 @@ TEST_F(IoctlHelperXeTest, whenGettingVmBindExtFromHandlesThenProperStructsAreRet
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
auto &eudebugInterface = xeIoctlHelper->euDebugInterface;
|
||||
static_cast<MockEuDebugInterface *>(eudebugInterface.get())->setCurrentInterfaceType(EuDebugInterfaceType::prelim);
|
||||
|
||||
StackVec<uint32_t, 2> bindExtHandles;
|
||||
bindExtHandles.push_back(1u);
|
||||
@@ -340,6 +346,26 @@ TEST_F(IoctlHelperXeTest, whenGettingVmBindExtFromHandlesThenProperStructsAreRet
|
||||
EXPECT_EQ(reinterpret_cast<uintptr_t>(&vmBindExt[2]), vmBindExt[1].base.nextExtension);
|
||||
}
|
||||
|
||||
TEST_F(IoctlHelperXeTest, givenUpstreamEuDebugInterfaceThenRegisterAndUnregisterResourceAndPrepareVmBindExtReturnEarly) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
|
||||
constexpr size_t bufferSize = 20;
|
||||
uint8_t buffer[bufferSize];
|
||||
|
||||
auto id = xeIoctlHelper->registerResource(DrmResourceClass::elf, buffer, bufferSize);
|
||||
EXPECT_EQ(id, 0u);
|
||||
|
||||
drm->metadataID = 0x6789u;
|
||||
xeIoctlHelper->unregisterResource(0x1234);
|
||||
EXPECT_EQ(drm->metadataID, 0x6789u);
|
||||
|
||||
StackVec<uint32_t, 2> bindExtHandles;
|
||||
auto retVal = xeIoctlHelper->prepareVmBindExt(bindExtHandles, 1);
|
||||
EXPECT_EQ(retVal, nullptr);
|
||||
}
|
||||
|
||||
TEST_F(IoctlHelperXeTest, givenRegisterIsaHandleWhenIsaIsTileInstancedThenBOCookieSet) {
|
||||
const uint32_t rootDeviceIndex = 0u;
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
|
||||
Reference in New Issue
Block a user