SPD Logging enabled for debug and release-internal (#56)

This commit is contained in:
johnmach 2021-12-04 15:55:53 +05:30 committed by GitHub
parent 6143502f4e
commit 0ed2639c72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 52 additions and 33 deletions

View File

@ -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);

View File

@ -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:

View File

@ -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 ?

View File

@ -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);

View File

@ -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,

View File

@ -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\\"

View File

@ -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