14ae47fa7SPavan Kumar Paluri // SPDX-License-Identifier: GPL-2.0-only 24ae47fa7SPavan Kumar Paluri /* 34ae47fa7SPavan Kumar Paluri * AMD SVM-SEV command line parsing support 44ae47fa7SPavan Kumar Paluri * 54ae47fa7SPavan Kumar Paluri * Copyright (C) 2023 - 2024 Advanced Micro Devices, Inc. 64ae47fa7SPavan Kumar Paluri * 74ae47fa7SPavan Kumar Paluri * Author: Michael Roth <michael.roth@amd.com> 84ae47fa7SPavan Kumar Paluri */ 94ae47fa7SPavan Kumar Paluri 104ae47fa7SPavan Kumar Paluri #include <linux/string.h> 114ae47fa7SPavan Kumar Paluri #include <linux/printk.h> 124ae47fa7SPavan Kumar Paluri #include <linux/cache.h> 13*2db67aacSPavan Kumar Paluri #include <linux/cpufeature.h> 144ae47fa7SPavan Kumar Paluri 154ae47fa7SPavan Kumar Paluri #include <asm/sev-common.h> 164ae47fa7SPavan Kumar Paluri 174ae47fa7SPavan Kumar Paluri struct sev_config sev_cfg __read_mostly; 184ae47fa7SPavan Kumar Paluri 194ae47fa7SPavan Kumar Paluri static int __init init_sev_config(char *str) 204ae47fa7SPavan Kumar Paluri { 214ae47fa7SPavan Kumar Paluri char *s; 224ae47fa7SPavan Kumar Paluri 234ae47fa7SPavan Kumar Paluri while ((s = strsep(&str, ","))) { 244ae47fa7SPavan Kumar Paluri if (!strcmp(s, "debug")) { 254ae47fa7SPavan Kumar Paluri sev_cfg.debug = true; 264ae47fa7SPavan Kumar Paluri continue; 274ae47fa7SPavan Kumar Paluri } 284ae47fa7SPavan Kumar Paluri 29*2db67aacSPavan Kumar Paluri if (!strcmp(s, "nosnp")) { 30*2db67aacSPavan Kumar Paluri if (!cpu_feature_enabled(X86_FEATURE_HYPERVISOR)) { 31*2db67aacSPavan Kumar Paluri setup_clear_cpu_cap(X86_FEATURE_SEV_SNP); 32*2db67aacSPavan Kumar Paluri cc_platform_clear(CC_ATTR_HOST_SEV_SNP); 33*2db67aacSPavan Kumar Paluri continue; 34*2db67aacSPavan Kumar Paluri } else { 35*2db67aacSPavan Kumar Paluri goto warn; 36*2db67aacSPavan Kumar Paluri } 37*2db67aacSPavan Kumar Paluri } 38*2db67aacSPavan Kumar Paluri 39*2db67aacSPavan Kumar Paluri warn: 404ae47fa7SPavan Kumar Paluri pr_info("SEV command-line option '%s' was not recognized\n", s); 414ae47fa7SPavan Kumar Paluri } 424ae47fa7SPavan Kumar Paluri 434ae47fa7SPavan Kumar Paluri return 1; 444ae47fa7SPavan Kumar Paluri } 454ae47fa7SPavan Kumar Paluri __setup("sev=", init_sev_config); 46