LINUX.ORG.RU

Не работает kernel опция iommu=pt

 , , ,


0

2

Всем доброго времени суток.

Никак не могу понять в чем беда. Не срабатывают опции загрузки ядра, причем только касающиеся IOMMU.

В целом iommu работает, но никак не могу включить iommu=pt.

Материнская плата ASUS Sabertooth 990FX r2.0.

Процессор AMD FX 9590.

Дистрибутив OpenSUSE 42.3.

Ядро самосборное (4.4) на основе default с включенной в ядро VFIO-PCI=y

В биосе включен IOMMU (что интересно, если отключить, ядро не загружается)

dmesg | grep AMD-Vi выдает всегда:

[ 1.862938] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[ 1.862939] AMD-Vi: Interrupt remapping enabled
[ 1.862997] AMD-Vi: Lazy IO/TLB flushing enabled

в kernel parameters стоят:

amd_iommu=on iommu=pt kvm.ignore_msrs=1 kvm-amd.npt=0 transparent_hugepage=never hugepages=4096

С включенной опцией iommu=pt должна появиться строчка:

AMD-Vi: Initialized for Passthrough Mode.

Но её нет. Что интересно, amd_iommu=on iommu=pt kvm.ignore_msrs=1 никак не влияют на AMD-Vi. т.е даже если удалить их, iommu все равно работает, и все равно работает Interrupt remapping. Остальные параметры ядра работают нормально. Ошибок в dmesg по этому поводу вообще никаких.

Подскажите, что за ерунда, и как активировать iommu=pt?

Но её нет.

Не удивительно. С помощью grep в исходниках твоего ядра ты её тоже скорее всего не найдешь, я вот не нашел.

o- ()

Привет! Я удалил свой комментарий, потому что там была ссылка на уже недоступный файл. У меня такая же материнка, только процессор FX-8350. Linux 4.9, самосборное (вот пакеты, версию 42.3 могу добавить). Я добавил опцию ядра iommu=pt, когда у меня не работал звук по SPDIF.

> В биосе включен IOMMU (что интересно, если отключить, ядро не загружается)

У меня так же - после сброса UEFI BIOS к дефолтным значениям, IOMMU становится можно отключить.

Ещё сброс настроек необходим, если хочется отказаться от авто-разгона в пользу ввода настроек вручную. Иначе в частотах памяти - не 1333, 1600, а что-то, что не делится ни на что.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Я вручную разогнал так:

9590@4600

Mem@2133

NB@2400

HT@2400

Все стабильно только так. Звук по SPDIF работает, правда без разницы на каком устройстве (USB, SPDIF, Analog) он иногда начинает хрипеть и вместе с хрипами фризит вся гостевая ОС. У тебя так же?

Что у тебя выдает dmesg | grep AMD-Vi?

Nemton ()
Ответ на: комментарий от ZenitharChampion

Авто разгон использует множитель частоты шины для разгона, поэтому не получается точных частот для устройств. Изначально он кратен 100, что есть например 4000 процессор и 1600 для памяти. Если его поднять на 5, то эти значения увеличатся на 5 статичных для каждого устройства числа например до 4120проц и 1680память. Так же растет и частота NB и HT.

Nemton ()
Ответ на: комментарий от Nemton

Для какой версии ядра? Говорю же - этого уже нет в исходниках. Скажем в 3.10 действительно есть такой дебаговый вывод в amd_iommu_init_passthrough, а в 4.4 уже нет.

o- ()

Ну и да, IOMMU на AMD скорее всего уже много лет включено по дефолту. Вот если сделаешь iommu=off оно вырубиться наверняка.

Про остальные опции ничего не скажу так как процессор у меня не АМДшный.

o- ()
Ответ на: комментарий от o-

Я почему-то тоже так думаю, вот только пишут, что при включенной опции потери в виртуалке в районе 2-5% на ядро, а у меня по 20-30%. При учете всех остальных опций. Причём не меняется производительность, что при пробросе 4 ядер, что 6, что 8. Если использовать pinning, то ВМ фризит раз в несколько секунд ибо срабатывает kworker на этом ядре и вычищает текущий кэш ядра и записывает свой и обратно. Как убрать системные процессы с ядер я хз, не переносятся они даже с опцией --force. Но в тестах pinning добавляет лишь пару процентов не более. Вот зацепился за pt

Nemton ()
Ответ на: комментарий от o-

Ну и да, IOMMU на AMD скорее всего уже много лет включено по дефолту. Вот если сделаешь iommu=off оно вырубиться наверняка.

Нет, по умолчанию выключено.

King_Carlo ★★★★★ ()
Ответ на: комментарий от Nemton

> Что у тебя выдает dmesg | grep AMD-Vi?

dmesg | grep AMD-Vi
[    1.318583] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[    1.318583] AMD-Vi: Interrupt remapping enabled
[    1.318676] AMD-Vi: Lazy IO/TLB flushing enabled
ZenitharChampion ★★★★★ ()
Ответ на: комментарий от King_Carlo

Может он теперь как-то по-другому активируется? При iommu=pt эффект 0, как и собственно iommu=1. Без этой опции iommu не отключается.

Nemton ()
Ответ на: комментарий от ZenitharChampion

Да все пробрасывается, у меня проброшены: VGA, USB, Sound. То информация 2013 года, тогда действительно могли быть ошибки в BIOS. Дело в другом, производительность ЦПУ низковата в ВМ.

Nemton ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.