qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 572ec5: dataplane: simplify indirect descript


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 572ec5: dataplane: simplify indirect descriptor read
Date: Mon, 09 Nov 2015 06:30:06 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 572ec519ed6fe68f10ec65963527536c2322eab0
      
https://github.com/qemu/qemu/commit/572ec519ed6fe68f10ec65963527536c2322eab0
  Author: Michael S. Tsirkin <address@hidden>
  Date:   2015-11-09 (Mon, 09 Nov 2015)

  Changed paths:
    M hw/virtio/dataplane/vring.c

  Log Message:
  -----------
  dataplane: simplify indirect descriptor read

Use address_space_read to make sure we handle the case of an indirect
descriptor crossing DIMM boundary correctly.

Signed-off-by: Michael S. Tsirkin <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Tested-by: Igor Mammedov <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 8347c53243b58ad5e4d623d2403853404e9043a1
      
https://github.com/qemu/qemu/commit/8347c53243b58ad5e4d623d2403853404e9043a1
  Author: Michael S. Tsirkin <address@hidden>
  Date:   2015-11-09 (Mon, 09 Nov 2015)

  Changed paths:
    M hw/virtio/dataplane/vring.c

  Log Message:
  -----------
  dataplane: support non-contigious s/g

bring_map currently fails if one of the entries it's mapping is
contigious in GPA but not HVA address space.  Introduce a mapped_len
parameter so it can handle this, returning the actual mapped length.

This will still fail if there's no space left in the sg, but luckily max
queue size in use is currently 256, while max sg size is 1024, so we
should be OK even is all entries happen to cross a single DIMM boundary.

Won't work well with very small DIMM sizes, unfortunately:
e.g. this will fail with 4K DIMMs where a single
request might span a large number of DIMMs.

Let's hope these are uncommon - at least we are not breaking things.

Reported-by: Stefan Hajnoczi <address@hidden>
Reported-by: Igor Mammedov <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
Tested-by: Igor Mammedov <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 5ceb9e39284b69d2e1b01da3cb1894ad4b2b4606
      
https://github.com/qemu/qemu/commit/5ceb9e39284b69d2e1b01da3cb1894ad4b2b4606
  Author: Fam Zheng <address@hidden>
  Date:   2015-11-09 (Mon, 09 Nov 2015)

  Changed paths:
    M include/block/aio.h

  Log Message:
  -----------
  aio: Introduce aio_external_disabled

This allows AioContext users to check the enable/disable state of
external clients.

Signed-off-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 37fcee5d1154b7a03c13582e128bcc31ad43e954
      
https://github.com/qemu/qemu/commit/37fcee5d1154b7a03c13582e128bcc31ad43e954
  Author: Fam Zheng <address@hidden>
  Date:   2015-11-09 (Mon, 09 Nov 2015)

  Changed paths:
    M aio-posix.c
    M aio-win32.c
    M async.c
    M include/block/aio.h

  Log Message:
  -----------
  aio: Introduce aio_context_setup

This is the place to initialize platform specific bits of AioContext.

Signed-off-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: fbe3fc5cb3cd9f9064e98c549684e821c353fe41
      
https://github.com/qemu/qemu/commit/fbe3fc5cb3cd9f9064e98c549684e821c353fe41
  Author: Fam Zheng <address@hidden>
  Date:   2015-11-09 (Mon, 09 Nov 2015)

  Changed paths:
    M aio-posix.c
    M include/block/aio.h

  Log Message:
  -----------
  aio: Introduce aio-epoll.c

To minimize code duplication, epoll is hooked into aio-posix's
aio_poll() instead of rolling its own. This approach also has both
compile-time and run-time switchability.

1) When QEMU starts with a small number of fds in the event loop, ppoll
is used.

2) When QEMU starts with a big number of fds, or when more devices are
hot plugged, epoll kicks in when the number of fds hits the threshold.

3) Some fds may not support epoll, such as tty based stdio. In this
case, it falls back to ppoll.

A rough benchmark with scsi-disk on virtio-scsi dataplane (epoll gets
enabled from 64 onward). Numbers are in MB/s.

===============================================
       |     master     |     epoll
       |                |
scsi disks # | read    randrw | read    randrw
-------------|----------------|----------------
1            | 86      36     | 92      45
8            | 87      43     | 86      41
64           | 71      32     | 70      38
128          | 48      24     | 58      31
256          | 37      19     | 57      28
===============================================

To comply with aio_{disable,enable}_external, we always use ppoll when
aio_external_disabled() is true.

[Removed #ifdef CONFIG_EPOLL around AioContext epollfd field declaration
since the field is also referenced outside CONFIG_EPOLL code.
--Stefan]

Signed-off-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 6bf1faa84877514971a20bb180b0ae5270bee571
      
https://github.com/qemu/qemu/commit/6bf1faa84877514971a20bb180b0ae5270bee571
  Author: Denis V. Lunev <address@hidden>
  Date:   2015-11-09 (Mon, 09 Nov 2015)

  Changed paths:
    M monitor.c

  Log Message:
  -----------
  monitor: add missed aio_context_acquire into vm_completion call

Signed-off-by: Denis V. Lunev <address@hidden>
CC: Stefan Hajnoczi <address@hidden>
CC: Kevin Wolf <address@hidden>
CC: Luiz Capitulino <address@hidden>
CC: Markus Armbruster <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 84aa0140dd4f04f5d993f0db14c40da8d3de2706
      
https://github.com/qemu/qemu/commit/84aa0140dd4f04f5d993f0db14c40da8d3de2706
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2015-11-09 (Mon, 09 Nov 2015)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  blockdev: acquire AioContext in hmp_commit()

This one slipped through.  Although we acquire AioContext when
committing all devices we don't for just a single device.

AioContext must be acquired before calling bdrv_*() functions to
synchronize access with other threads that may be using the AioContext.

Signed-off-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Denis V. Lunev <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 9d5c1dc117d1ad881bbc76f6990ee1f9e9f8ef7f
      
https://github.com/qemu/qemu/commit/9d5c1dc117d1ad881bbc76f6990ee1f9e9f8ef7f
  Author: Peter Maydell <address@hidden>
  Date:   2015-11-09 (Mon, 09 Nov 2015)

  Changed paths:
    M aio-posix.c
    M aio-win32.c
    M async.c
    M blockdev.c
    M hw/virtio/dataplane/vring.c
    M include/block/aio.h
    M monitor.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into 
staging

# gpg: Signature made Mon 09 Nov 2015 10:08:17 GMT using RSA key ID 81AB73C8
# gpg: Good signature from "Stefan Hajnoczi <address@hidden>"
# gpg:                 aka "Stefan Hajnoczi <address@hidden>"

* remotes/stefanha/tags/block-pull-request:
  blockdev: acquire AioContext in hmp_commit()
  monitor: add missed aio_context_acquire into vm_completion call
  aio: Introduce aio-epoll.c
  aio: Introduce aio_context_setup
  aio: Introduce aio_external_disabled
  dataplane: support non-contigious s/g
  dataplane: simplify indirect descriptor read

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/b3a9e57d92df...9d5c1dc117d1

reply via email to

[Prev in Thread] Current Thread [Next in Thread]