android_kernel_oneplus_msm8998/drivers/irqchip
Ard Biesheuvel abca46335f irqchip/gic-v3-its: Ensure nr_ites >= nr_lpis
commit 4f2c7583e33eb08dc09dd2e25574b80175ba7d93 upstream.

When struct its_device instances are created, the nr_ites member
will be set to a power of 2 that equals or exceeds the requested
number of MSIs passed to the msi_prepare() callback. At the same
time, the LPI map is allocated to be some multiple of 32 in size,
where the allocated size may be less than the requested size
depending on whether a contiguous range of sufficient size is
available in the global LPI bitmap.

This may result in the situation where the nr_ites < nr_lpis, and
since nr_ites is what we program into the hardware when we map the
device, the additional LPIs will be non-functional.

For bog standard hardware, this does not really matter. However,
in cases where ITS device IDs are shared between different PCIe
devices, we may end up allocating these additional LPIs without
taking into account that they don't actually work.

So let's make nr_ites at least 32. This ensures that all allocated
LPIs are 'live', and that its_alloc_device_irq() will fail when
attempts are made to allocate MSIs beyond what was allocated in
the first place.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
[maz: updated comment]
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
[ardb: trivial tweak of unrelated context]
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-03-22 09:23:31 +01:00
..
alphascale_asm9260-icoll.h irqchip/mxs: Add Alphascale ASM9260 support 2015-10-14 09:37:47 +02:00
exynos-combiner.c irqdomain: Use irq_domain_get_of_node() instead of direct field access 2015-10-13 19:01:23 +02:00
irq-armada-370-xp.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2015-11-04 09:41:05 -08:00
irq-atmel-aic-common.c irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup() 2017-08-24 17:02:36 -07:00
irq-atmel-aic-common.h irqchip: atmel-aic: Add irq fixup for RTT block 2014-11-09 04:36:38 +00:00
irq-atmel-aic.c irqchip/atmel-aic: Fix potential deadlock in ->xlate() 2016-09-24 10:07:43 +02:00
irq-atmel-aic5.c irqchip/atmel-aic: Fix potential deadlock in ->xlate() 2016-09-24 10:07:43 +02:00
irq-bcm2835.c irqchip: Kill off set_irq_flags usage 2015-09-16 16:53:38 +02:00
irq-bcm2836.c irqchip: Add bcm2836 interrupt controller for Raspberry Pi 2 2015-08-20 22:38:42 +02:00
irq-bcm7038-l1.c irqchip/bcm7038-l1: Implement irq_cpu_offline() callback 2017-01-12 11:22:49 +01:00
irq-bcm7120-l2.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-brcmstb-l2.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-clps711x.c irqchip: Kill off set_irq_flags usage 2015-09-16 16:53:38 +02:00
irq-crossbar.c irqchip/crossbar: Fix incorrect type of register size 2017-12-16 10:33:52 +01:00
irq-digicolor.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-dw-apb-ictl.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-gic-common.c irqchip/gic: Make sure all interrupts are deactivated at boot 2015-11-17 14:25:58 +01:00
irq-gic-common.h irqchip/gicv3-its: Add HW revision detection and configuration 2015-09-29 10:10:53 +02:00
irq-gic-v2m.c irqchip/gic-v2m: Add support for multiple MSI frames 2015-10-15 10:18:48 +02:00
irq-gic-v3-its-pci-msi.c irqchip/gic-v3-its: Add handling of PCI requester id. 2015-10-16 13:07:13 +01:00
irq-gic-v3-its-platform-msi.c irqchip/gic-v3-its: Parse new version of msi-parent property 2015-10-16 13:07:15 +01:00
irq-gic-v3-its.c irqchip/gic-v3-its: Ensure nr_ites >= nr_lpis 2018-03-22 09:23:31 +01:00
irq-gic-v3.c irqchip/gic-v3: Use wmb() instead of smb_wmb() in gic_raise_softirq() 2018-02-28 10:17:22 +01:00
irq-gic.c irqchip/gic: Ensure ordering between read of INTACK and shared data 2016-06-01 12:15:49 -07:00
irq-hip04.c irqdomain: Use irq_domain_get_of_node() instead of direct field access 2015-10-13 19:01:23 +02:00
irq-i8259.c irqchip/i8259: Convert to use irq_set_chained_handler_and_data 2015-10-01 16:32:54 +02:00
irq-imgpdc.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-imx-gpcv2.c irqchip/irq-imx-gpcv2: Fix spinlock initialization 2017-04-21 09:30:06 +02:00
irq-ingenic.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-keystone.c irqchip/keystone: Fix "scheduling while atomic" on rt 2017-08-06 19:19:44 -07:00
irq-metag-ext.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-metag.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-mips-cpu.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-mips-gic.c irqchip: mips-gic: SYNC after enabling GIC region 2017-09-07 08:34:08 +02:00
irq-mmp.c irqchip: Kill off set_irq_flags usage 2015-09-16 16:53:38 +02:00
irq-moxart.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-mtk-sysirq.c irqchip: Convert all alloc/xlate users from of_node to fwnode 2015-10-13 19:01:23 +02:00
irq-mxs.c irqchip/mxs: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND 2017-08-06 19:19:45 -07:00
irq-nvic.c irqchip: Convert all alloc/xlate users from of_node to fwnode 2015-10-13 19:01:23 +02:00
irq-omap-intc.c irqchip/omap-intc: Add support for spurious irq handling 2016-03-03 15:07:14 -08:00
irq-or1k-pic.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-orion.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-renesas-h8s.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-renesas-h8300h.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-renesas-intc-irqpin.c irqchip/renesas-intc-irqpin: r8a7778 IRLM setup support 2015-09-30 21:02:22 +02:00
irq-renesas-irqc.c irqchip/renesas-irqc: Move over to nested generic chip 2015-09-29 20:41:00 +02:00
irq-s3c24xx.c irqdomain: Use irq_domain_get_of_node() instead of direct field access 2015-10-13 19:01:23 +02:00
irq-sa11x0.c ARM: kill off set_irq_flags usage 2015-07-28 13:58:13 +02:00
irq-sirfsoc.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-st.c irqchip: st: Supply new driver for STi based devices 2015-03-03 19:48:53 +00:00
irq-sun4i.c irqchip: Kill off set_irq_flags usage 2015-09-16 16:53:38 +02:00
irq-sunxi-nmi.c irqchip/sunxi-nmi: Fix error check of of_io_request_and_map() 2016-05-04 14:48:50 -07:00
irq-tb10x.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-tegra.c Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-11-03 14:40:01 -08:00
irq-versatile-fpga.c irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB 2015-12-01 22:50:16 +01:00
irq-vf610-mscm-ir.c irqchip: Convert all alloc/xlate users from of_node to fwnode 2015-10-13 19:01:23 +02:00
irq-vic.c irqchip: Kill off set_irq_flags usage 2015-09-16 16:53:38 +02:00
irq-vt8500.c irqchip: Kill off set_irq_flags usage 2015-09-16 16:53:38 +02:00
irq-xtensa-mx.c xtensa: don't use linux IRQ #0 2017-06-17 06:39:38 +02:00
irq-xtensa-pic.c xtensa: don't use linux IRQ #0 2017-06-17 06:39:38 +02:00
irq-zevio.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irqchip.c irqchip / GIC: Convert the GIC driver to ACPI probing 2015-10-01 02:18:38 +02:00
Kconfig irqchip/mxs: Add Alphascale ASM9260 support 2015-10-14 09:37:47 +02:00
Makefile irqchip/mxs: Add Alphascale ASM9260 support 2015-10-14 09:37:47 +02:00
spear-shirq.c irqchip: Kill off set_irq_flags usage 2015-09-16 16:53:38 +02:00