Skip to content

Commit 6ba7614

Browse files
Pass proper handle to initContextAuxTableRegister function
Resolves: NEO-4082, NEO-4080, NEO-4079 Change-Id: If8d0b69126d6442e8a9a102cd21f78944f8551e9 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
1 parent aaed434 commit 6ba7614

File tree

8 files changed

+31
-12
lines changed

8 files changed

+31
-12
lines changed

runtime/gmm_helper/page_table_mngr.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
namespace NEO {
1717
class Gmm;
1818
class LinearStream;
19+
20+
void gmmSetCsrHandle(GMM_PAGETABLE_MGR *pageTableManager, HANDLE csrHandle);
1921
class GmmPageTableMngr {
2022
public:
2123
MOCKABLE_VIRTUAL ~GmmPageTableMngr();
@@ -43,5 +45,7 @@ class GmmPageTableMngr {
4345
GmmPageTableMngr(unsigned int translationTableFlags, GMM_TRANSLATIONTABLE_CALLBACKS *translationTableCb);
4446
GMM_CLIENT_CONTEXT *clientContext = nullptr;
4547
GMM_PAGETABLE_MGR *pageTableManager = nullptr;
48+
decltype(&gmmSetCsrHandle) gmmSetCsrHandleFunc = gmmSetCsrHandle;
49+
void *csrHandle = nullptr;
4650
};
4751
} // namespace NEO

runtime/gmm_helper/page_table_mngr_impl.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,15 @@ bool GmmPageTableMngr::updateAuxTable(uint64_t gpuVa, Gmm *gmm, bool map) {
3131

3232
void GmmPageTableMngr::initPageTableManagerRegisters() {
3333
if (!initialized) {
34-
initContextAuxTableRegister(this, GMM_ENGINE_TYPE::ENGINE_TYPE_RCS);
34+
initContextAuxTableRegister(csrHandle, GMM_ENGINE_TYPE::ENGINE_TYPE_RCS);
3535

3636
initialized = true;
3737
}
3838
}
3939

40+
void GmmPageTableMngr::setCsrHandle(void *csrHandleIn) {
41+
csrHandle = csrHandleIn;
42+
gmmSetCsrHandleFunc(pageTableManager, csrHandle);
43+
}
44+
4045
} // namespace NEO

runtime/os_interface/linux/page_table_manager_functions.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
#include "gmm_client_context.h"
1313

1414
namespace NEO {
15+
16+
void gmmSetCsrHandle(GMM_PAGETABLE_MGR *pageTableManager, HANDLE csrHandle) {
17+
}
18+
1519
GmmPageTableMngr::GmmPageTableMngr(unsigned int translationTableFlags, GMM_TRANSLATIONTABLE_CALLBACKS *translationTableCb) {
1620
clientContext = platform()->peekGmmClientContext()->getHandle();
1721
pageTableManager = clientContext->CreatePageTblMgrObject(translationTableFlags);
1822
}
19-
20-
void GmmPageTableMngr::setCsrHandle(void *csrHandle) {}
2123
} // namespace NEO

runtime/os_interface/windows/page_table_manager_functions.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@
1212
#include "gmm_client_context.h"
1313

1414
namespace NEO {
15+
16+
void gmmSetCsrHandle(GMM_PAGETABLE_MGR *pageTableManager, HANDLE csrHandle) {
17+
pageTableManager->GmmSetCsrHandle(csrHandle);
18+
}
19+
1520
GmmPageTableMngr::GmmPageTableMngr(unsigned int translationTableFlags, GMM_TRANSLATIONTABLE_CALLBACKS *translationTableCb) {
1621
clientContext = platform()->peekGmmClientContext()->getHandle();
1722
pageTableManager = clientContext->CreatePageTblMgrObject(translationTableCb, translationTableFlags);
1823
}
19-
20-
void GmmPageTableMngr::setCsrHandle(void *csrHandle) {
21-
pageTableManager->GmmSetCsrHandle(csrHandle);
22-
}
2324
} // namespace NEO

unit_tests/mocks/mock_gmm_page_table_mngr.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
#include "unit_tests/mocks/mock_gmm_page_table_mngr.h"
99

10+
void dummySetCsrHandle(GMM_PAGETABLE_MGR *, HANDLE){};
11+
1012
namespace NEO {
1113
using namespace ::testing;
1214

@@ -17,7 +19,7 @@ GmmPageTableMngr *GmmPageTableMngr::create(unsigned int translationTableFlags, G
1719
return pageTableMngr;
1820
}
1921
void MockGmmPageTableMngr::setCsrHandle(void *csrHandle) {
20-
passedCsrHandle = csrHandle;
22+
GmmPageTableMngr::setCsrHandle(csrHandle);
2123
setCsrHanleCalled++;
2224
}
2325
} // namespace NEO

unit_tests/mocks/mock_gmm_page_table_mngr.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,20 @@
1616
#pragma clang diagnostic ignored "-Winconsistent-missing-override"
1717
#endif
1818

19+
void dummySetCsrHandle(GMM_PAGETABLE_MGR *, HANDLE);
20+
1921
namespace NEO {
2022
class MockGmmPageTableMngr : public GmmPageTableMngr {
2123
public:
22-
MockGmmPageTableMngr() = default;
24+
using GmmPageTableMngr::csrHandle;
25+
MockGmmPageTableMngr() : MockGmmPageTableMngr(0u, nullptr){};
2326

2427
MockGmmPageTableMngr(unsigned int translationTableFlags, GMM_TRANSLATIONTABLE_CALLBACKS *translationTableCb)
2528
: translationTableFlags(translationTableFlags) {
2629
if (translationTableCb) {
2730
this->translationTableCb = *translationTableCb;
2831
}
32+
gmmSetCsrHandleFunc = dummySetCsrHandle;
2933
};
3034

3135
MOCK_METHOD2(initContextAuxTableRegister, GMM_STATUS(HANDLE initialBBHandle, GMM_ENGINE_TYPE engineType));
@@ -35,7 +39,6 @@ class MockGmmPageTableMngr : public GmmPageTableMngr {
3539
void setCsrHandle(void *csrHandle) override;
3640

3741
uint32_t setCsrHanleCalled = 0;
38-
void *passedCsrHandle = nullptr;
3942

4043
unsigned int translationTableFlags = 0;
4144
GMM_TRANSLATIONTABLE_CALLBACKS translationTableCb = {};

unit_tests/os_interface/linux/drm_command_stream_tests.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1397,7 +1397,9 @@ HWTEST_TEMPLATED_F(DrmCommandStreamTest, givenDrmCommandStreamReceiverWhenInitia
13971397
auto &rootDeviceEnvironment = executionEnvironment.rootDeviceEnvironments[1];
13981398

13991399
MockGmmPageTableMngr *mockMngr = static_cast<MockGmmPageTableMngr *>(rootDeviceEnvironment->pageTableManager.get());
1400-
EXPECT_CALL(*mockMngr, initContextAuxTableRegister(::testing::_, ::testing::_)).Times(1);
1400+
auto csrHandle = reinterpret_cast<void *>(0x1234);
1401+
mockMngr->setCsrHandle(csrHandle);
1402+
EXPECT_CALL(*mockMngr, initContextAuxTableRegister(csrHandle, ::testing::_)).Times(1);
14011403

14021404
EXPECT_FALSE(rootDeviceEnvironment->pageTableManager->initialized);
14031405
LinearStream linearStream = {};

unit_tests/os_interface/windows/device_command_stream_tests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -872,7 +872,7 @@ HWTEST_P(WddmCsrCompressionParameterizedTest, givenEnabledCompressionWhenInitial
872872

873873
auto mockMngr = reinterpret_cast<MockGmmPageTableMngr *>(executionEnvironment->rootDeviceEnvironments[index]->pageTableManager.get());
874874
EXPECT_EQ(1u, mockMngr->setCsrHanleCalled);
875-
EXPECT_EQ(&mockWddmCsr, mockMngr->passedCsrHandle);
875+
EXPECT_EQ(&mockWddmCsr, mockMngr->csrHandle);
876876

877877
GMM_TRANSLATIONTABLE_CALLBACKS expectedTTCallbacks = {};
878878
unsigned int expectedFlags = TT_TYPE::AUXTT;

0 commit comments

Comments
 (0)