[PATCH 0/9] xen/x86: PVH Dom0 fixes and fallout adjustments

From: Jan Beulich
Date: Tue Sep 07 2021 - 06:04:42 EST


In order to try to debug hypervisor side breakage from XSA-378 I found
myself urged to finally give PVH Dom0 a try. Sadly things didn't work
quite as expected. In the course of investigating these issues I actually
spotted one piece of PV Dom0 breakage as well, a fix for which is also
included here.

There are two immediate remaining issues (also mentioned in affected
patches):

1) It is not clear to me how PCI device reporting is to work. PV Dom0
reports devices as they're discovered, including ones the hypervisor
may not have been able to discover itself (ones on segments other
than 0 or hotplugged ones). The respective hypercall, however, is
inaccessible to PVH Dom0. Depending on the answer to this, either
the hypervisor will need changing (to permit the call) or patch 2
here will need further refinement.

2) Dom0, unlike in the PV case, cannot access the screen (to use as a
console) when in a non-default mode (i.e. not 80x25 text), as the
necessary information (in particular about VESA-bases LFB modes) is
not communicated. On the hypervisor side this looks like deliberate
behavior, but it is unclear to me what the intentions were towards
an alternative model. (X may be able to access the screen depending
on whether it has a suitable driver besides the presently unusable
/dev/fb<N> based one.)

1: xen/x86: prevent PVH type from getting clobbered
2: xen/x86: allow PVH Dom0 without XEN_PV=y
3: xen/x86: make "earlyprintk=xen" work better for PVH Dom0
4: xen/x86: allow "earlyprintk=xen" to work for PV Dom0
5: xen/x86: make "earlyprintk=xen" work for HVM/PVH DomU
6: xen/x86: generalize preferred console model from PV to PVH Dom0
7: xen/x86: hook up xen_banner() also for PVH
8: x86/PVH: adjust function/data placement
9: xen/x86: adjust data placement

Jan