From: Yang Zhong <yang.zhong@intel.com>
To: qemu-devel@nongnu.org
Cc: yang.zhong@intel.com, pbonzini@redhat.com, kai.huang@intel.com,
seanjc@google.com
Subject: [PATCH 31/32] sgx-epc: Add the fill_device_info() callback support
Date: Mon, 19 Apr 2021 18:01:55 +0800 [thread overview]
Message-ID: <20210419100156.53504-32-yang.zhong@intel.com> (raw)
In-Reply-To: <20210419100156.53504-1-yang.zhong@intel.com>
Since there is no fill_device_info() callback support, and when we
execute "info memory-devices" command in the monitor, the segfault
will be found.
This patch will add this callback support and "info memory-devices"
will show sgx epc memory exposed to guest. The result as below:
qemu) info memory-devices
Memory device [sgx-epc]: "epc1"
memaddr: 0x180000000
size: 29360128
memdev: /objects/mem1
Memory device [sgx-epc]: "epc2"
memaddr: 0x181c00000
size: 10485760
memdev: /objects/mem2
Signed-off-by: Yang Zhong <yang.zhong@intel.com>
---
hw/i386/sgx-epc.c | 17 ++++++++++++++++-
monitor/hmp-cmds.c | 10 ++++++++++
qapi/machine.json | 26 +++++++++++++++++++++++++-
3 files changed, 51 insertions(+), 2 deletions(-)
diff --git a/hw/i386/sgx-epc.c b/hw/i386/sgx-epc.c
index 7b198595d5..b1427cd250 100644
--- a/hw/i386/sgx-epc.c
+++ b/hw/i386/sgx-epc.c
@@ -208,7 +208,22 @@ static MemoryRegion *sgx_epc_md_get_memory_region(MemoryDeviceState *md,
static void sgx_epc_md_fill_device_info(const MemoryDeviceState *md,
MemoryDeviceInfo *info)
{
- /* TODO */
+ SgxEPCDeviceInfo *se = g_new0(SgxEPCDeviceInfo, 1);
+ SGXEPCDevice *epc = SGX_EPC(md);
+ const DeviceState *dev = DEVICE(md);
+
+ if (dev->id) {
+ se->has_id = true;
+ se->id = g_strdup(dev->id);
+ }
+
+ se->memaddr = epc->addr;
+ se->size = object_property_get_uint(OBJECT(epc), SGX_EPC_SIZE_PROP,
+ NULL);
+ se->memdev = object_get_canonical_path(OBJECT(epc->hostmem));
+
+ info->u.sgx_epc.data = se;
+ info->type = MEMORY_DEVICE_INFO_KIND_SGX_EPC;
}
static void sgx_epc_class_init(ObjectClass *oc, void *data)
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index bd539e0c1e..974892e73d 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -1819,6 +1819,7 @@ void hmp_info_memory_devices(Monitor *mon, const QDict *qdict)
VirtioMEMDeviceInfo *vmi;
MemoryDeviceInfo *value;
PCDIMMDeviceInfo *di;
+ SgxEPCDeviceInfo *se;
for (info = info_list; info; info = info->next) {
value = info->value;
@@ -1866,6 +1867,15 @@ void hmp_info_memory_devices(Monitor *mon, const QDict *qdict)
vmi->block_size);
monitor_printf(mon, " memdev: %s\n", vmi->memdev);
break;
+ case MEMORY_DEVICE_INFO_KIND_SGX_EPC:
+ se = value->u.sgx_epc.data;
+ monitor_printf(mon, "Memory device [%s]: \"%s\"\n",
+ MemoryDeviceInfoKind_str(value->type),
+ se->id ? se->id : "");
+ monitor_printf(mon, " memaddr: 0x%" PRIx64 "\n", se->memaddr);
+ monitor_printf(mon, " size: %" PRIu64 "\n", se->size);
+ monitor_printf(mon, " memdev: %s\n", se->memdev);
+ break;
default:
g_assert_not_reached();
}
diff --git a/qapi/machine.json b/qapi/machine.json
index 6e90d463fc..3f2c2da92f 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -1184,6 +1184,29 @@
}
}
+##
+# @SgxEPCDeviceInfo:
+#
+# Sgx EPC state information
+#
+# @id: device's ID
+#
+# @memaddr: physical address in memory, where device is mapped
+#
+# @size: size of memory that the device provides
+#
+# @memdev: memory backend linked with device
+#
+# Since: 5.1
+##
+{ 'struct': 'SgxEPCDeviceInfo',
+ 'data': { '*id': 'str',
+ 'memaddr': 'size',
+ 'size': 'size',
+ 'memdev': 'str'
+ }
+}
+
##
# @MemoryDeviceInfo:
#
@@ -1198,7 +1221,8 @@
'data': { 'dimm': 'PCDIMMDeviceInfo',
'nvdimm': 'PCDIMMDeviceInfo',
'virtio-pmem': 'VirtioPMEMDeviceInfo',
- 'virtio-mem': 'VirtioMEMDeviceInfo'
+ 'virtio-mem': 'VirtioMEMDeviceInfo',
+ 'sgx-epc': 'SgxEPCDeviceInfo'
}
}
--
2.29.2.334.gfaefdd61ec
next prev parent reply other threads:[~2021-04-19 10:46 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-19 10:01 [PATCH 00/32] Qemu SGX virtualization Yang Zhong
2021-04-19 10:01 ` [PATCH 01/32] memory: Add RAM_PROTECTED flag to skip IOMMU mappings Yang Zhong
2021-04-19 10:01 ` [PATCH 02/32] hostmem: Add hostmem-epc as a backend for SGX EPC Yang Zhong
2021-04-19 10:01 ` [PATCH 03/32] qom: Add memory-backend-epc ObjectOptions support Yang Zhong
2021-04-19 10:01 ` [PATCH 04/32] i386: Add 'sgx-epc' device to expose EPC sections to guest Yang Zhong
2021-04-19 10:01 ` [PATCH 05/32] vl: Add "sgx-epc" option to expose SGX " Yang Zhong
2021-04-19 10:01 ` [PATCH 06/32] i386: Add primary SGX CPUID and MSR defines Yang Zhong
2021-04-19 10:01 ` [PATCH 07/32] i386: Add SGX CPUID leaf FEAT_SGX_12_0_EAX Yang Zhong
2021-04-19 10:01 ` [PATCH 08/32] i386: Add SGX CPUID leaf FEAT_SGX_12_0_EBX Yang Zhong
2021-04-19 10:01 ` [PATCH 09/32] i386: Add SGX CPUID leaf FEAT_SGX_12_1_EAX Yang Zhong
2021-04-19 10:01 ` [PATCH 10/32] i386: Add get/set/migrate support for SGX_LEPUBKEYHASH MSRs Yang Zhong
2021-04-19 10:01 ` [PATCH 11/32] i386: Add feature control MSR dependency when SGX is enabled Yang Zhong
2021-04-19 10:01 ` [PATCH 12/32] i386: Update SGX CPUID info according to hardware/KVM/user input Yang Zhong
2021-04-19 10:01 ` [PATCH 13/32] linux-headers: Add placeholder for KVM_CAP_SGX_ATTRIBUTE Yang Zhong
2021-04-20 2:08 ` Kai Huang
2021-04-20 2:58 ` Yang Zhong
2021-04-19 10:01 ` [PATCH 14/32] i386: kvm: Add support for exposing PROVISIONKEY to guest Yang Zhong
2021-04-19 10:01 ` [PATCH 15/32] i386: Propagate SGX CPUID sub-leafs to KVM Yang Zhong
2021-04-19 10:01 ` [PATCH 16/32] Adjust min CPUID level to 0x12 when SGX is enabled Yang Zhong
2021-04-19 10:01 ` [PATCH 17/32] hw/i386/fw_cfg: Set SGX bits in feature control fw_cfg accordingly Yang Zhong
2021-04-19 10:01 ` [PATCH 18/32] hw/i386/pc: Account for SGX EPC sections when calculating device memory Yang Zhong
2021-04-19 10:01 ` [PATCH 19/32] i386/pc: Add e820 entry for SGX EPC section(s) Yang Zhong
2021-04-19 10:01 ` [PATCH 20/32] i386: acpi: Add SGX EPC entry to ACPI tables Yang Zhong
2021-04-19 10:01 ` [PATCH 21/32] q35: Add support for SGX EPC Yang Zhong
2021-04-19 10:01 ` [PATCH 22/32] i440fx: " Yang Zhong
2021-04-19 10:01 ` [PATCH 23/32] hostmem: Add the reset interface for EPC backend reset Yang Zhong
2021-04-19 10:01 ` [PATCH 24/32] sgx-epc: Add the reset interface for sgx-epc virt device Yang Zhong
2021-04-19 10:01 ` [PATCH 25/32] qmp: Add query-sgx command Yang Zhong
2021-04-19 10:01 ` [PATCH 26/32] hmp: Add 'info sgx' command Yang Zhong
2021-04-19 10:01 ` [PATCH 27/32] i386: Add sgx_get_info() interface Yang Zhong
2021-04-19 10:01 ` [PATCH 28/32] bitops: Support 32 and 64 bit mask macro Yang Zhong
2021-04-19 10:01 ` [PATCH 29/32] qmp: Add the qmp_query_sgx_capabilities() Yang Zhong
2021-04-19 10:01 ` [PATCH 30/32] Kconfig: Add CONFIG_SGX support Yang Zhong
2021-04-19 10:01 ` Yang Zhong [this message]
2021-04-19 10:01 ` [PATCH 32/32] doc: Add the SGX doc Yang Zhong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210419100156.53504-32-yang.zhong@intel.com \
--to=yang.zhong@intel.com \
--cc=kai.huang@intel.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=seanjc@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.