LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Zhang Wei <wei.zhang@freescale.com> To: mporter@kernel.crashing.org, galak@kernel.crashing.org Cc: linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org, Zhang Wei <wei.zhang@freescale.com> Subject: [PATCH 15/17] Add RapidIO proc fs for memory mapping debugging. Date: Wed, 5 Mar 2008 00:30:00 +0800 [thread overview] Message-ID: <1204648202-5495-15-git-send-email-wei.zhang@freescale.com> (raw) In-Reply-To: <1204648202-5495-14-git-send-email-wei.zhang@freescale.com> Get RapidIO space resource by catting /proc/riores. Signed-off-by: Zhang Wei <wei.zhang@freescale.com> --- drivers/rapidio/Kconfig | 8 +++ drivers/rapidio/rio.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 0 deletions(-) diff --git a/drivers/rapidio/Kconfig b/drivers/rapidio/Kconfig index fde2bb3..f669108 100644 --- a/drivers/rapidio/Kconfig +++ b/drivers/rapidio/Kconfig @@ -9,4 +9,12 @@ config RAPIDIO_DISC_TIMEOUT Amount of time a discovery node waits for a host to complete enumeration before giving up. +config RAPIDIO_PROC_FS + bool "I/O and Memory resource debug" + depends on RAPIDIO && PROC_FS + default y + ---help--- + Enable this option, it will create a /proc/riores node for + monitoring the RapidIO I/O and Memory resource. + source "drivers/rapidio/sallocator/Kconfig" diff --git a/drivers/rapidio/rio.c b/drivers/rapidio/rio.c index afd4da6..bbab7ac 100644 --- a/drivers/rapidio/rio.c +++ b/drivers/rapidio/rio.c @@ -31,6 +31,9 @@ #include <linux/spinlock.h> #include <linux/slab.h> #include <linux/interrupt.h> +#include <linux/seq_file.h> +#include <linux/fs.h> +#include <linux/proc_fs.h> #include <linux/dma-mapping.h> #include <linux/hardirq.h> @@ -867,3 +870,119 @@ EXPORT_SYMBOL_GPL(rio_request_inb_mbox); EXPORT_SYMBOL_GPL(rio_release_inb_mbox); EXPORT_SYMBOL_GPL(rio_request_outb_mbox); EXPORT_SYMBOL_GPL(rio_release_outb_mbox); + +#ifdef CONFIG_RAPIDIO_PROC_FS +enum { MAX_IORES_LEVEL = 5 }; + +struct riors { + struct rio_mport *mp; + int res; + struct resource *p; +} riomres; + +static void *r_next(struct seq_file *m, void *v, loff_t *pos) +{ + struct resource *p = v; + struct riors *rs = m->private; + + (*pos)++; + if (p->child) + return p->child; + while (!p->sibling && p->parent) + p = p->parent; + if (p->sibling) + return p->sibling; + else { + rs->res++; + if(rs->res >= RIO_MAX_MPORT_RESOURCES) { + rs->mp = list_entry(rs->mp->node.next, struct rio_mport, node); + rs->res = 0; + if (&rs->mp->node == &rio_mports) + return NULL; + } + seq_printf(m, "%2d: ", rs->res); + rs->p = &rs->mp->riores[rs->res]; + p = rs->p; + + return p; + } +} + +static void *r_start(struct seq_file *m, loff_t *pos) +{ + struct riors *rs = m->private; + struct resource *p; + + if (*pos) { + *pos = 0; + return NULL; + } + + rs->mp = list_entry(rio_mports.next, struct rio_mport, node); + rs->res = -1; + rs->p = &rs->mp->iores; + p = rs->p; + + seq_printf(m, "IO: "); + + return p; +} + +static void r_stop(struct seq_file *m, void *v) +{ +} + +static int r_show(struct seq_file *m, void *v) +{ + struct riors *rs = m->private; + struct resource *root = rs->p; + struct resource *r = v, *p; + int width = root->end < 0x10000 ? 4 : 8; + int depth; + + for (depth = 0, p = r; p->parent && depth < MAX_IORES_LEVEL; depth++, p = p->parent) + if (p == root) + break; + seq_printf(m, "%*s%0*llx-%0*llx : %s\n", + depth * 2, "", + width, (unsigned long long) r->start, + width, (unsigned long long) r->end, + r->name ? r->name : "<BAD>"); + return 0; +} + +static const struct seq_operations resource_op = { + .start = r_start, + .next = r_next, + .stop = r_stop, + .show = r_show, +}; + +static int riores_open(struct inode *inode, struct file *file) +{ + int res = seq_open(file, &resource_op); + if (!res) { + struct seq_file *m = file->private_data; + m->private = &riomres; + } + return res; +} + +static const struct file_operations proc_riores_operations = { + .open = riores_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static int __init rioresources_init(void) +{ + struct proc_dir_entry *entry; + + entry = create_proc_entry("riores", 0, NULL); + if (entry) + entry->proc_fops = &proc_riores_operations; + return 0; +} +__initcall(rioresources_init); +#endif -- 1.5.4
next prev parent reply other threads:[~2008-03-04 8:35 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2008-03-04 16:29 [PATCH 01/17] Change RIO function mpc85xx_ to fsl_ Zhang Wei 2008-03-04 16:29 ` [PATCH 02/17] Add RapidIO option to kernel configuration Zhang Wei 2008-03-04 16:29 ` [PATCH 03/17] Move include/asm-ppc/rio.h to include/asm-powerpc/rio.h Zhang Wei 2008-03-04 16:29 ` [PATCH 04/17] Add RapidIO multi mport support Zhang Wei 2008-03-04 16:29 ` [PATCH 05/17] Add OF-tree support to RapidIO controller driver Zhang Wei 2008-03-04 10:12 ` Stephen Rothwell 2008-03-04 16:29 ` [PATCH 06/17] Change the kernel configurated RapidIO system size to auto-probing Zhang Wei 2008-03-04 10:20 ` Stephen Rothwell 2008-03-04 16:29 ` [PATCH 07/17] Add RapidIO node into MPC8641HPCN dts file Zhang Wei 2008-03-04 16:29 ` [PATCH 08/17] Add RapidIO node probing into MPC86xx_HPCN board id table Zhang Wei 2008-03-04 16:29 ` [PATCH 09/17] Add serial RapidIO controller support, which includes MPC8548, MPC8641 Zhang Wei 2008-03-04 16:29 ` [PATCH 10/17] Add RapidIO connection info print out and re-training for break connection Zhang Wei 2008-03-04 16:29 ` [PATCH 11/17] Add memory mapping driver to RapidIO Zhang Wei 2008-03-04 10:37 ` Stephen Rothwell 2008-03-05 1:59 ` Zhang Wei 2008-03-05 2:51 ` Stephen Rothwell 2008-03-11 8:53 ` Zhang Wei 2008-03-04 16:29 ` [PATCH 12/17] Add RapidIO space allocation bitmap arithmetic Zhang Wei 2008-03-04 16:29 ` [PATCH 13/17] Add FSL RapidIO controller memory ops functions Zhang Wei 2008-03-04 16:29 ` [PATCH 14/17] Add the RapidIO master port maintance and doorbell window to space resources Zhang Wei 2008-03-04 16:30 ` Zhang Wei [this message] 2008-03-04 16:30 ` [PATCH 16/17] Change RapidIO doorbell source and target ID field to 16-bit Zhang Wei 2008-03-04 16:30 ` [PATCH 17/17] Add the memory mapping support in rionet driver Zhang Wei 2008-03-11 9:07 [PATCH 01/17] Change RIO function mpc85xx_ to fsl_ Zhang Wei 2008-03-11 9:07 ` [PATCH 02/17] Add RapidIO option to kernel configuration Zhang Wei 2008-03-11 9:07 ` [PATCH 03/17] Move include/asm-ppc/rio.h to include/asm-powerpc/rio.h Zhang Wei 2008-03-11 9:07 ` [PATCH 04/17] Add RapidIO multi mport support Zhang Wei 2008-03-11 9:07 ` [PATCH 05/17] Add OF-tree support to RapidIO controller driver Zhang Wei 2008-03-11 9:07 ` [PATCH 06/17] Change the kernel configurated RapidIO system size to auto-probing Zhang Wei 2008-03-11 9:07 ` [PATCH 07/17] Add RapidIO node into MPC8641HPCN dts file Zhang Wei 2008-03-11 9:07 ` [PATCH 08/17] Add RapidIO node probing into MPC86xx_HPCN board id table Zhang Wei 2008-03-11 9:07 ` [PATCH 09/17] Add serial RapidIO controller support, which includes MPC8548, MPC8641 Zhang Wei 2008-03-11 9:07 ` [PATCH 10/17] Add RapidIO connection info print out and re-training for break connection Zhang Wei 2008-03-11 9:07 ` [PATCH 11/17] Add memory mapping driver to RapidIO Zhang Wei 2008-03-11 9:07 ` [PATCH 12/17] Add RapidIO space allocation bitmap arithmetic Zhang Wei 2008-03-11 9:07 ` [PATCH 13/17] Add FSL RapidIO controller memory ops functions Zhang Wei 2008-03-11 9:07 ` [PATCH 14/17] Add the RapidIO master port maintance and doorbell window to space resources Zhang Wei 2008-03-11 9:07 ` [PATCH 15/17] Add RapidIO proc fs for memory mapping debugging Zhang Wei
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1204648202-5495-15-git-send-email-wei.zhang@freescale.com \ --to=wei.zhang@freescale.com \ --cc=galak@kernel.crashing.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@ozlabs.org \ --cc=mporter@kernel.crashing.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).