On Tue, 2 Mar 2021, Alexey Kardashevskiy wrote:
On 02/03/2021 14:35, David Gibson wrote:
Alexey or Zoltan, any thoughts on how non-PAPR versions of this would
call into qemu to get the non-guest parts of VOF to execute?
Non-PAPR could do it as we do it for soft breakpoints in KVM - some
predefined illegal instruction which KVM knows that it is used for soft
breakpoints.
So far I've thought I'd need to implement TYPE_PPC_VIRTUAL_HYPERVISOR
interface in the machine for the code in target/ppc/excp_helper.c to
forward client syscalls to QEMU where I could handle the VOF related calls
but not sure this is the best way. This could be OK for the initial boot
when nothing else should use syscalls yet but with RTAS this may not work
as the guest OS could also use syscalls so to avoid conflicts we may need
to shut down the virtual hypervisor on quiesce which means I may need a
minimal guest only rtas for pegasos2 (which would be OK as I think it's
only used for shutdown/reboot anyway). Also may need some changes to allow
empty callbacks in vhyp to be ignored when I only want to implement
hypercall method but that's just adding checks to only call non-NULL
callbacks in PPCVirtualHypervisorClass.
There's also an old patch from Benjamin Herrenschmidt to add MOL OSI which
is a similar hypercall interface:
https://github.com/ozbenh/qemu/commit/6dc8803641e323030ffd01ad8ce0dcf081896698
This might also be useful later to use MOL paravirtual drivers to speed up
MacOSX emulation. but I haven't looked at the details yet.
Any other ideas?
Regards,
BALATON Zoltan