Files
open-gpu-kernel-modules/src/nvidia/generated/g_journal_nvoc.h
Bernhard Stoeckner 3084c04453 555.42.02
(cherry picked from commit 5a1c474040)
2024-07-19 15:38:00 -07:00

585 lines
24 KiB
C

#ifndef _G_JOURNAL_NVOC_H_
#define _G_JOURNAL_NVOC_H_
#include "nvoc/runtime.h"
// Version of generated metadata structures
#ifdef NVOC_METADATA_VERSION
#undef NVOC_METADATA_VERSION
#endif
#define NVOC_METADATA_VERSION 0
#ifdef __cplusplus
extern "C" {
#endif
/*
* SPDX-FileCopyrightText: Copyright (c) 2005-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#pragma once
#include "g_journal_nvoc.h"
#ifndef _JOURNAL_H_
#define _JOURNAL_H_
//
// Journal object defines and Structures
//
#include "kernel/core/core.h"
#include "kernel/core/system.h"
#include "kernel/diagnostics/journal_structs.h"
#include "kernel/diagnostics/nv_debug_dump.h"
#include "kernel/diagnostics/traceable.h"
#include "ctrl/ctrl2080/ctrl2080nvd.h"
#include "lib/protobuf/prb.h"
#include "nvdump.h"
// Local definition to set the default MMU Fault Type.
#define NV_PFAULT_FAULT_TYPE_UNKNOWN 0x000000FF;
// Local definition to set the default MMU Error Source/Client ID.
#define NV_PFIFO_INTR_MMU_FAULT_INFO_CLIENT_UNKNOWN 0x000000FF;
#define NOCAT_COLLECT_PERF 0
#define NOCAT_PROBE_FB_MEMORY 0
typedef struct _def_assert_list
{
NvU32 QualifyingStackSize; // The number of stack entries to check in order
// to consider a record unique
NvU32 Size; // size of list of pointers to records
NvU32 Count; // number of records in the record list
PRmRCCommonAssert_RECORD *ppList; // list of pointers to records.
} JOURNAL_ASSERT_LIST;
typedef struct _def_event_journal
{
NvU8* pBuffer; // pointer to buffer
NvU8* pFree; // pointer to first free byte in the buffer
NVCDRecordCollection* pCurrCollection; // current collection being created
NvU32 BufferSize; // size of buffer in bytes
NvU32 BufferRemaining; // remaining bytes in buffer;
NvU32 RecordCount; // total # of records currently in the buffer
JOURNAL_ASSERT_LIST AssertList; // list of asserts within the journal.
} EVENT_JOURNAL;
typedef struct _def_sys_error_info
{
volatile NvU32 InUse; // Atomically set when a thread is accessing the structure
NvU32 LogCount; // Count of Logged Event Messages
NvU32 ErrorCount; // Count of Logged Event Messages
NvU32 TotalErrorCount; // Total Number of Errors Encountered
void * pErrorList; // Error List
void * pNextError; // Used to walk error list
} SYS_ERROR_INFO;
// Max errors that should be logged into a SYS_ERROR_INFO.
#define MAX_ERROR_LOG_COUNT (0x10)
// Max error that should be added to SYS_ERROR_INFO.pErrorList
#define MAX_ERROR_LIST_COUNT (0x10)
typedef struct RING_BUFFER_LOG RING_BUFFER_LOG, *PRING_BUFFER_LOG;
// A node in the linked list of ring buffers
struct RING_BUFFER_LOG
{
RMCD_RECORD_TYPE entryType; // Type of the entries stored in this ring buffer.
NvU32 maxEntries; // Capacity of the ring buffer
NvU32 maxBufferSize;
NvU32 headIndex; // Index of the first item in the ring buffer.
NvU32 refCount; // Now many GPUs are using this Ring Buffer
//
// NOTE: If you want to look at the most recent item added to the ring buffer,
// you need to look at the entry at (headIndex+numEntries-1)%maxEntries
//
NvU32 numEntries;
NvU32 bufferSize;
NvU8 *pBuffer; // Buffer holding the entries
RING_BUFFER_LOG *pNextRingBuffer;
};
//
// A list of circular buffers. Each circular buffer is capable of
// storing the last n events of a particular type.
//
typedef struct
{
RING_BUFFER_LOG* pFirstEntry; // Pointer to the first circular buffer in the list
NvU32 NumRingBuffers;
} RING_BUFFER_LOG_COLLECTION;
typedef struct
{
RmRCCommonJournal_RECORD common;
const PRB_FIELD_DESC *fieldDesc;
} RM_DATA_COLLECTION_RECORD;
// this is the structure to hold a NOCAT report.
typedef struct
{
NvU32 id; // record id
volatile NvS32 inUse; // indicates the record is actively being used.
NV2080_NOCAT_JOURNAL_GPU_STATE nocatGpuState; // contains the state of the
// associated GPU if there is one,
NV2080_NOCAT_JOURNAL_ENTRY nocatJournalEntry; // the NOCAT report data -- IDs, diag data etc.
} RM_NOCAT_JOURNAL_ENTRY;
typedef struct
{
NvU64 timestamp NV_ALIGN_BYTES(8);
NvU8 recType;
NvU32 bugcheck;
const char *pSource;
NvU32 subsystem;
NvU64 errorCode NV_ALIGN_BYTES(8);
NvU32 diagBufferLen;
const NvU8 *pDiagBuffer;
const char *pFaultingEngine;
NvU32 tdrReason;
} NOCAT_JOURNAL_PARAMS;
#define ASSERT_CALL_STACK_SIZE 10
#define NOCAT_CACHE_FRESHNESS_PERIOD_MS 10ULL
typedef struct
{
NvU32 callStack[ASSERT_CALL_STACK_SIZE]; // Call stack when the assert occurred.
NvU32 count;
} RM_NOCAT_ASSERT_DIAG_BUFFER;
typedef struct _nocatQueueDescriptor
{
NvU64 loadAddress;
NvU32 nextRecordId;
NvU32 nextReportedId;
NvU32 nocatLastRecordType;
NvU64 lockTimestamp;
NvU32 lastRecordId[NV2080_NOCAT_JOURNAL_REC_TYPE_COUNT];
RM_NOCAT_ASSERT_DIAG_BUFFER lastAssertData;
NvU8 tag[NV2080_NOCAT_JOURNAL_MAX_STR_LEN];
NvU64 cacheFreshnessPeriodticks;
NV2080_NOCAT_JOURNAL_GPU_STATE nocatGpuState; // cache contains the state of the
// associated GPU if there is one.
NvU32 nocatEventCounters[NV2080_NOCAT_JOURNAL_REPORT_ACTIVITY_COUNTER_COUNT];
} nocatQueueDescriptor;
// Private field names are wrapped in PRIVATE_FIELD, which does nothing for
// the matching C source file, but causes diagnostics to be issued if another
// source file references the field.
#ifdef NVOC_JOURNAL_H_PRIVATE_ACCESS_ALLOWED
#define PRIVATE_FIELD(x) x
#else
#define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x)
#endif
struct OBJRCDB {
// Metadata
const struct NVOC_RTTI *__nvoc_rtti;
// Parent (i.e. superclass or base class) object pointers
struct Object __nvoc_base_Object;
struct OBJTRACEABLE __nvoc_base_OBJTRACEABLE;
// Ancestor object pointers for `staticCast` feature
struct Object *__nvoc_pbase_Object; // obj super
struct OBJTRACEABLE *__nvoc_pbase_OBJTRACEABLE; // traceable super
struct OBJRCDB *__nvoc_pbase_OBJRCDB; // rcdb
// 2 PDB properties
NvBool PDB_PROP_RCDB_COMPRESS;
NvBool PDB_PROP_RCDB_IN_DEFERRED_DUMP_CODEPATH;
// Data members
SYS_ERROR_INFO ErrorInfo;
EVENT_JOURNAL Journal;
NvU32 BugcheckCount;
RING_BUFFER_LOG_COLLECTION RingBufferColl;
NVD_STATE nvDumpState;
rcErrorCounterEntry rcErrorCounterArray[10];
NvBool bPrevDriverCodeExecuted;
char *previousDriverVersion;
char *previousDriverBranch;
NvU32 prevDriverChangelist;
NvU32 driverLoadCount;
NvU16 RcErrRptNextIdx;
NvBool RcErrRptRecordsDropped;
struct Falcon *pCrashedFlcn;
nocatQueueDescriptor nocatJournalDescriptor;
NvU64 systemTimeReference;
NvU64 timeStampFreq;
};
#ifndef __NVOC_CLASS_OBJRCDB_TYPEDEF__
#define __NVOC_CLASS_OBJRCDB_TYPEDEF__
typedef struct OBJRCDB OBJRCDB;
#endif /* __NVOC_CLASS_OBJRCDB_TYPEDEF__ */
#ifndef __nvoc_class_id_OBJRCDB
#define __nvoc_class_id_OBJRCDB 0x15dec8
#endif /* __nvoc_class_id_OBJRCDB */
// Casting support
extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJRCDB;
#define __staticCast_OBJRCDB(pThis) \
((pThis)->__nvoc_pbase_OBJRCDB)
#ifdef __nvoc_journal_h_disabled
#define __dynamicCast_OBJRCDB(pThis) ((OBJRCDB*)NULL)
#else //__nvoc_journal_h_disabled
#define __dynamicCast_OBJRCDB(pThis) \
((OBJRCDB*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(OBJRCDB)))
#endif //__nvoc_journal_h_disabled
// Property macros
#define PDB_PROP_RCDB_IN_DEFERRED_DUMP_CODEPATH_BASE_CAST
#define PDB_PROP_RCDB_IN_DEFERRED_DUMP_CODEPATH_BASE_NAME PDB_PROP_RCDB_IN_DEFERRED_DUMP_CODEPATH
#define PDB_PROP_RCDB_COMPRESS_BASE_CAST
#define PDB_PROP_RCDB_COMPRESS_BASE_NAME PDB_PROP_RCDB_COMPRESS
NV_STATUS __nvoc_objCreateDynamic_OBJRCDB(OBJRCDB**, Dynamic*, NvU32, va_list);
NV_STATUS __nvoc_objCreate_OBJRCDB(OBJRCDB**, Dynamic*, NvU32);
#define __objCreate_OBJRCDB(ppNewObj, pParent, createFlags) \
__nvoc_objCreate_OBJRCDB((ppNewObj), staticCast((pParent), Dynamic), (createFlags))
// Wrapper macros
// Dispatch functions
NV_STATUS rcdbConstruct_IMPL(struct OBJRCDB *arg_pRcdb);
#define __nvoc_rcdbConstruct(arg_pRcdb) rcdbConstruct_IMPL(arg_pRcdb)
void rcdbDestruct_IMPL(struct OBJRCDB *pRcdb);
#define __nvoc_rcdbDestruct(pRcdb) rcdbDestruct_IMPL(pRcdb)
NV_STATUS rcdbSavePreviousDriverVersion_IMPL(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbSavePreviousDriverVersion(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbSavePreviousDriverVersion(pGpu, pRcdb) rcdbSavePreviousDriverVersion_IMPL(pGpu, pRcdb)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbClearErrorHistory_IMPL(struct OBJRCDB *pRcdb);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbClearErrorHistory(struct OBJRCDB *pRcdb) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbClearErrorHistory(pRcdb) rcdbClearErrorHistory_IMPL(pRcdb)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbDeleteErrorElement_IMPL(struct OBJRCDB *pRcdb, void *arg2);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbDeleteErrorElement(struct OBJRCDB *pRcdb, void *arg2) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbDeleteErrorElement(pRcdb, arg2) rcdbDeleteErrorElement_IMPL(pRcdb, arg2)
#endif //__nvoc_journal_h_disabled
void rcdbDestroyRingBufferCollection_IMPL(struct OBJRCDB *pRcdb);
#ifdef __nvoc_journal_h_disabled
static inline void rcdbDestroyRingBufferCollection(struct OBJRCDB *pRcdb) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
}
#else //__nvoc_journal_h_disabled
#define rcdbDestroyRingBufferCollection(pRcdb) rcdbDestroyRingBufferCollection_IMPL(pRcdb)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbAllocNextJournalRec_IMPL(struct OBJRCDB *pRcdb, NVCD_RECORD **arg2, NvU8 arg3, NvU8 arg4, NvU16 arg5);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbAllocNextJournalRec(struct OBJRCDB *pRcdb, NVCD_RECORD **arg2, NvU8 arg3, NvU8 arg4, NvU16 arg5) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbAllocNextJournalRec(pRcdb, arg2, arg3, arg4, arg5) rcdbAllocNextJournalRec_IMPL(pRcdb, arg2, arg3, arg4, arg5)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbAddBugCheckRec_IMPL(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, NvU32 bugCheckCode);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbAddBugCheckRec(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, NvU32 bugCheckCode) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbAddBugCheckRec(pGpu, pRcdb, bugCheckCode) rcdbAddBugCheckRec_IMPL(pGpu, pRcdb, bugCheckCode)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbAddPowerStateRec_IMPL(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, NvU32 powerEvent, NvU32 state, NvU32 fastBootPowerState);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbAddPowerStateRec(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, NvU32 powerEvent, NvU32 state, NvU32 fastBootPowerState) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbAddPowerStateRec(pGpu, pRcdb, powerEvent, state, fastBootPowerState) rcdbAddPowerStateRec_IMPL(pGpu, pRcdb, powerEvent, state, fastBootPowerState)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbDumpInitGpuAccessibleFlag_IMPL(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbDumpInitGpuAccessibleFlag(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbDumpInitGpuAccessibleFlag(pGpu, pRcdb) rcdbDumpInitGpuAccessibleFlag_IMPL(pGpu, pRcdb)
#endif //__nvoc_journal_h_disabled
NvU8 *rcdbCreateRingBuffer_IMPL(struct OBJRCDB *pRcdb, RMCD_RECORD_TYPE type, NvU32 maxEntries);
#ifdef __nvoc_journal_h_disabled
static inline NvU8 *rcdbCreateRingBuffer(struct OBJRCDB *pRcdb, RMCD_RECORD_TYPE type, NvU32 maxEntries) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NULL;
}
#else //__nvoc_journal_h_disabled
#define rcdbCreateRingBuffer(pRcdb, type, maxEntries) rcdbCreateRingBuffer_IMPL(pRcdb, type, maxEntries)
#endif //__nvoc_journal_h_disabled
void rcdbDestroyRingBuffer_IMPL(struct OBJRCDB *pRcdb, RMCD_RECORD_TYPE type);
#ifdef __nvoc_journal_h_disabled
static inline void rcdbDestroyRingBuffer(struct OBJRCDB *pRcdb, RMCD_RECORD_TYPE type) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
}
#else //__nvoc_journal_h_disabled
#define rcdbDestroyRingBuffer(pRcdb, type) rcdbDestroyRingBuffer_IMPL(pRcdb, type)
#endif //__nvoc_journal_h_disabled
RmRCCommonJournal_RECORD *rcdbAddRecToRingBuffer_IMPL(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, RMCD_RECORD_TYPE type, NvU32 recordSize, NvU8 *pRecord);
#ifdef __nvoc_journal_h_disabled
static inline RmRCCommonJournal_RECORD *rcdbAddRecToRingBuffer(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, RMCD_RECORD_TYPE type, NvU32 recordSize, NvU8 *pRecord) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NULL;
}
#else //__nvoc_journal_h_disabled
#define rcdbAddRecToRingBuffer(pGpu, pRcdb, type, recordSize, pRecord) rcdbAddRecToRingBuffer_IMPL(pGpu, pRcdb, type, recordSize, pRecord)
#endif //__nvoc_journal_h_disabled
NvU32 rcdbGetOcaRecordSizeWithHeader_IMPL(struct OBJRCDB *pRcdb, RMCD_RECORD_TYPE type);
#ifdef __nvoc_journal_h_disabled
static inline NvU32 rcdbGetOcaRecordSizeWithHeader(struct OBJRCDB *pRcdb, RMCD_RECORD_TYPE type) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return 0;
}
#else //__nvoc_journal_h_disabled
#define rcdbGetOcaRecordSizeWithHeader(pRcdb, type) rcdbGetOcaRecordSizeWithHeader_IMPL(pRcdb, type)
#endif //__nvoc_journal_h_disabled
NvU32 rcdbDumpJournal_IMPL(struct OBJRCDB *pRcdb, struct OBJGPU *pGpu, PRB_ENCODER *pPrbEnc, NVD_STATE *pNvDumpState, const PRB_FIELD_DESC *pFieldDesc);
#ifdef __nvoc_journal_h_disabled
static inline NvU32 rcdbDumpJournal(struct OBJRCDB *pRcdb, struct OBJGPU *pGpu, PRB_ENCODER *pPrbEnc, NVD_STATE *pNvDumpState, const PRB_FIELD_DESC *pFieldDesc) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return 0;
}
#else //__nvoc_journal_h_disabled
#define rcdbDumpJournal(pRcdb, pGpu, pPrbEnc, pNvDumpState, pFieldDesc) rcdbDumpJournal_IMPL(pRcdb, pGpu, pPrbEnc, pNvDumpState, pFieldDesc)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbDumpComponent_IMPL(struct OBJRCDB *pRcdb, NvU32 component, NVDUMP_BUFFER *pBuffer, NVDUMP_BUFFER_POLICY policy, PrbBufferCallback *pBufferCallback);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbDumpComponent(struct OBJRCDB *pRcdb, NvU32 component, NVDUMP_BUFFER *pBuffer, NVDUMP_BUFFER_POLICY policy, PrbBufferCallback *pBufferCallback) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbDumpComponent(pRcdb, component, pBuffer, policy, pBufferCallback) rcdbDumpComponent_IMPL(pRcdb, component, pBuffer, policy, pBufferCallback)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbDumpSystemInfo_IMPL(struct OBJRCDB *pRcdb, PRB_ENCODER *pPrbEnc, NVD_STATE *pNvDumpState);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbDumpSystemInfo(struct OBJRCDB *pRcdb, PRB_ENCODER *pPrbEnc, NVD_STATE *pNvDumpState) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbDumpSystemInfo(pRcdb, pPrbEnc, pNvDumpState) rcdbDumpSystemInfo_IMPL(pRcdb, pPrbEnc, pNvDumpState)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbDumpSystemFunc_IMPL(struct OBJRCDB *pRcdb, PRB_ENCODER *pPrbEnc, NVD_STATE *pNvDumpState);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbDumpSystemFunc(struct OBJRCDB *pRcdb, PRB_ENCODER *pPrbEnc, NVD_STATE *pNvDumpState) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbDumpSystemFunc(pRcdb, pPrbEnc, pNvDumpState) rcdbDumpSystemFunc_IMPL(pRcdb, pPrbEnc, pNvDumpState)
#endif //__nvoc_journal_h_disabled
NvU32 rcdbDumpErrorCounters_IMPL(struct OBJRCDB *pRcDB, struct OBJGPU *pGpu, PRB_ENCODER *pPrbEnc);
#ifdef __nvoc_journal_h_disabled
static inline NvU32 rcdbDumpErrorCounters(struct OBJRCDB *pRcDB, struct OBJGPU *pGpu, PRB_ENCODER *pPrbEnc) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return 0;
}
#else //__nvoc_journal_h_disabled
#define rcdbDumpErrorCounters(pRcDB, pGpu, pPrbEnc) rcdbDumpErrorCounters_IMPL(pRcDB, pGpu, pPrbEnc)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbGetRcDiagRecBoundaries_IMPL(struct OBJRCDB *pRcdb, NvU16 *arg2, NvU16 *arg3, NvU32 arg4, NvU32 arg5);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbGetRcDiagRecBoundaries(struct OBJRCDB *pRcdb, NvU16 *arg2, NvU16 *arg3, NvU32 arg4, NvU32 arg5) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbGetRcDiagRecBoundaries(pRcdb, arg2, arg3, arg4, arg5) rcdbGetRcDiagRecBoundaries_IMPL(pRcdb, arg2, arg3, arg4, arg5)
#endif //__nvoc_journal_h_disabled
RmRCCommonJournal_RECORD *rcdbAddRcDiagRec_IMPL(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, RmRcDiag_RECORD *arg3);
#ifdef __nvoc_journal_h_disabled
static inline RmRCCommonJournal_RECORD *rcdbAddRcDiagRec(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, RmRcDiag_RECORD *arg3) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NULL;
}
#else //__nvoc_journal_h_disabled
#define rcdbAddRcDiagRec(pGpu, pRcdb, arg3) rcdbAddRcDiagRec_IMPL(pGpu, pRcdb, arg3)
#endif //__nvoc_journal_h_disabled
RmRCCommonJournal_RECORD *rcdbAddRcDiagRecFromGsp_IMPL(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, RmRCCommonJournal_RECORD *arg3, RmRcDiag_RECORD *arg4);
#ifdef __nvoc_journal_h_disabled
static inline RmRCCommonJournal_RECORD *rcdbAddRcDiagRecFromGsp(struct OBJGPU *pGpu, struct OBJRCDB *pRcdb, RmRCCommonJournal_RECORD *arg3, RmRcDiag_RECORD *arg4) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NULL;
}
#else //__nvoc_journal_h_disabled
#define rcdbAddRcDiagRecFromGsp(pGpu, pRcdb, arg3, arg4) rcdbAddRcDiagRecFromGsp_IMPL(pGpu, pRcdb, arg3, arg4)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbGetRcDiagRec_IMPL(struct OBJRCDB *pRcdb, NvU16 arg2, RmRCCommonJournal_RECORD **arg3, NvU32 arg4, NvU32 arg5);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbGetRcDiagRec(struct OBJRCDB *pRcdb, NvU16 arg2, RmRCCommonJournal_RECORD **arg3, NvU32 arg4, NvU32 arg5) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbGetRcDiagRec(pRcdb, arg2, arg3, arg4, arg5) rcdbGetRcDiagRec_IMPL(pRcdb, arg2, arg3, arg4, arg5)
#endif //__nvoc_journal_h_disabled
NV_STATUS rcdbUpdateRcDiagRecContext_IMPL(struct OBJRCDB *pRcdb, NvU16 arg2, NvU16 arg3, NvU32 arg4, NvU32 arg5);
#ifdef __nvoc_journal_h_disabled
static inline NV_STATUS rcdbUpdateRcDiagRecContext(struct OBJRCDB *pRcdb, NvU16 arg2, NvU16 arg3, NvU32 arg4, NvU32 arg5) {
NV_ASSERT_FAILED_PRECOMP("OBJRCDB was disabled!");
return NV_ERR_NOT_SUPPORTED;
}
#else //__nvoc_journal_h_disabled
#define rcdbUpdateRcDiagRecContext(pRcdb, arg2, arg3, arg4, arg5) rcdbUpdateRcDiagRecContext_IMPL(pRcdb, arg2, arg3, arg4, arg5)
#endif //__nvoc_journal_h_disabled
void rcdbInitNocatGpuCache_IMPL(struct OBJGPU *pGpu);
#define rcdbInitNocatGpuCache(pGpu) rcdbInitNocatGpuCache_IMPL(pGpu)
void rcdbCleanupNocatGpuCache_IMPL(struct OBJGPU *pGpu);
#define rcdbCleanupNocatGpuCache(pGpu) rcdbCleanupNocatGpuCache_IMPL(pGpu)
#undef PRIVATE_FIELD
NV_STATUS rcdbAddRmDclMsg(void* msg, NvU16 size, const PRB_FIELD_DESC *fieldDesc);
NV_STATUS rcdbAddRmEngDump(struct OBJGPU *pGpu, NvU32 component);
NV_STATUS rcdbAddRmGpuDump(struct OBJGPU *pGpu);
void rcdbSetCommonJournalRecord(struct OBJGPU *pGpu, PRmRCCommonJournal_RECORD pRec);
void rcdbAddCrashedFalcon(struct Falcon *pFlcn);
NV_STATUS rcdbAddAssertJournalRec(void* pGpu, void** ppRec, NvU8 jGroup,
NvU8 type, NvU16 size, NvU32 level, NvU64 key);
NV_STATUS rcdbAddAssertJournalRecWithLine(void *pVoidGpu, NvU32 lineNum,
void** ppRec, NvU8 jGroup, NvU8 type, NvU16 size, NvU32 level, NvU64 key);
/*! insert a record into the NOCAT Journal */
NvU32 rcdbNocatInsertNocatError(struct OBJGPU *pGpu,
NOCAT_JOURNAL_PARAMS *nocatJournalEntry);
NvU32 rcdbNocatInsertBugcheck(NvU32 deviceInstance, NvU32 bugCheckCode);
NV_STATUS rcdbNocatInitEngineErrorEvent(NOCAT_JOURNAL_PARAMS *nocatJournalEntry);
NvU32 rcdbNocatInsertEngineError(struct OBJGPU *pGpu,
const char *pSource, NvU32 subsystem, NvU64 errorCode,
NvU8 *pDiagBuffer, NvU32 diagBufferLen);
NvU32 rcdbNocatInsertRMCDErrorEvent(struct OBJGPU *pGpu, NvU32 recType,
const char *pSource, NvU32 subsystem, NvU64 errorCode, const char *pFault,
RMCD_ERROR_BLOCK *pRcdError);
NV_STATUS rcdbNocatInitTDRErrorEvent(NOCAT_JOURNAL_PARAMS *nocatJournalEntry);
NvU32 rcdbNocatInsertTDRError(struct OBJGPU *pGpu,
const char *pSource, NvU32 subsystem, NvU64 errorCode,
NvU32 tdrBucket,
NvU8 *pDiagBuffer, NvU32 diagBufferLen,
NvU32 tdrReason, const char *pFaultingApp);
NV_STATUS rcdbReportNextNocatJournalEntry(NV2080_NOCAT_JOURNAL_RECORD* pReport);
NV_STATUS rcdbSetNocatTdrReason(NV2080CtrlNocatJournalDataTdrReason *pReasonData);
NvU32 rcdbGetNocatOutstandingCount(Journal *pRcdb);
NV_STATUS rcdbNocatJournalReportTestFill(void);
#endif // _JOURNAL_H_
#ifdef __cplusplus
} // extern "C"
#endif
#endif // _G_JOURNAL_NVOC_H_