From nobody Fri Sep 25 19:13:13 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B4BCE3B895D; Wed, 9 Sep 2026 06:45:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788936313; cv=none; b=a0PY2C73ztWrsUegwLBlEVxvO2U8Oj41ke/BQTquoIYua6k23XMpxOP2nkEdV/S2osy0Ud3Wpr+cX0VAZ0U8qbcOJEx5slD+jDWbeiFfBTVEhn/5mgdIXF8hIokEKw5v6dG36yHIW14RhAHYNuBa27Un+1dDjPfjCo6wkmSlc00= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788936313; c=relaxed/simple; bh=/DLIok3k4tdCoOMkF2K/QrJWNryia6Ild8zWY6ve8M4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JfF5R01r2ahQzDSU6dJC4lkvaypxCaYVciC0bxGYNaCX4YXdYYFiuNOKZUB1Si+If325IeOyXILIyJkZQWR32QJKCbk+KSVLbM+sBf9lk7vXTDklJR5Dgy13pOy+Wpr0I5vEGFPKYhT2kK0/YmAcPYM8cxKa0F4XjHRM9UyckNI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=p/81C5N0; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="p/81C5N0" Received: from CPC-namja-026ON.localdomain (unknown [4.213.232.16]) by linux.microsoft.com (Postfix) with ESMTPSA id B3D7220B712B; Tue, 8 Sep 2026 23:44:22 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com B3D7220B712B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1788936271; bh=vKHuFOw8t4T9qpNBzxIJe+5gzUOU1w5bceovfgKqwGU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=p/81C5N0Nhb4PASLj2y38DpLCycOVHsXzvYXVoy+C9heCL77FlV2FBK67UJyIpUhA Z/H+GUgqQJ6QzQSGdt5CW8hlUULng9CBp/ttGnI8INXMgc0EAhjGIjcnwXhIApzALh gwU1rACPwIWjeDatrhC7Txe7TzHBNjAzBVMTiQGM= From: Naman Jain To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H . Peter Anvin" , Wei Liu , "K . Y . Srinivasan" , Haiyang Zhang , Dexuan Cui Cc: Michael Kelley , Long Li , Nam Cao , Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Will Deacon , Robin Murphy , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas , Kees Cook , "Rafael J . Wysocki" , Radu Rendec , Sean Christopherson , Kai Huang , Dmitry Ilvokhin , Shradha Gupta , Christophe JAILLET , Thierry Reding , Jiri Wiesner , Daniel J Blueman , linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-pci@vger.kernel.org Subject: [PATCH v4 1/4] x86/hyperv: Set irq_retrigger for root partition PCI/MSI irqchip Date: Wed, 9 Sep 2026 06:44:45 +0000 Message-ID: <20260909064448.1004-2-namjain@linux.microsoft.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260909064448.1004-1-namjain@linux.microsoft.com> References: <20260909064448.1004-1-namjain@linux.microsoft.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Hyper-V root partition vPCI MSI irqchip lost its irq_retrigger() callback when it was converted to msi_create_parent_irq_domain(). The callback was present on the original irqchip and was dropped during that conversion. On CPU hot-unplug fixup_irqs() migrates the interrupts which are affine to the outgoing CPU to a new target. If an interrupt still has its pending bit set in the outgoing CPU's IRR at that point, fixup_irqs() resends it on the new target through the irqchip's irq_retrigger() callback. As the root partition PCI/MSI chip no longer provides that callback, the pending interrupt is silently dropped, which can result in lost interrupts, stalls and "No irq handler for vector" messages during CPU hotplug. Restore irq_chip_retrigger_hierarchy() as the irq_retrigger() callback for the root partition PCI/MSI irqchip, so that a pending interrupt is resent on its new target CPU via the parent x86 vector domain. Fixes: 4691db0704ac ("x86/hyperv: Switch to msi_create_parent_irq_domain()") Cc: stable@vger.kernel.org Reviewed-by: Michael Kelley Signed-off-by: Naman Jain Reviewed-by: Nam Cao --- arch/x86/hyperv/irqdomain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/x86/hyperv/irqdomain.c b/arch/x86/hyperv/irqdomain.c index b3ad50a874dca..6d790636c8b95 100644 --- a/arch/x86/hyperv/irqdomain.c +++ b/arch/x86/hyperv/irqdomain.c @@ -316,6 +316,7 @@ static bool hv_init_dev_msi_info(struct device *dev, st= ruct irq_domain *domain, return false; =20 chip->flags |=3D IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MOVE_DEFERRED; + chip->irq_retrigger =3D irq_chip_retrigger_hierarchy; =20 info->ops->msi_prepare =3D pci_msi_prepare; =20 --=20 2.43.0 From nobody Fri Sep 25 19:13:13 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DC7D93B4E9E; Wed, 9 Sep 2026 06:45:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788936322; cv=none; b=UJmdTn26T04yR+VFahayX71tEqqxcY7bu9cQXgkH4F22Djqew06/tk0jJcgwywvhbMaAv716vdMBH7pFc+Abnw17eb/GVclmW0xtu5IjoHp3Pe9JVh4lkfOvhfDe2drfjEEgOrUx2M0f+LXg5RCgcMM65Loc1r7IuWRklqfsGN0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788936322; c=relaxed/simple; bh=ACtM0ln6JZ2gAJn8zdqUiPxoN1dOvYPm/vxZH7yp738=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=a0mnBhxt6mVp6B6Mk/EvW9ZifyWzJrLzenA0jO3kddq0cIv/26kTrGis8bNNY0ZwwclY856xqkmY81cjqU0JjYFgYYBuJCFyiIALMsSVb9pjTFhHb9c4WrsA5Uy7cEKeoEsPlaEJRHqmR/eVVQ9zUdRyVLRm43Lgut5GYTyPr1w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=kJ1Uv2jx; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="kJ1Uv2jx" Received: from CPC-namja-026ON.localdomain (unknown [4.213.232.16]) by linux.microsoft.com (Postfix) with ESMTPSA id D7E0220B7135; Tue, 8 Sep 2026 23:44:31 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com D7E0220B7135 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1788936280; bh=25n1hifoI7H95J5sd4UpdUDOwzl+ABM/W2jzOhr2TeE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kJ1Uv2jx0Ith/mxvfI/zV3pQuRvfhXU0fyl2Y/abI2YwMkRICf8FBQtfUncDmQG08 9t3eMPBzl+HMTpL0nrY8m8+fwdzj3ZZIUY5okXWaJriOQvG8NunQtlWwSB2RqfYwIl 458yBUTDuhLb/HPEfcL0jyYECeFfO8gKsZYvNTuw= From: Naman Jain To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H . Peter Anvin" , Wei Liu , "K . Y . Srinivasan" , Haiyang Zhang , Dexuan Cui Cc: Michael Kelley , Long Li , Nam Cao , Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Will Deacon , Robin Murphy , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas , Kees Cook , "Rafael J . Wysocki" , Radu Rendec , Sean Christopherson , Kai Huang , Dmitry Ilvokhin , Shradha Gupta , Christophe JAILLET , Thierry Reding , Jiri Wiesner , Daniel J Blueman , linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-pci@vger.kernel.org Subject: [PATCH v4 2/4] x86/irq: Fall back to irq_chip_retrigger_hierarchy() in fixup_irqs() Date: Wed, 9 Sep 2026 06:44:46 +0000 Message-ID: <20260909064448.1004-3-namjain@linux.microsoft.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260909064448.1004-1-namjain@linux.microsoft.com> References: <20260909064448.1004-1-namjain@linux.microsoft.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" fixup_irqs() re-injects a pending interrupt on its new target CPU by looking at the outermost domain chip and invoking its irq_retrigger() callback directly. When the outermost chip does not implement irq_retrigger(), the pending interrupt is silently dropped, which can lead to lost interrupts on CPU hot-unplug. Keep calling the outermost chip's irq_retrigger() when it is present, but fall back to irq_chip_retrigger_hierarchy() otherwise, which walks up the interrupt hierarchy until it finds a chip that implements irq_retrigger(). While at it, use a scoped guard for desc->lock. VECTOR_RETRIGGERED is now set only when the retrigger succeeds instead of unconditionally, which is harmless today since apic_retrigger_irq() always returns 1. Suggested-by: Thomas Gleixner Reviewed-by: Shradha Gupta Reviewed-by: Thomas Gleixner Reviewed-by: Michael Kelley Signed-off-by: Naman Jain --- arch/x86/kernel/irq.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index 30122f0b3af96..e0163f7ac7368 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c @@ -470,6 +470,7 @@ void fixup_irqs(void) struct irq_desc *desc; struct irq_data *data; struct irq_chip *chip; + int ret; =20 irq_migrate_all_off_this_cpu(); =20 @@ -490,21 +491,23 @@ void fixup_irqs(void) * nothing else will touch it. */ for (vector =3D FIRST_EXTERNAL_VECTOR; vector < NR_VECTORS; vector++) { - if (IS_ERR_OR_NULL(__this_cpu_read(vector_irq[vector]))) + desc =3D __this_cpu_read(vector_irq[vector]); + + if (IS_ERR_OR_NULL(desc)) continue; =20 if (is_vector_pending(vector)) { - desc =3D __this_cpu_read(vector_irq[vector]); - - raw_spin_lock(&desc->lock); + guard(raw_spinlock)(&desc->lock); data =3D irq_desc_get_irq_data(desc); chip =3D irq_data_get_irq_chip(data); - if (chip->irq_retrigger) { - chip->irq_retrigger(data); + if (chip->irq_retrigger) + ret =3D chip->irq_retrigger(data); + else + ret =3D irq_chip_retrigger_hierarchy(data); + if (ret) __this_cpu_write(vector_irq[vector], VECTOR_RETRIGGERED); - } - raw_spin_unlock(&desc->lock); } + if (__this_cpu_read(vector_irq[vector]) !=3D VECTOR_RETRIGGERED) __this_cpu_write(vector_irq[vector], VECTOR_UNUSED); } --=20 2.43.0 From nobody Fri Sep 25 19:13:13 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D32B63B83E1; Wed, 9 Sep 2026 06:45:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788936331; cv=none; b=daa+HtPlAw+IrJIz8qIXGjhKpEV3IfcUeU8dJuFneltlDxVC7ieG79xV+OIRtYezpmhq6KgVb3XjAYbITT+YmJWR8o2xzknqpS5GgQr9kV+SUDtfy4MkSRsuHiSCKITD1F5apR/4Wu+FJvAU05EfU7Q1ROWOC4fTZvRfsV9esEc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788936331; c=relaxed/simple; bh=HSoqkeQpnPn0IcBwaWar28Zz7ZtQC3OqmJMY9ypZ6MQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GZo4tkLZHvWmHYJnC8lGLRZ4D5VQVm4Tap8yFUN1H+n2AsEd0AdSnJcjJvoqFEAdOoN8v/FdjPSELbFK110OZqs2PW+rkznYWLWw/7i0PLTvoQWKlEbpKQicw9ODiqem7fi4TQQA8LXWZ59DgRh9Av3WIJcbAfx0yES2y7H6Lqg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=mvYEGR/K; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="mvYEGR/K" Received: from CPC-namja-026ON.localdomain (unknown [4.213.232.16]) by linux.microsoft.com (Postfix) with ESMTPSA id EF3C220B7136; Tue, 8 Sep 2026 23:44:40 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com EF3C220B7136 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1788936289; bh=koAnNaNQyQ/gB5aR9yFBdh8NzxgGLfEa9F99gJSBoUo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mvYEGR/KujxX6Lsdz2WkBnsDGVh6iYqoCJdJMLkOt8uVD8W7w/l19D0L7jAt54MQM fjFqP74Hz0Z3M3R8j5KSchvpHs5lVnV/O83g6limIrMUazJGWDix5qk4i/6AcCFNL+ S5fQ5kUBkhwcXM6Jzf9UpJfTyjSPbDCrsFSD1t/I= From: Naman Jain To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H . Peter Anvin" , Wei Liu , "K . Y . Srinivasan" , Haiyang Zhang , Dexuan Cui Cc: Michael Kelley , Long Li , Nam Cao , Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Will Deacon , Robin Murphy , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas , Kees Cook , "Rafael J . Wysocki" , Radu Rendec , Sean Christopherson , Kai Huang , Dmitry Ilvokhin , Shradha Gupta , Christophe JAILLET , Thierry Reding , Jiri Wiesner , Daniel J Blueman , linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-pci@vger.kernel.org Subject: [PATCH v4 3/4] x86/irq: Fall back to irq_chip_retrigger_hierarchy() in msi_set_affinity() Date: Wed, 9 Sep 2026 06:44:47 +0000 Message-ID: <20260909064448.1004-4-namjain@linux.microsoft.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260909064448.1004-1-namjain@linux.microsoft.com> References: <20260909064448.1004-1-namjain@linux.microsoft.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" msi_set_affinity() re-injects a pending interrupt on its new target by looking at the outermost domain chip and invoking its irq_retrigger() callback directly, without checking whether that callback is present. Keep calling the outermost chip's irq_retrigger() when it is present, but fall back to irq_chip_retrigger_hierarchy() otherwise, which walks up the interrupt hierarchy until it finds a chip that implements irq_retrigger(). Suggested-by: Thomas Gleixner Reviewed-by: Shradha Gupta Reviewed-by: Thomas Gleixner Signed-off-by: Naman Jain --- arch/x86/kernel/apic/msi.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/apic/msi.c b/arch/x86/kernel/apic/msi.c index 66bc5d3e79db3..66647d51c0473 100644 --- a/arch/x86/kernel/apic/msi.c +++ b/arch/x86/kernel/apic/msi.c @@ -136,8 +136,14 @@ msi_set_affinity(struct irq_data *irqd, const struct c= pumask *mask, bool force) * underlying vector store. It's just checking the local APIC's * IRR. */ - if (lapic_vector_set_in_irr(cfg->vector)) - irq_data_get_irq_chip(irqd)->irq_retrigger(irqd); + if (lapic_vector_set_in_irr(cfg->vector)) { + struct irq_chip *chip =3D irq_data_get_irq_chip(irqd); + + if (chip->irq_retrigger) + chip->irq_retrigger(irqd); + else + irq_chip_retrigger_hierarchy(irqd); + } =20 return ret; } --=20 2.43.0 From nobody Fri Sep 25 19:13:13 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 36A423C1F22; Wed, 9 Sep 2026 06:45:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788936340; cv=none; b=Rtq3M3UJWQnX4bhkjtLIU+8Iu+RmSohhH7n1SnJTP7iMHE6rZx9owpA3QW5o39p1jcKmD/GPUNTChL2cbD/66n+/ax8tQwzduz16yXAerhm+dAM58K/IYStSO9BmHzzQ+NPYJucRY5alQmAE04H/b7sEx1nNRBQ3XIvaaisWYkM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788936340; c=relaxed/simple; bh=PGJavdQgYUimXVIAhNE4yi04+m9XkT5iuItxrj6lD0U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RvFvSp5SToaqpjKZnruNiB6JqqfTuLLOhwVfwLPcvNsUqeutp0O5Amm0GheaMJjVUvjWC9NWZFTmmz15Yj2idNdpYPSF2Pi7InZ7MaJ6TCzxrApjOXlHjid/eXaI81tlJO98wKjv82pKFl0dZiXrcY+v98MxSiTAqkcceHc5Dt0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=JG5j1pEp; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="JG5j1pEp" Received: from CPC-namja-026ON.localdomain (unknown [4.213.232.16]) by linux.microsoft.com (Postfix) with ESMTPSA id 134DA20B7128; Tue, 8 Sep 2026 23:44:49 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 134DA20B7128 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1788936298; bh=VosnKlv+oHSDjpR45cHswOoJ5a2EWdGkJ6BlBC9uMR0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JG5j1pEpDgd2zZaTuLpsuOzXLbAcU/T8Rthscawe6ZmjCsOOGIy1PqKDPSJQMCKuR 7/+PDmbpcInnMLLH026FbYSDeskR2WYp9/VqyV9M6doQ+LaEIZ5Wo3yixvi7fnFMGy DUtWujL71ucmhwprCrIdam8KRbDcVyjHOFpLyvkU= From: Naman Jain To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H . Peter Anvin" , Wei Liu , "K . Y . Srinivasan" , Haiyang Zhang , Dexuan Cui Cc: Michael Kelley , Long Li , Nam Cao , Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Will Deacon , Robin Murphy , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas , Kees Cook , "Rafael J . Wysocki" , Radu Rendec , Sean Christopherson , Kai Huang , Dmitry Ilvokhin , Shradha Gupta , Christophe JAILLET , Thierry Reding , Jiri Wiesner , Daniel J Blueman , linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-pci@vger.kernel.org Subject: [PATCH v4 4/4] x86/irq, iommu/amd, x86/hyperv, PCI: Drop redundant irq_retrigger inits Date: Wed, 9 Sep 2026 06:44:48 +0000 Message-ID: <20260909064448.1004-5-namjain@linux.microsoft.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260909064448.1004-1-namjain@linux.microsoft.com> References: <20260909064448.1004-1-namjain@linux.microsoft.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" With fixup_irqs(), msi_set_affinity() and the generic resend path (try_retrigger()) now all falling back to irq_chip_retrigger_hierarchy(), installing it as the irq_retrigger() callback on the outermost domain chips is no longer required. The hierarchy walk reaches the x86 vector domain's apic_retrigger_irq() for all of these stacked domain chips. Remove the now redundant irq_retrigger() initializations from the outermost domain interrupt chips, including the Hyper-V root partition PCI/MSI chip. No functional change intended. Suggested-by: Thomas Gleixner Reviewed-by: Shradha Gupta Reviewed-by: Thomas Gleixner Signed-off-by: Naman Jain --- arch/x86/hyperv/irqdomain.c | 1 - arch/x86/kernel/apic/io_apic.c | 2 -- arch/x86/kernel/apic/msi.c | 2 -- arch/x86/kernel/hpet.c | 1 - drivers/iommu/amd/init.c | 1 - drivers/pci/controller/pci-hyperv.c | 1 - 6 files changed, 8 deletions(-) diff --git a/arch/x86/hyperv/irqdomain.c b/arch/x86/hyperv/irqdomain.c index 6d790636c8b95..b3ad50a874dca 100644 --- a/arch/x86/hyperv/irqdomain.c +++ b/arch/x86/hyperv/irqdomain.c @@ -316,7 +316,6 @@ static bool hv_init_dev_msi_info(struct device *dev, st= ruct irq_domain *domain, return false; =20 chip->flags |=3D IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MOVE_DEFERRED; - chip->irq_retrigger =3D irq_chip_retrigger_hierarchy; =20 info->ops->msi_prepare =3D pci_msi_prepare; =20 diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 7d7175d012288..18f49a251f23b 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -1857,7 +1857,6 @@ static struct irq_chip ioapic_chip __read_mostly =3D { .irq_ack =3D irq_chip_ack_parent, .irq_eoi =3D ioapic_ack_level, .irq_set_affinity =3D ioapic_set_affinity, - .irq_retrigger =3D irq_chip_retrigger_hierarchy, .irq_get_irqchip_state =3D ioapic_irq_get_chip_state, .flags =3D IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MOVE_DEFERRED | IRQCHIP_AFFINITY_PRE_STARTUP, @@ -1871,7 +1870,6 @@ static struct irq_chip ioapic_ir_chip __read_mostly = =3D { .irq_ack =3D irq_chip_ack_parent, .irq_eoi =3D ioapic_ir_ack_level, .irq_set_affinity =3D ioapic_set_affinity, - .irq_retrigger =3D irq_chip_retrigger_hierarchy, .irq_get_irqchip_state =3D ioapic_irq_get_chip_state, .flags =3D IRQCHIP_SKIP_SET_WAKE | IRQCHIP_AFFINITY_PRE_STARTUP, diff --git a/arch/x86/kernel/apic/msi.c b/arch/x86/kernel/apic/msi.c index 66647d51c0473..728d3bfefa85c 100644 --- a/arch/x86/kernel/apic/msi.c +++ b/arch/x86/kernel/apic/msi.c @@ -252,7 +252,6 @@ static bool x86_init_dev_msi_info(struct device *dev, s= truct irq_domain *domain, info->ops->msi_prepare =3D x86_msi_prepare; =20 info->chip->irq_ack =3D irq_chip_ack_parent; - info->chip->irq_retrigger =3D irq_chip_retrigger_hierarchy; info->chip->flags |=3D IRQCHIP_SKIP_SET_WAKE | IRQCHIP_AFFINITY_PRE_STARTUP; =20 @@ -319,7 +318,6 @@ static struct irq_chip dmar_msi_controller =3D { .irq_mask =3D dmar_msi_mask, .irq_ack =3D irq_chip_ack_parent, .irq_set_affinity =3D msi_domain_set_affinity, - .irq_retrigger =3D irq_chip_retrigger_hierarchy, .irq_compose_msi_msg =3D dmar_msi_compose_msg, .irq_write_msi_msg =3D dmar_msi_write_msg, .flags =3D IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MOVE_DEFERRED | diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index 8dc7b710e1250..2bb7a6f466af3 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c @@ -509,7 +509,6 @@ static struct irq_chip hpet_msi_controller __ro_after_i= nit =3D { .irq_mask =3D hpet_msi_mask, .irq_ack =3D irq_chip_ack_parent, .irq_set_affinity =3D msi_domain_set_affinity, - .irq_retrigger =3D irq_chip_retrigger_hierarchy, .irq_write_msi_msg =3D hpet_msi_write_msg, .flags =3D IRQCHIP_SKIP_SET_WAKE | IRQCHIP_AFFINITY_PRE_STARTUP, }; diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index 40726dfef2733..a19e1faf98750 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -2471,7 +2471,6 @@ static struct irq_chip intcapxt_controller =3D { .irq_unmask =3D intcapxt_unmask_irq, .irq_mask =3D intcapxt_mask_irq, .irq_ack =3D irq_chip_ack_parent, - .irq_retrigger =3D irq_chip_retrigger_hierarchy, .irq_set_affinity =3D intcapxt_set_affinity, .irq_set_wake =3D intcapxt_set_wake, .flags =3D IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_MOVE_DEFERRED, diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/p= ci-hyperv.c index 89816a2bd7cd3..cfc8fa403dad6 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -2119,7 +2119,6 @@ static bool hv_pcie_init_dev_msi_info(struct device *= dev, struct irq_domain *dom info->ops->msi_prepare =3D hv_msi_prepare; =20 chip->irq_set_affinity =3D irq_chip_set_affinity_parent; - chip->irq_retrigger =3D irq_chip_retrigger_hierarchy; =20 if (IS_ENABLED(CONFIG_X86)) chip->flags |=3D IRQCHIP_MOVE_DEFERRED; --=20 2.43.0