Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
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 irq fixes from Thomas Gleixner:
"From the irqchip departement you get:

- regression fix for omap-intc

- regression fix for atmel-aic-common

- functional correctness fix for hip04

- type mismatch fix for gic-v3-its

- proper error pointer check for mtd-sysirq

Mostly one and two liners except for the omap regression fix which is
slightly larger than desired"

* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
irqchip: atmel-aic-common: Prevent clobbering of priority when changing IRQ type
irqchip: omap-intc: Fix legacy DMA regression
irqchip: gic-v3-its: Fix use of max with decimal constant
irqchip: hip04: Initialize hip04_cpu_map to 0xffff
irqchip: mtk-sysirq: Use IS_ERR() instead of NULL pointer check

+27 -11
+2 -2
drivers/irqchip/irq-atmel-aic-common.c
··· 28 28 #define AT91_AIC_IRQ_MIN_PRIORITY 0 29 29 #define AT91_AIC_IRQ_MAX_PRIORITY 7 30 30 31 - #define AT91_AIC_SRCTYPE GENMASK(7, 6) 31 + #define AT91_AIC_SRCTYPE GENMASK(6, 5) 32 32 #define AT91_AIC_SRCTYPE_LOW (0 << 5) 33 33 #define AT91_AIC_SRCTYPE_FALLING (1 << 5) 34 34 #define AT91_AIC_SRCTYPE_HIGH (2 << 5) ··· 74 74 return -EINVAL; 75 75 } 76 76 77 - *val &= AT91_AIC_SRCTYPE; 77 + *val &= ~AT91_AIC_SRCTYPE; 78 78 *val |= aic_type; 79 79 80 80 return 0;
+1 -1
drivers/irqchip/irq-gic-v3-its.c
··· 1053 1053 * of two entries. No, the architecture doesn't let you 1054 1054 * express an ITT with a single entry. 1055 1055 */ 1056 - nr_ites = max(2, roundup_pow_of_two(nvecs)); 1056 + nr_ites = max(2UL, roundup_pow_of_two(nvecs)); 1057 1057 sz = nr_ites * its->ite_size; 1058 1058 sz = max(sz, ITS_ITT_ALIGN) + ITS_ITT_ALIGN - 1; 1059 1059 itt = kmalloc(sz, GFP_KERNEL);
+1 -1
drivers/irqchip/irq-hip04.c
··· 381 381 * It will be refined as each CPU probes its ID. 382 382 */ 383 383 for (i = 0; i < NR_HIP04_CPU_IF; i++) 384 - hip04_cpu_map[i] = 0xff; 384 + hip04_cpu_map[i] = 0xffff; 385 385 386 386 /* 387 387 * Find out how many interrupts are supported.
+2 -2
drivers/irqchip/irq-mtk-sysirq.c
··· 137 137 return -ENOMEM; 138 138 139 139 chip_data->intpol_base = of_io_request_and_map(node, 0, "intpol"); 140 - if (!chip_data->intpol_base) { 140 + if (IS_ERR(chip_data->intpol_base)) { 141 141 pr_err("mtk_sysirq: unable to map sysirq register\n"); 142 - ret = -ENOMEM; 142 + ret = PTR_ERR(chip_data->intpol_base); 143 143 goto out_free; 144 144 } 145 145
+21 -5
drivers/irqchip/irq-omap-intc.c
··· 263 263 return ret; 264 264 } 265 265 266 - static int __init omap_init_irq_legacy(u32 base) 266 + static int __init omap_init_irq_legacy(u32 base, struct device_node *node) 267 267 { 268 268 int j, irq_base; 269 269 ··· 277 277 irq_base = 0; 278 278 } 279 279 280 - domain = irq_domain_add_legacy(NULL, omap_nr_irqs, irq_base, 0, 280 + domain = irq_domain_add_legacy(node, omap_nr_irqs, irq_base, 0, 281 281 &irq_domain_simple_ops, NULL); 282 282 283 283 omap_irq_soft_reset(); ··· 301 301 { 302 302 int ret; 303 303 304 - if (node) 304 + /* 305 + * FIXME legacy OMAP DMA driver sitting under arch/arm/plat-omap/dma.c 306 + * depends is still not ready for linear IRQ domains; because of that 307 + * we need to temporarily "blacklist" OMAP2 and OMAP3 devices from using 308 + * linear IRQ Domain until that driver is finally fixed. 309 + */ 310 + if (of_device_is_compatible(node, "ti,omap2-intc") || 311 + of_device_is_compatible(node, "ti,omap3-intc")) { 312 + struct resource res; 313 + 314 + if (of_address_to_resource(node, 0, &res)) 315 + return -ENOMEM; 316 + 317 + base = res.start; 318 + ret = omap_init_irq_legacy(base, node); 319 + } else if (node) { 305 320 ret = omap_init_irq_of(node); 306 - else 307 - ret = omap_init_irq_legacy(base); 321 + } else { 322 + ret = omap_init_irq_legacy(base, NULL); 323 + } 308 324 309 325 if (ret == 0) 310 326 omap_irq_enable_protection();