root/drivers/gpu/drm/xe/xe_guc_log_types.h
/* SPDX-License-Identifier: MIT */
/*
 * Copyright © 2022 Intel Corporation
 */

#ifndef _XE_GUC_LOG_TYPES_H_
#define _XE_GUC_LOG_TYPES_H_

#include <linux/types.h>
#include "abi/guc_log_abi.h"

#include "xe_uc_fw_types.h"

struct xe_bo;

/**
 * struct xe_guc_log_snapshot:
 * Capture of the GuC log plus various state useful for decoding the log
 */
struct xe_guc_log_snapshot {
        /** @size: Size in bytes of the @copy allocation */
        size_t size;
        /** @copy: Host memory copy of the log buffer for later dumping, split into chunks */
        void **copy;
        /** @num_chunks: Number of chunks within @copy */
        int num_chunks;
        /** @ktime: Kernel time the snapshot was taken */
        u64 ktime;
        /** @stamp: GuC timestamp at which the snapshot was taken */
        u64 stamp;
        /** @level: GuC log verbosity level */
        u32 level;
        /** @ver_found: GuC firmware version */
        struct xe_uc_fw_version ver_found;
        /** @ver_want: GuC firmware version that driver expected */
        struct xe_uc_fw_version ver_want;
        /** @path: Path of GuC firmware blob */
        const char *path;
};

/**
 * struct xe_guc_log - GuC log
 */
struct xe_guc_log {
        /** @level: GuC log level */
        u32 level;
        /** @bo: Xe BO for GuC log */
        struct xe_bo *bo;
        /** @stats: logging related stats */
        struct {
                u32 sampled_overflow;
                u32 overflow;
                u32 flush;
        } stats[GUC_LOG_BUFFER_TYPE_MAX];
};

#endif