Skip to content

Commit 997604c

Browse files
AUB CSR to use a common AUB and TBX gpu domain handler
Related-To: NEO-5667 Signed-off-by: Milczarek, Slawomir <[email protected]>
1 parent dece1d5 commit 997604c

File tree

4 files changed

+25
-30
lines changed

4 files changed

+25
-30
lines changed

shared/source/page_fault_manager/cpu_page_fault_manager.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ void PageFaultManager::handleGpuDomainTransferForHw(PageFaultManager *pageFaultH
9595
pageFaultHandler->allowCPUMemoryAccess(allocPtr, pageFaultData.size);
9696
}
9797

98-
void PageFaultManager::handleGpuDomainTransferForTbx(PageFaultManager *pageFaultHandler, void *allocPtr, PageFaultData &pageFaultData) {
98+
void PageFaultManager::handleGpuDomainTransferForAubAndTbx(PageFaultManager *pageFaultHandler, void *allocPtr, PageFaultData &pageFaultData) {
9999
pageFaultHandler->allowCPUMemoryAccess(allocPtr, pageFaultData.size);
100100

101101
if (pageFaultData.domain == AllocationDomain::Gpu) {
@@ -105,9 +105,10 @@ void PageFaultManager::handleGpuDomainTransferForTbx(PageFaultManager *pageFault
105105
}
106106

107107
void PageFaultManager::selectGpuDomainHandler() {
108-
if (DebugManager.flags.SetCommandStreamReceiver.get() == CommandStreamReceiverType::CSR_TBX ||
108+
if (DebugManager.flags.SetCommandStreamReceiver.get() == CommandStreamReceiverType::CSR_AUB ||
109+
DebugManager.flags.SetCommandStreamReceiver.get() == CommandStreamReceiverType::CSR_TBX ||
109110
DebugManager.flags.SetCommandStreamReceiver.get() == CommandStreamReceiverType::CSR_TBX_WITH_AUB) {
110-
this->gpuDomainHandler = &PageFaultManager::handleGpuDomainTransferForTbx;
111+
this->gpuDomainHandler = &PageFaultManager::handleGpuDomainTransferForAubAndTbx;
111112
}
112113
}
113114

shared/source/page_fault_manager/cpu_page_fault_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class PageFaultManager : public NonCopyableOrMovableClass {
5656
MOCKABLE_VIRTUAL void setAubWritable(bool writable, void *ptr, SVMAllocsManager *unifiedMemoryManager);
5757

5858
static void handleGpuDomainTransferForHw(PageFaultManager *pageFaultHandler, void *alloc, PageFaultData &pageFaultData);
59-
static void handleGpuDomainTransferForTbx(PageFaultManager *pageFaultHandler, void *alloc, PageFaultData &pageFaultData);
59+
static void handleGpuDomainTransferForAubAndTbx(PageFaultManager *pageFaultHandler, void *alloc, PageFaultData &pageFaultData);
6060
void selectGpuDomainHandler();
6161

6262
decltype(&handleGpuDomainTransferForHw) gpuDomainHandler = &handleGpuDomainTransferForHw;

shared/test/unit_test/page_fault_manager/cpu_page_fault_manager_tests.cpp

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ TEST_F(PageFaultManagerTest, givenInitialPlacementGpuWhenVerifyingPagefaultThenF
275275
TEST_F(PageFaultManagerTest, givenTbxWhenVerifyingPagefaultThenVerifyPagefaultUnprotectsAndTransfersMemory) {
276276
void *alloc = reinterpret_cast<void *>(0x1);
277277

278-
pageFaultManager->gpuDomainHandler = &MockPageFaultManager::handleGpuDomainTransferForTbx;
278+
pageFaultManager->gpuDomainHandler = &MockPageFaultManager::handleGpuDomainTransferForAubAndTbx;
279279

280280
MemoryProperties memoryProperties{};
281281
memoryProperties.allocFlags.usmInitialPlacementGpu = 1;
@@ -300,7 +300,7 @@ TEST_F(PageFaultManagerTest, givenTbxWhenVerifyingPagefaultThenVerifyPagefaultUn
300300
TEST_F(PageFaultManagerTest, givenTbxAndInitialPlacementGpuWhenVerifyingPagefaultThenMemoryIsUnprotectedOnly) {
301301
void *alloc = reinterpret_cast<void *>(0x1);
302302

303-
pageFaultManager->gpuDomainHandler = &MockPageFaultManager::handleGpuDomainTransferForTbx;
303+
pageFaultManager->gpuDomainHandler = &MockPageFaultManager::handleGpuDomainTransferForAubAndTbx;
304304

305305
MemoryProperties memoryProperties{};
306306
memoryProperties.allocFlags.usmInitialPlacementGpu = 1;
@@ -419,41 +419,35 @@ TEST_F(PageFaultManagerTest, givenUnifiedMemoryAllocWhenSetAubWritableIsCalledTh
419419
unifiedMemoryManager->freeSVMAlloc(alloc1);
420420
}
421421

422-
TEST(PageFaultManager, givenTbxCsrWhenSelectingHandlerThenTbxGpuDomainHandlerIsSet) {
422+
TEST(PageFaultManager, givenAubOrTbxCsrWhenSelectingHandlerThenAubAndTbxGpuDomainHandlerIsSet) {
423423
DebugManagerStateRestore restorer;
424424

425425
auto pageFaultManager = std::make_unique<MockPageFaultManager>();
426-
DebugManager.flags.SetCommandStreamReceiver.set(2);
427426

428-
pageFaultManager = std::make_unique<MockPageFaultManager>();
429-
pageFaultManager->selectGpuDomainHandler();
427+
for (auto csrType : {CommandStreamReceiverType::CSR_AUB, CommandStreamReceiverType::CSR_TBX, CommandStreamReceiverType::CSR_TBX_WITH_AUB}) {
428+
DebugManager.flags.SetCommandStreamReceiver.set(csrType);
430429

431-
EXPECT_EQ(pageFaultManager->getTbxHandlerAddress(), reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
430+
pageFaultManager = std::make_unique<MockPageFaultManager>();
431+
pageFaultManager->selectGpuDomainHandler();
432432

433-
DebugManager.flags.SetCommandStreamReceiver.set(4);
434-
435-
pageFaultManager->selectGpuDomainHandler();
436-
437-
EXPECT_EQ(pageFaultManager->getTbxHandlerAddress(), reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
433+
EXPECT_EQ(pageFaultManager->getAubAndTbxHandlerAddress(), reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
434+
}
438435
}
439436

440-
TEST(PageFaultManager, givenNonTbxCsrWhenSelectingHandlerThenHwGpuDomainHandlerIsSet) {
437+
TEST(PageFaultManager, givenHwCsrWhenSelectingHandlerThenHwGpuDomainHandlerIsSet) {
441438
DebugManagerStateRestore restorer;
442-
DebugManager.flags.SetCommandStreamReceiver.set(0);
443439

444440
auto pageFaultManager = std::make_unique<MockPageFaultManager>();
445441
auto defaultHandler = pageFaultManager->gpuDomainHandler;
446442

447443
EXPECT_EQ(pageFaultManager->getHwHandlerAddress(), reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
448444

449-
pageFaultManager->selectGpuDomainHandler();
450-
451-
EXPECT_EQ(defaultHandler, pageFaultManager->gpuDomainHandler);
445+
for (auto csrType : {CommandStreamReceiverType::CSR_HW, CommandStreamReceiverType::CSR_HW_WITH_AUB}) {
446+
DebugManager.flags.SetCommandStreamReceiver.set(csrType);
452447

453-
DebugManager.flags.SetCommandStreamReceiver.set(3);
448+
pageFaultManager = std::make_unique<MockPageFaultManager>();
449+
pageFaultManager->selectGpuDomainHandler();
454450

455-
pageFaultManager = std::make_unique<MockPageFaultManager>();
456-
pageFaultManager->selectGpuDomainHandler();
457-
458-
EXPECT_EQ(defaultHandler, pageFaultManager->gpuDomainHandler);
459-
}
451+
EXPECT_EQ(defaultHandler, reinterpret_cast<void *>(pageFaultManager->gpuDomainHandler));
452+
}
453+
}

shared/test/unit_test/page_fault_manager/mock_cpu_page_fault_manager.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ using namespace NEO;
1414
class MockPageFaultManager : public PageFaultManager {
1515
public:
1616
using PageFaultManager::gpuDomainHandler;
17+
using PageFaultManager::handleGpuDomainTransferForAubAndTbx;
1718
using PageFaultManager::handleGpuDomainTransferForHw;
18-
using PageFaultManager::handleGpuDomainTransferForTbx;
1919
using PageFaultManager::memoryData;
2020
using PageFaultManager::PageFaultData;
2121
using PageFaultManager::PageFaultManager;
@@ -59,8 +59,8 @@ class MockPageFaultManager : public PageFaultManager {
5959
return reinterpret_cast<void *>(PageFaultManager::handleGpuDomainTransferForHw);
6060
}
6161

62-
void *getTbxHandlerAddress() {
63-
return reinterpret_cast<void *>(PageFaultManager::handleGpuDomainTransferForTbx);
62+
void *getAubAndTbxHandlerAddress() {
63+
return reinterpret_cast<void *>(PageFaultManager::handleGpuDomainTransferForAubAndTbx);
6464
}
6565

6666
int allowMemoryAccessCalled = 0;

0 commit comments

Comments
 (0)