diff --git a/README.md b/README.md index 43957a23..921014d2 100644 --- a/README.md +++ b/README.md @@ -5,16 +5,37 @@ # sev -The `sev` crate provides an implementation of [AMD Secure Encrypted -Virtualization (SEV)](https://developer.amd.com/sev/) APIs. +The `sev` crate provides an implementation of the [AMD Secure Encrypted +Virtualization (SEV)](https://developer.amd.com/sev/) APIs and the [SEV Secure Nested Paging +Firmware (SNP)] (https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/specifications/56860.pdf) ABIs. + +### SEV APIs The Linux kernel exposes two technically distinct AMD SEV APIs: 1. An API for managing the SEV platform itself 2. An API for managing SEV-enabled KVM virtual machines -This crate implements both of those APIs and offers them to client -code through a flexible and type-safe high level interface. +This crate implements both of those APIs and offers them to client. +code through a flexible and type-safe high-level interface. + +### SNP ABIs + +The exposed ASP (AMD Secure Processor) firmware gets an enhancement with the SEV-SNP update. +The new exposed ABI has the same two functionalities as the SEV API: + +1. An ABI for managing the SEV-SNP platform itself +2. An ABI for managing SEV-SNP enabled KVM virtual machines + +These new ABIs work only for **SEV-SNP** enabled hosts and guests. + +This crate now implements both the APIs for SEV management as well as the ABIs for SEV-SNP management. + +### SEV and SEV-SNP enablement + +By default, both the SEV and SEV-SNP libraries are compiled. +Since both generations have similar functions, the library is still split by folders according to function, and inside the modules we separate the functionalities into `sev.rs` and `snp.rs` files. +You can select to only compile `sev` or `snp`. ### Platform Management diff --git a/src/lib.rs b/src/lib.rs index 885e1e29..f95aec73 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,15 +1,36 @@ // SPDX-License-Identifier: Apache-2.0 -//! The `sev` crate provides an implementation of [AMD Secure Encrypted -//! Virtualization (SEV)](https://developer.amd.com/sev/) APIs. +//! The `sev` crate provides an implementation of the [AMD Secure Encrypted +//! Virtualization (SEV)](https://developer.amd.com/sev/) APIs and the [SEV Secure Nested Paging +//! Firmware (SNP)] (https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/specifications/56860.pdf) ABIs. +//! +//! ## SEV APIs //! //! The Linux kernel exposes two technically distinct AMD SEV APIs: //! //! 1. An API for managing the SEV platform itself //! 2. An API for managing SEV-enabled KVM virtual machines //! -//! This crate implements both of those APIs and offers them to client -//! code through a flexible and type-safe high level interface. +//! This crate implements both of those APIs and offers them to client. +//! code through a flexible and type-safe high-level interface. +//! +//! ## SNP ABIs +//! +//! The exposed ASP (AMD Secure Processor) firmware gets an enhancement with the SEV-SNP update. +//! The new exposed ABI has the same two functionalities as the SEV API: +//! +//! 1. An ABI for managing the SEV-SNP platform itself +//! 2. An ABI for managing SEV-SNP enabled KVM virtual machines +//! +//! These new ABIs work only for **SEV-SNP** enabled hosts and guests. +//! +//! This crate now implements both the APIs for SEV management as well as the ABIs for SEV-SNP management. +//! +//! ## SEV and SEV-SNP enablement +//! +//! By default, both the SEV and SEV-SNP libraries are compiled. +//! Since both generations have similar functions, the library is still split by folders according to function, and inside the modules we separate the functionalities into `sev.rs` and `snp.rs` files. +//! You can select to only compile `sev` or `snp`. //! //! ## Platform Management //!