On Thu, Apr 21, 2022 at 07:53:39AM -0700, Sathyanarayanan Kuppuswamy <sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx> wrote: > On 4/20/22 11:57 PM, Isaku Yamahata wrote: > > On Wed, Apr 20, 2022 at 07:42:06PM -0700, > > Sathyanarayanan Kuppuswamy <sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx> wrote: > > > > TDG.VP.VMCALL<GetQuote> API allows one TD to issue multiple requests. It's > > implementation specific that how many concurrent requests are allowed. The TD > > should be able to handle TDG.VP.VMCALL_RETRY if it chooses to issue multiple > > requests simultaneously > > Do you know why we should handle VMCALL_RETRY case? IIUC, as per > above spec, if each request we send uses different GPA buffer, then we > should not even worry about checking for IN_FLIGHT status. right? Not correct. User space VMM, e.g. qemu, may return RETRY error for various reasons even if different GPAs are used or even if only single request is issued at the same time. Other user space VMM (there are severals alternatives to qemu) would support TDX in future. They would choose different way to implement. Attestation driver should check IN_FLIGHT always before processing shared GPA. Interrupt notifies only that it needs attention from attestation driver. It doesn't guarantee that IN_FLIGHT is cleared. Interrupt indicates only that the state may be changed. It may not be changed. VMM inject the iterrupt spuriously. -- Isaku Yamahata <isaku.yamahata@xxxxxxxxx>