s390x: Info skeys sub-command
Provide an info skeys hmp sub-command to allow the end user to dump a storage key for a given address. This is useful for guest operating system developers. Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com> Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Jason J. Herne <jjherne@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
a4538a5cc5
commit
a08f0081c9
@ -1806,6 +1806,8 @@ show roms
|
||||
show the TPM device
|
||||
@item info memory-devices
|
||||
show the memory devices
|
||||
@item info skeys
|
||||
Display the value of a storage key (s390 only)
|
||||
@end table
|
||||
ETEXI
|
||||
|
||||
|
@ -66,6 +66,29 @@ static void write_keys(QEMUFile *f, uint8_t *keys, uint64_t startgfn,
|
||||
}
|
||||
}
|
||||
|
||||
void hmp_info_skeys(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
S390SKeysState *ss = s390_get_skeys_device();
|
||||
S390SKeysClass *skeyclass = S390_SKEYS_GET_CLASS(ss);
|
||||
uint64_t addr = qdict_get_int(qdict, "addr");
|
||||
uint8_t key;
|
||||
int r;
|
||||
|
||||
/* Quick check to see if guest is using storage keys*/
|
||||
if (!skeyclass->skeys_enabled(ss)) {
|
||||
monitor_printf(mon, "Error: This guest is not using storage keys\n");
|
||||
return;
|
||||
}
|
||||
|
||||
r = skeyclass->get_skeys(ss, addr / TARGET_PAGE_SIZE, 1, &key);
|
||||
if (r < 0) {
|
||||
monitor_printf(mon, "Error: %s\n", strerror(-r));
|
||||
return;
|
||||
}
|
||||
|
||||
monitor_printf(mon, " key: 0x%X\n", key);
|
||||
}
|
||||
|
||||
void hmp_dump_skeys(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
const char *filename = qdict_get_str(qdict, "filename");
|
||||
|
@ -54,4 +54,6 @@ void s390_skeys_init(void);
|
||||
S390SKeysState *s390_get_skeys_device(void);
|
||||
|
||||
void hmp_dump_skeys(Monitor *mon, const QDict *qdict);
|
||||
void hmp_info_skeys(Monitor *mon, const QDict *qdict);
|
||||
|
||||
#endif /* __S390_STORAGE_KEYS_H */
|
||||
|
@ -2881,6 +2881,15 @@ static mon_cmd_t info_cmds[] = {
|
||||
.help = "Show rocker OF-DPA groups",
|
||||
.mhandler.cmd = hmp_rocker_of_dpa_groups,
|
||||
},
|
||||
#if defined(TARGET_S390X)
|
||||
{
|
||||
.name = "skeys",
|
||||
.args_type = "addr:l",
|
||||
.params = "address",
|
||||
.help = "Display the value of a storage key",
|
||||
.mhandler.cmd = hmp_info_skeys,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.name = NULL,
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user