Linux – What does ACPI NMI LINT mean? and Why it changes across kernel version

acpikernellinuxlinux-kernelnmi

I'd like to understand what the following lines mean

[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x0])
[    0.000000] ACPI: NMI not connected to LINT 1!
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] dfl dfl lint[0x0])
[    0.000000] ACPI: NMI not connected to LINT 1!
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] dfl dfl lint[0x0])
[    0.000000] ACPI: NMI not connected to LINT 1!
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x04] dfl res lint[0x6f])
[    0.000000] ACPI: NMI not connected to LINT 1!

And why the value of the second to last line changes across the kernel version?

e.g.:
with kernel 4.9.3 it's [0x6f]
with kernel 4.7.8 it's [0x1f]
and so on

Best Answer

Since you haven't gotten a proper answer, I'll try and provide an incomplete one. ACPI is an interface for discovery and configuration of hardware devices. They can provide Linux with information about critical events using non maskable interrupts (NMI). Each NMI is then connected to a Linux interrupt.

So LAPIC_NMI means Local Advanced Programmable Interrupt Controller Non-Maskable Interrupt. acpi_id[0x01] is the id of that device. I believe 0x01..0x04 corresponds to your computers processor cores.

Then for some reason I don't understand the Linux acpi implementation wants the NMI to be connected to the first Linux interrupt. In your case it isn't and it could mean that if a processor core generates an NMI, it is not trapped correctly by Linux.

In practice I don't think it matters (but don't quote me on that) because the interrupts the mechanism is supposed to trap are exceedingly rare.

Related Question