Alasan NMI 20 dan 30 tidak diketahui pada VM

10

Saya menarik konsol pada mesin virtual yang saya kelola hari ini dan disambut dengan beberapa pesan kernel:

[5912557.130943] Uhhuh. NMI received for unknown reason 20 on CPU 0.
[5912557.131115] Do you have a strange power saving mode enabled?
[5912557.131287] Dazed and confused, but trying to continue
[6064281.393568] Uhhuh. NMI received for unknown reason 30 on CPU 1.
[6064281.393888] Do you have a strange power saving mode enabled?
[6064281.394235] Dazed and confused, but trying to continue

Itu hanya beberapa di antaranya, 20 dan 30 terjadi pada CPU 0 dan 1.

  • VM adalah Debian Jessie, boot BIOS ("QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.9.3-20161025_171302-gandalf 04/01/2014"; kernel 3.16.0-4-amd64)
  • Hypervisor adalah libvirt / KVM yang berjalan pada pengujian Debian (saat ini Debian 4.7.0-1-amd64; qemu 1: 2.7 + dfsg-3).
  • Perangkat keras adalah Opteron 6344 pada Supermicro H8SGL-F dengan RAM ECC dengan scrub diaktifkan.

Saya tidak melihat pesan kesalahan / peringatan NMI atau EDAC di host.

Tahu apa yang menyebabkan pesan NMI ini pada tamu? Apakah mereka perlu dikhawatirkan?

(Mungkin terkait dengan NMI yang diterima untuk alasan yang tidak diketahui 20 - Apakah Anda memiliki mode hemat daya yang aneh diaktifkan? Tetapi itu tampaknya bare metal).

derobert
sumber
Saya bertanya-tanya apakah itu akan membantu untuk lolos ke kernel dari VMnoapic apci=off
Rui F Ribeiro
@RuiFRibeiro Nah, saat ini VM bekerja tanpa masalah (jelas). Ini sedang dalam produksi, jadi saya lebih suka tidak berkeliling me-reboot untuk mencoba opsi kernel acak hanya untuk melihat. Akan menjadi cerita yang berbeda jika itu untuk membantu seorang dev kernel untuk men-debug masalah, dll. (Plus, itu tidak seperti mereka sering-itu akan memakan waktu cukup lama untuk memastikan.)
derobert
Saya sudah mencoba melacak masalah yang sama untuk beberapa waktu. Beberapa poin data yang mungkin bermanfaat adalah: versi host kernel, versi qemu, apakah VM menggunakan boot BIOS atau UEFI, apakah VM menggunakan i440fx atau q35.
Michael Hampton
@MichaelHampton meminta detail ditambahkan ke pertanyaan.
derobert
Saya punya masalah yang sama, berikut rinciannya (sebenarnya sangat mirip): VM adalah Debian jessie (3.16.0-4-amd64) dengan BIOS 1.7.5-20140531_083030-gandalf (04/01/2014). Hypervisor adalah libvirt / KVM pada Debian jessie, tetapi dengan kernel backported (4.7.0-0.bpo.1-amd64). Perangkat keras Hypervisor adalah dua Opteron 6272, dengan ECC RAM (motherboard saat ini tidak diketahui, tetapi kemungkinan Supermicro dari beberapa jenis). Mengingat detail ini sangat mirip dengan derobert, saya tidak terlalu terkejut bahwa saya menemukan masalah ini juga, tetapi mudah-mudahan mereka membantu.
jvperrin

Jawaban:

2

Saya memiliki masalah yang sama menggunakan pengaturan serupa:

  1. AMD CPU (walaupun saya telah melihat laporan dari masalah yang sama dengan Intel CPU, tetapi tidak ada hypervisor saya yang berjalan pada Intel CPU memiliki masalah ini, bahkan dengan CPU passthrough diaktifkan).
  2. Debian, kernel 4.x pada hypervisor dan guest (4.9.0-4-amd64 dalam kasus saya di keduanya).

Solusi saya adalah mengganti VM tamu saya untuk menggunakan CPU QEMU yang diemulasi daripada menggunakan CPU. Ini mensyaratkan penghapusan <cpu mode='host-passthrough'/>baris dari file definisi tamu.

Pembaruan : Saya melakukan penyelidikan lebih lanjut dan elemen-elemen bermasalah berada di bawah clockelemen:

<clock offset='utc'>
  <timer name='rtc' tickpolicy='catchup'/>
  <timer name='pit' tickpolicy='delay'/>
  <timer name='hpet' present='no'/>
</clock>

Solusi sebenarnya adalah menghapus tiga <timer>elemen, setelah <cpu mode='host-passthrough'/>itu dapat diaktifkan kembali.

Untuk kelengkapan saya menambahkan jawaban yang mirip dengan pertanyaan yang ditautkan .

mjturner
sumber
Ketiga elemen ini adalah nilai default, menonaktifkannya seharusnya tidak melakukan apa-apa dan menambahkannya kembali pada save.
Simon Richter
1

Masalahnya tampaknya End of Interrupt tidak dikomunikasikan dengan benar.

Untuk libvirt, pastikan eoidiaktifkan:

<domain>
  …
  <features>
    <apic eoi='on'/>
    …

Di baris perintah untuk KVM yang diterjemahkan

-cpu …,+kvm_pv_eoi

Ini sepertinya bekerja untuk kita dengan -M q35, host cpu passthrough dan konfigurasi default sebaliknya (RTC terputus, antrian PIT terputus, HPET tidak tersedia).

Simon Richter
sumber
0

Saya memiliki masalah yang sama pada Debian 9dan Qemu 2.8.1(Debian 1:2.8+dfsg-6+deb9u5).
Saya mengatasinya dengan mengganti model kartu video dari virtioke cirrus(atau Anda dapat mencoba menggunakan model lain dari qemuhalaman manual).

Oleg Golovanov
sumber