]> Git Repo - qemu.git/blame - include/hw/virtio/virtio-rng.h
virtio-scsi: fix with -M pc-i440fx-2.0
[qemu.git] / include / hw / virtio / virtio-rng.h
CommitLineData
16c915ba
AS
1/*
2 * Virtio RNG Support
3 *
4 * Copyright Red Hat, Inc. 2012
5 * Copyright Amit Shah <[email protected]>
6 *
7 * This work is licensed under the terms of the GNU GPL, version 2 or
8 * (at your option) any later version. See the COPYING file in the
9 * top-level directory.
10 */
11
12#ifndef _QEMU_VIRTIO_RNG_H
13#define _QEMU_VIRTIO_RNG_H
14
dccfcd0e
PB
15#include "sysemu/rng.h"
16#include "sysemu/rng-random.h"
16c915ba 17
6eac8aec
FK
18#define TYPE_VIRTIO_RNG "virtio-rng-device"
19#define VIRTIO_RNG(obj) \
20 OBJECT_CHECK(VirtIORNG, (obj), TYPE_VIRTIO_RNG)
a8d57dfb
AF
21#define VIRTIO_RNG_GET_PARENT_CLASS(obj) \
22 OBJECT_GET_PARENT_CLASS(obj, TYPE_VIRTIO_RNG)
6eac8aec 23
16c915ba
AS
24/* The Virtio ID for the virtio rng device */
25#define VIRTIO_ID_RNG 4
26
27struct VirtIORNGConf {
28 RngBackend *rng;
904d6f58
AL
29 uint64_t max_bytes;
30 uint32_t period_ms;
500054f1 31 RndRandom *default_backend;
16c915ba
AS
32};
33
f1b24e84 34typedef struct VirtIORNG {
611aa333 35 VirtIODevice parent_obj;
f1b24e84 36
f1b24e84
FK
37 /* Only one vq - guest puts buffer(s) on it when it needs entropy */
38 VirtQueue *vq;
39
af1a8ad6 40 VirtIORNGConf conf;
f1b24e84
FK
41
42 RngBackend *rng;
43
44 /* We purposefully don't migrate this state. The quota will reset on the
45 * destination as a result. Rate limiting is host state, not guest state.
46 */
47 QEMUTimer *rate_limit_timer;
48 int64_t quota_remaining;
49} VirtIORNG;
50
6eac8aec
FK
51/* Set a default rate limit of 2^47 bytes per minute or roughly 2TB/s. If
52 you have an entropy source capable of generating more entropy than this
53 and you can pass it through via virtio-rng, then hats off to you. Until
54 then, this is unlimited for all practical purposes.
55*/
56#define DEFINE_VIRTIO_RNG_PROPERTIES(_state, _conf_field) \
57 DEFINE_PROP_UINT64("max-bytes", _state, _conf_field.max_bytes, \
58 INT64_MAX), \
59 DEFINE_PROP_UINT32("period", _state, _conf_field.period_ms, 1 << 16)
60
16c915ba 61#endif
This page took 0.167709 seconds and 4 git commands to generate.