On Fri, Feb 10, 2023, Dave Hansen wrote: > On 2/10/23 11:36, Borislav Petkov wrote: > >> One approach is to go with the individual device attributes for now.>> If the list does grow significantly, there will probably be patterns > >> or groupings that we can't discern now. We could restructure into > >> larger buckets at that point based on those patterns/groupings. > > There's a reason the word "platform" is in cc_platform_has(). Initially > > we wanted to distinguish attributes of the different platforms. So even > > if y'all don't like CC_ATTR_PARAVISOR, that is what distinguishes this > > platform and it *is* one platform. > > > > So call it CC_ATTR_SEV_VTOM as it uses that technology or whatever. But > > call it like the platform, not to mean "I need this functionality". > > I can live with that. There's already a CC_ATTR_GUEST_SEV_SNP, so it > would at least not be too much of a break from what we already have. I'm fine with CC_ATTR_SEV_VTOM, assuming the proposal is to have something like: static inline bool is_address_range_private(resource_size_t addr) { if (cc_platform_has(CC_ATTR_SEV_VTOM)) return is_address_below_vtom(addr); return false; } i.e. not have SEV_VTOM mean "I/O APIC and vTPM are private". Though I don't see the point in making it SEV vTOM specific or using a flag. Despite what any of us think about TDX paravisors, it's completely doable within the confines of TDX to have an emulated device reside in the private address space. E.g. why not something like this? static inline bool is_address_range_private(resource_size_t addr) { return addr < cc_platform_private_end; } where SEV fills in "cc_platform_private_end" when vTOM is enabled, and TDX does the same. Or wrap cc_platform_private_end in a helper, etc.