On 27/11/2022 12:22, David Woodhouse wrote:
From: David Woodhouse <dwmw@xxxxxxxxxxxx> Instead of having a completely separate fast path for the case where the guest's runstate_info fits entirely in a page, recognise the similarity. In both cases, the @update_bit pointer points to the byte containing the XEN_RUNSTATE_UPDATE flag directly in the guest, via one of the GPCs. In both cases, the actual guest structure (compat or not) is built up from the fields in @vx, following preset pointers to the state and times fields. The only difference is whether those pointers point to the kernel stack (in the split case) or to guest memory directly via the GPC. We can unify it by just setting the rs_state and rs_times pointers up accordingly for each case. Then the only real difference is that dual memcpy which can be made conditional, so the whole of that separate fast path can go away, disappearing into the slow path without actually doing the slow part. Signed-off-by: David Woodhouse <dwmw@xxxxxxxxxxxx>
Reviewed-by: Paul Durrant <paul@xxxxxxx>