Re: [PATCH 09/21] KVM: TDX: Retry seamcall when TDX_OPERAND_BUSY with operand SEPT

From: Edgecombe, Rick P
Date: Mon Oct 14 2024 - 21:24:36 EST


On Tue, 2024-10-15 at 12:03 +1300, Huang, Kai wrote:
> > "Is going to", as in "will be changed to"? Or "does today"?
>
> Will be changed to (today's behaviour is to go back to guest to let the
> fault happen again to retry).
>
> AFAICT this is what Sean suggested:
>
> https://lore.kernel.org/all/ZuR09EqzU1WbQYGd@xxxxxxxxxx/
>
> The whole point is to let KVM loop internally but not go back to guest
> when the fault handler sees a frozen PTE.  And in this proposal this
> applies to both leaf and non-leaf PTEs IIUC, so it should handle the
> case where try_cmpxchg64() fails as mentioned by Yan.
>
> >
> > > retry internally for
> > > step 4 (retries N times) because it sees the frozen PTE, but will never go
> > > back
> > > to guest after the fault is resolved?  How can step 4 triggers zero-step?
> >
> > Step 3-4 is saying it will go back to the guest and fault again.
>
> As said above, the whole point is to make KVM loop internally when it
> sees a frozen PTE, but not go back to guest.

Yea, I was saying on that idea that I thought looping forever without checking
for a signal would be problematic. Then userspace could re-enter the TD. I don't
know if it's a show stopper.

In any case the discussion between these threads and LPC/KVM forum hallway
chatter has gotten a bit fragmented. I don't think there is any concrete
consensus solution at this point.