[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: OvmfXen and PVH



Am Mittwoch, 5. Januar 2022, 18:19:19 CET schrieb Anthony PERARD:
On Tue, Jan 04, 2022 at 03:37:12PM +0100, Stefan Kadow wrote:
> Hello,
> I read in an old post from 2019 that the specific OVMF target platform
> OvmfXen can boot in a PVH type domU. And in another old post I read that a
> new console type was built for use with this PVH domUs.
> I was hoping that I could use it to boot Linux PVH DomUs with EFIstub
> kernels or systemd-boot, but I can't get it to work.

Thanks for testing this! Unfortunately, there's still a little bit of
work on the project. OvmfXen doesn't know how to shutdown when run as
PVH yet, and this is checked at boot time so it doesn't even try to boot
the operating system.

> I use a simple pvh-domu.cfg:
> type = "pvh"
> kernel = "/usr/lib/xen/boot/ovmf.bin"
> disk = [...]
> vif = [...]
> ...
>
> In the verbose output of xl toolstack (xl -vvv create -c pvh-domu.cfg) I
> can see that the domU is destroyed right after creation. The same domU
> configuration works as HVM domU and as PVH domU with pygrub bootloader.
I don't know why the guest would be destroyed, is there some information
before that? Maybe `xl` didn't recognized "ovmf.bin" as a PVH "kernel"?

In the issue I've mention above, I think OvmfXen would just run an
infinite loop, so the guess wouldn't be destroyed.
Obviously i misinterpreted the log outputs, because after i installed your patch, the system behaved as you predicted and the log outputs were the same.

> Is there any way to get this to work with Xen 4.16.0?

By hacking OVMF and rebuilding it. Otherwise not really. Sorry.

For you or anyone looking at testing OVMF on PVH, the hack is going to
be:

diff --git a/OvmfPkg/Library/ResetSystemLib/DxeResetShutdown.c
b/OvmfPkg/Library/ResetSystemLib/DxeResetShutdown.c ---
a/OvmfPkg/Library/ResetSystemLib/DxeResetShutdown.c
+++ b/OvmfPkg/Library/ResetSystemLib/DxeResetShutdown.c
@@ -35,9 +35,7 @@ DxeResetInit (
       mAcpiPmBaseAddress = ICH9_PMBASE_VALUE;
       break;
     default:
-      ASSERT (FALSE);
-      CpuDeadLoop ();
-      return EFI_UNSUPPORTED;
+      break;
   }

   return EFI_SUCCESS;


With that, the guest should boot, but shutdown isn't going to work so
one will have to destroy the guest after trying to shutdown.

There's also a build option to have OVMF logging somewhere when run as
PVH, "-D DEBUG_ON_HYPERVISOR_CONSOLE", which would log to the host
serial console. But that might only work with a debug build of xen and
one would probably need a serial port.

Thanks for this patch!
This is a very nice way to boot a pvh type guest, it boots very fast and allows configuring the boot manager inside the guest. I hope that this feature will be included in a future release as soon as possible.

I will try to create a debug build of xen to help test this feature in the future xen release candidate.

--
THX



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.