PCI/MSI: Prevent MSI hardware interrupt number truncation
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-nvidia-6.5 (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
While calculating the hardware interrupt number for a MSI interrupt, the
higher bits (i.e. from bit-5 onwards a.k.a domain_nr >= 32) of the PCI
domain number gets truncated because of the shifted value casting to return
type of pci_domain_nr() which is 'int'. This for example is resulting in
same hardware interrupt number for devices 0019:00:00.0 and 0039:00:00.0.
To address this cast the PCI domain number to 'irq_hw_number_t' before left
shifting it to calculate the hardware interrupt number.
Please note that this fixes the issue only on 64-bit systems and doesn't
change the behavior for 32-bit systems i.e. the 32-bit systems continue to
have the issue. Since the issue surfaces only if there are too many PCIe
controllers in the system which usually is the case in modern server
systems and they don't tend to run 32-bit kernels.
This bug is awaiting verification that the linux-nvidia- 6.5/6.5. 0-1021. 22 kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification- needed- jammy-linux- nvidia- 6.5' to 'verification- done-jammy- linux-nvidia- 6.5'. If the problem still exists, change the tag 'verification- needed- jammy-linux- nvidia- 6.5' to 'verification- failed- jammy-linux- nvidia- 6.5'.
If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.
See https:/ /wiki.ubuntu. com/Testing/ EnableProposed for documentation how to enable and use -proposed. Thank you!