Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

irqdomain: Kill CONFIG_IRQ_DOMAIN_DEBUG

CONFIG_IRQ_DOMAIN_DEBUG is similar to CONFIG_GENERIC_IRQ_DEBUGFS,
just with less information.

Spring cleanup time.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Yang Shunyong <shunyong.yang@hxt-semitech.com>
Link: https://lkml.kernel.org/r/20180117142647.23622-1-marc.zyngier@arm.com

authored by

Marc Zyngier and committed by
Thomas Gleixner
c5baa1be 80023aea

+2 -180
+2 -34
Documentation/IRQ-domain.txt
··· 265 265 266 266 === Debugging === 267 267 268 - If you switch on CONFIG_IRQ_DOMAIN_DEBUG (which depends on 269 - CONFIG_IRQ_DOMAIN and CONFIG_DEBUG_FS), you will find a new file in 270 - your debugfs mount point, called irq_domain_mapping. This file 271 - contains a live snapshot of all the IRQ domains in the system: 272 - 273 - name mapped linear-max direct-max devtree-node 274 - pl061 8 8 0 /smb/gpio@e0080000 275 - pl061 8 8 0 /smb/gpio@e1050000 276 - pMSI 0 0 0 /interrupt-controller@e1101000/v2m@e0080000 277 - MSI 37 0 0 /interrupt-controller@e1101000/v2m@e0080000 278 - GICv2m 37 0 0 /interrupt-controller@e1101000/v2m@e0080000 279 - GICv2 448 448 0 /interrupt-controller@e1101000 280 - 281 - it also iterates over the interrupts to display their mapping in the 282 - domains, and makes the domain stacking visible: 283 - 284 - 285 - irq hwirq chip name chip data active type domain 286 - 1 0x00019 GICv2 0xffff00000916bfd8 * LINEAR GICv2 287 - 2 0x0001d GICv2 0xffff00000916bfd8 LINEAR GICv2 288 - 3 0x0001e GICv2 0xffff00000916bfd8 * LINEAR GICv2 289 - 4 0x0001b GICv2 0xffff00000916bfd8 * LINEAR GICv2 290 - 5 0x0001a GICv2 0xffff00000916bfd8 LINEAR GICv2 291 - [...] 292 - 96 0x81808 MSI 0x (null) RADIX MSI 293 - 96+ 0x00063 GICv2m 0xffff8003ee116980 RADIX GICv2m 294 - 96+ 0x00063 GICv2 0xffff00000916bfd8 LINEAR GICv2 295 - 97 0x08800 MSI 0x (null) * RADIX MSI 296 - 97+ 0x00064 GICv2m 0xffff8003ee116980 * RADIX GICv2m 297 - 97+ 0x00064 GICv2 0xffff00000916bfd8 * LINEAR GICv2 298 - 299 - Here, interrupts 1-5 are only using a single domain, while 96 and 97 300 - are build out of a stack of three domain, each level performing a 301 - particular function. 268 + Most of the internals of the IRQ subsystem are exposed in debugfs by 269 + turning CONFIG_GENERIC_IRQ_DEBUGFS on.
-1
arch/arm/configs/aspeed_g4_defconfig
··· 1 1 CONFIG_KERNEL_XZ=y 2 2 # CONFIG_SWAP is not set 3 3 CONFIG_SYSVIPC=y 4 - CONFIG_IRQ_DOMAIN_DEBUG=y 5 4 CONFIG_NO_HZ_IDLE=y 6 5 CONFIG_HIGH_RES_TIMERS=y 7 6 CONFIG_LOG_BUF_SHIFT=14
-1
arch/arm/configs/aspeed_g5_defconfig
··· 1 1 CONFIG_KERNEL_XZ=y 2 2 # CONFIG_SWAP is not set 3 3 CONFIG_SYSVIPC=y 4 - CONFIG_IRQ_DOMAIN_DEBUG=y 5 4 CONFIG_NO_HZ_IDLE=y 6 5 CONFIG_HIGH_RES_TIMERS=y 7 6 CONFIG_LOG_BUF_SHIFT=14
-1
arch/arm/configs/hisi_defconfig
··· 1 - CONFIG_IRQ_DOMAIN_DEBUG=y 2 1 CONFIG_NO_HZ=y 3 2 CONFIG_HIGH_RES_TIMERS=y 4 3 CONFIG_BLK_DEV_INITRD=y
-1
arch/arm/configs/multi_v7_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 2 CONFIG_FHANDLE=y 3 - CONFIG_IRQ_DOMAIN_DEBUG=y 4 3 CONFIG_NO_HZ=y 5 4 CONFIG_HIGH_RES_TIMERS=y 6 5 CONFIG_CGROUPS=y
-1
arch/arm/configs/mvebu_v7_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 2 CONFIG_FHANDLE=y 3 - CONFIG_IRQ_DOMAIN_DEBUG=y 4 3 CONFIG_HIGH_RES_TIMERS=y 5 4 CONFIG_LOG_BUF_SHIFT=14 6 5 CONFIG_BLK_DEV_INITRD=y
-1
arch/arm/configs/pxa_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 2 CONFIG_POSIX_MQUEUE=y 3 3 CONFIG_FHANDLE=y 4 - CONFIG_IRQ_DOMAIN_DEBUG=y 5 4 CONFIG_NO_HZ=y 6 5 CONFIG_HIGH_RES_TIMERS=y 7 6 CONFIG_BSD_PROCESS_ACCT=y
-1
arch/arm/configs/sama5_defconfig
··· 2 2 # CONFIG_SWAP is not set 3 3 CONFIG_SYSVIPC=y 4 4 CONFIG_FHANDLE=y 5 - CONFIG_IRQ_DOMAIN_DEBUG=y 6 5 CONFIG_NO_HZ_IDLE=y 7 6 CONFIG_HIGH_RES_TIMERS=y 8 7 CONFIG_LOG_BUF_SHIFT=14
-1
arch/arm/configs/tegra_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 - CONFIG_IRQ_DOMAIN_DEBUG=y 3 2 CONFIG_NO_HZ=y 4 3 CONFIG_HIGH_RES_TIMERS=y 5 4 CONFIG_IKCONFIG=y
-1
arch/arm/configs/vt8500_v6_v7_defconfig
··· 1 - CONFIG_IRQ_DOMAIN_DEBUG=y 2 1 CONFIG_NO_HZ=y 3 2 CONFIG_HIGH_RES_TIMERS=y 4 3 CONFIG_BLK_DEV_INITRD=y
-1
arch/powerpc/configs/fsl-emb-nonhw.config
··· 71 71 CONFIG_IP_ROUTE_VERBOSE=y 72 72 CONFIG_IP_SCTP=m 73 73 CONFIG_IPV6=y 74 - CONFIG_IRQ_DOMAIN_DEBUG=y 75 74 CONFIG_ISO9660_FS=m 76 75 CONFIG_JFFS2_FS_DEBUG=1 77 76 CONFIG_JFFS2_FS=y
-1
arch/powerpc/configs/powernv_defconfig
··· 4 4 CONFIG_SYSVIPC=y 5 5 CONFIG_POSIX_MQUEUE=y 6 6 CONFIG_AUDIT=y 7 - CONFIG_IRQ_DOMAIN_DEBUG=y 8 7 CONFIG_NO_HZ=y 9 8 CONFIG_HIGH_RES_TIMERS=y 10 9 CONFIG_TASKSTATS=y
-1
arch/powerpc/configs/ppc64_defconfig
··· 1 1 CONFIG_PPC64=y 2 2 CONFIG_SYSVIPC=y 3 3 CONFIG_POSIX_MQUEUE=y 4 - CONFIG_IRQ_DOMAIN_DEBUG=y 5 4 CONFIG_NO_HZ=y 6 5 CONFIG_HIGH_RES_TIMERS=y 7 6 CONFIG_TASKSTATS=y
-1
arch/powerpc/configs/pseries_defconfig
··· 3 3 CONFIG_SYSVIPC=y 4 4 CONFIG_POSIX_MQUEUE=y 5 5 CONFIG_AUDIT=y 6 - CONFIG_IRQ_DOMAIN_DEBUG=y 7 6 CONFIG_NO_HZ=y 8 7 CONFIG_HIGH_RES_TIMERS=y 9 8 CONFIG_TASKSTATS=y
-1
arch/xtensa/configs/audio_kc705_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 2 CONFIG_POSIX_MQUEUE=y 3 3 CONFIG_FHANDLE=y 4 - CONFIG_IRQ_DOMAIN_DEBUG=y 5 4 CONFIG_NO_HZ_IDLE=y 6 5 CONFIG_HIGH_RES_TIMERS=y 7 6 CONFIG_IRQ_TIME_ACCOUNTING=y
-1
arch/xtensa/configs/cadence_csp_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 2 CONFIG_POSIX_MQUEUE=y 3 3 CONFIG_USELIB=y 4 - CONFIG_IRQ_DOMAIN_DEBUG=y 5 4 CONFIG_NO_HZ_IDLE=y 6 5 CONFIG_HIGH_RES_TIMERS=y 7 6 CONFIG_IRQ_TIME_ACCOUNTING=y
-1
arch/xtensa/configs/generic_kc705_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 2 CONFIG_POSIX_MQUEUE=y 3 3 CONFIG_FHANDLE=y 4 - CONFIG_IRQ_DOMAIN_DEBUG=y 5 4 CONFIG_NO_HZ_IDLE=y 6 5 CONFIG_HIGH_RES_TIMERS=y 7 6 CONFIG_IRQ_TIME_ACCOUNTING=y
-1
arch/xtensa/configs/nommu_kc705_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 2 CONFIG_POSIX_MQUEUE=y 3 3 CONFIG_FHANDLE=y 4 - CONFIG_IRQ_DOMAIN_DEBUG=y 5 4 CONFIG_NO_HZ_IDLE=y 6 5 CONFIG_HIGH_RES_TIMERS=y 7 6 CONFIG_IRQ_TIME_ACCOUNTING=y
-1
arch/xtensa/configs/smp_lx200_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 2 CONFIG_POSIX_MQUEUE=y 3 3 CONFIG_FHANDLE=y 4 - CONFIG_IRQ_DOMAIN_DEBUG=y 5 4 CONFIG_NO_HZ_IDLE=y 6 5 CONFIG_HIGH_RES_TIMERS=y 7 6 CONFIG_IRQ_TIME_ACCOUNTING=y
-10
kernel/irq/Kconfig
··· 103 103 config GENERIC_IRQ_RESERVATION_MODE 104 104 bool 105 105 106 - config IRQ_DOMAIN_DEBUG 107 - bool "Expose hardware/virtual IRQ mapping via debugfs" 108 - depends on IRQ_DOMAIN && DEBUG_FS 109 - help 110 - This option will show the mapping relationship between hardware irq 111 - numbers and Linux irq numbers. The mapping is exposed via debugfs 112 - in the file "irq_domain_mapping". 113 - 114 - If you don't know what this means you don't need it. 115 - 116 106 # Support forced irq threading 117 107 config IRQ_FORCED_THREADING 118 108 bool
-118
kernel/irq/irqdomain.c
··· 897 897 } 898 898 EXPORT_SYMBOL_GPL(irq_find_mapping); 899 899 900 - #ifdef CONFIG_IRQ_DOMAIN_DEBUG 901 - static void virq_debug_show_one(struct seq_file *m, struct irq_desc *desc) 902 - { 903 - struct irq_domain *domain; 904 - struct irq_data *data; 905 - 906 - domain = desc->irq_data.domain; 907 - data = &desc->irq_data; 908 - 909 - while (domain) { 910 - unsigned int irq = data->irq; 911 - unsigned long hwirq = data->hwirq; 912 - struct irq_chip *chip; 913 - bool direct; 914 - 915 - if (data == &desc->irq_data) 916 - seq_printf(m, "%5d ", irq); 917 - else 918 - seq_printf(m, "%5d+ ", irq); 919 - seq_printf(m, "0x%05lx ", hwirq); 920 - 921 - chip = irq_data_get_irq_chip(data); 922 - seq_printf(m, "%-15s ", (chip && chip->name) ? chip->name : "none"); 923 - 924 - seq_printf(m, "0x%p ", irq_data_get_irq_chip_data(data)); 925 - 926 - seq_printf(m, " %c ", (desc->action && desc->action->handler) ? '*' : ' '); 927 - direct = (irq == hwirq) && (irq < domain->revmap_direct_max_irq); 928 - seq_printf(m, "%6s%-8s ", 929 - (hwirq < domain->revmap_size) ? "LINEAR" : "RADIX", 930 - direct ? "(DIRECT)" : ""); 931 - seq_printf(m, "%s\n", domain->name); 932 - #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY 933 - domain = domain->parent; 934 - data = data->parent_data; 935 - #else 936 - domain = NULL; 937 - #endif 938 - } 939 - } 940 - 941 - static int virq_debug_show(struct seq_file *m, void *private) 942 - { 943 - unsigned long flags; 944 - struct irq_desc *desc; 945 - struct irq_domain *domain; 946 - struct radix_tree_iter iter; 947 - void __rcu **slot; 948 - int i; 949 - 950 - seq_printf(m, " %-16s %-6s %-10s %-10s %s\n", 951 - "name", "mapped", "linear-max", "direct-max", "devtree-node"); 952 - mutex_lock(&irq_domain_mutex); 953 - list_for_each_entry(domain, &irq_domain_list, link) { 954 - struct device_node *of_node; 955 - const char *name; 956 - 957 - int count = 0; 958 - 959 - of_node = irq_domain_get_of_node(domain); 960 - if (of_node) 961 - name = of_node_full_name(of_node); 962 - else if (is_fwnode_irqchip(domain->fwnode)) 963 - name = container_of(domain->fwnode, struct irqchip_fwid, 964 - fwnode)->name; 965 - else 966 - name = ""; 967 - 968 - radix_tree_for_each_slot(slot, &domain->revmap_tree, &iter, 0) 969 - count++; 970 - seq_printf(m, "%c%-16s %6u %10u %10u %s\n", 971 - domain == irq_default_domain ? '*' : ' ', domain->name, 972 - domain->revmap_size + count, domain->revmap_size, 973 - domain->revmap_direct_max_irq, 974 - name); 975 - } 976 - mutex_unlock(&irq_domain_mutex); 977 - 978 - seq_printf(m, "%-5s %-7s %-15s %-*s %6s %-14s %s\n", "irq", "hwirq", 979 - "chip name", (int)(2 * sizeof(void *) + 2), "chip data", 980 - "active", "type", "domain"); 981 - 982 - for (i = 1; i < nr_irqs; i++) { 983 - desc = irq_to_desc(i); 984 - if (!desc) 985 - continue; 986 - 987 - raw_spin_lock_irqsave(&desc->lock, flags); 988 - virq_debug_show_one(m, desc); 989 - raw_spin_unlock_irqrestore(&desc->lock, flags); 990 - } 991 - 992 - return 0; 993 - } 994 - 995 - static int virq_debug_open(struct inode *inode, struct file *file) 996 - { 997 - return single_open(file, virq_debug_show, inode->i_private); 998 - } 999 - 1000 - static const struct file_operations virq_debug_fops = { 1001 - .open = virq_debug_open, 1002 - .read = seq_read, 1003 - .llseek = seq_lseek, 1004 - .release = single_release, 1005 - }; 1006 - 1007 - static int __init irq_debugfs_init(void) 1008 - { 1009 - if (debugfs_create_file("irq_domain_mapping", S_IRUGO, NULL, 1010 - NULL, &virq_debug_fops) == NULL) 1011 - return -ENOMEM; 1012 - 1013 - return 0; 1014 - } 1015 - __initcall(irq_debugfs_init); 1016 - #endif /* CONFIG_IRQ_DOMAIN_DEBUG */ 1017 - 1018 900 /** 1019 901 * irq_domain_xlate_onecell() - Generic xlate for direct one cell bindings 1020 902 *