audk/OvmfPkg/CloudHv
Michael Kubacki fe6cd1c187 OvmfPkg: Add varpolicy shell command
Adds the varpolicy EFI shell command to all DSC files that
currently include other dynamic shell commands from ShellPkg.

This command allows variable policies to be dumped in the EFI
shell for convenient auditing and debug.

Use the command in QEMU EFI shell as follows:

- `"varpolicy"` dumps platform variables
- `"varpolicy -?"` shows help text
- `"varpolicy -b"` pages output as expected
- `"varpolicy -s"` shows accurate variable statistic information
- `"varpolicy -p"` shows accurate UEFI variable policy information
- `"varpolicy-v -b"` dumps all information including variable data hex dump

Cc: Anatol Belski <anbelski@linux.microsoft.com>
Cc: Anthony Perard <anthony.perard@citrix.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jianyong Wu <jianyong.wu@arm.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Julien Grall <julien@xen.org>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Acked-by: Jiewen Yao <Jiewen.yao@intel.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
Message-Id: <20231030203112.736-4-mikuback@linux.microsoft.com>
2023-10-31 14:40:50 +00:00
..
CloudHvDefines.fdf.inc OvmfPkg: CloudHv: Fix FW_BASE_ADDRESS 2022-06-03 10:51:26 +00:00
CloudHvElfHeader.fdf.inc OvmfPkg: Generate CloudHv as a PVH ELF binary 2022-03-04 02:41:57 +00:00
CloudHvX64.dsc OvmfPkg: Add varpolicy shell command 2023-10-31 14:40:50 +00:00
CloudHvX64.fdf OvmfPkg/CloudHv: Replace the OVMF-specific SataControllerDxe 2023-06-01 18:08:33 +00:00
README OvmfPkg: CloudHv: Add README 2022-03-04 02:41:57 +00:00

README

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.


CloudHv is a port of OVMF for the Cloud Hypervisor project.

The Cloud Hypervisor project
----------------------------

Cloud Hypervisor is a Virtual Machine Monitor that runs on top of KVM. The
project focuses on exclusively running modern, cloud workloads, on top of a
limited set of hardware architectures and platforms. Cloud workloads refers to
those that are usually run by customers inside a cloud provider. This means
modern operating systems with most I/O handled by paravirtualised devices
(i.e. virtio), no requirement for legacy devices, and 64-bit CPUs.

https://github.com/cloud-hypervisor/cloud-hypervisor

Design
------

Based on Cloud Hypervisor's motto to reduce the emulation as much as possible,
the project logically decided to support the PVH boot specification as the only
way of booting virtual machines. That includes both direct kernel boot and OVMF
firmware which must be generated as PVH ELF binaries.
PVH allows information like location of ACPI tables and location of guest RAM
ranges to be shared without the need of an extra emulated device like a CMOS.

Features
--------

* Serial console
* EFI shell
* virtio-pci

Build
-----

The way to build the CloudHv target is as follows:

OvmfPkg/build.sh -p OvmfPkg/CloudHv/CloudHvX64.dsc -a X64 -b DEBUG

Usage
-----

Assuming Cloud Hypervisor is already built, one can start a virtual machine as
follows:

./cloud-hypervisor \
    --cpus boot=1 \
    --memory size=1G \
    --kernel Build/CloudHvX64/DEBUG_GCC5/FV/CLOUDHV.fd \
    --disk path=/path/to/disk.raw

Releases
--------

In edk2-stable202202, CloudHv is generated as data-only binary.
Starting with edk2-stable202205, CloudHv is generated as a PVH ELF binary to
reduce the amount of emulation needed from Cloud Hypervisor.
For TDX, things are handled differently and PVH is not used, which is why the
firmware is always generated as a data-only binary.

+-------------------+----------------+
|                   |    CloudHv     |
+-------------------+----------------+
| edk2-stable202202 | Data binary    |
+-------------------+----------------+
| edk2-stable202205 | PVH ELF binary |
+-------------------+----------------+