summaryrefslogtreecommitdiffstats
path: root/drivers/irqchip/irq-gic-v3-its.c
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2018-11-02 09:00:55 +0200
committerJani Nikula <jani.nikula@intel.com>2018-11-02 09:01:28 +0200
commit7a085c3aad94cce7e11031c6800e41668418ae4c (patch)
treeb3474f8bd622f87ad39227057f9de60959c8bd95 /drivers/irqchip/irq-gic-v3-its.c
parent18cde299df33ff73908f7e5dcebf321fb79ed36c (diff)
parentf9885ef875e9160454392f85159163674159c51f (diff)
downloadlinux-stable-7a085c3aad94cce7e11031c6800e41668418ae4c.tar.gz
linux-stable-7a085c3aad94cce7e11031c6800e41668418ae4c.tar.bz2
linux-stable-7a085c3aad94cce7e11031c6800e41668418ae4c.zip
Merge drm/drm-next into drm-intel-next-queued
Although there's nothing crucial missing, it's been a long time since the last backmerge. Catch up with drm-next. Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'drivers/irqchip/irq-gic-v3-its.c')
-rw-r--r--drivers/irqchip/irq-gic-v3-its.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index 316a57530f6d..c2df341ff6fa 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -1439,6 +1439,7 @@ static struct irq_chip its_irq_chip = {
* The consequence of the above is that allocation is cost is low, but
* freeing is expensive. We assumes that freeing rarely occurs.
*/
+#define ITS_MAX_LPI_NRBITS 16 /* 64K LPIs */
static DEFINE_MUTEX(lpi_range_lock);
static LIST_HEAD(lpi_range_list);
@@ -1625,7 +1626,8 @@ static int __init its_alloc_lpi_tables(void)
{
phys_addr_t paddr;
- lpi_id_bits = GICD_TYPER_ID_BITS(gic_rdists->gicd_typer);
+ lpi_id_bits = min_t(u32, GICD_TYPER_ID_BITS(gic_rdists->gicd_typer),
+ ITS_MAX_LPI_NRBITS);
gic_rdists->prop_page = its_allocate_prop_table(GFP_NOWAIT);
if (!gic_rdists->prop_page) {
pr_err("Failed to allocate PROPBASE\n");