Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gmmlib for openSUSE:Factory checked 
in at 2023-11-14 21:43:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gmmlib (Old)
 and      /work/SRC/openSUSE:Factory/.gmmlib.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gmmlib"

Tue Nov 14 21:43:47 2023 rev:28 rq:1125894 version:22.3.13

Changes:
--------
--- /work/SRC/openSUSE:Factory/gmmlib/gmmlib.changes    2023-09-13 
20:48:16.694022395 +0200
+++ /work/SRC/openSUSE:Factory/.gmmlib.new.17445/gmmlib.changes 2023-11-14 
21:43:57.250666837 +0100
@@ -1,0 +2,7 @@
+Tue Nov 14 12:26:45 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 22.3.13:
+  * Fix Multiadapter ULT issue reproducibilty
+  * Add new PVC Device ID
+
+-------------------------------------------------------------------

Old:
----
  intel-gmmlib-22.3.11.tar.gz

New:
----
  intel-gmmlib-22.3.13.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gmmlib.spec ++++++
--- /var/tmp/diff_new_pack.TUnZAA/_old  2023-11-14 21:43:57.786686679 +0100
+++ /var/tmp/diff_new_pack.TUnZAA/_new  2023-11-14 21:43:57.786686679 +0100
@@ -19,7 +19,7 @@
 %global somajor 12
 %global libname libigdgmm%{somajor}
 Name:           gmmlib
-Version:        22.3.11
+Version:        22.3.13
 Release:        0
 Summary:        Intel Graphics Memory Management Library Package
 License:        MIT

++++++ intel-gmmlib-22.3.11.tar.gz -> intel-gmmlib-22.3.13.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gmmlib-intel-gmmlib-22.3.11/README.rst 
new/gmmlib-intel-gmmlib-22.3.13/README.rst
--- old/gmmlib-intel-gmmlib-22.3.11/README.rst  2023-08-30 12:31:58.000000000 
+0200
+++ new/gmmlib-intel-gmmlib-22.3.13/README.rst  2023-11-08 06:39:22.000000000 
+0100
@@ -33,7 +33,7 @@
 
 4) Run the cmake command to prepare build files
 
-   ``$ cmake [-DCMAKE_BUILD_TYPE= Release | Debug | ReleaseInternal] [-DARCH= 
64 | 32]  ..``
+   ``$ cmake [-DCMAKE_BUILD_TYPE= Release | Debug | ReleaseInternal] ..``
 
 5) Build the project
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.3.11/Source/GmmLib/ULT/GmmMultiAdapterULT.cpp 
new/gmmlib-intel-gmmlib-22.3.13/Source/GmmLib/ULT/GmmMultiAdapterULT.cpp
--- old/gmmlib-intel-gmmlib-22.3.11/Source/GmmLib/ULT/GmmMultiAdapterULT.cpp    
2023-08-30 12:31:58.000000000 +0200
+++ new/gmmlib-intel-gmmlib-22.3.13/Source/GmmLib/ULT/GmmMultiAdapterULT.cpp    
2023-11-08 06:39:22.000000000 +0100
@@ -25,71 +25,51 @@
 #endif
 #include <stdlib.h>
 
-ADAPTER_INFO *      
MACommonULT::pGfxAdapterInfo[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-PLATFORM            
MACommonULT::GfxPlatform[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-GMM_LIB_CONTEXT *   
MACommonULT::pLibContext[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-GMM_CLIENT_CONTEXT 
*MACommonULT::pGmmULTClientContext[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-PFNGMMINIT          
MACommonULT::pfnGmmInit[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-PFNGMMDESTROY       
MACommonULT::pfnGmmDestroy[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-GMM_INIT_IN_ARGS    
MACommonULT::InArgs[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-GMM_INIT_OUT_ARGS   
MACommonULT::OutArgs[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-GMM_DLL_HANDLE      
MACommonULT::hGmmLib[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-
-// Comman array for all thread related ULTs to supply Adapter-Client Context 
input.
-ThreadInParams MACommonULT::InParams[MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER];
-
-// Array to store the adapter BDFs from simulated UMD, Save the adapter bdf in 
an array.
-ADAPTER_BDF MACommonULT::AdpaterSaved[MAX_NUM_ADAPTERS];
-
 MACommonULT::MACommonULT()
 {
-}
-
-MACommonULT::~MACommonULT()
-{
-}
-
-void MACommonULT::SetUpTestCase()
-{
-}
+    // Ideally this should be in the SetUp function for each test case, but 
since there are
+    // wrapper classes around this for the test suites and SetUp does not get 
called on this
+    // class, it needs to go in the constructor which gets created for each 
test case.
+
+    //reset all test info
+    memset(GmmTestInfo, 0, sizeof(GmmTestInfo));
+    memset(AdapterSaved, 0, sizeof(AdapterSaved));
+
+    hGmmLib       = NULL;
+    pfnGmmDestroy = NULL;
+    pfnGmmInit    = NULL;
 
-void MACommonULT::TearDownTestCase()
-{
-}
+    //set a seed value so the test is always reproducible
+    srand(0);
 
-CTestMA::CTestMA()
-{
-    uint32_t i = 0;
-
-    memset(AdpaterSaved, 0, sizeof(AdpaterSaved));
     // Save the random Generated bdf value in an array during intantiation 
itself
     // These value remain live for each of the ULT lifetime.
-    for(i = 0; i < MAX_NUM_ADAPTERS; i++)
+    for (int i = 0; i < MAX_NUM_ADAPTERS; i++)
     {
-        AdpaterSaved[i].Bus      = rand() / 100;
-        AdpaterSaved[i].Device   = rand() / 100;
-        AdpaterSaved[i].Function = rand() / 100;
-        AdpaterSaved[i].Reserved = 0;
+        AdapterSaved[i].Bus      = rand() / 100;
+        AdapterSaved[i].Device   = rand() / 100;
+        AdapterSaved[i].Function = rand() / 100;
+        AdapterSaved[i].Reserved = 0;
     }
 
     // Validate the generated BDfs are unique
     // No two Adapter's BDF should be equal on a PCI bus.
-    for(i = 0; i < MAX_NUM_ADAPTERS; i++)
+    for (int i = 0; i < MAX_NUM_ADAPTERS; i++)
     {
-        for(uint32_t j = 0; j < MAX_NUM_ADAPTERS; j++)
+        for (int j = 0; j < MAX_NUM_ADAPTERS; j++)
         {
-            if(i != j)
+            if (i != j)
             {
-                if(AdpaterSaved[i].Bus == AdpaterSaved[j].Bus)
+                if (AdapterSaved[i].Bus == AdapterSaved[j].Bus)
                 {
-                    if(AdpaterSaved[i].Device == AdpaterSaved[j].Device)
+                    if (AdapterSaved[i].Device == AdapterSaved[j].Device)
                     {
-                        if(AdpaterSaved[i].Function == 
AdpaterSaved[j].Function)
+                        if (AdapterSaved[i].Function == 
AdapterSaved[j].Function)
                         {
                             // OOps! Generated BDFs are equal.
                             // Lets change any one field to make it unique
                             // Lets increment Bus.
-                            AdpaterSaved[j].Bus++;
+                            AdapterSaved[j].Bus++;
                         }
                     }
                 }
@@ -98,6 +78,14 @@
     }
 }
 
+MACommonULT::~MACommonULT()
+{
+}
+
+CTestMA::CTestMA()
+{
+}
+
 CTestMA::~CTestMA()
 {
 }
@@ -110,101 +98,251 @@
 {
 }
 
-void MACommonULT::LoadGmmDll(uint32_t AdapterIdx, uint32_t CountIdx)
+void CTestMA::SetUp()
 {
-    hGmmLib[AdapterIdx][CountIdx] = dlopen(GMM_UMD_DLL, RTLD_LAZY);
-    ASSERT_TRUE(hGmmLib[AdapterIdx][CountIdx]);
-
-    *(void **)(&pfnGmmInit[AdapterIdx][CountIdx])    = 
dlsym(hGmmLib[AdapterIdx][CountIdx], "InitializeGmm");
-    *(void **)(&pfnGmmDestroy[AdapterIdx][CountIdx]) = 
dlsym(hGmmLib[AdapterIdx][CountIdx], "GmmAdapterDestroy");
-
-    ASSERT_TRUE(pfnGmmInit[AdapterIdx][CountIdx]);
-    ASSERT_TRUE(pfnGmmDestroy[AdapterIdx][CountIdx]);
+    LoadGmmDll();
 }
 
-void MACommonULT::UnLoadGmmDll(uint32_t AdapterIdx, uint32_t CountIdx)
+void CTestMA::TearDown()
 {
-    if(hGmmLib[AdapterIdx][CountIdx])
-    {
-        dlclose(hGmmLib[AdapterIdx][CountIdx]);
-        hGmmLib[AdapterIdx][CountIdx] = NULL;
+    UnLoadGmmDll();
+}
+
+void MACommonULT::LoadGmmDll()
+{
+    hGmmLib = dlopen(GMM_UMD_DLL, RTLD_LAZY);
+    ASSERT_TRUE(hGmmLib);
+
+    *(void **)(&pfnGmmInit)    = dlsym(hGmmLib, "InitializeGmm");
+    *(void **)(&pfnGmmDestroy) = dlsym(hGmmLib, "GmmAdapterDestroy");
+
+    ASSERT_TRUE(pfnGmmInit);
+    ASSERT_TRUE(pfnGmmDestroy);
+}
+
+void MACommonULT::UnLoadGmmDll()
+{
+    if (hGmmLib)
+    {      
+        dlclose(hGmmLib);
+
+        hGmmLib       = NULL;
+        pfnGmmInit    = NULL;
+        pfnGmmDestroy = NULL;
+    }
+}
+
+// Lets test with the recent GPUs till 32nd adapters and take IGFX_COFFEELAKE 
for 32+ adapters
+// Only for our ULT to supply dummy ProductFamily
+PRODUCT_FAMILY MACommonULT::GetProductFamily(uint32_t AdapterIdx)
+{
+    switch (AdapterIdx)
+    {
+    case 0:
+        return IGFX_DG1;
+    case 1:
+        return IGFX_ICELAKE;
+    case 2:
+        return IGFX_TIGERLAKE_LP;
+    case 3:
+    case 4:
+    case 5:
+    case 6:
+    case 7:
+    case 8:
+    case 9:
+        return IGFX_DG2;
+    case 11:
+    case 12:
+    case 13:
+    case 14:
+    case 15:
+    case 16:
+        return IGFX_XE_HP_SDV;
+    case 17:
+    case 18:
+    case 19:
+    case 20:
+    case 21:
+    case 22:
+    case 23:
+    case 24:
+    case 25:
+    case 26:
+    case 27:
+    case 28:
+    case 29:
+        return IGFX_PVC;
+    case 30:
+    case 31:
+    default:
+        break;
+    }
+    return IGFX_COFFEELAKE;
+}
+
+// Lets test with the recent GPUs till 32nd adpater and take IGFX_GEN9_CORE 
for 32+ adapters
+// Only for our ULT to supply dummy GFXCORE_FAMILY
+GFXCORE_FAMILY MACommonULT::GetRenderCoreFamily(uint32_t AdapterIdx)
+{
+    switch (AdapterIdx)
+    {
+    case 0:
+        return IGFX_XE_HP_CORE;
+    case 1:
+        return IGFX_GEN11LP_CORE;
+    case 2:
+        return IGFX_GEN12LP_CORE;
+    case 3:
+    case 4:
+    case 5:
+    case 6:
+    case 7:
+    case 8:
+    case 9:
+        return IGFX_XE_HPG_CORE;
+    case 11:
+    case 12:
+    case 13:
+    case 14:
+    case 15:
+    case 16:
+        return IGFX_XE_HP_CORE;
+    case 17:
+    case 18:
+    case 19:
+    case 20:
+    case 21:
+    case 22:
+    case 23:
+    case 24:
+    case 25:
+    case 26:
+    case 27:
+    case 28:
+    case 29:
+        return IGFX_XE_HPC_CORE;
+    case 30:
+    case 31:
+    default:
+        break;
+    }
+    return IGFX_GEN9_CORE;
+}
+
+// To simulate the UMDs/ClinentContexts per adapter i.e MAX_COUNT_PER_ADAPTER
+// Increase MAX_COUNT_PER_ADAPTER value if there are more UMDs involved
+GMM_CLIENT MACommonULT::GetClientType(uint32_t CountIdx)
+{
+    switch (CountIdx)
+    {
+    case 0:
+        return GMM_D3D9_VISTA;
+    case 1:
+        return GMM_D3D10_VISTA;
+    case 2:
+        return GMM_D3D12_VISTA;
+    case 3:
+        return GMM_EXCITE_VISTA;
+    case 4:
+        return GMM_OCL_VISTA;
+    default:
+        break;
+    }
+    return GMM_D3D9_VISTA;
+}
+
+// Returns the AdapterSaved array value, Adapter BDFs based on input AdapterIdx
+ADAPTER_BDF MACommonULT::GetAdapterBDF(uint32_t AdapterIdx)
+{
+    ADAPTER_BDF AdapterBDF = {0, 2, 0, 0};
+
+    if (AdapterIdx < MAX_NUM_ADAPTERS)
+    {
+        AdapterBDF.Bus      = AdapterSaved[AdapterIdx].Bus;
+        AdapterBDF.Device   = AdapterSaved[AdapterIdx].Device;
+        AdapterBDF.Function = AdapterSaved[AdapterIdx].Function;
     }
+    return AdapterBDF;
 }
 
 void MACommonULT::GmmInitModule(uint32_t AdapterIdx, uint32_t CountIdx)
 {
     ASSERT_TRUE(AdapterIdx < MAX_NUM_ADAPTERS);
-    GMM_STATUS  Status                                  = GMM_SUCCESS;
-    ADAPTER_BDF AdapterBDF                              = 
GetAdapterBDF(AdapterIdx);
-    GfxPlatform[AdapterIdx][CountIdx].eProductFamily    = 
GetProductFamily(AdapterIdx);
-    GfxPlatform[AdapterIdx][CountIdx].eRenderCoreFamily = 
GetRenderCoreFamily(AdapterIdx);
+    GMM_STATUS  Status                                              = 
GMM_SUCCESS;
+    ADAPTER_BDF AdapterBDF                                          = 
GetAdapterBDF(AdapterIdx);
+    GmmTestInfo[AdapterIdx][CountIdx].GfxPlatform.eProductFamily    = 
GetProductFamily(AdapterIdx);
+    GmmTestInfo[AdapterIdx][CountIdx].GfxPlatform.eRenderCoreFamily = 
GetRenderCoreFamily(AdapterIdx);
 
-    if(!pGfxAdapterInfo[AdapterIdx][CountIdx])
+    if (!GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo)
     {
-        pGfxAdapterInfo[AdapterIdx][CountIdx] = (ADAPTER_INFO 
*)malloc(sizeof(ADAPTER_INFO));
-        if(!pGfxAdapterInfo[AdapterIdx][CountIdx])
+        GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo = (ADAPTER_INFO 
*)malloc(sizeof(ADAPTER_INFO));
+        if (!GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo)
         {
             ASSERT_TRUE(false);
             return;
         }
-        memset(pGfxAdapterInfo[AdapterIdx][CountIdx], 0, sizeof(ADAPTER_INFO));
-        pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrTileY = 1; // 
Legacy TileY
-       
-       if(GfxPlatform[AdapterIdx][CountIdx].eRenderCoreFamily >= 
IGFX_GEN12_CORE)
+        memset(GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo, 0, 
sizeof(ADAPTER_INFO));
+
+        GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrTileY = 
1; // Legacy TileY
+
+        if (GmmTestInfo[AdapterIdx][CountIdx].GfxPlatform.eRenderCoreFamily >= 
IGFX_GEN12_CORE)
         {
 
-            pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrWddm2GpuMmu     
         = 1;
-            
pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrUserModeTranslationTable = 1;
-            pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrE2ECompression  
         = 1;
-            pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrLinearCCS       
         = 1;
-            pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrTileY           
         = 1;
-            pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrLLCBypass       
         = 0;
-           pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrWddm2Svm         
        = 0;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrWddm2GpuMmu      
        = 1;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrUserModeTranslationTable
 = 1;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrE2ECompression   
        = 1;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrLinearCCS        
        = 1;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrTileY            
        = 1;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrLLCBypass        
        = 0;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrWddm2Svm         
        = 0; // keep this disabled for pagetablemgr testing
+            GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrSVM 
                     = 1; // keep this enabled for pagetablemgr testing
+            
//GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.WaUntypedBufferCompression
   = 1;
         }
 
-        if(IGFX_DG1 == GfxPlatform[AdapterIdx][CountIdx].eProductFamily)
+        if (IGFX_DG1 == 
GmmTestInfo[AdapterIdx][CountIdx].GfxPlatform.eProductFamily)
         {
-            pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrLinearCCS       
      = 1;
-            
pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrStandardMipTailFormat = 1;
-            pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrTileY           
      = 0;
-            pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrLocalMemory     
      = 1;
-            
pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable.FtrWddm2_1_64kbPages     = 1;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrLinearCCS        
     = 1;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrStandardMipTailFormat
 = 1;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrTileY            
     = 0;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrLocalMemory      
     = 1;
+            
GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable.FtrWddm2_1_64kbPages
     = 1;
         }
-
     }
 
-    InArgs[AdapterIdx][CountIdx].ClientType = GetClientType(CountIdx);
-    InArgs[AdapterIdx][CountIdx].pGtSysInfo = 
&pGfxAdapterInfo[AdapterIdx][CountIdx]->SystemInfo;
-    InArgs[AdapterIdx][CountIdx].pSkuTable  = 
&pGfxAdapterInfo[AdapterIdx][CountIdx]->SkuTable;
-    InArgs[AdapterIdx][CountIdx].pWaTable   = 
&pGfxAdapterInfo[AdapterIdx][CountIdx]->WaTable;
-    InArgs[AdapterIdx][CountIdx].Platform   = 
GfxPlatform[AdapterIdx][CountIdx];
+
+    GmmTestInfo[AdapterIdx][CountIdx].InArgs.ClientType = 
GetClientType(CountIdx);
+    GmmTestInfo[AdapterIdx][CountIdx].InArgs.pGtSysInfo = 
&GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SystemInfo;
+    GmmTestInfo[AdapterIdx][CountIdx].InArgs.pSkuTable  = 
&GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->SkuTable;
+    GmmTestInfo[AdapterIdx][CountIdx].InArgs.pWaTable   = 
&GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo->WaTable;
+    GmmTestInfo[AdapterIdx][CountIdx].InArgs.Platform   = 
GmmTestInfo[AdapterIdx][CountIdx].GfxPlatform;
 #if LHDM
-    InArgs[AdapterIdx][CountIdx].stAdapterBDF       = AdapterBDF;
-    InArgs[AdapterIdx][CountIdx].DeviceRegistryPath = NULL;
+    GmmTestInfo[AdapterIdx][CountIdx].InArgs.stAdapterBDF       = AdapterBDF;
+    GmmTestInfo[AdapterIdx][CountIdx].InArgs.DeviceRegistryPath = NULL;
 #else
-    InArgs[AdapterIdx][CountIdx].FileDescriptor = AdapterBDF.Data;
+    GmmTestInfo[AdapterIdx][CountIdx].InArgs.FileDescriptor = AdapterBDF.Data;
 #endif
 
-    Status = pfnGmmInit[AdapterIdx][CountIdx](&InArgs[AdapterIdx][CountIdx], 
&OutArgs[AdapterIdx][CountIdx]);
+    Status = pfnGmmInit(&GmmTestInfo[AdapterIdx][CountIdx].InArgs, 
&GmmTestInfo[AdapterIdx][CountIdx].OutArgs);
     EXPECT_EQ(Status, GMM_SUCCESS);
 
-    pGmmULTClientContext[AdapterIdx][CountIdx] = 
OutArgs[AdapterIdx][CountIdx].pGmmClientContext;
-    ASSERT_TRUE(pGmmULTClientContext[AdapterIdx][CountIdx]);
+    GmmTestInfo[AdapterIdx][CountIdx].pGmmULTClientContext = 
GmmTestInfo[AdapterIdx][CountIdx].OutArgs.pGmmClientContext;
+    ASSERT_TRUE(GmmTestInfo[AdapterIdx][CountIdx].pGmmULTClientContext);
 
-    pLibContext[AdapterIdx][CountIdx] = 
pGmmULTClientContext[AdapterIdx][CountIdx]->GetLibContext();
-    ASSERT_TRUE(pLibContext[AdapterIdx][CountIdx]);
+    GmmTestInfo[AdapterIdx][CountIdx].pLibContext = 
GmmTestInfo[AdapterIdx][CountIdx].pGmmULTClientContext->GetLibContext();
+    ASSERT_TRUE(GmmTestInfo[AdapterIdx][CountIdx].pLibContext);
 }
 
 void MACommonULT::GmmDestroyModule(uint32_t AdapterIdx, uint32_t CountIdx)
 {
-    OutArgs[AdapterIdx][CountIdx].pGmmClientContext = 
pGmmULTClientContext[AdapterIdx][CountIdx];
-    pfnGmmDestroy[AdapterIdx][CountIdx](&OutArgs[AdapterIdx][CountIdx]);
-    pGmmULTClientContext[AdapterIdx][CountIdx] = NULL;
-    pLibContext[AdapterIdx][CountIdx]          = NULL;
-    if(pGfxAdapterInfo[AdapterIdx][CountIdx])
+    GmmTestInfo[AdapterIdx][CountIdx].OutArgs.pGmmClientContext = 
GmmTestInfo[AdapterIdx][CountIdx].pGmmULTClientContext;
+    pfnGmmDestroy(&GmmTestInfo[AdapterIdx][CountIdx].OutArgs);
+    GmmTestInfo[AdapterIdx][CountIdx].pGmmULTClientContext = NULL;
+    GmmTestInfo[AdapterIdx][CountIdx].pLibContext          = NULL;
+    if (GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo)
     {
-        free(pGfxAdapterInfo[AdapterIdx][CountIdx]);
-        pGfxAdapterInfo[AdapterIdx][CountIdx] = NULL;
+        free(GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo);
+        GmmTestInfo[AdapterIdx][CountIdx].pGfxAdapterInfo = NULL;
     }
 }
 
@@ -213,7 +351,7 @@
 // MaxClientsThreads = MAX_NUM_ADAPTERS for ULT TestMTLoadMultipleAdapters
 // MaxClientsThreads = MAX_COUNT_PER_ADAPTER for ULT 
TestMTLoadAdaptersMultipleTimes
 // MaxClientsThreads = MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER, for ULT 
TestMTLoadMultipleAdaptersMultipleTimes
-void MACommonULT::CreateMAThread(uint32_t MaxClientThreads)
+static void CreateMAThread(uint32_t MaxClientThreads, ThreadInParams *InParams)
 {
     // Spawn all threads upto MaxClientThreads and wait for them all at once
     uint32_t  i = 0;
@@ -221,28 +359,26 @@
     pthread_t thread_id[MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER]; /* thread's 
ID (just an integer)          */
 
     /* MaxClientsThreads to represent MAX_NUM_ADAPTERS *MAX_COUNT_PER_ADAPTER 
Clients */
-    for(i = 0; i < (MaxClientThreads); i++)
+    for (i = 0; i < (MaxClientThreads); i++)
     {
-        Status = pthread_create(&thread_id[i], NULL, Thread1, (void 
*)&InParams[i]);
+        Status = pthread_create(&thread_id[i], NULL, MAULTThreadEntryFunc, 
(void *)&InParams[i]);
         ASSERT_TRUE((!Status));
     }
 
     /* wait for threads to terminate */
-    for(i = 0; i < (MaxClientThreads); i++)
+    for (i = 0; i < (MaxClientThreads); i++)
     {
         Status = pthread_join(thread_id[i], NULL);
         ASSERT_TRUE((!Status));
     }
 }
 
-void *Thread1(void *lpParam)
+void *MAULTThreadEntryFunc(void *lpParam)
 {
     ThreadInParams *pInParams = (ThreadInParams *)(lpParam);
 
-    MACommonULT::LoadGmmDll(pInParams->AdapterIdx, pInParams->CountIdx);
-    MACommonULT::GmmInitModule(pInParams->AdapterIdx, pInParams->CountIdx);
-    MACommonULT::GmmDestroyModule(pInParams->AdapterIdx, pInParams->CountIdx);
-    MACommonULT::UnLoadGmmDll(pInParams->AdapterIdx, pInParams->CountIdx);
+    pInParams->MATestObj->GmmInitModule(pInParams->AdapterIdx, 
pInParams->CountIdx);
+    pInParams->MATestObj->GmmDestroyModule(pInParams->AdapterIdx, 
pInParams->CountIdx);
 
     pthread_exit(NULL);
 }
@@ -267,41 +403,29 @@
     uint32_t AdapterCount = 0;
     uint32_t i            = 0;
 
-    // Load the dll for all available adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
-    {
-        LoadGmmDll(AdapterCount, 0);
-    }
-
     // Initilize the dll for all available adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+    for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
     {
         GmmInitModule(AdapterCount, 0);
     }
 
     // Check the Libcontext for each of the adapter is different or not
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+    for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
     {
-        for(i = 0; i < MAX_NUM_ADAPTERS; i++)
+        for (i = 0; i < MAX_NUM_ADAPTERS; i++)
         {
-            if(AdapterCount != i)
+            if (AdapterCount != i)
             {
-                EXPECT_NE(pLibContext[AdapterCount][0], pLibContext[i][0]);
+                EXPECT_NE(GmmTestInfo[AdapterCount][0].pLibContext, 
GmmTestInfo[i][0].pLibContext);
             }
         }
     }
 
     // Un-Initilize the dll for all loaded adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+    for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
     {
         GmmDestroyModule(AdapterCount, 0);
     }
-
-    // Unload the dll for all loaded adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
-    {
-        UnLoadGmmDll(AdapterCount, 0);
-    }
 }
 
 /// Load all adapters(MAX_NUM_ADAPTERS) multiple times up to 
MAX_COUNT_PER_ADAPTER in same process
@@ -309,51 +433,33 @@
 {
     uint32_t AdapterCount = 0, RefCount = 0;
 
-    // Load the dll upto MAX_COUNT_PER_ADAPTER times for each of 
MAX_NUM_ADAPTERS adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
-    {
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
-        {
-            LoadGmmDll(AdapterCount, RefCount);
-        }
-    }
-
     // Initilize the dll upto MAX_COUNT_PER_ADAPTER times for each of 
MAX_NUM_ADAPTERS adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+    for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
     {
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
+        for (RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
         {
             GmmInitModule(AdapterCount, RefCount);
         }
     }
     // For each adapter upto MAX_NUM_ADAPTERS Check the LibContext for all 
instances upto
     // MAX_COUNT_PER_ADAPTER to be equal
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+    for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
     {
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER - 1; RefCount++)
+        for (RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER - 1; RefCount++)
         {
-            EXPECT_EQ(pLibContext[AdapterCount][RefCount], 
pLibContext[AdapterCount][RefCount + 1]);
+            EXPECT_EQ(GmmTestInfo[AdapterCount][RefCount].pLibContext, 
GmmTestInfo[AdapterCount][RefCount + 1].pLibContext);
         }
     }
 
     // Un-Initilize the dll upto MAX_COUNT_PER_ADAPTER times for each of 
MAX_NUM_ADAPTERS adapters
     // The destroy/unload can be out of order
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+    for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
     {
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
+        for (RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
         {
             GmmDestroyModule(AdapterCount, RefCount);
         }
     }
-
-    // Unload the dll upto MAX_COUNT_PER_ADAPTER times for each of 
MAX_NUM_ADAPTERS adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
-    {
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
-        {
-            UnLoadGmmDll(AdapterCount, RefCount);
-        }
-    }
 }
 
 /// Test Init-Destroy multiple times Upto MAX_COUNT_PER_ADAPTER before 
Unloading DLL, on Same Adapter upto MAX_NUM_ADAPTERS
@@ -361,23 +467,14 @@
 {
     uint32_t AdapterCount = 0, RefCount = 0;
 
-    // Load the dll upto MAX_COUNT_PER_ADAPTER times for each of 
MAX_NUM_ADAPTERS adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
-    {
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
-        {
-            LoadGmmDll(AdapterCount, RefCount);
-        }
-    }
-
     // Initilize and destroy module upto MAX_COUNT_PER_ADAPTER times for each 
of MAX_NUM_ADAPTERS adapters
     // For each adapter(AdapterCount <  MAX_NUM_ADAPTERS) Check the LibContext 
for all instances to be equal
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+    for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
     {
         // Initilize the dll upto MAX_COUNT_PER_ADAPTER times for each adapter
         // In reality the init and destroy can occurs any number of time on a 
particular adapter, so for simplcity treating that UMD
         // will load already loaded lib again for MAX_COUNT_PER_ADAPTER times.
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
+        for (RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
         {
             GmmInitModule(AdapterCount, RefCount);
         }
@@ -388,26 +485,17 @@
         // Also our ULT is a Light-Weight process due to which the freed 
memory not assigned to other processes may get assigned again.
         // But mind that this is possible only when the previous libcontext 
intialized is compulsorily inactive and destroyed.
         // otherwise the same secnario as in TestLoadMultipleAdapters occurs 
.i.e different pointer value is returned on new adpater bdf.
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER - 1; RefCount++)
+        for (RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER - 1; RefCount++)
         {
-            EXPECT_EQ(pLibContext[AdapterCount][RefCount], 
pLibContext[AdapterCount][RefCount + 1]);
+            EXPECT_EQ(GmmTestInfo[AdapterCount][RefCount].pLibContext, 
GmmTestInfo[AdapterCount][RefCount + 1].pLibContext);
         }
 
         // Un-Initilize the dll upto MAX_COUNT_PER_ADAPTER times for each 
adapter
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
+        for (RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
         {
             GmmDestroyModule(AdapterCount, RefCount);
         }
     }
-
-    // Unload the dll upto MAX_COUNT_PER_ADAPTER times for each of 
MAX_NUM_ADAPTERS adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
-    {
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
-        {
-            UnLoadGmmDll(AdapterCount, RefCount);
-        }
-    }
 }
 
 /// Test Init-Destroy multiple times before Unloading DLL, on Multiple Adapters
@@ -415,46 +503,28 @@
 {
     uint32_t AdapterCount = 0, RefCount = 0;
 
-    // Load the dll upto MAX_COUNT_PER_ADAPTER times for each of 
MAX_NUM_ADAPTERS adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
-    {
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
-        {
-            LoadGmmDll(AdapterCount, RefCount);
-        }
-    }
-
     // Initilize and destroy the dll upto MAX_COUNT_PER_ADAPTER times for each 
of MAX_NUM_ADAPTERS adapters
     // For each adapter(AdapterCount <  MAX_NUM_ADAPTERS) Check the LibContext 
for all instances to is unique
     // This is similar to TestInitDestroyMultipleTimesOnSameAdapter ULT apart 
from the order of adapter initialization.
-    for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
+    for (RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
     {
         // Initilize the dll upto MAX_COUNT_PER_ADAPTER times for each adapter
-        for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+        for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
         {
             GmmInitModule(AdapterCount, RefCount);
         }
         // Check the LibContext for each of the adpater(upto MAX_NUM_ADAPTERS) 
to be unique
         // whereas LibContext for all instances on a same adapter is to be 
equal
-        for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS - 1; 
AdapterCount++)
+        for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS - 1; 
AdapterCount++)
         {
-            EXPECT_NE(pLibContext[AdapterCount][RefCount], 
pLibContext[AdapterCount + 1][RefCount]);
+            EXPECT_NE(GmmTestInfo[AdapterCount][RefCount].pLibContext, 
GmmTestInfo[AdapterCount + 1][RefCount].pLibContext);
         }
 
-        for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+        for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
         {
             GmmDestroyModule(AdapterCount, RefCount);
         }
     }
-
-    // Unload the dll upto MAX_COUNT_PER_ADAPTER times for each of 
MAX_NUM_ADAPTERS adapters
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
-    {
-        for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
-        {
-            UnLoadGmmDll(AdapterCount, RefCount);
-        }
-    }
 }
 
 /*
@@ -466,56 +536,62 @@
 // Here the number of client per adapter is 1 .i.e 0th count Index
 TEST_F(CTestMA, TestMTLoadMultipleAdapters)
 {
-    uint32_t AdapterCount = 0;
+    uint32_t       AdapterCount = 0;
+    ThreadInParams InParams[MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER];
 
     memset(InParams, 0, sizeof(InParams));
 
     //Populate the Inparams array with the MAX_NUM_ADAPTERS indices
-    for(AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
+    for (AdapterCount = 0; AdapterCount < MAX_NUM_ADAPTERS; AdapterCount++)
     {
         InParams[AdapterCount].AdapterIdx = AdapterCount;
         InParams[AdapterCount].CountIdx   = 0;
+        InParams[AdapterCount].MATestObj  = this;
     }
 
     // Create threads to load all Adapters upto MAX_NUM_ADAPTERS for a single 
client each
-    CreateMAThread(MAX_NUM_ADAPTERS);
+    CreateMAThread(MAX_NUM_ADAPTERS, InParams);
 }
 
 // Load a Single Adapter multiple times upto MAX_COUNT_PER_ADAPTER on multiple 
threads in same process
 TEST_F(CTestMA, TestMTLoadAdaptersMultipleTimes)
 {
-    uint32_t RefCount = 0;
+    uint32_t       RefCount = 0;
+    ThreadInParams InParams[MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER];
 
     memset(InParams, 0, sizeof(InParams));
 
     //Populate the Inparams array with MAX_COUNT_PER_ADAPTER indices
-    for(RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
+    for (RefCount = 0; RefCount < MAX_COUNT_PER_ADAPTER; RefCount++)
     {
         InParams[RefCount].AdapterIdx = 0;
         InParams[RefCount].CountIdx   = RefCount;
+        InParams[RefCount].MATestObj  = this;
     }
     // Create threads to load all clients i.e MAX_COUNT_PER_ADAPTER on single 
adpater
-    CreateMAThread(MAX_COUNT_PER_ADAPTER);
+    CreateMAThread(MAX_COUNT_PER_ADAPTER, InParams);
 }
 
 // Load Multiple Adapters upto MAX_NUM_ADAPTERS, multiple times upto 
MAX_COUNT_PER_ADAPTER on multiple threads in same process
 TEST_F(CTestMA, TestMTLoadMultipleAdaptersMultipleTimes)
 {
-    uint32_t i = 0, j = 0, k = 0;
-    uint32_t AdapterCount = 0, RefCount = 0;
+    uint32_t       i = 0, j = 0, k = 0;
+    uint32_t       AdapterCount = 0, RefCount = 0;
+    ThreadInParams InParams[MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER];
 
     memset(InParams, 0, sizeof(InParams));
 
     //Populate the Inparams array with the 
MAX_NUM_ADAPTERS*MAX_COUNT_PER_ADAPTER indices
     //Such that Each Adapter corresponds to its max mumber of clients in a 
sequential order
-    for(i = 0; i < (MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER); i++)
+    for (i = 0; i < (MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER); i++)
     {
-        for(j = 0; j < MAX_NUM_ADAPTERS; j++)
+        for (j = 0; j < MAX_NUM_ADAPTERS; j++)
         {
-            for(k = 0; k < MAX_COUNT_PER_ADAPTER; k++)
+            for (k = 0; k < MAX_COUNT_PER_ADAPTER; k++)
             {
                 InParams[i].AdapterIdx = AdapterCount;
                 InParams[i].CountIdx   = RefCount++;
+                InParams[i].MATestObj  = this;
                 i++;
             }
             RefCount = 0;
@@ -525,7 +601,7 @@
 
     // Create threads to load MAX_NUM_ADAPTERS, MAX_COUNT_PER_ADAPTER times
     // Thread Count = MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER
-    CreateMAThread(MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER);
+    CreateMAThread(MAX_NUM_ADAPTERS * MAX_COUNT_PER_ADAPTER, InParams);
 }
 
 #endif // GMM_LIB_DLL_MA
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.3.11/Source/GmmLib/ULT/GmmMultiAdapterULT.h 
new/gmmlib-intel-gmmlib-22.3.13/Source/GmmLib/ULT/GmmMultiAdapterULT.h
--- old/gmmlib-intel-gmmlib-22.3.11/Source/GmmLib/ULT/GmmMultiAdapterULT.h      
2023-08-30 12:31:58.000000000 +0200
+++ new/gmmlib-intel-gmmlib-22.3.13/Source/GmmLib/ULT/GmmMultiAdapterULT.h      
2023-11-08 06:39:22.000000000 +0100
@@ -24,8 +24,9 @@
 
 #include "stdafx.h"
 #include "GmmCommonULT.h"
+#include "../inc/External/Common/GmmClientContext.h"
 
-#define MAX_COUNT_PER_ADAPTER       3
+#define MAX_COUNT_PER_ADAPTER 5
 
 #ifdef _WIN32
 #define GMM_DLL_HANDLE      HINSTANCE
@@ -33,171 +34,68 @@
 #define GMM_DLL_HANDLE      void*
 #endif
 
-typedef struct ThreadInParams_Rec
+typedef struct GmmULTInfo_Rec
 {
-    uint32_t AdapterIdx;
-    uint32_t CountIdx;
-} ThreadInParams;
+    ADAPTER_INFO       *pGfxAdapterInfo;
+    PLATFORM            GfxPlatform;
+    GMM_LIB_CONTEXT    *pLibContext;
+    GMM_CLIENT_CONTEXT *pGmmULTClientContext;
+    GMM_INIT_IN_ARGS    InArgs;
+    GMM_INIT_OUT_ARGS   OutArgs;
+} GmmULTInfo;
 
 class MACommonULT : public testing::Test
 {
 public:
     MACommonULT();
     ~MACommonULT();
-    static void SetUpTestCase();
-    static void TearDownTestCase();
-    static void LoadGmmDll(uint32_t AdapterIdx, uint32_t CountIdx);
-    static void UnLoadGmmDll(uint32_t AdapterIdx, uint32_t CountIdx);
-    static void GmmInitModule(uint32_t AdapterIdx, uint32_t CountIdx);
-    static void GmmDestroyModule(uint32_t AdapterIdx, uint32_t CountIdx);
-    static void CreateMAThread(uint32_t MaxClientThreads);
-
-    static ADAPTER_INFO *           
pGfxAdapterInfo[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-    static PLATFORM                 
GfxPlatform[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-    static GMM_LIB_CONTEXT *        
pLibContext[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-    static GMM_CLIENT_CONTEXT *     
pGmmULTClientContext[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-    static PFNGMMINIT               
pfnGmmInit[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-    static PFNGMMDESTROY            
pfnGmmDestroy[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-    static GMM_INIT_IN_ARGS         
InArgs[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-    static GMM_INIT_OUT_ARGS        
OutArgs[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
-    static GMM_DLL_HANDLE           
hGmmLib[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
 
-    // Comman Input paramter array for all thread related ULTs to supply 
Adapter-Client Context input.
-
-    static ThreadInParams           InParams[MAX_NUM_ADAPTERS * 
MAX_COUNT_PER_ADAPTER];
+    void LoadGmmDll();
+    void UnLoadGmmDll();
+    void GmmInitModule(uint32_t AdapterIdx, uint32_t CountIdx);
+    void GmmDestroyModule(uint32_t AdapterIdx, uint32_t CountIdx);
+
+    PRODUCT_FAMILY GetProductFamily(uint32_t AdapterIdx);
+    GFXCORE_FAMILY GetRenderCoreFamily(uint32_t AdapterIdx);
+    GMM_CLIENT     GetClientType(uint32_t CountIdx);
+    ADAPTER_BDF    GetAdapterBDF(uint32_t AdapterIdx);
+
+protected:
+    GmmULTInfo GmmTestInfo[MAX_NUM_ADAPTERS][MAX_COUNT_PER_ADAPTER];
+
+    GMM_DLL_HANDLE hGmmLib;
+    PFNGMMINIT     pfnGmmInit;
+    PFNGMMDESTROY  pfnGmmDestroy;
 
     // Array to store the adapter BDFs from simulated UMD, Save the adapter 
bdf in an array
-    static ADAPTER_BDF              AdpaterSaved[MAX_NUM_ADAPTERS];
-    
-    // Only for our ULT to supply dummy ProductFamily
-    static PRODUCT_FAMILY GetProductFamily(uint32_t AdapterIdx)
-    {
-        switch (AdapterIdx)
-        {
-        case 0:   return IGFX_DG1;
-        case 1:   return IGFX_ICELAKE;
-        case 2:   return IGFX_TIGERLAKE_LP;
-        case 3:
-        case 4:
-        case 5:
-        case 6:
-        case 7:
-        case 8:
-        case 9:   return IGFX_DG2;
-        case 11:
-        case 12:
-        case 13:
-        case 14:
-        case 15:
-        case 16:   return IGFX_XE_HP_SDV;
-        case 17:
-        case 18:
-        case 19:
-        case 20:
-        case 21:
-        case 22:
-        case 23:
-        case 24:
-        case 25:
-        case 26:
-        case 27:
-        case 28:
-        case 29:   return IGFX_PVC;
-       case 30:
-        case 31:
-       default: break;
-        }
-        return IGFX_COFFEELAKE;
-    }
-
-    // Only for our ULT to supply dummy GFXCORE_FAMILY
-    static GFXCORE_FAMILY GetRenderCoreFamily(uint32_t AdapterIdx)
-    {
-        switch (AdapterIdx)
-        {
-        case 0:   return IGFX_XE_HP_CORE;
-        case 1:   return IGFX_GEN11LP_CORE;
-        case 2:   return IGFX_GEN12LP_CORE;
-        case 3:
-        case 4:
-        case 5:
-        case 6:
-        case 7:
-        case 8:
-        case 9:   return IGFX_XE_HPG_CORE;
-        case 11:
-        case 12:
-        case 13:
-        case 14:
-        case 15:
-        case 16:   return IGFX_XE_HP_CORE;
-        case 17:
-        case 18:
-        case 19:
-        case 20:
-        case 21:
-        case 22:
-        case 23:
-        case 24:
-        case 25:
-        case 26:
-        case 27:
-        case 28:
-        case 29:   return IGFX_XE_HPC_CORE;
-        case 30:
-        case 31:
-       default: break;
-        }
-        return IGFX_GEN9_CORE;
-    }
-
-    // To simulate the UMDs/ClinentContexts per adapter i.e 
MAX_COUNT_PER_ADAPTER
-    // Increase MAX_COUNT_PER_ADAPTER value if there are more UMDs involved.
-    static GMM_CLIENT GetClientType(uint32_t CountIdx)
-    {
-        switch (CountIdx)
-        {
-        case 0:   return GMM_D3D9_VISTA;
-        case 1:   return GMM_D3D10_VISTA;
-        case 2:   return GMM_D3D12_VISTA;
-       case 3:   return GMM_EXCITE_VISTA;
-       case 4:   return GMM_OCL_VISTA;
-        default: break;
-        }
-        return GMM_D3D9_VISTA;
-    }
-
-    // Returns the AdpaterSaved array value, Adapter BDFs based on input 
AdapterIdx.
-
-    static ADAPTER_BDF GetAdapterBDF(uint32_t AdapterIdx)
-    {
-        ADAPTER_BDF AdapterBDF={0,2,0,0};
-
-        if(AdapterIdx < MAX_NUM_ADAPTERS)
-        {
-            AdapterBDF.Bus      = AdpaterSaved[AdapterIdx].Bus;
-            AdapterBDF.Device   = AdpaterSaved[AdapterIdx].Device;
-            AdapterBDF.Function = AdpaterSaved[AdapterIdx].Function;
-       }
-        return AdapterBDF;
-    }
+    ADAPTER_BDF AdapterSaved[MAX_NUM_ADAPTERS];
 };
 
 typedef MACommonULT GMM_MA_ULT_CONTEXT;
 
+typedef struct ThreadInParams_Rec
+{
+    uint32_t AdapterIdx;
+    uint32_t CountIdx;
+
+    GMM_MA_ULT_CONTEXT *MATestObj;
+} ThreadInParams;
+
 class CTestMA : public MACommonULT
 {
 public:
     CTestMA();
     ~CTestMA();
 
+    void SetUp() override;
+    void TearDown() override;
+
     static void SetUpTestCase();
     static void TearDownTestCase();
-
 };
 
 #ifdef _WIN32
-    DWORD WINAPI Thread1(LPVOID lpParam);
+DWORD WINAPI MAULTThreadEntryFunc(LPVOID lpParam);
 #else
-    void *Thread1(void *lpParam);
+void *MAULTThreadEntryFunc(void *lpParam);
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gmmlib-intel-gmmlib-22.3.11/Source/inc/common/igfxfmid.h 
new/gmmlib-intel-gmmlib-22.3.13/Source/inc/common/igfxfmid.h
--- old/gmmlib-intel-gmmlib-22.3.11/Source/inc/common/igfxfmid.h        
2023-08-30 12:31:58.000000000 +0200
+++ new/gmmlib-intel-gmmlib-22.3.13/Source/inc/common/igfxfmid.h        
2023-11-08 06:39:22.000000000 +0100
@@ -294,9 +294,16 @@
 #define GFX_GET_CURRENT_RENDERCORE(p)  ( (p).eRenderCoreFamily )
 
 // This macro returns true if the product family is discrete
-#define GFX_IS_DISCRETE_FAMILY(p)      ( ( GFX_GET_CURRENT_PRODUCT(p) == 
IGFX_DG1 ) ||  \
-                                         ( GFX_GET_CURRENT_PRODUCT(p) == 
IGFX_XE_HP_SDV ) || \
-                                        ( GFX_GET_CURRENT_PRODUCT(p) == 
IGFX_DG2 ) )
+#define GFX_IS_DISCRETE_PRODUCT(pf)    ( ( pf == IGFX_DG1 )             ||   \
+                                         ( pf == IGFX_DG2 )             ||   \
+                                         ( pf == IGFX_XE_HP_SDV ) )
+
+#define GFX_IS_DISCRETE_FAMILY(p)      
GFX_IS_DISCRETE_PRODUCT(GFX_GET_CURRENT_PRODUCT(p))
+
+#define GFX_IS_INTEGRATED_PRODUCT(pf)  (!GFX_IS_DISCRETE_PRODUCT(pf))
+
+#define GFX_IS_INTEGRATED_FAMILY(p)    (!GFX_IS_DISCRETE_FAMILY(p))
+
 
 // These macros return true/false depending on the current render family.
 #define GFX_IS_NAPA_RENDER_FAMILY(p)   ( ( GFX_GET_CURRENT_RENDERCORE(p) == 
IGFX_GEN3_CORE )    ||   \
@@ -1878,6 +1885,7 @@
 #define DEV_ID_0BDA                            0x0BDA
 #define DEV_ID_0BDB                            0x0BDB
 #define DEV_ID_0B69                            0x0B69
+#define DEV_ID_0B6E                            0x0B6E
 
 // Macro to identify PVC device ID
 #define GFX_IS_XT_CONFIG(d) ((d == DEV_ID_0BD5)             ||  \
@@ -1887,7 +1895,8 @@
                              (d == DEV_ID_0BD9)             ||  \
                              (d == DEV_ID_0BDA)             ||  \
                              (d == DEV_ID_0BDB)                    ||  \
-                             (d == DEV_ID_0B69))
+                             (d == DEV_ID_0B69)             ||  \
+                            (d == DEV_ID_0B6E))
 
 //DG2 Device IDs
 #define DEV_ID_4F80                             0x4F80

Reply via email to