Message ID | 20240419155709.318866-4-jean-philippe@linaro.org |
---|---|
State | New |
Headers | show |
Series | arm: Run CCA VMs with KVM | expand |
On Fri, Apr 19, 2024 at 04:56:50PM +0100, Jean-Philippe Brucker wrote: > Add a new RmeGuest object, inheriting from ConfidentialGuestSupport, to > support the Arm Realm Management Extension (RME). It is instantiated by > passing on the command-line: > > -M virt,confidential-guest-support=<id> > -object guest-rme,id=<id>[,options...] How about either "arm-rme" or merely 'rme' as the object name > > This is only the skeleton. Support will be added in following patches. > > Cc: Eric Blake <eblake@redhat.com> > Cc: Markus Armbruster <armbru@redhat.com> > Cc: Daniel P. Berrangé <berrange@redhat.com> > Cc: Eduardo Habkost <eduardo@habkost.net> > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> With regards, Daniel
On Fri, Apr 19, 2024 at 05:25:12PM +0100, Daniel P. Berrangé wrote: > On Fri, Apr 19, 2024 at 04:56:50PM +0100, Jean-Philippe Brucker wrote: > > Add a new RmeGuest object, inheriting from ConfidentialGuestSupport, to > > support the Arm Realm Management Extension (RME). It is instantiated by > > passing on the command-line: > > > > -M virt,confidential-guest-support=<id> > > -object guest-rme,id=<id>[,options...] Hm, the commit message is wrong, it should say "rme-guest". > How about either "arm-rme" or merely 'rme' as the object name I don't feel strongly about the name, but picked this one to be consistent with existing confidential-guest-support objects: sev-guest, pef-guest, s390-pv-guest, and upcoming tdx-guest [1] Thanks, Jean [1] https://lore.kernel.org/qemu-devel/20240229063726.610065-13-xiaoyao.li@intel.com/
On Tue, Apr 23, 2024 at 10:44:56AM +0100, Jean-Philippe Brucker wrote: > On Fri, Apr 19, 2024 at 05:25:12PM +0100, Daniel P. Berrangé wrote: > > On Fri, Apr 19, 2024 at 04:56:50PM +0100, Jean-Philippe Brucker wrote: > > > Add a new RmeGuest object, inheriting from ConfidentialGuestSupport, to > > > support the Arm Realm Management Extension (RME). It is instantiated by > > > passing on the command-line: > > > > > > -M virt,confidential-guest-support=<id> > > > -object guest-rme,id=<id>[,options...] > > Hm, the commit message is wrong, it should say "rme-guest". > > > How about either "arm-rme" or merely 'rme' as the object name > > I don't feel strongly about the name, but picked this one to be consistent > with existing confidential-guest-support objects: sev-guest, pef-guest, > s390-pv-guest, and upcoming tdx-guest [1] Lets stick with 'rme-guest' then. With regards, Daniel
Daniel P. Berrangé <berrange@redhat.com> writes: > On Fri, Apr 19, 2024 at 04:56:50PM +0100, Jean-Philippe Brucker wrote: >> Add a new RmeGuest object, inheriting from ConfidentialGuestSupport, to >> support the Arm Realm Management Extension (RME). It is instantiated by >> passing on the command-line: >> >> -M virt,confidential-guest-support=<id> >> -object guest-rme,id=<id>[,options...] rme-guest Since there are no options so far, I'd omit [,options...] > How about either "arm-rme" or merely 'rme' as the object name "arm-rme" sounds good to me. Need to adjust the various identifiers with "guest" in them, then. >> This is only the skeleton. Support will be added in following patches. >> >> Cc: Eric Blake <eblake@redhat.com> >> Cc: Markus Armbruster <armbru@redhat.com> >> Cc: Daniel P. Berrangé <berrange@redhat.com> >> Cc: Eduardo Habkost <eduardo@habkost.net> >> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> >> Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> QAPI schema Acked-by: Markus Armbruster <armbru@redhat.com>
diff --git a/docs/system/confidential-guest-support.rst b/docs/system/confidential-guest-support.rst index 0c490dbda2..acf46d8856 100644 --- a/docs/system/confidential-guest-support.rst +++ b/docs/system/confidential-guest-support.rst @@ -40,5 +40,6 @@ Currently supported confidential guest mechanisms are: * AMD Secure Encrypted Virtualization (SEV) (see :doc:`i386/amd-memory-encryption`) * POWER Protected Execution Facility (PEF) (see :ref:`power-papr-protected-execution-facility-pef`) * s390x Protected Virtualization (PV) (see :doc:`s390x/protvirt`) +* Arm Realm Management Extension (RME) Other mechanisms may be supported in future. diff --git a/qapi/qom.json b/qapi/qom.json index 85e6b4f84a..623ec8071f 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -996,7 +996,8 @@ 'tls-creds-x509', 'tls-cipher-suites', { 'name': 'x-remote-object', 'features': [ 'unstable' ] }, - { 'name': 'x-vfio-user-server', 'features': [ 'unstable' ] } + { 'name': 'x-vfio-user-server', 'features': [ 'unstable' ] }, + 'rme-guest' ] } ## diff --git a/target/arm/kvm-rme.c b/target/arm/kvm-rme.c new file mode 100644 index 0000000000..960dd75608 --- /dev/null +++ b/target/arm/kvm-rme.c @@ -0,0 +1,46 @@ +/* + * QEMU Arm RME support + * + * Copyright Linaro 2024 + */ + +#include "qemu/osdep.h" + +#include "exec/confidential-guest-support.h" +#include "hw/boards.h" +#include "hw/core/cpu.h" +#include "kvm_arm.h" +#include "migration/blocker.h" +#include "qapi/error.h" +#include "qom/object_interfaces.h" +#include "sysemu/kvm.h" +#include "sysemu/runstate.h" + +#define TYPE_RME_GUEST "rme-guest" +OBJECT_DECLARE_SIMPLE_TYPE(RmeGuest, RME_GUEST) + +struct RmeGuest { + ConfidentialGuestSupport parent_obj; +}; + +static void rme_guest_class_init(ObjectClass *oc, void *data) +{ +} + +static const TypeInfo rme_guest_info = { + .parent = TYPE_CONFIDENTIAL_GUEST_SUPPORT, + .name = TYPE_RME_GUEST, + .instance_size = sizeof(struct RmeGuest), + .class_init = rme_guest_class_init, + .interfaces = (InterfaceInfo[]) { + { TYPE_USER_CREATABLE }, + { } + } +}; + +static void rme_register_types(void) +{ + type_register_static(&rme_guest_info); +} + +type_init(rme_register_types); diff --git a/target/arm/meson.build b/target/arm/meson.build index 2e10464dbb..c610c078f7 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -8,7 +8,12 @@ arm_ss.add(files( )) arm_ss.add(zlib) -arm_ss.add(when: 'CONFIG_KVM', if_true: files('hyp_gdbstub.c', 'kvm.c'), if_false: files('kvm-stub.c')) +arm_ss.add(when: 'CONFIG_KVM', + if_true: files( + 'hyp_gdbstub.c', + 'kvm.c', + 'kvm-rme.c'), + if_false: files('kvm-stub.c')) arm_ss.add(when: 'CONFIG_HVF', if_true: files('hyp_gdbstub.c')) arm_ss.add(when: 'TARGET_AARCH64', if_true: files(