On Mon, May 17, 2021 at 04:36:08PM -0700, Badhri Jagan Sridharan wrote: > Although TCPM logs were primarily focussed to aid developers > during bringup, TCPM logs have proved to be critical even > post-bringup as it provides a good starting point to triage > interoperability issues with accessories. TCPM logs > are exposed through debugfs filesystem. For systems that > don't mount debugfs by default, this change introduces a > module parameter log_misc_dev which when set exports the > tcpm logs through a misc device. This change also leaves > the option of exporting tcpm logs through debugfs for > backwards compatibility. > > Signed-off-by: Badhri Jagan Sridharan <badhri@xxxxxxxxxx> > --- > drivers/usb/typec/tcpm/tcpm.c | 98 +++++++++++++++++++++++++---------- > 1 file changed, 72 insertions(+), 26 deletions(-) > > diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c > index c4fdc00a3bc8..b79194919b27 100644 > --- a/drivers/usb/typec/tcpm/tcpm.c > +++ b/drivers/usb/typec/tcpm/tcpm.c > @@ -12,6 +12,7 @@ > #include <linux/jiffies.h> > #include <linux/kernel.h> > #include <linux/kthread.h> > +#include <linux/miscdevice.h> > #include <linux/module.h> > #include <linux/mutex.h> > #include <linux/power_supply.h> > @@ -33,6 +34,10 @@ > > #include <uapi/linux/sched/types.h> > > +static bool modparam_log_misc_dev; > +module_param_named(log_misc_dev, modparam_log_misc_dev, bool, 0444); > +MODULE_PARM_DESC(log_misc_dev, "Expose tcpm logs through misc device"); > + > #define FOREACH_STATE(S) \ > S(INVALID_STATE), \ > S(TOGGLING), \ > @@ -465,13 +470,15 @@ struct tcpm_port { > * SNK_READY for non-pd link. > */ > bool slow_charger_loop; > -#ifdef CONFIG_DEBUG_FS > + > struct dentry *dentry; > struct mutex logbuffer_lock; /* log buffer access lock */ > int logbuffer_head; > int logbuffer_tail; > u8 *logbuffer[LOG_BUFFER_ENTRIES]; > -#endif > + > + /* TCPM logs are exposed through misc device when modparam_log_misc_dev is set. */ > + struct miscdevice misc; >From a technical point of view, this is not ok as now you have 2 different things controlling the lifecycle/lifespan of this structure, making it impossible to audit and actually figure out what is happening when. Please do not do that. greg k-h