Skip to content

Commit

Permalink
x86/sev: Move the SNP probe routine out of the way
Browse files Browse the repository at this point in the history
To make patch review easier for the segmented RMP support, move the SNP
probe function out from in between the initialization-related routines.

No functional change.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Nikunj A Dadhania <nikunj@amd.com>
Reviewed-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
Link: https://lore.kernel.org/r/6c2975bbf132d567dd12e1435be1d18c0bf9131c.1733172653.git.thomas.lendacky@amd.com
  • Loading branch information
Tom Lendacky authored and Borislav Petkov (AMD) committed Dec 14, 2024
1 parent 4972808 commit e2f3d40
Showing 1 changed file with 30 additions and 30 deletions.
60 changes: 30 additions & 30 deletions arch/x86/virt/svm/sev.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,36 +135,6 @@ static __init void snp_enable(void *arg)
__snp_enable(smp_processor_id());
}

#define RMP_ADDR_MASK GENMASK_ULL(51, 13)

bool snp_probe_rmptable_info(void)
{
u64 rmp_sz, rmp_base, rmp_end;

rdmsrl(MSR_AMD64_RMP_BASE, rmp_base);
rdmsrl(MSR_AMD64_RMP_END, rmp_end);

if (!(rmp_base & RMP_ADDR_MASK) || !(rmp_end & RMP_ADDR_MASK)) {
pr_err("Memory for the RMP table has not been reserved by BIOS\n");
return false;
}

if (rmp_base > rmp_end) {
pr_err("RMP configuration not valid: base=%#llx, end=%#llx\n", rmp_base, rmp_end);
return false;
}

rmp_sz = rmp_end - rmp_base + 1;

probed_rmp_base = rmp_base;
probed_rmp_size = rmp_sz;

pr_info("RMP table physical range [0x%016llx - 0x%016llx]\n",
rmp_base, rmp_end);

return true;
}

static void __init __snp_fixup_e820_tables(u64 pa)
{
if (IS_ALIGNED(pa, PMD_SIZE))
Expand Down Expand Up @@ -291,6 +261,36 @@ static int __init snp_rmptable_init(void)
*/
device_initcall(snp_rmptable_init);

#define RMP_ADDR_MASK GENMASK_ULL(51, 13)

bool snp_probe_rmptable_info(void)
{
u64 rmp_sz, rmp_base, rmp_end;

rdmsrl(MSR_AMD64_RMP_BASE, rmp_base);
rdmsrl(MSR_AMD64_RMP_END, rmp_end);

if (!(rmp_base & RMP_ADDR_MASK) || !(rmp_end & RMP_ADDR_MASK)) {
pr_err("Memory for the RMP table has not been reserved by BIOS\n");
return false;
}

if (rmp_base > rmp_end) {
pr_err("RMP configuration not valid: base=%#llx, end=%#llx\n", rmp_base, rmp_end);
return false;
}

rmp_sz = rmp_end - rmp_base + 1;

probed_rmp_base = rmp_base;
probed_rmp_size = rmp_sz;

pr_info("RMP table physical range [0x%016llx - 0x%016llx]\n",
rmp_base, rmp_end);

return true;
}

static struct rmpentry_raw *get_raw_rmpentry(u64 pfn)
{
if (!rmptable)
Expand Down

0 comments on commit e2f3d40

Please sign in to comment.