* [Qemu-devel] [PATCH v8 0/3] rng-builtin: add an RNG backend that uses qemu_guest_getrandom()
@ 2019-08-20 16:06 Laurent Vivier
2019-09-04 12:00 ` [Qemu-devel] [PULL 1/6] " Michael S. Tsirkin
` (3 more replies)
0 siblings, 4 replies; 19+ messages in thread
From: Laurent Vivier @ 2019-08-20 16:06 UTC (permalink / raw)
To: qemu-devel
Cc: Laurent Vivier, Daniel P . Berrangé,
Kashyap Chamarthy, Amit Shah, Richard Henderson,
Richard W . M . Jones, Markus Armbruster, Michael S. Tsirkin
Add a new RNG backend using QEMU builtin getrandom function.
v8: rebase on v4.1
v7: rebase on master
Make rng-builtin asynchronous with QEMUBH (removed existing R-b)
v6: remove "sysemu/rng-random.h" from virtio-rng.c
rebase on qemu_getrandom v8
v5: PATCH 1 s/linux/Linux/
remove superfluous includes from rng-builtin.c
don't update rng-random documentation
add a patch from Markus to keep the default backend out of VirtIORNGConf
move TYPE_RNG_BUILTIN to sysemu/rng.h and remove sysemu/rng-builtin.h
v4: update PATCH 1 commit message
v3: Include Kashyap's patch in the series
Add a patch to change virtio-rng default backend to rng-builtin
v2: Update qemu-options.hx
describe the new backend and specify virtio-rng uses the
rng-random by default
Laurent Vivier (2):
rng-builtin: add an RNG backend that uses qemu_guest_getrandom()
virtio-rng: change default backend to rng-builtin
Markus Armbruster (1):
virtio-rng: Keep the default backend out of VirtIORNGConf
backends/Makefile.objs | 2 +-
backends/rng-builtin.c | 77 ++++++++++++++++++++++++++++++++++
hw/virtio/virtio-rng.c | 19 ++++-----
include/hw/virtio/virtio-rng.h | 2 -
include/sysemu/rng.h | 2 +
qemu-options.hx | 7 ++++
6 files changed, 95 insertions(+), 14 deletions(-)
create mode 100644 backends/rng-builtin.c
--
2.21.0
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v8 1/3] rng-builtin: add an RNG backend that uses qemu_guest_getrandom()
@ 2019-09-04 12:00 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Laurent Vivier @ 2019-08-20 16:06 UTC (permalink / raw)
To: qemu-devel
Cc: Laurent Vivier, Daniel P . Berrangé,
Kashyap Chamarthy, Amit Shah, Richard Henderson,
Richard W . M . Jones, Markus Armbruster, Michael S. Tsirkin
Add a new RNG backend using QEMU builtin getrandom function.
It can be created and used with something like:
... -object rng-builtin,id=rng0 -device virtio-rng,rng=rng0 ...
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
backends/Makefile.objs | 2 +-
backends/rng-builtin.c | 78 ++++++++++++++++++++++++++++++++++++++++++
qemu-options.hx | 7 ++++
3 files changed, 86 insertions(+), 1 deletion(-)
create mode 100644 backends/rng-builtin.c
diff --git a/backends/Makefile.objs b/backends/Makefile.objs
index 981e8e122f2c..f0691116e86e 100644
--- a/backends/Makefile.objs
+++ b/backends/Makefile.objs
@@ -1,4 +1,4 @@
-common-obj-y += rng.o rng-egd.o
+common-obj-y += rng.o rng-egd.o rng-builtin.o
common-obj-$(CONFIG_POSIX) += rng-random.o
common-obj-$(CONFIG_TPM) += tpm.o
diff --git a/backends/rng-builtin.c b/backends/rng-builtin.c
new file mode 100644
index 000000000000..3381d47174df
--- /dev/null
+++ b/backends/rng-builtin.c
@@ -0,0 +1,78 @@
+/*
+ * QEMU Builtin Random Number Generator Backend
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "sysemu/rng.h"
+#include "qemu/main-loop.h"
+#include "qemu/guest-random.h"
+
+#define TYPE_RNG_BUILTIN "rng-builtin"
+#define RNG_BUILTIN(obj) OBJECT_CHECK(RngBuiltin, (obj), TYPE_RNG_BUILTIN)
+
+typedef struct RngBuiltin {
+ RngBackend parent;
+ QEMUBH *bh;
+} RngBuiltin;
+
+static void rng_builtin_receive_entropy_bh(void *opaque)
+{
+ RngBuiltin *s = opaque;
+
+ while (!QSIMPLEQ_EMPTY(&s->parent.requests)) {
+ RngRequest *req = QSIMPLEQ_FIRST(&s->parent.requests);
+
+ qemu_guest_getrandom_nofail(req->data, req->size);
+
+ req->receive_entropy(req->opaque, req->data, req->size);
+
+ rng_backend_finalize_request(&s->parent, req);
+ }
+}
+
+static void rng_builtin_request_entropy(RngBackend *b, RngRequest *req)
+{
+ RngBuiltin *s = RNG_BUILTIN(b);
+
+ qemu_bh_schedule(s->bh);
+}
+
+static void rng_builtin_init(Object *obj)
+{
+ RngBuiltin *s = RNG_BUILTIN(obj);
+
+ s->bh = qemu_bh_new(rng_builtin_receive_entropy_bh, s);
+}
+
+static void rng_builtin_finalize(Object *obj)
+{
+ RngBuiltin *s = RNG_BUILTIN(obj);
+
+ qemu_bh_delete(s->bh);
+}
+
+static void rng_builtin_class_init(ObjectClass *klass, void *data)
+{
+ RngBackendClass *rbc = RNG_BACKEND_CLASS(klass);
+
+ rbc->request_entropy = rng_builtin_request_entropy;
+}
+
+static const TypeInfo rng_builtin_info = {
+ .name = TYPE_RNG_BUILTIN,
+ .parent = TYPE_RNG_BACKEND,
+ .instance_size = sizeof(RngBuiltin),
+ .instance_init = rng_builtin_init,
+ .instance_finalize = rng_builtin_finalize,
+ .class_init = rng_builtin_class_init,
+};
+
+static void register_types(void)
+{
+ type_register_static(&rng_builtin_info);
+}
+
+type_init(register_types);
diff --git a/qemu-options.hx b/qemu-options.hx
index 9621e934c0bf..312586cc18f8 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -4323,6 +4323,13 @@ other options.
The @option{share} boolean option is @var{on} by default with memfd.
+@item -object rng-builtin,id=@var{id}
+
+Creates a random number generator backend which obtains entropy from
+QEMU builtin functions. The @option{id} parameter is a unique ID that
+will be used to reference this entropy backend from the @option{virtio-rng}
+device.
+
@item -object rng-random,id=@var{id},filename=@var{/dev/random}
Creates a random number generator backend which obtains entropy from
--
2.21.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PULL 1/6] rng-builtin: add an RNG backend that uses qemu_guest_getrandom()
@ 2019-09-04 12:00 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2019-09-04 12:00 UTC (permalink / raw)
To: qemu-devel; +Cc: Laurent Vivier, Peter Maydell, Amit Shah
From: Laurent Vivier <lvivier@redhat.com>
Add a new RNG backend using QEMU builtin getrandom function.
It can be created and used with something like:
... -object rng-builtin,id=rng0 -device virtio-rng,rng=rng0 ...
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Message-Id: <20190820160615.14616-2-lvivier@redhat.com>
---
backends/Makefile.objs | 2 +-
backends/rng-builtin.c | 78 ++++++++++++++++++++++++++++++++++++++++++
qemu-options.hx | 7 ++++
3 files changed, 86 insertions(+), 1 deletion(-)
create mode 100644 backends/rng-builtin.c
diff --git a/backends/Makefile.objs b/backends/Makefile.objs
index 981e8e122f..f0691116e8 100644
--- a/backends/Makefile.objs
+++ b/backends/Makefile.objs
@@ -1,4 +1,4 @@
-common-obj-y += rng.o rng-egd.o
+common-obj-y += rng.o rng-egd.o rng-builtin.o
common-obj-$(CONFIG_POSIX) += rng-random.o
common-obj-$(CONFIG_TPM) += tpm.o
diff --git a/backends/rng-builtin.c b/backends/rng-builtin.c
new file mode 100644
index 0000000000..3381d47174
--- /dev/null
+++ b/backends/rng-builtin.c
@@ -0,0 +1,78 @@
+/*
+ * QEMU Builtin Random Number Generator Backend
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "sysemu/rng.h"
+#include "qemu/main-loop.h"
+#include "qemu/guest-random.h"
+
+#define TYPE_RNG_BUILTIN "rng-builtin"
+#define RNG_BUILTIN(obj) OBJECT_CHECK(RngBuiltin, (obj), TYPE_RNG_BUILTIN)
+
+typedef struct RngBuiltin {
+ RngBackend parent;
+ QEMUBH *bh;
+} RngBuiltin;
+
+static void rng_builtin_receive_entropy_bh(void *opaque)
+{
+ RngBuiltin *s = opaque;
+
+ while (!QSIMPLEQ_EMPTY(&s->parent.requests)) {
+ RngRequest *req = QSIMPLEQ_FIRST(&s->parent.requests);
+
+ qemu_guest_getrandom_nofail(req->data, req->size);
+
+ req->receive_entropy(req->opaque, req->data, req->size);
+
+ rng_backend_finalize_request(&s->parent, req);
+ }
+}
+
+static void rng_builtin_request_entropy(RngBackend *b, RngRequest *req)
+{
+ RngBuiltin *s = RNG_BUILTIN(b);
+
+ qemu_bh_schedule(s->bh);
+}
+
+static void rng_builtin_init(Object *obj)
+{
+ RngBuiltin *s = RNG_BUILTIN(obj);
+
+ s->bh = qemu_bh_new(rng_builtin_receive_entropy_bh, s);
+}
+
+static void rng_builtin_finalize(Object *obj)
+{
+ RngBuiltin *s = RNG_BUILTIN(obj);
+
+ qemu_bh_delete(s->bh);
+}
+
+static void rng_builtin_class_init(ObjectClass *klass, void *data)
+{
+ RngBackendClass *rbc = RNG_BACKEND_CLASS(klass);
+
+ rbc->request_entropy = rng_builtin_request_entropy;
+}
+
+static const TypeInfo rng_builtin_info = {
+ .name = TYPE_RNG_BUILTIN,
+ .parent = TYPE_RNG_BACKEND,
+ .instance_size = sizeof(RngBuiltin),
+ .instance_init = rng_builtin_init,
+ .instance_finalize = rng_builtin_finalize,
+ .class_init = rng_builtin_class_init,
+};
+
+static void register_types(void)
+{
+ type_register_static(&rng_builtin_info);
+}
+
+type_init(register_types);
diff --git a/qemu-options.hx b/qemu-options.hx
index ea0638e92d..a8b70d946f 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -4332,6 +4332,13 @@ other options.
The @option{share} boolean option is @var{on} by default with memfd.
+@item -object rng-builtin,id=@var{id}
+
+Creates a random number generator backend which obtains entropy from
+QEMU builtin functions. The @option{id} parameter is a unique ID that
+will be used to reference this entropy backend from the @option{virtio-rng}
+device.
+
@item -object rng-random,id=@var{id},filename=@var{/dev/random}
Creates a random number generator backend which obtains entropy from
--
MST
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v8 2/3] virtio-rng: Keep the default backend out of VirtIORNGConf
@ 2019-09-04 12:00 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Laurent Vivier @ 2019-08-20 16:06 UTC (permalink / raw)
To: qemu-devel
Cc: Laurent Vivier, Daniel P . Berrangé,
Kashyap Chamarthy, Amit Shah, Richard Henderson,
Richard W . M . Jones, Markus Armbruster, Michael S. Tsirkin
From: Markus Armbruster <armbru@redhat.com>
The default backend is only used within virtio_rng_device_realize().
Replace VirtIORNGConf member default_backend by a local variable.
Adjust its type to reduce conversions.
While there, pass &error_abort instead of NULL when failure would be a
programming error.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
hw/virtio/virtio-rng.c | 20 +++++++++-----------
include/hw/virtio/virtio-rng.h | 2 --
2 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c
index d1650e1dee19..fcf3b2e32912 100644
--- a/hw/virtio/virtio-rng.c
+++ b/hw/virtio/virtio-rng.c
@@ -19,6 +19,7 @@
#include "hw/virtio/virtio-rng.h"
#include "sysemu/rng.h"
#include "sysemu/runstate.h"
+#include "sysemu/rng-random.h"
#include "qom/object_interfaces.h"
#include "trace.h"
@@ -192,27 +193,24 @@ static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
}
if (vrng->conf.rng == NULL) {
- vrng->conf.default_backend = RNG_RANDOM(object_new(TYPE_RNG_RANDOM));
+ Object *default_backend = object_new(TYPE_RNG_RANDOM);
- user_creatable_complete(USER_CREATABLE(vrng->conf.default_backend),
+ user_creatable_complete(USER_CREATABLE(default_backend),
&local_err);
if (local_err) {
error_propagate(errp, local_err);
- object_unref(OBJECT(vrng->conf.default_backend));
+ object_unref(default_backend);
return;
}
- object_property_add_child(OBJECT(dev),
- "default-backend",
- OBJECT(vrng->conf.default_backend),
- NULL);
+ object_property_add_child(OBJECT(dev), "default-backend",
+ default_backend, &error_abort);
/* The child property took a reference, we can safely drop ours now */
- object_unref(OBJECT(vrng->conf.default_backend));
+ object_unref(default_backend);
- object_property_set_link(OBJECT(dev),
- OBJECT(vrng->conf.default_backend),
- "rng", NULL);
+ object_property_set_link(OBJECT(dev), default_backend,
+ "rng", &error_abort);
}
vrng->rng = vrng->conf.rng;
diff --git a/include/hw/virtio/virtio-rng.h b/include/hw/virtio/virtio-rng.h
index ff699335e3b9..bd05d734b87d 100644
--- a/include/hw/virtio/virtio-rng.h
+++ b/include/hw/virtio/virtio-rng.h
@@ -14,7 +14,6 @@
#include "hw/virtio/virtio.h"
#include "sysemu/rng.h"
-#include "sysemu/rng-random.h"
#include "standard-headers/linux/virtio_rng.h"
#define TYPE_VIRTIO_RNG "virtio-rng-device"
@@ -27,7 +26,6 @@ struct VirtIORNGConf {
RngBackend *rng;
uint64_t max_bytes;
uint32_t period_ms;
- RngRandom *default_backend;
};
typedef struct VirtIORNG {
--
2.21.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PULL 2/6] virtio-rng: Keep the default backend out of VirtIORNGConf
@ 2019-09-04 12:00 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2019-09-04 12:00 UTC (permalink / raw)
To: qemu-devel; +Cc: Laurent Vivier, Peter Maydell, Markus Armbruster, Amit Shah
From: Markus Armbruster <armbru@redhat.com>
The default backend is only used within virtio_rng_device_realize().
Replace VirtIORNGConf member default_backend by a local variable.
Adjust its type to reduce conversions.
While there, pass &error_abort instead of NULL when failure would be a
programming error.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Message-Id: <20190820160615.14616-3-lvivier@redhat.com>
---
hw/virtio/virtio-rng.c | 20 +++++++++-----------
include/hw/virtio/virtio-rng.h | 2 --
2 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c
index d1650e1dee..fcf3b2e329 100644
--- a/hw/virtio/virtio-rng.c
+++ b/hw/virtio/virtio-rng.c
@@ -19,6 +19,7 @@
#include "hw/virtio/virtio-rng.h"
#include "sysemu/rng.h"
#include "sysemu/runstate.h"
+#include "sysemu/rng-random.h"
#include "qom/object_interfaces.h"
#include "trace.h"
@@ -192,27 +193,24 @@ static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
}
if (vrng->conf.rng == NULL) {
- vrng->conf.default_backend = RNG_RANDOM(object_new(TYPE_RNG_RANDOM));
+ Object *default_backend = object_new(TYPE_RNG_RANDOM);
- user_creatable_complete(USER_CREATABLE(vrng->conf.default_backend),
+ user_creatable_complete(USER_CREATABLE(default_backend),
&local_err);
if (local_err) {
error_propagate(errp, local_err);
- object_unref(OBJECT(vrng->conf.default_backend));
+ object_unref(default_backend);
return;
}
- object_property_add_child(OBJECT(dev),
- "default-backend",
- OBJECT(vrng->conf.default_backend),
- NULL);
+ object_property_add_child(OBJECT(dev), "default-backend",
+ default_backend, &error_abort);
/* The child property took a reference, we can safely drop ours now */
- object_unref(OBJECT(vrng->conf.default_backend));
+ object_unref(default_backend);
- object_property_set_link(OBJECT(dev),
- OBJECT(vrng->conf.default_backend),
- "rng", NULL);
+ object_property_set_link(OBJECT(dev), default_backend,
+ "rng", &error_abort);
}
vrng->rng = vrng->conf.rng;
diff --git a/include/hw/virtio/virtio-rng.h b/include/hw/virtio/virtio-rng.h
index ff699335e3..bd05d734b8 100644
--- a/include/hw/virtio/virtio-rng.h
+++ b/include/hw/virtio/virtio-rng.h
@@ -14,7 +14,6 @@
#include "hw/virtio/virtio.h"
#include "sysemu/rng.h"
-#include "sysemu/rng-random.h"
#include "standard-headers/linux/virtio_rng.h"
#define TYPE_VIRTIO_RNG "virtio-rng-device"
@@ -27,7 +26,6 @@ struct VirtIORNGConf {
RngBackend *rng;
uint64_t max_bytes;
uint32_t period_ms;
- RngRandom *default_backend;
};
typedef struct VirtIORNG {
--
MST
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v8 3/3] virtio-rng: change default backend to rng-builtin
@ 2019-09-04 12:00 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Laurent Vivier @ 2019-08-20 16:06 UTC (permalink / raw)
To: qemu-devel
Cc: Laurent Vivier, Daniel P . Berrangé,
Kashyap Chamarthy, Amit Shah, Richard Henderson,
Richard W . M . Jones, Markus Armbruster, Michael S. Tsirkin
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
backends/rng-builtin.c | 1 -
hw/virtio/virtio-rng.c | 3 +--
include/sysemu/rng.h | 2 ++
qemu-options.hx | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/backends/rng-builtin.c b/backends/rng-builtin.c
index 3381d47174df..ba1b8d66b83e 100644
--- a/backends/rng-builtin.c
+++ b/backends/rng-builtin.c
@@ -10,7 +10,6 @@
#include "qemu/main-loop.h"
#include "qemu/guest-random.h"
-#define TYPE_RNG_BUILTIN "rng-builtin"
#define RNG_BUILTIN(obj) OBJECT_CHECK(RngBuiltin, (obj), TYPE_RNG_BUILTIN)
typedef struct RngBuiltin {
diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c
index fcf3b2e32912..e93bed020f64 100644
--- a/hw/virtio/virtio-rng.c
+++ b/hw/virtio/virtio-rng.c
@@ -19,7 +19,6 @@
#include "hw/virtio/virtio-rng.h"
#include "sysemu/rng.h"
#include "sysemu/runstate.h"
-#include "sysemu/rng-random.h"
#include "qom/object_interfaces.h"
#include "trace.h"
@@ -193,7 +192,7 @@ static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
}
if (vrng->conf.rng == NULL) {
- Object *default_backend = object_new(TYPE_RNG_RANDOM);
+ Object *default_backend = object_new(TYPE_RNG_BUILTIN);
user_creatable_complete(USER_CREATABLE(default_backend),
&local_err);
diff --git a/include/sysemu/rng.h b/include/sysemu/rng.h
index 9b22c156f8e6..fa6eada78cd7 100644
--- a/include/sysemu/rng.h
+++ b/include/sysemu/rng.h
@@ -24,6 +24,8 @@
#define RNG_BACKEND_CLASS(klass) \
OBJECT_CLASS_CHECK(RngBackendClass, (klass), TYPE_RNG_BACKEND)
+#define TYPE_RNG_BUILTIN "rng-builtin"
+
typedef struct RngRequest RngRequest;
typedef struct RngBackendClass RngBackendClass;
typedef struct RngBackend RngBackend;
diff --git a/qemu-options.hx b/qemu-options.hx
index 312586cc18f8..14b0bbeffc96 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -4328,7 +4328,7 @@ The @option{share} boolean option is @var{on} by default with memfd.
Creates a random number generator backend which obtains entropy from
QEMU builtin functions. The @option{id} parameter is a unique ID that
will be used to reference this entropy backend from the @option{virtio-rng}
-device.
+device. By default, the @option{virtio-rng} device uses this RNG backend.
@item -object rng-random,id=@var{id},filename=@var{/dev/random}
--
2.21.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PULL 3/6] virtio-rng: change default backend to rng-builtin
@ 2019-09-04 12:00 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2019-09-04 12:00 UTC (permalink / raw)
To: qemu-devel; +Cc: Laurent Vivier, Peter Maydell, Markus Armbruster, Amit Shah
From: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Message-Id: <20190820160615.14616-4-lvivier@redhat.com>
---
backends/rng-builtin.c | 1 -
hw/virtio/virtio-rng.c | 3 +--
include/sysemu/rng.h | 2 ++
qemu-options.hx | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/backends/rng-builtin.c b/backends/rng-builtin.c
index 3381d47174..ba1b8d66b8 100644
--- a/backends/rng-builtin.c
+++ b/backends/rng-builtin.c
@@ -10,7 +10,6 @@
#include "qemu/main-loop.h"
#include "qemu/guest-random.h"
-#define TYPE_RNG_BUILTIN "rng-builtin"
#define RNG_BUILTIN(obj) OBJECT_CHECK(RngBuiltin, (obj), TYPE_RNG_BUILTIN)
typedef struct RngBuiltin {
diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c
index fcf3b2e329..e93bed020f 100644
--- a/hw/virtio/virtio-rng.c
+++ b/hw/virtio/virtio-rng.c
@@ -19,7 +19,6 @@
#include "hw/virtio/virtio-rng.h"
#include "sysemu/rng.h"
#include "sysemu/runstate.h"
-#include "sysemu/rng-random.h"
#include "qom/object_interfaces.h"
#include "trace.h"
@@ -193,7 +192,7 @@ static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
}
if (vrng->conf.rng == NULL) {
- Object *default_backend = object_new(TYPE_RNG_RANDOM);
+ Object *default_backend = object_new(TYPE_RNG_BUILTIN);
user_creatable_complete(USER_CREATABLE(default_backend),
&local_err);
diff --git a/include/sysemu/rng.h b/include/sysemu/rng.h
index 9b22c156f8..fa6eada78c 100644
--- a/include/sysemu/rng.h
+++ b/include/sysemu/rng.h
@@ -24,6 +24,8 @@
#define RNG_BACKEND_CLASS(klass) \
OBJECT_CLASS_CHECK(RngBackendClass, (klass), TYPE_RNG_BACKEND)
+#define TYPE_RNG_BUILTIN "rng-builtin"
+
typedef struct RngRequest RngRequest;
typedef struct RngBackendClass RngBackendClass;
typedef struct RngBackend RngBackend;
diff --git a/qemu-options.hx b/qemu-options.hx
index a8b70d946f..b2ba7c501d 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -4337,7 +4337,7 @@ The @option{share} boolean option is @var{on} by default with memfd.
Creates a random number generator backend which obtains entropy from
QEMU builtin functions. The @option{id} parameter is a unique ID that
will be used to reference this entropy backend from the @option{virtio-rng}
-device.
+device. By default, the @option{virtio-rng} device uses this RNG backend.
@item -object rng-random,id=@var{id},filename=@var{/dev/random}
--
MST
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH v8 0/3] rng-builtin: add an RNG backend that uses qemu_guest_getrandom()
2019-08-20 16:06 [Qemu-devel] [PATCH v8 0/3] rng-builtin: add an RNG backend that uses qemu_guest_getrandom() Laurent Vivier
` (2 preceding siblings ...)
2019-09-04 12:00 ` [Qemu-devel] [PULL 3/6] " Michael S. Tsirkin
@ 2019-09-04 10:26 ` Michael S. Tsirkin
3 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2019-09-04 10:26 UTC (permalink / raw)
To: Laurent Vivier
Cc: Daniel P . Berrangé,
Kashyap Chamarthy, Amit Shah, Richard Henderson,
Markus Armbruster, qemu-devel, Richard W . M . Jones
On Tue, Aug 20, 2019 at 06:06:12PM +0200, Laurent Vivier wrote:
> Add a new RNG backend using QEMU builtin getrandom function.
>
> v8: rebase on v4.1
>
> v7: rebase on master
> Make rng-builtin asynchronous with QEMUBH (removed existing R-b)
>
> v6: remove "sysemu/rng-random.h" from virtio-rng.c
> rebase on qemu_getrandom v8
>
> v5: PATCH 1 s/linux/Linux/
> remove superfluous includes from rng-builtin.c
> don't update rng-random documentation
> add a patch from Markus to keep the default backend out of VirtIORNGConf
> move TYPE_RNG_BUILTIN to sysemu/rng.h and remove sysemu/rng-builtin.h
Applied, thanks!
> v4: update PATCH 1 commit message
>
> v3: Include Kashyap's patch in the series
> Add a patch to change virtio-rng default backend to rng-builtin
>
> v2: Update qemu-options.hx
> describe the new backend and specify virtio-rng uses the
> rng-random by default
>
> Laurent Vivier (2):
> rng-builtin: add an RNG backend that uses qemu_guest_getrandom()
> virtio-rng: change default backend to rng-builtin
>
> Markus Armbruster (1):
> virtio-rng: Keep the default backend out of VirtIORNGConf
>
> backends/Makefile.objs | 2 +-
> backends/rng-builtin.c | 77 ++++++++++++++++++++++++++++++++++
> hw/virtio/virtio-rng.c | 19 ++++-----
> include/hw/virtio/virtio-rng.h | 2 -
> include/sysemu/rng.h | 2 +
> qemu-options.hx | 7 ++++
> 6 files changed, 95 insertions(+), 14 deletions(-)
> create mode 100644 backends/rng-builtin.c
>
> --
> 2.21.0
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v2] virtio-pci: Add Function Level Reset support
@ 2019-09-04 12:01 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Julia Suvorova @ 2019-08-20 16:30 UTC (permalink / raw)
To: qemu-devel; +Cc: Alex Williamson, Julia Suvorova, mst
Using FLR becomes convenient in cases where resetting the bus is
impractical, for example, when debugging the behavior of individual
functions.
Signed-off-by: Julia Suvorova <jusual@redhat.com>
---
Requires definition of 4.2 machines:
Based-on: <20190724103524.20916-1-cohuck@redhat.com>
v2:
Add compatibility property "x-pcie-flr-init"
hw/core/machine.c | 4 +++-
hw/virtio/virtio-pci.c | 10 ++++++++++
hw/virtio/virtio-pci.h | 4 ++++
3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 83cd1bfeec..829ada099e 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -27,7 +27,9 @@
#include "hw/pci/pci.h"
#include "hw/mem/nvdimm.h"
-GlobalProperty hw_compat_4_1[] = {};
+GlobalProperty hw_compat_4_1[] = {
+ { "virtio-pci", "x-pcie-flr-init", "off" },
+};
const size_t hw_compat_4_1_len = G_N_ELEMENTS(hw_compat_4_1);
GlobalProperty hw_compat_4_0[] = {
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index 8babd92e59..0075b3e2af 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -601,6 +601,10 @@ static void virtio_write_config(PCIDevice *pci_dev, uint32_t address,
pci_default_write_config(pci_dev, address, val, len);
+ if (proxy->flags & VIRTIO_PCI_FLAG_INIT_FLR) {
+ pcie_cap_flr_write_config(pci_dev, address, val, len);
+ }
+
if (range_covers_byte(address, len, PCI_COMMAND) &&
!(pci_dev->config[PCI_COMMAND] & PCI_COMMAND_MASTER)) {
virtio_pci_stop_ioeventfd(proxy);
@@ -1777,6 +1781,10 @@ static void virtio_pci_realize(PCIDevice *pci_dev, Error **errp)
pcie_ats_init(pci_dev, 256);
}
+ if (proxy->flags & VIRTIO_PCI_FLAG_INIT_FLR) {
+ /* Set Function Level Reset capability bit */
+ pcie_cap_flr_init(pci_dev);
+ }
} else {
/*
* make future invocations of pci_is_express() return false
@@ -1844,6 +1852,8 @@ static Property virtio_pci_properties[] = {
VIRTIO_PCI_FLAG_INIT_LNKCTL_BIT, true),
DEFINE_PROP_BIT("x-pcie-pm-init", VirtIOPCIProxy, flags,
VIRTIO_PCI_FLAG_INIT_PM_BIT, true),
+ DEFINE_PROP_BIT("x-pcie-flr-init", VirtIOPCIProxy, flags,
+ VIRTIO_PCI_FLAG_INIT_FLR_BIT, true),
DEFINE_PROP_END_OF_LIST(),
};
diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h
index 292275acb1..e2eaaa9182 100644
--- a/hw/virtio/virtio-pci.h
+++ b/hw/virtio/virtio-pci.h
@@ -44,6 +44,7 @@ enum {
VIRTIO_PCI_FLAG_INIT_DEVERR_BIT,
VIRTIO_PCI_FLAG_INIT_LNKCTL_BIT,
VIRTIO_PCI_FLAG_INIT_PM_BIT,
+ VIRTIO_PCI_FLAG_INIT_FLR_BIT,
};
/* Need to activate work-arounds for buggy guests at vmstate load. */
@@ -80,6 +81,9 @@ enum {
/* Init Power Management */
#define VIRTIO_PCI_FLAG_INIT_PM (1 << VIRTIO_PCI_FLAG_INIT_PM_BIT)
+/* Init Function Level Reset capability */
+#define VIRTIO_PCI_FLAG_INIT_FLR (1 << VIRTIO_PCI_FLAG_INIT_FLR_BIT)
+
typedef struct {
MSIMessage msg;
int virq;
--
2.21.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PULL 4/6] virtio-pci: Add Function Level Reset support
@ 2019-09-04 12:01 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2019-09-04 12:01 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell, Julia Suvorova, Eduardo Habkost
From: Julia Suvorova <jusual@redhat.com>
Using FLR becomes convenient in cases where resetting the bus is
impractical, for example, when debugging the behavior of individual
functions.
Signed-off-by: Julia Suvorova <jusual@redhat.com>
Message-Id: <20190820163005.1880-1-jusual@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/core/machine.c | 4 +++-
hw/virtio/virtio-pci.c | 10 ++++++++++
hw/virtio/virtio-pci.h | 4 ++++
3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 83cd1bfeec..829ada099e 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -27,7 +27,9 @@
#include "hw/pci/pci.h"
#include "hw/mem/nvdimm.h"
-GlobalProperty hw_compat_4_1[] = {};
+GlobalProperty hw_compat_4_1[] = {
+ { "virtio-pci", "x-pcie-flr-init", "off" },
+};
const size_t hw_compat_4_1_len = G_N_ELEMENTS(hw_compat_4_1);
GlobalProperty hw_compat_4_0[] = {
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index 8babd92e59..0075b3e2af 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -601,6 +601,10 @@ static void virtio_write_config(PCIDevice *pci_dev, uint32_t address,
pci_default_write_config(pci_dev, address, val, len);
+ if (proxy->flags & VIRTIO_PCI_FLAG_INIT_FLR) {
+ pcie_cap_flr_write_config(pci_dev, address, val, len);
+ }
+
if (range_covers_byte(address, len, PCI_COMMAND) &&
!(pci_dev->config[PCI_COMMAND] & PCI_COMMAND_MASTER)) {
virtio_pci_stop_ioeventfd(proxy);
@@ -1777,6 +1781,10 @@ static void virtio_pci_realize(PCIDevice *pci_dev, Error **errp)
pcie_ats_init(pci_dev, 256);
}
+ if (proxy->flags & VIRTIO_PCI_FLAG_INIT_FLR) {
+ /* Set Function Level Reset capability bit */
+ pcie_cap_flr_init(pci_dev);
+ }
} else {
/*
* make future invocations of pci_is_express() return false
@@ -1844,6 +1852,8 @@ static Property virtio_pci_properties[] = {
VIRTIO_PCI_FLAG_INIT_LNKCTL_BIT, true),
DEFINE_PROP_BIT("x-pcie-pm-init", VirtIOPCIProxy, flags,
VIRTIO_PCI_FLAG_INIT_PM_BIT, true),
+ DEFINE_PROP_BIT("x-pcie-flr-init", VirtIOPCIProxy, flags,
+ VIRTIO_PCI_FLAG_INIT_FLR_BIT, true),
DEFINE_PROP_END_OF_LIST(),
};
diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h
index 292275acb1..e2eaaa9182 100644
--- a/hw/virtio/virtio-pci.h
+++ b/hw/virtio/virtio-pci.h
@@ -44,6 +44,7 @@ enum {
VIRTIO_PCI_FLAG_INIT_DEVERR_BIT,
VIRTIO_PCI_FLAG_INIT_LNKCTL_BIT,
VIRTIO_PCI_FLAG_INIT_PM_BIT,
+ VIRTIO_PCI_FLAG_INIT_FLR_BIT,
};
/* Need to activate work-arounds for buggy guests at vmstate load. */
@@ -80,6 +81,9 @@ enum {
/* Init Power Management */
#define VIRTIO_PCI_FLAG_INIT_PM (1 << VIRTIO_PCI_FLAG_INIT_PM_BIT)
+/* Init Function Level Reset capability */
+#define VIRTIO_PCI_FLAG_INIT_FLR (1 << VIRTIO_PCI_FLAG_INIT_FLR_BIT)
+
typedef struct {
MSIMessage msg;
int virq;
--
MST
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v2] libvhost-user: fix SLAVE_SEND_FD handling
@ 2019-09-04 12:01 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Johannes Berg @ 2019-09-03 20:04 UTC (permalink / raw)
To: qemu-devel
Cc: Marc-André Lureau, Johannes Berg, Tiwei Bie, Michael S . Tsirkin
From: Johannes Berg <johannes.berg@intel.com>
It doesn't look like this could possibly work properly since
VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD is defined to 10, but the
dev->protocol_features has a bitmap. I suppose the peer this
was tested with also supported VHOST_USER_PROTOCOL_F_LOG_SHMFD,
in which case the test would always be false, but nevertheless
the code seems wrong.
Use has_feature() to fix this.
Fixes: d84599f56c82 ("libvhost-user: support host notifier")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
contrib/libvhost-user/libvhost-user.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index 6a02eaffc672..fcf4a8a00ed2 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -1097,7 +1097,8 @@ bool vu_set_queue_host_notifier(VuDev *dev, VuVirtq *vq, int fd,
vmsg.fd_num = fd_num;
- if ((dev->protocol_features & VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) == 0) {
+ if (!has_feature(dev->protocol_features,
+ VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
return false;
}
--
2.23.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PULL 5/6] libvhost-user: fix SLAVE_SEND_FD handling
@ 2019-09-04 12:01 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2019-09-04 12:01 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Johannes Berg, Tiwei Bie, Gerd Hoffmann,
Stefan Hajnoczi, Marc-André Lureau, Xie Yongji
From: Johannes Berg <johannes.berg@intel.com>
It doesn't look like this could possibly work properly since
VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD is defined to 10, but the
dev->protocol_features has a bitmap. I suppose the peer this
was tested with also supported VHOST_USER_PROTOCOL_F_LOG_SHMFD,
in which case the test would always be false, but nevertheless
the code seems wrong.
Use has_feature() to fix this.
Fixes: d84599f56c82 ("libvhost-user: support host notifier")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Message-Id: <20190903200422.11693-1-johannes@sipsolutions.net>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
contrib/libvhost-user/libvhost-user.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index 4b36e35a82..cb5f5770e4 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -1097,7 +1097,8 @@ bool vu_set_queue_host_notifier(VuDev *dev, VuVirtq *vq, int fd,
vmsg.fd_num = fd_num;
- if ((dev->protocol_features & VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) == 0) {
+ if (!has_feature(dev->protocol_features,
+ VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
return false;
}
--
MST
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH v2] libvhost-user: fix SLAVE_SEND_FD handling
2019-09-04 12:01 ` [Qemu-devel] [PULL 5/6] " Michael S. Tsirkin
(?)
@ 2019-09-04 2:06 ` Tiwei Bie
2019-09-04 9:01 ` Tiwei Bie
-1 siblings, 1 reply; 19+ messages in thread
From: Tiwei Bie @ 2019-09-04 2:06 UTC (permalink / raw)
To: Johannes Berg
Cc: Marc-André Lureau, qemu-devel, Johannes Berg, Michael S . Tsirkin
On Tue, Sep 03, 2019 at 11:04:22PM +0300, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> It doesn't look like this could possibly work properly since
> VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD is defined to 10, but the
> dev->protocol_features has a bitmap. I suppose the peer this
> was tested with also supported VHOST_USER_PROTOCOL_F_LOG_SHMFD,
> in which case the test would always be false, but nevertheless
> the code seems wrong.
Ooops.. I tested `tests/vhost-user-bridge -H`. But as you
said it worked because VHOST_USER_PROTOCOL_F_LOG_SHMFD has
been negotiated. Thanks for spotting this!
>
> Use has_feature() to fix this.
>
> Fixes: d84599f56c82 ("libvhost-user: support host notifier")
Cc: qemu-stable@nongnu.org
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> ---
> contrib/libvhost-user/libvhost-user.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
> index 6a02eaffc672..fcf4a8a00ed2 100644
> --- a/contrib/libvhost-user/libvhost-user.c
> +++ b/contrib/libvhost-user/libvhost-user.c
> @@ -1097,7 +1097,8 @@ bool vu_set_queue_host_notifier(VuDev *dev, VuVirtq *vq, int fd,
>
> vmsg.fd_num = fd_num;
>
> - if ((dev->protocol_features & VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) == 0) {
> + if (!has_feature(dev->protocol_features,
> + VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
We have both of has_feature() and vu_has_feature() called by
other code in this file directly. Not sure which one is preferred..
Personally, I think vu_has_feature() might be better.
Thanks!
Tiwei
> return false;
> }
>
> --
> 2.23.0
>
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH v2] libvhost-user: fix SLAVE_SEND_FD handling
2019-09-04 2:06 ` [Qemu-devel] [PATCH v2] " Tiwei Bie
@ 2019-09-04 9:01 ` Tiwei Bie
0 siblings, 0 replies; 19+ messages in thread
From: Tiwei Bie @ 2019-09-04 9:01 UTC (permalink / raw)
To: Johannes Berg
Cc: Marc-André Lureau, qemu-devel, Johannes Berg, Michael S . Tsirkin
On Wed, Sep 04, 2019 at 10:06:55AM +0800, Tiwei Bie wrote:
> On Tue, Sep 03, 2019 at 11:04:22PM +0300, Johannes Berg wrote:
> > From: Johannes Berg <johannes.berg@intel.com>
> >
> > It doesn't look like this could possibly work properly since
> > VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD is defined to 10, but the
> > dev->protocol_features has a bitmap. I suppose the peer this
> > was tested with also supported VHOST_USER_PROTOCOL_F_LOG_SHMFD,
> > in which case the test would always be false, but nevertheless
> > the code seems wrong.
>
> Ooops.. I tested `tests/vhost-user-bridge -H`. But as you
> said it worked because VHOST_USER_PROTOCOL_F_LOG_SHMFD has
> been negotiated. Thanks for spotting this!
>
> >
> > Use has_feature() to fix this.
> >
> > Fixes: d84599f56c82 ("libvhost-user: support host notifier")
>
> Cc: qemu-stable@nongnu.org
>
> > Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> > ---
> > contrib/libvhost-user/libvhost-user.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
> > index 6a02eaffc672..fcf4a8a00ed2 100644
> > --- a/contrib/libvhost-user/libvhost-user.c
> > +++ b/contrib/libvhost-user/libvhost-user.c
> > @@ -1097,7 +1097,8 @@ bool vu_set_queue_host_notifier(VuDev *dev, VuVirtq *vq, int fd,
> >
> > vmsg.fd_num = fd_num;
> >
> > - if ((dev->protocol_features & VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) == 0) {
> > + if (!has_feature(dev->protocol_features,
> > + VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
>
> We have both of has_feature() and vu_has_feature() called by
> other code in this file directly. Not sure which one is preferred..
> Personally, I think vu_has_feature() might be better.
Thanks for the patch introducing vu_has_protocol_feature().
This fix looks good to me. Thanks a lot!
I'm not the maintainer. But anyway, if this helps:
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH] libvhost-user: introduce and use vu_has_protocol_feature()
@ 2019-09-04 12:01 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Johannes Berg @ 2019-09-04 6:50 UTC (permalink / raw)
To: qemu-devel
Cc: Marc-André Lureau, Johannes Berg, Tiwei Bie, Michael S . Tsirkin
From: Johannes Berg <johannes.berg@intel.com>
This simplifies the various has_feature() checks, we already
have vu_has_feature() but it checks features, not protocol
features.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
contrib/libvhost-user/libvhost-user.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index fcf4a8a00ed2..fba291c13db4 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -94,6 +94,11 @@ bool vu_has_feature(VuDev *dev,
return has_feature(dev->features, fbit);
}
+static inline bool vu_has_protocol_feature(VuDev *dev, unsigned int fbit)
+{
+ return has_feature(dev->protocol_features, fbit);
+}
+
static const char *
vu_request_to_string(unsigned int req)
{
@@ -951,8 +956,7 @@ vu_check_queue_inflights(VuDev *dev, VuVirtq *vq)
{
int i = 0;
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
return 0;
}
@@ -1097,8 +1101,7 @@ bool vu_set_queue_host_notifier(VuDev *dev, VuVirtq *vq, int fd,
vmsg.fd_num = fd_num;
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
return false;
}
@@ -2199,8 +2202,7 @@ vu_queue_map_desc(VuDev *dev, VuVirtq *vq, unsigned int idx, size_t sz)
static int
vu_queue_inflight_get(VuDev *dev, VuVirtq *vq, int desc_idx)
{
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
return 0;
}
@@ -2217,8 +2219,7 @@ vu_queue_inflight_get(VuDev *dev, VuVirtq *vq, int desc_idx)
static int
vu_queue_inflight_pre_put(VuDev *dev, VuVirtq *vq, int desc_idx)
{
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
return 0;
}
@@ -2234,8 +2235,7 @@ vu_queue_inflight_pre_put(VuDev *dev, VuVirtq *vq, int desc_idx)
static int
vu_queue_inflight_post_put(VuDev *dev, VuVirtq *vq, int desc_idx)
{
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
return 0;
}
--
2.23.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PULL 6/6] libvhost-user: introduce and use vu_has_protocol_feature()
@ 2019-09-04 12:01 ` Michael S. Tsirkin
0 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2019-09-04 12:01 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Zhang Yu, Johannes Berg, Tiwei Bie, Gerd Hoffmann,
Marc-André Lureau, Xie Yongji
From: Johannes Berg <johannes.berg@intel.com>
This simplifies the various has_feature() checks, we already
have vu_has_feature() but it checks features, not protocol
features.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Message-Id: <20190904065021.1360-1-johannes@sipsolutions.net>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
contrib/libvhost-user/libvhost-user.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index cb5f5770e4..68c27136ae 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -94,6 +94,11 @@ bool vu_has_feature(VuDev *dev,
return has_feature(dev->features, fbit);
}
+static inline bool vu_has_protocol_feature(VuDev *dev, unsigned int fbit)
+{
+ return has_feature(dev->protocol_features, fbit);
+}
+
static const char *
vu_request_to_string(unsigned int req)
{
@@ -951,8 +956,7 @@ vu_check_queue_inflights(VuDev *dev, VuVirtq *vq)
{
int i = 0;
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
return 0;
}
@@ -1097,8 +1101,7 @@ bool vu_set_queue_host_notifier(VuDev *dev, VuVirtq *vq, int fd,
vmsg.fd_num = fd_num;
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
return false;
}
@@ -2191,8 +2194,7 @@ vu_queue_map_desc(VuDev *dev, VuVirtq *vq, unsigned int idx, size_t sz)
static int
vu_queue_inflight_get(VuDev *dev, VuVirtq *vq, int desc_idx)
{
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
return 0;
}
@@ -2209,8 +2211,7 @@ vu_queue_inflight_get(VuDev *dev, VuVirtq *vq, int desc_idx)
static int
vu_queue_inflight_pre_put(VuDev *dev, VuVirtq *vq, int desc_idx)
{
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
return 0;
}
@@ -2226,8 +2227,7 @@ vu_queue_inflight_pre_put(VuDev *dev, VuVirtq *vq, int desc_idx)
static int
vu_queue_inflight_post_put(VuDev *dev, VuVirtq *vq, int desc_idx)
{
- if (!has_feature(dev->protocol_features,
- VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
+ if (!vu_has_protocol_feature(dev, VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
return 0;
}
--
MST
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH] libvhost-user: introduce and use vu_has_protocol_feature()
2019-09-04 12:01 ` [Qemu-devel] [PULL 6/6] " Michael S. Tsirkin
(?)
@ 2019-09-04 9:22 ` Tiwei Bie
-1 siblings, 0 replies; 19+ messages in thread
From: Tiwei Bie @ 2019-09-04 9:22 UTC (permalink / raw)
To: Johannes Berg
Cc: Marc-André Lureau, qemu-devel, Johannes Berg, Michael S . Tsirkin
On Wed, Sep 04, 2019 at 09:50:21AM +0300, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> This simplifies the various has_feature() checks, we already
> have vu_has_feature() but it checks features, not protocol
> features.
>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> ---
> contrib/libvhost-user/libvhost-user.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
If this helps:
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
Thanks!
Tiwei
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Qemu-devel] [PULL 0/6] virtio,vhost: fixes, features, cleanups.
@ 2019-09-04 12:00 Michael S. Tsirkin
2019-09-04 17:16 ` [Qemu-devel] [PULL 0/6] virtio, vhost: " Peter Maydell
0 siblings, 1 reply; 19+ messages in thread
From: Michael S. Tsirkin @ 2019-09-04 12:00 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell
The following changes since commit 379d83f2c92879f4418aa9c57fd1fcbc3c82d384:
Merge remote-tracking branch 'remotes/amarkovic/tags/mips-queue-aug-29-2019' into staging (2019-09-04 10:16:00 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
for you to fetch changes up to eeb39263aa9b05b4ac3f8d8e957958071834a7b6:
libvhost-user: introduce and use vu_has_protocol_feature() (2019-09-04 07:53:12 -0400)
----------------------------------------------------------------
virtio,vhost: fixes, features, cleanups.
FLR support.
Misc fixes, cleanups.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
----------------------------------------------------------------
Johannes Berg (2):
libvhost-user: fix SLAVE_SEND_FD handling
libvhost-user: introduce and use vu_has_protocol_feature()
Julia Suvorova (1):
virtio-pci: Add Function Level Reset support
Laurent Vivier (2):
rng-builtin: add an RNG backend that uses qemu_guest_getrandom()
virtio-rng: change default backend to rng-builtin
Markus Armbruster (1):
virtio-rng: Keep the default backend out of VirtIORNGConf
hw/virtio/virtio-pci.h | 4 ++
include/hw/virtio/virtio-rng.h | 2 -
include/sysemu/rng.h | 2 +
backends/rng-builtin.c | 77 +++++++++++++++++++++++++++++++++++
contrib/libvhost-user/libvhost-user.c | 19 +++++----
hw/core/machine.c | 4 +-
hw/virtio/virtio-pci.c | 10 +++++
hw/virtio/virtio-rng.c | 19 ++++-----
backends/Makefile.objs | 2 +-
qemu-options.hx | 7 ++++
10 files changed, 122 insertions(+), 24 deletions(-)
create mode 100644 backends/rng-builtin.c
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PULL 0/6] virtio, vhost: fixes, features, cleanups.
2019-09-04 12:00 [Qemu-devel] [PULL 0/6] virtio,vhost: fixes, features, cleanups Michael S. Tsirkin
@ 2019-09-04 17:16 ` Peter Maydell
0 siblings, 0 replies; 19+ messages in thread
From: Peter Maydell @ 2019-09-04 17:16 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: QEMU Developers
On Wed, 4 Sep 2019 at 13:00, Michael S. Tsirkin <mst@redhat.com> wrote:
>
> The following changes since commit 379d83f2c92879f4418aa9c57fd1fcbc3c82d384:
>
> Merge remote-tracking branch 'remotes/amarkovic/tags/mips-queue-aug-29-2019' into staging (2019-09-04 10:16:00 +0100)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
>
> for you to fetch changes up to eeb39263aa9b05b4ac3f8d8e957958071834a7b6:
>
> libvhost-user: introduce and use vu_has_protocol_feature() (2019-09-04 07:53:12 -0400)
>
> ----------------------------------------------------------------
> virtio,vhost: fixes, features, cleanups.
>
> FLR support.
> Misc fixes, cleanups.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/4.2
for any user-visible changes.
-- PMM
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2019-09-04 17:34 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-20 16:06 [Qemu-devel] [PATCH v8 0/3] rng-builtin: add an RNG backend that uses qemu_guest_getrandom() Laurent Vivier
2019-08-20 16:06 ` [Qemu-devel] [PATCH v8 1/3] " Laurent Vivier
2019-09-04 12:00 ` [Qemu-devel] [PULL 1/6] " Michael S. Tsirkin
2019-08-20 16:06 ` [Qemu-devel] [PATCH v8 2/3] virtio-rng: Keep the default backend out of VirtIORNGConf Laurent Vivier
2019-09-04 12:00 ` [Qemu-devel] [PULL 2/6] " Michael S. Tsirkin
2019-08-20 16:06 ` [Qemu-devel] [PATCH v8 3/3] virtio-rng: change default backend to rng-builtin Laurent Vivier
2019-09-04 12:00 ` [Qemu-devel] [PULL 3/6] " Michael S. Tsirkin
2019-09-04 10:26 ` [Qemu-devel] [PATCH v8 0/3] rng-builtin: add an RNG backend that uses qemu_guest_getrandom() Michael S. Tsirkin
2019-08-20 16:30 [Qemu-devel] [PATCH v2] virtio-pci: Add Function Level Reset support Julia Suvorova
2019-09-04 12:01 ` [Qemu-devel] [PULL 4/6] " Michael S. Tsirkin
2019-09-03 20:04 [Qemu-devel] [PATCH v2] libvhost-user: fix SLAVE_SEND_FD handling Johannes Berg
2019-09-04 12:01 ` [Qemu-devel] [PULL 5/6] " Michael S. Tsirkin
2019-09-04 2:06 ` [Qemu-devel] [PATCH v2] " Tiwei Bie
2019-09-04 9:01 ` Tiwei Bie
2019-09-04 6:50 [Qemu-devel] [PATCH] libvhost-user: introduce and use vu_has_protocol_feature() Johannes Berg
2019-09-04 12:01 ` [Qemu-devel] [PULL 6/6] " Michael S. Tsirkin
2019-09-04 9:22 ` [Qemu-devel] [PATCH] " Tiwei Bie
2019-09-04 12:00 [Qemu-devel] [PULL 0/6] virtio,vhost: fixes, features, cleanups Michael S. Tsirkin
2019-09-04 17:16 ` [Qemu-devel] [PULL 0/6] virtio, vhost: " Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.