From c79c85907fac31149119722fb32a79dba34e1b8f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= Date: Wed, 27 Nov 2024 12:42:02 +0100 Subject: [PATCH] x86/irq: fix calculation of max PV dom0 pIRQs MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The current calculation of PV dom0 pIRQs uses: n = min(fls(num_present_cpus()), dom0_max_vcpus()); The usage of fls() is wrong, as num_present_cpus() already returns the number of present CPUs, not the bitmap mask of CPUs. Fix by removing the usage of fls(). Fixes: 7e73a6e7f12a ('have architectures specify the number of PIRQs a hardware domain gets') Signed-off-by: Roger Pau Monné Acked-by: Andrew Cooper master commit: 5c56361c618e5d05855fc73118c4655f998b8272 master date: 2024-11-25 11:33:06 +0100 --- xen/arch/x86/io_apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 836af62061..0450b5f784 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -2731,7 +2731,7 @@ void __init ioapic_init(void) unsigned int __hwdom_init arch_hwdom_irqs(const struct domain *d) { - unsigned int n = fls(num_present_cpus()); + unsigned int n = num_present_cpus(); /* Bounding by the domain pirq EOI bitmap capacity. */ const unsigned int max_irqs = min_t(unsigned int, nr_irqs, PAGE_SIZE * BITS_PER_BYTE); -- 2.39.5