Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/bonzini-gitlab/tags/for-upstrea…
Browse files Browse the repository at this point in the history
…m' into staging

* fix --enable-fuzzing linker failures (Alexander)
* target/i386: Add bus lock debug exception support (Chenyi)
* update documentation for preferred boolean option syntax (Daniel)
* make SCSI io_timeout configurable (Hannes)
* fix handling of guest recoverable SCSI errors (myself)
* misc fixes (Pavel, Zheng Zhan Liang, Zihao)
* fix installation of binaries with entitlements (Akihiko)

# gpg: Signature made Thu 25 Feb 2021 14:41:56 GMT
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* remotes/bonzini-gitlab/tags/for-upstream: (29 commits)
  tcg/i386: rdpmc: fix the the condtions
  chardev: do not use short form boolean options in non-QemuOpts character device descriptions
  vl: deprecate -writeconfig
  target/i386: Add bus lock debug exception support
  qom/object.c: Fix typo
  target/i386: update to show preferred boolean syntax for -cpu
  docs: update to show preferred boolean syntax for -cpu
  docs: update to show preferred boolean syntax for -vnc
  docs: update to show preferred boolean syntax for -chardev
  qemu-options: update to show preferred boolean syntax for -vnc
  qemu-options: update to show preferred boolean syntax for -incoming
  qemu-options: update to show preferred boolean syntax for -netdev
  qemu-options: update to show preferred boolean syntax for -spice
  qemu-options: update to show preferred boolean syntax for -chardev
  gdbstub: use preferred boolean option syntax
  char: don't fail when client is not connected
  scsi: drop 'result' argument from command_complete callback
  scsi-disk: pass guest recoverable errors through even for rerror=stop
  scsi-disk: pass SCSI status to scsi_handle_rw_error
  scsi: introduce scsi_sense_from_errno()
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  • Loading branch information
pm215 committed Mar 2, 2021
2 parents cbcf098 + c45b426 commit 07dbfdd
Show file tree
Hide file tree
Showing 50 changed files with 406 additions and 322 deletions.
13 changes: 8 additions & 5 deletions chardev/char-socket.c
Expand Up @@ -387,6 +387,9 @@ static ssize_t tcp_chr_recv(Chardev *chr, char *buf, size_t len)
static GSource *tcp_chr_add_watch(Chardev *chr, GIOCondition cond)
{
SocketChardev *s = SOCKET_CHARDEV(chr);
if (!s->ioc) {
return NULL;
}
return qio_channel_create_watch(s->ioc, cond);
}

Expand Down Expand Up @@ -449,7 +452,7 @@ static char *qemu_chr_socket_address(SocketChardev *s, const char *prefix)
qemu_chr_socket_protocol(s),
s->addr->u.inet.host,
s->addr->u.inet.port,
s->is_listen ? ",server" : "");
s->is_listen ? ",server=on" : "");
break;
case SOCKET_ADDRESS_TYPE_UNIX:
{
Expand All @@ -467,12 +470,12 @@ static char *qemu_chr_socket_address(SocketChardev *s, const char *prefix)

return g_strdup_printf("%sunix:%s%s%s%s", prefix, sa->path,
abstract, tight,
s->is_listen ? ",server" : "");
s->is_listen ? ",server=on" : "");
break;
}
case SOCKET_ADDRESS_TYPE_FD:
return g_strdup_printf("%sfd:%s%s", prefix, s->addr->u.fd.str,
s->is_listen ? ",server" : "");
s->is_listen ? ",server=on" : "");
break;
case SOCKET_ADDRESS_TYPE_VSOCK:
return g_strdup_printf("%svsock:%s:%s", prefix,
Expand Down Expand Up @@ -604,7 +607,7 @@ static char *qemu_chr_compute_filename(SocketChardev *s)
case AF_UNIX:
return g_strdup_printf("unix:%s%s",
((struct sockaddr_un *)(ss))->sun_path,
s->is_listen ? ",server" : "");
s->is_listen ? ",server=on" : "");
#endif
case AF_INET6:
left = "[";
Expand All @@ -618,7 +621,7 @@ static char *qemu_chr_compute_filename(SocketChardev *s)
return g_strdup_printf("%s:%s%s%s:%s%s <-> %s%s%s:%s",
qemu_chr_socket_protocol(s),
left, shost, right, sserv,
s->is_listen ? ",server" : "",
s->is_listen ? ",server=on" : "",
left, phost, right, pserv);

default:
Expand Down
24 changes: 15 additions & 9 deletions configure
Expand Up @@ -463,7 +463,7 @@ skip_meson=no
gettext="auto"
fuse="auto"
fuse_lseek="auto"
multiprocess="no"
multiprocess="auto"

malloc_trim="auto"

Expand Down Expand Up @@ -798,7 +798,6 @@ Linux)
linux="yes"
linux_user="yes"
vhost_user=${default_feature:-yes}
multiprocess=${default_feature:-yes}
;;
esac

Expand Down Expand Up @@ -1558,9 +1557,9 @@ for opt do
;;
--disable-fuse-lseek) fuse_lseek="disabled"
;;
--enable-multiprocess) multiprocess="yes"
--enable-multiprocess) multiprocess="enabled"
;;
--disable-multiprocess) multiprocess="no"
--disable-multiprocess) multiprocess="disabled"
;;
*)
echo "ERROR: unknown option $opt"
Expand Down Expand Up @@ -1914,7 +1913,7 @@ disabled with --disable-FEATURE, default is enabled if available
libdaxctl libdaxctl support
fuse FUSE block device export
fuse-lseek SEEK_HOLE/SEEK_DATA support for FUSE exports
multiprocess Multiprocess QEMU support
multiprocess Out of process device emulation support
NOTE: The object files are built at the place where configure is launched
EOF
Expand Down Expand Up @@ -6089,14 +6088,21 @@ fi
if test "$have_mlockall" = "yes" ; then
echo "HAVE_MLOCKALL=y" >> $config_host_mak
fi
if test "$multiprocess" = "yes" ; then
echo "CONFIG_MULTIPROCESS_ALLOWED=y" >> $config_host_mak
fi
if test "$fuzzing" = "yes" ; then
# If LIB_FUZZING_ENGINE is set, assume we are running on OSS-Fuzz, and the
# needed CFLAGS have already been provided
if test -z "${LIB_FUZZING_ENGINE+xxx}" ; then
# Add CFLAGS to tell clang to add fuzzer-related instrumentation to all the
# compiled code.
QEMU_CFLAGS="$QEMU_CFLAGS -fsanitize=fuzzer-no-link"
# To build non-fuzzer binaries with --enable-fuzzing, link everything with
# fsanitize=fuzzer-no-link. Otherwise, the linker will be unable to bind
# the fuzzer-related callbacks added by instrumentation.
QEMU_LDFLAGS="$QEMU_LDFLAGS -fsanitize=fuzzer-no-link"
# For the actual fuzzer binaries, we need to link against the libfuzzer
# library. Provide the flags for doing this in FUZZ_EXE_LDFLAGS. The meson
# rule for the fuzzer adds these to the link_args. They need to be
# configurable, to support OSS-Fuzz
FUZZ_EXE_LDFLAGS="-fsanitize=fuzzer"
else
FUZZ_EXE_LDFLAGS="$LIB_FUZZING_ENGINE"
Expand Down Expand Up @@ -6424,7 +6430,7 @@ NINJA=$ninja $meson setup \
-Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng \
-Dattr=$attr -Ddefault_devices=$default_devices \
-Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
-Dvhost_user_blk_server=$vhost_user_blk_server \
-Dvhost_user_blk_server=$vhost_user_blk_server -Dmultiprocess=$multiprocess \
-Dfuse=$fuse -Dfuse_lseek=$fuse_lseek -Dguest_agent_msi=$guest_agent_msi \
$(if test "$default_features" = no; then echo "-Dauto_features=disabled"; fi) \
-Dtcg_interpreter=$tcg_interpreter \
Expand Down
12 changes: 6 additions & 6 deletions docs/COLO-FT.txt
Expand Up @@ -158,15 +158,15 @@ instance.

# imagefolder="/mnt/vms/colo-test-primary"

# qemu-system-x86_64 -enable-kvm -cpu qemu64,+kvmclock -m 512 -smp 1 -qmp stdio \
# qemu-system-x86_64 -enable-kvm -cpu qemu64,kvmclock=on -m 512 -smp 1 -qmp stdio \
-device piix3-usb-uhci -device usb-tablet -name primary \
-netdev tap,id=hn0,vhost=off,helper=/usr/lib/qemu/qemu-bridge-helper \
-device rtl8139,id=e0,netdev=hn0 \
-chardev socket,id=mirror0,host=0.0.0.0,port=9003,server,nowait \
-chardev socket,id=compare1,host=0.0.0.0,port=9004,server,wait \
-chardev socket,id=compare0,host=127.0.0.1,port=9001,server,nowait \
-chardev socket,id=mirror0,host=0.0.0.0,port=9003,server=on,wait=off \
-chardev socket,id=compare1,host=0.0.0.0,port=9004,server=on,wait=on \
-chardev socket,id=compare0,host=127.0.0.1,port=9001,server=on,wait=off \
-chardev socket,id=compare0-0,host=127.0.0.1,port=9001 \
-chardev socket,id=compare_out,host=127.0.0.1,port=9005,server,nowait \
-chardev socket,id=compare_out,host=127.0.0.1,port=9005,server=on,wait=off \
-chardev socket,id=compare_out0,host=127.0.0.1,port=9005 \
-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0 \
-object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out \
Expand All @@ -189,7 +189,7 @@ any IP's here, except for the $primary_ip variable.

# qemu-img create -f qcow2 $imagefolder/secondary-hidden.qcow2 10G

# qemu-system-x86_64 -enable-kvm -cpu qemu64,+kvmclock -m 512 -smp 1 -qmp stdio \
# qemu-system-x86_64 -enable-kvm -cpu qemu64,kvmclock=on -m 512 -smp 1 -qmp stdio \
-device piix3-usb-uhci -device usb-tablet -name secondary \
-netdev tap,id=hn0,vhost=off,helper=/usr/lib/qemu/qemu-bridge-helper \
-device rtl8139,id=e0,netdev=hn0 \
Expand Down
6 changes: 4 additions & 2 deletions docs/ccid.txt
Expand Up @@ -109,7 +109,8 @@ NSS. Registration can be done from Firefox or the command line:

on the host specify the ccid-card-passthru device with a suitable chardev:

qemu -chardev socket,server,host=0.0.0.0,port=2001,id=ccid,nowait -usb -device usb-ccid -device ccid-card-passthru,chardev=ccid
qemu -chardev socket,server=on,host=0.0.0.0,port=2001,id=ccid,wait=off \
-usb -device usb-ccid -device ccid-card-passthru,chardev=ccid

on the client run vscclient, built when you built QEMU:

Expand All @@ -125,7 +126,8 @@ Follow instructions as per #4, except run QEMU and vscclient as follows:
Run qemu as per #5, and run vscclient from the "fake-smartcard"
directory as follows:

qemu -chardev socket,server,host=0.0.0.0,port=2001,id=ccid,nowait -usb -device usb-ccid -device ccid-card-passthru,chardev=ccid
qemu -chardev socket,server=on,host=0.0.0.0,port=2001,id=ccid,wait=off \
-usb -device usb-ccid -device ccid-card-passthru,chardev=ccid
vscclient -e "db=\"sql:$PWD\" use_hw=no soft=(,Test,CAC,,id-cert,signing-cert,encryption-cert)" <qemu-host> 2001


Expand Down
16 changes: 8 additions & 8 deletions docs/colo-proxy.txt
Expand Up @@ -164,11 +164,11 @@ clearly describe the usage.
Primary(ip:3.3.3.3):
-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
-device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server,nowait
-chardev socket,id=compare1,host=3.3.3.3,port=9004,server,nowait
-chardev socket,id=compare0,host=3.3.3.3,port=9001,server,nowait
-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server=on,wait=off
-chardev socket,id=compare1,host=3.3.3.3,port=9004,server=on,wait=off
-chardev socket,id=compare0,host=3.3.3.3,port=9001,server=on,wait=off
-chardev socket,id=compare0-0,host=3.3.3.3,port=9001
-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server,nowait
-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server=on,wait=off
-chardev socket,id=compare_out0,host=3.3.3.3,port=9005
-object iothread,id=iothread1
-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
Expand All @@ -190,11 +190,11 @@ If you want to use virtio-net-pci or other driver with vnet_header:
Primary(ip:3.3.3.3):
-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
-device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server,nowait
-chardev socket,id=compare1,host=3.3.3.3,port=9004,server,nowait
-chardev socket,id=compare0,host=3.3.3.3,port=9001,server,nowait
-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server=on,wait=off
-chardev socket,id=compare1,host=3.3.3.3,port=9004,server=on,wait=off
-chardev socket,id=compare0,host=3.3.3.3,port=9001,server=on,wait=off
-chardev socket,id=compare0-0,host=3.3.3.3,port=9001
-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server,nowait
-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server=on,wait=off
-chardev socket,id=compare_out0,host=3.3.3.3,port=9005
-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0,vnet_hdr_support
-object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out,vnet_hdr_support
Expand Down
2 changes: 1 addition & 1 deletion docs/devel/writing-qmp-commands.txt
Expand Up @@ -39,7 +39,7 @@ shown here.
First, QEMU should be started like this:

# qemu-system-TARGET [...] \
-chardev socket,id=qmp,port=4444,host=localhost,server \
-chardev socket,id=qmp,port=4444,host=localhost,server=on \
-mon chardev=qmp,mode=control,pretty=on

Then, in a different terminal:
Expand Down
2 changes: 1 addition & 1 deletion docs/interop/firmware.json
Expand Up @@ -129,7 +129,7 @@
# "-machine smm=on". (On the "pc-q35-*" machine types of
# the @i386 emulation target, @requires-smm presents
# further CPU requirements; one combination known to work
# is "-cpu coreduo,-nx".) If the firmware is marked as
# is "-cpu coreduo,nx=off".) If the firmware is marked as
# both @secure-boot and @requires-smm, then write
# accesses to the pflash chip (NVRAM) that holds the UEFI
# variable store must be restricted to code that executes
Expand Down
4 changes: 2 additions & 2 deletions docs/interop/live-block-operations.rst
Expand Up @@ -133,7 +133,7 @@ socket::
-M q35 -nodefaults -m 512 \
-blockdev node-name=node-A,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./a.qcow2 \
-device virtio-blk,drive=node-A,id=virtio0 \
-monitor stdio -qmp unix:/tmp/qmp-sock,server,nowait
-monitor stdio -qmp unix:/tmp/qmp-sock,server=on,wait=off

The ``-blockdev`` command-line option, used above, is available from
QEMU 2.9 onwards. In the above invocation, notice the ``node-name``
Expand Down Expand Up @@ -698,7 +698,7 @@ it could be located elsewhere)::
-M q35 -nodefaults -m 512 \
-blockdev node-name=node-TargetDisk,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./target-disk.qcow2 \
-device virtio-blk,drive=node-TargetDisk,id=virtio0 \
-S -monitor stdio -qmp unix:./qmp-sock2,server,nowait \
-S -monitor stdio -qmp unix:./qmp-sock2,server=on,wait=off \
-incoming tcp:localhost:6666

Given the disk image chain on source QEMU::
Expand Down
4 changes: 2 additions & 2 deletions docs/interop/qmp-intro.txt
Expand Up @@ -26,15 +26,15 @@ Usage
You can use the -qmp option to enable QMP. For example, the following
makes QMP available on localhost port 4444:

$ qemu [...] -qmp tcp:localhost:4444,server,nowait
$ qemu [...] -qmp tcp:localhost:4444,server=on,wait=off

However, for more flexibility and to make use of more options, the -mon
command-line option should be used. For instance, the following example
creates one HMP instance (human monitor) on stdio and one QMP instance
on localhost port 4444:

$ qemu [...] -chardev stdio,id=mon0 -mon chardev=mon0,mode=readline \
-chardev socket,id=mon1,host=localhost,port=4444,server,nowait \
-chardev socket,id=mon1,host=localhost,port=4444,server=on,wait=off \
-mon chardev=mon1,mode=control,pretty=on

Please, refer to QEMU's manpage for more information.
Expand Down
2 changes: 1 addition & 1 deletion docs/system/cpu-hotplug.rst
Expand Up @@ -14,7 +14,7 @@ vCPU hotplug
$ qemu-system-x86_64 -display none -no-user-config -m 2048 \
-nodefaults -monitor stdio -machine pc,accel=kvm,usb=off \
-smp 1,maxcpus=2 -cpu IvyBridge-IBRS \
-qmp unix:/tmp/qmp-sock,server,nowait
-qmp unix:/tmp/qmp-sock,server=on,wait=off

(2) Run 'qmp-shell' (located in the source tree, under: "scripts/qmp/)
to connect to the just-launched QEMU::
Expand Down
4 changes: 2 additions & 2 deletions docs/system/cpu-models-x86.rst.inc
Expand Up @@ -364,7 +364,7 @@ Host passthrough with feature customization:

.. parsed-literal::

|qemu_system| -cpu host,-vmx,...
|qemu_system| -cpu host,vmx=off,...

Named CPU models:

Expand All @@ -376,7 +376,7 @@ Named CPU models with feature customization:

.. parsed-literal::

|qemu_system| -cpu Westmere,+pcid,...
|qemu_system| -cpu Westmere,pcid=on,...

Libvirt guest XML
^^^^^^^^^^^^^^^^^
Expand Down
7 changes: 7 additions & 0 deletions docs/system/deprecated.rst
Expand Up @@ -146,6 +146,13 @@ library enabled as a cryptography provider.
Neither the ``nettle`` library, or the built-in cryptography provider are
supported on FIPS enabled hosts.

``-writeconfig`` (since 6.0)
'''''''''''''''''''''''''''''

The ``-writeconfig`` option is not able to serialize the entire contents
of the QEMU command line. It is thus considered a failed experiment
and deprecated, with no current replacement.

QEMU Machine Protocol (QMP) commands
------------------------------------

Expand Down
2 changes: 1 addition & 1 deletion docs/system/s390x/3270.rst
Expand Up @@ -24,7 +24,7 @@ Example configuration

* Add a ``tn3270`` chardev and a ``x-terminal3270`` to the QEMU command line::

-chardev socket,id=ch0,host=0.0.0.0,port=2300,nowait,server,tn3270
-chardev socket,id=ch0,host=0.0.0.0,port=2300,wait=off,server=on,tn3270=on
-device x-terminal3270,chardev=ch0,devno=fe.0.000a,id=terminal0

* Start the guest. In the guest, use ``chccwdev -e 0.0.000a`` to enable
Expand Down
2 changes: 1 addition & 1 deletion docs/system/target-avr.rst
Expand Up @@ -24,7 +24,7 @@ AVR cpu
- Continuous non interrupted execution with serial output into telnet window::

qemu-system-avr -M mega2560 -bios demo.elf -nographic \
-serial tcp::5678,server,nowait
-serial tcp::5678,server=on,wait=off

and then in another shell::

Expand Down
8 changes: 4 additions & 4 deletions docs/system/vnc-security.rst
Expand Up @@ -44,7 +44,7 @@ the password all clients will be rejected.

.. parsed-literal::
|qemu_system| [...OPTIONS...] -vnc :1,password -monitor stdio
|qemu_system| [...OPTIONS...] -vnc :1,password=on -monitor stdio
(qemu) change vnc password
Password: ********
(qemu)
Expand Down Expand Up @@ -104,7 +104,7 @@ authentication to provide two layers of authentication for clients.
|qemu_system| [...OPTIONS...] \
-object tls-creds-x509,id=tls0,dir=/etc/pki/qemu,endpoint=server,verify-peer=on \
-vnc :1,tls-creds=tls0,password -monitor stdio
-vnc :1,tls-creds=tls0,password=on -monitor stdio
(qemu) change vnc password
Password: ********
(qemu)
Expand All @@ -128,7 +128,7 @@ can be launched with:

.. parsed-literal::
|qemu_system| [...OPTIONS...] -vnc :1,sasl -monitor stdio
|qemu_system| [...OPTIONS...] -vnc :1,sasl=on -monitor stdio
.. _vnc_005fsec_005fcertificate_005fsasl:

Expand All @@ -146,7 +146,7 @@ x509 options:
|qemu_system| [...OPTIONS...] \
-object tls-creds-x509,id=tls0,dir=/etc/pki/qemu,endpoint=server,verify-peer=on \
-vnc :1,tls-creds=tls0,sasl -monitor stdio
-vnc :1,tls-creds=tls0,sasl=on -monitor stdio
.. _vnc_005fsetup_005fsasl:

Expand Down
4 changes: 2 additions & 2 deletions docs/tools/qemu-storage-daemon.rst
Expand Up @@ -69,7 +69,7 @@ Standard options:
a description of character device properties. A common character device
definition configures a UNIX domain socket::

--chardev socket,id=char1,path=/tmp/qmp.sock,server,nowait
--chardev socket,id=char1,path=/tmp/qmp.sock,server=on,wait=off

.. option:: --export [type=]nbd,id=<id>,node-name=<node-name>[,name=<export-name>][,writable=on|off][,bitmap=<name>]
--export [type=]vhost-user-blk,id=<id>,node-name=<node-name>,addr.type=unix,addr.path=<socket-path>[,writable=on|off][,logical-block-size=<block-size>][,num-queues=<num-queues>]
Expand Down Expand Up @@ -124,7 +124,7 @@ Launch the daemon with QMP monitor socket ``qmp.sock`` so clients can execute
QMP commands::

$ qemu-storage-daemon \
--chardev socket,path=qmp.sock,server,nowait,id=char1 \
--chardev socket,path=qmp.sock,server=on,wait=off,id=char1 \
--monitor chardev=char1

Export raw image file ``disk.img`` over NBD UNIX domain socket ``nbd.sock``::
Expand Down
2 changes: 1 addition & 1 deletion gdbstub.c
Expand Up @@ -3505,7 +3505,7 @@ int gdbserver_start(const char *device)
if (strstart(device, "tcp:", NULL)) {
/* enforce required TCP attributes */
snprintf(gdbstub_device_name, sizeof(gdbstub_device_name),
"%s,nowait,nodelay,server", device);
"%s,wait=off,delay=off,server=on", device);
device = gdbstub_device_name;
}
#ifndef _WIN32
Expand Down
5 changes: 2 additions & 3 deletions hw/scsi/esp-pci.c
Expand Up @@ -329,13 +329,12 @@ static const VMStateDescription vmstate_esp_pci_scsi = {
}
};

static void esp_pci_command_complete(SCSIRequest *req, uint32_t status,
size_t resid)
static void esp_pci_command_complete(SCSIRequest *req, size_t resid)
{
ESPState *s = req->hba_private;
PCIESPState *pci = container_of(s, PCIESPState, esp);

esp_command_complete(req, status, resid);
esp_command_complete(req, resid);
pci->dma_regs[DMA_WBC] = 0;
pci->dma_regs[DMA_STAT] |= DMA_STAT_DONE;
}
Expand Down

0 comments on commit 07dbfdd

Please sign in to comment.