* Update the references to some doc files (use *.rst instead of *.txt)

* Bump minimum versions of some requirements after removing CentOS 7 support
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmC3L1IRHHRodXRoQHJl
 ZGhhdC5jb20ACgkQLtnXdP5wLbU8wA//aRAIn0Qa3xoZdsT434P99GHauCZ5ePq3
 meY4co69c+TfkQZ/b0xlyvT3+7bd9Ni92CQL7n/LtX5bs3pIhRjHNIsm50e4x6Da
 0jb422cKWfRIltXlCfdL/dnFRtJluH83M0seRGMvmhveuWPZ19oSIasEiQjeg//e
 KMNK5z4HEnJ1czb3Bf8p38bmmY/O/QEAA5wAqk7iJkJHz6T/GlqImLYYwpFPlHj6
 JQttm0aWsHrsqEXxnuV0/DT1yHyXDB6S4iuAvABZWhv/M/nCaXo0ib0gW5NPtRPo
 Yf3HO163F9/fewJCc1AUsBe1C/2UwmSWRhEtxpr9uuW2Mv9qEl3hkJwd4k6sEOvh
 U4i+GONC4eElPcmECKUfHA9EP+7faDs6xnM6Ev/PIEp+cPJ2QRfklZv4qpMUWYtb
 3KkADchOyVZAsdB8cGmnznDEVmno1Dt0adVUq8CF6uW6MwD3pb4838arrfwIfwOp
 g4yTI1AQQykkxxOaR7GSNoxWRti7TH4fzLhx/xXDd9TKIOWuOepiyuhB7+Q48WAJ
 6EW/JUIzOe7k3GsI0iBsk+y67ED2tpATiRKWWw4QS1BwIhNEMUqgZkucFfKE6Ze1
 B1Xw+Di+1CzrLHV6lCjtdLVmqWqcGcO43HqhSK4sodE87BDGGwy9UxE6oBVt2C1x
 HPQ6/omDlFk=
 =RAkI
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/thuth-gitlab/tags/pull-request-2021-06-02' into staging

* Update the references to some doc files (use *.rst instead of *.txt)
* Bump minimum versions of some requirements after removing CentOS 7 support

# gpg: Signature made Wed 02 Jun 2021 08:12:18 BST
# gpg:                using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
# gpg:                issuer "thuth@redhat.com"
# gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full]
# gpg:                 aka "Thomas Huth <thuth@redhat.com>" [full]
# gpg:                 aka "Thomas Huth <huth@tuxfamily.org>" [full]
# gpg:                 aka "Thomas Huth <th.huth@posteo.de>" [unknown]
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5

* remotes/thuth-gitlab/tags/pull-request-2021-06-02:
  configure: bump min required CLang to 6.0 / XCode 10.0
  configure: bump min required GCC to 7.5.0
  configure: bump min required glib version to 2.56
  tests/docker: drop CentOS 7 container
  tests/vm: convert centos VM recipe to CentOS 8
  crypto: drop used conditional check
  crypto: bump min gnutls to 3.5.18, dropping RHEL-7 support
  crypto: bump min gcrypt to 1.8.0, dropping RHEL-7 support
  crypto: drop back compatibility typedefs for nettle
  crypto: bump min nettle to 3.4, dropping RHEL-7 support
  patchew: move quick build job from CentOS 7 to CentOS 8 container
  block/ssh: Bump minimum libssh version to 0.8.7
  docs: fix references to docs/devel/s390-dasd-ipl.rst
  docs: fix references to docs/specs/tpm.rst
  docs: fix references to docs/devel/build-system.rst
  docs: fix references to docs/devel/atomics.rst
  docs: fix references to docs/devel/tracing.rst

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2021-06-02 17:08:11 +01:00
commit 8c345b3e6a
97 changed files with 141 additions and 591 deletions

View file

@ -626,41 +626,6 @@ build-coroutine-sigaltstack:
--enable-trace-backends=ftrace --enable-trace-backends=ftrace
MAKE_CHECK_ARGS: check-unit MAKE_CHECK_ARGS: check-unit
# Most jobs test latest gcrypt or nettle builds
#
# These jobs test old gcrypt and nettle from RHEL7
# which had some API differences.
crypto-old-nettle:
extends: .native_build_job_template
needs:
job: amd64-centos7-container
variables:
IMAGE: centos7
TARGETS: x86_64-softmmu x86_64-linux-user
CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
MAKE_CHECK_ARGS: check
crypto-old-gcrypt:
extends: .native_build_job_template
needs:
job: amd64-centos7-container
variables:
IMAGE: centos7
TARGETS: x86_64-softmmu x86_64-linux-user
CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
MAKE_CHECK_ARGS: check
crypto-only-gnutls:
extends: .native_build_job_template
needs:
job: amd64-centos7-container
variables:
IMAGE: centos7
TARGETS: x86_64-softmmu x86_64-linux-user
CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
MAKE_CHECK_ARGS: check
# Check our reduced build configurations # Check our reduced build configurations
build-without-default-devices: build-without-default-devices:
extends: .native_build_job_template extends: .native_build_job_template

View file

@ -7,11 +7,6 @@ amd64-alpine-container:
variables: variables:
NAME: alpine NAME: alpine
amd64-centos7-container:
extends: .container_job_template
variables:
NAME: centos7
amd64-debian11-container: amd64-debian11-container:
extends: .container_job_template extends: .container_job_template
variables: variables:

View file

@ -88,7 +88,7 @@ email:
more information: more information:
{{ logtext }} {{ logtext }}
{% elif test == "docker-mingw@fedora" or test == "docker-quick@centos7" or test == "asan" %} {% elif test == "docker-mingw@fedora" or test == "docker-quick@centos8" or test == "asan" %}
Hi, Hi,
This series failed the {{ test }} build test. Please find the testing commands and This series failed the {{ test }} build test. Please find the testing commands and
@ -124,13 +124,13 @@ testing:
script: | script: |
#!/bin/bash #!/bin/bash
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1 time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
docker-quick@centos7: docker-quick@centos8:
enabled: false enabled: false
requirements: docker,x86_64 requirements: docker,x86_64
timeout: 3600 timeout: 3600
script: | script: |
#!/bin/bash #!/bin/bash
time make docker-test-quick@centos7 SHOW_ENV=1 J=14 NETWORK=1 time make docker-test-quick@centos8 SHOW_ENV=1 J=14 NETWORK=1
checkpatch: checkpatch:
enabled: true enabled: true
requirements: '' requirements: ''

View file

@ -2692,7 +2692,7 @@ F: scripts/tracetool.py
F: scripts/tracetool/ F: scripts/tracetool/
F: scripts/qemu-trace-stap* F: scripts/qemu-trace-stap*
F: docs/tools/qemu-trace-stap.rst F: docs/tools/qemu-trace-stap.rst
F: docs/devel/tracing.txt F: docs/devel/tracing.rst
T: git https://github.com/stefanha/qemu.git tracing T: git https://github.com/stefanha/qemu.git tracing
TPM TPM
@ -3361,7 +3361,7 @@ Documentation
Build system architecture Build system architecture
M: Daniel P. Berrange <berrange@redhat.com> M: Daniel P. Berrange <berrange@redhat.com>
S: Odd Fixes S: Odd Fixes
F: docs/devel/build-system.txt F: docs/devel/build-system.rst
GIT Data Mining Config GIT Data Mining Config
M: Alex Bennée <alex.bennee@linaro.org> M: Alex Bennée <alex.bennee@linaro.org>

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# kvm-all.c # kvm-all.c
kvm_ioctl(int type, void *arg) "type 0x%x, arg %p" kvm_ioctl(int type, void *arg) "type 0x%x, arg %p"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# TCG related tracing # TCG related tracing
# cpu-exec.c # cpu-exec.c

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# alsaaudio.c # alsaaudio.c
alsa_revents(int revents) "revents = %d" alsa_revents(int revents) "revents = %d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# base.c # base.c
qauthz_is_allowed(void *authz, const char *identity, bool allowed) "AuthZ %p check identity=%s allowed=%d" qauthz_is_allowed(void *authz, const char *identity, bool allowed) "AuthZ %p check identity=%s allowed=%d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# tpm_passthrough.c # tpm_passthrough.c
tpm_passthrough_handle_request(void *cmd) "processing command %p" tpm_passthrough_handle_request(void *cmd) "processing command %p"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# dbus-vmstate.c # dbus-vmstate.c
dbus_vmstate_pre_save(void) dbus_vmstate_pre_save(void)

View file

@ -277,7 +277,6 @@ static void ssh_parse_filename(const char *filename, QDict *options,
static int check_host_key_knownhosts(BDRVSSHState *s, Error **errp) static int check_host_key_knownhosts(BDRVSSHState *s, Error **errp)
{ {
int ret; int ret;
#ifdef HAVE_LIBSSH_0_8
enum ssh_known_hosts_e state; enum ssh_known_hosts_e state;
int r; int r;
ssh_key pubkey; ssh_key pubkey;
@ -343,46 +342,6 @@ static int check_host_key_knownhosts(BDRVSSHState *s, Error **errp)
error_setg(errp, "error while checking for known server (%d)", state); error_setg(errp, "error while checking for known server (%d)", state);
goto out; goto out;
} }
#else /* !HAVE_LIBSSH_0_8 */
int state;
state = ssh_is_server_known(s->session);
trace_ssh_server_status(state);
switch (state) {
case SSH_SERVER_KNOWN_OK:
/* OK */
trace_ssh_check_host_key_knownhosts();
break;
case SSH_SERVER_KNOWN_CHANGED:
ret = -EINVAL;
error_setg(errp,
"host key does not match the one in known_hosts; this "
"may be a possible attack");
goto out;
case SSH_SERVER_FOUND_OTHER:
ret = -EINVAL;
error_setg(errp,
"host key for this server not found, another type exists");
goto out;
case SSH_SERVER_FILE_NOT_FOUND:
ret = -ENOENT;
error_setg(errp, "known_hosts file not found");
goto out;
case SSH_SERVER_NOT_KNOWN:
ret = -EINVAL;
error_setg(errp, "no host key was found in known_hosts");
goto out;
case SSH_SERVER_ERROR:
ret = -EINVAL;
error_setg(errp, "server error");
goto out;
default:
ret = -EINVAL;
error_setg(errp, "error while checking for known server (%d)", state);
goto out;
}
#endif /* !HAVE_LIBSSH_0_8 */
/* known_hosts checking successful. */ /* known_hosts checking successful. */
ret = 0; ret = 0;
@ -438,11 +397,7 @@ check_host_key_hash(BDRVSSHState *s, const char *hash,
unsigned char *server_hash; unsigned char *server_hash;
size_t server_hash_len; size_t server_hash_len;
#ifdef HAVE_LIBSSH_0_8
r = ssh_get_server_publickey(s->session, &pubkey); r = ssh_get_server_publickey(s->session, &pubkey);
#else
r = ssh_get_publickey(s->session, &pubkey);
#endif
if (r != SSH_OK) { if (r != SSH_OK) {
session_error_setg(errp, s, "failed to read remote host key"); session_error_setg(errp, s, "failed to read remote host key");
return -EINVAL; return -EINVAL;
@ -1233,8 +1188,6 @@ static void unsafe_flush_warning(BDRVSSHState *s, const char *what)
} }
} }
#ifdef HAVE_LIBSSH_0_8
static coroutine_fn int ssh_flush(BDRVSSHState *s, BlockDriverState *bs) static coroutine_fn int ssh_flush(BDRVSSHState *s, BlockDriverState *bs)
{ {
int r; int r;
@ -1271,18 +1224,6 @@ static coroutine_fn int ssh_co_flush(BlockDriverState *bs)
return ret; return ret;
} }
#else /* !HAVE_LIBSSH_0_8 */
static coroutine_fn int ssh_co_flush(BlockDriverState *bs)
{
BDRVSSHState *s = bs->opaque;
unsafe_flush_warning(s, "libssh >= 0.8.0");
return 0;
}
#endif /* !HAVE_LIBSSH_0_8 */
static int64_t ssh_getlength(BlockDriverState *bs) static int64_t ssh_getlength(BlockDriverState *bs)
{ {
BDRVSSHState *s = bs->opaque; BDRVSSHState *s = bs->opaque;

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# ../block.c # ../block.c
bdrv_open_common(void *bs, const char *filename, int flags, const char *format_name) "bs %p filename \"%s\" flags 0x%x format_name \"%s\"" bdrv_open_common(void *bs, const char *filename, int flags, const char *format_name) "bs %p filename \"%s\" flags 0x%x format_name \"%s\""

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# wctablet.c # wctablet.c
wct_init(void) "" wct_init(void) ""

59
configure vendored
View file

@ -407,7 +407,6 @@ gnutls="$default_feature"
nettle="$default_feature" nettle="$default_feature"
nettle_xts="no" nettle_xts="no"
gcrypt="$default_feature" gcrypt="$default_feature"
gcrypt_hmac="no"
gcrypt_xts="no" gcrypt_xts="no"
qemu_private_xts="yes" qemu_private_xts="yes"
auth_pam="$default_feature" auth_pam="$default_feature"
@ -2057,17 +2056,17 @@ fi
cat > $TMPC << EOF cat > $TMPC << EOF
#if defined(__clang_major__) && defined(__clang_minor__) #if defined(__clang_major__) && defined(__clang_minor__)
# ifdef __apple_build_version__ # ifdef __apple_build_version__
# if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1) # if __clang_major__ < 10 || (__clang_major__ == 10 && __clang_minor__ < 0)
# error You need at least XCode Clang v5.1 to compile QEMU # error You need at least XCode Clang v10.0 to compile QEMU
# endif # endif
# else # else
# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4) # if __clang_major__ < 6 || (__clang_major__ == 6 && __clang_minor__ < 0)
# error You need at least Clang v3.4 to compile QEMU # error You need at least Clang v6.0 to compile QEMU
# endif # endif
# endif # endif
#elif defined(__GNUC__) && defined(__GNUC_MINOR__) #elif defined(__GNUC__) && defined(__GNUC_MINOR__)
# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) # if __GNUC__ < 7 || (__GNUC__ == 7 && __GNUC_MINOR__ < 5)
# error You need at least GCC v4.8 to compile QEMU # error You need at least GCC v7.5.0 to compile QEMU
# endif # endif
#else #else
# error You either need GCC or Clang to compiler QEMU # error You either need GCC or Clang to compiler QEMU
@ -2075,7 +2074,7 @@ cat > $TMPC << EOF
int main (void) { return 0; } int main (void) { return 0; }
EOF EOF
if ! compile_prog "" "" ; then if ! compile_prog "" "" ; then
error_exit "You need at least GCC v4.8 or Clang v3.4 (or XCode Clang v5.1)" error_exit "You need at least GCC v7.5 or Clang v6.0 (or XCode Clang v10.0)"
fi fi
# Accumulate -Wfoo and -Wno-bar separately. # Accumulate -Wfoo and -Wno-bar separately.
@ -2802,7 +2801,7 @@ fi
if test "$gnutls" != "no"; then if test "$gnutls" != "no"; then
pass="no" pass="no"
if $pkg_config --exists "gnutls >= 3.1.18"; then if $pkg_config --exists "gnutls >= 3.5.18"; then
gnutls_cflags=$($pkg_config --cflags gnutls) gnutls_cflags=$($pkg_config --cflags gnutls)
gnutls_libs=$($pkg_config --libs gnutls) gnutls_libs=$($pkg_config --libs gnutls)
# Packaging for the static libraries is not always correct. # Packaging for the static libraries is not always correct.
@ -2860,7 +2859,7 @@ has_libgcrypt() {
maj=`libgcrypt-config --version | awk -F . '{print $1}'` maj=`libgcrypt-config --version | awk -F . '{print $1}'`
min=`libgcrypt-config --version | awk -F . '{print $2}'` min=`libgcrypt-config --version | awk -F . '{print $2}'`
if test $maj != 1 || test $min -lt 5 if test $maj != 1 || test $min -lt 8
then then
return 1 return 1
fi fi
@ -2871,10 +2870,9 @@ has_libgcrypt() {
if test "$nettle" != "no"; then if test "$nettle" != "no"; then
pass="no" pass="no"
if $pkg_config --exists "nettle >= 2.7.1"; then if $pkg_config --exists "nettle >= 3.4"; then
nettle_cflags=$($pkg_config --cflags nettle) nettle_cflags=$($pkg_config --cflags nettle)
nettle_libs=$($pkg_config --libs nettle) nettle_libs=$($pkg_config --libs nettle)
nettle_version=$($pkg_config --modversion nettle)
# Link test to make sure the given libraries work (e.g for static). # Link test to make sure the given libraries work (e.g for static).
write_c_skeleton write_c_skeleton
if compile_prog "" "$nettle_libs" ; then if compile_prog "" "$nettle_libs" ; then
@ -2927,18 +2925,6 @@ if test "$gcrypt" != "no"; then
gcrypt="yes" gcrypt="yes"
cat > $TMPC << EOF cat > $TMPC << EOF
#include <gcrypt.h> #include <gcrypt.h>
int main(void) {
gcry_mac_hd_t handle;
gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
GCRY_MAC_FLAG_SECURE, NULL);
return 0;
}
EOF
if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
gcrypt_hmac=yes
fi
cat > $TMPC << EOF
#include <gcrypt.h>
int main(void) { int main(void) {
gcry_cipher_hd_t handle; gcry_cipher_hd_t handle;
gcry_cipher_open(&handle, GCRY_CIPHER_AES, GCRY_CIPHER_MODE_XTS, 0); gcry_cipher_open(&handle, GCRY_CIPHER_AES, GCRY_CIPHER_MODE_XTS, 0);
@ -3321,7 +3307,7 @@ done
########################################## ##########################################
# glib support probe # glib support probe
glib_req_ver=2.48 glib_req_ver=2.56
glib_modules=gthread-2.0 glib_modules=gthread-2.0
if test "$modules" = yes; then if test "$modules" = yes; then
glib_modules="$glib_modules gmodule-export-2.0" glib_modules="$glib_modules gmodule-export-2.0"
@ -3529,7 +3515,7 @@ fi
########################################## ##########################################
# libssh probe # libssh probe
if test "$libssh" != "no" ; then if test "$libssh" != "no" ; then
if $pkg_config --exists libssh; then if $pkg_config --exists "libssh >= 0.8.7"; then
libssh_cflags=$($pkg_config libssh --cflags) libssh_cflags=$($pkg_config libssh --cflags)
libssh_libs=$($pkg_config libssh --libs) libssh_libs=$($pkg_config libssh --libs)
libssh=yes libssh=yes
@ -3541,23 +3527,6 @@ if test "$libssh" != "no" ; then
fi fi
fi fi
##########################################
# Check for libssh 0.8
# This is done like this instead of using the LIBSSH_VERSION_* and
# SSH_VERSION_* macros because some distributions in the past shipped
# snapshots of the future 0.8 from Git, and those snapshots did not
# have updated version numbers (still referring to 0.7.0).
if test "$libssh" = "yes"; then
cat > $TMPC <<EOF
#include <libssh/libssh.h>
int main(void) { return ssh_get_server_publickey(NULL, NULL); }
EOF
if compile_prog "$libssh_cflags" "$libssh_libs"; then
libssh_cflags="-DHAVE_LIBSSH_0_8 $libssh_cflags"
fi
fi
########################################## ##########################################
# linux-aio probe # linux-aio probe
@ -5739,15 +5708,11 @@ if test "$gnutls" = "yes" ; then
fi fi
if test "$gcrypt" = "yes" ; then if test "$gcrypt" = "yes" ; then
echo "CONFIG_GCRYPT=y" >> $config_host_mak echo "CONFIG_GCRYPT=y" >> $config_host_mak
if test "$gcrypt_hmac" = "yes" ; then
echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
fi
echo "GCRYPT_CFLAGS=$gcrypt_cflags" >> $config_host_mak echo "GCRYPT_CFLAGS=$gcrypt_cflags" >> $config_host_mak
echo "GCRYPT_LIBS=$gcrypt_libs" >> $config_host_mak echo "GCRYPT_LIBS=$gcrypt_libs" >> $config_host_mak
fi fi
if test "$nettle" = "yes" ; then if test "$nettle" = "yes" ; then
echo "CONFIG_NETTLE=y" >> $config_host_mak echo "CONFIG_NETTLE=y" >> $config_host_mak
echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
echo "NETTLE_CFLAGS=$nettle_cflags" >> $config_host_mak echo "NETTLE_CFLAGS=$nettle_cflags" >> $config_host_mak
echo "NETTLE_LIBS=$nettle_libs" >> $config_host_mak echo "NETTLE_LIBS=$nettle_libs" >> $config_host_mak
fi fi

View file

@ -34,47 +34,6 @@
#include <nettle/xts.h> #include <nettle/xts.h>
#endif #endif
typedef void (*QCryptoCipherNettleFuncWrapper)(const void *ctx,
size_t length,
uint8_t *dst,
const uint8_t *src);
#if CONFIG_NETTLE_VERSION_MAJOR < 3
typedef nettle_crypt_func * QCryptoCipherNettleFuncNative;
typedef void * cipher_ctx_t;
typedef unsigned cipher_length_t;
#define CONST_CTX
#define cast5_set_key cast128_set_key
#define aes128_ctx aes_ctx
#define aes192_ctx aes_ctx
#define aes256_ctx aes_ctx
#define aes128_set_encrypt_key(c, k) \
aes_set_encrypt_key(c, 16, k)
#define aes192_set_encrypt_key(c, k) \
aes_set_encrypt_key(c, 24, k)
#define aes256_set_encrypt_key(c, k) \
aes_set_encrypt_key(c, 32, k)
#define aes128_set_decrypt_key(c, k) \
aes_set_decrypt_key(c, 16, k)
#define aes192_set_decrypt_key(c, k) \
aes_set_decrypt_key(c, 24, k)
#define aes256_set_decrypt_key(c, k) \
aes_set_decrypt_key(c, 32, k)
#define aes128_encrypt aes_encrypt
#define aes192_encrypt aes_encrypt
#define aes256_encrypt aes_encrypt
#define aes128_decrypt aes_decrypt
#define aes192_decrypt aes_decrypt
#define aes256_decrypt aes_decrypt
#else
typedef nettle_cipher_func * QCryptoCipherNettleFuncNative;
typedef const void * cipher_ctx_t;
typedef size_t cipher_length_t;
#define CONST_CTX const
#endif
static inline bool qcrypto_length_check(size_t len, size_t blocksize, static inline bool qcrypto_length_check(size_t len, size_t blocksize,
Error **errp) Error **errp)
{ {
@ -197,12 +156,12 @@ static const struct QCryptoCipherDriver NAME##_driver_ctr = { \
static void NAME##_xts_wrape(const void *ctx, size_t length, \ static void NAME##_xts_wrape(const void *ctx, size_t length, \
uint8_t *dst, const uint8_t *src) \ uint8_t *dst, const uint8_t *src) \
{ \ { \
ENCRYPT((cipher_ctx_t)ctx, length, dst, src); \ ENCRYPT((const void *)ctx, length, dst, src); \
} \ } \
static void NAME##_xts_wrapd(const void *ctx, size_t length, \ static void NAME##_xts_wrapd(const void *ctx, size_t length, \
uint8_t *dst, const uint8_t *src) \ uint8_t *dst, const uint8_t *src) \
{ \ { \
DECRYPT((cipher_ctx_t)ctx, length, dst, src); \ DECRYPT((const void *)ctx, length, dst, src); \
} \ } \
static int NAME##_encrypt_xts(QCryptoCipher *cipher, const void *in, \ static int NAME##_encrypt_xts(QCryptoCipher *cipher, const void *in, \
void *out, size_t len, Error **errp) \ void *out, size_t len, Error **errp) \
@ -282,13 +241,13 @@ typedef struct QCryptoNettleDESRFB {
uint8_t iv[DES_BLOCK_SIZE]; uint8_t iv[DES_BLOCK_SIZE];
} QCryptoNettleDESRFB; } QCryptoNettleDESRFB;
static void des_encrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void des_encrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
des_encrypt(ctx, length, dst, src); des_encrypt(ctx, length, dst, src);
} }
static void des_decrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void des_decrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
des_decrypt(ctx, length, dst, src); des_decrypt(ctx, length, dst, src);
@ -304,13 +263,13 @@ typedef struct QCryptoNettleDES3 {
uint8_t iv[DES3_BLOCK_SIZE]; uint8_t iv[DES3_BLOCK_SIZE];
} QCryptoNettleDES3; } QCryptoNettleDES3;
static void des3_encrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void des3_encrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
des3_encrypt(ctx, length, dst, src); des3_encrypt(ctx, length, dst, src);
} }
static void des3_decrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void des3_decrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
des3_decrypt(ctx, length, dst, src); des3_decrypt(ctx, length, dst, src);
@ -327,17 +286,17 @@ typedef struct QCryptoNettleAES128 {
struct aes128_ctx key[2], key_xts[2]; struct aes128_ctx key[2], key_xts[2];
} QCryptoNettleAES128; } QCryptoNettleAES128;
static void aes128_encrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void aes128_encrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
CONST_CTX struct aes128_ctx *keys = ctx; const struct aes128_ctx *keys = ctx;
aes128_encrypt(&keys[0], length, dst, src); aes128_encrypt(&keys[0], length, dst, src);
} }
static void aes128_decrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void aes128_decrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
CONST_CTX struct aes128_ctx *keys = ctx; const struct aes128_ctx *keys = ctx;
aes128_decrypt(&keys[1], length, dst, src); aes128_decrypt(&keys[1], length, dst, src);
} }
@ -353,17 +312,17 @@ typedef struct QCryptoNettleAES192 {
struct aes192_ctx key[2], key_xts[2]; struct aes192_ctx key[2], key_xts[2];
} QCryptoNettleAES192; } QCryptoNettleAES192;
static void aes192_encrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void aes192_encrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
CONST_CTX struct aes192_ctx *keys = ctx; const struct aes192_ctx *keys = ctx;
aes192_encrypt(&keys[0], length, dst, src); aes192_encrypt(&keys[0], length, dst, src);
} }
static void aes192_decrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void aes192_decrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
CONST_CTX struct aes192_ctx *keys = ctx; const struct aes192_ctx *keys = ctx;
aes192_decrypt(&keys[1], length, dst, src); aes192_decrypt(&keys[1], length, dst, src);
} }
@ -379,17 +338,17 @@ typedef struct QCryptoNettleAES256 {
struct aes256_ctx key[2], key_xts[2]; struct aes256_ctx key[2], key_xts[2];
} QCryptoNettleAES256; } QCryptoNettleAES256;
static void aes256_encrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void aes256_encrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
CONST_CTX struct aes256_ctx *keys = ctx; const struct aes256_ctx *keys = ctx;
aes256_encrypt(&keys[0], length, dst, src); aes256_encrypt(&keys[0], length, dst, src);
} }
static void aes256_decrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void aes256_decrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
CONST_CTX struct aes256_ctx *keys = ctx; const struct aes256_ctx *keys = ctx;
aes256_decrypt(&keys[1], length, dst, src); aes256_decrypt(&keys[1], length, dst, src);
} }
@ -404,13 +363,13 @@ typedef struct QCryptoNettleCAST128 {
struct cast128_ctx key, key_xts; struct cast128_ctx key, key_xts;
} QCryptoNettleCAST128; } QCryptoNettleCAST128;
static void cast128_encrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void cast128_encrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
cast128_encrypt(ctx, length, dst, src); cast128_encrypt(ctx, length, dst, src);
} }
static void cast128_decrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void cast128_decrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
cast128_decrypt(ctx, length, dst, src); cast128_decrypt(ctx, length, dst, src);
@ -428,13 +387,13 @@ typedef struct QCryptoNettleSerpent {
} QCryptoNettleSerpent; } QCryptoNettleSerpent;
static void serpent_encrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void serpent_encrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
serpent_encrypt(ctx, length, dst, src); serpent_encrypt(ctx, length, dst, src);
} }
static void serpent_decrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void serpent_decrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
serpent_decrypt(ctx, length, dst, src); serpent_decrypt(ctx, length, dst, src);
@ -451,13 +410,13 @@ typedef struct QCryptoNettleTwofish {
struct twofish_ctx key, key_xts; struct twofish_ctx key, key_xts;
} QCryptoNettleTwofish; } QCryptoNettleTwofish;
static void twofish_encrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void twofish_encrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
twofish_encrypt(ctx, length, dst, src); twofish_encrypt(ctx, length, dst, src);
} }
static void twofish_decrypt_native(cipher_ctx_t ctx, cipher_length_t length, static void twofish_decrypt_native(const void *ctx, size_t length,
uint8_t *dst, const uint8_t *src) uint8_t *dst, const uint8_t *src)
{ {
twofish_decrypt(ctx, length, dst, src); twofish_decrypt(ctx, length, dst, src);

View file

@ -26,18 +26,12 @@
#include <nettle/sha.h> #include <nettle/sha.h>
#include <nettle/ripemd160.h> #include <nettle/ripemd160.h>
#if CONFIG_NETTLE_VERSION_MAJOR < 3
typedef unsigned int hash_length_t;
#else
typedef size_t hash_length_t;
#endif
typedef void (*qcrypto_nettle_init)(void *ctx); typedef void (*qcrypto_nettle_init)(void *ctx);
typedef void (*qcrypto_nettle_write)(void *ctx, typedef void (*qcrypto_nettle_write)(void *ctx,
hash_length_t len, size_t len,
const uint8_t *buf); const uint8_t *buf);
typedef void (*qcrypto_nettle_result)(void *ctx, typedef void (*qcrypto_nettle_result)(void *ctx,
hash_length_t len, size_t len,
uint8_t *buf); uint8_t *buf);
union qcrypto_hash_ctx { union qcrypto_hash_ctx {

View file

@ -18,22 +18,16 @@
#include "hmacpriv.h" #include "hmacpriv.h"
#include <nettle/hmac.h> #include <nettle/hmac.h>
#if CONFIG_NETTLE_VERSION_MAJOR < 3
typedef unsigned int hmac_length_t;
#else
typedef size_t hmac_length_t;
#endif
typedef void (*qcrypto_nettle_hmac_setkey)(void *ctx, typedef void (*qcrypto_nettle_hmac_setkey)(void *ctx,
hmac_length_t key_length, size_t key_length,
const uint8_t *key); const uint8_t *key);
typedef void (*qcrypto_nettle_hmac_update)(void *ctx, typedef void (*qcrypto_nettle_hmac_update)(void *ctx,
hmac_length_t length, size_t length,
const uint8_t *data); const uint8_t *data);
typedef void (*qcrypto_nettle_hmac_digest)(void *ctx, typedef void (*qcrypto_nettle_hmac_digest)(void *ctx,
hmac_length_t length, size_t length,
uint8_t *digest); uint8_t *digest);
typedef struct QCryptoHmacNettle QCryptoHmacNettle; typedef struct QCryptoHmacNettle QCryptoHmacNettle;

View file

@ -26,11 +26,7 @@ if 'CONFIG_NETTLE' in config_host
crypto_ss.add(files('hash-nettle.c', 'hmac-nettle.c', 'pbkdf-nettle.c')) crypto_ss.add(files('hash-nettle.c', 'hmac-nettle.c', 'pbkdf-nettle.c'))
elif 'CONFIG_GCRYPT' in config_host elif 'CONFIG_GCRYPT' in config_host
crypto_ss.add(files('hash-gcrypt.c', 'pbkdf-gcrypt.c')) crypto_ss.add(files('hash-gcrypt.c', 'pbkdf-gcrypt.c'))
if 'CONFIG_GCRYPT_HMAC' in config_host crypto_ss.add(files('hmac-gcrypt.c'))
crypto_ss.add(files('hmac-gcrypt.c'))
else
crypto_ss.add(files('hmac-glib.c'))
endif
else else
crypto_ss.add(files('hash-glib.c', 'hmac-glib.c', 'pbkdf-stub.c')) crypto_ss.add(files('hash-glib.c', 'hmac-glib.c', 'pbkdf-stub.c'))
endif endif

View file

@ -354,11 +354,9 @@ qcrypto_tls_creds_check_cert_pair(gnutls_x509_crt_t cert,
reason = "The certificate has been revoked"; reason = "The certificate has been revoked";
} }
#ifndef GNUTLS_1_0_COMPAT
if (status & GNUTLS_CERT_INSECURE_ALGORITHM) { if (status & GNUTLS_CERT_INSECURE_ALGORITHM) {
reason = "The certificate uses an insecure algorithm"; reason = "The certificate uses an insecure algorithm";
} }
#endif
error_setg(errp, error_setg(errp,
"Our own certificate %s failed validation against %s: %s", "Our own certificate %s failed validation against %s: %s",

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# tlscreds.c # tlscreds.c
qcrypto_tls_creds_load_dh(void *creds, const char *filename) "TLS creds load DH creds=%p filename=%s" qcrypto_tls_creds_load_dh(void *creds, const char *filename) "TLS creds load DH creds=%p filename=%s"

View file

@ -145,7 +145,7 @@ can also be more efficient in two ways:
- on some platforms, one can implement QemuLockCnt to hold the lock - on some platforms, one can implement QemuLockCnt to hold the lock
and the mutex in a single word, making the fast path no more expensive and the mutex in a single word, making the fast path no more expensive
than simply managing a counter using atomic operations (see than simply managing a counter using atomic operations (see
docs/devel/atomics.txt). This can be very helpful if concurrent access to docs/devel/atomics.rst). This can be very helpful if concurrent access to
the data structure is expected to be rare. the data structure is expected to be rare.

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# 9p.c # 9p.c
v9fs_rcancel(uint16_t tag, uint8_t id) "tag %d id %d" v9fs_rcancel(uint16_t tag, uint8_t id) "tag %d id %d"

View file

@ -57,7 +57,7 @@ void tpm_build_ppi_acpi(TPMIf *tpm, Aml *dev)
aml_operation_region( aml_operation_region(
"TPP3", AML_SYSTEM_MEMORY, "TPP3", AML_SYSTEM_MEMORY,
aml_int(TPM_PPI_ADDR_BASE + aml_int(TPM_PPI_ADDR_BASE +
0x15a /* movv, docs/specs/tpm.txt */), 0x15a /* movv, docs/specs/tpm.rst */),
0x1)); 0x1));
field = aml_field("TPP3", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE); field = aml_field("TPP3", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE);
aml_append(field, aml_named_field("MOVV", 8)); aml_append(field, aml_named_field("MOVV", 8));

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# memory_hotplug.c # memory_hotplug.c
mhp_acpi_invalid_slot_selected(uint32_t slot) "0x%"PRIx32 mhp_acpi_invalid_slot_selected(uint32_t slot) "0x%"PRIx32

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# npcm7xx_adc.c # npcm7xx_adc.c
npcm7xx_adc_read(const char *id, uint64_t offset, uint32_t value) " %s offset: 0x%04" PRIx64 " value 0x%04" PRIx32 npcm7xx_adc_read(const char *id, uint64_t offset, uint32_t value) " %s offset: 0x%04" PRIx64 " value 0x%04" PRIx32

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# pci.c # pci.c
alpha_pci_iack_write(void) "" alpha_pci_iack_write(void) ""

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# virt-acpi-build.c # virt-acpi-build.c
virt_acpi_setup(void) "No fw cfg or ACPI disabled. Bailing out." virt_acpi_setup(void) "No fw cfg or ACPI disabled. Bailing out."

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# cs4231.c # cs4231.c
cs4231_mem_readl_dreg(uint32_t reg, uint32_t ret) "read dreg %d: 0x%02x" cs4231_mem_readl_dreg(uint32_t reg, uint32_t ret) "read dreg %d: 0x%02x"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# virtio-blk.c # virtio-blk.c
virtio_blk_data_plane_start(void *s) "dataplane %p" virtio_blk_data_plane_start(void *s) "dataplane %p"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# fdc.c # fdc.c
fdc_ioport_read(uint8_t reg, uint8_t value) "read reg 0x%02x val 0x%02x" fdc_ioport_read(uint8_t reg, uint8_t value) "read reg 0x%02x val 0x%02x"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# parallel.c # parallel.c
parallel_ioport_read(const char *desc, uint16_t addr, uint8_t value) "read [%s] addr 0x%02x val 0x%02x" parallel_ioport_read(const char *desc, uint16_t addr, uint8_t value) "read [%s] addr 0x%02x val 0x%02x"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# jazz_led.c # jazz_led.c
jazz_led_read(uint64_t addr, uint8_t val) "read addr=0x%"PRIx64": 0x%x" jazz_led_read(uint64_t addr, uint8_t val) "read addr=0x%"PRIx64": 0x%x"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# rc4030.c # rc4030.c
jazzio_read(uint64_t addr, uint32_t ret) "read reg[0x%"PRIx64"] = 0x%x" jazzio_read(uint64_t addr, uint32_t ret) "read reg[0x%"PRIx64"] = 0x%x"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# npcm7xx_gpio.c # npcm7xx_gpio.c
npcm7xx_gpio_read(const char *id, uint64_t offset, uint64_t value) " %s offset: 0x%04" PRIx64 " value 0x%08" PRIx64 npcm7xx_gpio_read(const char *id, uint64_t offset, uint64_t value) " %s offset: 0x%04" PRIx64 " value 0x%08" PRIx64

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# pci.c # pci.c
hppa_pci_iack_write(void) "" hppa_pci_iack_write(void) ""

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# core.c # core.c

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# x86-iommu.c # x86-iommu.c
x86_iommu_iec_notify(bool global, uint32_t index, uint32_t mask) "Notify IEC invalidation: global=%d index=%" PRIu32 " mask=%" PRIu32 x86_iommu_iec_notify(bool global, uint32_t index, uint32_t mask) "Notify IEC invalidation: global=%d index=%" PRIu32 " mask=%" PRIu32

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# xen_platform.c # xen_platform.c
xen_platform_log(char *s) "xen platform: %s" xen_platform_log(char *s) "xen platform: %s"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# core.c # core.c
# portio # portio

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# adb-kbd.c # adb-kbd.c
adb_device_kbd_no_key(void) "Ignoring NO_KEY" adb_device_kbd_no_key(void) "Ignoring NO_KEY"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# i8259.c # i8259.c
pic_update_irq(bool master, uint8_t imr, uint8_t irr, uint8_t padd) "master %d imr %"PRIu8" irr %"PRIu8" padd %"PRIu8 pic_update_irq(bool master, uint8_t imr, uint8_t irr, uint8_t padd) "master %d imr %"PRIu8" irr %"PRIu8" padd %"PRIu8

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# isa-superio.c # isa-superio.c
superio_create_parallel(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u" superio_create_parallel(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# pc-dimm.c # pc-dimm.c
mhp_pc_dimm_assigned_slot(int slot) "%d" mhp_pc_dimm_assigned_slot(int slot) "%d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# cuda.c # cuda.c
cuda_delay_set_sr_int(void) "" cuda_delay_set_sr_int(void) ""

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# allwinner-cpucfg.c # allwinner-cpucfg.c
allwinner_cpucfg_cpu_reset(uint8_t cpu_id, uint32_t reset_addr) "id %u, reset_addr 0x%" PRIu32 allwinner_cpucfg_cpu_reset(uint8_t cpu_id, uint32_t reset_addr) "id %u, reset_addr 0x%" PRIu32

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# allwinner-sun8i-emac.c # allwinner-sun8i-emac.c
allwinner_sun8i_emac_mii_write_reg(uint32_t reg, uint32_t value) "MII write: reg=0x%" PRIx32 " value=0x%" PRIx32 allwinner_sun8i_emac_mii_write_reg(uint32_t reg, uint32_t value) "MII write: reg=0x%" PRIx32 " value=0x%" PRIx32

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# ds1225y.c # ds1225y.c
nvram_read(uint32_t addr, uint32_t ret) "read addr %d: 0x%02x" nvram_read(uint32_t addr, uint32_t ret) "read addr %d: 0x%02x"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# grackle.c # grackle.c
grackle_set_irq(int irq_num, int level) "set_irq num %d level %d" grackle_set_irq(int irq_num, int level) "set_irq num %d level %d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# pci.c # pci.c
pci_update_mappings_del(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,0x%"PRIx64"+0x%"PRIx64 pci_update_mappings_del(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,0x%"PRIx64"+0x%"PRIx64

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# spapr_pci.c # spapr_pci.c
spapr_pci_msi(const char *msg, uint32_t ca) "%s (cfg=0x%x)" spapr_pci_msi(const char *msg, uint32_t ca) "%s (cfg=0x%x)"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# rdma_backend.c # rdma_backend.c
rdma_check_dev_attr(const char *name, int max_bk, int max_fe) "%s: be=%d, fe=%d" rdma_check_dev_attr(const char *name, int max_bk, int max_fe) "%s: be=%d, fe=%d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# pvrdma_main.c # pvrdma_main.c
pvrdma_regs_read(uint64_t addr, uint64_t val) "pvrdma.regs[0x%"PRIx64"]=0x%"PRIx64 pvrdma_regs_read(uint64_t addr, uint64_t val) "pvrdma.regs[0x%"PRIx64"]=0x%"PRIx64

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# allwinner-rtc.c # allwinner-rtc.c
allwinner_rtc_read(uint64_t addr, uint64_t value) "addr 0x%" PRIx64 " value 0x%" PRIx64 allwinner_rtc_read(uint64_t addr, uint64_t value) "addr 0x%" PRIx64 " value 0x%" PRIx64

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# css.c # css.c
css_enable_facility(const char *facility) "CSS: enable %s" css_enable_facility(const char *facility) "CSS: enable %s"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# scsi-bus.c # scsi-bus.c
scsi_req_alloc(int target, int lun, int tag) "target %d lun %d tag %d" scsi_req_alloc(int target, int lun, int tag) "target %d lun %d tag %d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# allwinner-sdhost.c # allwinner-sdhost.c
allwinner_sdhost_set_inserted(bool inserted) "inserted %u" allwinner_sdhost_set_inserted(bool inserted) "inserted %u"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# sun4m.c # sun4m.c
sun4m_cpu_set_irq_raise(int level) "Raise CPU IRQ %d" sun4m_cpu_set_irq_raise(int level) "Raise CPU IRQ %d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# sun4u.c # sun4u.c
ebus_isa_irq_handler(int n, int level) "Set ISA IRQ %d level %d" ebus_isa_irq_handler(int n, int level) "Set ISA IRQ %d level %d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# slavio_timer.c # slavio_timer.c
slavio_timer_get_out(uint64_t limit, uint32_t counthigh, uint32_t count) "limit 0x%"PRIx64" count 0x%x0x%08x" slavio_timer_get_out(uint64_t limit, uint32_t counthigh, uint32_t count) "limit 0x%"PRIx64" count 0x%x0x%08x"

View file

@ -23,7 +23,7 @@
void tpm_ppi_reset(TPMPPI *tpmppi) void tpm_ppi_reset(TPMPPI *tpmppi)
{ {
if (tpmppi->buf[0x15a /* movv, docs/specs/tpm.txt */] & 0x1) { if (tpmppi->buf[0x15a /* movv, docs/specs/tpm.rst */] & 0x1) {
GuestPhysBlockList guest_phys_blocks; GuestPhysBlockList guest_phys_blocks;
GuestPhysBlock *block; GuestPhysBlock *block;

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# tpm_crb.c # tpm_crb.c
tpm_crb_mmio_read(uint64_t addr, unsigned size, uint32_t val) "CRB read 0x%016" PRIx64 " len:%u val: 0x%" PRIx32 tpm_crb_mmio_read(uint64_t addr, unsigned size, uint32_t val) "CRB read 0x%016" PRIx64 " len:%u val: 0x%" PRIx32

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# core.c # core.c
usb_packet_state_change(int bus, const char *port, int ep, void *p, const char *o, const char *n) "bus %d, port %s, ep %d, packet %p, state %s -> %s" usb_packet_state_change(int bus, const char *port, int ep, void *p, const char *o, const char *n) "bus %d, port %s, ep %d, packet %p, state %s -> %s"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# pci.c # pci.c
vfio_intx_interrupt(const char *name, char line) " (%s) Pin %c" vfio_intx_interrupt(const char *name, char line) " (%s) Pin %c"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# vhost.c # vhost.c
vhost_commit(bool started, bool changed) "Started: %d Changed: %d" vhost_commit(bool started, bool changed) "Started: %d Changed: %d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# cmsdk-apb-watchdog.c # cmsdk-apb-watchdog.c
cmsdk_apb_watchdog_read(uint64_t offset, uint64_t data, unsigned size) "CMSDK APB watchdog read: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" cmsdk_apb_watchdog_read(uint64_t offset, uint64_t data, unsigned size) "CMSDK APB watchdog read: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# ../../include/hw/xen/xen_common.h # ../../include/hw/xen/xen_common.h
xen_default_ioreq_server(void) "" xen_default_ioreq_server(void) ""

View file

@ -19,12 +19,12 @@
/* Ask for warnings for anything that was marked deprecated in /* Ask for warnings for anything that was marked deprecated in
* the defined version, or before. It is a candidate for rewrite. * the defined version, or before. It is a candidate for rewrite.
*/ */
#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_48 #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_56
/* Ask for warnings if code tries to use function that did not /* Ask for warnings if code tries to use function that did not
* exist in the defined version. These risk breaking builds * exist in the defined version. These risk breaking builds
*/ */
#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_48 #define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_56
#pragma GCC diagnostic push #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
@ -68,15 +68,6 @@
* without generating warnings. * without generating warnings.
*/ */
#if defined(_WIN32) && !GLIB_CHECK_VERSION(2, 50, 0)
/*
* g_poll has a problem on Windows when using
* timeouts < 10ms, so use wrapper.
*/
#define g_poll(fds, nfds, timeout) g_poll_fixed(fds, nfds, timeout)
gint g_poll_fixed(GPollFD *fds, guint nfds, gint timeout);
#endif
#if defined(G_OS_UNIX) #if defined(G_OS_UNIX)
/* /*
* Note: The fallback implementation is not MT-safe, and it returns a copy of * Note: The fallback implementation is not MT-safe, and it returns a copy of

View file

@ -8,7 +8,7 @@
* This work is licensed under the terms of the GNU GPL, version 2 or later. * This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory. * See the COPYING file in the top-level directory.
* *
* See docs/devel/atomics.txt for discussion about the guarantees each * See docs/devel/atomics.rst for discussion about the guarantees each
* atomic primitive is meant to provide. * atomic primitive is meant to provide.
*/ */
@ -432,7 +432,7 @@
* sequentially consistent operations. * sequentially consistent operations.
* *
* As long as they are used as paired operations they are safe to * As long as they are used as paired operations they are safe to
* use. See docs/devel/atomics.txt for more discussion. * use. See docs/devel/atomics.rst for more discussion.
*/ */
#ifndef qatomic_mb_read #ifndef qatomic_mb_read

View file

@ -6,7 +6,7 @@
* This work is licensed under the terms of the GNU GPL, version 2 or later. * This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory. * See the COPYING file in the top-level directory.
* *
* See docs/devel/atomics.txt for discussion about the guarantees each * See docs/devel/atomics.rst for discussion about the guarantees each
* atomic primitive is meant to provide. * atomic primitive is meant to provide.
*/ */

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# task.c # task.c
qio_task_new(void *task, void *source, void *func, void *opaque) "Task new task=%p source=%p func=%p opaque=%p" qio_task_new(void *task, void *source, void *func, void *opaque) "Task new task=%p source=%p func=%p opaque=%p"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# signal.c # signal.c
signal_table_init(int i) "number of unavailable signals: %d" signal_table_init(int i) "number of unavailable signals: %d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# savevm.c # savevm.c
qemu_loadvm_state_section(unsigned int section_type) "%d" qemu_loadvm_state_section(unsigned int section_type) "%d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# hmp.c # hmp.c
handle_hmp_command(void *mon, const char *cmdline) "mon %p cmdline: %s" handle_hmp_command(void *mon, const char *cmdline) "mon %p cmdline: %s"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# client.c # client.c
nbd_send_option_request(uint32_t opt, const char *name, uint32_t len) "Sending option request %" PRIu32" (%s), len %" PRIu32 nbd_send_option_request(uint32_t opt, const char *name, uint32_t len) "Sending option request %" PRIu32" (%s), len %" PRIu32

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# announce.c # announce.c
qemu_announce_self_iter(const char *id, const char *name, const char *mac, int skip) "%s:%s:%s skip: %d" qemu_announce_self_iter(const char *id, const char *name, const char *mac, int skip) "%s:%s:%s skip: %d"

View file

@ -205,7 +205,7 @@ static void run_ipl2(SubChannelId schid, uint16_t cutype, uint32_t addr)
/* /*
* Limitations in vfio-ccw support complicate the IPL process. Details can * Limitations in vfio-ccw support complicate the IPL process. Details can
* be found in docs/devel/s390-dasd-ipl.txt * be found in docs/devel/s390-dasd-ipl.rst
*/ */
void dasd_ipl(SubChannelId schid, uint16_t cutype) void dasd_ipl(SubChannelId schid, uint16_t cutype)
{ {

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# qapi-visit-core.c # qapi-visit-core.c
visit_free(void *v) "v=%p" visit_free(void *v) "v=%p"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# object.c # object.c
object_dynamic_cast_assert(const char *type, const char *target, const char *file, int line, const char *func) "%s->%s (%s:%d:%s)" object_dynamic_cast_assert(const char *type, const char *target, const char *file, int line, const char *func) "%s->%s (%s:%d:%s)"

View file

@ -7,7 +7,7 @@
# This work is licensed under the terms of the GNU GPL, version 2. See # This work is licensed under the terms of the GNU GPL, version 2. See
# the COPYING file in the top-level directory. # the COPYING file in the top-level directory.
# #
# For help see docs/devel/tracing.txt # For help see docs/devel/tracing.rst
import struct import struct
import inspect import inspect

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# pr-manager.c # pr-manager.c
pr_manager_execute(int fd, int cmd, int sa) "fd=%d cmd=0x%02x service action=0x%02x" pr_manager_execute(int fd, int cmd, int sa) "fd=%d cmd=0x%02x service action=0x%02x"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# balloon.c # balloon.c
# Since requests are raised via monitor, not many tracepoints are needed. # Since requests are raised via monitor, not many tracepoints are needed.

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# helper.c # helper.c
arm_gt_recalc(int timer, int irqstate, uint64_t nexttick) "gt recalc: timer %d irqstate %d next tick 0x%" PRIx64 arm_gt_recalc(int timer, int irqstate, uint64_t nexttick) "gt recalc: timer %d irqstate %d next tick 0x%" PRIx64

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# mem_helper.c # mem_helper.c
disable hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%lx va_e=0x%lx pa=0x%lx" disable hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%lx va_e=0x%lx pa=0x%lx"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# kvm.c # kvm.c
kvm_x86_fixup_msi_error(uint32_t gsi) "VT-d failed to remap interrupt for GSI %" PRIu32 kvm_x86_fixup_msi_error(uint32_t gsi) "VT-d failed to remap interrupt for GSI %" PRIu32

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# sev.c # sev.c
kvm_sev_init(void) "" kvm_sev_init(void) ""

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# translate.c # translate.c
mips_translate_c0(const char *instr, const char *rn, int reg, int sel) "%s %s (reg %d sel %d)" mips_translate_c0(const char *instr, const char *rn, int reg, int sel) "%s %s (reg %d sel %d)"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# kvm.c # kvm.c
kvm_failed_spr_set(int spr, const char *msg) "Warning: Unable to set SPR %d to KVM: %s" kvm_failed_spr_set(int spr, const char *msg) "Warning: Unable to set SPR %d to KVM: %s"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# mmu_helper.c # mmu_helper.c
get_skeys_nonzero(int rc) "SKEY: Call to get_skeys unexpectedly returned %d" get_skeys_nonzero(int rc) "SKEY: Call to get_skeys unexpectedly returned %d"

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# mmu_helper.c # mmu_helper.c
mmu_helper_dfault(uint64_t address, uint64_t context, int mmu_idx, uint32_t tl) "DFAULT at 0x%"PRIx64" context 0x%"PRIx64" mmu_idx=%d tl=%d" mmu_helper_dfault(uint64_t address, uint64_t context, int mmu_idx, uint32_t tl) "DFAULT at 0x%"PRIx64" context 0x%"PRIx64" mmu_idx=%d tl=%d"

View file

@ -461,7 +461,7 @@ when MTTCG is enabled.
The guest translators should generate this opcode for all guest instructions The guest translators should generate this opcode for all guest instructions
which have ordering side effects. which have ordering side effects.
Please see docs/devel/atomics.txt for more information on memory barriers. Please see docs/devel/atomics.rst for more information on memory barriers.
********* 64-bit guest on 32-bit host support ********* 64-bit guest on 32-bit host support

View file

@ -1,43 +0,0 @@
FROM centos:7
RUN yum install -y epel-release centos-release-xen-48
RUN yum -y update
# Please keep this list sorted alphabetically
ENV PACKAGES \
bzip2 \
bzip2-devel \
ccache \
csnappy-devel \
dbus-daemon \
gcc-c++ \
gcc \
gettext \
git \
glib2-devel \
glibc-static \
gnutls-devel \
libaio-devel \
libepoxy-devel \
libfdt-devel \
libgcrypt-devel \
librdmacm-devel \
libzstd-devel \
lzo-devel \
make \
mesa-libEGL-devel \
mesa-libgbm-devel \
nettle-devel \
ninja-build \
perl-Test-Harness \
pixman-devel \
python3 \
SDL2-devel \
spice-glib-devel \
spice-server-devel \
tar \
vte-devel \
xen-devel \
zlib-devel
RUN yum install -y $PACKAGES
RUN rpm -q $PACKAGES | sort > /packages.txt

View file

@ -208,7 +208,7 @@ schemas += [meson.current_source_dir() / 'missing-schema.json']
# Because people may want to use test-qapi.py from the command line, we # Because people may want to use test-qapi.py from the command line, we
# are not using the "#! /usr/bin/env python3" trick here. See # are not using the "#! /usr/bin/env python3" trick here. See
# docs/devel/build-system.txt # docs/devel/build-system.rst
test('QAPI schema regression tests', python, test('QAPI schema regression tests', python,
args: files('test-qapi.py') + schemas, args: files('test-qapi.py') + schemas,
env: test_env, suite: ['qapi-schema', 'qapi-frontend']) env: test_env, suite: ['qapi-schema', 'qapi-frontend'])

View file

@ -26,24 +26,23 @@ class CentosVM(basevm.BaseVM):
export SRC_ARCHIVE=/dev/vdb; export SRC_ARCHIVE=/dev/vdb;
sudo chmod a+r $SRC_ARCHIVE; sudo chmod a+r $SRC_ARCHIVE;
tar -xf $SRC_ARCHIVE; tar -xf $SRC_ARCHIVE;
make docker-test-block@centos7 {verbose} J={jobs} NETWORK=1; make docker-test-block@centos8 {verbose} J={jobs} NETWORK=1;
make docker-test-quick@centos7 {verbose} J={jobs} NETWORK=1; make docker-test-quick@centos8 {verbose} J={jobs} NETWORK=1;
make docker-test-mingw@fedora {verbose} J={jobs} NETWORK=1; make docker-test-mingw@fedora {verbose} J={jobs} NETWORK=1;
""" """
def build_image(self, img): def build_image(self, img):
cimg = self._download_with_cache("https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1802.qcow2.xz") cimg = self._download_with_cache("https://cloud.centos.org/centos/8/x86_64/images/CentOS-8-GenericCloud-8.3.2011-20201204.2.x86_64.qcow2")
img_tmp = img + ".tmp" img_tmp = img + ".tmp"
sys.stderr.write("Extracting the image...\n") subprocess.check_call(["ln", "-f", cimg, img_tmp])
subprocess.check_call(["ln", "-f", cimg, img_tmp + ".xz"])
subprocess.check_call(["xz", "--keep", "-dvf", img_tmp + ".xz"])
self.exec_qemu_img("resize", img_tmp, "50G") self.exec_qemu_img("resize", img_tmp, "50G")
self.boot(img_tmp, extra_args = ["-cdrom", self.gen_cloud_init_iso()]) self.boot(img_tmp, extra_args = ["-cdrom", self.gen_cloud_init_iso()])
self.wait_ssh() self.wait_ssh()
self.ssh_root_check("touch /etc/cloud/cloud-init.disabled") self.ssh_root_check("touch /etc/cloud/cloud-init.disabled")
self.ssh_root_check("yum update -y") self.ssh_root_check("dnf update -y")
self.ssh_root_check("yum install -y docker make ninja-build git python3") self.ssh_root_check("dnf install -y dnf-plugins-core")
self.ssh_root_check("systemctl enable docker") self.ssh_root_check("dnf config-manager --set-enabled powertools")
self.ssh_root_check("dnf install -y podman make ninja-build git python3")
self.ssh_root("poweroff") self.ssh_root("poweroff")
self.wait() self.wait()
os.rename(img_tmp, img) os.rename(img_tmp, img)

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# #
# This file is processed by the tracetool script during the build. # This file is processed by the tracetool script during the build.
# #

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# console.c # console.c
console_gfx_new(void) "" console_gfx_new(void) ""

View file

@ -347,210 +347,6 @@ const char *qemu_get_exec_dir(void)
return exec_dir; return exec_dir;
} }
#if !GLIB_CHECK_VERSION(2, 50, 0)
/*
* The original implementation of g_poll from glib has a problem on Windows
* when using timeouts < 10 ms.
*
* Whenever g_poll is called with timeout < 10 ms, it does a quick poll instead
* of wait. This causes significant performance degradation of QEMU.
*
* The following code is a copy of the original code from glib/gpoll.c
* (glib commit 20f4d1820b8d4d0fc4447188e33efffd6d4a88d8 from 2014-02-19).
* Some debug code was removed and the code was reformatted.
* All other code modifications are marked with 'QEMU'.
*/
/*
* gpoll.c: poll(2) abstraction
* Copyright 1998 Owen Taylor
* Copyright 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
static int poll_rest(gboolean poll_msgs, HANDLE *handles, gint nhandles,
GPollFD *fds, guint nfds, gint timeout)
{
DWORD ready;
GPollFD *f;
int recursed_result;
if (poll_msgs) {
/* Wait for either messages or handles
* -> Use MsgWaitForMultipleObjectsEx
*/
ready = MsgWaitForMultipleObjectsEx(nhandles, handles, timeout,
QS_ALLINPUT, MWMO_ALERTABLE);
if (ready == WAIT_FAILED) {
gchar *emsg = g_win32_error_message(GetLastError());
g_warning("MsgWaitForMultipleObjectsEx failed: %s", emsg);
g_free(emsg);
}
} else if (nhandles == 0) {
/* No handles to wait for, just the timeout */
if (timeout == INFINITE) {
ready = WAIT_FAILED;
} else {
SleepEx(timeout, TRUE);
ready = WAIT_TIMEOUT;
}
} else {
/* Wait for just handles
* -> Use WaitForMultipleObjectsEx
*/
ready =
WaitForMultipleObjectsEx(nhandles, handles, FALSE, timeout, TRUE);
if (ready == WAIT_FAILED) {
gchar *emsg = g_win32_error_message(GetLastError());
g_warning("WaitForMultipleObjectsEx failed: %s", emsg);
g_free(emsg);
}
}
if (ready == WAIT_FAILED) {
return -1;
} else if (ready == WAIT_TIMEOUT || ready == WAIT_IO_COMPLETION) {
return 0;
} else if (poll_msgs && ready == WAIT_OBJECT_0 + nhandles) {
for (f = fds; f < &fds[nfds]; ++f) {
if (f->fd == G_WIN32_MSG_HANDLE && f->events & G_IO_IN) {
f->revents |= G_IO_IN;
}
}
/* If we have a timeout, or no handles to poll, be satisfied
* with just noticing we have messages waiting.
*/
if (timeout != 0 || nhandles == 0) {
return 1;
}
/* If no timeout and handles to poll, recurse to poll them,
* too.
*/
recursed_result = poll_rest(FALSE, handles, nhandles, fds, nfds, 0);
return (recursed_result == -1) ? -1 : 1 + recursed_result;
} else if (/* QEMU: removed the following unneeded statement which causes
* a compiler warning: ready >= WAIT_OBJECT_0 && */
ready < WAIT_OBJECT_0 + nhandles) {
for (f = fds; f < &fds[nfds]; ++f) {
if ((HANDLE) f->fd == handles[ready - WAIT_OBJECT_0]) {
f->revents = f->events;
}
}
/* If no timeout and polling several handles, recurse to poll
* the rest of them.
*/
if (timeout == 0 && nhandles > 1) {
/* Remove the handle that fired */
int i;
for (i = ready - WAIT_OBJECT_0 + 1; i < nhandles; i++) {
handles[i-1] = handles[i];
}
nhandles--;
recursed_result = poll_rest(FALSE, handles, nhandles, fds, nfds, 0);
return (recursed_result == -1) ? -1 : 1 + recursed_result;
}
return 1;
}
return 0;
}
gint g_poll_fixed(GPollFD *fds, guint nfds, gint timeout)
{
HANDLE handles[MAXIMUM_WAIT_OBJECTS];
gboolean poll_msgs = FALSE;
GPollFD *f;
gint nhandles = 0;
int retval;
for (f = fds; f < &fds[nfds]; ++f) {
if (f->fd == G_WIN32_MSG_HANDLE && (f->events & G_IO_IN)) {
poll_msgs = TRUE;
} else if (f->fd > 0) {
/* Don't add the same handle several times into the array, as
* docs say that is not allowed, even if it actually does seem
* to work.
*/
gint i;
for (i = 0; i < nhandles; i++) {
if (handles[i] == (HANDLE) f->fd) {
break;
}
}
if (i == nhandles) {
if (nhandles == MAXIMUM_WAIT_OBJECTS) {
g_warning("Too many handles to wait for!\n");
break;
} else {
handles[nhandles++] = (HANDLE) f->fd;
}
}
}
}
for (f = fds; f < &fds[nfds]; ++f) {
f->revents = 0;
}
if (timeout == -1) {
timeout = INFINITE;
}
/* Polling for several things? */
if (nhandles > 1 || (nhandles > 0 && poll_msgs)) {
/* First check if one or several of them are immediately
* available
*/
retval = poll_rest(poll_msgs, handles, nhandles, fds, nfds, 0);
/* If not, and we have a significant timeout, poll again with
* timeout then. Note that this will return indication for only
* one event, or only for messages. We ignore timeouts less than
* ten milliseconds as they are mostly pointless on Windows, the
* MsgWaitForMultipleObjectsEx() call will timeout right away
* anyway.
*
* Modification for QEMU: replaced timeout >= 10 by timeout > 0.
*/
if (retval == 0 && (timeout == INFINITE || timeout > 0)) {
retval = poll_rest(poll_msgs, handles, nhandles,
fds, nfds, timeout);
}
} else {
/* Just polling for one thing, so no need to check first if
* available immediately
*/
retval = poll_rest(poll_msgs, handles, nhandles, fds, nfds, timeout);
}
if (retval == -1) {
for (f = fds; f < &fds[nfds]; ++f) {
f->revents = 0;
}
}
return retval;
}
#endif
int getpagesize(void) int getpagesize(void)
{ {
SYSTEM_INFO system_info; SYSTEM_INFO system_info;

View file

@ -1,4 +1,4 @@
# See docs/devel/tracing.txt for syntax documentation. # See docs/devel/tracing.rst for syntax documentation.
# aio-posix.c # aio-posix.c
run_poll_handlers_begin(void *ctx, int64_t max_ns, int64_t timeout) "ctx %p max_ns %"PRId64 " timeout %"PRId64 run_poll_handlers_begin(void *ctx, int64_t max_ns, int64_t timeout) "ctx %p max_ns %"PRId64 " timeout %"PRId64