From: "Tycho Andersen (AMD)" <[email protected]> Add a user-visible way to set the RAPL_DIS bit for SNP init.
Since setting RAPL_DIS affects the whole system, put the module parameter in kvm_amd instead of in the CCP driver to hopefully make it more obvious to admins. Signed-off-by: Tycho Andersen (AMD) <[email protected]> --- Documentation/admin-guide/kernel-parameters.txt | 5 +++++ arch/x86/kvm/svm/sev.c | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 4d0f545fb3ec..2b50eed8664c 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -3207,6 +3207,11 @@ Kernel parameters max_snp_asid == min_sev_asid-1, will effectively make SEV-ES unusable. + kvm-amd.rapl_disable= [KVM,AMD] Whether to disable RAPL + (Running Average Power Limit) when initializing the SNP + firmware. This disables the counters for the entire system until an + SNP shutdown command is issued. + kvm-arm.mode= [KVM,ARM,EARLY] Select one of KVM/arm64's modes of operation. diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index c2126b3c3072..c2a30a3d6f50 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -66,6 +66,10 @@ module_param_named(sev_snp, sev_snp_enabled, bool, 0444); static unsigned int __ro_after_init nr_ciphertext_hiding_asids; module_param_named(ciphertext_hiding_asids, nr_ciphertext_hiding_asids, uint, 0444); +static bool rapl_disable; +module_param(rapl_disable, bool, 0444); +MODULE_PARM_DESC(rapl_disable, " if true, disable RAPL during SNP Initialization"); + #define AP_RESET_HOLD_NONE 0 #define AP_RESET_HOLD_NAE_EVENT 1 #define AP_RESET_HOLD_MSR_PROTO 2 @@ -3163,6 +3167,7 @@ void __init sev_hardware_setup(void) out: if (sev_enabled) { init_args.probe = true; + init_args.rapl_disable = rapl_disable; if (sev_is_snp_ciphertext_hiding_supported()) init_args.max_snp_asid = min(nr_ciphertext_hiding_asids, @@ -3174,6 +3179,9 @@ void __init sev_hardware_setup(void) sev_snp_supported = is_sev_snp_initialized(); if (sev_snp_supported) { + if (!init_args.rapl_disable) + rapl_disable = false; + snp_supported_policy_bits = sev_get_snp_policy_bits() & KVM_SNP_POLICY_MASK_VALID; nr_ciphertext_hiding_asids = init_args.max_snp_asid; -- 2.53.0

