Failed to load amd/sev.fw

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Seit der Einführung der ersten AMD EPYC Server Prozessorgeneration, ist auch das Sicherheitsfeature Secure Encrypted Virtualization (SEV) verfügbar. SEV ermöglicht es den Arbeitsspeicher von virtuellen Maschinen zu verschlüsseln. Damit das Feature genutzt werden kann, wird die SEV Firmware benötigt. Fehlt diese, erhalten Sie während des Bootvorgangs die Fehlermeldung firmware: failed to load amd/sev.fw (-2). Im Zuge dieses Artikels wird AMD SEV kurz erläutert und erklärt, wie der Firmware Blob unter Linux nachgeladen werden kann.

dmesg Log bei fehlender Firmware

Folgende dmesg Log Einträge erhalten Sie bei unter Debian 11:

[   10.875347] ccp 0000:48:00.1: enabling device (0000 -> 0002)
[   10.875583] ccp 0000:48:00.1: no command queues available
[   10.875710] ccp 0000:48:00.1: sev enabled
[   10.875712] ccp 0000:48:00.1: psp enabled
[   10.889505] ccp 0000:48:00.1: firmware: failed to load amd/amd_sev_fam19h_model01h.sbin (-2)
[   12.638036] ccp 0000:48:00.1: SEV: failed to INIT error 0x13

Unter Debian 10:

[   13.178990] ccp 0000:48:00.1: enabling device (0000 -> 0002)
[   13.179652] ccp 0000:48:00.1: no command queues available
[   13.179653] ccp 0000:48:00.1: ccp initialization failed
[   13.179978] ccp 0000:48:00.1: psp enabled
[   13.179978] ccp 0000:48:00.1: enabled
[   13.189167] ccp 0000:48:00.1: firmware: failed to load amd/sev.fw (-2)
[   13.189665] ccp 0000:48:00.1: Direct firmware load for amd/sev.fw failed with error -2
[   13.198782] ccp 0000:48:00.1: SEV: failed to INIT error 0x13

Was ist AMD SEV

Mit der Funktion Secure Encrypted Virtualization (SEV) kann der Speicherinhalt einer virtuellen Maschine mit einem für die virtuelle Gastmaschine eindeutigen Schlüssel verschlüsselt werden. Der Speicher-Controller enthält eine leistungsstarke "Encrytion-Engine", die mit mehreren Schlüsseln zur Verwendung durch verschiedene VMs im System programmiert werden kann. Die Programmierung und Verwaltung dieser Schlüssel und die sichere Datenübertragung zwischen dem Host-Hypervisor und dem Speicher der Gast-VM werden von der SEV-Firmware gesteuert, die auf dem "AMD Secure Processor" ausgeführt wird.[1]

Aus lizenzrechtlichen Gründen ist die Firmware nicht bei allen Linux Distributionen, wie z.B. Debian, vorhanden und muss manuell nachgeladen werden. [2]

Voraussetzungen

1. Das Firmware File muss im Verzeichnis /lib/firmware/amd abgelegt werden. Sollte der Ordner "amd" nicht vorhanden sein, muss dieser manuell erstellt werden.

2. Abhängig davon, welche CPU Generation verbaut ist, müssen unterschiedliche Firmware Blobs nachgeladen werden. Diese erhalten Sie direkt bei AMD.

Firmware Blob Name CPU Generation Download
amd_sev_fam17h_model0xh.sbin EPYC 7xx1 Download
amd_sev_fam17h_model3xh.sbin EPYC 7xx2 Download
amd_sev_fam19h_model0xh.sbin EPYC 7xx3 Download

3. Die genutzte Kernel-Version entscheidet darüber, ob der Blob in die oben stehende Bezeichnung umbenannt oder per Symlink verknüpft werden soll. Die aktuelle Kernel Version kann mit "uname -a" ausgegeben werden.

Kernel Version Vorgehen Befehl
4.16 - 4.19 Symlink erstellen ln amd_sev_fam1Xh_modelYxh_version.sbin sev.fw
4.20 und neuer Firmware-Datei umbenennen mv *.sbin amd_sev_fam1Xh_modelYxh.sbin

4. Die Firmware wird nun beim nächsten Start geladen. Dies kann im dmesg Log überprüft werden.

Beispiel

In dem im Beispiel wurde folgendes Testsystem verwendet:

Bezeichnung Komponente
Basis 2HE AMD Single-CPU RA1208-SMEP Server
Mainboard Supermicro H12SSL-CT
CPU AMD EPYC 7343
Arbeitsspeicher 32 GB (4x 8GB) ECC Reg ATP DDR4 3200 RAM
SSD 240 GB SATA III Samsung SSD 3D-NAND TLC 2,5" (PM893)

Vorgehen Debian 10

Der Ordner "amd" im Verzeichnis "/lib/firmware" fehlt und muss erstellt werden:

root@debian:~# mkdir /lib/firmware/amd
root@debian:~# cd /lib/firmware/amd

Da es sich um eine AMD CPU der 3. Generation handelt, wird die Datei "amd_sev_fam19h_model0xh.sbin" benötigt:

wget https://developer.amd.com/wp-content/resources/amd_sev_fam19h_model0xh_1.33.03.zip

.zip entpacken:

root@debian:/lib/firmware/amd# unzip amd_sev_fam19h_model0xh_1.33.03.zip
Archive:  amd_sev_fam19h_model0xh_1.33.03.zip
  inflating: amd_sev_fam19h_model0xh_1.33.03.esbin
  inflating: amd_sev_fam19h_model0xh_1.33.03.sbin
  inflating: Milan Release Notes.txt

Die Kernel Version ist 4.19. Es muss daher ein symlink erstellt werden:

root@debian:/lib/firmware/amd# ln amd_sev_fam19h_model0xh_1.33.03.sbin sev.fw 

Beim nächsten Reboot wird die Firmware geladen, dies kann im dmesg Log überprüft werden:

[   13.191384] ccp 0000:48:00.1: firmware: direct-loading firmware amd/sev.fw
[   13.223108] ccp 0000:48:00.1: SEV firmware update successful

Vorgehen Debian 11

Der Ordner "amd" im Verzeichnis "/lib/firmware" fehlt und muss erstellt werden:

root@debian:~# mkdir /lib/firmware/amd
root@debian:~# cd /lib/firmware/amd

Da es sich um eine AMD CPU der 3. Generation handelt, wird die Datei "amd_sev_fam19h_model0xh.sbin" benötigt:

wget https://developer.amd.com/wp-content/resources/amd_sev_fam19h_model0xh_1.33.03.zip

.zip entpacken:

root@debian:/lib/firmware/amd# unzip amd_sev_fam19h_model0xh_1.33.03.zip
Archive:  amd_sev_fam19h_model0xh_1.33.03.zip
  inflating: amd_sev_fam19h_model0xh_1.33.03.esbin
  inflating: amd_sev_fam19h_model0xh_1.33.03.sbin
  inflating: Milan Release Notes.txt

Die Kernel Version ist 5.10. Die Datei muss umbenannt werden:

root@debian:/lib/firmware/amd# mv amd_sev_fam19h_model0xh_1.33.03.sbin amd_sev_fam19h_model0xh.sbin

Beim nächsten Reboot wird die Firmware geladen, dies kann im dmesg Log überprüft werden:

[   11.115577] ccp 0000:48:00.1: firmware: direct-loading firmware amd/amd_sev_fam19h_model01h.sbin 

Einzelnachweise


Foto Florian Sebald.jpg

Autor: Florian Sebald

Florian Sebald ist seit 2018 bei Thomas-Krenn tätig und schloss im Technischen Support seine Ausbildung zum Fachinformatiker Systemintegration ab. Neben seinen Tätigkeiten im Support spezialisiert sich Florian auf das Thema VMware.


Das könnte Sie auch interessieren

ATA Security Feature Set
CHS und LBA Adressierung von Festplatten
Wichtige Informationen bei Datenverlust