#include "qemu/osdep.h"
-#include "exec/confidential-guest-support.h"
+#include "system/confidential-guest-support.h"
OBJECT_DEFINE_ABSTRACT_TYPE(ConfidentialGuestSupport,
confidential_guest_support,
#include "hw/pci/pci_bridge.h"
#include "hw/mem/nvdimm.h"
#include "migration/global_state.h"
-#include "exec/confidential-guest-support.h"
+#include "system/confidential-guest-support.h"
#include "hw/virtio/virtio-pci.h"
#include "hw/virtio/virtio-net.h"
#include "hw/virtio/virtio-iommu.h"
#include "qom/object_interfaces.h"
#include "system/kvm.h"
#include "migration/blocker.h"
-#include "exec/confidential-guest-support.h"
+#include "system/confidential-guest-support.h"
#define TYPE_PEF_GUEST "pef-guest"
OBJECT_DECLARE_SIMPLE_TYPE(PefGuest, PEF_GUEST)
#include "hw/virtio/vhost-scsi-common.h"
#include "exec/ram_addr.h"
-#include "exec/confidential-guest-support.h"
+#include "system/confidential-guest-support.h"
#include "hw/usb.h"
#include "qemu/config-file.h"
#include "qemu/error-report.h"
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "exec/ram_addr.h"
-#include "exec/confidential-guest-support.h"
+#include "system/confidential-guest-support.h"
#include "hw/boards.h"
#include "hw/s390x/s390-virtio-hcall.h"
#include "hw/s390x/sclp.h"
+++ /dev/null
-/*
- * QEMU Confidential Guest support
- * This interface describes the common pieces between various
- * schemes for protecting guest memory or other state against a
- * compromised hypervisor. This includes memory encryption (AMD's
- * SEV and Intel's MKTME) or special protection modes (PEF on POWER,
- * or PV on s390x).
- *
- * Copyright Red Hat.
- *
- * Authors:
- * David Gibson <david@gibson.dropbear.id.au>
- *
- * This work is licensed under the terms of the GNU GPL, version 2 or
- * later. See the COPYING file in the top-level directory.
- *
- */
-#ifndef QEMU_CONFIDENTIAL_GUEST_SUPPORT_H
-#define QEMU_CONFIDENTIAL_GUEST_SUPPORT_H
-
-#ifndef CONFIG_USER_ONLY
-
-#include "qom/object.h"
-
-#define TYPE_CONFIDENTIAL_GUEST_SUPPORT "confidential-guest-support"
-OBJECT_DECLARE_TYPE(ConfidentialGuestSupport,
- ConfidentialGuestSupportClass,
- CONFIDENTIAL_GUEST_SUPPORT)
-
-
-struct ConfidentialGuestSupport {
- Object parent;
-
- /*
- * True if the machine should use guest_memfd for RAM.
- */
- bool require_guest_memfd;
-
- /*
- * ready: flag set by CGS initialization code once it's ready to
- * start executing instructions in a potentially-secure
- * guest
- *
- * The definition here is a bit fuzzy, because this is essentially
- * part of a self-sanity-check, rather than a strict mechanism.
- *
- * It's not feasible to have a single point in the common machine
- * init path to configure confidential guest support, because
- * different mechanisms have different interdependencies requiring
- * initialization in different places, often in arch or machine
- * type specific code. It's also usually not possible to check
- * for invalid configurations until that initialization code.
- * That means it would be very easy to have a bug allowing CGS
- * init to be bypassed entirely in certain configurations.
- *
- * Silently ignoring a requested security feature would be bad, so
- * to avoid that we check late in init that this 'ready' flag is
- * set if CGS was requested. If the CGS init hasn't happened, and
- * so 'ready' is not set, we'll abort.
- */
- bool ready;
-};
-
-typedef struct ConfidentialGuestSupportClass {
- ObjectClass parent;
-
- int (*kvm_init)(ConfidentialGuestSupport *cgs, Error **errp);
- int (*kvm_reset)(ConfidentialGuestSupport *cgs, Error **errp);
-} ConfidentialGuestSupportClass;
-
-static inline int confidential_guest_kvm_init(ConfidentialGuestSupport *cgs,
- Error **errp)
-{
- ConfidentialGuestSupportClass *klass;
-
- klass = CONFIDENTIAL_GUEST_SUPPORT_GET_CLASS(cgs);
- if (klass->kvm_init) {
- return klass->kvm_init(cgs, errp);
- }
-
- return 0;
-}
-
-static inline int confidential_guest_kvm_reset(ConfidentialGuestSupport *cgs,
- Error **errp)
-{
- ConfidentialGuestSupportClass *klass;
-
- klass = CONFIDENTIAL_GUEST_SUPPORT_GET_CLASS(cgs);
- if (klass->kvm_reset) {
- return klass->kvm_reset(cgs, errp);
- }
-
- return 0;
-}
-
-#endif /* !CONFIG_USER_ONLY */
-
-#endif /* QEMU_CONFIDENTIAL_GUEST_SUPPORT_H */
--- /dev/null
+/*
+ * QEMU Confidential Guest support
+ * This interface describes the common pieces between various
+ * schemes for protecting guest memory or other state against a
+ * compromised hypervisor. This includes memory encryption (AMD's
+ * SEV and Intel's MKTME) or special protection modes (PEF on POWER,
+ * or PV on s390x).
+ *
+ * Copyright Red Hat.
+ *
+ * Authors:
+ * David Gibson <david@gibson.dropbear.id.au>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or
+ * later. See the COPYING file in the top-level directory.
+ *
+ */
+#ifndef QEMU_CONFIDENTIAL_GUEST_SUPPORT_H
+#define QEMU_CONFIDENTIAL_GUEST_SUPPORT_H
+
+#ifdef CONFIG_USER_ONLY
+#error Cannot include system/confidential-guest-support.h from user emulation
+#endif
+
+#include "qom/object.h"
+
+#define TYPE_CONFIDENTIAL_GUEST_SUPPORT "confidential-guest-support"
+OBJECT_DECLARE_TYPE(ConfidentialGuestSupport,
+ ConfidentialGuestSupportClass,
+ CONFIDENTIAL_GUEST_SUPPORT)
+
+
+struct ConfidentialGuestSupport {
+ Object parent;
+
+ /*
+ * True if the machine should use guest_memfd for RAM.
+ */
+ bool require_guest_memfd;
+
+ /*
+ * ready: flag set by CGS initialization code once it's ready to
+ * start executing instructions in a potentially-secure
+ * guest
+ *
+ * The definition here is a bit fuzzy, because this is essentially
+ * part of a self-sanity-check, rather than a strict mechanism.
+ *
+ * It's not feasible to have a single point in the common machine
+ * init path to configure confidential guest support, because
+ * different mechanisms have different interdependencies requiring
+ * initialization in different places, often in arch or machine
+ * type specific code. It's also usually not possible to check
+ * for invalid configurations until that initialization code.
+ * That means it would be very easy to have a bug allowing CGS
+ * init to be bypassed entirely in certain configurations.
+ *
+ * Silently ignoring a requested security feature would be bad, so
+ * to avoid that we check late in init that this 'ready' flag is
+ * set if CGS was requested. If the CGS init hasn't happened, and
+ * so 'ready' is not set, we'll abort.
+ */
+ bool ready;
+};
+
+typedef struct ConfidentialGuestSupportClass {
+ ObjectClass parent;
+
+ int (*kvm_init)(ConfidentialGuestSupport *cgs, Error **errp);
+ int (*kvm_reset)(ConfidentialGuestSupport *cgs, Error **errp);
+} ConfidentialGuestSupportClass;
+
+static inline int confidential_guest_kvm_init(ConfidentialGuestSupport *cgs,
+ Error **errp)
+{
+ ConfidentialGuestSupportClass *klass;
+
+ klass = CONFIDENTIAL_GUEST_SUPPORT_GET_CLASS(cgs);
+ if (klass->kvm_init) {
+ return klass->kvm_init(cgs, errp);
+ }
+
+ return 0;
+}
+
+static inline int confidential_guest_kvm_reset(ConfidentialGuestSupport *cgs,
+ Error **errp)
+{
+ ConfidentialGuestSupportClass *klass;
+
+ klass = CONFIDENTIAL_GUEST_SUPPORT_GET_CLASS(cgs);
+ if (klass->kvm_reset) {
+ return klass->kvm_reset(cgs, errp);
+ }
+
+ return 0;
+}
+
+#endif /* QEMU_CONFIDENTIAL_GUEST_SUPPORT_H */
#include "qemu/plugin.h"
#include "qemu/queue.h"
#include "system/arch_init.h"
-#include "exec/confidential-guest-support.h"
+#include "system/confidential-guest-support.h"
#include "ui/qemu-spice.h"
#include "qapi/string-input-visitor.h"
#include "qom/object.h"
-#include "exec/confidential-guest-support.h"
+#include "system/confidential-guest-support.h"
#define TYPE_X86_CONFIDENTIAL_GUEST "x86-confidential-guest"
#include "system/kvm.h"
#include "system/cpus.h"
#include "qom/object_interfaces.h"
-#include "exec/confidential-guest-support.h"
+#include "system/confidential-guest-support.h"
#include "hw/s390x/ipl.h"
#include "hw/s390x/sclp.h"
#include "target/s390x/kvm/kvm_s390x.h"