1 | The following changes since commit 4100a344eb3d50d88f9da85cae334afc47aee134: | 1 | The following changes since commit aceeaa69d28e6f08a24395d0aa6915b687d0a681: |
---|---|---|---|
2 | 2 | ||
3 | Merge remote-tracking branch 'remotes/sstabellini/tags/xen-20170202' into staging (2017-02-03 12:31:40 +0000) | 3 | Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2019-12-17' into staging (2019-12-17 15:55:20 +0000) |
4 | 4 | ||
5 | are available in the git repository at: | 5 | are available in the Git repository at: |
6 | 6 | ||
7 | git://github.com/stefanha/qemu.git tags/block-pull-request | 7 | https://github.com/stefanha/qemu.git tags/block-pull-request |
8 | 8 | ||
9 | for you to fetch changes up to cdd7abfdba9287a289c404dfdcb02316f9ffee7d: | 9 | for you to fetch changes up to 725fe5d10dbd4259b1853b7d253cef83a3c0d22a: |
10 | 10 | ||
11 | iothread: enable AioContext polling by default (2017-02-03 14:23:38 +0000) | 11 | virtio-blk: fix out-of-bounds access to bitmap in notify_guest_bh (2019-12-19 16:20:25 +0000) |
12 | |||
13 | ---------------------------------------------------------------- | ||
14 | Pull request | ||
12 | 15 | ||
13 | ---------------------------------------------------------------- | 16 | ---------------------------------------------------------------- |
14 | 17 | ||
15 | ---------------------------------------------------------------- | 18 | Li Hangjing (1): |
19 | virtio-blk: fix out-of-bounds access to bitmap in notify_guest_bh | ||
16 | 20 | ||
17 | Stefan Hajnoczi (1): | 21 | Stefan Hajnoczi (2): |
18 | iothread: enable AioContext polling by default | 22 | virtio-blk: deprecate SCSI passthrough |
23 | docs: fix rst syntax errors in unbuilt docs | ||
19 | 24 | ||
20 | iothread.c | 14 ++++++++++++++ | 25 | docs/arm-cpu-features.rst | 6 +++--- |
21 | 1 file changed, 14 insertions(+) | 26 | docs/virtio-net-failover.rst | 4 ++-- |
27 | docs/virtio-pmem.rst | 19 ++++++++++--------- | ||
28 | hw/block/dataplane/virtio-blk.c | 2 +- | ||
29 | qemu-deprecated.texi | 11 +++++++++++ | ||
30 | 5 files changed, 27 insertions(+), 15 deletions(-) | ||
22 | 31 | ||
23 | -- | 32 | -- |
24 | 2.9.3 | 33 | 2.23.0 |
25 | 34 | ||
35 | -- | ||
36 | libvir-list mailing list | ||
37 | libvir-list@redhat.com | ||
38 | https://www.redhat.com/mailman/listinfo/libvir-list | ||
26 | 39 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | The Linux virtio_blk.ko guest driver is removing legacy SCSI passthrough | ||
2 | support. Deprecate this feature in QEMU too. | ||
1 | 3 | ||
4 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
5 | Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> | ||
6 | Reviewed-by: Christoph Hellwig <hch@lst.de> | ||
7 | Reviewed-by: Thomas Huth <thuth@redhat.com> | ||
8 | Message-id: 20191213144626.1208237-1-stefanha@redhat.com | ||
9 | Message-Id: <20191213144626.1208237-1-stefanha@redhat.com> | ||
10 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
11 | --- | ||
12 | qemu-deprecated.texi | 11 +++++++++++ | ||
13 | 1 file changed, 11 insertions(+) | ||
14 | |||
15 | diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi | ||
16 | index XXXXXXX..XXXXXXX 100644 | ||
17 | --- a/qemu-deprecated.texi | ||
18 | +++ b/qemu-deprecated.texi | ||
19 | @@ -XXX,XX +XXX,XX @@ spec you can use the ``-cpu rv64gcsu,priv_spec=v1.9.1`` command line argument. | ||
20 | |||
21 | @section Device options | ||
22 | |||
23 | +@subsection Emulated device options | ||
24 | + | ||
25 | +@subsubsection -device virtio-blk,scsi=on|off (since 5.0.0) | ||
26 | + | ||
27 | +The virtio-blk SCSI passthrough feature is a legacy VIRTIO feature. VIRTIO 1.0 | ||
28 | +and later do not support it because the virtio-scsi device was introduced for | ||
29 | +full SCSI support. Use virtio-scsi instead when SCSI passthrough is required. | ||
30 | + | ||
31 | +Note this also applies to ``-device virtio-blk-pci,scsi=on|off'', which is an | ||
32 | +alias. | ||
33 | + | ||
34 | @subsection Block device options | ||
35 | |||
36 | @subsubsection "backing": "" (since 2.12.0) | ||
37 | -- | ||
38 | 2.23.0 | ||
39 | |||
40 | -- | ||
41 | libvir-list mailing list | ||
42 | libvir-list@redhat.com | ||
43 | https://www.redhat.com/mailman/listinfo/libvir-list | ||
44 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | The .rst files outside docs/{devel,interop,specs} aren't built yet and | ||
2 | therefore a few syntax errors have slipped through. Fix them. | ||
1 | 3 | ||
4 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
5 | Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> | ||
6 | Message-Id: <20191111094411.427174-1-stefanha@redhat.com> | ||
7 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
8 | --- | ||
9 | docs/arm-cpu-features.rst | 6 +++--- | ||
10 | docs/virtio-net-failover.rst | 4 ++-- | ||
11 | docs/virtio-pmem.rst | 19 ++++++++++--------- | ||
12 | 3 files changed, 15 insertions(+), 14 deletions(-) | ||
13 | |||
14 | diff --git a/docs/arm-cpu-features.rst b/docs/arm-cpu-features.rst | ||
15 | index XXXXXXX..XXXXXXX 100644 | ||
16 | --- a/docs/arm-cpu-features.rst | ||
17 | +++ b/docs/arm-cpu-features.rst | ||
18 | @@ -XXX,XX +XXX,XX @@ CPU type is possible with the `query-cpu-model-expansion` QMP command. | ||
19 | Below are some examples where `scripts/qmp/qmp-shell` (see the top comment | ||
20 | block in the script for usage) is used to issue the QMP commands. | ||
21 | |||
22 | -(1) Determine which CPU features are available for the `max` CPU type | ||
23 | - (Note, we started QEMU with qemu-system-aarch64, so `max` is | ||
24 | - implementing the ARMv8-A reference manual in this case):: | ||
25 | +1. Determine which CPU features are available for the `max` CPU type | ||
26 | + (Note, we started QEMU with qemu-system-aarch64, so `max` is | ||
27 | + implementing the ARMv8-A reference manual in this case):: | ||
28 | |||
29 | (QEMU) query-cpu-model-expansion type=full model={"name":"max"} | ||
30 | { "return": { | ||
31 | diff --git a/docs/virtio-net-failover.rst b/docs/virtio-net-failover.rst | ||
32 | index XXXXXXX..XXXXXXX 100644 | ||
33 | --- a/docs/virtio-net-failover.rst | ||
34 | +++ b/docs/virtio-net-failover.rst | ||
35 | @@ -XXX,XX +XXX,XX @@ | ||
36 | -======================== | ||
37 | +====================================== | ||
38 | QEMU virtio-net standby (net_failover) | ||
39 | -======================== | ||
40 | +====================================== | ||
41 | |||
42 | This document explains the setup and usage of virtio-net standby feature which | ||
43 | is used to create a net_failover pair of devices. | ||
44 | diff --git a/docs/virtio-pmem.rst b/docs/virtio-pmem.rst | ||
45 | index XXXXXXX..XXXXXXX 100644 | ||
46 | --- a/docs/virtio-pmem.rst | ||
47 | +++ b/docs/virtio-pmem.rst | ||
48 | @@ -XXX,XX +XXX,XX @@ virtio pmem usage | ||
49 | ----------------- | ||
50 | |||
51 | A virtio pmem device backed by a memory-backend-file can be created on | ||
52 | - the QEMU command line as in the following example: | ||
53 | + the QEMU command line as in the following example:: | ||
54 | |||
55 | - -object memory-backend-file,id=mem1,share,mem-path=./virtio_pmem.img,size=4G | ||
56 | - -device virtio-pmem-pci,memdev=mem1,id=nv1 | ||
57 | + -object memory-backend-file,id=mem1,share,mem-path=./virtio_pmem.img,size=4G | ||
58 | + -device virtio-pmem-pci,memdev=mem1,id=nv1 | ||
59 | |||
60 | - where: | ||
61 | - - "object memory-backend-file,id=mem1,share,mem-path=<image>, size=<image size>" | ||
62 | - creates a backend file with the specified size. | ||
63 | + where: | ||
64 | |||
65 | - - "device virtio-pmem-pci,id=nvdimm1,memdev=mem1" creates a virtio pmem | ||
66 | - pci device whose storage is provided by above memory backend device. | ||
67 | + - "object memory-backend-file,id=mem1,share,mem-path=<image>, size=<image size>" | ||
68 | + creates a backend file with the specified size. | ||
69 | + | ||
70 | + - "device virtio-pmem-pci,id=nvdimm1,memdev=mem1" creates a virtio pmem | ||
71 | + pci device whose storage is provided by above memory backend device. | ||
72 | |||
73 | Multiple virtio pmem devices can be created if multiple pairs of "-object" | ||
74 | and "-device" are provided. | ||
75 | @@ -XXX,XX +XXX,XX @@ memory backing has to be added via 'object_add'; afterwards, the virtio | ||
76 | pmem device can be added via 'device_add'. | ||
77 | |||
78 | For example, the following commands add another 4GB virtio pmem device to | ||
79 | -the guest: | ||
80 | +the guest:: | ||
81 | |||
82 | (qemu) object_add memory-backend-file,id=mem2,share=on,mem-path=virtio_pmem2.img,size=4G | ||
83 | (qemu) device_add virtio-pmem-pci,id=virtio_pmem2,memdev=mem2 | ||
84 | -- | ||
85 | 2.23.0 | ||
86 | |||
87 | -- | ||
88 | libvir-list mailing list | ||
89 | libvir-list@redhat.com | ||
90 | https://www.redhat.com/mailman/listinfo/libvir-list | diff view generated by jsdifflib |
1 | IOThread AioContexts are likely to consist only of event sources like | 1 | From: Li Hangjing <lihangjing@baidu.com> |
---|---|---|---|
2 | virtqueue ioeventfds and LinuxAIO completion eventfds that are pollable | ||
3 | from userspace (without system calls). | ||
4 | 2 | ||
5 | We recently merged the AioContext polling feature but didn't enable it | 3 | When the number of a virtio-blk device's virtqueues is larger than |
6 | by default yet. I have gone back over the performance data on the | 4 | BITS_PER_LONG, the out-of-bounds access to bitmap[ ] will occur. |
7 | mailing list and picked a default polling value that gave good results. | ||
8 | 5 | ||
9 | Let's enable AioContext polling by default so users don't have another | 6 | Fixes: e21737ab15 ("virtio-blk: multiqueue batch notify") |
10 | switch they need to set manually. If performance regressions are found | 7 | Cc: qemu-stable@nongnu.org |
11 | we can still disable this for the QEMU 2.9 release. | 8 | Cc: Stefan Hajnoczi <stefanha@redhat.com> |
12 | 9 | Signed-off-by: Li Hangjing <lihangjing@baidu.com> | |
13 | Cc: Paolo Bonzini <pbonzini@redhat.com> | 10 | Reviewed-by: Xie Yongji <xieyongji@baidu.com> |
14 | Cc: Christian Borntraeger <borntraeger@de.ibm.com> | 11 | Reviewed-by: Chai Wen <chaiwen@baidu.com> |
15 | Cc: Karl Rister <krister@redhat.com> | 12 | Message-id: 20191216023050.48620-1-lihangjing@baidu.com |
16 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | 13 | Message-Id: <20191216023050.48620-1-lihangjing@baidu.com> |
17 | Message-id: 20170126170119.27876-1-stefanha@redhat.com | ||
18 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | 14 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> |
19 | --- | 15 | --- |
20 | iothread.c | 14 ++++++++++++++ | 16 | hw/block/dataplane/virtio-blk.c | 2 +- |
21 | 1 file changed, 14 insertions(+) | 17 | 1 file changed, 1 insertion(+), 1 deletion(-) |
22 | 18 | ||
23 | diff --git a/iothread.c b/iothread.c | 19 | diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c |
24 | index XXXXXXX..XXXXXXX 100644 | 20 | index XXXXXXX..XXXXXXX 100644 |
25 | --- a/iothread.c | 21 | --- a/hw/block/dataplane/virtio-blk.c |
26 | +++ b/iothread.c | 22 | +++ b/hw/block/dataplane/virtio-blk.c |
27 | @@ -XXX,XX +XXX,XX @@ typedef ObjectClass IOThreadClass; | 23 | @@ -XXX,XX +XXX,XX @@ static void notify_guest_bh(void *opaque) |
28 | #define IOTHREAD_CLASS(klass) \ | 24 | memset(s->batch_notify_vqs, 0, sizeof(bitmap)); |
29 | OBJECT_CLASS_CHECK(IOThreadClass, klass, TYPE_IOTHREAD) | 25 | |
30 | 26 | for (j = 0; j < nvqs; j += BITS_PER_LONG) { | |
31 | +/* Benchmark results from 2016 on NVMe SSD drives show max polling times around | 27 | - unsigned long bits = bitmap[j]; |
32 | + * 16-32 microseconds yield IOPS improvements for both iodepth=1 and iodepth=32 | 28 | + unsigned long bits = bitmap[j / BITS_PER_LONG]; |
33 | + * workloads. | 29 | |
34 | + */ | 30 | while (bits != 0) { |
35 | +#define IOTHREAD_POLL_MAX_NS_DEFAULT 32768ULL | 31 | unsigned i = j + ctzl(bits); |
36 | + | ||
37 | static __thread IOThread *my_iothread; | ||
38 | |||
39 | AioContext *qemu_get_current_aio_context(void) | ||
40 | @@ -XXX,XX +XXX,XX @@ static int iothread_stop(Object *object, void *opaque) | ||
41 | return 0; | ||
42 | } | ||
43 | |||
44 | +static void iothread_instance_init(Object *obj) | ||
45 | +{ | ||
46 | + IOThread *iothread = IOTHREAD(obj); | ||
47 | + | ||
48 | + iothread->poll_max_ns = IOTHREAD_POLL_MAX_NS_DEFAULT; | ||
49 | +} | ||
50 | + | ||
51 | static void iothread_instance_finalize(Object *obj) | ||
52 | { | ||
53 | IOThread *iothread = IOTHREAD(obj); | ||
54 | @@ -XXX,XX +XXX,XX @@ static const TypeInfo iothread_info = { | ||
55 | .parent = TYPE_OBJECT, | ||
56 | .class_init = iothread_class_init, | ||
57 | .instance_size = sizeof(IOThread), | ||
58 | + .instance_init = iothread_instance_init, | ||
59 | .instance_finalize = iothread_instance_finalize, | ||
60 | .interfaces = (InterfaceInfo[]) { | ||
61 | {TYPE_USER_CREATABLE}, | ||
62 | -- | 32 | -- |
63 | 2.9.3 | 33 | 2.23.0 |
64 | 34 | ||
35 | -- | ||
36 | libvir-list mailing list | ||
37 | libvir-list@redhat.com | ||
38 | https://www.redhat.com/mailman/listinfo/libvir-list | ||
65 | 39 | diff view generated by jsdifflib |