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