s390-vfio-ap: introduces s390 kernel debug feature for vfio_ap device driver
Sets up an s390dbf debug log for the vfio_ap device driver for logging events occurring during the lifetime of the driver. Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com> Reviewed-by: Harald Freudenberger <freude@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
Родитель
dfd42facf1
Коммит
a084c44eaa
|
@ -0,0 +1,32 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright IBM Corp. 2022
|
||||
*
|
||||
* Author(s): Tony Krowiak <akrowiak@linux.ibm.com>
|
||||
*/
|
||||
#ifndef VFIO_AP_DEBUG_H
|
||||
#define VFIO_AP_DEBUG_H
|
||||
|
||||
#include <asm/debug.h>
|
||||
|
||||
#define DBF_ERR 3 /* error conditions */
|
||||
#define DBF_WARN 4 /* warning conditions */
|
||||
#define DBF_INFO 5 /* informational */
|
||||
#define DBF_DEBUG 6 /* for debugging only */
|
||||
|
||||
#define DBF_MAX_SPRINTF_ARGS 10
|
||||
|
||||
#define VFIO_AP_DBF(...) \
|
||||
debug_sprintf_event(vfio_ap_dbf_info, ##__VA_ARGS__)
|
||||
#define VFIO_AP_DBF_ERR(...) \
|
||||
debug_sprintf_event(vfio_ap_dbf_info, DBF_ERR, ##__VA_ARGS__)
|
||||
#define VFIO_AP_DBF_WARN(...) \
|
||||
debug_sprintf_event(vfio_ap_dbf_info, DBF_WARN, ##__VA_ARGS__)
|
||||
#define VFIO_AP_DBF_INFO(...) \
|
||||
debug_sprintf_event(vfio_ap_dbf_info, DBF_INFO, ##__VA_ARGS__)
|
||||
#define VFIO_AP_DBF_DBG(...) \
|
||||
debug_sprintf_event(vfio_ap_dbf_info, DBF_DEBUG, ##__VA_ARGS__)
|
||||
|
||||
extern debug_info_t *vfio_ap_dbf_info;
|
||||
|
||||
#endif /* VFIO_AP_DEBUG_H */
|
|
@ -14,6 +14,7 @@
|
|||
#include <linux/string.h>
|
||||
#include <asm/facility.h>
|
||||
#include "vfio_ap_private.h"
|
||||
#include "vfio_ap_debug.h"
|
||||
|
||||
#define VFIO_AP_ROOT_NAME "vfio_ap"
|
||||
#define VFIO_AP_DEV_NAME "matrix"
|
||||
|
@ -26,6 +27,7 @@ MODULE_DESCRIPTION("VFIO AP device driver, Copyright IBM Corp. 2018");
|
|||
MODULE_LICENSE("GPL v2");
|
||||
|
||||
struct ap_matrix_dev *matrix_dev;
|
||||
debug_info_t *vfio_ap_dbf_info;
|
||||
|
||||
/* Only type 10 adapters (CEX4 and later) are supported
|
||||
* by the AP matrix device driver
|
||||
|
@ -250,10 +252,28 @@ static void vfio_ap_matrix_dev_destroy(void)
|
|||
root_device_unregister(root_device);
|
||||
}
|
||||
|
||||
static int __init vfio_ap_dbf_info_init(void)
|
||||
{
|
||||
vfio_ap_dbf_info = debug_register("vfio_ap", 1, 1,
|
||||
DBF_MAX_SPRINTF_ARGS * sizeof(long));
|
||||
|
||||
if (!vfio_ap_dbf_info)
|
||||
return -ENOENT;
|
||||
|
||||
debug_register_view(vfio_ap_dbf_info, &debug_sprintf_view);
|
||||
debug_set_level(vfio_ap_dbf_info, DBF_WARN);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init vfio_ap_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = vfio_ap_dbf_info_init();
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* If there are no AP instructions, there is nothing to pass through. */
|
||||
if (!ap_instructions_available())
|
||||
return -ENODEV;
|
||||
|
@ -284,6 +304,7 @@ static void __exit vfio_ap_exit(void)
|
|||
vfio_ap_mdev_unregister();
|
||||
ap_driver_unregister(&vfio_ap_drv);
|
||||
vfio_ap_matrix_dev_destroy();
|
||||
debug_unregister(vfio_ap_dbf_info);
|
||||
}
|
||||
|
||||
module_init(vfio_ap_init);
|
||||
|
|
Загрузка…
Ссылка в новой задаче