xref: /qemu/include/hw/virtio/virtio-rng.h (revision dccfcd0e5f8f37360ebda11ccc4dab164c04d5a3)
116c915baSAmit Shah /*
216c915baSAmit Shah  * Virtio RNG Support
316c915baSAmit Shah  *
416c915baSAmit Shah  * Copyright Red Hat, Inc. 2012
516c915baSAmit Shah  * Copyright Amit Shah <amit.shah@redhat.com>
616c915baSAmit Shah  *
716c915baSAmit Shah  * This work is licensed under the terms of the GNU GPL, version 2 or
816c915baSAmit Shah  * (at your option) any later version.  See the COPYING file in the
916c915baSAmit Shah  * top-level directory.
1016c915baSAmit Shah  */
1116c915baSAmit Shah 
1216c915baSAmit Shah #ifndef _QEMU_VIRTIO_RNG_H
1316c915baSAmit Shah #define _QEMU_VIRTIO_RNG_H
1416c915baSAmit Shah 
15*dccfcd0eSPaolo Bonzini #include "sysemu/rng.h"
16*dccfcd0eSPaolo Bonzini #include "sysemu/rng-random.h"
1716c915baSAmit Shah 
1816c915baSAmit Shah /* The Virtio ID for the virtio rng device */
1916c915baSAmit Shah #define VIRTIO_ID_RNG    4
2016c915baSAmit Shah 
2116c915baSAmit Shah struct VirtIORNGConf {
2216c915baSAmit Shah     RngBackend *rng;
23904d6f58SAnthony Liguori     uint64_t max_bytes;
24904d6f58SAnthony Liguori     uint32_t period_ms;
25500054f1SAnthony Liguori     RndRandom *default_backend;
2616c915baSAmit Shah };
2716c915baSAmit Shah 
28f1b24e84SKONRAD Frederic typedef struct VirtIORNG {
29f1b24e84SKONRAD Frederic     VirtIODevice vdev;
30f1b24e84SKONRAD Frederic 
31f1b24e84SKONRAD Frederic     DeviceState *qdev;
32f1b24e84SKONRAD Frederic 
33f1b24e84SKONRAD Frederic     /* Only one vq - guest puts buffer(s) on it when it needs entropy */
34f1b24e84SKONRAD Frederic     VirtQueue *vq;
35f1b24e84SKONRAD Frederic 
36f1b24e84SKONRAD Frederic     VirtIORNGConf *conf;
37f1b24e84SKONRAD Frederic 
38f1b24e84SKONRAD Frederic     RngBackend *rng;
39f1b24e84SKONRAD Frederic 
40f1b24e84SKONRAD Frederic     /* We purposefully don't migrate this state.  The quota will reset on the
41f1b24e84SKONRAD Frederic      * destination as a result.  Rate limiting is host state, not guest state.
42f1b24e84SKONRAD Frederic      */
43f1b24e84SKONRAD Frederic     QEMUTimer *rate_limit_timer;
44f1b24e84SKONRAD Frederic     int64_t quota_remaining;
45f1b24e84SKONRAD Frederic } VirtIORNG;
46f1b24e84SKONRAD Frederic 
4716c915baSAmit Shah #endif
48