Re: [PATCH v3 17/28] hw/xen: add support for Xen primary console in emulated mode

Durrant, Paul
2023-10-27T07:44:55Z

On 25/10/2023 15:50, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> The primary console is special because the toolstack maps a page into
> the guest for its ring, and also allocates the guest-side event channel.
> The guest's grant table is even primed to export that page using a known
> grant ref#. Add support for all that in emulated mode, so that we can
> have a primary console.
>
> For reasons unclear, the backends running under real Xen don't just use
> a mapping of the well-known GNTTAB_RESERVED_CONSOLE grant ref (which
> would also be in the ring-ref node in XenStore). Instead, the toolstack
> sets the ring-ref node of the primary console to the GFN of the guest
> page. The backend is expected to handle that special case and map it
> with foreignmem operations instead.
>
> We don't have an implementation of foreignmem ops for emulated Xen mode,
> so just make it map GNTTAB_RESERVED_CONSOLE instead. This would probably
> work for real Xen too, but we can't work out how to make real Xen create
> a primary console of type "ioemu" to make QEMU drive it, so we can't
> test that; might as well leave it as it is for now under Xen.
>
> Now at last we can boot the Xen PV shim and run PV kernels in QEMU.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/char/xen_console.c | 78 ++++++++----
> hw/i386/kvm/meson.build | 1 +
> hw/i386/kvm/trace-events | 2 +
> hw/i386/kvm/xen-stubs.c | 8 ++
> hw/i386/kvm/xen_gnttab.c | 7 +-
> hw/i386/kvm/xen_primary_console.c | 193 ++++++++++++++++++++++++++++++
> hw/i386/kvm/xen_primary_console.h | 23 ++++
> hw/i386/kvm/xen_xenstore.c | 10 ++
> hw/xen/xen-bus.c | 5 +
> include/hw/xen/xen-bus.h | 1 +
> target/i386/kvm/xen-emu.c | 23 +++-
> 11 files changed, 328 insertions(+), 23 deletions(-)
> create mode 100644 hw/i386/kvm/xen_primary_console.c
> create mode 100644 hw/i386/kvm/xen_primary_console.h
>

Reviewed-by: Paul Durrant <paul@xen.org>