mirror of
https://github.com/torvalds/linux.git
synced 2024-12-15 15:41:58 +00:00
34fb0e7034
Currently it is not detectable from within Linux when PCI instructions are retried because of a busy condition. Detecting such conditions and especially how long they lasted can however be quite useful in problem determination. This patch enables this by adding an s390dbf error log when a CC 2 is first encountered as well as after the retried instruction. Despite being unlikely it may be possible that these added debug messages drown out important other messages so allow setting the debug level in zpci_err_insn*() and set their level to 1 so they can be filtered out if need be. Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Reviewed-by: Pierre Morel <pmorel@linux.ibm.com> Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
31 lines
722 B
C
31 lines
722 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _S390_ASM_PCI_DEBUG_H
|
|
#define _S390_ASM_PCI_DEBUG_H
|
|
|
|
#include <asm/debug.h>
|
|
|
|
extern debug_info_t *pci_debug_msg_id;
|
|
extern debug_info_t *pci_debug_err_id;
|
|
|
|
#define zpci_dbg(imp, fmt, args...) \
|
|
debug_sprintf_event(pci_debug_msg_id, imp, fmt, ##args)
|
|
|
|
#define zpci_err(text...) \
|
|
do { \
|
|
char debug_buffer[16]; \
|
|
snprintf(debug_buffer, 16, text); \
|
|
debug_text_event(pci_debug_err_id, 0, debug_buffer); \
|
|
} while (0)
|
|
|
|
static inline void zpci_err_hex_level(int level, void *addr, int len)
|
|
{
|
|
debug_event(pci_debug_err_id, level, addr, len);
|
|
}
|
|
|
|
static inline void zpci_err_hex(void *addr, int len)
|
|
{
|
|
zpci_err_hex_level(0, addr, len);
|
|
}
|
|
|
|
#endif
|