lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 6 Apr 2016 05:25:09 -0400
From:	Greg KH <gregkh@...uxfoundation.org>
To:	changbin.du@...el.com
Cc:	balbi@...nel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] usb: dwc3: add debugfs node to dump FIFO/Queue available
 space

On Wed, Apr 06, 2016 at 04:27:23PM +0800, changbin.du@...el.com wrote:
> From: "Du, Changbin" <changbin.du@...el.com>
> 
> For DWC3 USB controller, the Global Debug Queue/FIFO Space Available
> Register(GDBGFIFOSPACE) can be used to dump FIFO/Queue available space.
> This can be used to check some special issues, like whether data is
> successfully copied from memory to fifo when a trb is blocked.
> 
> Signed-off-by: Du, Changbin <changbin.du@...el.com>
> ---
>  drivers/usb/dwc3/core.h    |  5 +++++
>  drivers/usb/dwc3/debugfs.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 50 insertions(+)

Why did you not include the linux-usb@...r mailing list?



> 
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> index 6254b2f..899cf76 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -348,6 +348,11 @@
>  #define DWC3_DSTS_LOWSPEED		(2 << 0)
>  #define DWC3_DSTS_FULLSPEED1		(3 << 0)
>  
> +/* Global Debug Queue/FIFO Space Available Register */
> +#define DWC3_GDBGFIFOSPACE_NUM(x)	(((x) << 0) & 0x1F)
> +#define DWC3_GDBGFIFOSPACE_TYPE(x)	(((x) << 5) & 0xE0)
> +#define DWC3_GDBGFIFOSPACE_GET_SPACE(x)	(((x) >> 16) & 0xFFFF)
> +
>  /* Device Generic Command Register */
>  #define DWC3_DGCMD_SET_LMP		0x01
>  #define DWC3_DGCMD_SET_PERIODIC_PAR	0x02
> diff --git a/drivers/usb/dwc3/debugfs.c b/drivers/usb/dwc3/debugfs.c
> index 9ac37fe..f9a8d9e 100644
> --- a/drivers/usb/dwc3/debugfs.c
> +++ b/drivers/usb/dwc3/debugfs.c
> @@ -426,6 +426,45 @@ static const struct file_operations dwc3_mode_fops = {
>  	.release		= single_release,
>  };
>  
> +static int dwc3_fifo_show(struct seq_file *s, void *unused)
> +{
> +	struct dwc3		*dwc = s->private;
> +	unsigned long		flags;
> +	unsigned int		type, index;
> +	const char		*name;
> +	u32			reg;
> +
> +	static const char * const fifo_names[] = {
> +		"TxFIFO", "RxFIFO", "TxReqQ", "RxReqQ", "RxInfoQ",
> +		"DescFetchQ", "EventQ", "ProtocolStatusQ"};
> +	spin_lock_irqsave(&dwc->lock, flags);
> +	for (type = 0; type < 8; type++) {
> +		name = fifo_names[type];
> +		for (index = 0; index < 32; index++) {
> +			dwc3_writel(dwc->regs, DWC3_GDBGFIFOSPACE,
> +				DWC3_GDBGFIFOSPACE_NUM(index) |
> +				DWC3_GDBGFIFOSPACE_TYPE(type));
> +			reg = dwc3_readl(dwc->regs, DWC3_GDBGFIFOSPACE);
> +			seq_printf(s, "%s%02d = %d\n", name, index,
> +				DWC3_GDBGFIFOSPACE_GET_SPACE(reg));
> +		}
> +	}
> +	spin_unlock_irqrestore(&dwc->lock, flags);
> +	return 0;
> +}
> +
> +static int dwc3_fifo_open(struct inode *inode, struct file *file)
> +{
> +	return single_open(file, dwc3_fifo_show, inode->i_private);
> +}
> +
> +static const struct file_operations dwc3_fifo_fops = {
> +	.open			= dwc3_fifo_open,
> +	.read			= seq_read,
> +	.llseek			= seq_lseek,
> +	.release		= single_release,
> +};
> +
>  static int dwc3_testmode_show(struct seq_file *s, void *unused)
>  {
>  	struct dwc3		*dwc = s->private;
> @@ -648,6 +687,12 @@ int dwc3_debugfs_init(struct dwc3 *dwc)
>  		goto err1;
>  	}
>  
> +	file = debugfs_create_file("fifo", S_IRUGO, root, dwc, &dwc3_fifo_fops);
> +	if (!file) {
> +		ret = -ENOMEM;

Um, no, that's not the error here.  You shouldn't care at all about
debugfs api call results.  Just keep moving on here please.

thanks,

greg k-h

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ