[Public] Hello Peter, >> +static __init int __snp_rmptable_init(void) { >> + u64 rmp_base, sz; >> + void *start; >> + u64 val; >> + >> + if (!get_rmptable_info(&rmp_base, &sz)) >> + return 1; >> + >> + start = memremap(rmp_base, sz, MEMREMAP_WB); >> + if (!start) { >> + pr_err("Failed to map RMP table 0x%llx+0x%llx\n", rmp_base, sz); >> + return 1; >> + } >> + >> + /* >> + * Check if SEV-SNP is already enabled, this can happen if we are coming from >> + * kexec boot. >> + */ >> + rdmsrl(MSR_AMD64_SYSCFG, val); >> + if (val & MSR_AMD64_SYSCFG_SNP_EN) >> + goto skip_enable; >> + >> + /* Initialize the RMP table to zero */ >> + memset(start, 0, sz); >> + >> + /* Flush the caches to ensure that data is written before SNP is enabled. */ >> + wbinvd_on_all_cpus(); >> + >> + /* Enable SNP on all CPUs. */ >> + on_each_cpu(snp_enable, NULL, 1); >> + >> +skip_enable: >> + rmptable_start = (unsigned long)start; >> + rmptable_end = rmptable_start + sz; > Since in get_rmptable_info() `rmp_sz = rmp_end - rmp_base + 1;` should this be `rmptable_end = rmptable_start + sz - 1;`? Yes, it should be. Thanks, Ashish