usb: gadget: f_fs: Add support for IPC logging

Log function entry and exit and dump relevant values
into IPC log buffer. This allows to debug various
race conditions and stability issues.

Allow this to be enabled with CONFIG_USB_F_FS_IPC_LOGGING
which is dependent on CONFIG_QGKI.

Change-Id: I15011d79fc2f054e64f8bbd1f8f5db8944b46ada
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Signed-off-by: Jack Pham <jackp@codeaurora.org>
This commit is contained in:
Jack Pham 2016-07-28 11:51:07 -07:00
commit ba7e9f6335
3 changed files with 325 additions and 22 deletions

View file

@ -237,6 +237,18 @@ config USB_F_CDEV
config USB_F_GSI
tristate
config USB_F_FS_IPC_LOGGING
bool "Enable IPC logging for FunctionFS"
depends on QGKI
default IPC_LOGGING
help
Enables additional debug messages in FunctionFS driver to be
output via IPC Logging mechanism. This can be useful when
troubleshooting transfer stalls or other general failures and
determine if the issue is in the kernel gadget or the userspace
client. Separate IPC log contexts are created for each function
instance at mount time.
# this first set of drivers all depend on bulk-capable hardware.
config USB_CONFIGFS

File diff suppressed because it is too large Load diff

View file

@ -18,6 +18,7 @@
#include <linux/mutex.h>
#include <linux/workqueue.h>
#include <linux/refcount.h>
#include <linux/ipc_logging.h>
#ifdef VERBOSE_DEBUG
#ifndef pr_vdebug
@ -285,6 +286,9 @@ struct ffs_data {
* destroyed by ffs_epfiles_destroy().
*/
struct ffs_epfile *epfiles;
#ifdef CONFIG_USB_F_FS_IPC_LOGGING
void *ipc_log;
#endif
};