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

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull ARM irq chip fixes from Thomas Gleixner:
"Another pile of ARM specific irq chip fixlets:

- off by one bugs in the crossbar driver
- missing annotations
- a bunch of "make it compile" updates

I pulled the lot today from Jason, but it has been in -next for at
least a week"

* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
irqchip: gic-v3: Declare rdist as __percpu pointer to __iomem pointer
irqchip: gic: Make gic_default_routable_irq_domain_ops static
irqchip: exynos-combiner: Fix compilation error on ARM64
irqchip: crossbar: Off by one bugs in init
irqchip: gic-v3: Tag all low level accessors __maybe_unused
irqchip: gic-v3: Only define gic_peek_irq() when building SMP

+23 -22
+1
drivers/irqchip/exynos-combiner.c
··· 15 15 #include <linux/slab.h> 16 16 #include <linux/irqdomain.h> 17 17 #include <linux/irqchip/chained_irq.h> 18 + #include <linux/interrupt.h> 18 19 #include <linux/of_address.h> 19 20 #include <linux/of_irq.h> 20 21
+2 -2
drivers/irqchip/irq-crossbar.c
··· 220 220 of_property_read_u32_index(node, 221 221 "ti,irqs-reserved", 222 222 i, &entry); 223 - if (entry > max) { 223 + if (entry >= max) { 224 224 pr_err("Invalid reserved entry\n"); 225 225 ret = -EINVAL; 226 226 goto err_irq_map; ··· 238 238 of_property_read_u32_index(node, 239 239 "ti,irqs-skip", 240 240 i, &entry); 241 - if (entry > max) { 241 + if (entry >= max) { 242 242 pr_err("Invalid skip entry\n"); 243 243 ret = -EINVAL; 244 244 goto err_irq_map;
+19 -19
drivers/irqchip/irq-gic-v3.c
··· 36 36 struct gic_chip_data { 37 37 void __iomem *dist_base; 38 38 void __iomem **redist_base; 39 - void __percpu __iomem **rdist; 39 + void __iomem * __percpu *rdist; 40 40 struct irq_domain *domain; 41 41 u64 redist_stride; 42 42 u32 redist_regions; ··· 104 104 } 105 105 106 106 /* Low level accessors */ 107 - static u64 gic_read_iar(void) 107 + static u64 __maybe_unused gic_read_iar(void) 108 108 { 109 109 u64 irqstat; 110 110 ··· 112 112 return irqstat; 113 113 } 114 114 115 - static void gic_write_pmr(u64 val) 115 + static void __maybe_unused gic_write_pmr(u64 val) 116 116 { 117 117 asm volatile("msr_s " __stringify(ICC_PMR_EL1) ", %0" : : "r" (val)); 118 118 } 119 119 120 - static void gic_write_ctlr(u64 val) 120 + static void __maybe_unused gic_write_ctlr(u64 val) 121 121 { 122 122 asm volatile("msr_s " __stringify(ICC_CTLR_EL1) ", %0" : : "r" (val)); 123 123 isb(); 124 124 } 125 125 126 - static void gic_write_grpen1(u64 val) 126 + static void __maybe_unused gic_write_grpen1(u64 val) 127 127 { 128 128 asm volatile("msr_s " __stringify(ICC_GRPEN1_EL1) ", %0" : : "r" (val)); 129 129 isb(); 130 130 } 131 131 132 - static void gic_write_sgi1r(u64 val) 132 + static void __maybe_unused gic_write_sgi1r(u64 val) 133 133 { 134 134 asm volatile("msr_s " __stringify(ICC_SGI1R_EL1) ", %0" : : "r" (val)); 135 135 } ··· 198 198 199 199 writel_relaxed(mask, base + offset + (gic_irq(d) / 32) * 4); 200 200 rwp_wait(); 201 - } 202 - 203 - static int gic_peek_irq(struct irq_data *d, u32 offset) 204 - { 205 - u32 mask = 1 << (gic_irq(d) % 32); 206 - void __iomem *base; 207 - 208 - if (gic_irq_in_rdist(d)) 209 - base = gic_data_rdist_sgi_base(); 210 - else 211 - base = gic_data.dist_base; 212 - 213 - return !!(readl_relaxed(base + offset + (gic_irq(d) / 32) * 4) & mask); 214 201 } 215 202 216 203 static void gic_mask_irq(struct irq_data *d) ··· 388 401 } 389 402 390 403 #ifdef CONFIG_SMP 404 + static int gic_peek_irq(struct irq_data *d, u32 offset) 405 + { 406 + u32 mask = 1 << (gic_irq(d) % 32); 407 + void __iomem *base; 408 + 409 + if (gic_irq_in_rdist(d)) 410 + base = gic_data_rdist_sgi_base(); 411 + else 412 + base = gic_data.dist_base; 413 + 414 + return !!(readl_relaxed(base + offset + (gic_irq(d) / 32) * 4) & mask); 415 + } 416 + 391 417 static int gic_secondary_init(struct notifier_block *nfb, 392 418 unsigned long action, void *hcpu) 393 419 {
+1 -1
drivers/irqchip/irq-gic.c
··· 867 867 return 0; 868 868 } 869 869 870 - const struct irq_domain_ops gic_default_routable_irq_domain_ops = { 870 + static const struct irq_domain_ops gic_default_routable_irq_domain_ops = { 871 871 .map = gic_routable_irq_domain_map, 872 872 .unmap = gic_routable_irq_domain_unmap, 873 873 .xlate = gic_routable_irq_domain_xlate,