Невідома причина 20 та 30 NMI для VM


10

Я підняв консоль на віртуальній машині, якою я сьогодні керую, і мене привітали з деякими повідомленнями ядра:

[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

Ось лише деякі з них, як 20, так і 30 зустрічаються на процесорі 0 і 1.

  • VM - це Debian Jessie, завантаження BIOS ("Стандартний ПК QEMU (i440FX + PIIX, 1996), BIOS 1.9.3-20161025_171302-gandalf 04/01/2014"; ядро ​​3.16.0-4-amd64)
  • Hypervisor - це libvirt / KVM, що працює на тестуванні Debian (на даний момент Debian 4.7.0-1-amd64; qemu 1: 2.7 + dfsg-3).
  • Обладнання - це Opteron 6344 на Supermicro H8SGL-F з оперативною пам’яттю ECC з включеним скрабом.

Я не бачу жодних повідомлень про помилки / попередження NMI або EDAC на хості.

Будь-яка ідея, що викликає ці повідомлення NMI у гостя? Їм є про що турбуватися?

(Може бути пов'язано з NMI, отриманим з незрозумілої причини 20 - Чи увімкнено дивний режим енергозбереження? Але це, здається, голий метал).


Цікаво, що чим це допоможе перейти до ядра віртуальних машинnoapic apci=off
Rui F Ribeiro

@RuiFRibeiro Добре, що зараз ВМ працює без будь-яких (очевидних) проблем. Це у виробництві, тому я краще не переходжуся, щоб спробувати випадкові параметри ядра, щоб побачити. Була б інша історія, якби допомогти розробнику ядра налагодити проблему і т. Д. (Плюс, це не так, як вони часто зустрічаються - це знадобиться певний час)
derobert

Я деякий час намагаюся віднайти те саме питання. Деякі точки даних, які можуть бути корисними, це: версія ядра хоста, версія qemu, чи VM використовує завантаження BIOS або UEFI, чи VM використовує i440fx або q35.
Майкл Хемптон

@MichaelHampton запитав деталі, додані до питання.
дероберт

У мене те саме питання, ось деталі (дуже схожі насправді): VM - це Debian jessie (3.16.0-4-amd64) з BIOS 1.7.5-20140531_083030-gandalf (01.04.2014). Hypervisor - це libvirt / KVM на джесі Debian, але з підтримуваним ядром (4.7.0-0.bpo.1-amd64). Апаратне забезпечення Hypervisor - це два Opteron 6272, з ECC RAM (на сьогодні невідома материнська плата, але, швидше за все, Supermicro якогось типу). З огляду на те, що ці деталі надзвичайно схожі на деробертські, я не надто здивований, що я теж стикаюся з цим питанням, але, сподіваюся, вони допомагають.
jvperrin

Відповіді:


2

У мене була та сама проблема, використовуючи аналогічну настройку:

  1. AMD CPU (хоча я бачив повідомлення про ту саму проблему з процесорами Intel, але жоден з моїх гіпервізорів, що працюють на процесорах Intel, не має цієї проблеми, навіть із включеним процесором).
  2. Debian, ядро ​​4.x на гіпервізорі та гостьовий (4.9.0-4-amd64 в моєму випадку на обох).

Моє рішення полягало в тому, щоб переключити мою гостьову віртуальну машину на використання емульованого процесора QEMU, а не проходження процесора. Це спричинило за собою видалення <cpu mode='host-passthrough'/>рядка з файлу визначення гостя.

Оновлення : я провів подальше дослідження, і проблемні елементи були під clockелементом:

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

Справжнім рішенням було видалення трьох <timer>елементів, після чого їх <cpu mode='host-passthrough'/>можна було знову включити.

Для повноти я додав аналогічну відповідь на пов'язане питання .


Ці три елементи є значеннями за замовчуванням, відключення їх не повинно робити нічого і повторно додавати їх при збереженні.
Саймон Ріхтер

1

Здається, проблема полягає в тому, що закінчення переривання не повідомляється належним чином.

Для libvirt переконайтеся, що eoiввімкнено:

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

У командному рядку для KVM, що перекладається на

-cpu …,+kvm_pv_eoi

Це, здається, працює для нас з -M q35хостом, процесором хосту і налаштуваннями за замовчуванням в іншому випадку (RTC перериває чергу, падіння PIT припинено, HPET недоступний).


0

У мене була та сама проблема Debian 9і на Qemu 2.8.1(Debian 1:2.8+dfsg-6+deb9u5).
Я вирішив це, замінивши модель відеокарти з virtioна cirrus(або ви можете спробувати використати іншу модель на qemuсторінці man).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.