AUB CSR to use a common AUB and TBX gpu domain handler

Related-To: NEO-5667

Signed-off-by: Milczarek, Slawomir <slawomir.milczarek@intel.com>
This commit is contained in:
Milczarek, Slawomir
2021-04-02 14:22:34 +00:00
committed by Compute-Runtime-Automation
parent dece1d5798
commit 997604c2dd
4 changed files with 25 additions and 30 deletions

View File

@@ -275,7 +275,7 @@ TEST_F(PageFaultManagerTest, givenInitialPlacementGpuWhenVerifyingPagefaultThenF
TEST_F(PageFaultManagerTest, givenTbxWhenVerifyingPagefaultThenVerifyPagefaultUnprotectsAndTransfersMemory) {
void *alloc = reinterpret_cast<void *>(0x1);
pageFaultManager->gpuDomainHandler = &MockPageFaultManager::handleGpuDomainTransferForTbx;
pageFaultManager->gpuDomainHandler = &MockPageFaultManager::handleGpuDomainTransferForAubAndTbx;
MemoryProperties memoryProperties{};
memoryProperties.allocFlags.usmInitialPlacementGpu = 1;
@@ -300,7 +300,7 @@ TEST_F(PageFaultManagerTest, givenTbxWhenVerifyingPagefaultThenVerifyPagefaultUn
TEST_F(PageFaultManagerTest, givenTbxAndInitialPlacementGpuWhenVerifyingPagefaultThenMemoryIsUnprotectedOnly) {
void *alloc = reinterpret_cast<void *>(0x1);
pageFaultManager->gpuDomainHandler = &MockPageFaultManager::handleGpuDomainTransferForTbx;
pageFaultManager->gpuDomainHandler = &MockPageFaultManager::handleGpuDomainTransferForAubAndTbx;
MemoryProperties memoryProperties{};
memoryProperties.allocFlags.usmInitialPlacementGpu = 1;
@@ -419,41 +419,35 @@ TEST_F(PageFaultManagerTest, givenUnifiedMemoryAllocWhenSetAubWritableIsCalledTh
unifiedMemoryManager->freeSVMAlloc(alloc1);
}
TEST(PageFaultManager, givenTbxCsrWhenSelectingHandlerThenTbxGpuDomainHandlerIsSet) {
TEST(PageFaultManager, givenAubOrTbxCsrWhenSelectingHandlerThenAubAndTbxGpuDomainHandlerIsSet) {
DebugManagerStateRestore restorer;
auto pageFaultManager = std::make_unique<MockPageFaultManager>();
DebugManager.flags.SetCommandStreamReceiver.set(2);
pageFaultManager = std::make_unique<MockPageFaultManager>();
pageFaultManager->selectGpuDomainHandler();
for (auto csrType : {CommandStreamReceiverType::CSR_AUB, CommandStreamReceiverType::CSR_TBX, CommandStreamReceiverType::CSR_TBX_WITH_AUB}) {
DebugManager.flags.SetCommandStreamReceiver.set(csrType);
EXPECT_EQ(pageFaultManager->getTbxHandlerAddress(), reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
pageFaultManager = std::make_unique<MockPageFaultManager>();
pageFaultManager->selectGpuDomainHandler();
DebugManager.flags.SetCommandStreamReceiver.set(4);
pageFaultManager->selectGpuDomainHandler();
EXPECT_EQ(pageFaultManager->getTbxHandlerAddress(), reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
EXPECT_EQ(pageFaultManager->getAubAndTbxHandlerAddress(), reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
}
}
TEST(PageFaultManager, givenNonTbxCsrWhenSelectingHandlerThenHwGpuDomainHandlerIsSet) {
TEST(PageFaultManager, givenHwCsrWhenSelectingHandlerThenHwGpuDomainHandlerIsSet) {
DebugManagerStateRestore restorer;
DebugManager.flags.SetCommandStreamReceiver.set(0);
auto pageFaultManager = std::make_unique<MockPageFaultManager>();
auto defaultHandler = pageFaultManager->gpuDomainHandler;
EXPECT_EQ(pageFaultManager->getHwHandlerAddress(), reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
pageFaultManager->selectGpuDomainHandler();
for (auto csrType : {CommandStreamReceiverType::CSR_HW, CommandStreamReceiverType::CSR_HW_WITH_AUB}) {
DebugManager.flags.SetCommandStreamReceiver.set(csrType);
EXPECT_EQ(defaultHandler, pageFaultManager->gpuDomainHandler);
pageFaultManager = std::make_unique<MockPageFaultManager>();
pageFaultManager->selectGpuDomainHandler();
DebugManager.flags.SetCommandStreamReceiver.set(3);
pageFaultManager = std::make_unique<MockPageFaultManager>();
pageFaultManager->selectGpuDomainHandler();
EXPECT_EQ(defaultHandler, pageFaultManager->gpuDomainHandler);
}
EXPECT_EQ(defaultHandler, reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
}
}

View File

@@ -14,8 +14,8 @@ using namespace NEO;
class MockPageFaultManager : public PageFaultManager {
public:
using PageFaultManager::gpuDomainHandler;
using PageFaultManager::handleGpuDomainTransferForAubAndTbx;
using PageFaultManager::handleGpuDomainTransferForHw;
using PageFaultManager::handleGpuDomainTransferForTbx;
using PageFaultManager::memoryData;
using PageFaultManager::PageFaultData;
using PageFaultManager::PageFaultManager;
@@ -59,8 +59,8 @@ class MockPageFaultManager : public PageFaultManager {
return reinterpret_cast<void *>(PageFaultManager::handleGpuDomainTransferForHw);
}
void *getTbxHandlerAddress() {
return reinterpret_cast<void *>(PageFaultManager::handleGpuDomainTransferForTbx);
void *getAubAndTbxHandlerAddress() {
return reinterpret_cast<void *>(PageFaultManager::handleGpuDomainTransferForAubAndTbx);
}
int allowMemoryAccessCalled = 0;