Hello Tom, On 9/25/2024 10:57 AM, Tom Lendacky wrote: > On 9/21/24 22:36, Pavan Kumar Paluri wrote: >> Move SEV specific kernel command line option parsing support from >> arch/x86/coco/sev/core.c to arch/x86/virt/svm/cmdline.c so that both >> host and guest related SEV command line options can be supported. >> >> No functional changes intended. >> >> Signed-off-by: Pavan Kumar Paluri <papaluri@xxxxxxx> >> Reviewed-by: Tom Lendacky <thomas.lendacky@xxxxxxx> >> --- >> arch/x86/coco/sev/core.c | 44 ------------------------------- >> arch/x86/include/asm/sev-common.h | 29 ++++++++++++++++++++ >> arch/x86/virt/svm/Makefile | 1 + >> arch/x86/virt/svm/cmdline.c | 32 ++++++++++++++++++++++ >> 4 files changed, 62 insertions(+), 44 deletions(-) >> create mode 100644 arch/x86/virt/svm/cmdline.c >> > ... >> +extern struct sev_config sev_cfg __read_mostly; > > So I believe the "__read_mostly" attribute really needs to be on the > actual declaration of the struct, below, in cmdline.c, right? > Yes, I will move this attribute to cmdline.c > You can check and see which section the sev_cfg struct ends up being > placed after a build to verify. > It is placed in .data.readmostly section. 0000000000000000 g O .data..read_mostly 0000000000000008 sev_cfg > Thanks, > Tom > Thanks for the review, Pavan >> + >> #endif >> diff --git a/arch/x86/virt/svm/Makefile b/arch/x86/virt/svm/Makefile >> index ef2a31bdcc70..eca6d71355fa 100644 >> --- a/arch/x86/virt/svm/Makefile >> +++ b/arch/x86/virt/svm/Makefile >> @@ -1,3 +1,4 @@ >> # SPDX-License-Identifier: GPL-2.0 >> >> obj-$(CONFIG_KVM_AMD_SEV) += sev.o >> +obj-$(CONFIG_CPU_SUP_AMD) += cmdline.o >> diff --git a/arch/x86/virt/svm/cmdline.c b/arch/x86/virt/svm/cmdline.c >> new file mode 100644 >> index 000000000000..964677ab02d6 >> --- /dev/null >> +++ b/arch/x86/virt/svm/cmdline.c >> @@ -0,0 +1,32 @@ >> +// SPDX-License-Identifier: GPL-2.0-only >> +/* >> + * AMD SVM-SEV command line parsing support >> + * >> + * Copyright (C) 2023 - 2024 Advanced Micro Devices, Inc. >> + * >> + * Author: Michael Roth <michael.roth@xxxxxxx> >> + */ >> + >> +#include <linux/string.h> >> +#include <linux/printk.h> >> + >> +#include <asm/sev-common.h> >> + >> +struct sev_config sev_cfg; >> + >> +static int __init init_sev_config(char *str) >> +{ >> + char *s; >> + >> + while ((s = strsep(&str, ","))) { >> + if (!strcmp(s, "debug")) { >> + sev_cfg.debug = true; >> + continue; >> + } >> + >> + pr_info("SEV command-line option '%s' was not recognized\n", s); >> + } >> + >> + return 1; >> +} >> +__setup("sev=", init_sev_config);