diff --git a/.gitlab-ci.d/custom-runners.yml b/.gitlab-ci.d/custom-runners.yml index 3e76a2034a..15aaccc481 100644 --- a/.gitlab-ci.d/custom-runners.yml +++ b/.gitlab-ci.d/custom-runners.yml @@ -16,4 +16,5 @@ variables: include: - local: '/.gitlab-ci.d/custom-runners/ubuntu-20.04-s390x.yml' - local: '/.gitlab-ci.d/custom-runners/ubuntu-20.04-aarch64.yml' + - local: '/.gitlab-ci.d/custom-runners/ubuntu-20.04-aarch32.yml' - local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml' diff --git a/.gitlab-ci.d/custom-runners/ubuntu-20.40-aarch32.yml b/.gitlab-ci.d/custom-runners/ubuntu-20.04-aarch32.yml similarity index 100% rename from .gitlab-ci.d/custom-runners/ubuntu-20.40-aarch32.yml rename to .gitlab-ci.d/custom-runners/ubuntu-20.04-aarch32.yml diff --git a/.mailmap b/.mailmap index 5113f55b3a..09dcd8c216 100644 --- a/.mailmap +++ b/.mailmap @@ -28,7 +28,11 @@ Thiemo Seufer ths malc malc # Corrupted Author fields +Aaron Larson alarson@ddci.com +Andreas Färber Andreas Färber +Jason Wang Jason Wang Marek Dolata mkdolata@us.ibm.com +Michael Ellerman michael@ozlabs.org Nick Hudson hnick@vmware.com # There is also a: @@ -70,6 +74,7 @@ Yongbok Kim # Also list preferred name forms where people have changed their # git author config, or had utf8/latin1 encoding issues. Aaron Lindsay +Aaron Larson Alexey Gerasimenko Alex Chen Alex Ivanov @@ -144,6 +149,7 @@ Pan Nengyuan Pavel Dovgaluk Pavel Dovgaluk Pavel Dovgaluk +Peter Chubb Peter Crosthwaite Peter Crosthwaite Peter Crosthwaite diff --git a/contrib/gitdm/aliases b/contrib/gitdm/aliases index 4792413ce7..e26b00a71d 100644 --- a/contrib/gitdm/aliases +++ b/contrib/gitdm/aliases @@ -34,8 +34,10 @@ malc@c046a42c-6fe2-441c-8c8c-71466251a162 av1474@comtv.ru # canonical emails liq3ea@163.com liq3ea@gmail.com -# some broken tags +# some broken DCO tags yuval.shaia.ml.gmail.com yuval.shaia.ml@gmail.com +jasowang jasowang@redhat.com +nicta.com.au peter.chubb@nicta.com.au # There is also a: # (no author) <(no author)@c046a42c-6fe2-441c-8c8c-71466251a162> diff --git a/docs/devel/index-api.rst b/docs/devel/index-api.rst new file mode 100644 index 0000000000..b749240272 --- /dev/null +++ b/docs/devel/index-api.rst @@ -0,0 +1,15 @@ +Internal QEMU APIs +------------------ + +Details about how QEMU's various internal APIs. Most of these are +generated from in-code annotations to function prototypes. + +.. toctree:: + :maxdepth: 2 + :includehidden: + + bitops + loads-stores + memory + modules + ui diff --git a/docs/devel/index-build.rst b/docs/devel/index-build.rst new file mode 100644 index 0000000000..d96894f07c --- /dev/null +++ b/docs/devel/index-build.rst @@ -0,0 +1,19 @@ +QEMU Build and Test System +-------------------------- + +Details about how QEMU's build system works and how it is integrated +into our testing infrastructure. You will need to understand some of +the basics if you are adding new files and targets to the build. + +.. toctree:: + :maxdepth: 2 + :includehidden: + + build-system + kconfig + testing + qtest + ci + qapi-code-gen + fuzzing + control-flow-integrity diff --git a/docs/devel/index-internals.rst b/docs/devel/index-internals.rst new file mode 100644 index 0000000000..bb118b8eaf --- /dev/null +++ b/docs/devel/index-internals.rst @@ -0,0 +1,21 @@ +Internal Subsystem Information +------------------------------ + +Details about QEMU's various subsystems including how to add features to them. + +.. toctree:: + :maxdepth: 2 + :includehidden: + + qom + atomics + block-coroutine-wrapper + clocks + ebpf_rss + migration + multi-process + reset + s390-dasd-ipl + tracing + vfio-migration + writing-monitor-commands diff --git a/docs/devel/index-process.rst b/docs/devel/index-process.rst new file mode 100644 index 0000000000..314e9e94cc --- /dev/null +++ b/docs/devel/index-process.rst @@ -0,0 +1,17 @@ +QEMU Community Processes +------------------------ + +Notes about how to interact with the community and how and where to submit patches. + +.. toctree:: + :maxdepth: 2 + :includehidden: + + code-of-conduct + conflict-resolution + style + submitting-a-patch + trivial-patches + stable-process + submitting-a-pull-request + secure-coding-practices diff --git a/docs/devel/index-tcg.rst b/docs/devel/index-tcg.rst new file mode 100644 index 0000000000..3acbd95d36 --- /dev/null +++ b/docs/devel/index-tcg.rst @@ -0,0 +1,16 @@ +TCG Emulation +------------- + +Details about QEMU's Tiny Code Generator and the infrastructure +associated with emulation. You do not need to worry about this if you +are only implementing things for HW accelerated hypervisors. + +.. toctree:: + :maxdepth: 2 + :includehidden: + + tcg + decodetree + multi-thread-tcg + tcg-icount + tcg-plugins diff --git a/docs/devel/index.rst b/docs/devel/index.rst index afd937535e..a68207052d 100644 --- a/docs/devel/index.rst +++ b/docs/devel/index.rst @@ -7,44 +7,12 @@ You only need to read it if you are interested in reading or modifying QEMU's source code. .. toctree:: - :maxdepth: 2 + :maxdepth: 1 :includehidden: - code-of-conduct - conflict-resolution - build-system - style - kconfig - testing - fuzzing - control-flow-integrity - loads-stores - memory - migration - atomics - stable-process - ci - qtest - decodetree - secure-coding-practices - tcg - tcg-icount - tracing - multi-thread-tcg - tcg-plugins - bitops - ui - reset - s390-dasd-ipl - clocks - qom - modules - block-coroutine-wrapper - multi-process - ebpf_rss - vfio-migration - qapi-code-gen - writing-monitor-commands - trivial-patches - submitting-a-patch - submitting-a-pull-request + + index-process + index-build + index-api + index-internals + index-tcg diff --git a/docs/devel/tcg-plugins.rst b/docs/devel/tcg-plugins.rst index f93ef4fe52..a7cc44aa20 100644 --- a/docs/devel/tcg-plugins.rst +++ b/docs/devel/tcg-plugins.rst @@ -27,13 +27,18 @@ Once built a program can be run with multiple plugins loaded each with their own arguments:: $QEMU $OTHER_QEMU_ARGS \ - -plugin tests/plugin/libhowvec.so,inline=on,count=hint \ - -plugin tests/plugin/libhotblocks.so + -plugin contrib/plugin/libhowvec.so,inline=on,count=hint \ + -plugin contrib/plugin/libhotblocks.so Arguments are plugin specific and can be used to modify their behaviour. In this case the howvec plugin is being asked to use inline ops to count and break down the hint instructions by type. +Linux user-mode emulation also evaluates the environment variable +``QEMU_PLUGIN``:: + + QEMU_PLUGIN="file=contrib/plugins/libhowvec.so,inline=on,count=hint" $QEMU + Writing plugins --------------- diff --git a/docs/qemu_logo.pdf b/docs/qemu_logo.pdf deleted file mode 100644 index 294cb7dec5..0000000000 Binary files a/docs/qemu_logo.pdf and /dev/null differ diff --git a/semihosting/config.c b/semihosting/config.c index 137171b717..50d82108e6 100644 --- a/semihosting/config.c +++ b/semihosting/config.c @@ -51,7 +51,7 @@ typedef struct SemihostingConfig { bool enabled; SemihostingTarget target; Chardev *chardev; - const char **argv; + char **argv; int argc; const char *cmdline; /* concatenated argv */ } SemihostingConfig; @@ -98,8 +98,8 @@ static int add_semihosting_arg(void *opaque, if (strcmp(name, "arg") == 0) { s->argc++; /* one extra element as g_strjoinv() expects NULL-terminated array */ - s->argv = g_realloc(s->argv, (s->argc + 1) * sizeof(void *)); - s->argv[s->argc - 1] = val; + s->argv = g_renew(char *, s->argv, s->argc + 1); + s->argv[s->argc - 1] = g_strdup(val); s->argv[s->argc] = NULL; } return 0; diff --git a/target/i386/tcg/fpu_helper.c b/target/i386/tcg/fpu_helper.c index cdd8e9f947..ebf5e73df9 100644 --- a/target/i386/tcg/fpu_helper.c +++ b/target/i386/tcg/fpu_helper.c @@ -237,24 +237,37 @@ void helper_fldl_ST0(CPUX86State *env, uint64_t val) merge_exception_flags(env, old_flags); } +static FloatX80RoundPrec tmp_maximise_precision(float_status *st) +{ + FloatX80RoundPrec old = get_floatx80_rounding_precision(st); + set_floatx80_rounding_precision(floatx80_precision_x, st); + return old; +} + void helper_fildl_ST0(CPUX86State *env, int32_t val) { int new_fpstt; + FloatX80RoundPrec old = tmp_maximise_precision(&env->fp_status); new_fpstt = (env->fpstt - 1) & 7; env->fpregs[new_fpstt].d = int32_to_floatx80(val, &env->fp_status); env->fpstt = new_fpstt; env->fptags[new_fpstt] = 0; /* validate stack entry */ + + set_floatx80_rounding_precision(old, &env->fp_status); } void helper_fildll_ST0(CPUX86State *env, int64_t val) { int new_fpstt; + FloatX80RoundPrec old = tmp_maximise_precision(&env->fp_status); new_fpstt = (env->fpstt - 1) & 7; env->fpregs[new_fpstt].d = int64_to_floatx80(val, &env->fp_status); env->fpstt = new_fpstt; env->fptags[new_fpstt] = 0; /* validate stack entry */ + + set_floatx80_rounding_precision(old, &env->fp_status); } uint32_t helper_fsts_ST0(CPUX86State *env) diff --git a/tests/Makefile.include b/tests/Makefile.include index b89018cdcc..05c534ea56 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -155,6 +155,6 @@ check-build: run-ninja check-clean: rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR) -clean: check-clean +clean: check-clean clean-tcg endif