xref: /qemu/include/hw/s390x/storage-keys.h (revision 0efe406cac8a4d9f0b52eada4c6c2a768fe4b7d2)
1*0efe406cSJason J. Herne /*
2*0efe406cSJason J. Herne  * s390 storage key device
3*0efe406cSJason J. Herne  *
4*0efe406cSJason J. Herne  * Copyright 2015 IBM Corp.
5*0efe406cSJason J. Herne  * Author(s): Jason J. Herne <jjherne@linux.vnet.ibm.com>
6*0efe406cSJason J. Herne  *
7*0efe406cSJason J. Herne  * This work is licensed under the terms of the GNU GPL, version 2 or (at
8*0efe406cSJason J. Herne  * your option) any later version. See the COPYING file in the top-level
9*0efe406cSJason J. Herne  * directory.
10*0efe406cSJason J. Herne  */
11*0efe406cSJason J. Herne 
12*0efe406cSJason J. Herne #ifndef __S390_STORAGE_KEYS_H
13*0efe406cSJason J. Herne #define __S390_STORAGE_KEYS_H
14*0efe406cSJason J. Herne 
15*0efe406cSJason J. Herne #include <hw/qdev.h>
16*0efe406cSJason J. Herne 
17*0efe406cSJason J. Herne #define TYPE_S390_SKEYS "s390-skeys"
18*0efe406cSJason J. Herne #define S390_SKEYS(obj) \
19*0efe406cSJason J. Herne     OBJECT_CHECK(S390SKeysState, (obj), TYPE_S390_SKEYS)
20*0efe406cSJason J. Herne 
21*0efe406cSJason J. Herne typedef struct S390SKeysState {
22*0efe406cSJason J. Herne     DeviceState parent_obj;
23*0efe406cSJason J. Herne 
24*0efe406cSJason J. Herne } S390SKeysState;
25*0efe406cSJason J. Herne 
26*0efe406cSJason J. Herne #define S390_SKEYS_CLASS(klass) \
27*0efe406cSJason J. Herne     OBJECT_CLASS_CHECK(S390SKeysClass, (klass), TYPE_S390_SKEYS)
28*0efe406cSJason J. Herne #define S390_SKEYS_GET_CLASS(obj) \
29*0efe406cSJason J. Herne     OBJECT_GET_CLASS(S390SKeysClass, (obj), TYPE_S390_SKEYS)
30*0efe406cSJason J. Herne 
31*0efe406cSJason J. Herne typedef struct S390SKeysClass {
32*0efe406cSJason J. Herne     DeviceClass parent_class;
33*0efe406cSJason J. Herne     int (*skeys_enabled)(S390SKeysState *ks);
34*0efe406cSJason J. Herne     int (*get_skeys)(S390SKeysState *ks, uint64_t start_gfn, uint64_t count,
35*0efe406cSJason J. Herne                      uint8_t *keys);
36*0efe406cSJason J. Herne     int (*set_skeys)(S390SKeysState *ks, uint64_t start_gfn, uint64_t count,
37*0efe406cSJason J. Herne                      uint8_t *keys);
38*0efe406cSJason J. Herne } S390SKeysClass;
39*0efe406cSJason J. Herne 
40*0efe406cSJason J. Herne #define TYPE_KVM_S390_SKEYS "s390-skeys-kvm"
41*0efe406cSJason J. Herne #define TYPE_QEMU_S390_SKEYS "s390-skeys-qemu"
42*0efe406cSJason J. Herne #define QEMU_S390_SKEYS(obj) \
43*0efe406cSJason J. Herne     OBJECT_CHECK(QEMUS390SKeysState, (obj), TYPE_QEMU_S390_SKEYS)
44*0efe406cSJason J. Herne 
45*0efe406cSJason J. Herne typedef struct QEMUS390SKeysState {
46*0efe406cSJason J. Herne     S390SKeysState parent_obj;
47*0efe406cSJason J. Herne     uint8_t *keydata;
48*0efe406cSJason J. Herne     uint32_t key_count;
49*0efe406cSJason J. Herne } QEMUS390SKeysState;
50*0efe406cSJason J. Herne 
51*0efe406cSJason J. Herne void s390_skeys_init(void);
52*0efe406cSJason J. Herne 
53*0efe406cSJason J. Herne S390SKeysState *s390_get_skeys_device(void);
54*0efe406cSJason J. Herne 
55*0efe406cSJason J. Herne #endif /* __S390_STORAGE_KEYS_H */
56