Re: DMAR-IR: IRQ remapping was enabled on dmar6 but we are not in kdump mode

From: Baolu Lu
Date: Mon Jan 22 2024 - 20:54:27 EST


On 2024/1/22 22:53, Paul Menzel wrote:
Am 22.01.24 um 13:38 schrieb Baolu Lu:
On 2024/1/19 22:45, Paul Menzel wrote:

On a Dell PowerEdge T640, Linux 5.9 and 6.6.12 warn about kdump:

     [    2.728445] DMAR-IR: IRQ remapping was enabled on dmar6 but we are not in kdump mode
     [    2.736544] DMAR-IR: IRQ remapping was enabled on dmar5 but we are not in kdump mode
     [    2.744620] DMAR-IR: IRQ remapping was enabled on dmar4 but we are not in kdump mode
     [    2.752695] DMAR-IR: IRQ remapping was enabled on dmar3 but we are not in kdump mode
     [    2.760774] DMAR-IR: IRQ remapping was enabled on dmar2 but we are not in kdump mode
     [    2.768847] DMAR-IR: IRQ remapping was enabled on dmar1 but we are not in kdump mode
     [    2.776922] DMAR-IR: IRQ remapping was enabled on dmar0 but we are not in kdump mode
     [    2.784999] DMAR-IR: IRQ remapping was enabled on dmar7 but we are not in kdump mode

Looking through the logs, this only happens when using kexec to restart the system.

The code that warned this is,

  599         if (ir_pre_enabled(iommu)) {
  600                 if (!is_kdump_kernel()) {
  601                         pr_warn("IRQ remapping was enabled on %s but we are not in kdump mode\n",
  602                                 iommu->name);
  603                         clear_ir_pre_enabled(iommu);
  604                         iommu_disable_irq_remapping(iommu);
  605                 }

The VT-d interrupt remapping is enabled during boot, but this is not a
kdump kernel.

Do you mind checking whether the disable interrupt remapping callback
was called during kexec reboot?

1121 struct irq_remap_ops intel_irq_remap_ops = {
1122         .prepare                = intel_prepare_irq_remapping,
1123         .enable                 = intel_enable_irq_remapping,
1124         .disable                = disable_irq_remapping,
1125         .reenable               = reenable_irq_remapping,
1126         .enable_faulting        = enable_drhd_fault_handling,
1127 };

Is there a way to check this without rebuilding the Linux kernel?

I am not sure, but you can check whether any messages are dumped in the
path of .disable callback? or try to use ftrace?

Best regards,
baolu