genirq/msi: Expose MSI message data in debugfs
authorHans Zhang <18255117159@163.com>
Mon, 3 Mar 2025 12:10:08 +0000 (20:10 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 3 Mar 2025 21:16:03 +0000 (22:16 +0100)
commit01499ae673dc66cf5e98589648848b520f6fdfe9
treeb00228711688d361a76279e98bd43cf05f6fd9a7
parentd082ecbc71e9e0bf49883ee4afd435a77a5101b6
genirq/msi: Expose MSI message data in debugfs

When debugging MSI-related hardware issues (e.g. interrupt delivery
failures), developers currently need to either:

  1. Recompile the kernel with dynamic debug for tracing msi_desc.
  2. Manually read device registers through low-level tools.

Both approaches become challenging in production environments where
dynamic debugging is often disabled.

The interrupt core provides a debugfs interface for inspection of interrupt
related data, which contains the per interrupt information in the view of
the hierarchical interrupt domains. Though this interface does not expose
the MSI address/data pair, which is important information to:

  - Verify whether the MSI configuration matches the hardware expectations
  - Diagnose interrupt routing errors (e.g., mismatched destination ID)
  - Validate remapping behavior in virtualized environments

Implement the debug_show() callback for the generic MSI interrupt domains,
and use it to expose the MSI address/data pair in the per interrupt
diagnostics.

Sample output:
  address_hi: 0x00000000
  address_lo: 0xfe670040
  msg_data:   0x00000001

[ tglx: Massaged change log. Use irq_data_get_msi_desc() to avoid pointless
   lookup. ]

Signed-off-by: Hans Zhang <18255117159@163.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20250303121008.309265-1-18255117159@163.com
kernel/irq/msi.c