xref: /qemu/include/hw/s390x/storage-keys.h (revision a489d1951cd9cc91c5954214fcf6ae0f9d2d4292)
10efe406cSJason J. Herne /*
20efe406cSJason J. Herne  * s390 storage key device
30efe406cSJason J. Herne  *
40efe406cSJason J. Herne  * Copyright 2015 IBM Corp.
50efe406cSJason J. Herne  * Author(s): Jason J. Herne <jjherne@linux.vnet.ibm.com>
60efe406cSJason J. Herne  *
70efe406cSJason J. Herne  * This work is licensed under the terms of the GNU GPL, version 2 or (at
80efe406cSJason J. Herne  * your option) any later version. See the COPYING file in the top-level
90efe406cSJason J. Herne  * directory.
100efe406cSJason J. Herne  */
110efe406cSJason J. Herne 
122a6a4076SMarkus Armbruster #ifndef S390_STORAGE_KEYS_H
132a6a4076SMarkus Armbruster #define S390_STORAGE_KEYS_H
140efe406cSJason J. Herne 
15a27bd6c7SMarkus Armbruster #include "hw/qdev-core.h"
16a4538a5cSJason J. Herne #include "monitor/monitor.h"
17db1015e9SEduardo Habkost #include "qom/object.h"
180efe406cSJason J. Herne 
190efe406cSJason J. Herne #define TYPE_S390_SKEYS "s390-skeys"
20*a489d195SEduardo Habkost OBJECT_DECLARE_TYPE(S390SKeysState, S390SKeysClass, S390_SKEYS)
210efe406cSJason J. Herne 
22db1015e9SEduardo Habkost struct S390SKeysState {
230efe406cSJason J. Herne     DeviceState parent_obj;
249ef40173SJason J. Herne     bool migration_enabled;
250efe406cSJason J. Herne 
26db1015e9SEduardo Habkost };
270efe406cSJason J. Herne 
280efe406cSJason J. Herne 
29db1015e9SEduardo Habkost struct S390SKeysClass {
300efe406cSJason J. Herne     DeviceClass parent_class;
310efe406cSJason J. Herne     int (*skeys_enabled)(S390SKeysState *ks);
320efe406cSJason J. Herne     int (*get_skeys)(S390SKeysState *ks, uint64_t start_gfn, uint64_t count,
330efe406cSJason J. Herne                      uint8_t *keys);
340efe406cSJason J. Herne     int (*set_skeys)(S390SKeysState *ks, uint64_t start_gfn, uint64_t count,
350efe406cSJason J. Herne                      uint8_t *keys);
36db1015e9SEduardo Habkost };
370efe406cSJason J. Herne 
380efe406cSJason J. Herne #define TYPE_KVM_S390_SKEYS "s390-skeys-kvm"
390efe406cSJason J. Herne #define TYPE_QEMU_S390_SKEYS "s390-skeys-qemu"
40db1015e9SEduardo Habkost typedef struct QEMUS390SKeysState QEMUS390SKeysState;
418110fa1dSEduardo Habkost DECLARE_INSTANCE_CHECKER(QEMUS390SKeysState, QEMU_S390_SKEYS,
428110fa1dSEduardo Habkost                          TYPE_QEMU_S390_SKEYS)
430efe406cSJason J. Herne 
44db1015e9SEduardo Habkost struct QEMUS390SKeysState {
450efe406cSJason J. Herne     S390SKeysState parent_obj;
460efe406cSJason J. Herne     uint8_t *keydata;
470efe406cSJason J. Herne     uint32_t key_count;
48db1015e9SEduardo Habkost };
490efe406cSJason J. Herne 
500efe406cSJason J. Herne void s390_skeys_init(void);
510efe406cSJason J. Herne 
520efe406cSJason J. Herne S390SKeysState *s390_get_skeys_device(void);
530efe406cSJason J. Herne 
54a4538a5cSJason J. Herne void hmp_dump_skeys(Monitor *mon, const QDict *qdict);
55a08f0081SJason J. Herne void hmp_info_skeys(Monitor *mon, const QDict *qdict);
56a08f0081SJason J. Herne 
572a6a4076SMarkus Armbruster #endif /* S390_STORAGE_KEYS_H */
58