On Thu, 2020-12-10 at 08:46 +0800, Lu Baolu wrote:
+/*
+ * We want to figure out which context we are running in. But the hardware
+ * does not introduce a reliable way (instruction, CPUID leaf, MSR, whatever)
+ * which can be manipulated by the VMM to let the OS figure out where it runs.
+ * So we go with the below probably_on_bare_metal() function as a replacement
+ * for definitely_on_bare_metal() to go forward only for the very simple reason
+ * that this is the only option we have.
+ */
+static const char * const possible_vmm_vendor_name[] = {
+ "QEMU", "Bochs", "KVM", "Xen", "VMware", "VMW", "VMware Inc.",
+ "innotek GmbH", "Oracle Corporation", "Parallels", "BHYVE",
+ "Microsoft Corporation"
+};
People do use SeaBIOS ("Bochs") on bare metal.
You'll also see "Amazon EC2" on virt instances as well as bare metal
instances. Although in that case I believe the virt instances do have
the 'virtual machine' flag set in bit 4 of the BIOS Characteristics
Extension Byte 2, and the bare metal obviously don't.