summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-03-29 14:11:54 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-29 14:11:54 -0700
commit55a320308902f7a0746569ee57eeb3f254e6ed16 (patch)
tree43c86db843ede6a0c2aeeb147bad78bc209514cc /kernel
parent18a06efae5b37bf5cb7473b5ba91a50907a8f7ac (diff)
parentd4886bc670a5ab1b74bd0a87a64344d18af206c3 (diff)
Merge branch 'irqdomain/merge' of git://git.secretlab.ca/git/linux-2.6
Pull the code to generalize the powerpc VIRQ_DEBUG code from Grant Likely. That code had been moved into generic irqdomain code, but still had powerpc-specific code and could only be enabled on powerpc. * 'irqdomain/merge' of git://git.secretlab.ca/git/linux-2.6: irqdomain/powerpc: updated defconfigs for VIRQ_DEBUG rename irqdomain: Remove powerpc dependency from debugfs file
Diffstat (limited to 'kernel')
-rw-r--r--kernel/irq/Kconfig10
-rw-r--r--kernel/irq/irqdomain.c8
2 files changed, 14 insertions, 4 deletions
diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig
index 5a38bf4de641..d8e323d12496 100644
--- a/kernel/irq/Kconfig
+++ b/kernel/irq/Kconfig
@@ -56,6 +56,16 @@ config GENERIC_IRQ_CHIP
config IRQ_DOMAIN
bool
+config IRQ_DOMAIN_DEBUG
+ bool "Expose hardware/virtual IRQ mapping via debugfs"
+ depends on IRQ_DOMAIN && DEBUG_FS
+ help
+ This option will show the mapping relationship between hardware irq
+ numbers and Linux irq numbers. The mapping is exposed via debugfs
+ in the file "virq_mapping".
+
+ If you don't know what this means you don't need it.
+
# Support forced irq threading
config IRQ_FORCED_THREADING
bool
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index af48e59bc2ff..3601f3fbf67c 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -632,7 +632,7 @@ unsigned int irq_linear_revmap(struct irq_domain *domain,
return revmap[hwirq];
}
-#ifdef CONFIG_VIRQ_DEBUG
+#ifdef CONFIG_IRQ_DOMAIN_DEBUG
static int virq_debug_show(struct seq_file *m, void *private)
{
unsigned long flags;
@@ -668,7 +668,7 @@ static int virq_debug_show(struct seq_file *m, void *private)
data = irq_desc_get_chip_data(desc);
seq_printf(m, "0x%16p ", data);
- if (desc->irq_data.domain->of_node)
+ if (desc->irq_data.domain && desc->irq_data.domain->of_node)
p = desc->irq_data.domain->of_node->full_name;
else
p = none;
@@ -695,14 +695,14 @@ static const struct file_operations virq_debug_fops = {
static int __init irq_debugfs_init(void)
{
- if (debugfs_create_file("virq_mapping", S_IRUGO, powerpc_debugfs_root,
+ if (debugfs_create_file("irq_domain_mapping", S_IRUGO, NULL,
NULL, &virq_debug_fops) == NULL)
return -ENOMEM;
return 0;
}
__initcall(irq_debugfs_init);
-#endif /* CONFIG_VIRQ_DEBUG */
+#endif /* CONFIG_IRQ_DOMAIN_DEBUG */
int irq_domain_simple_map(struct irq_domain *d, unsigned int irq,
irq_hw_number_t hwirq)