Re: [RESEND PATCH v8 4/6] x86/sev: Use large PSC requests if applicable

From: Borislav Petkov
Date: Tue Jun 06 2023 - 06:49:15 EST


On Fri, May 19, 2023 at 11:30:11AM -0500, Tom Lendacky wrote:
> diff --git a/arch/x86/kernel/sev.c b/arch/x86/kernel/sev.c
> index 973756c89dac..8802a75e1c20 100644
> --- a/arch/x86/kernel/sev.c
> +++ b/arch/x86/kernel/sev.c
> @@ -657,32 +657,58 @@ static u64 __init get_jump_table_addr(void)
> return ret;
> }
>
> -static void pvalidate_pages(unsigned long vaddr, unsigned long npages, bool validate)
> +static void pvalidate_pages(struct snp_psc_desc *desc)
> {
> - unsigned long vaddr_end;
> + struct psc_entry *e;
> + unsigned long vaddr;
> + unsigned int size;
> + unsigned int i;
> + bool validate;
> int rc;
>
> - vaddr = vaddr & PAGE_MASK;
> - vaddr_end = vaddr + (npages << PAGE_SHIFT);
> + for (i = 0; i <= desc->hdr.end_entry; i++) {
> + e = &desc->entries[i];
> +
> + vaddr = (unsigned long)pfn_to_kaddr(e->gfn);
> + size = e->pagesize ? RMP_PG_SIZE_2M : RMP_PG_SIZE_4K;
> + validate = (e->operation == SNP_PAGE_STATE_PRIVATE) ? true : false;

validate = e->operation == SNP_PAGE_STATE_PRIVATE;

is enough :)

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette