On Fri, Apr 26, 2024, Rick P Edgecombe wrote: > On Fri, 2024-04-26 at 08:39 +0100, Fuad Tabba wrote: > > > I'm fine with those names. Anyway, I'm fine with wither way, two bools or > > > enum. > > > > I don't have a strong opinion, but I'd brought it up in a previous > > patch series. I think that having two bools to encode three states is > > less intuitive and potentially more bug prone, more so than the naming > > itself (i.e., _only): Hmm, yeah, I buy that argument. We could even harded further by poisoning '0' to force KVM to explicitly. Aha! And maybe use a bitmap? enum { BUGGY_KVM_INVALIDATION = 0, PROCESS_SHARED = BIT(0), PROCESS_PRIVATE = BIT(1), PROCESS_PRIVATE_AND_SHARED = PROCESS_SHARED | PROCESS_PRIVATE, }; > > https://lore.kernel.org/all/ZUO1Giju0GkUdF0o@xxxxxxxxxx/ > > Currently in our internal branch we switched to: > exclude_private > exclude_shared > > It came together bettter in the code that uses it. If the choice is between an enum and exclude_*, I would strongly prefer the enum. Using exclude_* results in inverted polarity for the code that triggers invalidations. > But I started to wonder if we actually really need exclude_shared. For TDX > zapping private memory has to be done with more care, because it cannot be re- > populated without guest coordination. But for shared memory if we are zapping a > range that includes both private and shared memory, I don't think it should hurt > to zap the shared memory. Hell no, I am not risking taking on more baggage in KVM where userspace or some other subsystem comes to rely on KVM spuriously zapping SPTEs in response to an unrelated userspace action.