From 0ed2639c72c9f9275eb8609e843e3221eebee1c2 Mon Sep 17 00:00:00 2001 From: johnmach Date: Sat, 4 Dec 2021 15:55:53 +0530 Subject: [PATCH] SPD Logging enabled for debug and release-internal (#56) --- .../GmmLib/CachePolicy/GmmGen8CachePolicy.cpp | 2 +- Source/GmmLib/GlobalInfo/GmmClientContext.cpp | 4 ++ .../GmmLib/TranslationTable/GmmAuxTable.cpp | 8 +-- .../TranslationTable/GmmPageTableMgr.cpp | 2 +- Source/GmmLib/Utility/GmmLog/GmmLog.cpp | 9 ++- Source/GmmLib/Utility/GmmLog/GmmLog.h | 5 +- Source/GmmLib/inc/External/Common/GmmDebug.h | 55 +++++++++++-------- 7 files changed, 52 insertions(+), 33 deletions(-) diff --git a/Source/GmmLib/CachePolicy/GmmGen8CachePolicy.cpp b/Source/GmmLib/CachePolicy/GmmGen8CachePolicy.cpp index 40bb1ec..110d084 100644 --- a/Source/GmmLib/CachePolicy/GmmGen8CachePolicy.cpp +++ b/Source/GmmLib/CachePolicy/GmmGen8CachePolicy.cpp @@ -481,7 +481,7 @@ bool GmmLib::GmmGen8CachePolicy::GetUsagePTEValue(GMM_CACHE_POLICY_ELEMENT Cache CachePolicyElement.Initialized = 1; - GMM_DPF(GFXDBG_CRITICAL, + GMM_DPF(GFXDBG_NORMAL, "Cache Policy Init: Degrading PAT settings to UC (uncached) from %s for Element %d\n", MemTypes[GetWantedMemoryType(CachePolicyUsage)], Usage); diff --git a/Source/GmmLib/GlobalInfo/GmmClientContext.cpp b/Source/GmmLib/GlobalInfo/GmmClientContext.cpp index 505b0b0..36ca7b3 100644 --- a/Source/GmmLib/GlobalInfo/GmmClientContext.cpp +++ b/Source/GmmLib/GlobalInfo/GmmClientContext.cpp @@ -392,6 +392,8 @@ GMM_RESOURCE_INFO *GMM_STDCALL GmmLib::GmmClientContext::CreateResInfoObject(GMM pClientContextIn = this; #endif + GMM_DPF_ENTER; + // GMM_RESOURCE_INFO... if(pCreateParams->pPreallocatedResInfo) { @@ -413,6 +415,8 @@ GMM_RESOURCE_INFO *GMM_STDCALL GmmLib::GmmClientContext::CreateResInfoObject(GMM goto ERROR_CASE; } + GMM_DPF_EXIT; + return (pRes); ERROR_CASE: diff --git a/Source/GmmLib/TranslationTable/GmmAuxTable.cpp b/Source/GmmLib/TranslationTable/GmmAuxTable.cpp index 3c8749c..d581b08 100644 --- a/Source/GmmLib/TranslationTable/GmmAuxTable.cpp +++ b/Source/GmmLib/TranslationTable/GmmAuxTable.cpp @@ -231,7 +231,7 @@ GMM_STATUS GmmLib::AuxTable::MapNullCCS(GMM_UMD_SYNCCONTEXT *UmdContext, GMM_GFX //Sync update on CPU ((GMM_AUXTTL1e *)L1CPUAddress)[L1eIdx].Value = Data; - GMM_DPF(GFXDBG_CRITICAL, "Null-Map | Table Entry: [0x%06x] L2Addr[0x%016llX] Value[0x%016llX] :: [0x%06x] L1Addr[0x%016llX] Value[0x%016llX]\n", L2eIdx, ((GMM_AUXTTL2e *)L2CPUAddress)[L2eIdx], ((GMM_AUXTTL2e *)L2CPUAddress)[L2eIdx].L1GfxAddr << 13, L1eIdx, &((GMM_AUXTTL1e *)L1CPUAddress)[L1eIdx], Data); + GMM_DPF(GFXDBG_NORMAL, "Null-Map | Table Entry: [0x%06x] L2Addr[0x%016llX] Value[0x%016llX] :: [0x%06x] L1Addr[0x%016llX] Value[0x%016llX]\n", L2eIdx, ((GMM_AUXTTL2e *)L2CPUAddress)[L2eIdx], ((GMM_AUXTTL2e *)L2CPUAddress)[L2eIdx].L1GfxAddr << 13, L1eIdx, &((GMM_AUXTTL1e *)L1CPUAddress)[L1eIdx], Data); } else { @@ -482,7 +482,7 @@ GMM_STATUS GmmLib::AuxTable::InvalidateTable(GMM_UMD_SYNCCONTEXT *UmdContext, GM //Sync update on CPU ((GMM_AUXTTL1e *)L1CPUAddress)[L1eIdx].Value = Data; - GMM_DPF(GFXDBG_CRITICAL, "UnMap | Table Entry: [0x%06x] L2Addr[0x%016llX] Value[0x%016llX] :: [0x%06x] L1Addr[0x%016llX] Value[0x%016llX]\n", L2eIdx, ((GMM_AUXTTL2e *)L2CPUAddress)[L2eIdx], ((GMM_AUXTTL2e *)L2CPUAddress)[L2eIdx].L1GfxAddr << 13, L1eIdx, &((GMM_AUXTTL1e *)L1CPUAddress)[L1eIdx], Data); + GMM_DPF(GFXDBG_NORMAL, "UnMap | Table Entry: [0x%06x] L2Addr[0x%016llX] Value[0x%016llX] :: [0x%06x] L1Addr[0x%016llX] Value[0x%016llX]\n", L2eIdx, ((GMM_AUXTTL2e *)L2CPUAddress)[L2eIdx], ((GMM_AUXTTL2e *)L2CPUAddress)[L2eIdx].L1GfxAddr << 13, L1eIdx, &((GMM_AUXTTL1e *)L1CPUAddress)[L1eIdx], Data); } else { @@ -616,7 +616,7 @@ GMM_STATUS GmmLib::AuxTable::MapValidEntry(GMM_UMD_SYNCCONTEXT *UmdContext, GMM_ PageTableMgr->TTCb.pfPrologTranslationTable(UmdContext->pCommandQueueHandle); } - GMM_DPF(GFXDBG_CRITICAL, "Mapping surface: GPUVA=0x%016llX Size=0x%08X Aux_GPUVA=0x%016llX\n", BaseAdr, BaseSize, AuxVA); + GMM_DPF(GFXDBG_NORMAL, "Mapping surface: GPUVA=0x%016llX Size=0x%08X Aux_GPUVA=0x%016llX\n", BaseAdr, BaseSize, AuxVA); for(Addr = GFX_ALIGN_FLOOR(BaseAdr, L1TableSize); Addr < BaseAdr + BaseSize; Addr += L1TableSize) { GMM_GFX_ADDRESS StartAdr, EndAdr, TileAdr; @@ -732,7 +732,7 @@ GMM_STATUS GmmLib::AuxTable::MapValidEntry(GMM_UMD_SYNCCONTEXT *UmdContext, GMM_ } } - GMM_DPF(GFXDBG_CRITICAL, "Mapping surface: GPUVA=0x%016llx Size=0x%08x Aux_GPUVA=0x%016llx", StartAdr, BaseSize, CCS$Adr); + GMM_DPF(GFXDBG_NORMAL, "Mapping surface: GPUVA=0x%016llx Size=0x%08x Aux_GPUVA=0x%016llx", StartAdr, BaseSize, CCS$Adr); for(TileAdr = StartAdr; TileAdr < EndAdr; TileAdr += (!WA16K(pClientContext->GetLibContext()) ? GMM_KBYTE(64) : GMM_KBYTE(16)), CCS$Adr += (pClientContext->GetLibContext()->GetSkuTable().FtrLinearCCS ? diff --git a/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp b/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp index c851751..28e3b24 100644 --- a/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp +++ b/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp @@ -449,7 +449,7 @@ GMM_STATUS GmmLib::GmmPageTableMgr::InitContextAuxTableRegister(HANDLE CmdQHandl TTCb.pfWriteL3Adr(CmdQHandle, MaskedL3GfxAddress, RegOffset); - GMM_DPF(GFXDBG_CRITICAL, "AuxTT Map Address: GPUVA=0x%016llX\n", MaskedL3GfxAddress); + GMM_DPF(GFXDBG_NORMAL, "AuxTT Map Address: GPUVA=0x%016llX\n", MaskedL3GfxAddress); //TTCb.pfEpilogTranslationTable(CmdQHandle, 0); diff --git a/Source/GmmLib/Utility/GmmLog/GmmLog.cpp b/Source/GmmLib/Utility/GmmLog/GmmLog.cpp index f61ec30..4ee045b 100644 --- a/Source/GmmLib/Utility/GmmLog/GmmLog.cpp +++ b/Source/GmmLib/Utility/GmmLog/GmmLog.cpp @@ -102,6 +102,8 @@ bool GmmLib::Logger::GmmLogInit() case Error: LogLevel = spdlog::level::err; break; + case Critical: + LogLevel = spdlog::level::critical; } } @@ -164,8 +166,11 @@ bool GmmLib::Logger::GmmLogInit() // TODO: Multiple GmmLib instance can be running in the same process. In that case, the file name will be // the same for two instances. Figure out a way to differentiate between the two instances. - LogFilePath = std::string(GMM_LOG_FILENAME) + "_" + ProcName + "_" + PidStr; - +#if _WIN32 + LogFilePath = std::string("c:\\") + std::string(GMM_LOG_FILENAME) + "_" + ProcName + "_" + PidStr; +#else + LogFilePath = std::string(".//") + std::string(GMM_LOG_FILENAME) + "" + ProcName + "_" + PidStr; +#endif // Create logger SpdLogger = spdlog::rotating_logger_mt(GMM_LOGGER_NAME, LogFilePath, diff --git a/Source/GmmLib/Utility/GmmLog/GmmLog.h b/Source/GmmLib/Utility/GmmLog/GmmLog.h index 2d069d7..7d0dfed 100644 --- a/Source/GmmLib/Utility/GmmLog/GmmLog.h +++ b/Source/GmmLib/Utility/GmmLog/GmmLog.h @@ -88,6 +88,7 @@ typedef enum GmmLogLevel Trace, Info, Error, // default + Critical, }GmmLogLevel; #ifdef __cplusplus @@ -98,10 +99,10 @@ typedef enum GmmLogLevel #define GMM_ROTATE_FILE_NUMBER 3 // Once log is full, it'll save old log with .1/.2/.3 in name, and then start with .1 #define GMM_LOG_MASSAGE_MAX_SIZE 1024 #define GMM_LOGGER_NAME "gmm_logger" -#define GMM_LOG_FILENAME "./gmm_log" +#define GMM_LOG_FILENAME "gmm_log" #define GMM_LOG_TAG "GmmLib" #define GMM_UNKNOWN_PROCESS "Unknown_Proc" -#define GMM_PREFIX_STR "INTC GMM: " +#define GMM_PREFIX_STR "INTC GMM SPD: " #if _WIN32 #define GMM_LOG_REG_KEY_SUB_PATH "SOFTWARE\\Intel\\IGFX\\GMMLOG\\" diff --git a/Source/GmmLib/inc/External/Common/GmmDebug.h b/Source/GmmLib/inc/External/Common/GmmDebug.h index a299f50..11658ea 100644 --- a/Source/GmmLib/inc/External/Common/GmmDebug.h +++ b/Source/GmmLib/inc/External/Common/GmmDebug.h @@ -58,16 +58,21 @@ OTHER DEALINGS IN THE SOFTWARE. // Enable GMM_ASSERTS and GMM_DEBUG only for Debug builds similar to what UMD clients used to do earlier #if (_DEBUG) //(_DEBUG || _RELEASE_INTERNAL) - #define GMM_DPF GMMDebugMessage //gfxDebug.h #define GMM_ASSERT GMMASSERT //gfxDebug.h #define GMM_ASSERTPTR GMMASSERTPTR //gfxDebug.h #else #define GMMDebugMessage(...) - #define GMM_DPF GMMDebugMessage #define GMM_ASSERT(expr) #define GMM_ASSERTPTR(expr, ret) #endif +// GMM_DPF Logging is enabled for Debug and Release_Internal +#if (_DEBUG || _RELEASE_INTERNAL) + #define GMM_DPF GMMDebugMessage //gfxDebug.h +#else + #define GMM_DPF GMMDebugMessage +#endif // (_DEBUG || _RELEASE_INTERNAL) + #define __GMM_ASSERT GMM_ASSERT #define __GMM_ASSERTPTR GMM_ASSERTPTR @@ -85,26 +90,6 @@ OTHER DEALINGS IN THE SOFTWARE. #define GMM_DBG_BREAK assert(0) #endif -#define GMMLibDebugMessage(DebugLevel, message, ...) \ -{ \ - if(DebugLevel == GFXDBG_CRITICAL) \ - { \ - GMM_LOG_ERROR(message, ##__VA_ARGS__); \ - } \ - else if(DebugLevel == GFXDBG_VERBOSE) \ - { \ - GMM_LOG_TRACE(message, ##__VA_ARGS__); \ - } \ - else if(DebugLevel == GFXDBG_OFF) \ - { \ - GMM_LOG_TRACE_IF(0, message, ##__VA_ARGS__) \ - } \ - else \ - { \ - GMM_LOG_INFO(message, ##__VA_ARGS__); \ - } \ -} - #define GMM_LIB_ASSERT(expr) \ { \ if(!(expr) ) \ @@ -124,7 +109,6 @@ OTHER DEALINGS IN THE SOFTWARE. #else -#define GMMLibDebugMessage(...) #define GMM_LIB_ASSERT(expr) #define GMM_LIB_ASSERTPTR(expr, ret) \ { \ @@ -136,6 +120,31 @@ OTHER DEALINGS IN THE SOFTWARE. #endif // (_DEBUG) //_DEBUG || _RELEASE_INTERNAL +#if (_DEBUG || _RELEASE_INTERNAL) + #define GMMLibDebugMessage(DebugLevel, message, ...) \ + { \ + if(DebugLevel == GFXDBG_CRITICAL) \ + { \ + GMM_LOG_ERROR(message, ##__VA_ARGS__); \ + } \ + else if(DebugLevel == GFXDBG_VERBOSE) \ + { \ + GMM_LOG_TRACE(message, ##__VA_ARGS__); \ + } \ + else if(DebugLevel == GFXDBG_OFF) \ + { \ + GMM_LOG_TRACE_IF(0, message, ##__VA_ARGS__) \ + } \ + else \ + { \ + GMM_LOG_INFO(message, ##__VA_ARGS__); \ + } \ + } + +#else + #define GMMLibDebugMessage(...) +#endif //_DEBUG || _RELEASE_INTERNAL + #define GMM_DPF GMMLibDebugMessage #define __GMM_ASSERT GMM_LIB_ASSERT #define __GMM_ASSERTPTR GMM_LIB_ASSERTPTR