Patch "igb: Disable threaded IRQ for igb_msix_other" has been added to the 6.11-stable tree
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 22 lines · Sasha Levin
commit
052382490ee4f0f6d783ddce02fe6f2d15e134b5Author: Wander Lairson Costa <[email protected]> Date: Mon Oct 21 16:26:24 2024 -0700igb: Disable threaded IRQ for
igb_msix_other[ Upstream commit
338c4d3902feb5be49bfda530a72c7ab860e2c9f]During testing of SR-IOV, Red Hat QE encountered an issue where the ip link up command intermittently fails for the igbvf interfaces when using the
PREEMPT_RTvariant. Investigation revealed thate1000_write_posted_mbxreturns an error due to the lack of an ACK frome1000_poll_for_ack.The underlying issue arises from the fact that IRQs are threaded by default under
PREEMPT_RT. While the exact hardware details are not available, it appears that the IRQ handled byigb_msix_othermust be processed beforee1000_poll_for_acktimes out. However,e1000_write_posted_mbxis called with preemption disabled, leading to a scenario where the IRQ is serviced only after the failure ofe1000_write_posted_mbx.
Quoted 3 lines
To resolve this, we set
IRQF_NO_THREADfor the affected interrupt, ensuring that the kernel handles it immediately, thereby preventing the aforementioned error.
Wander, please send a revert of this patch. The ISR (E1000_ICR_TS set) may invoke igb_msg_task(), ptp_clock_event(), igb_perout(), igb_extts() each of which acquire sleeping locks on PREEMPT_RT. Not sure if this improved the situation or not.
Sebastian