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]
Message-ID: <20111115220437.GA26711@legolas.emea.dhcp.ti.com>
Date:	Wed, 16 Nov 2011 00:04:39 +0200
From:	Felipe Balbi <balbi@...com>
To:	Alessandro Rubini <rubini@...dd.com>
Cc:	gregkh@...e.de, linux-kernel@...r.kernel.org,
	giancarlo.asnaghi@...com
Subject: Re: [RFC PATCH] debugfs: add tools to printk 32-bit registers

Hi,

On Tue, Nov 15, 2011 at 10:37:34PM +0100, Alessandro Rubini wrote:
> Hi Greg. Thanks for looking.
> 
> >> +/*
> >> + * The regset32 stuff is used to print 32-bit registers using the
> >> + * seq_file utilities. We offer printing a register set in an already-opened
> >> + * sequential file or create a debugfs file that only prints a regset32.
> >> + */
> > 
> > Can this be part of the kerneldoc below somehow so that people are more
> > aware of it?
> 
> Ok. There's also a file by Jon in Documentation that needs updating, as it
> has all the other debugfs file types.
>  
> > +int debugfs_print_regs32(struct seq_file *s, struct debugfs_reg32 *regs,
> >> +			   int nregs, void __iomem *base, char *prefix)
> 
> > This function also needs to be part of debugfs.h in the "debugfs is not
> > enabled" section of the file, right?
> 
> Not really. The other one makes a regiters-only file, and it's good
> to register it withouth ifdef.
> 
> This one is used to embed a register block in a file with more
> stuff, so it shouldn't be used if debugfs is not selected (btw,
> I compiled my internal stuff with and without CONFIG_DEBUG_FS
> before rebasing to next).
> 
> Example:
> 
>    static int pl08x_debugfs_show(struct seq_file *s, void *data)
>    {  
> 	[...]
>         list_for_each_entry(chan, &pl08x->slave.channels, chan.device_node) {
>                 seq_printf(s, "%s\t\t%s\n", chan->name,
>                            pl08x_state_str(chan->state));
>         }
> 
>         /* dump registers */
>         seq_printf(s, "\nPL08x registers\n");
>         debugfs_print_regs32(s, pl08x_regs, ARRAY_SIZE(pl08x_regs),
>                                pl08x->base, "");
> 
>         seq_printf(s, "\nPL08x registers channel\n");
>         for (i = 0; i < pl08x->vd->channels; i++) {
> 	[...]
>    }
> 
> So, I'll post a V2 shortly, unless you refuse it in reply to this.

this will be useful to dwc3 too, we currently have:

struct dwc3_register {
	const char	*name;
	u32		offset;
};

#define dump_register(nm)				\
{							\
	.name	= __stringify(nm),			\
	.offset	= DWC3_ ##nm,				\
}

static const struct dwc3_register dwc3_regs[] = {
	dump_register(GSBUSCFG0),
	dump_register(GSBUSCFG1),
	dump_register(GTXTHRCFG),

	...
};

static int dwc3_regdump_show(struct seq_file *s, void *unused)
{
	struct dwc3		*dwc = s->private;
	int			i;

	seq_printf(s, "DesignWare USB3 Core Register Dump\n");

	for (i = 0; i < ARRAY_SIZE(dwc3_regs); i++) {
		seq_printf(s, "%-20s :    %08x\n", dwc3_regs[i].name,
				dwc3_readl(dwc->regs, dwc3_regs[i].offset));
	}

	return 0;
}

...

-- 
balbi

Download attachment "signature.asc" of type "application/pgp-signature" (837 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ