Zachary Amsden wrote:
> Failing to patch because not enough space is available for a call or jump
> or because the site clobbers do not allow the target clobbers to fit is
> a fatal error; it means the kernel can not be properly virtualized.
>   

No, that doesn't follow.  If the original site was:

patchable_start:
    push %eax
    push %ecx
    push %edx
    call *paravirt_ops + thingy
    pop
    pop
    pop
patchable_end:

then its perfectly OK to leave it as-is, even if the direct call's
destination clobbers are mismatched.  If the patcher wants to generate a
call to a C function in a context which can't deal with normal C calling
conventions, then it needs to also patch in appropriate save/restores.

    J
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/virtualization

Reply via email to