On Mon, Jul 21, 2025 at 02:12:15PM +0000, Ashish Kalra wrote: > From: Ashish Kalra <ashish.kalra@xxxxxxx> > > Ciphertext hiding prevents host accesses from reading the ciphertext > of SNP guest private memory. Instead of reading ciphertext, the host > will see constant default values (0xff). > > The SEV ASID space is split into SEV and SEV-ES/SNP ASID ranges. > Enabling ciphertext hiding further splits the SEV-ES/SEV-SNP ASID space > into separate ASID ranges for SEV-ES and SEV-SNP guests. > > Add new module parameter to the KVM module to enable ciphertext hiding > support and a user configurable system-wide maximum SNP ASID value. If > the module parameter value is "max" then the complete SEV-ES/SEV-SNP > space is allocated to SEV-SNP guests. > > v7: > - Fix comments. > - Move the check for module parameter ciphertext_hiding_asids inside > check_and_enable_sev_snp_ciphertext_hiding(), this keeps all the logic > related to the parameter in a single function. > > v6: > - Fix module parameter ciphertext_hiding_asids=0 case. > - Coalesce multiple cases of handling invalid module parameter > ciphertext_hiding_asids into a single branch/label. > - Fix commit logs. > - Fix Documentation. > > v5: > - Add pre-patch to cache SEV platform status and use this cached > information to set api_major/api_minor/build. > - Since the SEV platform status and SNP platform status differ, > remove the state field from sev_device structure and instead track > SEV platform state from cached SEV platform status. > - If SNP is enabled then cached SNP platform status is used for > api_major/api_minor/build. > - Fix using sev_do_cmd() instead of __sev_do_cmd_locked(). > - Fix commit logs. > - Fix kernel-parameters documentation. > - Modify KVM module parameter to enable CipherTextHiding to support > "max" option to allow complete SEV-ES+ ASID space to be allocated > to SEV-SNP guests. > - Do not enable ciphertext hiding if module parameter to specify > maximum SNP ASID is invalid. > > v4: > - Fix buffer allocation for SNP_FEATURE_INFO command to correctly > handle page boundary check requirements. > - Return correct length for SNP_FEATURE_INFO command from > sev_cmd_buffer_len(). > - Switch to using SNP platform status instead of SEV platform status if > SNP is enabled and cache SNP platform status and feature information. > Modify sev_get_api_version() accordingly. > - Fix commit logs. > - Expand the comments on why both the feature info and the platform > status fields have to be checked for CipherTextHiding feature > detection and enablement. > - Add new preperation patch for CipherTextHiding feature which > introduces new {min,max}_{sev_es,snp}_asid variables along with > existing {min,max}_sev_asid variable to simplify partitioning of the > SEV and SEV-ES+ ASID space. > - Switch to single KVM module parameter to enable CipherTextHiding > feature and the maximum SNP ASID usable for SNP guests when > CipherTextHiding feature is enabled. > > v3: > - rebase to linux-next. > - rebase on top of support to move SEV-SNP initialization to > KVM module from CCP driver. > - Split CipherTextHiding support between CCP driver and KVM module > with KVM module calling into CCP driver to initialize SNP with > CipherTextHiding enabled and MAX ASID usable for SNP guest if > KVM is enabling CipherTextHiding feature. > - Move module parameters to enable CipherTextHiding feature and > MAX ASID usable for SNP guests from CCP driver to KVM module > which allows KVM to be responsible for enabling CipherTextHiding > feature if end-user requests it. > > v2: > - Fix and add more description to commit logs. > - Rename sev_cache_snp_platform_status_and_discover_features() to > snp_get_platform_data(). > - Add check in snp_get_platform_data to guard against being called > after SNP_INIT_EX. > - Fix comments for new structure field definitions being added. > - Fix naming for new structure being added. > - Add new vm-type parameter to sev_asid_new(). > - Fix identation. > - Rename CCP module parameters psp_cth_enabled to cipher_text_hiding and > psp_max_snp_asid to max_snp_asid. > - Rename max_snp_asid to snp_max_snp_asid. > > Ashish Kalra (7): > crypto: ccp - New bit-field definitions for SNP_PLATFORM_STATUS > command > crypto: ccp - Cache SEV platform status and platform state > crypto: ccp - Add support for SNP_FEATURE_INFO command > crypto: ccp - Introduce new API interface to indicate SEV-SNP > Ciphertext hiding feature > crypto: ccp - Add support to enable CipherTextHiding on SNP_INIT_EX > KVM: SEV: Introduce new min,max sev_es and sev_snp asid variables > KVM: SEV: Add SEV-SNP CipherTextHiding support > > .../admin-guide/kernel-parameters.txt | 18 +++ > arch/x86/kvm/svm/sev.c | 96 +++++++++++-- > drivers/crypto/ccp/sev-dev.c | 127 ++++++++++++++++-- > drivers/crypto/ccp/sev-dev.h | 6 +- > include/linux/psp-sev.h | 44 +++++- > include/uapi/linux/psp-sev.h | 10 +- > 6 files changed, 274 insertions(+), 27 deletions(-) > > -- > 2.34.1 Patches 1-5 applied. Thanks. -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt