Re: [RFC v2 26/32] x86/mm: Move force_dma_unencrypted() to common code

From: Sean Christopherson
Date: Mon May 17 2021 - 14:37:59 EST


On Mon, May 17, 2021, Dave Hansen wrote:
> On 5/17/21 11:27 AM, Kuppuswamy, Sathyanarayanan wrote:
> > On 5/17/21 11:16 AM, Sean Christopherson wrote:
> >> What generic code needs access to SEV vs. TDX?
> >> force_dma_unencrypted() is called from generic code, but its
> >> implementation is x86 specific.
> >
> > When the hardening the drivers for TDX usage, we will have
> > requirement to check for is_protected_guest() to add code specific to
> > protected guests. Since this will be outside arch/x86, we need common
> > framework for it.
>
> Just remember, a "common framework" doesn't mean that it can't be backed
> by extremely arch-specific mechanisms.
>
> For instance, there's a lot of pkey-specific code in mm/mprotect.c. It
> still gets optimized away on x86 with all the goodness of X86_FEATUREs.

Ya, exactly. Ideally, generic code shouldn't have to differentiate between SEV,
SEV-ES, SEV-SNP, TDX, etc..., a vanilla "bool is_protected_guest(void)" should
suffice. Under the hood, x86's implementation for is_protected_guest() can be
boot_cpu_has() checks (if we want).