Skip to content

Commit 11a6ed0

Browse files
philmdbonzini
authored andcommitted
target/i386/sev: Move qmp_sev_inject_launch_secret() to sev.c
Move qmp_sev_inject_launch_secret() from monitor.c to sev.c and make sev_inject_launch_secret() static. We don't need the stub anymore, remove it. Previously with binaries built without SEV, management layer was getting an empty response: { "execute": "sev-inject-launch-secret", "arguments": { "packet-header": "mypkt", "secret": "mypass", "gpa": 4294959104 } } { "return": { } } Now the response is explicit, mentioning the feature is disabled: { "execute": "sev-inject-launch-secret", "arguments": { "packet-header": "mypkt", "secret": "mypass", "gpa": 4294959104 } } { "error": { "class": "GenericError", "desc": "this feature or command is not currently supported" } } Reviewed-by: Paolo Bonzini <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Message-Id: <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 3208de1 commit 11a6ed0

File tree

3 files changed

+34
-34
lines changed

3 files changed

+34
-34
lines changed

target/i386/monitor.c

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -732,37 +732,6 @@ SevCapability *qmp_query_sev_capabilities(Error **errp)
732732
return sev_get_capabilities(errp);
733733
}
734734

735-
#define SEV_SECRET_GUID "4c2eb361-7d9b-4cc3-8081-127c90d3d294"
736-
struct sev_secret_area {
737-
uint32_t base;
738-
uint32_t size;
739-
};
740-
741-
void qmp_sev_inject_launch_secret(const char *packet_hdr,
742-
const char *secret,
743-
bool has_gpa, uint64_t gpa,
744-
Error **errp)
745-
{
746-
if (!sev_enabled()) {
747-
error_setg(errp, "SEV not enabled for guest");
748-
return;
749-
}
750-
if (!has_gpa) {
751-
uint8_t *data;
752-
struct sev_secret_area *area;
753-
754-
if (!pc_system_ovmf_table_find(SEV_SECRET_GUID, &data, NULL)) {
755-
error_setg(errp, "SEV: no secret area found in OVMF,"
756-
" gpa must be specified.");
757-
return;
758-
}
759-
area = (struct sev_secret_area *)data;
760-
gpa = area->base;
761-
}
762-
763-
sev_inject_launch_secret(packet_hdr, secret, gpa, errp);
764-
}
765-
766735
SGXInfo *qmp_query_sgx(Error **errp)
767736
{
768737
return sgx_get_info(errp);

target/i386/sev-sysemu-stub.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ SevCapability *sev_get_capabilities(Error **errp)
3333
return NULL;
3434
}
3535

36-
int sev_inject_launch_secret(const char *hdr, const char *secret,
37-
uint64_t gpa, Error **errp)
36+
void qmp_sev_inject_launch_secret(const char *packet_header, const char *secret,
37+
bool has_gpa, uint64_t gpa, Error **errp)
3838
{
39-
return 1;
39+
error_setg(errp, "SEV is not available in this QEMU");
4040
}
4141

4242
int sev_encrypt_flash(uint8_t *ptr, uint64_t len, Error **errp)

target/i386/sev.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -973,6 +973,37 @@ int sev_inject_launch_secret(const char *packet_hdr, const char *secret,
973973
return 0;
974974
}
975975

976+
#define SEV_SECRET_GUID "4c2eb361-7d9b-4cc3-8081-127c90d3d294"
977+
struct sev_secret_area {
978+
uint32_t base;
979+
uint32_t size;
980+
};
981+
982+
void qmp_sev_inject_launch_secret(const char *packet_hdr,
983+
const char *secret,
984+
bool has_gpa, uint64_t gpa,
985+
Error **errp)
986+
{
987+
if (!sev_enabled()) {
988+
error_setg(errp, "SEV not enabled for guest");
989+
return;
990+
}
991+
if (!has_gpa) {
992+
uint8_t *data;
993+
struct sev_secret_area *area;
994+
995+
if (!pc_system_ovmf_table_find(SEV_SECRET_GUID, &data, NULL)) {
996+
error_setg(errp, "SEV: no secret area found in OVMF,"
997+
" gpa must be specified.");
998+
return;
999+
}
1000+
area = (struct sev_secret_area *)data;
1001+
gpa = area->base;
1002+
}
1003+
1004+
sev_inject_launch_secret(packet_hdr, secret, gpa, errp);
1005+
}
1006+
9761007
static int
9771008
sev_es_parse_reset_block(SevInfoBlock *info, uint32_t *addr)
9781009
{

0 commit comments

Comments
 (0)