On 2/13/23 13:44, Jeremi Piotrowski wrote:
Just built a kernel from that tree, and it displays the same behavior. The problem is not that the addresses are wrong, but that the flushes are issued at the wrong time now. At least for what "enlightened NPT TLB flush" requires.
It is not clear to me why HvCallFluyshGuestPhysicalAddressSpace or HvCallFlushGuestPhysicalAddressList would have stricter requirements than a "regular" TLB shootdown using INVEPT.
Can you clarify what you mean by wrong time, preferrably with some kind of sequence of events?
That is, something like CPU 0 Modify EPT from ... to ... CPU 0 call_rcu() to free page table CPU 1 ... which is invalid because ... CPU 0 HvCallFlushGuestPhysicalAddressSpace Paolo