RE: [PATCH v2 02/12] x86/ioapic: Gate decrypted mapping on cc_platform_has() attribute

From: Michael Kelley (LINUX)
Date: Mon Nov 14 2022 - 11:54:50 EST


From: Dave Hansen <dave.hansen@xxxxxxxxx> Sent: Monday, November 14, 2022 8:23 AM
>
> On 11/11/22 20:48, Michael Kelley (LINUX) wrote:
> > From: Dave Hansen <dave.hansen@xxxxxxxxx> Sent: Friday, November 11, 2022 4:22
> PM
> >> On 11/10/22 22:21, Michael Kelley wrote:
> >>> * Ensure fixmaps for IOAPIC MMIO respect memory encryption pgprot
> >>> * bits, just like normal ioremap():
> >>> */
> >>> - flags = pgprot_decrypted(flags);
> >>> + if (!cc_platform_has(CC_ATTR_HAS_PARAVISOR))
> >>> + flags = pgprot_decrypted(flags);
> >> This begs the question whether *all* paravisors will want to avoid a
> >> decrypted ioapic mapping. Is this _fundamental_ to paravisors, or it is
> >> an implementation detail of this _individual_ paravisor?
> > Hard to say. The paravisor that Hyper-V provides for use with the vTOM
> > option in a SEV SNP VM is the only paravisor I've seen. At least as defined
> > by Hyper-V and AMD SNP Virtual Machine Privilege Levels (VMPLs), the
> > paravisor resides within the VM trust boundary. Anything that a paravisor
> > emulates would be in the "private" (i.e., encrypted) memory so it can be
> > accessed by both the guest OS and the paravisor. But nothing fundamental
> > says that IOAPIC emulation *must* be done in the paravisor.
>
> Please just make this check more specific. Either make this a specific
> Hyper-V+SVM check, or rename it HAS_EMULATED_IOAPIC, like you were
> thinking. If paravisors catch on and we end up with ten more of these
> things across five different paravisors and see a pattern, *then* a
> paravisor-specific one makes sense.

I'm good with that. I'll use HAS_EMULATED_IOAPIC in v3.

Michael