- Add -s option (strict mode) to merge_config.sh to make it fail when any symbol is redefined. - Show a warning if a different compiler is used for building external modules. - Infer --target from ARCH for CC=clang to let you cross-compile the kernel without CROSS_COMPILE. - Make the integrated assembler default (LLVM_IAS=1) for CC=clang. - Add <linux/stdarg.h> to the kernel source instead of borrowing <stdarg.h> from the compiler. - Add Nick Desaulniers as a Kbuild reviewer. - Drop stale cc-option tests. - Fix the combination of CONFIG_TRIM_UNUSED_KSYMS and CONFIG_LTO_CLANG to handle symbols in inline assembly. - Show a warning if 'FORCE' is missing for if_changed rules. - Various cleanups -----BEGIN PGP SIGNATURE----- iQJJBAABCgAzFiEEbmPs18K1szRHjPqEPYsBB53g2wYFAmExXHoVHG1hc2FoaXJv eUBrZXJuZWwub3JnAAoJED2LAQed4NsGAZwP/iHdEZzuQ4cz2uXUaV0fevj9jjPU zJ8wrrNabAiT6f5x861DsARQSR4OSt3zN0tyBNgZwUdotbe7ED5GegrgIUBMWlML QskhTEIZj7TexAX/20vx671gtzI3JzFg4c9BuriXCFRBvychSevdJPr65gMDOesL vOJnXe+SGXG2+fPWi/PxrcOItNRcveqo2GiWHT3g0Cv/DJUulu81gEkz3hrufnMR cjMeSkV0nJJcvI755OQBOUnEuigW64k4m2WxHPG24tU8cQOCqV6lqwOfNQBAn4+F OoaCMyPQT9gvGYwGExQMCXGg0wbUt1qnxzOVoA2qFCwbo+MFhqjBvPXab6VJm7CE mY3RrTtvxSqBdHI6EGcYeLjhycK9b+LLoJ1qc3S9FK8It6NoFFp4XV0R6ItPBls7 mWi9VSpyI6k0AwLq+bGXEHvaX/bnnf/vfqn8H+w6mRZdXjFV8EB2DiOSRX/OqjVG RnvTtXzWWThLyXvWR3Jox4+7X6728oL7akLemoeZI6oTbJDm7dQgwpz5HbSyHXLh d+gUF3Y/6lqxT5N9GSVDxpD1bEMh2I7nGQ4M7WGbGas/3yUemF8wbBqGQo4a+YeD d9vGAUxDp2PQTtL2sjFo5Gd4PZEM9g7vwWzRvHe0o5NxKEXcBg25b8cD1hxrN9Y4 Y1AAnc0kLO+My3PC =lw3M -----END PGP SIGNATURE----- Merge tag 'kbuild-v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild Pull Kbuild updates from Masahiro Yamada: - Add -s option (strict mode) to merge_config.sh to make it fail when any symbol is redefined. - Show a warning if a different compiler is used for building external modules. - Infer --target from ARCH for CC=clang to let you cross-compile the kernel without CROSS_COMPILE. - Make the integrated assembler default (LLVM_IAS=1) for CC=clang. - Add <linux/stdarg.h> to the kernel source instead of borrowing <stdarg.h> from the compiler. - Add Nick Desaulniers as a Kbuild reviewer. - Drop stale cc-option tests. - Fix the combination of CONFIG_TRIM_UNUSED_KSYMS and CONFIG_LTO_CLANG to handle symbols in inline assembly. - Show a warning if 'FORCE' is missing for if_changed rules. - Various cleanups * tag 'kbuild-v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (39 commits) kbuild: redo fake deps at include/ksym/*.h kbuild: clean up objtool_args slightly modpost: get the *.mod file path more simply checkkconfigsymbols.py: Fix the '--ignore' option kbuild: merge vmlinux_link() between ARCH=um and other architectures kbuild: do not remove 'linux' link in scripts/link-vmlinux.sh kbuild: merge vmlinux_link() between the ordinary link and Clang LTO kbuild: remove stale *.symversions kbuild: remove unused quiet_cmd_update_lto_symversions gen_compile_commands: extract compiler command from a series of commands x86: remove cc-option-yn test for -mtune= arc: replace cc-option-yn uses with cc-option s390: replace cc-option-yn uses with cc-option ia64: move core-y in arch/ia64/Makefile to arch/ia64/Kbuild sparc: move the install rule to arch/sparc/Makefile security: remove unneeded subdir-$(CONFIG_...) kbuild: sh: remove unused install script kbuild: Fix 'no symbols' warning when CONFIG_TRIM_UNUSD_KSYMS=y kbuild: Switch to 'f' variants of integrated assembler flag kbuild: Shuffle blank line to improve comment meaning ...
135 lines
3.6 KiB
C
135 lines
3.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef MSM_DISP_SNAPSHOT_H_
|
|
#define MSM_DISP_SNAPSHOT_H_
|
|
|
|
#include <drm/drm_atomic_helper.h>
|
|
#include <drm/drm_device.h>
|
|
#include "../../../drm_crtc_internal.h"
|
|
#include <drm/drm_print.h>
|
|
#include <drm/drm_atomic.h>
|
|
#include <linux/debugfs.h>
|
|
#include <linux/list.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/ktime.h>
|
|
#include <linux/uaccess.h>
|
|
#include <linux/dma-buf.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/list_sort.h>
|
|
#include <linux/pm.h>
|
|
#include <linux/pm_runtime.h>
|
|
#include <linux/kthread.h>
|
|
#include <linux/devcoredump.h>
|
|
#include "msm_kms.h"
|
|
|
|
#define MSM_DISP_SNAPSHOT_MAX_BLKS 10
|
|
|
|
/* debug option to print the registers in logs */
|
|
#define MSM_DISP_SNAPSHOT_DUMP_IN_CONSOLE 0
|
|
|
|
/* print debug ranges in groups of 4 u32s */
|
|
#define REG_DUMP_ALIGN 16
|
|
|
|
/**
|
|
* struct msm_disp_state - structure to store current dpu state
|
|
* @dev: device pointer
|
|
* @drm_dev: drm device pointer
|
|
* @atomic_state: atomic state duplicated at the time of the error
|
|
* @timestamp: timestamp at which the coredump was captured
|
|
*/
|
|
struct msm_disp_state {
|
|
struct device *dev;
|
|
struct drm_device *drm_dev;
|
|
|
|
struct list_head blocks;
|
|
|
|
struct drm_atomic_state *atomic_state;
|
|
|
|
ktime_t timestamp;
|
|
};
|
|
|
|
/**
|
|
* struct msm_disp_state_block - structure to store each hardware block state
|
|
* @name: name of the block
|
|
* @drm_dev: handle to the linked list head
|
|
* @size: size of the register space of this hardware block
|
|
* @state: array holding the register dump of this hardware block
|
|
* @base_addr: starting address of this hardware block's register space
|
|
*/
|
|
struct msm_disp_state_block {
|
|
char name[SZ_128];
|
|
struct list_head node;
|
|
unsigned int size;
|
|
u32 *state;
|
|
void __iomem *base_addr;
|
|
};
|
|
|
|
/**
|
|
* msm_disp_snapshot_init - initialize display snapshot
|
|
* @drm_dev: drm device handle
|
|
*
|
|
* Returns: 0 or -ERROR
|
|
*/
|
|
int msm_disp_snapshot_init(struct drm_device *drm_dev);
|
|
|
|
/**
|
|
* msm_disp_snapshot_destroy - destroy the display snapshot
|
|
* @drm_dev: drm device handle
|
|
*
|
|
* Returns: none
|
|
*/
|
|
void msm_disp_snapshot_destroy(struct drm_device *drm_dev);
|
|
|
|
/**
|
|
* msm_disp_snapshot_state - trigger to dump the display snapshot
|
|
* @drm_dev: handle to drm device
|
|
|
|
* Returns: none
|
|
*/
|
|
void msm_disp_snapshot_state(struct drm_device *drm_dev);
|
|
|
|
/**
|
|
* msm_disp_state_print - print out the current dpu state
|
|
* @disp_state: handle to drm device
|
|
* @p: handle to drm printer
|
|
*
|
|
* Returns: none
|
|
*/
|
|
void msm_disp_state_print(struct msm_disp_state *disp_state, struct drm_printer *p);
|
|
|
|
/**
|
|
* msm_disp_snapshot_capture_state - utility to capture atomic state and hw registers
|
|
* @disp_state: handle to msm_disp_state struct
|
|
|
|
* Returns: none
|
|
*/
|
|
void msm_disp_snapshot_capture_state(struct msm_disp_state *disp_state);
|
|
|
|
/**
|
|
* msm_disp_state_free - free the memory after the coredump has been read
|
|
* @data: handle to struct msm_disp_state
|
|
|
|
* Returns: none
|
|
*/
|
|
void msm_disp_state_free(void *data);
|
|
|
|
/**
|
|
* msm_disp_snapshot_add_block - add a hardware block with its register dump
|
|
* @disp_state: handle to struct msm_disp_state
|
|
* @name: name of the hardware block
|
|
* @len: size of the register space of the hardware block
|
|
* @base_addr: starting address of the register space of the hardware block
|
|
* @fmt: format in which the block names need to be printed
|
|
*
|
|
* Returns: none
|
|
*/
|
|
__printf(4, 5)
|
|
void msm_disp_snapshot_add_block(struct msm_disp_state *disp_state, u32 len,
|
|
void __iomem *base_addr, const char *fmt, ...);
|
|
|
|
#endif /* MSM_DISP_SNAPSHOT_H_ */
|