mhi: Enable logging based on defconfig options
MHI driver stack logging to the private IPC log buffer can be quite expensive from a MIPS perspective. Enable such MHI logging if and only if such logging is desired in defconfig. Change-Id: I4a16eedc2424d250129b1b44a91d1fa32be399f5 Signed-off-by: Andrei Danaila <adanaila@codeaurora.org>
This commit is contained in:
parent
25539ada43
commit
02716573e8
9 changed files with 65 additions and 32 deletions
|
@ -2,4 +2,5 @@
|
|||
# Makefile for the msm networking support.
|
||||
#
|
||||
|
||||
ccflags-$(CONFIG_MSM_MHI_DEBUG) := -DDEBUG
|
||||
obj-$(CONFIG_MSM_RMNET_MHI) += msm_rmnet_mhi.o
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <linux/msm_mhi.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/ipc_logging.h>
|
||||
#include <linux/device.h>
|
||||
|
||||
#define RMNET_MHI_DRIVER_NAME "rmnet_mhi"
|
||||
#define RMNET_MHI_DEV_NAME "rmnet_mhi%d"
|
||||
|
@ -54,11 +55,14 @@ struct __packed mhi_skb_priv {
|
|||
|
||||
enum DBG_LVL rmnet_ipc_log_lvl = MSG_VERBOSE;
|
||||
enum DBG_LVL rmnet_msg_lvl = MSG_CRITICAL;
|
||||
static unsigned int rmnet_log_override;
|
||||
|
||||
module_param(rmnet_msg_lvl , uint, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(rmnet_msg_lvl, "dbg lvl");
|
||||
module_param(rmnet_ipc_log_lvl, uint, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(rmnet_ipc_log_lvl, "dbg lvl");
|
||||
module_param(rmnet_log_override , uint, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(rmnet_log_override, "dbg class");
|
||||
|
||||
unsigned int mru = MHI_DEFAULT_MRU;
|
||||
module_param(mru, uint, S_IRUGO | S_IWUSR);
|
||||
|
@ -67,11 +71,16 @@ MODULE_PARM_DESC(mru, "MRU interface setting");
|
|||
void *rmnet_ipc_log;
|
||||
|
||||
#define rmnet_log(_msg_lvl, _msg, ...) do { \
|
||||
if ((_msg_lvl) >= rmnet_msg_lvl) \
|
||||
pr_alert("[%s] " _msg, __func__, ##__VA_ARGS__);\
|
||||
if (rmnet_ipc_log && ((_msg_lvl) >= rmnet_ipc_log_lvl)) \
|
||||
ipc_log_string(rmnet_ipc_log, \
|
||||
"[%s] " _msg, __func__, ##__VA_ARGS__); \
|
||||
DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, _msg); \
|
||||
if ((rmnet_log_override || \
|
||||
unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) &&\
|
||||
(_msg_lvl) >= rmnet_msg_lvl) \
|
||||
pr_alert("[%s] " _msg, __func__, ##__VA_ARGS__); \
|
||||
if ((rmnet_log_override || \
|
||||
unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) && \
|
||||
rmnet_ipc_log && ((_msg_lvl) >= rmnet_ipc_log_lvl)) \
|
||||
ipc_log_string(rmnet_ipc_log, \
|
||||
"[%s] " _msg, __func__, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
unsigned long tx_interrupts_count[MHI_RMNET_DEVICE_COUNT];
|
||||
|
|
|
@ -152,6 +152,15 @@ config MSM_MHI_UCI
|
|||
read, write and ioctl operations to communicate with the
|
||||
attached device.
|
||||
|
||||
config MSM_MHI_DEBUG
|
||||
bool "MHI debug support"
|
||||
depends on MSM_MHI
|
||||
help
|
||||
Say yes here to enable debugging support in the MHI transport
|
||||
and individual MHI client drivers. This option may impact
|
||||
throughput as individual MHI packets and state transitions
|
||||
will be logged.
|
||||
|
||||
config MSM_11AD
|
||||
tristate "Platform driver for 11ad chip"
|
||||
depends on PCI
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Makefile for MHI driver
|
||||
ccflags-$(CONFIG_MSM_MHI_DEBUG) := -DDEBUG
|
||||
obj-y += mhi_main.o
|
||||
obj-y += mhi_iface.o
|
||||
obj-y += mhi_init.o
|
||||
|
|
|
@ -25,22 +25,19 @@
|
|||
#include <linux/msm_pcie.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/irqreturn.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
extern struct mhi_pcie_devices mhi_devices;
|
||||
|
||||
enum MHI_DEBUG_CLASS {
|
||||
MHI_DBG_DATA = 0x1000,
|
||||
MHI_DBG_POWER = 0x2000,
|
||||
MHI_DBG_reserved = 0x80000000
|
||||
};
|
||||
|
||||
enum MHI_DEBUG_LEVEL {
|
||||
MHI_MSG_VERBOSE = 0x1,
|
||||
MHI_MSG_INFO = 0x2,
|
||||
MHI_MSG_DBG = 0x4,
|
||||
MHI_MSG_WARNING = 0x8,
|
||||
MHI_MSG_ERROR = 0x10,
|
||||
MHI_MSG_CRITICAL = 0x20,
|
||||
MHI_MSG_RAW = 0x1,
|
||||
MHI_MSG_VERBOSE = 0x2,
|
||||
MHI_MSG_INFO = 0x4,
|
||||
MHI_MSG_DBG = 0x8,
|
||||
MHI_MSG_WARNING = 0x10,
|
||||
MHI_MSG_ERROR = 0x20,
|
||||
MHI_MSG_CRITICAL = 0x40,
|
||||
MHI_MSG_reserved = 0x80000000
|
||||
};
|
||||
|
||||
|
|
|
@ -18,10 +18,9 @@
|
|||
|
||||
#include "mhi_sys.h"
|
||||
|
||||
enum MHI_DEBUG_LEVEL mhi_msg_lvl = MHI_MSG_ERROR;
|
||||
enum MHI_DEBUG_LEVEL mhi_msg_lvl = MHI_MSG_VERBOSE;
|
||||
enum MHI_DEBUG_LEVEL mhi_ipc_log_lvl = MHI_MSG_VERBOSE;
|
||||
|
||||
enum MHI_DEBUG_CLASS mhi_msg_class = MHI_DBG_DATA | MHI_DBG_POWER;
|
||||
unsigned int mhi_log_override;
|
||||
|
||||
module_param(mhi_msg_lvl , uint, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(mhi_msg_lvl, "dbg lvl");
|
||||
|
@ -29,8 +28,8 @@ MODULE_PARM_DESC(mhi_msg_lvl, "dbg lvl");
|
|||
module_param(mhi_ipc_log_lvl, uint, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(mhi_ipc_log_lvl, "dbg lvl");
|
||||
|
||||
module_param(mhi_msg_class , uint, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(mhi_msg_class, "dbg class");
|
||||
module_param(mhi_log_override , uint, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(mhi_log_override, "dbg class");
|
||||
|
||||
static ssize_t mhi_dbgfs_chan_read(struct file *fp, char __user *buf,
|
||||
size_t count, loff_t *offp)
|
||||
|
|
|
@ -17,12 +17,13 @@
|
|||
#include <linux/ipc_logging.h>
|
||||
#include <linux/sysfs.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/device.h>
|
||||
|
||||
#include "mhi.h"
|
||||
|
||||
extern enum MHI_DEBUG_LEVEL mhi_msg_lvl;
|
||||
extern enum MHI_DEBUG_LEVEL mhi_ipc_log_lvl;
|
||||
extern enum MHI_DEBUG_CLASS mhi_msg_class;
|
||||
extern unsigned int mhi_log_override;
|
||||
extern u32 m3_timer_val_ms;
|
||||
|
||||
extern enum MHI_DEBUG_LEVEL mhi_xfer_db_interval;
|
||||
|
@ -40,11 +41,16 @@ extern void *mhi_ipc_log;
|
|||
} while (0)
|
||||
|
||||
#define mhi_log(_msg_lvl, _msg, ...) do { \
|
||||
if ((_msg_lvl) >= mhi_msg_lvl) \
|
||||
pr_alert("[%s] " _msg, __func__, ##__VA_ARGS__);\
|
||||
if (mhi_ipc_log && ((_msg_lvl) >= mhi_ipc_log_lvl)) \
|
||||
ipc_log_string(mhi_ipc_log, \
|
||||
"[%s] " _msg, __func__, ##__VA_ARGS__); \
|
||||
DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, _msg); \
|
||||
if ((mhi_log_override || \
|
||||
unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) &&\
|
||||
(_msg_lvl) >= mhi_msg_lvl) \
|
||||
pr_alert("[%s] " _msg, __func__, ##__VA_ARGS__); \
|
||||
if ((mhi_log_override || \
|
||||
unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) && \
|
||||
mhi_ipc_log && ((_msg_lvl) >= mhi_ipc_log_lvl)) \
|
||||
ipc_log_string(mhi_ipc_log, \
|
||||
"[%s] " _msg, __func__, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
irqreturn_t mhi_msi_handlr(int msi_number, void *dev_id);
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
# Makefile for MHI UCI driver
|
||||
ccflags-$(CONFIG_MSM_MHI_DEBUG) := -DDEBUG
|
||||
obj-y += mhi_uci.o
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/ipc_logging.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/device.h>
|
||||
|
||||
#define MHI_DEV_NODE_NAME_LEN 13
|
||||
#define MHI_MAX_NR_OF_CLIENTS 23
|
||||
|
@ -51,6 +52,7 @@ enum UCI_DBG_LEVEL {
|
|||
|
||||
enum UCI_DBG_LEVEL mhi_uci_msg_lvl = UCI_DBG_CRITICAL;
|
||||
enum UCI_DBG_LEVEL mhi_uci_ipc_log_lvl = UCI_DBG_INFO;
|
||||
static unsigned int uci_log_override;
|
||||
void *mhi_uci_ipc_log;
|
||||
|
||||
struct __packed rs232_ctrl_msg {
|
||||
|
@ -213,10 +215,15 @@ struct mhi_uci_ctxt_t {
|
|||
};
|
||||
|
||||
#define uci_log(_msg_lvl, _msg, ...) do { \
|
||||
if (_msg_lvl >= mhi_uci_msg_lvl) { \
|
||||
pr_err("[%s] "_msg, __func__, ##__VA_ARGS__); \
|
||||
} \
|
||||
if (mhi_uci_ipc_log && (_msg_lvl >= mhi_uci_ipc_log_lvl)) { \
|
||||
DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, _msg); \
|
||||
if ((uci_log_override || \
|
||||
unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) &&\
|
||||
(_msg_lvl >= mhi_uci_msg_lvl)) { \
|
||||
pr_err("[%s] "_msg, __func__, ##__VA_ARGS__); \
|
||||
} \
|
||||
if ((uci_log_override || \
|
||||
unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) && \
|
||||
mhi_uci_ipc_log && (_msg_lvl >= mhi_uci_ipc_log_lvl)) { \
|
||||
ipc_log_string(mhi_uci_ipc_log, \
|
||||
"[%s] " _msg, __func__, ##__VA_ARGS__); \
|
||||
} \
|
||||
|
@ -228,6 +235,9 @@ MODULE_PARM_DESC(mhi_uci_msg_lvl, "uci dbg lvl");
|
|||
module_param(mhi_uci_ipc_log_lvl, uint, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(mhi_uci_ipc_log_lvl, "ipc dbg lvl");
|
||||
|
||||
module_param(uci_log_override , uint, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(uci_log_override, "dbg class");
|
||||
|
||||
static ssize_t mhi_uci_client_read(struct file *file, char __user *buf,
|
||||
size_t count, loff_t *offp);
|
||||
static ssize_t mhi_uci_client_write(struct file *file,
|
||||
|
|
Loading…
Add table
Reference in a new issue