Cedric Xing wrote:Yes, -EBUSY should never happen with proper locking, which however is implemented in the upper layer.
Return `-EBUSY` from tdx_mcall_get_report0() when `TDG.MR.REPORT` returns
`TDCALL_OPERAND_BUSY`. This enables the caller to retry obtaining a
TDREPORT later if another VCPU is extending an RTMR concurrently.
Can this not be prevented by proper locking? Otherwise this type of
collision sounds like a kernel bug, not something that should escape to
userspace.
I.e. userspace can not reasonably know when it is safe to retry, so taketdx-guest does WARN() on errors. There are no other users of this function currently. Returning an error, however, will allow different error handling in the future (e.g., retry instead of WARN on -EBUSY).
locks to ensure forward progress.