forked from Openwrt-EcoNet/openwrt
Backport GIC ITS support for RK356x SoC, which fixes long-standing MSI/MSI-X bug. (Previously MSI-X could only work on one PCIe node) e.g. [ 7.250882] r8125 0002:01:00.0: no MSI/MSI-X. Back to INTx. Tested on Radxa E25 with kmod-r8125-rss driver. Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> Link: https://github.com/openwrt/openwrt/pull/18800 Signed-off-by: Robert Marko <robimarko@gmail.com>
34 lines
1.4 KiB
Diff
34 lines
1.4 KiB
Diff
From bc88d44bd7e45b992cf8c2c2ffbc7bb3e24db4a7 Mon Sep 17 00:00:00 2001
|
|
From: Steven Price <steven.price@arm.com>
|
|
Date: Mon, 21 Oct 2024 11:41:05 +0100
|
|
Subject: [PATCH] irqchip/gic-v3-its: Fix over allocation in
|
|
itt_alloc_pool()
|
|
|
|
itt_alloc_pool() calls its_alloc_pages_node() to allocate an individual
|
|
page to add to the pool (for allocations <PAGE_SIZE). However the final
|
|
argument of its_alloc_pages_node() is the page order not the number of
|
|
pages. Currently it allocates two pages and leaks the second page.
|
|
Fix it by passing 0 instead (1 << 0 = 1 page).
|
|
|
|
Fixes: b08e2f42e86b ("irqchip/gic-v3-its: Share ITS tables with a non-trusted hypervisor")
|
|
Reported-by: Shanker Donthineni <sdonthineni@nvidia.com>
|
|
Signed-off-by: Steven Price <steven.price@arm.com>
|
|
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|
Link: https://lore.kernel.org/all/1f6e19c4-1fb9-43ab-a8a2-a465c9cff84b@arm.com
|
|
Closes: https://lore.kernel.org/r/ed65312a-245c-4fa5-91ad-5d620cab7c6b%40nvidia.com
|
|
---
|
|
drivers/irqchip/irq-gic-v3-its.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
--- a/drivers/irqchip/irq-gic-v3-its.c
|
|
+++ b/drivers/irqchip/irq-gic-v3-its.c
|
|
@@ -260,7 +260,7 @@ static void *itt_alloc_pool(int node, in
|
|
if (addr)
|
|
break;
|
|
|
|
- page = its_alloc_pages_node(node, GFP_KERNEL | __GFP_ZERO, 1);
|
|
+ page = its_alloc_pages_node(node, GFP_KERNEL | __GFP_ZERO, 0);
|
|
if (!page)
|
|
break;
|
|
|