From 47fdc8fb82fc8dd182b4923a69cefadc87419e0d Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Thu, 17 Nov 2022 17:25:20 +0000 Subject: [PATCH 01/71] Run docker probe only if docker or podman are available MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The docker probe uses "sudo -n" which can cause an e-mail with a security warning each time when configure is run. Therefore run docker probe only if either docker or podman are available. That avoids the problematic "sudo -n" on build environments which have neither docker nor podman installed. Fixes: c4575b59155e2e00 ("configure: store container engine in config-host.mak") Signed-off-by: Stefan Weil Message-Id: <20221030083510.310584-1-sw@weilnetz.de> Signed-off-by: Alex Bennée Reviewed-by: Thomas Huth Message-Id: <20221117172532.538149-2-alex.bennee@linaro.org> --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 66928692b0..26c7bc5154 100755 --- a/configure +++ b/configure @@ -1780,7 +1780,7 @@ fi # functions to probe cross compilers container="no" -if test $use_containers = "yes"; then +if test $use_containers = "yes" && (has "docker" || has "podman"); then case $($python "$source_path"/tests/docker/docker.py probe) in *docker) container=docker ;; podman) container=podman ;; From a4b14b46d91eb24415fafd5a8aa8f9514c817a53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Thu, 17 Nov 2022 17:25:21 +0000 Subject: [PATCH 02/71] tests/avocado/machine_aspeed.py: Reduce noise on the console for SDK tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Aspeed SDK images are based on OpenBMC which starts a lot of services. The output noise on the console can break from time to time the test waiting for the logging prompt. Change the U-Boot bootargs variable to add "quiet" to the kernel command line and reduce the output volume. This also drops the test on the CPU id which was nice to have but not essential. Signed-off-by: Cédric Le Goater Message-Id: <20221104075347.370503-1-clg@kaod.org> Signed-off-by: Alex Bennée Message-Id: <20221117172532.538149-3-alex.bennee@linaro.org> --- tests/avocado/machine_aspeed.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tests/avocado/machine_aspeed.py b/tests/avocado/machine_aspeed.py index fba6527026..1fc385e1c8 100644 --- a/tests/avocado/machine_aspeed.py +++ b/tests/avocado/machine_aspeed.py @@ -12,6 +12,7 @@ from avocado_qemu import QemuSystemTest from avocado_qemu import wait_for_console_pattern from avocado_qemu import exec_command from avocado_qemu import exec_command_and_wait_for_pattern +from avocado_qemu import interrupt_interactive_console_until_pattern from avocado.utils import archive from avocado import skipIf @@ -182,6 +183,8 @@ class AST2x00Machine(QemuSystemTest): class AST2x00MachineSDK(QemuSystemTest): + EXTRA_BOOTARGS = ' quiet' + # FIXME: Although these tests boot a whole distro they are still # slower than comparable machine models. There may be some # optimisations which bring down the runtime. In the meantime they @@ -194,7 +197,7 @@ class AST2x00MachineSDK(QemuSystemTest): failure_message='Kernel panic - not syncing', vm=vm) - def do_test_arm_aspeed_sdk_start(self, image, cpu_id): + def do_test_arm_aspeed_sdk_start(self, image): self.require_netdev('user') self.vm.set_console() self.vm.add_args('-drive', 'file=' + image + ',if=mtd,format=raw', @@ -202,9 +205,13 @@ class AST2x00MachineSDK(QemuSystemTest): self.vm.launch() self.wait_for_console_pattern('U-Boot 2019.04') - self.wait_for_console_pattern('## Loading kernel from FIT Image') + interrupt_interactive_console_until_pattern( + self, 'Hit any key to stop autoboot:', 'ast#') + exec_command_and_wait_for_pattern( + self, 'setenv bootargs ${bootargs}' + self.EXTRA_BOOTARGS, 'ast#') + exec_command_and_wait_for_pattern( + self, 'boot', '## Loading kernel from FIT Image') self.wait_for_console_pattern('Starting kernel ...') - self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id) @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab') def test_arm_ast2500_evb_sdk(self): @@ -221,7 +228,7 @@ class AST2x00MachineSDK(QemuSystemTest): archive.extract(image_path, self.workdir) self.do_test_arm_aspeed_sdk_start( - self.workdir + '/ast2500-default/image-bmc', '0x0') + self.workdir + '/ast2500-default/image-bmc') self.wait_for_console_pattern('ast2500-default login:') @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab') @@ -243,7 +250,7 @@ class AST2x00MachineSDK(QemuSystemTest): self.vm.add_args('-device', 'ds1338,bus=aspeed.i2c.bus.5,address=0x32'); self.do_test_arm_aspeed_sdk_start( - self.workdir + '/ast2600-default/image-bmc', '0xf00') + self.workdir + '/ast2600-default/image-bmc') self.wait_for_console_pattern('ast2600-default login:') exec_command_and_wait_for_pattern(self, 'root', 'Password:') exec_command_and_wait_for_pattern(self, '0penBmc', 'root@ast2600-default:~#') From e558220df0739474d5877616173cb072df0c8257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 17 Nov 2022 17:25:22 +0000 Subject: [PATCH 03/71] tests/docker: allow user to override check target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is useful when trying to bisect a particular failing test behind a docker run. For example: make docker-test-clang@fedora \ TARGET_LIST=arm-softmmu \ TEST_COMMAND="meson test qtest-arm/qos-test" \ J=9 V=1 Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221117172532.538149-4-alex.bennee@linaro.org> --- tests/docker/Makefile.include | 2 ++ tests/docker/common.rc | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index c87f14477a..fc7a3b7e71 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -184,6 +184,7 @@ docker: @echo ' TARGET_LIST=a,b,c Override target list in builds.' @echo ' EXTRA_CONFIGURE_OPTS="..."' @echo ' Extra configure options.' + @echo ' TEST_COMMAND="..." Override the default `make check` target.' @echo ' IMAGES="a b c ..": Restrict available images to subset.' @echo ' TESTS="x y z .." Restrict available tests to subset.' @echo ' J=[0..9]* Overrides the -jN parameter for make commands' @@ -230,6 +231,7 @@ docker-run: docker-qemu-src $(if $(NETWORK),$(if $(subst $(NETWORK),,1),--net=$(NETWORK)),--net=none) \ -e TARGET_LIST=$(subst $(SPACE),$(COMMA),$(TARGET_LIST)) \ -e EXTRA_CONFIGURE_OPTS="$(EXTRA_CONFIGURE_OPTS)" \ + -e TEST_COMMAND="$(TEST_COMMAND)" \ -e V=$V -e J=$J -e DEBUG=$(DEBUG) \ -e SHOW_ENV=$(SHOW_ENV) \ $(if $(NOUSER),, \ diff --git a/tests/docker/common.rc b/tests/docker/common.rc index e6f8cee0d6..9a33df2832 100755 --- a/tests/docker/common.rc +++ b/tests/docker/common.rc @@ -63,12 +63,12 @@ check_qemu() { # default to make check unless the caller specifies if [ $# = 0 ]; then - INVOCATION="check" + INVOCATION="${TEST_COMMAND:-make $MAKEFLAGS check}" else - INVOCATION="$@" + INVOCATION="make $MAKEFLAGS $@" fi - make $MAKEFLAGS $INVOCATION + $INVOCATION } test_fail() From 668725ce6bab12f7d5130fd46d99d0dc6fefe733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 17 Nov 2022 17:25:23 +0000 Subject: [PATCH 04/71] docs/devel: add a maintainers section to development process MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We don't currently have a clear place in the documentation to describe the roles and responsibilities of a maintainer. Lets create one so we can. I've moved a few small bits out of other files to try and keep everything in one place. Signed-off-by: Alex Bennée Reviewed-by: Stefan Hajnoczi Reviewed-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221117172532.538149-5-alex.bennee@linaro.org> --- MAINTAINERS | 2 +- docs/devel/code-of-conduct.rst | 2 + docs/devel/index-process.rst | 1 + docs/devel/maintainers.rst | 107 +++++++++++++++++++++++ docs/devel/submitting-a-pull-request.rst | 12 +-- 5 files changed, 115 insertions(+), 9 deletions(-) create mode 100644 docs/devel/maintainers.rst diff --git a/MAINTAINERS b/MAINTAINERS index be151f0024..366538f9e2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -23,7 +23,7 @@ Descriptions of section entries: W: Web-page with status/info Q: Patchwork web based patch tracking system site T: SCM tree type and location. Type is one of: git, hg, quilt, stgit. - S: Status, one of the following: + S: Status, one of the following (keep in sync with docs/devel/maintainers.rst): Supported: Someone is actually paid to look after this. Maintained: Someone actually looks after it. Odd Fixes: It has a maintainer but they don't have time to do diff --git a/docs/devel/code-of-conduct.rst b/docs/devel/code-of-conduct.rst index 195444d1b4..f734ed0317 100644 --- a/docs/devel/code-of-conduct.rst +++ b/docs/devel/code-of-conduct.rst @@ -1,3 +1,5 @@ +.. _code_of_conduct: + Code of Conduct =============== diff --git a/docs/devel/index-process.rst b/docs/devel/index-process.rst index d0d7a200fd..d50dd74c3e 100644 --- a/docs/devel/index-process.rst +++ b/docs/devel/index-process.rst @@ -8,6 +8,7 @@ Notes about how to interact with the community and how and where to submit patch code-of-conduct conflict-resolution + maintainers style submitting-a-patch trivial-patches diff --git a/docs/devel/maintainers.rst b/docs/devel/maintainers.rst new file mode 100644 index 0000000000..5c907d901c --- /dev/null +++ b/docs/devel/maintainers.rst @@ -0,0 +1,107 @@ +.. _maintainers: + +The Role of Maintainers +======================= + +Maintainers are a critical part of the project's contributor ecosystem. +They come from a wide range of backgrounds from unpaid hobbyists +working in their spare time to employees who work on the project as +part of their job. Maintainer activities include: + + - reviewing patches and suggesting changes + - collecting patches and preparing pull requests + - tending to the long term health of their area + - participating in other project activities + +They are also human and subject to the same pressures as everyone else +including overload and burnout. Like everyone else they are subject +to project's :ref:`code_of_conduct` and should also be exemplars of +excellent community collaborators. + +The MAINTAINERS file +-------------------- + +The `MAINTAINERS +`__ +file contains the canonical list of who is a maintainer. The file +is machine readable so an appropriately configured git (see +:ref:`cc_the_relevant_maintainer`) can automatically Cc them on +patches that touch their area of code. + +The file also describes the status of the area of code to give an idea +of how actively that section is maintained. + +.. list-table:: Meaning of support status in MAINTAINERS + :widths: 25 75 + :header-rows: 1 + + * - Status + - Meaning + * - Supported + - Someone is actually paid to look after this. + * - Maintained + - Someone actually looks after it. + * - Odd Fixes + - It has a maintainer but they don't have time to do + much other than throw the odd patch in. + * - Orphan + - No current maintainer. + * - Obsolete + - Old obsolete code, should use something else. + +Please bear in mind that even if someone is paid to support something +it does not mean they are paid to support you. This is open source and +the code comes with no warranty and the project makes no guarantees +about dealing with bugs or features requests. + + + +Becoming a reviewer +------------------- + +Most maintainers start by becoming subsystem reviewers. While anyone +is welcome to review code on the mailing list getting added to the +MAINTAINERS file with a line like:: + + R: Random Hacker + +marks you as a 'designated reviewer' - expected to provide regular +spontaneous feedback. This will ensure that patches touching a given +subsystem will automatically be CC'd to you. + +Becoming a maintainer +--------------------- + +Maintainers are volunteers who put themselves forward or have been +asked by others to keep an eye on an area of code. They have generally +demonstrated to the community, usually via contributions and code +reviews, that they have a good understanding of the subsystem. They +are also trusted to make a positive contribution to the project and +work well with the other contributors. + +The process is simple - simply send a patch to the list that updates +the ``MAINTAINERS`` file. Sometimes this is done as part of a larger +series when a new sub-system is being added to the code base. This can +also be done by a retiring maintainer who nominates their replacement +after discussion with other contributors. + +Once the patch is reviewed and merged the only other step is to make +sure your GPG key is signed. + +.. _maintainer_keys: + +Maintainer GPG Keys +~~~~~~~~~~~~~~~~~~~ + +GPG is used to sign pull requests so they can be identified as really +coming from the maintainer. If your key is not already signed by +members of the QEMU community, you should make arrangements to attend +a `KeySigningParty `__ (for +example at KVM Forum) or make alternative arrangements to have your +key signed by an attendee. Key signing requires meeting another +community member **in person** [#]_ so please make appropriate +arrangements. + +.. [#] In recent pandemic times we have had to exercise some + flexibility here. Maintainers still need to sign their pull + requests though. diff --git a/docs/devel/submitting-a-pull-request.rst b/docs/devel/submitting-a-pull-request.rst index c9d1e8afd9..a4cd7ebbb6 100644 --- a/docs/devel/submitting-a-pull-request.rst +++ b/docs/devel/submitting-a-pull-request.rst @@ -53,14 +53,10 @@ series) and that "make check" passes before sending out the pull request. As a submaintainer you're one of QEMU's lines of defense against bad code, so double check the details. -**All pull requests must be signed**. If your key is not already signed -by members of the QEMU community, you should make arrangements to attend -a `KeySigningParty `__ (for -example at KVM Forum) or make alternative arrangements to have your key -signed by an attendee. Key signing requires meeting another community -member \*in person\* so please make appropriate arrangements. By -"signed" here we mean that the pullreq email should quote a tag which is -a GPG-signed tag (as created with 'gpg tag -s ...'). +**All pull requests must be signed**. By "signed" here we mean that +the pullreq email should quote a tag which is a GPG-signed tag (as +created with 'gpg tag -s ...'). See :ref:`maintainer_keys` for +details. **Pull requests not for master should say "not for master" and have "PULL SUBSYSTEM whatever" in the subject tag**. If your pull request is From 115847f6b05f7a6a3d475208fd120868627f049c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 17 Nov 2022 17:25:24 +0000 Subject: [PATCH 05/71] docs/devel: make language a little less code centric MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We welcome all sorts of patches. Signed-off-by: Alex Bennée Reviewed-by: Stefan Hajnoczi Reviewed-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221117172532.538149-6-alex.bennee@linaro.org> --- docs/devel/submitting-a-patch.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/devel/submitting-a-patch.rst b/docs/devel/submitting-a-patch.rst index fec33ce148..1319dfd3c2 100644 --- a/docs/devel/submitting-a-patch.rst +++ b/docs/devel/submitting-a-patch.rst @@ -3,11 +3,11 @@ Submitting a Patch ================== -QEMU welcomes contributions of code (either fixing bugs or adding new -functionality). However, we get a lot of patches, and so we have some -guidelines about submitting patches. If you follow these, you'll help -make our task of code review easier and your patch is likely to be -committed faster. +QEMU welcomes contributions to fix bugs, add functionality or improve +the documentation. However, we get a lot of patches, and so we have +some guidelines about submitting them. If you follow these, you'll +help make our task of contribution review easier and your change is +likely to be accepted and committed faster. This page seems very long, so if you are only trying to post a quick one-shot fix, the bare minimum we ask is that: From ca127fe96ddb827f3ea153610c1e8f6e374708e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 17 Nov 2022 17:25:25 +0000 Subject: [PATCH 06/71] docs/devel: simplify the minimal checklist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bullet points are quite long and contain process tips. Move those bits of the bullet to the relevant sections and link to them. Use a table for nicer formatting of the checklist. Signed-off-by: Alex Bennée Reviewed-by: Stefan Hajnoczi Reviewed-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221117172532.538149-7-alex.bennee@linaro.org> --- docs/devel/submitting-a-patch.rst | 75 ++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/docs/devel/submitting-a-patch.rst b/docs/devel/submitting-a-patch.rst index 1319dfd3c2..b2a162ff4c 100644 --- a/docs/devel/submitting-a-patch.rst +++ b/docs/devel/submitting-a-patch.rst @@ -12,25 +12,18 @@ likely to be accepted and committed faster. This page seems very long, so if you are only trying to post a quick one-shot fix, the bare minimum we ask is that: -- You **must** provide a Signed-off-by: line (this is a hard - requirement because it's how you say "I'm legally okay to contribute - this and happy for it to go into QEMU", modeled after the `Linux kernel - `__ - policy.) ``git commit -s`` or ``git format-patch -s`` will add one. -- All contributions to QEMU must be **sent as patches** to the - qemu-devel `mailing list `__. - Patch contributions should not be posted on the bug tracker, posted on - forums, or externally hosted and linked to. (We have other mailing lists too, - but all patches must go to qemu-devel, possibly with a Cc: to another - list.) ``git send-email`` (`step-by-step setup - guide `__ and `hints and - tips `__) - works best for delivering the patch without mangling it, but - attachments can be used as a last resort on a first-time submission. -- You must read replies to your message, and be willing to act on them. - Note, however, that maintainers are often willing to manually fix up - first-time contributions, since there is a learning curve involved in - making an ideal patch submission. +.. list-table:: Minimal Checklist for Patches + :widths: 35 65 + :header-rows: 1 + + * - Check + - Reason + * - Patches contain Signed-off-by: Real Name + - States you are legally able to contribute the code. See :ref:`patch_emails_must_include_a_signed_off_by_line` + * - Sent as patch emails to ``qemu-devel@nongnu.org`` + - The project uses an email list based workflow. See :ref:`submitting_your_patches` + * - Be prepared to respond to review comments + - Code that doesn't pass review will not get merged. See :ref:`participating_in_code_review` You do not have to subscribe to post (list policy is to reply-to-all to preserve CCs and keep non-subscribers in the loop on the threads they @@ -229,6 +222,19 @@ bisection doesn't land on a known-broken state. Submitting your Patches ----------------------- +The QEMU project uses a public email based workflow for reviewing and +merging patches. As a result all contributions to QEMU must be **sent +as patches** to the qemu-devel `mailing list +`__. Patch +contributions should not be posted on the bug tracker, posted on +forums, or externally hosted and linked to. (We have other mailing +lists too, but all patches must go to qemu-devel, possibly with a Cc: +to another list.) ``git send-email`` (`step-by-step setup guide +`__ and `hints and tips +`__) +works best for delivering the patch without mangling it, but +attachments can be used as a last resort on a first-time submission. + .. _if_you_cannot_send_patch_emails: If you cannot send patch emails @@ -314,10 +320,12 @@ git repository to fetch the original commit. Patch emails must include a ``Signed-off-by:`` line ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For more information see `SubmittingPatches 1.12 -`__. -This is vital or we will not be able to apply your patch! Please use -your real name to sign a patch (not an alias or acronym). +Your patches **must** include a Signed-off-by: line. This is a hard +requirement because it's how you say "I'm legally okay to contribute +this and happy for it to go into QEMU". The process is modelled after +the `Linux kernel +`__ +policy. If you wrote the patch, make sure your "From:" and "Signed-off-by:" lines use the same spelling. It's okay if you subscribe or contribute to @@ -327,6 +335,11 @@ include a "From:" line in the body of the email (different from your envelope From:) that will give credit to the correct author; but again, that author's Signed-off-by: line is mandatory, with the same spelling. +There are various tooling options for automatically adding these tags +include using ``git commit -s`` or ``git format-patch -s``. For more +information see `SubmittingPatches 1.12 +`__. + .. _include_a_meaningful_cover_letter: Include a meaningful cover letter @@ -397,9 +410,19 @@ Participating in Code Review ---------------------------- All patches submitted to the QEMU project go through a code review -process before they are accepted. Some areas of code that are well -maintained may review patches quickly, lesser-loved areas of code may -have a longer delay. +process before they are accepted. This will often mean a series will +go through a number of iterations before being picked up by +:ref:`maintainers`. You therefore should be prepared to +read replies to your messages and be willing to act on them. + +Maintainers are often willing to manually fix up first-time +contributions, since there is a learning curve involved in making an +ideal patch submission. However for the best results you should +proactively respond to suggestions with changes or justifications for +your current approach. + +Some areas of code that are well maintained may review patches +quickly, lesser-loved areas of code may have a longer delay. .. _stay_around_to_fix_problems_raised_in_code_review: From 73ee4c55f7ff95a835584ae54bf840b9281b11d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 17 Nov 2022 17:25:26 +0000 Subject: [PATCH 07/71] docs/devel: try and improve the language around patch review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It is important that contributors take the review process seriously and we collaborate in a respectful way while avoiding personal attacks. Try and make this clear in the language. Signed-off-by: Alex Bennée Reviewed-by: Markus Armbruster Reviewed-by: Stefan Hajnoczi Reviewed-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221117172532.538149-8-alex.bennee@linaro.org> --- docs/devel/submitting-a-patch.rst | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/devel/submitting-a-patch.rst b/docs/devel/submitting-a-patch.rst index b2a162ff4c..c641d948f1 100644 --- a/docs/devel/submitting-a-patch.rst +++ b/docs/devel/submitting-a-patch.rst @@ -434,14 +434,20 @@ developers will identify bugs, or suggest a cleaner approach, or even just point out code style issues or commit message typos. You'll need to respond to these, and then send a second version of your patches with the issues fixed. This takes a little time and effort on your part, but -if you don't do it then your changes will never get into QEMU. It's also -just polite -- it is quite disheartening for a developer to spend time -reviewing your code and suggesting improvements, only to find that -you're not going to do anything further and it was all wasted effort. +if you don't do it then your changes will never get into QEMU. + +Remember that a maintainer is under no obligation to take your +patches. If someone has spent the time reviewing your code and +suggesting improvements and you simply re-post without either +addressing the comment directly or providing additional justification +for the change then it becomes wasted effort. You cannot demand others +merge and then fix up your code after the fact. When replying to comments on your patches **reply to all and not just the sender** -- keeping discussion on the mailing list means everybody -can follow it. +can follow it. Remember the spirit of the :ref:`code_of_conduct` and +keep discussions respectful and collaborative and avoid making +personal comments. .. _pay_attention_to_review_comments: From 5d25e1e02c5bd297197968668d4351806c65893e Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Thu, 17 Nov 2022 17:25:27 +0000 Subject: [PATCH 08/71] tests/avocado: Raise timeout for boot_linux.py:BootLinuxPPC64.test_pseries_tcg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On my machine, a debug build of QEMU takes about 260 seconds to complete this test, so with the current timeout value of 180 seconds it always times out. Double the timeout value to 360 so the test definitely has enough time to complete. Signed-off-by: Peter Maydell Signed-off-by: Alex Bennée Message-Id: <20221110142901.3832318-1-peter.maydell@linaro.org> Message-Id: <20221117172532.538149-9-alex.bennee@linaro.org> --- tests/avocado/boot_linux.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/avocado/boot_linux.py b/tests/avocado/boot_linux.py index 32adae6ff6..8c8a63ec2e 100644 --- a/tests/avocado/boot_linux.py +++ b/tests/avocado/boot_linux.py @@ -116,7 +116,7 @@ class BootLinuxPPC64(LinuxTest): :avocado: tags=arch:ppc64 """ - timeout = 180 + timeout = 360 def test_pseries_tcg(self): """ From ba5d1f23f71c6c3c5ff34963bc52f82406ea9f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 17 Nov 2022 17:25:28 +0000 Subject: [PATCH 09/71] tests/avocado: introduce alpine virt test for CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The boot_linux tests download and run a full cloud image boot and start a full distro. While the ability to test the full boot chain is worthwhile it is perhaps a little too heavy weight and causes issues in CI. Fix this by introducing a new alpine linux ISO boot in machine_aarch64_virt. This boots a fully loaded -cpu max with all the bells and whistles in 31s on my machine. A full debug build takes around 180s on my machine so we set a more generous timeout to cover that. We don't add a test for lesser GIC versions although there is some coverage for that already in the boot_xen.py tests. If we want to introduce more comprehensive testing we can do it with a custom kernel and initrd rather than a full distro boot. Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221117172532.538149-10-alex.bennee@linaro.org> --- tests/avocado/machine_aarch64_virt.py | 46 ++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/tests/avocado/machine_aarch64_virt.py b/tests/avocado/machine_aarch64_virt.py index 21848cba70..c2b2ba2cf8 100644 --- a/tests/avocado/machine_aarch64_virt.py +++ b/tests/avocado/machine_aarch64_virt.py @@ -1,4 +1,5 @@ -# Functional test that boots a Linux kernel and checks the console +# Functional test that boots a various Linux systems and checks the +# console output. # # Copyright (c) 2022 Linaro Ltd. # @@ -8,19 +9,62 @@ # SPDX-License-Identifier: GPL-2.0-or-later import time +import os from avocado_qemu import QemuSystemTest from avocado_qemu import wait_for_console_pattern from avocado_qemu import exec_command +from avocado_qemu import BUILD_DIR class Aarch64VirtMachine(QemuSystemTest): KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 ' + timeout = 360 def wait_for_console_pattern(self, success_message, vm=None): wait_for_console_pattern(self, success_message, failure_message='Kernel panic - not syncing', vm=vm) + # This tests the whole boot chain from EFI to Userspace + # We only boot a whole OS for the current top level CPU and GIC + # Other test profiles should use more minimal boots + def test_alpine_virt_tcg_gic_max(self): + """ + :avocado: tags=arch:aarch64 + :avocado: tags=machine:virt + :avocado: tags=accel:tcg + """ + iso_url = ('https://dl-cdn.alpinelinux.org/' + 'alpine/v3.16/releases/aarch64/' + 'alpine-virt-3.16.3-aarch64.iso') + + # Alpine use sha256 so I recalculated this myself + iso_sha1 = '0683bc089486d55c91bf6607d5ecb93925769bc0' + iso_path = self.fetch_asset(iso_url, asset_hash=iso_sha1) + + self.vm.set_console() + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + + 'console=ttyAMA0') + self.require_accelerator("tcg") + + self.vm.add_args("-accel", "tcg") + self.vm.add_args("-cpu", "max,pauth-impdef=on") + self.vm.add_args("-machine", + "virt,acpi=on," + "virtualization=on," + "mte=on," + "gic-version=max,iommu=smmuv3") + self.vm.add_args("-smp", "2", "-m", "1024") + self.vm.add_args('-bios', os.path.join(BUILD_DIR, 'pc-bios', + 'edk2-aarch64-code.fd')) + self.vm.add_args("-drive", f"file={iso_path},format=raw") + self.vm.add_args('-device', 'virtio-rng-pci,rng=rng0') + self.vm.add_args('-object', 'rng-random,id=rng0,filename=/dev/urandom') + + self.vm.launch() + self.wait_for_console_pattern('Welcome to Alpine Linux 3.16') + + def test_aarch64_virt(self): """ :avocado: tags=arch:aarch64 From f22a80727fe99f3119a860cf0ad43f4885836d9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 17 Nov 2022 17:25:29 +0000 Subject: [PATCH 10/71] tests/avocado: skip aarch64 cloud TCG tests in CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now have a much lighter weight test in machine_aarch64_virt which tests the full boot chain in less time. Rename the tests while we are at it to make it clear it is a Fedora cloud image. Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221117172532.538149-11-alex.bennee@linaro.org> --- tests/avocado/boot_linux.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/avocado/boot_linux.py b/tests/avocado/boot_linux.py index 8c8a63ec2e..b3e58fa309 100644 --- a/tests/avocado/boot_linux.py +++ b/tests/avocado/boot_linux.py @@ -58,6 +58,9 @@ class BootLinuxX8664(LinuxTest): self.launch_and_wait(set_up_ssh_connection=False) +# For Aarch64 we only boot KVM tests in CI as the TCG tests are very +# heavyweight. There are lighter weight distros which we use in the +# machine_aarch64_virt.py tests. class BootLinuxAarch64(LinuxTest): """ :avocado: tags=arch:aarch64 @@ -73,7 +76,8 @@ class BootLinuxAarch64(LinuxTest): self.vm.add_args('-device', 'virtio-rng-pci,rng=rng0') self.vm.add_args('-object', 'rng-random,id=rng0,filename=/dev/urandom') - def test_virt_tcg_gicv2(self): + @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab') + def test_fedora_cloud_tcg_gicv2(self): """ :avocado: tags=accel:tcg :avocado: tags=cpu:max @@ -86,7 +90,8 @@ class BootLinuxAarch64(LinuxTest): self.add_common_args() self.launch_and_wait(set_up_ssh_connection=False) - def test_virt_tcg_gicv3(self): + @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab') + def test_fedora_cloud_tcg_gicv3(self): """ :avocado: tags=accel:tcg :avocado: tags=cpu:max From 5544d33d4b3683861315c73eb956492ed8891ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 17 Nov 2022 17:25:30 +0000 Subject: [PATCH 11/71] gitlab: integrate coverage report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This should hopefully give is nice coverage information about what our tests (or at least the subset we are running) have hit. Ideally we would want a way to trigger coverage on tests likely to be affected by the current commit. Signed-off-by: Alex Bennée Acked-by: Stefan Hajnoczi Message-Id: <20221117172532.538149-12-alex.bennee@linaro.org> --- .gitlab-ci.d/buildtest.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index 7173749c52..d21b4a1fd4 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -494,7 +494,17 @@ check-gprof-gcov: IMAGE: ubuntu2004 MAKE_CHECK_ARGS: check after_script: - - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh + - cd build + - gcovr --xml-pretty --exclude-unreachable-branches --print-summary + -o coverage.xml --root ${CI_PROJECT_DIR} . *.p + coverage: /^\s*lines:\s*\d+.\d+\%/ + artifacts: + name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA} + expire_in: 2 days + reports: + coverage_report: + coverage_format: cobertura + path: build/coverage.xml build-oss-fuzz: extends: .native_build_job_template From 562a7d23bf9a2f978cea799af40a1b2b0b4fc71b Mon Sep 17 00:00:00 2001 From: Stefano Garzarella Date: Mon, 21 Nov 2022 11:11:01 +0100 Subject: [PATCH 12/71] vhost: mask VIRTIO_F_RING_RESET for vhost and vhost-user devices Commit 69e1c14aa2 ("virtio: core: vq reset feature negotation support") enabled VIRTIO_F_RING_RESET by default for all virtio devices. This feature is not currently emulated by QEMU, so for vhost and vhost-user devices we need to make sure it is supported by the offloaded device emulation (in-kernel or in another process). To do this we need to add VIRTIO_F_RING_RESET to the features bitmap passed to vhost_get_features(). This way it will be masked if the device does not support it. This issue was initially discovered with vhost-vsock and vhost-user-vsock, and then also tested with vhost-user-rng which confirmed the same issue. They fail when sending features through VHOST_SET_FEATURES ioctl or VHOST_USER_SET_FEATURES message, since VIRTIO_F_RING_RESET is negotiated by the guest (Linux >= v6.0), but not supported by the device. Fixes: 69e1c14aa2 ("virtio: core: vq reset feature negotation support") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1318 Signed-off-by: Stefano Garzarella Message-Id: <20221121101101.29400-1-sgarzare@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Stefan Hajnoczi Acked-by: Raphael Norwitz Acked-by: Jason Wang --- hw/block/vhost-user-blk.c | 1 + hw/net/vhost_net.c | 1 + hw/scsi/vhost-scsi.c | 1 + hw/scsi/vhost-user-scsi.c | 1 + hw/virtio/vhost-user-fs.c | 1 + hw/virtio/vhost-user-gpio.c | 1 + hw/virtio/vhost-user-i2c.c | 1 + hw/virtio/vhost-user-rng.c | 11 +++++++++-- hw/virtio/vhost-vsock-common.c | 1 + net/vhost-vdpa.c | 1 + 10 files changed, 18 insertions(+), 2 deletions(-) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 16ad400889..0d5190accf 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -52,6 +52,7 @@ static const int user_feature_bits[] = { VIRTIO_F_NOTIFY_ON_EMPTY, VIRTIO_F_RING_PACKED, VIRTIO_F_IOMMU_PLATFORM, + VIRTIO_F_RING_RESET, VHOST_INVALID_FEATURE_BIT }; diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index feda448878..26e4930676 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -75,6 +75,7 @@ static const int user_feature_bits[] = { VIRTIO_NET_F_MTU, VIRTIO_F_IOMMU_PLATFORM, VIRTIO_F_RING_PACKED, + VIRTIO_F_RING_RESET, VIRTIO_NET_F_RSS, VIRTIO_NET_F_HASH_REPORT, diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c index bdf337a7a2..6a0fd0dfb1 100644 --- a/hw/scsi/vhost-scsi.c +++ b/hw/scsi/vhost-scsi.c @@ -38,6 +38,7 @@ static const int kernel_feature_bits[] = { VIRTIO_RING_F_INDIRECT_DESC, VIRTIO_RING_F_EVENT_IDX, VIRTIO_SCSI_F_HOTPLUG, + VIRTIO_F_RING_RESET, VHOST_INVALID_FEATURE_BIT }; diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c index bc37317d55..b7a71a802c 100644 --- a/hw/scsi/vhost-user-scsi.c +++ b/hw/scsi/vhost-user-scsi.c @@ -36,6 +36,7 @@ static const int user_feature_bits[] = { VIRTIO_RING_F_INDIRECT_DESC, VIRTIO_RING_F_EVENT_IDX, VIRTIO_SCSI_F_HOTPLUG, + VIRTIO_F_RING_RESET, VHOST_INVALID_FEATURE_BIT }; diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c index 1c40f42045..dc4014cdef 100644 --- a/hw/virtio/vhost-user-fs.c +++ b/hw/virtio/vhost-user-fs.c @@ -32,6 +32,7 @@ static const int user_feature_bits[] = { VIRTIO_F_NOTIFY_ON_EMPTY, VIRTIO_F_RING_PACKED, VIRTIO_F_IOMMU_PLATFORM, + VIRTIO_F_RING_RESET, VHOST_INVALID_FEATURE_BIT }; diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c index 677d1c7730..5851cb3bc9 100644 --- a/hw/virtio/vhost-user-gpio.c +++ b/hw/virtio/vhost-user-gpio.c @@ -24,6 +24,7 @@ static const int feature_bits[] = { VIRTIO_RING_F_INDIRECT_DESC, VIRTIO_RING_F_EVENT_IDX, VIRTIO_GPIO_F_IRQ, + VIRTIO_F_RING_RESET, VHOST_INVALID_FEATURE_BIT }; diff --git a/hw/virtio/vhost-user-i2c.c b/hw/virtio/vhost-user-i2c.c index 864eba695e..1c9f3d20dc 100644 --- a/hw/virtio/vhost-user-i2c.c +++ b/hw/virtio/vhost-user-i2c.c @@ -16,6 +16,7 @@ static const int feature_bits[] = { VIRTIO_I2C_F_ZERO_LENGTH_REQUEST, + VIRTIO_F_RING_RESET, VHOST_INVALID_FEATURE_BIT }; diff --git a/hw/virtio/vhost-user-rng.c b/hw/virtio/vhost-user-rng.c index 8b47287875..f9084cde58 100644 --- a/hw/virtio/vhost-user-rng.c +++ b/hw/virtio/vhost-user-rng.c @@ -16,6 +16,11 @@ #include "qemu/error-report.h" #include "standard-headers/linux/virtio_ids.h" +static const int feature_bits[] = { + VIRTIO_F_RING_RESET, + VHOST_INVALID_FEATURE_BIT +}; + static void vu_rng_start(VirtIODevice *vdev) { VHostUserRNG *rng = VHOST_USER_RNG(vdev); @@ -106,8 +111,10 @@ static void vu_rng_set_status(VirtIODevice *vdev, uint8_t status) static uint64_t vu_rng_get_features(VirtIODevice *vdev, uint64_t requested_features, Error **errp) { - /* No feature bits used yet */ - return requested_features; + VHostUserRNG *rng = VHOST_USER_RNG(vdev); + + return vhost_get_features(&rng->vhost_dev, feature_bits, + requested_features); } static void vu_rng_handle_output(VirtIODevice *vdev, VirtQueue *vq) diff --git a/hw/virtio/vhost-vsock-common.c b/hw/virtio/vhost-vsock-common.c index 29b9ab4f72..a67a275de2 100644 --- a/hw/virtio/vhost-vsock-common.c +++ b/hw/virtio/vhost-vsock-common.c @@ -21,6 +21,7 @@ const int feature_bits[] = { VIRTIO_VSOCK_F_SEQPACKET, + VIRTIO_F_RING_RESET, VHOST_INVALID_FEATURE_BIT }; diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index 6811089231..2b4b85d8f8 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -69,6 +69,7 @@ const int vdpa_feature_bits[] = { VIRTIO_NET_F_CTRL_VQ, VIRTIO_F_IOMMU_PLATFORM, VIRTIO_F_RING_PACKED, + VIRTIO_F_RING_RESET, VIRTIO_NET_F_RSS, VIRTIO_NET_F_HASH_REPORT, VIRTIO_NET_F_GUEST_ANNOUNCE, From 2df30863fa55002cc965a17405204860eda64273 Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Mon, 21 Nov 2022 16:36:11 +0100 Subject: [PATCH 13/71] tests: acpi: whitelist DSDT before moving PRQx to _SB scope Signed-off-by: Igor Mammedov Message-Id: <20221121153613.3972225-2-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/qtest/bios-tables-test-allowed-diff.h | 36 +++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h index dfb8523c8b..a4587652dd 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,37 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/pc/DSDT", +"tests/data/acpi/pc/DSDT.acpierst", +"tests/data/acpi/pc/DSDT.acpihmat", +"tests/data/acpi/pc/DSDT.bridge", +"tests/data/acpi/pc/DSDT.cphp", +"tests/data/acpi/pc/DSDT.dimmpxm", +"tests/data/acpi/pc/DSDT.hpbridge", +"tests/data/acpi/pc/DSDT.hpbrroot", +"tests/data/acpi/pc/DSDT.ipmikcs", +"tests/data/acpi/pc/DSDT.memhp", +"tests/data/acpi/pc/DSDT.nohpet", +"tests/data/acpi/pc/DSDT.numamem", +"tests/data/acpi/pc/DSDT.roothp", +"tests/data/acpi/q35/DSDT", +"tests/data/acpi/q35/DSDT.acpierst", +"tests/data/acpi/q35/DSDT.acpihmat", +"tests/data/acpi/q35/DSDT.acpihmat-noinitiator", +"tests/data/acpi/q35/DSDT.applesmc", +"tests/data/acpi/q35/DSDT.bridge", +"tests/data/acpi/q35/DSDT.cphp", +"tests/data/acpi/q35/DSDT.cxl", +"tests/data/acpi/q35/DSDT.core-count2", +"tests/data/acpi/q35/DSDT.dimmpxm", +"tests/data/acpi/q35/DSDT.ipmibt", +"tests/data/acpi/q35/DSDT.ipmismbus", +"tests/data/acpi/q35/DSDT.ivrs", +"tests/data/acpi/q35/DSDT.memhp", +"tests/data/acpi/q35/DSDT.mmio64", +"tests/data/acpi/q35/DSDT.multi-bridge", +"tests/data/acpi/q35/DSDT.nohpet", +"tests/data/acpi/q35/DSDT.numamem", +"tests/data/acpi/q35/DSDT.pvpanic-isa", +"tests/data/acpi/q35/DSDT.tis.tpm12", +"tests/data/acpi/q35/DSDT.tis.tpm2", +"tests/data/acpi/q35/DSDT.viot", +"tests/data/acpi/q35/DSDT.xapic", From 4fd75ce0760ad645ce4b8fe589717aee4f8c0da6 Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Mon, 21 Nov 2022 16:36:12 +0100 Subject: [PATCH 14/71] acpi: x86: move RPQx field back to _SB scope MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 47a373faa6b2 (acpi: pc/q35: drop ad-hoc PCI-ISA bridge AML routines and let bus ennumeration generate AML) moved ISA bridge AML generation to respective devices and was using aml_alias() to provide PRQx fields in _SB. scope. However, it turned out that SeaBIOS was not able to process Alias opcode when parsing DSDT, resulting in lack of keyboard during boot (SeaBIOS console, grub, FreeDOS). While fix for SeaBIOS is posted https://mail.coreboot.org/hyperkitty/list/seabios@seabios.org/thread/RGPL7HESH5U5JRLEO6FP77CZVHZK5J65/ fixed SeaBIOS might not make into QEMU-7.2 in time. Hence this workaround that puts PRQx back into _SB scope and gets rid of aliases in ISA bridge description, so DSDT will be parsable by broken SeaBIOS. That brings back hardcoded references to ISA bridge PCI0.S08.P40C/PCI0.SF8.PIRQ where middle part now is auto generated based on slot it's plugged in, but it should be fine as bridge initialization also hardcodes PCI address of the bridge so it can't ever move. Once QEMU tree has fixed SeaBIOS blob, we should be able to drop this part and revert back to alias based approach Reported-by: Volker Rümelin Signed-off-by: Igor Mammedov Message-Id: <20221121153613.3972225-3-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- hw/isa/lpc_ich9.c | 16 ++++------------ hw/isa/piix3.c | 12 ++++-------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index 0b0a83e080..6c44cc9767 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -813,12 +813,13 @@ static void build_ich9_isa_aml(AcpiDevAmlIf *adev, Aml *scope) BusChild *kid; ICH9LPCState *s = ICH9_LPC_DEVICE(adev); BusState *bus = BUS(s->isa_bus); + Aml *sb_scope = aml_scope("\\_SB"); /* ICH9 PCI to ISA irq remapping */ aml_append(scope, aml_operation_region("PIRQ", AML_PCI_CONFIG, aml_int(0x60), 0x0C)); /* Fields declarion has to happen *after* operation region */ - field = aml_field("PIRQ", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE); + field = aml_field("PCI0.SF8.PIRQ", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE); aml_append(field, aml_named_field("PRQA", 8)); aml_append(field, aml_named_field("PRQB", 8)); aml_append(field, aml_named_field("PRQC", 8)); @@ -828,17 +829,8 @@ static void build_ich9_isa_aml(AcpiDevAmlIf *adev, Aml *scope) aml_append(field, aml_named_field("PRQF", 8)); aml_append(field, aml_named_field("PRQG", 8)); aml_append(field, aml_named_field("PRQH", 8)); - aml_append(scope, field); - - /* hack: put fields into _SB scope for LNKx to find them */ - aml_append(scope, aml_alias("PRQA", "\\_SB.PRQA")); - aml_append(scope, aml_alias("PRQB", "\\_SB.PRQB")); - aml_append(scope, aml_alias("PRQC", "\\_SB.PRQC")); - aml_append(scope, aml_alias("PRQD", "\\_SB.PRQD")); - aml_append(scope, aml_alias("PRQE", "\\_SB.PRQE")); - aml_append(scope, aml_alias("PRQF", "\\_SB.PRQF")); - aml_append(scope, aml_alias("PRQG", "\\_SB.PRQG")); - aml_append(scope, aml_alias("PRQH", "\\_SB.PRQH")); + aml_append(sb_scope, field); + aml_append(scope, sb_scope); QTAILQ_FOREACH(kid, &bus->children, sibling) { call_dev_aml_func(DEVICE(kid->child), scope); diff --git a/hw/isa/piix3.c b/hw/isa/piix3.c index f9b4af5c05..eabad7ba58 100644 --- a/hw/isa/piix3.c +++ b/hw/isa/piix3.c @@ -318,24 +318,20 @@ static void build_pci_isa_aml(AcpiDevAmlIf *adev, Aml *scope) { Aml *field; BusChild *kid; + Aml *sb_scope = aml_scope("\\_SB"); BusState *bus = qdev_get_child_bus(DEVICE(adev), "isa.0"); /* PIIX PCI to ISA irq remapping */ aml_append(scope, aml_operation_region("P40C", AML_PCI_CONFIG, aml_int(0x60), 0x04)); /* Fields declarion has to happen *after* operation region */ - field = aml_field("P40C", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE); + field = aml_field("PCI0.S08.P40C", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE); aml_append(field, aml_named_field("PRQ0", 8)); aml_append(field, aml_named_field("PRQ1", 8)); aml_append(field, aml_named_field("PRQ2", 8)); aml_append(field, aml_named_field("PRQ3", 8)); - aml_append(scope, field); - - /* hack: put fields into _SB scope for LNKx to find them */ - aml_append(scope, aml_alias("PRQ0", "\\_SB.PRQ0")); - aml_append(scope, aml_alias("PRQ1", "\\_SB.PRQ1")); - aml_append(scope, aml_alias("PRQ2", "\\_SB.PRQ2")); - aml_append(scope, aml_alias("PRQ3", "\\_SB.PRQ3")); + aml_append(sb_scope, field); + aml_append(scope, sb_scope); QTAILQ_FOREACH(kid, &bus->children, sibling) { call_dev_aml_func(DEVICE(kid->child), scope); From 83afb1409f734e7a7fffee8dc4ee4496d06409a7 Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Mon, 21 Nov 2022 16:36:13 +0100 Subject: [PATCH 15/71] tests: acpi: x86: update expected DSDT after moving PRQx fields in _SB scope Expected DSDT changes, pc: - Field (P40C, ByteAcc, NoLock, Preserve) + Scope (\_SB) { - PRQ0, 8, - PRQ1, 8, - PRQ2, 8, - PRQ3, 8 + Field (PCI0.S08.P40C, ByteAcc, NoLock, Preserve) + { + PRQ0, 8, + PRQ1, 8, + PRQ2, 8, + PRQ3, 8 + } } - Alias (PRQ0, \_SB.PRQ0) - Alias (PRQ1, \_SB.PRQ1) - Alias (PRQ2, \_SB.PRQ2) - Alias (PRQ3, \_SB.PRQ3) q35: - Field (PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 + Scope (\_SB) + { + Field (PCI0.SF8.PIRQ, ByteAcc, NoLock, Preserve) + { + PRQA, 8, + PRQB, 8, + PRQC, 8, + PRQD, 8, + Offset (0x08), + PRQE, 8, + PRQF, 8, + PRQG, 8, + PRQH, 8 + } } - Alias (PRQA, \_SB.PRQA) - Alias (PRQB, \_SB.PRQB) - Alias (PRQC, \_SB.PRQC) - Alias (PRQD, \_SB.PRQD) - Alias (PRQE, \_SB.PRQE) - Alias (PRQF, \_SB.PRQF) - Alias (PRQG, \_SB.PRQG) - Alias (PRQH, \_SB.PRQH) Signed-off-by: Igor Mammedov Message-Id: <20221121153613.3972225-4-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/data/acpi/pc/DSDT | Bin 6501 -> 6458 bytes tests/data/acpi/pc/DSDT.acpierst | Bin 6461 -> 6418 bytes tests/data/acpi/pc/DSDT.acpihmat | Bin 7826 -> 7783 bytes tests/data/acpi/pc/DSDT.bridge | Bin 9575 -> 9532 bytes tests/data/acpi/pc/DSDT.cphp | Bin 6965 -> 6922 bytes tests/data/acpi/pc/DSDT.dimmpxm | Bin 8155 -> 8112 bytes tests/data/acpi/pc/DSDT.hpbridge | Bin 6461 -> 6418 bytes tests/data/acpi/pc/DSDT.hpbrroot | Bin 3107 -> 3064 bytes tests/data/acpi/pc/DSDT.ipmikcs | Bin 6573 -> 6530 bytes tests/data/acpi/pc/DSDT.memhp | Bin 7860 -> 7817 bytes tests/data/acpi/pc/DSDT.nohpet | Bin 6359 -> 6316 bytes tests/data/acpi/pc/DSDT.numamem | Bin 6507 -> 6464 bytes tests/data/acpi/pc/DSDT.roothp | Bin 6699 -> 6656 bytes tests/data/acpi/q35/DSDT | Bin 8412 -> 8310 bytes tests/data/acpi/q35/DSDT.acpierst | Bin 8429 -> 8327 bytes tests/data/acpi/q35/DSDT.acpihmat | Bin 9737 -> 9635 bytes tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 8691 -> 8589 bytes tests/data/acpi/q35/DSDT.applesmc | Bin 8458 -> 8356 bytes tests/data/acpi/q35/DSDT.bridge | Bin 11541 -> 11439 bytes tests/data/acpi/q35/DSDT.core-count2 | Bin 32552 -> 32450 bytes tests/data/acpi/q35/DSDT.cphp | Bin 8876 -> 8774 bytes tests/data/acpi/q35/DSDT.cxl | Bin 9738 -> 9636 bytes tests/data/acpi/q35/DSDT.dimmpxm | Bin 10066 -> 9964 bytes tests/data/acpi/q35/DSDT.ipmibt | Bin 8487 -> 8385 bytes tests/data/acpi/q35/DSDT.ipmismbus | Bin 8500 -> 8398 bytes tests/data/acpi/q35/DSDT.ivrs | Bin 8429 -> 8327 bytes tests/data/acpi/q35/DSDT.memhp | Bin 9771 -> 9669 bytes tests/data/acpi/q35/DSDT.mmio64 | Bin 9542 -> 9440 bytes tests/data/acpi/q35/DSDT.multi-bridge | Bin 8732 -> 8630 bytes tests/data/acpi/q35/DSDT.nohpet | Bin 8270 -> 8168 bytes tests/data/acpi/q35/DSDT.numamem | Bin 8418 -> 8316 bytes tests/data/acpi/q35/DSDT.pvpanic-isa | Bin 8513 -> 8411 bytes tests/data/acpi/q35/DSDT.tis.tpm12 | Bin 9018 -> 8916 bytes tests/data/acpi/q35/DSDT.tis.tpm2 | Bin 9044 -> 8942 bytes tests/data/acpi/q35/DSDT.viot | Bin 9521 -> 9419 bytes tests/data/acpi/q35/DSDT.xapic | Bin 35775 -> 35673 bytes tests/qtest/bios-tables-test-allowed-diff.h | 36 ------------------ 37 files changed, 36 deletions(-) diff --git a/tests/data/acpi/pc/DSDT b/tests/data/acpi/pc/DSDT index f1cf7fab349bd26e0f0fa461c715534c1426fbf5..b688686dc3614f56582991c0974f6ef1964ee6ce 100644 GIT binary patch delta 92 zcmaEAw9AOgCDyx{=ZJE4eC!gZB)fLbIi$*u9 n=rad6dm02ASi}dI7&tQq1O*y!00~17VFV(KIX1`hu<-%_+;JHN delta 115 zcmdmG^wfyUCD- diff --git a/tests/data/acpi/pc/DSDT.acpierst b/tests/data/acpi/pc/DSDT.acpierst index 5cb477625e96f5526f0c7703ba3b443a0b35eefd..86259be9d1df3fcc89b780f3bae028a5ebd8bbe5 100644 GIT binary patch delta 92 zcmdmMG|7m|CDq!K2nsad01}2E!U#kdb8L?1xyJ(l#`_td delta 115 zcmbPawAYBsCDyx{=ZJAsZCZFQAWsYu?nk>yD mX~Px}6lf5m2T}oIfw+cnt|5qP1m_xoxW;g<@n#dAdprPA1R$^g diff --git a/tests/data/acpi/pc/DSDT.acpihmat b/tests/data/acpi/pc/DSDT.acpihmat index 76e8bef36fdb667447ad0320d35604031aae2c93..e2cc2a6fc9877380ef85c3540654e0691472f27c 100644 GIT binary patch delta 92 zcmbPa``m`hCDoM`cPVoYc*C+1~ux0X+o%~(ER#!j=EE?UY nqR$-Q>}e2eU=bf+V&Kde5EN*@0VE7Tgb|1^=GfdL$i@o*_h}ic delta 135 zcmaEEGs%|ACD2az?R8XVe)qY+lc5!sQ?oL yXU2e_Km!gSVF)6OK!h;|8%Qul52Opk0&xxDTtg7o2+lPEagE_z@$5#fa&GRnS&T99!A|i4y)!5GaN9AtDoj4ZZOa_pC^cD@ nN79BZASlovMh~O{!~$^*;ao!y*9guv0&$JuT;t7VJZzEx@&h4V diff --git a/tests/data/acpi/pc/DSDT.cphp b/tests/data/acpi/pc/DSDT.cphp index eb3da0e232e4362bd5850e4eebf5916cbc1d565a..53eb0dd7d422e880a668cf3ea01b8b288004042a 100644 GIT binary patch delta 92 zcmdmL)@8=!66_MfCC$LVczYw4J1>{#^_cizr+5L!>yx8-ZJE4eC(q)w)fLbIi$*u9 n=rad6dm02ASi}dI7&tQq1O*y!00~17VFV(KIX3I_vGD=`smT~C delta 115 zcmeA&+iJ$;66_LUD$T&a=(3T^otMkyR!n@bQ@nuB&B@WcwoI-HlV|bTGDkN`O@7TQ mX~Px}6lf5m2T}oIfw+cnt|5qP1m_xoxW;g<@n#l2HeLW?o*)bW diff --git a/tests/data/acpi/pc/DSDT.dimmpxm b/tests/data/acpi/pc/DSDT.dimmpxm index 6553e4c6053aff76ac42dad87d714e4e9ab28f72..9089d994e0324741190b48dfcfb4e6074ba102c1 100644 GIT binary patch delta 71 zcmca@zrmi%CD}e2eU=csLK}d4*RUtNB03ZPsBme*a delta 115 zcmdmBf7_nRCDzdQxrQLF5u9rT;u^!b#+z3OvGD=`wTmG& diff --git a/tests/data/acpi/pc/DSDT.hpbridge b/tests/data/acpi/pc/DSDT.hpbridge index 5cb477625e96f5526f0c7703ba3b443a0b35eefd..86259be9d1df3fcc89b780f3bae028a5ebd8bbe5 100644 GIT binary patch delta 92 zcmdmMG|7m|CDq!K2nsad01}2E!U#kdb8L?1xyJ(l#`_td delta 115 zcmbPawAYBsCDyx{=ZJAsZCZFQAWsYu?nk>yD mX~Px}6lf5m2T}oIfw+cnt|5qP1m_xoxW;g<@n#dAdprPA1R$^g diff --git a/tests/data/acpi/pc/DSDT.hpbrroot b/tests/data/acpi/pc/DSDT.hpbrroot index ff04ad360beb60571d48bd1e477a4e58e5ee9337..578468f4f00a9373366c92926b512c192dd6675b 100644 GIT binary patch delta 126 zcmZ21@k5-;CD5r{D6U;_!p=z+`yu|Qly aIM)!wHG**k1C2m@V;Dcsc(X6pYDNHVI4i{f diff --git a/tests/data/acpi/pc/DSDT.ipmikcs b/tests/data/acpi/pc/DSDT.ipmikcs index 83eec58a52b5844a02003665494f63a4ea0b26a7..39427103aadb969721257feb9af66863b25b6ad9 100644 GIT binary patch delta 92 zcmZ2$++@t<66_MvB+0PE35TQ@nuZ?aAHTwoFb+lTUHm>I&$9MWY*4 m^qB*kJq>~lEaC%944fGQf&vXVfP^84FaiyD mX~Px}6lf5m2T}oIfw+cnt|5qP1m_xoxW;g<@n#bqKVATl)*#3L diff --git a/tests/data/acpi/pc/DSDT.memhp b/tests/data/acpi/pc/DSDT.memhp index 9e2201d170a86652951a2a4b234bb58204010642..987a263339225c2cb5ba71cd1aa183c651bb353e 100644 GIT binary patch delta 92 zcmdmD+iAyvK@*fM#^PL>q3)fLbIi$*u9 n=rad6dm02ASi}dI7&tQq1O*y!00~17VFV(KIX15oWa9+@;u9HA delta 135 zcmeCQ-D1n-66_MPMUH`i@zO@FV**?*w_@Uho#F+2Zce@>V9VsHFj-R2HX^!FD!|0R ynK2+J(0~I-7=j2R5Mj*01`>?X1L*>>KwLvO*AT=tf^&^PTw^%bcyqHL8!rHbb0$y# diff --git a/tests/data/acpi/pc/DSDT.nohpet b/tests/data/acpi/pc/DSDT.nohpet index c969e0dae410763a5f749c4c4fc842ccbf901fc5..fc7598b76287648f4b35273c91e46417a50b640b 100644 GIT binary patch delta 71 zcmca^xW}e2eU=csLhFfy;MQ%1;03PoZR{#J2 delta 115 zcmZ2uc-@f8CDysyP+cJ5{PQJixD=r+5LMo0BJU+cLQ-OuoQv%N*S(HCd5I m(uOS{D9|8A52OOb0&xxDTtg7o2+lPEagE_z;a diff --git a/tests/data/acpi/pc/DSDT.roothp b/tests/data/acpi/pc/DSDT.roothp index f57a14cd5c48ddded4c5d0b7da037b9d021a9ecb..545512adfa0f9af81a7fafd353679f64f75e501e 100644 GIT binary patch delta 85 zcmZ2&(qO{n66_MfAjQDI$i9)QoLk=iaZG%$Q@nut;{az*gXkviU;~4Aj(A6xAcp8B kH|fa>xFtmdbiit&8&&j~L8^icEaE5c;g;Mi$RouE0OME}0RR91 delta 129 zcmZoLS#84Q66_M9EycjVSih00oLk=OSxkJeQ@nuFvjAsLgXkviU;~4Aj(A6xAcp8B zN4d!hxFwmR8>J?n<(9Nz3kV7{h|vS72eCk0LpawE#5IC*jX+#uIM;adGj1t90AL*@ A5dZ)H diff --git a/tests/data/acpi/q35/DSDT b/tests/data/acpi/q35/DSDT index 8e989819a5f8c470a8933bf9b7af7b988048cce6..2771bcea89b531549557a19538606219a8e222b1 100644 GIT binary patch delta 92 zcmccP_|1XKCDqa2sFR7`xZQ@nt))a0ph_6A-e!EP4u9Py4WK|Bl$ r@(j@p0iHpDOk4?EJOa)vV5QNGR{G2V&YlJ!m6Jco>2IDX@5~4QhjbXu delta 202 zcmez7aL19$CDXd2fJCsbHqEk1o1F1 z$TLJY1b7AoGI1qv@kBQoOlFbSuV)Jg3UrLo1L*>>KwKv{*9pXRhI5@kTo*Xk1;llQ jb6r7PH#pY~#C3;r-9cOrIM*Y($;8{qC4RG&ybU7&jZ8Ty diff --git a/tests/data/acpi/q35/DSDT.acpierst b/tests/data/acpi/q35/DSDT.acpierst index 03745d78de4c7e9639a4a37553361e0e18258633..b45abca7c289d8ae38faeca1fcaf6370ed621cd4 100644 GIT binary patch delta 92 zcmaFs*zU;X66_MvuE4;+D7ulWQI5+;Iwn5YDPF)udh%4c00S?PU^k0+j(A6xARYz= rd4}kQ0MDR6Cawf79sy?-u+r#8D}CkwXHNr=%E`>~`kPnDJ2L_RO!606 delta 202 zcmZp7eCx>N66_N4R)K+mar#ECMma7grI`3&r+5J`#mQ6U0^}T|gWW9RIpQ5%f_NAh zjdID!@15Nt_z&&0^+*D jxvn6t8=UI~;=04R?jWuQoa+(YWa91Q62IA7-i8qXA!9hS diff --git a/tests/data/acpi/q35/DSDT.acpihmat b/tests/data/acpi/q35/DSDT.acpihmat index 3ad9ba3c987ca1cfbafc3778db889602ab53530e..d90fd4723a703df348c12a5a1c1c672b5af60a43 100644 GIT binary patch delta 92 zcmeD5S?tZ_66_MPSe1c+(P$&rI%O_zshId+r+5KpsmX_w?G3y{g550QIpQ5%f_NAh r-vDWY8D( delta 202 zcmZ4N-RZ;S66_Mfsm8#-xOpSjI%O_L#hCbDr+5KRg~^AM?d2S#gWW9RIpQ5%f_NAh zjdID!@15Nt_z&&0^+*D jxvn6t8=UI~;=04R?jWuQoa+(YWa91Q62CcJ#fA|8uwXb) diff --git a/tests/data/acpi/q35/DSDT.acpihmat-noinitiator b/tests/data/acpi/q35/DSDT.acpihmat-noinitiator index 8efa1c5ded52b8a9dfbb6945a3c75cdc6ef9b277..279fafa8219140687f1cdaab9739fc2f4c80ed6a 100644 GIT binary patch delta 72 zcmezD-0RHc66_MvtH{8>_2 delta 182 zcmeBm{_M=<66_N4S&@N(v34WZ40$d`#hCbDr+5KRg~@B=?U@{;C%=`KWR7k$m@KWJ zU(Xg06zCYE2T}oIfw)d^t`mss4Cgw7xGr$63yA9q=emNpZg8#}i0cmLx`VhLaIQym PlZm&JOZ?_Q1sg^HC4x0a diff --git a/tests/data/acpi/q35/DSDT.applesmc b/tests/data/acpi/q35/DSDT.applesmc index 5f01572dc2cf44aa0e730401e0709b95cd8db604..fdf6d144286860ff7f998df676ca9a50ce988d41 100644 GIT binary patch delta 92 zcmeBjTH?s%66_MPM1g^UF?AzXqa2r~Y)pKxQ@ntq?BuC(_68o}!EP4u9Py4WK|Bl$ r@(j@p0iHpDOk4?EJOa)vV5QNGR{G2V&YlJ!m6Jco>2IDXU&sgmSo#=y delta 202 zcmZ4D*yY6K66_MfrO3d*cw!@0qa2sNa!h=%Q@nt?^5m&<_Hur*!EP4u9Py4WK|Bl$ z@(j@p0iHpDOk4?EJkgB?lUd~T>)8T=0v%)YK)OII5Z4LLbpmmn;aq1B*9FdX0dZa7 jTvrg+4bF7~aoyoucM#VD&h?0H(h2r;j^Au0pT!6OWe+#t diff --git a/tests/data/acpi/q35/DSDT.bridge b/tests/data/acpi/q35/DSDT.bridge index 97141f9db208e1948bc2bdb3f3452ac8f78f98b0..b41a4dddc0b7bdeb2349d874a390858453c927f8 100644 GIT binary patch delta 93 zcmbOlwLX%|CDZnV;84siA~0I8g;sI9;Ggtjju0OqzC%m4rY delta 203 zcmZ1yQCDkQ{QgSakmt_z6k k3g^0lxNdN+8;I);=emQq9&oNlbd!mzt0QD+5CIA2c diff --git a/tests/data/acpi/q35/DSDT.core-count2 b/tests/data/acpi/q35/DSDT.core-count2 index ca309f6569f1f4016cf7e67117b208d57fbc7365..375aceed6b16528f7986fad46b045eba76af9760 100644 GIT binary patch delta 94 zcmZ4SkMYo7MlP3Nmykns3=E7DHgcV<;qsP>i4S&)7jTxE{IJH}z)K|9%_5#7-q9t9 thk-$!A-W;JGboUWD}jqgz?lWCG`i7BpEpvxw)2cXSEj zVPKGFh;9h*3<_l8O5oy&ZZw!2P^(|h77!HZ7^4T$1!94?PH?Uhi0cgJI)k__aIOo8 l>k8+(g1ByQt{aH!4(GaqxE^q>M|6{kx06f!=C)cJMgYi0JE{Nx diff --git a/tests/data/acpi/q35/DSDT.cphp b/tests/data/acpi/q35/DSDT.cphp index 622e8e5f3700abffc58683689b9470573c117cd0..a0ecafc36c57c6d4791b511f3febe210713d253c 100644 GIT binary patch delta 92 zcmZ4Edd!8(CDR`WAsL@Km{&G#hCbDr+5KRg~_Q3_Hqu=!EP4u9Py4WK|Bl$ z@(j@p0iHpDOk4?EJkgB?ldmY~*Rur#1vjdID!@15Nt_z&&0^+*D jxvn6t8=UI~;=04R?jWuQoa+(YWa91Q62F;C(S{KK;Vw8% diff --git a/tests/data/acpi/q35/DSDT.cxl b/tests/data/acpi/q35/DSDT.cxl index cecc1caaab81db8559781d23e45d8c615dc73740..f9c6dd4ee0502ca000509493411b421dfd23b96f 100644 GIT binary patch delta 92 zcmeD3S>ny*66_MPM3sSoF>fPRuQHdfOiX;RQ@nty%;bg2i3VOG!EP4u9Py4WK|Bl$ r@(j@p0iHpDOk4?EJOa)vV5QNGR{G2V&YlJ!m6H`z^fw<@ab^SnaF-Y# delta 202 zcmZ4D-Q~mO66_MfrN+R(_)8T=0v%)YK)OII5Z4LLbpmmn;aq1B*9FdX0dZa7 jTvrg+4bF7~aoyoucM#VD&h?0HGVykDiQk-|V#5dk&1pD! diff --git a/tests/data/acpi/q35/DSDT.dimmpxm b/tests/data/acpi/q35/DSDT.dimmpxm index e5be00b4fa658477a9ae7016ed72ae04430a3b2f..f0659716e3cef916ed0d8f583175a2edbc07141b 100644 GIT binary patch delta 72 zcmccQ_r{mYCD-&MH0rDEcPo#F+Yr6zN$+B12HO!iTg6cuo00SiYr ZTIn+fIC~ldyII6f&QR6g%&+Fm2ml*$6h#04 delta 182 zcmaFkd&!T>CDjdID!@15Nt_z&&0^+*Dxvn6t8=UI~;=04R?jWuQoa+(Y PWa91Q62EzastqFmgBvuS diff --git a/tests/data/acpi/q35/DSDT.ipmibt b/tests/data/acpi/q35/DSDT.ipmibt index c4f8212c63be2a1d579d6ebc9ac41d4bd5be414b..9c52529919d72a43034b1bbf4d3f1810ba9e22b2 100644 GIT binary patch delta 92 zcmZ4PbkLE@CDg1_%_Hy3x!EP4u9Py4WK|Bl$ z@(j@p0iHpDOk4?EJkgB?lUd~T>)8T=0v%)YK)OII5Z4LLbpmmn;aq1B*9FdX0dZa7 jTvrg+4bF7~aoyoucM#VD&h?0H@?`P#G~8?@-_8gC8UQyt diff --git a/tests/data/acpi/q35/DSDT.ipmismbus b/tests/data/acpi/q35/DSDT.ipmismbus index 05fb38820fa9213a20ace5943486ed18ad6a765c..3f32dffdbf3cd7e3791155530cf89417d8f2ec90 100644 GIT binary patch delta 92 zcmdnubk32>CDn|>8Mma7|wV3!|r+5KJwaHWE?ByJ!gWW9RIpQ5%f_NAh zjdID!@15Nt_z&&0^+*D jxvn6t8=UI~;=04R?jWuQoa+(YWa91Q62I9>ehMQ1mkc;N diff --git a/tests/data/acpi/q35/DSDT.ivrs b/tests/data/acpi/q35/DSDT.ivrs index 03745d78de4c7e9639a4a37553361e0e18258633..b45abca7c289d8ae38faeca1fcaf6370ed621cd4 100644 GIT binary patch delta 92 zcmaFs*zU;X66_MvuE4;+D7ulWQI5+;Iwn5YDPF)udh%4c00S?PU^k0+j(A6xARYz= rd4}kQ0MDR6Cawf79sy?-u+r#8D}CkwXHNr=%E`>~`kPnDJ2L_RO!606 delta 202 zcmZp7eCx>N66_N4R)K+mar#ECMma7grI`3&r+5J`#mQ6U0^}T|gWW9RIpQ5%f_NAh zjdID!@15Nt_z&&0^+*D jxvn6t8=UI~;=04R?jWuQoa+(YWa91Q62IA7-i8qXA!9hS diff --git a/tests/data/acpi/q35/DSDT.memhp b/tests/data/acpi/q35/DSDT.memhp index 2a4635d48c017970ee38d14148b20d38b699b030..28a192c69af3c6df8f003bf8edc9586f0dda35ad 100644 GIT binary patch delta 92 zcmZ4ObJUy5CDkWBNv}3(8#HQZeztPVoZHQj?!3+Z%X^1iM+pbHqEk1o1F1 r$TLJY1b7AoGI1qv@d!AxfR#o!TIn+fIC~m^R8DqO(ck<+#hDQRtI!!4 delta 202 zcmX@=z1oM%CD>KwKv{*9pXRhI5@kTo*Xk1;llQ jb6r7PH#pY~#C3;r-9cOrIM*Y($;8{qC4O_KiVY(GXhAu1 diff --git a/tests/data/acpi/q35/DSDT.mmio64 b/tests/data/acpi/q35/DSDT.mmio64 index 0491761dc7132460b08b443579f0d4cad3fa3163..8fda921296e471f2b8dff8c195652841f95cbcf9 100644 GIT binary patch delta 72 zcmX@+^}v(MCDij&_d1u!{CPj*n2WR7k$n4G7q zU(Xg06zCYE2T}oIfw)d^t`mss4Cgw7xGr$63yA9q=emNpZg8#}i0cmLx`VhLaIQym PlZm&JOZ?^~$~KGuBGEOP diff --git a/tests/data/acpi/q35/DSDT.multi-bridge b/tests/data/acpi/q35/DSDT.multi-bridge index 485f571afd35cbd2044baeb7027ef077ba9a133d..3dba4d84369f1f2850fbdc771072519d34f58072 100644 GIT binary patch delta 93 zcmbQ^vdx*xCDxbTqa2r`X-s^uQ@ntu$>ynY*^F`y(!p*P@f`7vE2KzicV+|tiJBL( delta 202 zcmaE1f6jr+CDjdID!@15Nt_z&&0^+*D jxvn6t8=UI~;=04R?jWuQoa+(YWa91Q62EzkoDCxY66`q( diff --git a/tests/data/acpi/q35/DSDT.numamem b/tests/data/acpi/q35/DSDT.numamem index 2302de88e93a22118889cd33a8c63811925cff02..5eb6159d5f6101c0f75a6de6c83ad95ccd2e6176 100644 GIT binary patch delta 72 zcmaFl_{V|ECDiZSuQPVoYs3X^Bc*)usvPrf53$sFBiFqunU zzn(21D9|xR52OOb0&$(-Tqh9M8P0VEab4hC7ZBGK&UFQG-QZj|5Z4{fbq8@h;9QUB PCKGQbm-x*N@-~bBMn5%J diff --git a/tests/data/acpi/q35/DSDT.pvpanic-isa b/tests/data/acpi/q35/DSDT.pvpanic-isa index 5e4b51d33b8bb88ca2610254e6306c16e5b5b0db..908e7b6606b6141556e9df4ffd3f88f97fe13d98 100644 GIT binary patch delta 92 zcmX@;blZ{3CD<#>-g550QIpQ5%f_NAh rjdID!@15Nt_z&&0^+*D ixvn6t8=UI~;=04R?jWuQoa+(Y1T@VxY_pa8LPh|=n>bVe diff --git a/tests/data/acpi/q35/DSDT.tis.tpm12 b/tests/data/acpi/q35/DSDT.tis.tpm12 index 1723fca4464383694f806f93331d008e84b93fef..ce2c2c29c2c177071d6c1284b1c496e773942bec 100644 GIT binary patch delta 92 zcmdnxcEy#;CDeW>_A&9nPVoY+_LCRN*&Fy+2D@3rbHqEk1o1F1 r$TLJY1b7AoGI1qv@d!AxfR#o!TIn+fIC~m^R8IaUr@wir{8VND#bz2F delta 202 zcmccOy338rCD*R%U_Hs@R!EP4u9Py4WK|Bl$ z@(j@p0iHpDOk4?EJkgB?lLh4U>)8T=0v%)YK)OII5Z4LLbpmmn;aq1B*9FdX0dZa7 jTvrg+4bF7~aoyoucM#VD&h?0Ha!?Hk@ZIbt-^UC9wZ%AV diff --git a/tests/data/acpi/q35/DSDT.tis.tpm2 b/tests/data/acpi/q35/DSDT.tis.tpm2 index 1a0d6284da01addd0393b8aad96873398411895e..e9e4b7f6ed5094c5ca3635a59367eb1d88b12ad1 100644 GIT binary patch delta 92 zcmccO_Rf{dCDhsg`&>)CDjdID!@15Nt_z&&0^+*D jxvn6t8=UI~;=04R?jWuQoa+(Y( diff --git a/tests/data/acpi/q35/DSDT.viot b/tests/data/acpi/q35/DSDT.viot index 6927d1cc96565f0e1e4c7f19fd709635873db912..6b436f9cd95776c26bec09066eb621bf97219dc6 100644 GIT binary patch delta 72 zcmdn!b=s55CDj9B zU(Xg06zCYE2T}oIfw)d^t`mss4Cgw7xGr$63yA9q=emNpZg8#}i0cmLx`VhLaIQym PlZm&JOZ?`3WgA8Sp+q#h diff --git a/tests/data/acpi/q35/DSDT.xapic b/tests/data/acpi/q35/DSDT.xapic index 4a8a4af625edb1fd01a1404e33f34e85c1a252f3..f47f09122287bdd20d7762d3d6dee6e05d944285 100644 GIT binary patch delta 94 zcmdl#o$2N@CN7s?mypPA1_nm$ja(_6T;5VK@xe~<0?tyCD?05ByhMWCEaExh9bJNW t7#QRkq8kD{g94ej61aE-oLRt1qZ_UCnFE|X4L~Xpvxw)2cXSEj zVPKGFh;9h*3<_l8O5oy&ZZw$uyi>oPEg&e+F-8xh3&a9(o#0$25Z4*bbp~-=;9M6F l*A>on1##WrTsIKc9nN(JaXsK%kLV^7Zzq@d&9YrKi~tUhJK6vM diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h index a4587652dd..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,37 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/pc/DSDT", -"tests/data/acpi/pc/DSDT.acpierst", -"tests/data/acpi/pc/DSDT.acpihmat", -"tests/data/acpi/pc/DSDT.bridge", -"tests/data/acpi/pc/DSDT.cphp", -"tests/data/acpi/pc/DSDT.dimmpxm", -"tests/data/acpi/pc/DSDT.hpbridge", -"tests/data/acpi/pc/DSDT.hpbrroot", -"tests/data/acpi/pc/DSDT.ipmikcs", -"tests/data/acpi/pc/DSDT.memhp", -"tests/data/acpi/pc/DSDT.nohpet", -"tests/data/acpi/pc/DSDT.numamem", -"tests/data/acpi/pc/DSDT.roothp", -"tests/data/acpi/q35/DSDT", -"tests/data/acpi/q35/DSDT.acpierst", -"tests/data/acpi/q35/DSDT.acpihmat", -"tests/data/acpi/q35/DSDT.acpihmat-noinitiator", -"tests/data/acpi/q35/DSDT.applesmc", -"tests/data/acpi/q35/DSDT.bridge", -"tests/data/acpi/q35/DSDT.cphp", -"tests/data/acpi/q35/DSDT.cxl", -"tests/data/acpi/q35/DSDT.core-count2", -"tests/data/acpi/q35/DSDT.dimmpxm", -"tests/data/acpi/q35/DSDT.ipmibt", -"tests/data/acpi/q35/DSDT.ipmismbus", -"tests/data/acpi/q35/DSDT.ivrs", -"tests/data/acpi/q35/DSDT.memhp", -"tests/data/acpi/q35/DSDT.mmio64", -"tests/data/acpi/q35/DSDT.multi-bridge", -"tests/data/acpi/q35/DSDT.nohpet", -"tests/data/acpi/q35/DSDT.numamem", -"tests/data/acpi/q35/DSDT.pvpanic-isa", -"tests/data/acpi/q35/DSDT.tis.tpm12", -"tests/data/acpi/q35/DSDT.tis.tpm2", -"tests/data/acpi/q35/DSDT.viot", -"tests/data/acpi/q35/DSDT.xapic", From 242a58cabee6242fe17d4a6bddf9390ae8227b7a Mon Sep 17 00:00:00 2001 From: Ani Sinha Date: Fri, 11 Nov 2022 20:41:38 +0530 Subject: [PATCH 16/71] MAINTAINERS: add mst to list of biosbits maintainers Adding Michael's name to the list of bios bits maintainers so that all changes and fixes into biosbits framework can go through his tree and he is notified. Suggested-by: Michael S. Tsirkin Signed-off-by: Ani Sinha Message-Id: <20221111151138.36988-1-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index be151f0024..f3e0a4fc2e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1865,6 +1865,7 @@ F: hw/acpi/viot.h ACPI/AVOCADO/BIOSBITS M: Ani Sinha +M: Michael S. Tsirkin S: Supported F: tests/avocado/acpi-bits/* F: tests/avocado/acpi-bits.py From c4d4c40c516a52419be8ed2e1e7a7c1fd0dea3ee Mon Sep 17 00:00:00 2001 From: John Snow Date: Tue, 15 Nov 2022 16:27:59 -0500 Subject: [PATCH 17/71] tests/avocado: configure acpi-bits to use avocado timeout Instead of using a hardcoded timeout, just rely on Avocado's built-in test case timeout. This helps avoid timeout issues on machines where 60 seconds is not sufficient. Signed-off-by: John Snow Message-Id: <20221115212759.3095751-1-jsnow@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Ani Sinha --- tests/avocado/acpi-bits.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/tests/avocado/acpi-bits.py b/tests/avocado/acpi-bits.py index 8745a58a76..ac13e22dc9 100644 --- a/tests/avocado/acpi-bits.py +++ b/tests/avocado/acpi-bits.py @@ -385,12 +385,6 @@ class AcpiBitsTest(QemuBaseTest): #pylint: disable=too-many-instance-attributes self._vm.launch() # biosbits has been configured to run all the specified test suites # in batch mode and then automatically initiate a vm shutdown. - # sleep for maximum of one minute - max_sleep_time = time.monotonic() + 60 - while self._vm.is_running() and time.monotonic() < max_sleep_time: - time.sleep(1) - - self.assertFalse(time.monotonic() > max_sleep_time, - 'The VM seems to have failed to shutdown in time') - + # Rely on avocado's unit test timeout. + self._vm.wait(timeout=None) self.parse_log() From 04e5bd441a9c60d21d38beb1b2b52ce12830cb99 Mon Sep 17 00:00:00 2001 From: Ani Sinha Date: Thu, 17 Nov 2022 17:06:30 +0530 Subject: [PATCH 18/71] acpi/tests/avocado/bits: keep the work directory when BITS_DEBUG is set in env MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Debugging bits issue often involves running the QEMU command line manually outside of the avocado environment with the generated ISO. Hence, its inconvenient if the iso gets cleaned up after the test has finished. This change makes sure that the work directory is kept after the test finishes if the test is run with BITS_DEBUG=1 in the environment so that the iso is available for use with the QEMU command line. CC: Daniel P. Berrangé Signed-off-by: Ani Sinha Message-Id: <20221117113630.543495-1-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/avocado/acpi-bits.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/avocado/acpi-bits.py b/tests/avocado/acpi-bits.py index ac13e22dc9..4be663968c 100644 --- a/tests/avocado/acpi-bits.py +++ b/tests/avocado/acpi-bits.py @@ -260,7 +260,7 @@ class AcpiBitsTest(QemuBaseTest): #pylint: disable=too-many-instance-attributes self.logger.info('using grub-mkrescue for generating biosbits iso ...') try: - if os.getenv('V'): + if os.getenv('V') or os.getenv('BITS_DEBUG'): subprocess.check_call([mkrescue_script, '-o', iso_file, bits_dir], stderr=subprocess.STDOUT) else: @@ -344,7 +344,7 @@ class AcpiBitsTest(QemuBaseTest): #pylint: disable=too-many-instance-attributes self._print_log(log) raise e else: - if os.getenv('V'): + if os.getenv('V') or os.getenv('BITS_DEBUG'): self._print_log(log) def tearDown(self): @@ -353,8 +353,13 @@ class AcpiBitsTest(QemuBaseTest): #pylint: disable=too-many-instance-attributes """ if self._vm: self.assertFalse(not self._vm.is_running) - self.logger.info('removing the work directory %s', self._workDir) - shutil.rmtree(self._workDir) + if not os.getenv('BITS_DEBUG'): + self.logger.info('removing the work directory %s', self._workDir) + shutil.rmtree(self._workDir) + else: + self.logger.info('not removing the work directory %s ' \ + 'as BITS_DEBUG is ' \ + 'passed in the environment', self._workDir) super().tearDown() def test_acpi_smbios_bits(self): From b7c61789e653086618d1825858a97b3d9891e822 Mon Sep 17 00:00:00 2001 From: "Michael S. Tsirkin" Date: Mon, 21 Nov 2022 15:01:50 -0500 Subject: [PATCH 19/71] virtio: disable error for out of spec queue-enable Virtio 1.0 is pretty clear that features have to be negotiated before enabling VQs. Unfortunately Seabios ignored this ever since gaining 1.0 support (UEFI is ok). Comment the error out for now, and add a TODO. Fixes: 3c37f8b8d1 ("virtio: introduce virtio_queue_enable()") Cc: "Kangjie Xu" Signed-off-by: Michael S. Tsirkin Message-Id: <20221121200339.362452-1-mst@redhat.com> --- hw/virtio/virtio.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 9683b2e158..eb6347ab5d 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -2499,10 +2499,17 @@ void virtio_queue_enable(VirtIODevice *vdev, uint32_t queue_index) { VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev); + /* + * TODO: Seabios is currently out of spec and triggering this error. + * So this needs to be fixed in Seabios, then this can + * be re-enabled for new machine types only, and also after + * being converted to LOG_GUEST_ERROR. + * if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { error_report("queue_enable is only suppported in devices of virtio " "1.0 or later."); } + */ if (k->queue_enable) { k->queue_enable(vdev, queue_index); From 0208ba74c59cc9d4508689c9642efb010989eea8 Mon Sep 17 00:00:00 2001 From: Xiaojuan Yang Date: Thu, 10 Nov 2022 14:14:40 +0800 Subject: [PATCH 20/71] hw/loongarch: Add default stdout uart in fdt Add "chosen" subnode into LoongArch fdt, and set it's "stdout-path" prop to uart node. Signed-off-by: Xiaojuan Yang Reviewed-by: Song Gao Message-Id: <20221115114923.3372414-1-yangxiaojuan@loongson.cn> Signed-off-by: Song Gao --- hw/loongarch/virt.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 5136940b0b..b9c18ee517 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -69,6 +69,7 @@ static void fdt_add_uart_node(LoongArchMachineState *lams) qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "ns16550a"); qemu_fdt_setprop_cells(ms->fdt, nodename, "reg", 0x0, base, 0x0, size); qemu_fdt_setprop_cell(ms->fdt, nodename, "clock-frequency", 100000000); + qemu_fdt_setprop_string(ms->fdt, "/chosen", "stdout-path", nodename); g_free(nodename); } @@ -87,6 +88,7 @@ static void create_fdt(LoongArchMachineState *lams) "linux,dummy-loongson3"); qemu_fdt_setprop_cell(ms->fdt, "/", "#address-cells", 0x2); qemu_fdt_setprop_cell(ms->fdt, "/", "#size-cells", 0x2); + qemu_fdt_add_subnode(ms->fdt, "/chosen"); } static void fdt_add_cpu_nodes(const LoongArchMachineState *lams) From e8c8203e55765a73a1d51c99406777b6eb45b2e9 Mon Sep 17 00:00:00 2001 From: Xiaojuan Yang Date: Wed, 16 Nov 2022 11:49:35 +0800 Subject: [PATCH 21/71] hw/loongarch: Fix setprop_sized method in fdt rtc node. Fix setprop_sized method in fdt rtc node. Signed-off-by: Xiaojuan Yang Reviewed-by: Richard Henderson Reviewed-by: Song Gao Message-Id: <20221116040300.3459818-1-yangxiaojuan@loongson.cn> Signed-off-by: Song Gao --- hw/loongarch/virt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index b9c18ee517..958be74fa1 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -53,7 +53,7 @@ static void fdt_add_rtc_node(LoongArchMachineState *lams) nodename = g_strdup_printf("/rtc@%" PRIx64, base); qemu_fdt_add_subnode(ms->fdt, nodename); qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "loongson,ls7a-rtc"); - qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", 0x0, base, size); + qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", 2, base, 2, size); g_free(nodename); } From 4451cc4653babf90b1808597f3f1dc71e1f63def Mon Sep 17 00:00:00 2001 From: Xiaojuan Yang Date: Thu, 10 Nov 2022 14:54:16 +0800 Subject: [PATCH 22/71] hw/loongarch: Replace the value of uart info with macro Using macro to replace the value of uart info such as addr, size in acpi_build method. Signed-off-by: Xiaojuan Yang Reviewed-by: Song Gao Message-Id: <20221115115008.3372489-1-yangxiaojuan@loongson.cn> Signed-off-by: Song Gao --- hw/loongarch/acpi-build.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/loongarch/acpi-build.c b/hw/loongarch/acpi-build.c index 68dfb9f88a..7d5f5a757d 100644 --- a/hw/loongarch/acpi-build.c +++ b/hw/loongarch/acpi-build.c @@ -226,7 +226,8 @@ static void build_uart_device_aml(Aml *table) aml_append(crs, aml_qword_memory(AML_POS_DECODE, AML_MIN_FIXED, AML_MAX_FIXED, AML_NON_CACHEABLE, AML_READ_WRITE, - 0, 0x1FE001E0, 0x1FE001E7, 0, 0x8)); + 0, VIRT_UART_BASE, VIRT_UART_BASE + VIRT_UART_SIZE - 1, + 0, VIRT_UART_SIZE)); aml_append(crs, aml_interrupt(AML_CONSUMER, AML_LEVEL, AML_ACTIVE_HIGH, AML_SHARED, &uart_irq, 1)); aml_append(dev, aml_name_decl("_CRS", crs)); From 26ba00cf58e9f21b08fff4c691ce7e9bb21dd123 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 21 Nov 2022 21:24:04 +0000 Subject: [PATCH 23/71] target/arm: Don't do two-stage lookup if stage 2 is disabled In get_phys_addr_with_struct(), we call get_phys_addr_twostage() if the CPU supports EL2. However, we don't check here that stage 2 is actually enabled. Instead we only check that inside get_phys_addr_twostage() to skip stage 2 translation. This means that even if stage 2 is disabled we still tell the stage 1 lookup to do its page table walks via stage 2. This works by luck for normal CPU accesses, but it breaks for debug accesses, which are used by the disassembler and also by semihosting file reads and writes, because the debug case takes a different code path inside S1_ptw_translate(). This means that setups that use semihosting for file loads are broken (a regression since 7.1, introduced in recent ptw refactoring), and that sometimes disassembly in debug logs reports "unable to read memory" rather than showing the guest insns. Fix the bug by hoisting the "is stage 2 enabled?" check up to get_phys_addr_with_struct(), so that we handle S2 disabled the same way we do the "no EL2" case, with a simple single stage lookup. Reported-by: Jens Wiklander Reviewed-by: Richard Henderson Signed-off-by: Peter Maydell Message-id: 20221121212404.1450382-1-peter.maydell@linaro.org --- target/arm/ptw.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 9a6277d862..8ca468d65b 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -2612,8 +2612,8 @@ static bool get_phys_addr_twostage(CPUARMState *env, S1Translate *ptw, ret = get_phys_addr_with_struct(env, ptw, address, access_type, result, fi); - /* If S1 fails or S2 is disabled, return early. */ - if (ret || regime_translation_disabled(env, ARMMMUIdx_Stage2, is_secure)) { + /* If S1 fails, return early. */ + if (ret) { return ret; } @@ -2739,7 +2739,8 @@ static bool get_phys_addr_with_struct(CPUARMState *env, S1Translate *ptw, * Otherwise, a stage1+stage2 translation is just stage 1. */ ptw->in_mmu_idx = mmu_idx = s1_mmu_idx; - if (arm_feature(env, ARM_FEATURE_EL2)) { + if (arm_feature(env, ARM_FEATURE_EL2) && + !regime_translation_disabled(env, ARMMMUIdx_Stage2, is_secure)) { return get_phys_addr_twostage(env, ptw, address, access_type, result, fi); } From 15f8f4671afd22491ce99d28a296514717fead4f Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Tue, 22 Nov 2022 16:55:15 +0100 Subject: [PATCH 24/71] target/arm: Use signed quantity to represent VMSAv8-64 translation level MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The LPA2 extension implements 52-bit virtual addressing for 4k and 16k translation granules, and for the former, this means an additional level of translation is needed. This means we start counting at -1 instead of 0 when doing a walk, and so 'level' is now a signed quantity, and should be typed as such. So turn it from uint32_t into int32_t. This avoids a level of -1 getting misinterpreted as being >= 3, and terminating a page table walk prematurely with a bogus output address. Cc: Peter Maydell Cc: Philippe Mathieu-Daudé Cc: Richard Henderson Signed-off-by: Ard Biesheuvel Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/ptw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 8ca468d65b..f812734bfb 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1172,7 +1172,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw, ARMCPU *cpu = env_archcpu(env); ARMMMUIdx mmu_idx = ptw->in_mmu_idx; bool is_secure = ptw->in_secure; - uint32_t level; + int32_t level; ARMVAParameters param; uint64_t ttbr; hwaddr descaddr, indexmask, indexmask_grainsize; @@ -1302,7 +1302,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw, */ uint32_t sl0 = extract32(tcr, 6, 2); uint32_t sl2 = extract64(tcr, 33, 1); - uint32_t startlevel; + int32_t startlevel; bool ok; /* SL2 is RES0 unless DS=1 & 4kb granule. */ From 7c09a7f6ae1770d15535980d15dffdb23f4d9786 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Tue, 22 Nov 2022 18:59:56 -0500 Subject: [PATCH 25/71] Update VERSION for v7.2.0-rc2 Signed-off-by: Stefan Hajnoczi --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 7038194808..02998662dd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -7.1.91 +7.1.92 From 72cf57b07444c3048069fa9e47decc9cca3956a7 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Mon, 21 Nov 2022 11:24:36 +0100 Subject: [PATCH 26/71] tests/avocado: Update the URLs of the advent calendar images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The qemu-advent-calendar.org server will be decommissioned soon. I've mirrored the images that we use for the QEMU CI to gitlab, so update their URLs to point to the new location. Message-Id: <20221121102436.78635-1-thuth@redhat.com> Tested-by: Philippe Mathieu-Daudé Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Thomas Huth --- tests/avocado/boot_linux_console.py | 4 +-- tests/avocado/machine_arm_canona1100.py | 4 +-- tests/avocado/machine_microblaze.py | 4 +-- tests/avocado/machine_sparc64_sun4u.py | 4 +-- tests/avocado/ppc_mpc8544ds.py | 6 ++-- tests/avocado/ppc_virtex_ml507.py | 6 ++-- tests/avocado/replay_kernel.py | 40 ++++++++++++------------- 7 files changed, 34 insertions(+), 34 deletions(-) diff --git a/tests/avocado/boot_linux_console.py b/tests/avocado/boot_linux_console.py index 4c9d551f47..f3e6f44ae9 100644 --- a/tests/avocado/boot_linux_console.py +++ b/tests/avocado/boot_linux_console.py @@ -1029,8 +1029,8 @@ class BootLinuxConsole(LinuxKernelTest): self.wait_for_console_pattern(console_pattern) def do_test_advcal_2018(self, day, tar_hash, kernel_name, console=0): - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day' + day + '.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day' + day + '.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) archive.extract(file_path, self.workdir) self.vm.set_console(console_index=console) diff --git a/tests/avocado/machine_arm_canona1100.py b/tests/avocado/machine_arm_canona1100.py index 182a0b0513..a42d8b0f2b 100644 --- a/tests/avocado/machine_arm_canona1100.py +++ b/tests/avocado/machine_arm_canona1100.py @@ -23,8 +23,8 @@ class CanonA1100Machine(QemuSystemTest): :avocado: tags=machine:canon-a1100 :avocado: tags=device:pflash_cfi02 """ - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day18.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day18.tar.xz') tar_hash = '068b5fc4242b29381acee94713509f8a876e9db6' file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) archive.extract(file_path, self.workdir) diff --git a/tests/avocado/machine_microblaze.py b/tests/avocado/machine_microblaze.py index 4928920f96..8d0efff30d 100644 --- a/tests/avocado/machine_microblaze.py +++ b/tests/avocado/machine_microblaze.py @@ -19,8 +19,8 @@ class MicroblazeMachine(QemuSystemTest): :avocado: tags=machine:petalogix-s3adsp1800 """ - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day17.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day17.tar.xz') tar_hash = '08bf3e3bfb6b6c7ce1e54ab65d54e189f2caf13f' file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) archive.extract(file_path, self.workdir) diff --git a/tests/avocado/machine_sparc64_sun4u.py b/tests/avocado/machine_sparc64_sun4u.py index 458165500e..d333c0ae91 100644 --- a/tests/avocado/machine_sparc64_sun4u.py +++ b/tests/avocado/machine_sparc64_sun4u.py @@ -24,8 +24,8 @@ class Sun4uMachine(LinuxKernelTest): :avocado: tags=arch:sparc64 :avocado: tags=machine:sun4u """ - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day23.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day23.tar.xz') tar_hash = '142db83cd974ffadc4f75c8a5cad5bcc5722c240' file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) archive.extract(file_path, self.workdir) diff --git a/tests/avocado/ppc_mpc8544ds.py b/tests/avocado/ppc_mpc8544ds.py index 8d6a749201..b599fb1cc9 100644 --- a/tests/avocado/ppc_mpc8544ds.py +++ b/tests/avocado/ppc_mpc8544ds.py @@ -22,9 +22,9 @@ class Mpc8544dsMachine(QemuSystemTest): :avocado: tags=accel:tcg """ self.require_accelerator("tcg") - tar_url = ('https://www.qemu-advent-calendar.org' - '/2020/download/day17.tar.gz') - tar_hash = '7a5239542a7c4257aa4d3b7f6ddf08fb6775c494' + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day04.tar.xz') + tar_hash = 'f46724d281a9f30fa892d458be7beb7d34dc25f9' file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) archive.extract(file_path, self.workdir) self.vm.set_console() diff --git a/tests/avocado/ppc_virtex_ml507.py b/tests/avocado/ppc_virtex_ml507.py index 6b07686b56..a73f8ae396 100644 --- a/tests/avocado/ppc_virtex_ml507.py +++ b/tests/avocado/ppc_virtex_ml507.py @@ -22,9 +22,9 @@ class VirtexMl507Machine(QemuSystemTest): :avocado: tags=accel:tcg """ self.require_accelerator("tcg") - tar_url = ('https://www.qemu-advent-calendar.org' - '/2020/download/hippo.tar.gz') - tar_hash = '306b95bfe7d147f125aa176a877e266db8ef914a' + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day08.tar.xz') + tar_hash = '74c68f5af7a7b8f21c03097b298f3bb77ff52c1f' file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) archive.extract(file_path, self.workdir) self.vm.set_console() diff --git a/tests/avocado/replay_kernel.py b/tests/avocado/replay_kernel.py index 0b2b0dc692..00a26e4a0c 100644 --- a/tests/avocado/replay_kernel.py +++ b/tests/avocado/replay_kernel.py @@ -296,8 +296,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=machine:vexpress-a9 """ tar_hash = '32b7677ce8b6f1471fb0059865f451169934245b' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day16.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day16.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) dtb_path = self.workdir + '/day16/vexpress-v2p-ca9.dtb' self.do_test_advcal_2018(file_path, 'winter.zImage', @@ -309,8 +309,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=machine:mcf5208evb """ tar_hash = 'ac688fd00561a2b6ce1359f9ff6aa2b98c9a570c' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day07.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day07.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) self.do_test_advcal_2018(file_path, 'sanity-clause.elf') @@ -321,8 +321,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=machine:petalogix-s3adsp1800 """ tar_hash = '08bf3e3bfb6b6c7ce1e54ab65d54e189f2caf13f' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day17.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day17.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) self.do_test_advcal_2018(file_path, 'ballerina.bin') @@ -333,8 +333,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=cpu:e5500 """ tar_hash = '6951d86d644b302898da2fd701739c9406527fe1' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day19.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day19.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) self.do_test_advcal_2018(file_path, 'uImage') @@ -344,8 +344,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=machine:or1k-sim """ tar_hash = '20334cdaf386108c530ff0badaecc955693027dd' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day20.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day20.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) self.do_test_advcal_2018(file_path, 'vmlinux') @@ -355,8 +355,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=machine:10m50-ghrd """ tar_hash = 'e4251141726c412ac0407c5a6bceefbbff018918' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day14.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day14.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) self.do_test_advcal_2018(file_path, 'vmlinux.elf') @@ -366,8 +366,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=machine:g3beige """ tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day15.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day15.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) self.do_test_advcal_2018(file_path, 'invaders.elf', args=('-M', 'graphics=off')) @@ -378,8 +378,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=machine:mac99 """ tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day15.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day15.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) self.do_test_advcal_2018(file_path, 'invaders.elf', args=('-M', 'graphics=off')) @@ -390,8 +390,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=machine:SS-20 """ tar_hash = 'b18550d5d61c7615d989a06edace051017726a9f' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day11.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day11.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) self.do_test_advcal_2018(file_path, 'zImage.elf') @@ -402,8 +402,8 @@ class ReplayKernelNormal(ReplayKernelBase): :avocado: tags=cpu:dc233c """ tar_hash = '49e88d9933742f0164b60839886c9739cb7a0d34' - tar_url = ('https://www.qemu-advent-calendar.org' - '/2018/download/day02.tar.xz') + tar_url = ('https://qemu-advcal.gitlab.io' + '/qac-best-of-multiarch/download/day02.tar.xz') file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf') From 9f083d618140dd1cae824bb2f8a2ae719db73f13 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Mon, 21 Nov 2022 20:42:40 +0100 Subject: [PATCH 27/71] tests/qtest: Decrease the amount of output from the qom-test The logs in the gitlab-CI have a size constraint, and sometimes we already hit this limit. The biggest part of the log then seems to be filled by the qom-test, so we should decrease the size of the output - which can be done easily by not printing the path for each property, since the path has already been logged at the beginning of each node that we handle here. However, if we omit the path, we should make sure to not recurse into child nodes in between, so that it is clear to which node each property belongs. Thus store the children and links in a temporary list and recurse only at the end of each node, when all properties have already been printed. Message-Id: <20221121194240.149268-1-thuth@redhat.com> Reviewed-by: Stefan Hajnoczi Signed-off-by: Thomas Huth --- tests/qtest/qom-test.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/tests/qtest/qom-test.c b/tests/qtest/qom-test.c index 7b871b2a31..13510bc349 100644 --- a/tests/qtest/qom-test.c +++ b/tests/qtest/qom-test.c @@ -20,6 +20,7 @@ static void test_properties(QTestState *qts, const char *path, bool recurse) QDict *response, *tuple, *tmp; QList *list; QListEntry *entry; + GSList *children = NULL, *links = NULL; g_test_message("Obtaining properties of %s", path); response = qtest_qmp(qts, "{ 'execute': 'qom-list'," @@ -41,11 +42,14 @@ static void test_properties(QTestState *qts, const char *path, bool recurse) if (is_child || is_link) { child_path = g_strdup_printf("%s/%s", path, qdict_get_str(tuple, "name")); - test_properties(qts, child_path, is_child); - g_free(child_path); + if (is_child) { + children = g_slist_prepend(children, child_path); + } else { + links = g_slist_prepend(links, child_path); + } } else { const char *prop = qdict_get_str(tuple, "name"); - g_test_message("Testing property %s.%s", path, prop); + g_test_message("-> %s", prop); tmp = qtest_qmp(qts, "{ 'execute': 'qom-get'," " 'arguments': { 'path': %s, 'property': %s } }", @@ -55,6 +59,18 @@ static void test_properties(QTestState *qts, const char *path, bool recurse) qobject_unref(tmp); } } + + while (links) { + test_properties(qts, links->data, false); + g_free(links->data); + links = g_slist_delete_link(links, links); + } + while (children) { + test_properties(qts, children->data, true); + g_free(children->data); + children = g_slist_delete_link(children, children); + } + qobject_unref(response); } From 4189af72dd6fa74e2253f16c8078be52e55eb80e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 18 Nov 2022 11:33:09 +0000 Subject: [PATCH 28/71] tests/avocado: use new rootfs for orangepi test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The old URL wasn't stable. I suspect the current URL will only be stable for a few months so maybe we need another strategy for hosting rootfs snapshots? Signed-off-by: Alex Bennée Message-Id: <20221118113309.1057790-1-alex.bennee@linaro.org> Signed-off-by: Thomas Huth --- tests/avocado/boot_linux_console.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/avocado/boot_linux_console.py b/tests/avocado/boot_linux_console.py index f3e6f44ae9..ec07c64291 100644 --- a/tests/avocado/boot_linux_console.py +++ b/tests/avocado/boot_linux_console.py @@ -793,8 +793,8 @@ class BootLinuxConsole(LinuxKernelTest): dtb_path = '/usr/lib/linux-image-current-sunxi/sun8i-h3-orangepi-pc.dtb' dtb_path = self.extract_from_deb(deb_path, dtb_path) rootfs_url = ('http://storage.kernelci.org/images/rootfs/buildroot/' - 'kci-2019.02/armel/base/rootfs.ext2.xz') - rootfs_hash = '692510cb625efda31640d1de0a8d60e26040f061' + 'buildroot-baseline/20221116.0/armel/rootfs.ext2.xz') + rootfs_hash = 'fae32f337c7b87547b10f42599acf109da8b6d9a' rootfs_path_xz = self.fetch_asset(rootfs_url, asset_hash=rootfs_hash) rootfs_path = os.path.join(self.workdir, 'rootfs.cpio') archive.lzma_uncompress(rootfs_path_xz, rootfs_path) From fb977a8174184c643c435c26d376793acb11c82e Mon Sep 17 00:00:00 2001 From: Joelle van Dyne Date: Wed, 23 Nov 2022 09:46:48 +0100 Subject: [PATCH 29/71] Revert "usbredir: avoid queuing hello packet on snapshot restore" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Run state is also in RUN_STATE_PRELAUNCH while "-S" is used. This reverts commit 0631d4b448454ae8a1ab091c447e3f71ab6e088a Signed-off-by: Joelle van Dyne Reviewed-by: Ján Tomko The original commit broke the usage of usbredir with libvirt, which starts every domain with "-S". This workaround is no longer needed because the usbredir behavior has been fixed in the meantime: https://gitlab.freedesktop.org/spice/usbredir/-/merge_requests/61 Signed-off-by: Ján Tomko Message-Id: <1689cec3eadcea87255e390cb236033aca72e168.1669193161.git.jtomko@redhat.com> Signed-off-by: Gerd Hoffmann --- hw/usb/redirect.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index 1bd30efc3e..fd7df599bc 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -1280,8 +1280,7 @@ static void usbredir_create_parser(USBRedirDevice *dev) } #endif - if (runstate_check(RUN_STATE_INMIGRATE) || - runstate_check(RUN_STATE_PRELAUNCH)) { + if (runstate_check(RUN_STATE_INMIGRATE)) { flags |= usbredirparser_fl_no_hello; } usbredirparser_init(dev->parser, VERSION, caps, USB_REDIR_CAPS_SIZE, From 29e0bfffab87d89c65c0890607e203b1579590a3 Mon Sep 17 00:00:00 2001 From: Claudio Fontana Date: Mon, 21 Nov 2022 14:55:38 +0100 Subject: [PATCH 30/71] gtk: disable GTK Clipboard with a new meson option The GTK Clipboard implementation may cause guest hangs. Therefore implement new configure switch: --enable-gtk-clipboard, as a meson option disabled by default, which warns in the help text about the experimental nature of the feature. Regenerate the meson build options to include it. The initialization of the clipboard is gtk.c, as well as the compilation of gtk-clipboard.c are now conditional on this new option to be set. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1150 Signed-off-by: Claudio Fontana Acked-by: Gerd Hoffmann Reviewed-by: Jim Fehlig Message-Id: <20221121135538.14625-1-cfontana@suse.de> Signed-off-by: Gerd Hoffmann --- meson.build | 5 +++++ meson_options.txt | 7 +++++++ scripts/meson-buildoptions.sh | 3 +++ ui/gtk.c | 2 ++ ui/meson.build | 5 ++++- 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index cf3e517e56..5c6b5a1c75 100644 --- a/meson.build +++ b/meson.build @@ -1246,6 +1246,8 @@ endif gtk = not_found gtkx11 = not_found vte = not_found +have_gtk_clipboard = get_option('gtk_clipboard').enabled() + if not get_option('gtk').auto() or have_system gtk = dependency('gtk+-3.0', version: '>=3.22.0', method: 'pkg-config', @@ -1264,6 +1266,8 @@ if not get_option('gtk').auto() or have_system required: get_option('vte'), kwargs: static_kwargs) endif + elif have_gtk_clipboard + error('GTK clipboard requested, but GTK not found') endif endif @@ -1842,6 +1846,7 @@ if glusterfs.found() endif config_host_data.set('CONFIG_GTK', gtk.found()) config_host_data.set('CONFIG_VTE', vte.found()) +config_host_data.set('CONFIG_GTK_CLIPBOARD', have_gtk_clipboard) config_host_data.set('CONFIG_LIBATTR', have_old_libattr) config_host_data.set('CONFIG_LIBCAP_NG', libcap_ng.found()) config_host_data.set('CONFIG_EBPF', libbpf.found()) diff --git a/meson_options.txt b/meson_options.txt index 66128178bf..4b749ca549 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -219,6 +219,13 @@ option('vnc_sasl', type : 'feature', value : 'auto', description: 'SASL authentication for VNC server') option('vte', type : 'feature', value : 'auto', description: 'vte support for the gtk UI') + +# GTK Clipboard implementation is disabled by default, since it may cause hangs +# of the guest VCPUs. See gitlab issue 1150: +# https://gitlab.com/qemu-project/qemu/-/issues/1150 + +option('gtk_clipboard', type: 'feature', value : 'disabled', + description: 'clipboard support for the gtk UI (EXPERIMENTAL, MAY HANG)') option('xkbcommon', type : 'feature', value : 'auto', description: 'xkbcommon support') option('zstd', type : 'feature', value : 'auto', diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index 2cb0de5601..aa6e30ea91 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -93,6 +93,7 @@ meson_options_help() { printf "%s\n" ' glusterfs Glusterfs block device driver' printf "%s\n" ' gnutls GNUTLS cryptography support' printf "%s\n" ' gtk GTK+ user interface' + printf "%s\n" ' gtk-clipboard clipboard support for GTK (EXPERIMENTAL, MAY HANG)' printf "%s\n" ' guest-agent Build QEMU Guest Agent' printf "%s\n" ' guest-agent-msi Build MSI package for the QEMU Guest Agent' printf "%s\n" ' hax HAX acceleration support' @@ -274,6 +275,8 @@ _meson_option_parse() { --disable-gprof) printf "%s" -Dgprof=false ;; --enable-gtk) printf "%s" -Dgtk=enabled ;; --disable-gtk) printf "%s" -Dgtk=disabled ;; + --enable-gtk-clipboard) printf "%s" -Dgtk_clipboard=enabled ;; + --disable-gtk-clipboard) printf "%s" -Dgtk_clipboard=disabled ;; --enable-guest-agent) printf "%s" -Dguest_agent=enabled ;; --disable-guest-agent) printf "%s" -Dguest_agent=disabled ;; --enable-guest-agent-msi) printf "%s" -Dguest_agent_msi=enabled ;; diff --git a/ui/gtk.c b/ui/gtk.c index 7ec21f7798..4817623c8f 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2403,7 +2403,9 @@ static void gtk_display_init(DisplayState *ds, DisplayOptions *opts) opts->u.gtk.show_tabs) { gtk_menu_item_activate(GTK_MENU_ITEM(s->show_tabs_item)); } +#ifdef CONFIG_GTK_CLIPBOARD gd_clipboard_init(s); +#endif /* CONFIG_GTK_CLIPBOARD */ } static void early_gtk_display_init(DisplayOptions *opts) diff --git a/ui/meson.build b/ui/meson.build index ec13949776..c1b137bf33 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -97,7 +97,10 @@ if gtk.found() softmmu_ss.add(when: 'CONFIG_WIN32', if_true: files('win32-kbd-hook.c')) gtk_ss = ss.source_set() - gtk_ss.add(gtk, vte, pixman, files('gtk.c', 'gtk-clipboard.c')) + gtk_ss.add(gtk, vte, pixman, files('gtk.c')) + if have_gtk_clipboard + gtk_ss.add(files('gtk-clipboard.c')) + endif gtk_ss.add(when: x11, if_true: files('x_keymap.c')) gtk_ss.add(when: opengl, if_true: files('gtk-gl-area.c')) gtk_ss.add(when: [x11, opengl], if_true: files('gtk-egl.c')) From d68640f515320bf38617b68c970b569997cf0444 Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Sat, 5 Nov 2022 14:48:50 +0300 Subject: [PATCH 31/71] hw/usb/hcd-xhci.c: spelling: tranfer Fixes: effaf5a240e03020f4ae953e10b764622c3e87cc Signed-off-by: Michael Tokarev Reviewed-by: Thomas Huth Reviewed-by: Stefan Weil Message-Id: <20221105114851.306206-1-mjt@msgid.tls.msk.ru> Signed-off-by: Gerd Hoffmann --- hw/usb/hcd-xhci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index 8299f35e66..b89b618ec2 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -796,7 +796,7 @@ static int xhci_ring_chain_length(XHCIState *xhci, const XHCIRing *ring) */ } while (length < TRB_LINK_LIMIT * 65536 / TRB_SIZE); - qemu_log_mask(LOG_GUEST_ERROR, "%s: exceeded maximum tranfer ring size!\n", + qemu_log_mask(LOG_GUEST_ERROR, "%s: exceeded maximum transfer ring size!\n", __func__); return -1; From 64f1359bd08060ffe7a5689fdcbaeec6d8a59980 Mon Sep 17 00:00:00 2001 From: Dongwon Kim Date: Fri, 21 Oct 2022 12:23:15 -0700 Subject: [PATCH 32/71] ui/gtk: prevent ui lock up when dpy_gl_update called again before current draw event occurs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A warning, "qemu: warning: console: no gl-unblock within" followed by guest scanout lockup can happen if dpy_gl_update is called in a row and the second call is made before gd_draw_event scheduled by the first call is taking place. This is because draw call returns without decrementing gl_block ref count if the dmabuf was already submitted as shown below. (gd_gl_area_draw/gd_egl_draw) if (dmabuf) { if (!dmabuf->draw_submitted) { return; } else { dmabuf->draw_submitted = false; } } So it should not schedule any redundant draw event in case draw_submitted is already set in gd_egl_fluch/gd_gl_area_scanout_flush. Cc: Gerd Hoffmann Cc: Vivek Kasireddy Signed-off-by: Dongwon Kim Reviewed-by: Marc-André Lureau Message-Id: <20221021192315.9110-1-dongwon.kim@intel.com> Signed-off-by: Gerd Hoffmann --- ui/gtk-egl.c | 2 +- ui/gtk-gl-area.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c index 35f917ceb1..e84431790c 100644 --- a/ui/gtk-egl.c +++ b/ui/gtk-egl.c @@ -341,7 +341,7 @@ void gd_egl_flush(DisplayChangeListener *dcl, VirtualConsole *vc = container_of(dcl, VirtualConsole, gfx.dcl); GtkWidget *area = vc->gfx.drawing_area; - if (vc->gfx.guest_fb.dmabuf) { + if (vc->gfx.guest_fb.dmabuf && !vc->gfx.guest_fb.dmabuf->draw_submitted) { graphic_hw_gl_block(vc->gfx.dcl.con, true); vc->gfx.guest_fb.dmabuf->draw_submitted = true; gtk_widget_queue_draw_area(area, x, y, w, h); diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c index 682638a197..7696df1f6b 100644 --- a/ui/gtk-gl-area.c +++ b/ui/gtk-gl-area.c @@ -278,7 +278,7 @@ void gd_gl_area_scanout_flush(DisplayChangeListener *dcl, { VirtualConsole *vc = container_of(dcl, VirtualConsole, gfx.dcl); - if (vc->gfx.guest_fb.dmabuf) { + if (vc->gfx.guest_fb.dmabuf && !vc->gfx.guest_fb.dmabuf->draw_submitted) { graphic_hw_gl_block(vc->gfx.dcl.con, true); vc->gfx.guest_fb.dmabuf->draw_submitted = true; } From 1dfb7a175f55039c0641cab9def130ca9e844da9 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Fri, 14 Oct 2022 15:54:23 +0100 Subject: [PATCH 33/71] hw/usb/hcd-xhci: Reset the XHCIState with device_cold_reset() Currently the hcd-xhci-pci and hcd-xhci-sysbus devices, which are mostly wrappers around the TYPE_XHCI device, which is a direct subclass of TYPE_DEVICE. Since TYPE_DEVICE devices are not on any qbus and do not get automatically reset, the wrapper devices both reset the TYPE_XHCI device in their own reset functions. However, they do this using device_legacy_reset(), which will reset the device itself but not any bus it has. Switch to device_cold_reset(), which avoids using a deprecated function and also propagates reset along any child buses. Signed-off-by: Peter Maydell Message-Id: <20221014145423.2102706-1-peter.maydell@linaro.org> Signed-off-by: Gerd Hoffmann --- hw/usb/hcd-xhci-pci.c | 2 +- hw/usb/hcd-xhci-sysbus.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c index e934b1a5b1..643d4643e4 100644 --- a/hw/usb/hcd-xhci-pci.c +++ b/hw/usb/hcd-xhci-pci.c @@ -85,7 +85,7 @@ static void xhci_pci_reset(DeviceState *dev) { XHCIPciState *s = XHCI_PCI(dev); - device_legacy_reset(DEVICE(&s->xhci)); + device_cold_reset(DEVICE(&s->xhci)); } static int xhci_pci_vmstate_post_load(void *opaque, int version_id) diff --git a/hw/usb/hcd-xhci-sysbus.c b/hw/usb/hcd-xhci-sysbus.c index a14e438196..faf57b4797 100644 --- a/hw/usb/hcd-xhci-sysbus.c +++ b/hw/usb/hcd-xhci-sysbus.c @@ -29,7 +29,7 @@ void xhci_sysbus_reset(DeviceState *dev) { XHCISysbusState *s = XHCI_SYSBUS(dev); - device_legacy_reset(DEVICE(&s->xhci)); + device_cold_reset(DEVICE(&s->xhci)); } static void xhci_sysbus_realize(DeviceState *dev, Error **errp) From 3e95ef49e6196654d2ca83baa28a594f4d136223 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Fri, 14 Oct 2022 15:26:31 +0100 Subject: [PATCH 34/71] hw/audio/intel-hda: don't reset codecs twice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently the intel-hda device has a reset method which manually resets all the codecs by calling device_legacy_reset() on them. This means they get reset twice, once because child devices on a qbus get reset before the parent device's reset method is called, and then again because we're manually resetting them. Drop the manual reset call, and ensure that codecs are still reset when the guest does a reset via ICH6_GCTL_RESET by using device_cold_reset() (which resets all the devices on the qbus as well as the device itself) instead of a direct call to the reset function. This is a slight ordering change because the (only) codec reset now happens before the controller registers etc are reset, rather than once before and then once after, but the codec reset function hda_audio_reset() doesn't care. This lets us drop a use of device_legacy_reset(), which is deprecated. Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221014142632.2092404-2-peter.maydell@linaro.org> Signed-off-by: Gerd Hoffmann --- hw/audio/intel-hda.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index f38117057b..38cfa20262 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -516,7 +516,7 @@ static void intel_hda_notify_codecs(IntelHDAState *d, uint32_t stream, bool runn static void intel_hda_set_g_ctl(IntelHDAState *d, const IntelHDAReg *reg, uint32_t old) { if ((d->g_ctl & ICH6_GCTL_RESET) == 0) { - intel_hda_reset(DEVICE(d)); + device_cold_reset(DEVICE(d)); } } @@ -1083,11 +1083,9 @@ static void intel_hda_reset(DeviceState *dev) intel_hda_regs_reset(d); d->wall_base_ns = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); - /* reset codecs */ QTAILQ_FOREACH(kid, &d->codecs.qbus.children, sibling) { DeviceState *qdev = kid->child; cdev = HDA_CODEC_DEVICE(qdev); - device_legacy_reset(DEVICE(cdev)); d->state_sts |= (1 << cdev->cad); } intel_hda_update_irq(d); From 7d3cf19548b7f9afd9d25c30dd1450aad7d1877d Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Fri, 14 Oct 2022 15:26:32 +0100 Subject: [PATCH 35/71] hw/audio/intel-hda: Drop unnecessary prototype MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The only use of intel_hda_reset() is after its definition, so we don't need to separately declare its prototype at the top of the file; drop the unnecessary line. Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221014142632.2092404-3-peter.maydell@linaro.org> Signed-off-by: Gerd Hoffmann --- hw/audio/intel-hda.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index 38cfa20262..b9ed231fe8 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -220,8 +220,6 @@ struct IntelHDAReg { void (*rhandler)(IntelHDAState *d, const IntelHDAReg *reg); }; -static void intel_hda_reset(DeviceState *dev); - /* --------------------------------------------------------------------- */ static hwaddr intel_hda_addr(uint32_t lbase, uint32_t ubase) From c23a95636622a32352b55a2f164a1fdf4ed34f60 Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Fri, 25 Nov 2022 15:39:46 +0100 Subject: [PATCH 36/71] virtiofsd: Add `sigreturn` to the seccomp whitelist The virtiofsd currently crashes on s390x. This is because of a `sigreturn` system call. See audit log below: type=SECCOMP msg=audit(1669382477.611:459): auid=4294967295 uid=0 gid=0 ses=4294967295 subj=system_u:system_r:virtd_t:s0-s0:c0.c1023 pid=6649 comm="virtiofsd" exe="/usr/libexec/virtiofsd" sig=31 arch=80000016 syscall=119 compat=0 ip=0x3fff15f748a code=0x80000000AUID="unset" UID="root" GID="root" ARCH=s390x SYSCALL=sigreturn Signed-off-by: Marc Hartmayer Reviewed-by: German Maglione Signed-off-by: Stefan Hajnoczi Message-Id: <20221125143946.27717-1-mhartmay@linux.ibm.com> --- tools/virtiofsd/passthrough_seccomp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/virtiofsd/passthrough_seccomp.c b/tools/virtiofsd/passthrough_seccomp.c index 888295c073..0033dab493 100644 --- a/tools/virtiofsd/passthrough_seccomp.c +++ b/tools/virtiofsd/passthrough_seccomp.c @@ -110,6 +110,7 @@ static const int syscall_allowlist[] = { #endif SCMP_SYS(set_robust_list), SCMP_SYS(setxattr), + SCMP_SYS(sigreturn), SCMP_SYS(symlinkat), SCMP_SYS(syncfs), SCMP_SYS(time), /* Rarely needed, except on static builds */ From 266aaedc37d1e18af6c62f7f67c7e29887e32061 Mon Sep 17 00:00:00 2001 From: Stefan Weil via Date: Sat, 26 Nov 2022 16:25:02 +0100 Subject: [PATCH 37/71] libvhost-user: Fix wrong type of argument to formatting function (reported by LGTM) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Stefan Weil Message-Id: <20220422070144.1043697-2-sw@weilnetz.de> Signed-off-by: Laurent Vivier Signed-off-by: Stefan Hajnoczi Message-Id: <20221126152507.283271-2-sw@weilnetz.de> --- subprojects/libvhost-user/libvhost-user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c index ffed4729a3..d9a6e3e556 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -651,7 +651,7 @@ generate_faults(VuDev *dev) { if (ioctl(dev->postcopy_ufd, UFFDIO_REGISTER, ®_struct)) { vu_panic(dev, "%s: Failed to userfault region %d " - "@%p + size:%zx offset: %zx: (ufd=%d)%s\n", + "@%" PRIx64 " + size:%zx offset: %zx: (ufd=%d)%s\n", __func__, i, dev_region->mmap_addr, dev_region->size, dev_region->mmap_offset, From 8541bf452d8b083beb79cd496b73f2ebd852c369 Mon Sep 17 00:00:00 2001 From: Stefan Weil via Date: Sat, 26 Nov 2022 16:25:03 +0100 Subject: [PATCH 38/71] libvhost-user: Fix format strings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stefan Weil Reviewed-by: Marc-André Lureau Message-Id: <20220422070144.1043697-3-sw@weilnetz.de> Signed-off-by: Laurent Vivier Signed-off-by: Stefan Hajnoczi Message-Id: <20221126152507.283271-3-sw@weilnetz.de> --- subprojects/libvhost-user/libvhost-user.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c index d9a6e3e556..d67953a1c3 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -700,7 +700,7 @@ vu_add_mem_reg(VuDev *dev, VhostUserMsg *vmsg) { if (vmsg->size < VHOST_USER_MEM_REG_SIZE) { close(vmsg->fds[0]); vu_panic(dev, "VHOST_USER_ADD_MEM_REG requires a message size of at " - "least %d bytes and only %d bytes were received", + "least %zu bytes and only %d bytes were received", VHOST_USER_MEM_REG_SIZE, vmsg->size); return false; } @@ -826,7 +826,7 @@ vu_rem_mem_reg(VuDev *dev, VhostUserMsg *vmsg) { if (vmsg->size < VHOST_USER_MEM_REG_SIZE) { vmsg_close_fds(vmsg); vu_panic(dev, "VHOST_USER_REM_MEM_REG requires a message size of at " - "least %d bytes and only %d bytes were received", + "least %zu bytes and only %d bytes were received", VHOST_USER_MEM_REG_SIZE, vmsg->size); return false; } From 7d4774e681d2cea5569ee42a8a485647acf3cf7d Mon Sep 17 00:00:00 2001 From: Stefan Weil via Date: Sat, 26 Nov 2022 16:25:04 +0100 Subject: [PATCH 39/71] libvhost-user: Fix two more format strings This fix is required for 32 bit hosts. The bug was detected by CI for arm-linux, but is also relevant for i386-linux. Reported-by: Stefan Hajnoczi Signed-off-by: Stefan Weil Reviewed-by: Stefan Hajnoczi Signed-off-by: Stefan Hajnoczi Message-Id: <20221126152507.283271-4-sw@weilnetz.de> --- subprojects/libvhost-user/libvhost-user.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c index d67953a1c3..80f9952e71 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -651,7 +651,8 @@ generate_faults(VuDev *dev) { if (ioctl(dev->postcopy_ufd, UFFDIO_REGISTER, ®_struct)) { vu_panic(dev, "%s: Failed to userfault region %d " - "@%" PRIx64 " + size:%zx offset: %zx: (ufd=%d)%s\n", + "@%" PRIx64 " + size:%" PRIx64 " offset: %" PRIx64 + ": (ufd=%d)%s\n", __func__, i, dev_region->mmap_addr, dev_region->size, dev_region->mmap_offset, From 52a57d8d1fbaf1942cce94e41521b7b564dd37ee Mon Sep 17 00:00:00 2001 From: Stefan Weil via Date: Sat, 26 Nov 2022 16:25:05 +0100 Subject: [PATCH 40/71] libvhost-user: Add format attribute to local function vu_panic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stefan Weil Reviewed-by: Marc-André Lureau Message-Id: <20220422070144.1043697-4-sw@weilnetz.de> Signed-off-by: Laurent Vivier Signed-off-by: Stefan Hajnoczi Message-Id: <20221126152507.283271-5-sw@weilnetz.de> --- subprojects/libvhost-user/libvhost-user.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c index 80f9952e71..d6ee6e7d91 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -45,6 +45,17 @@ #include "libvhost-user.h" /* usually provided by GLib */ +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) +#if !defined(__clang__) && (__GNUC__ == 4 && __GNUC_MINOR__ == 4) +#define G_GNUC_PRINTF(format_idx, arg_idx) \ + __attribute__((__format__(gnu_printf, format_idx, arg_idx))) +#else +#define G_GNUC_PRINTF(format_idx, arg_idx) \ + __attribute__((__format__(__printf__, format_idx, arg_idx))) +#endif +#else /* !__GNUC__ */ +#define G_GNUC_PRINTF(format_idx, arg_idx) +#endif /* !__GNUC__ */ #ifndef MIN #define MIN(x, y) ({ \ typeof(x) _min1 = (x); \ @@ -151,7 +162,7 @@ vu_request_to_string(unsigned int req) } } -static void +static void G_GNUC_PRINTF(2, 3) vu_panic(VuDev *dev, const char *msg, ...) { char *buf = NULL; From ec09f22d01d1e59a42f0a5d4f02c325e03df3bc6 Mon Sep 17 00:00:00 2001 From: Stefan Weil via Date: Sat, 26 Nov 2022 16:25:06 +0100 Subject: [PATCH 41/71] MAINTAINERS: Add subprojects/libvhost-user to section "vhost" Signed-off-by: Stefan Weil [Michael agreed to act as maintainer for libvhost-user via email in https://lore.kernel.org/qemu-devel/20221123015218-mutt-send-email-mst@kernel.org/. --Stefan] Signed-off-by: Stefan Hajnoczi Message-Id: <20221126152507.283271-6-sw@weilnetz.de> --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index cf24910249..6966490c94 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2005,6 +2005,7 @@ F: docs/interop/vhost-user.rst F: contrib/vhost-user-*/ F: backends/vhost-user.c F: include/sysemu/vhost-user-backend.h +F: subprojects/libvhost-user/ virtio M: Michael S. Tsirkin From ac149498215809bfb5c0ddce1953519fbfda5004 Mon Sep 17 00:00:00 2001 From: Stefan Weil via Date: Sat, 26 Nov 2022 16:25:07 +0100 Subject: [PATCH 42/71] Add G_GNUC_PRINTF to function qemu_set_info_str and fix related issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With the G_GNUC_PRINTF function attribute the compiler detects two potential insecure format strings: ../../../net/stream.c:248:31: warning: format string is not a string literal (potentially insecure) [-Wformat-security] qemu_set_info_str(&s->nc, uri); ^~~ ../../../net/stream.c:322:31: warning: format string is not a string literal (potentially insecure) [-Wformat-security] qemu_set_info_str(&s->nc, uri); ^~~ There are also two other warnings: ../../../net/socket.c:182:35: warning: zero-length gnu_printf format string [-Wformat-zero-length] 182 | qemu_set_info_str(&s->nc, ""); | ^~ ../../../net/stream.c:170:35: warning: zero-length gnu_printf format string [-Wformat-zero-length] 170 | qemu_set_info_str(&s->nc, ""); Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Stefan Weil Signed-off-by: Stefan Hajnoczi Message-Id: <20221126152507.283271-7-sw@weilnetz.de> --- include/net/net.h | 3 ++- net/socket.c | 2 +- net/stream.c | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/net/net.h b/include/net/net.h index 3db75ff841..dc20b31e9f 100644 --- a/include/net/net.h +++ b/include/net/net.h @@ -177,7 +177,8 @@ ssize_t qemu_send_packet_async(NetClientState *nc, const uint8_t *buf, void qemu_purge_queued_packets(NetClientState *nc); void qemu_flush_queued_packets(NetClientState *nc); void qemu_flush_or_purge_queued_packets(NetClientState *nc, bool purge); -void qemu_set_info_str(NetClientState *nc, const char *fmt, ...); +void qemu_set_info_str(NetClientState *nc, + const char *fmt, ...) G_GNUC_PRINTF(2, 3); void qemu_format_nic_info_str(NetClientState *nc, uint8_t macaddr[6]); bool qemu_has_ufo(NetClientState *nc); bool qemu_has_vnet_hdr(NetClientState *nc); diff --git a/net/socket.c b/net/socket.c index 4944bb70d5..e62137c839 100644 --- a/net/socket.c +++ b/net/socket.c @@ -179,7 +179,7 @@ static void net_socket_send(void *opaque) s->fd = -1; net_socket_rs_init(&s->rs, net_socket_rs_finalize, false); s->nc.link_down = true; - qemu_set_info_str(&s->nc, ""); + qemu_set_info_str(&s->nc, "%s", ""); return; } diff --git a/net/stream.c b/net/stream.c index 53b7040cc4..37ff727e0c 100644 --- a/net/stream.c +++ b/net/stream.c @@ -167,7 +167,7 @@ static gboolean net_stream_send(QIOChannel *ioc, net_socket_rs_init(&s->rs, net_stream_rs_finalize, false); s->nc.link_down = true; - qemu_set_info_str(&s->nc, ""); + qemu_set_info_str(&s->nc, "%s", ""); qapi_event_send_netdev_stream_disconnected(s->nc.name); @@ -245,7 +245,7 @@ static void net_stream_listen(QIONetListener *listener, } g_assert(addr != NULL); uri = socket_uri(addr); - qemu_set_info_str(&s->nc, uri); + qemu_set_info_str(&s->nc, "%s", uri); g_free(uri); qapi_event_send_netdev_stream_connected(s->nc.name, addr); qapi_free_SocketAddress(addr); @@ -319,7 +319,7 @@ static void net_stream_client_connected(QIOTask *task, gpointer opaque) addr = qio_channel_socket_get_remote_address(sioc, NULL); g_assert(addr != NULL); uri = socket_uri(addr); - qemu_set_info_str(&s->nc, uri); + qemu_set_info_str(&s->nc, "%s", uri); g_free(uri); ret = qemu_socket_try_set_nonblock(sioc->fd); From ab1b2ba9c9e9871bb622b0f14a1b2e3f4adaa68f Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Mon, 28 Nov 2022 10:57:36 +0100 Subject: [PATCH 43/71] update seabios source from 1.16.0 to 1.16.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git shortlog rel-1.16.0..rel-1.16.1 =================================== Gerd Hoffmann (3): malloc: use variable for ZoneHigh size malloc: use large ZoneHigh when there is enough memory virtio-blk: use larger default request size Igor Mammedov (1): acpi: parse Alias object Volker Rümelin (2): pci: refactor the pci_config_*() functions reset: force standard PCI configuration access Xiaofei Lee (1): virtio-blk: Fix incorrect type conversion in virtio_blk_op() Xuan Zhuo (2): virtio-mmio: read/write the hi 32 features for mmio virtio: finalize features before using device Signed-off-by: Gerd Hoffmann --- roms/seabios | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roms/seabios b/roms/seabios index d239552ce7..3208b098f5 160000 --- a/roms/seabios +++ b/roms/seabios @@ -1 +1 @@ -Subproject commit d239552ce7220e448ae81f41515138f7b9e3c4db +Subproject commit 3208b098f51a9ef96d0dfa71d5ec3a3eaec88f0a From a704cb59fd87cd015177a823974ca2380aac6bfd Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Mon, 28 Nov 2022 11:05:08 +0100 Subject: [PATCH 44/71] update seabios binaries to 1.16.1 Signed-off-by: Gerd Hoffmann --- pc-bios/bios-256k.bin | Bin 262144 -> 262144 bytes pc-bios/bios-microvm.bin | Bin 131072 -> 131072 bytes pc-bios/bios.bin | Bin 131072 -> 131072 bytes pc-bios/vgabios-ati.bin | Bin 39936 -> 39936 bytes pc-bios/vgabios-bochs-display.bin | Bin 28672 -> 28672 bytes pc-bios/vgabios-cirrus.bin | Bin 39424 -> 39424 bytes pc-bios/vgabios-qxl.bin | Bin 39424 -> 39936 bytes pc-bios/vgabios-ramfb.bin | Bin 28672 -> 29184 bytes pc-bios/vgabios-stdvga.bin | Bin 39424 -> 39936 bytes pc-bios/vgabios-virtio.bin | Bin 39424 -> 39936 bytes pc-bios/vgabios-vmware.bin | Bin 39424 -> 39936 bytes pc-bios/vgabios.bin | Bin 38912 -> 39424 bytes 12 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pc-bios/bios-256k.bin b/pc-bios/bios-256k.bin index 6163fb8149dca8c30f1c64736a63dba33716b9e2..211b2a4da224427c33aa0aafa2d8ef12b0292573 100644 GIT binary patch literal 262144 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%0Dn>bwn$FIor9u{DYrhL6K6Y`7$!gKhWw=Gb58n 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�>%t{dO*vUKu4{flnPJ(7H9 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 literal 262144 zcmeFZd3+RA+P__$bdnBfs0JDd7$j(eiAE%fN+f7Q0z^O!B(f^t=wyO8qe3^Jpd?nJ zsg&(7?m9Y;j>|YMqcdtq;+7Cd0Ji|L2rdB?D>O&|g%Fm0ue&+{W}bQ9_w)PvSMa&g zRi{p!I_G<~`z%$8V*j%huobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs_&-zN!x%+5D^^j?fk{vZw?l$c zQQn0Qp$(2gPMo6T!z`$P591YOGjvZ-l#wtVu7g?d2Ur64!vj#`Qj~hQ%fmT54R655 zuo3n^2VC1*Q64`_QQk{dlz9WWHb_yj1}n;Mp#*+}{zDXHIvj^9&sUTu;i@!6$%R5# z1fRl%7b?nFD1?{{Me#!g{0%;Y&tW@+;rACQ%ERz4I0n;)DoQC-z-I7VtSB>JHWb0@ zFlU&eJPK!JD$4m#0Z&6KWM9IwFIAK>I1En?SClpI*ky|1yj)RUgDb93ln```P!v~| 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%0Au(+iZ64qbi2 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 AtpET3 diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin index 68f65ff2fde1afe8ad23e5eaa42030c37d2883ce..12d6a037be66d7246c906bbfb1b05e99f0a83fba 100644 GIT binary patch delta 73563 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 diff --git a/pc-bios/vgabios-ati.bin b/pc-bios/vgabios-ati.bin index 4533d0d063c22890a9973e1260264813f1179406..39b24051481955de4dde9f36c30afa6d9f237bef 100644 GIT binary patch delta 13917 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 A$^ZZW delta 13834 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 HO~3yi2ouRe delta 9868 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 diff --git a/pc-bios/vgabios-qxl.bin b/pc-bios/vgabios-qxl.bin index 8a27dac557290e9ad4abcdbecc757d4aac3e623a..4b5573a85781bc86bad592e4efb5a37da996e260 100644 GIT binary patch delta 12577 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 Y9>~tmV>5H^=f5fYE$=A4h`-wZ1v~o&X#fBK delta 9975 zcmZ8n4_K4e)qme4kbuY=5fLFESdD+G6lncJjTTKKs713X*4Ej&{<&ec)vhMeeXUJg zLYolAYHz!z+v-!b{hoE3o9=6;VEb93K7iU<{L^Z6Ytd0n8mb_EfMCh@J2wI8e0<*A z_uO;Oz4!b-=f%|~yIN&!`Jd;64x2XeZRWAtvbCz(joT(qG(5ysu@%hM$b6sMn7>SC ztF|Puz-2vC_MhKYF?)osmnr*NjJ~ugiSM~*Ea9HEF<)5+D>}I;7fZJ2nXm6{<~|hJ zZez-x@+2k$K`!sGv7WU_Hs;=!ddugJECG=tXo{4PhiAY3}u)Td^I@@|o;)=vyle04WamLdu zp=CHi4jU=vKa+!MwWEW7q?(X0!h%yNdo1m|U3Eti#v?3kF+i?5%Xy@fRh?2ie^Ik? z=KGdKS>tYB$9zrLU&^yp7suPYmUplluH&=pX6^c>p*RPNwS~`fY0(i zpp_beJ_eTV`I^bcnS7X7R9%u}QY)Sml}V#`>QyF{ve>gzu4!SutKeqihv25aY%dF3 zRAX@i3$$vO4Az~u25mpsSd-;F3IBi-AKk{a`5Vj^c$>*z(Uz9?+3BE--C^1NHha23y`9M|>~|35 zmff_^TLQ!TRSaiG6o+W-0Ieb19n5#wDNu(|f|xCD#Avaq2Ib8FtGb}PdB}6pKAqI$ zEy+HSx%*W#;qJxHA>AXH{Ju!NNzw5&Btl$(YILeAzls6k#LbHt(mA^%60vA;* zA;5}G6Z~ZB<9MMXyl3-1piP0IVZ_u9NX5P7J)KguZ6Ne3nfXG*r4P5Wf^K3I#HH+8 zIUDGH%WiA%*S9brpigFtup07k59l0U)U*(MFYk=YTEKkgtikI3P?k(<9~xYG@2%Uk z59oxbe83C zQ(|C6jmodNco|#(swEmMZNw6>;_E)PD2%fLKRXHsyVMY|d?-qUWD3D558d9h==5fV zl}53lsE1h3*Tk~jl6^{yL%wnx9hcq;<%vMIWV#Mu@^#|M`{5SmKC+IjVUM!M`23`_ zEIqUVGkVyMPUfC&k>x3tTS(ahKKHWXny zbGNFP`;yEO4ta65RyAJK%=aZRUj^2lgzCV@bh5yuc$RQd=#+njA$A)7ri{Q(6Wne=T8ZCPWBiA3gkQJJ{C4QjR1E z2lE;~n_!#=VnHT1V%BUp8N>z+%nF7&f;PW7BM=m3Pg{aDR-z6bcd$CCPLiy_0X{Dg zeuF%jEAfkQ!T$rxlft7QmS3|QQP#7yp}D<$U1lopNYU_DMl5hL`Mj@1Os+kol9=yM z9@}X!v!X-x6|7EU#^Kz3YWu@c=SNZDU@-v;jshjtnw`3xLb|%SDEaqDX^=`5Rr-MxNBngW9J?vc!Ky72}B)%`% zCv+Gg(wcL%7ZAkG4dIYVxf_R$^a&m5N0>IJIFf(i1mZyZ;6mfO2P8Hr0^7C*e>zax zXngl$aZVC>yAjVN6JuBKCBHOy1OJ0l=mx$tTmjxBNE$FGdE&a#jHgMv8UC_?-Ve}4 zc+1F4Clp>e3h^`L81oU45xDa_NKnW%y$C1r?GEv zrr}qmc)U?ve2y(qJhf6d1<-i=bUd~8R6OJCg*XEX1P#o0-5Pu)5`9a@c8Y-5V-O(6 zAdkl&dI53LGHVQ!G=wxi2GI>crpF+fAxMURM9D^P6w*dmeGa(G7TX#%I?2%kj_LE5 zKTR@YWJUOIDy9%1tU;s}yi!q|lyZ43pGQ?4vh=5YEWxEzMxCIqyd}olGvFVe zSuWY&d~A)DR#=T-J|R5Q!`%PYLQ0+nTXoszzeEi2m$$&>E{r#6E0f?rnERsBR`@{H zWduY#8dEKBi?<0(2Z19~_%B9`;f4C?a+p7+&ykOCmwwVp-|1-dW%I~O*hkUT;5gtd zlsBM7`%ba?V%)AaV60BAhoOGX+*hu_n^NLt^rjK$8@Ba|Pz}?&6z{TAO^*g>{ zR1WeDpQXj-EeBJ}P7Gt}I#6xF$zGLQ7iFc&EgAjERg(LrZu2jp>w&8}?`g0u-R52U z8S{Y&S8|xI-|H}`uq8?}2f9k;B_&X_g$uINIQzj)V`_4yAzV;9liw~sa@Cl=*IGfl<#o%b| zVdIW^3EFqPAs7eMmRV7+;@Jb%%z_SfE1vfx;F!-T~-3X={IEeC2wa_iI)ap)?G2Mc{HAU1rO5aQ2(~S;7F=W!zOy z*|gfzU{CX&v{jdPkpZt6bYCI&4=fPUqZH|~2EQLbz*&)qYuKu-GR8~!t&aPsXvwX^QmJdFMaqwnRdPt5zbb9|47({ zZwjvVvAVXLd9@}NA5vcGmdwS87EKUBhwyG&G?S5Ni)RPBNQIV5p%yy8)K}t z=t(e88AmFpLNN!!A^C`G$mfFMd5a%So9YY=7#DyRd1TBJ&YfFb@CvN}+ z)6rENP{&4_&jGS{xypRK*5Diclmj5!NQ7ElrHQqjtg72S4j~a3Um@b!{Fduoe__jz zHI@g%mvGMEF@|p(J3;;fe|_vD^1b}~v4)k^YjrTAE?YI~IqzC=1^tl1`RC*45&I@m zX9$11=Yl=ed(wLdXF-A>(naJfxsjNDA-9k(Sc8n)(zB<4l+U5Zg9=5QvkPX- zj|WBFn8BOUmHgG?q6e|268;NghIuFt{J{wTk3x>VuAXd!sk za}G4b^4mK-dkZ_I{+jW}Gt>El8Os&tP1-s<6NF$(v-sW&w_M4$Wsc@0nTzENj6PB= zYU9fcW7Wv`c!l9H=Mq+G^O|wUr7H3rWbEr@>Js2UJ)-!6Pspc;p2XH;4*zoqV+C%~ zLsnRTc~1M{AiYAcBHt8&&)u%`!k3iy4|%*HH}f}+#1J*F7R(153BU#-HLFQ^J>wyDm4vzsYE_Bm#)Hxj48Z5dMS|MXEy2Bd*s7@L5$3KDw zs4u{0q^5nIQ}*?-1M6^L-P@UueZBV$5eB%3xl*6@~`^wo9WFmo6TM)*7to;gf@{!Hit zh1V=nL2K|ggxEeP`>o%Au0uzPay**6G(c-%e7ex+A7Hn7J}PVUNa$ZOt9WNVY0H=V z;oO&A2sLi^MaAt7TggZ1%=nwL#6SAHAB?{Pa@SfM9#a*Z) zPqCseH;)7~NoAAZYZr#EB2aZnN|hhwiPV8I8bO};~ z_!IUZ9N$B%qDXA(Bu@k{4~`+&q0m2^z!DC#0)|+Fn}aYv)TM~!)Ve5#Fz)~0g*!&bqfP&$%BfC^ zq7${e12Lh2|90ZvRjup!;z@bgtqca3QF9b61wA{^x*BguLvN-0%}K?E*TrVf^s?2c zt2;KZf(x`))&J05ykpW>=fD-Z&0cHp0}MoCvB|OuGnhI-m}$|?_!^LiC0k{`tf!|^j%=Q4!`f=ckG;#jtQ)ol`!9TFy=#z+tE&Q zAnEj5>Ru^mrG$cZ-i_|jZ=%f~6!{hJfMR$ywJ3J8ilgEdZ}x~T&rW0N+{fUt8_8*n zW)mNi*EzNhfP)x@j@oF4f|ljVqn>(ZcE!fk2r zsRWLI0NQb+dG4d>?11QI_lJI^rKDY>RQ)9`R2E0$L{wq%m1AhARXq9eG|(xYC*nh^1g>83 zZ~+{HG$cN>K#NRXg-o8J-~JVv+6E`9mvA0Rr+Kvg|(nb zripo}I>Q2Sb84*<+QN9Sxw%vf6GcbW-7tY-KeFJ!6>`xXsOf0>`DED6EEs3tsvgGh ze2SAD%#RZ5W(g+*N*X(8{tr+FJNVELsFSdkWP?yLH5hKH?N8(QZ?mmU17NI(;2o4- z+_uwWo9E#RfTd&eO7`?g>P^003`2JJMeMmeK2LGZ0v*^JLJtCn$dA~9Fzkw!jHQ%4 zCECp(Zs61~orWl9+{ehI^`T3e7+;Y(DEl{|nWOA~F`eSiqc}Ev?lqynzFt?GYz;2{ z7cKxc3qJ@P<1Yo$j%(~OwmMWBhi!sTnnB6*bp1KcpWIN&KglyLCWUXu4T=-7@gg12 z=r^(ESX5oNnFa;ZLR?yeN+^bpHY&t{l}-(DPU7S5%0N3r%vKj`jW+M1w4qlWy^bAx zEsaO|83t(CI5;Zm2(;0BCTR=}Ac~z3DM~ind(W0uNP<4W6(EwHVm(Oro1m6$vOSM} z)b@GwBRNnnItT9(O@QV}dzGp!8df(Mat!^K25uSD4eWr3V|8;0`lN;huHi0CmNqzZ z;nv#mD}{4#h$E$fv0_#RkQ{=J)qOG&WIRhS{|SMJ_uyze z{o;P&qUlIO5dj+_+vz-6c&y5B-AuPXSUJaaQ?dUHsY_VGqk~uH&mY;L3n$)&e373k zckrJ4nPy_uvPq~L1ScUKe1MP?&oxSP%cz6vTQ&u1D+beXgk||O(MqF20rxKBwt_6D z5V?2J+(GV}Fd&kP=7s#ArR+EB$+f*Ebn3-+c*#ehoTzjTv8|URn8;ukd08h)xGYihJQ^|GF`=)f( z)7SyQD^-2uwO+j;Q)hu%T<*&wm8x%{`ZvCUOcd{VnH&`m&m-&Yji>!WD5ih>W#Y4& zHrI=K(Ah2DKHSIg5+z-~=l@+e)7fp-|Dbptg_HNsl2DR&E8d^THs2;(76laAX4~2C zSkFz6Pmii7>0>uuQ^R);BPl4RQ>Y*!I3Bv?*cp95wQOrLr$Q^5%<1B3ST2PM2an?f zv(T=X2oXhyh#zRSXNIkL zI~qz*H=(kj^97EABS46)&nX2f2NTE(GeFtAI zo8lBtr5w7XH6GAW9u zMpgOL1k*^x^Q_90tW>?F6}l;wkI{#S+mj>LhR$6ayw9KbU9)F8S9hYPr|dft&Vg^W2H&}W zz_d#AZ~anihQ3KrzUWI{R+Iag{L^)@;z5UwI znX_U>%$w7}Q{6e(jUhBUj(<0MMxHK?)i(=jFQ`B*h)%BAV7f!`JRnyVnsOCSmt>lt zcrs*Dj#A~}v*wI7nsy`*q_~Kk{wUu7L*9$ zBVstm6mKsvY3*gEILC^bW_I9YDFV|&gBUNtrjT_8_2K(zQq+a_iV@X|`Gcdaha^pI zc!GGP_31Qfp;0pV{qsU%R^B;hvV4P&E1IOd)+Bs)lUgiU&3{ppo|FttjL~2K7*(yM z1YZmllEPoI`Z~dm1!}Nkwwj!a>2Ad{U#=W$Do{KLvZ)ZsrrM;p&ot%RpAJ1In`R5>?J<9uvGM&NOTJ2AJ0xxPvYir+!YCEDaXh#Fhpmy%?!h6D_LHR@fdpjQO z@PRK)_%?%S-w9&%3WKXpwr9KgRCc51l;d8k+Q{6^E}$XOAljVJq0!-Pov|?np>Kl% z1%Ux57dxoA>pqbX)}u{OA>ppppo@Qe?^0Rfy192QcwgN9Z#ZE%iPgU)-u{6%VRpMN zhyTjzy#n|#G3ZT{M?cce)Jxnx*QhlLx_{t1=jQ4yhypK&B~*ikCh=2q^GaJcfFy-k z{DBI(=?M2*kR&jlmfoWNfSPEmJ{zoxe&8PZo2Ws2AWYy(O}S6fQg6v5d{GB7l7^DW zB7G{Ex)+U3Z^^X1YWgXlaGx1|Uf9F%C@u;Rf{G~Ki`d{OGpQ;U4~yUq6F*_fm7n1q zrgVJzOPE(6D}3&}*{a0vxoO@k)mPno_q=JU-VOZRyruFwK5_ozIrZU4g#C297A=#9 z(aVVB-Pq7~E1OyKYN^PoJI61~E8u76C(DoU%k$@}ZfxMj`?&glX#Z``yg xrvTIZZyPgpvuE6$$DX)*CO^3`eN_I8{28_<3-2zPIkWJIr)C!x^1h9){6Dibl@tH~ diff --git a/pc-bios/vgabios-stdvga.bin b/pc-bios/vgabios-stdvga.bin index 55390c45c9252ade6af86d139ae1044221488722..797e1036c98532323cec8cdccc9d51314ec2ac39 100644 GIT binary patch delta 12577 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 U8oMj|5x#u$A3i+taJu||0l~n9SO5S3 delta 12255 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 AGynhq diff --git a/pc-bios/vgabios-vmware.bin b/pc-bios/vgabios-vmware.bin index b668ac04a67c22497901c3a8d0f1c1120b231b74..d5f263a9f74a07be5d02efaa44aa21e98869c68f 100644 GIT binary patch delta 12577 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 delta 12255 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 B&es3{ diff --git a/pc-bios/vgabios.bin b/pc-bios/vgabios.bin index a924891ea58e0f6a98e8ea0ec31e611f73907654..d26af416ced07e63ba5418dc4065e7c11fc1b9eb 100644 GIT binary patch delta 12426 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 ZoBhbNyxHu|+=uzI+kW@H{sDvde*vahLtOv> delta 12085 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 Date: Mon, 28 Nov 2022 17:05:47 -0800 Subject: [PATCH 45/71] replay: Fix declaration of replay_read_next_clock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes the build with gcc 13: replay/replay-time.c:34:6: error: conflicting types for \ 'replay_read_next_clock' due to enum/integer mismatch; \ have 'void(ReplayClockKind)' [-Werror=enum-int-mismatch] 34 | void replay_read_next_clock(ReplayClockKind kind) | ^~~~~~~~~~~~~~~~~~~~~~ In file included from ../qemu/replay/replay-time.c:14: replay/replay-internal.h:139:6: note: previous declaration of \ 'replay_read_next_clock' with type 'void(unsigned int)' 139 | void replay_read_next_clock(unsigned int kind); | ^~~~~~~~~~~~~~~~~~~~~~ Fixes: 8eda206e090 ("replay: recording and replaying clock ticks") Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Wilfred Mallawa Reviewed-by: Pavel Dovgalyuk Signed-off-by: Stefan Hajnoczi Message-Id: <20221129010547.284051-1-richard.henderson@linaro.org> --- replay/replay-internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/replay/replay-internal.h b/replay/replay-internal.h index 89e377be90..b6836354ac 100644 --- a/replay/replay-internal.h +++ b/replay/replay-internal.h @@ -136,7 +136,7 @@ bool replay_next_event_is(int event); /*! Reads next clock value from the file. If clock kind read from the file is different from the parameter, the value is not used. */ -void replay_read_next_clock(unsigned int kind); +void replay_read_next_clock(ReplayClockKind kind); /* Asynchronous events queue */ From 61c34fc194b776ecadc39fb26b061331107e5599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 28 Nov 2022 21:27:37 +0100 Subject: [PATCH 46/71] hw/display/qxl: Have qxl_log_command Return early if no log_cmd handler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Only 3 command types are logged: no need to call qxl_phys2virt() for the other types. Using different cases will help to pass different structure sizes to qxl_phys2virt() in a pair of commits. Reviewed-by: Marc-André Lureau Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Stefan Hajnoczi Message-Id: <20221128202741.4945-2-philmd@linaro.org> --- hw/display/qxl-logger.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hw/display/qxl-logger.c b/hw/display/qxl-logger.c index 68bfa47568..1bcf803db6 100644 --- a/hw/display/qxl-logger.c +++ b/hw/display/qxl-logger.c @@ -247,6 +247,16 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext) qxl_name(qxl_type, ext->cmd.type), compat ? "(compat)" : ""); + switch (ext->cmd.type) { + case QXL_CMD_DRAW: + break; + case QXL_CMD_SURFACE: + break; + case QXL_CMD_CURSOR: + break; + default: + goto out; + } data = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id); if (!data) { return 1; @@ -269,6 +279,7 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext) qxl_log_cmd_cursor(qxl, data, ext->group_id); break; } +out: fprintf(stderr, "\n"); return 0; } From b1901de83a9456cde26fc755f71ca2b7b3ef50fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 28 Nov 2022 21:27:38 +0100 Subject: [PATCH 47/71] hw/display/qxl: Document qxl_phys2virt() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marc-André Lureau Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Stefan Hajnoczi Message-Id: <20221128202741.4945-3-philmd@linaro.org> --- hw/display/qxl.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/display/qxl.h b/hw/display/qxl.h index e74de9579d..78b3a6c9ba 100644 --- a/hw/display/qxl.h +++ b/hw/display/qxl.h @@ -147,6 +147,25 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL) #define QXL_DEFAULT_REVISION (QXL_REVISION_STABLE_V12 + 1) /* qxl.c */ +/** + * qxl_phys2virt: Get a pointer within a PCI VRAM memory region. + * + * @qxl: QXL device + * @phys: physical offset of buffer within the VRAM + * @group_id: memory slot group + * + * Returns a host pointer to a buffer placed at offset @phys within the + * active slot @group_id of the PCI VGA RAM memory region associated with + * the @qxl device. If the slot is inactive, or the offset is out + * of the memory region, returns NULL. + * + * Use with care; by the time this function returns, the returned pointer is + * not protected by RCU anymore. If the caller is not within an RCU critical + * section and does not hold the iothread lock, it must have other means of + * protecting the pointer, such as a reference to the region that includes + * the incoming ram_addr_t. + * + */ void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id); void qxl_set_guest_bug(PCIQXLDevice *qxl, const char *msg, ...) G_GNUC_PRINTF(2, 3); From 8efec0ef8bbc1e75a7ebf6e325a35806ece9b39f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 28 Nov 2022 21:27:39 +0100 Subject: [PATCH 48/71] hw/display/qxl: Pass requested buffer size to qxl_phys2virt() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently qxl_phys2virt() doesn't check for buffer overrun. In order to do so in the next commit, pass the buffer size as argument. For QXLCursor in qxl_render_cursor() -> qxl_cursor() we verify the size of the chunked data ahead, checking we can access 'sizeof(QXLCursor) + chunk->data_size' bytes. Since in the SPICE_CURSOR_TYPE_MONO case the cursor is assumed to fit in one chunk, no change are required. In SPICE_CURSOR_TYPE_ALPHA the ahead read is handled in qxl_unpack_chunks(). Signed-off-by: Philippe Mathieu-Daudé Acked-by: Gerd Hoffmann Signed-off-by: Stefan Hajnoczi Message-Id: <20221128202741.4945-4-philmd@linaro.org> --- hw/display/qxl-logger.c | 11 ++++++++--- hw/display/qxl-render.c | 20 ++++++++++++++++---- hw/display/qxl.c | 14 +++++++++----- hw/display/qxl.h | 4 +++- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/hw/display/qxl-logger.c b/hw/display/qxl-logger.c index 1bcf803db6..35c38f6252 100644 --- a/hw/display/qxl-logger.c +++ b/hw/display/qxl-logger.c @@ -106,7 +106,7 @@ static int qxl_log_image(PCIQXLDevice *qxl, QXLPHYSICAL addr, int group_id) QXLImage *image; QXLImageDescriptor *desc; - image = qxl_phys2virt(qxl, addr, group_id); + image = qxl_phys2virt(qxl, addr, group_id, sizeof(QXLImage)); if (!image) { return 1; } @@ -214,7 +214,8 @@ int qxl_log_cmd_cursor(PCIQXLDevice *qxl, QXLCursorCmd *cmd, int group_id) cmd->u.set.position.y, cmd->u.set.visible ? "yes" : "no", cmd->u.set.shape); - cursor = qxl_phys2virt(qxl, cmd->u.set.shape, group_id); + cursor = qxl_phys2virt(qxl, cmd->u.set.shape, group_id, + sizeof(QXLCursor)); if (!cursor) { return 1; } @@ -236,6 +237,7 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext) { bool compat = ext->flags & QXL_COMMAND_FLAG_COMPAT; void *data; + size_t datasz; int ret; if (!qxl->cmdlog) { @@ -249,15 +251,18 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext) switch (ext->cmd.type) { case QXL_CMD_DRAW: + datasz = compat ? sizeof(QXLCompatDrawable) : sizeof(QXLDrawable); break; case QXL_CMD_SURFACE: + datasz = sizeof(QXLSurfaceCmd); break; case QXL_CMD_CURSOR: + datasz = sizeof(QXLCursorCmd); break; default: goto out; } - data = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id); + data = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id, datasz); if (!data) { return 1; } diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c index ca217004bf..fcfd40c3ac 100644 --- a/hw/display/qxl-render.c +++ b/hw/display/qxl-render.c @@ -107,7 +107,9 @@ static void qxl_render_update_area_unlocked(PCIQXLDevice *qxl) qxl->guest_primary.resized = 0; qxl->guest_primary.data = qxl_phys2virt(qxl, qxl->guest_primary.surface.mem, - MEMSLOT_GROUP_GUEST); + MEMSLOT_GROUP_GUEST, + qxl->guest_primary.abs_stride + * height); if (!qxl->guest_primary.data) { goto end; } @@ -228,7 +230,8 @@ static void qxl_unpack_chunks(void *dest, size_t size, PCIQXLDevice *qxl, if (offset == size) { return; } - chunk = qxl_phys2virt(qxl, chunk->next_chunk, group_id); + chunk = qxl_phys2virt(qxl, chunk->next_chunk, group_id, + sizeof(QXLDataChunk) + chunk->data_size); if (!chunk) { return; } @@ -295,7 +298,8 @@ fail: /* called from spice server thread context only */ int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext) { - QXLCursorCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id); + QXLCursorCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id, + sizeof(QXLCursorCmd)); QXLCursor *cursor; QEMUCursor *c; @@ -314,7 +318,15 @@ int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext) } switch (cmd->type) { case QXL_CURSOR_SET: - cursor = qxl_phys2virt(qxl, cmd->u.set.shape, ext->group_id); + /* First read the QXLCursor to get QXLDataChunk::data_size ... */ + cursor = qxl_phys2virt(qxl, cmd->u.set.shape, ext->group_id, + sizeof(QXLCursor)); + if (!cursor) { + return 1; + } + /* Then read including the chunked data following QXLCursor. */ + cursor = qxl_phys2virt(qxl, cmd->u.set.shape, ext->group_id, + sizeof(QXLCursor) + cursor->chunk.data_size); if (!cursor) { return 1; } diff --git a/hw/display/qxl.c b/hw/display/qxl.c index 5b10f697f1..231d733250 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -274,7 +274,8 @@ static void qxl_spice_monitors_config_async(PCIQXLDevice *qxl, int replay) QXL_IO_MONITORS_CONFIG_ASYNC)); } - cfg = qxl_phys2virt(qxl, qxl->guest_monitors_config, MEMSLOT_GROUP_GUEST); + cfg = qxl_phys2virt(qxl, qxl->guest_monitors_config, MEMSLOT_GROUP_GUEST, + sizeof(QXLMonitorsConfig)); if (cfg != NULL && cfg->count == 1) { qxl->guest_primary.resized = 1; qxl->guest_head0_width = cfg->heads[0].width; @@ -459,7 +460,8 @@ static int qxl_track_command(PCIQXLDevice *qxl, struct QXLCommandExt *ext) switch (le32_to_cpu(ext->cmd.type)) { case QXL_CMD_SURFACE: { - QXLSurfaceCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id); + QXLSurfaceCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id, + sizeof(QXLSurfaceCmd)); if (!cmd) { return 1; @@ -494,7 +496,8 @@ static int qxl_track_command(PCIQXLDevice *qxl, struct QXLCommandExt *ext) } case QXL_CMD_CURSOR: { - QXLCursorCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id); + QXLCursorCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id, + sizeof(QXLCursorCmd)); if (!cmd) { return 1; @@ -1456,7 +1459,8 @@ static bool qxl_get_check_slot_offset(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, } /* can be also called from spice server thread context */ -void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, int group_id) +void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, int group_id, + size_t size) { uint64_t offset; uint32_t slot; @@ -1964,7 +1968,7 @@ static void qxl_dirty_surfaces(PCIQXLDevice *qxl) } cmd = qxl_phys2virt(qxl, qxl->guest_surfaces.cmds[i], - MEMSLOT_GROUP_GUEST); + MEMSLOT_GROUP_GUEST, sizeof(QXLSurfaceCmd)); assert(cmd); assert(cmd->type == QXL_SURFACE_CMD_CREATE); qxl_dirty_one_surface(qxl, cmd->u.surface_create.data, diff --git a/hw/display/qxl.h b/hw/display/qxl.h index 78b3a6c9ba..bf03138ab4 100644 --- a/hw/display/qxl.h +++ b/hw/display/qxl.h @@ -153,6 +153,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL) * @qxl: QXL device * @phys: physical offset of buffer within the VRAM * @group_id: memory slot group + * @size: size of the buffer * * Returns a host pointer to a buffer placed at offset @phys within the * active slot @group_id of the PCI VGA RAM memory region associated with @@ -166,7 +167,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL) * the incoming ram_addr_t. * */ -void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id); +void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id, + size_t size); void qxl_set_guest_bug(PCIQXLDevice *qxl, const char *msg, ...) G_GNUC_PRINTF(2, 3); From 6dbbf055148c6f1b7d8a3251a65bd6f3d1e1f622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 28 Nov 2022 21:27:40 +0100 Subject: [PATCH 49/71] hw/display/qxl: Avoid buffer overrun in qxl_phys2virt (CVE-2022-4144) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Have qxl_get_check_slot_offset() return false if the requested buffer size does not fit within the slot memory region. Similarly qxl_phys2virt() now returns NULL in such case, and qxl_dirty_one_surface() aborts. This avoids buffer overrun in the host pointer returned by memory_region_get_ram_ptr(). Fixes: CVE-2022-4144 (out-of-bounds read) Reported-by: Wenxu Yin (@awxylitol) Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1336 Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Stefan Hajnoczi Message-Id: <20221128202741.4945-5-philmd@linaro.org> --- hw/display/qxl.c | 27 +++++++++++++++++++++++---- hw/display/qxl.h | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/hw/display/qxl.c b/hw/display/qxl.c index 231d733250..0b21626aad 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -1424,11 +1424,13 @@ static void qxl_reset_surfaces(PCIQXLDevice *d) /* can be also called from spice server thread context */ static bool qxl_get_check_slot_offset(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, - uint32_t *s, uint64_t *o) + uint32_t *s, uint64_t *o, + size_t size_requested) { uint64_t phys = le64_to_cpu(pqxl); uint32_t slot = (phys >> (64 - 8)) & 0xff; uint64_t offset = phys & 0xffffffffffff; + uint64_t size_available; if (slot >= NUM_MEMSLOTS) { qxl_set_guest_bug(qxl, "slot too large %d >= %d", slot, @@ -1452,6 +1454,23 @@ static bool qxl_get_check_slot_offset(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, slot, offset, qxl->guest_slots[slot].size); return false; } + size_available = memory_region_size(qxl->guest_slots[slot].mr); + if (qxl->guest_slots[slot].offset + offset >= size_available) { + qxl_set_guest_bug(qxl, + "slot %d offset %"PRIu64" > region size %"PRIu64"\n", + slot, qxl->guest_slots[slot].offset + offset, + size_available); + return false; + } + size_available -= qxl->guest_slots[slot].offset + offset; + if (size_requested > size_available) { + qxl_set_guest_bug(qxl, + "slot %d offset %"PRIu64" size %zu: " + "overrun by %"PRIu64" bytes\n", + slot, offset, size_requested, + size_requested - size_available); + return false; + } *s = slot; *o = offset; @@ -1471,7 +1490,7 @@ void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, int group_id, offset = le64_to_cpu(pqxl) & 0xffffffffffff; return (void *)(intptr_t)offset; case MEMSLOT_GROUP_GUEST: - if (!qxl_get_check_slot_offset(qxl, pqxl, &slot, &offset)) { + if (!qxl_get_check_slot_offset(qxl, pqxl, &slot, &offset, size)) { return NULL; } ptr = memory_region_get_ram_ptr(qxl->guest_slots[slot].mr); @@ -1937,9 +1956,9 @@ static void qxl_dirty_one_surface(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, uint32_t slot; bool rc; - rc = qxl_get_check_slot_offset(qxl, pqxl, &slot, &offset); - assert(rc == true); size = (uint64_t)height * abs(stride); + rc = qxl_get_check_slot_offset(qxl, pqxl, &slot, &offset, size); + assert(rc == true); trace_qxl_surfaces_dirty(qxl->id, offset, size); qxl_set_dirty(qxl->guest_slots[slot].mr, qxl->guest_slots[slot].offset + offset, diff --git a/hw/display/qxl.h b/hw/display/qxl.h index bf03138ab4..7894bd5134 100644 --- a/hw/display/qxl.h +++ b/hw/display/qxl.h @@ -157,7 +157,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL) * * Returns a host pointer to a buffer placed at offset @phys within the * active slot @group_id of the PCI VGA RAM memory region associated with - * the @qxl device. If the slot is inactive, or the offset is out + * the @qxl device. If the slot is inactive, or the offset + size are out * of the memory region, returns NULL. * * Use with care; by the time this function returns, the returned pointer is From 86fdb0582c653a9824183679403a85f588260d62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 28 Nov 2022 21:27:41 +0100 Subject: [PATCH 50/71] hw/display/qxl: Assert memory slot fits in preallocated MemoryRegion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Stefan Hajnoczi Message-Id: <20221128202741.4945-6-philmd@linaro.org> --- hw/display/qxl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/display/qxl.c b/hw/display/qxl.c index 0b21626aad..6772849dec 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -1384,6 +1384,7 @@ static int qxl_add_memslot(PCIQXLDevice *d, uint32_t slot_id, uint64_t delta, qxl_set_guest_bug(d, "%s: pci_region = %d", __func__, pci_region); return 1; } + assert(guest_end - pci_start <= memory_region_size(mr)); virt_start = (intptr_t)memory_region_get_ram_ptr(mr); memslot.slot_id = slot_id; From 7103895123d580bbe93e341241d200e75d8996a1 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Mon, 21 Nov 2022 16:19:23 -0500 Subject: [PATCH 51/71] block-backend: avoid bdrv_unregister_buf() NULL pointer deref MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bdrv_*() APIs expect a valid BlockDriverState. Calling them with bs=NULL leads to undefined behavior. Jonathan Cameron reported this following NULL pointer dereference when a VM with a virtio-blk device and a memory-backend-file object is terminated: 1. qemu_cleanup() closes all drives, setting blk->root to NULL 2. qemu_cleanup() calls user_creatable_cleanup(), which results in a RAM block notifier callback because the memory-backend-file is destroyed. 3. blk_unregister_buf() is called by virtio-blk's BlockRamRegistrar notifier callback and undefined behavior occurs. Fixes: baf422684d73 ("virtio-blk: use BDRV_REQ_REGISTERED_BUF optimization hint") Co-authored-by: Jonathan Cameron Reviewed-by: Kevin Wolf Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Stefan Hajnoczi Message-Id: <20221121211923.1993171-1-stefanha@redhat.com> --- block/block-backend.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/block/block-backend.c b/block/block-backend.c index b48c91f4e1..d98a96ff37 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -2576,14 +2576,25 @@ static void blk_root_drained_end(BdrvChild *child, int *drained_end_counter) bool blk_register_buf(BlockBackend *blk, void *host, size_t size, Error **errp) { + BlockDriverState *bs = blk_bs(blk); + GLOBAL_STATE_CODE(); - return bdrv_register_buf(blk_bs(blk), host, size, errp); + + if (bs) { + return bdrv_register_buf(bs, host, size, errp); + } + return true; } void blk_unregister_buf(BlockBackend *blk, void *host, size_t size) { + BlockDriverState *bs = blk_bs(blk); + GLOBAL_STATE_CODE(); - bdrv_unregister_buf(blk_bs(blk), host, size); + + if (bs) { + bdrv_unregister_buf(bs, host, size); + } } int coroutine_fn blk_co_copy_range(BlockBackend *blk_in, int64_t off_in, From 475e56b630669db02994c1e7fbd3c6e3468e9c1e Mon Sep 17 00:00:00 2001 From: Evgeny Ermakov Date: Tue, 29 Nov 2022 12:41:46 -0800 Subject: [PATCH 52/71] target/arm: Set TCGCPUOps.restore_state_to_opc for v7m This setting got missed, breaking v7m. Fixes: 56c6c98df85c ("target/arm: Convert to tcg_ops restore_state_to_opc") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1347 Signed-off-by: Richard Henderson Signed-off-by: Evgeny Ermakov Signed-off-by: Stefan Hajnoczi Message-Id: <20221129204146.550394-1-richard.henderson@linaro.org> --- target/arm/cpu.c | 6 +++--- target/arm/cpu_tcg.c | 1 + target/arm/internals.h | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index a021df9e9e..38d066c294 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -91,9 +91,9 @@ void arm_cpu_synchronize_from_tb(CPUState *cs, } } -static void arm_restore_state_to_opc(CPUState *cs, - const TranslationBlock *tb, - const uint64_t *data) +void arm_restore_state_to_opc(CPUState *cs, + const TranslationBlock *tb, + const uint64_t *data) { CPUARMState *env = cs->env_ptr; diff --git a/target/arm/cpu_tcg.c b/target/arm/cpu_tcg.c index 60ff539fa1..9a2cef7d05 100644 --- a/target/arm/cpu_tcg.c +++ b/target/arm/cpu_tcg.c @@ -1035,6 +1035,7 @@ static const struct TCGCPUOps arm_v7m_tcg_ops = { .initialize = arm_translate_init, .synchronize_from_tb = arm_cpu_synchronize_from_tb, .debug_excp_handler = arm_debug_excp_handler, + .restore_state_to_opc = arm_restore_state_to_opc, #ifdef CONFIG_USER_ONLY .record_sigsegv = arm_cpu_record_sigsegv, diff --git a/target/arm/internals.h b/target/arm/internals.h index d9121d9ff8..161e42d50f 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -185,6 +185,10 @@ static inline int r14_bank_number(int mode) void arm_cpu_register_gdb_regs_for_features(ARMCPU *cpu); void arm_translate_init(void); +void arm_restore_state_to_opc(CPUState *cs, + const TranslationBlock *tb, + const uint64_t *data); + #ifdef CONFIG_TCG void arm_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb); #endif /* CONFIG_TCG */ From c4ffd91aba1c3d878e99a3e7ba8aad4826728ece Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Tue, 29 Nov 2022 14:27:47 -0500 Subject: [PATCH 53/71] Update VERSION for v7.2.0-rc3 Signed-off-by: Stefan Hajnoczi --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 02998662dd..1c24435536 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -7.1.92 +7.1.93 From 523e40022fc9522bb6bc13e4ce9eb4d1613ab5dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Wed, 30 Nov 2022 11:24:35 +0000 Subject: [PATCH 54/71] tests/qtests: override "force-legacy" for gpio virtio-mmio tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The GPIO device is a VIRTIO_F_VERSION_1 devices but running with a legacy MMIO interface we miss out that feature bit causing confusion. For the GPIO test force the mmio bus to support non-legacy so we can properly test it. Signed-off-by: Alex Bennée Reviewed-by: Michael S. Tsirkin Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1333 Message-Id: <20221130112439.2527228-2-alex.bennee@linaro.org> Acked-by: Thomas Huth Signed-off-by: Michael S. Tsirkin --- tests/qtest/libqos/virtio-gpio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/qtest/libqos/virtio-gpio.c b/tests/qtest/libqos/virtio-gpio.c index 762aa6695b..f22d7b5eb5 100644 --- a/tests/qtest/libqos/virtio-gpio.c +++ b/tests/qtest/libqos/virtio-gpio.c @@ -154,7 +154,8 @@ static void virtio_gpio_register_nodes(void) QOSGraphEdgeOptions edge_opts = { }; /* vhost-user-gpio-device */ - edge_opts.extra_device_opts = "id=gpio0,chardev=chr-vhost-user-test"; + edge_opts.extra_device_opts = "id=gpio0,chardev=chr-vhost-user-test " + "-global virtio-mmio.force-legacy=false"; qos_node_create_driver("vhost-user-gpio-device", virtio_gpio_device_create); qos_node_consumes("vhost-user-gpio-device", "virtio-bus", &edge_opts); From 4daa5054c599c8aec70f1264a01341a15921c145 Mon Sep 17 00:00:00 2001 From: Stefano Garzarella Date: Wed, 30 Nov 2022 11:24:36 +0000 Subject: [PATCH 55/71] vhost: enable vrings in vhost_dev_start() for vhost-user devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 02b61f38d3 ("hw/virtio: incorporate backend features in features") properly negotiates VHOST_USER_F_PROTOCOL_FEATURES with the vhost-user backend, but we forgot to enable vrings as specified in docs/interop/vhost-user.rst: If ``VHOST_USER_F_PROTOCOL_FEATURES`` has not been negotiated, the ring starts directly in the enabled state. If ``VHOST_USER_F_PROTOCOL_FEATURES`` has been negotiated, the ring is initialized in a disabled state and is enabled by ``VHOST_USER_SET_VRING_ENABLE`` with parameter 1. Some vhost-user front-ends already did this by calling vhost_ops.vhost_set_vring_enable() directly: - backends/cryptodev-vhost.c - hw/net/virtio-net.c - hw/virtio/vhost-user-gpio.c But most didn't do that, so we would leave the vrings disabled and some backends would not work. We observed this issue with the rust version of virtiofsd [1], which uses the event loop [2] provided by the vhost-user-backend crate where requests are not processed if vring is not enabled. Let's fix this issue by enabling the vrings in vhost_dev_start() for vhost-user front-ends that don't already do this directly. Same thing also in vhost_dev_stop() where we disable vrings. [1] https://gitlab.com/virtio-fs/virtiofsd [2] https://github.com/rust-vmm/vhost/blob/240fc2966/crates/vhost-user-backend/src/event_loop.rs#L217 Fixes: 02b61f38d3 ("hw/virtio: incorporate backend features in features") Reported-by: German Maglione Tested-by: German Maglione Signed-off-by: Stefano Garzarella Acked-by: Raphael Norwitz Message-Id: <20221123131630.52020-1-sgarzare@redhat.com> Signed-off-by: Alex Bennée Reviewed-by: Michael S. Tsirkin Message-Id: <20221130112439.2527228-3-alex.bennee@linaro.org> Signed-off-by: Michael S. Tsirkin --- backends/cryptodev-vhost.c | 4 ++-- backends/vhost-user.c | 4 ++-- hw/block/vhost-user-blk.c | 4 ++-- hw/net/vhost_net.c | 8 +++---- hw/scsi/vhost-scsi-common.c | 4 ++-- hw/virtio/trace-events | 4 ++-- hw/virtio/vhost-user-fs.c | 4 ++-- hw/virtio/vhost-user-gpio.c | 4 ++-- hw/virtio/vhost-user-i2c.c | 4 ++-- hw/virtio/vhost-user-rng.c | 4 ++-- hw/virtio/vhost-vsock-common.c | 4 ++-- hw/virtio/vhost.c | 44 ++++++++++++++++++++++++++++++---- include/hw/virtio/vhost.h | 6 +++-- 13 files changed, 67 insertions(+), 31 deletions(-) diff --git a/backends/cryptodev-vhost.c b/backends/cryptodev-vhost.c index bc13e466b4..572f87b3be 100644 --- a/backends/cryptodev-vhost.c +++ b/backends/cryptodev-vhost.c @@ -94,7 +94,7 @@ cryptodev_vhost_start_one(CryptoDevBackendVhost *crypto, goto fail_notifiers; } - r = vhost_dev_start(&crypto->dev, dev); + r = vhost_dev_start(&crypto->dev, dev, false); if (r < 0) { goto fail_start; } @@ -111,7 +111,7 @@ static void cryptodev_vhost_stop_one(CryptoDevBackendVhost *crypto, VirtIODevice *dev) { - vhost_dev_stop(&crypto->dev, dev); + vhost_dev_stop(&crypto->dev, dev, false); vhost_dev_disable_notifiers(&crypto->dev, dev); } diff --git a/backends/vhost-user.c b/backends/vhost-user.c index 5dedb2d987..7bfcaef976 100644 --- a/backends/vhost-user.c +++ b/backends/vhost-user.c @@ -85,7 +85,7 @@ vhost_user_backend_start(VhostUserBackend *b) } b->dev.acked_features = b->vdev->guest_features; - ret = vhost_dev_start(&b->dev, b->vdev); + ret = vhost_dev_start(&b->dev, b->vdev, true); if (ret < 0) { error_report("Error start vhost dev"); goto err_guest_notifiers; @@ -120,7 +120,7 @@ vhost_user_backend_stop(VhostUserBackend *b) return; } - vhost_dev_stop(&b->dev, b->vdev); + vhost_dev_stop(&b->dev, b->vdev, true); if (k->set_guest_notifiers) { ret = k->set_guest_notifiers(qbus->parent, diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 0d5190accf..1177064631 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -178,7 +178,7 @@ static int vhost_user_blk_start(VirtIODevice *vdev, Error **errp) } s->dev.vq_index_end = s->dev.nvqs; - ret = vhost_dev_start(&s->dev, vdev); + ret = vhost_dev_start(&s->dev, vdev, true); if (ret < 0) { error_setg_errno(errp, -ret, "Error starting vhost"); goto err_guest_notifiers; @@ -213,7 +213,7 @@ static void vhost_user_blk_stop(VirtIODevice *vdev) return; } - vhost_dev_stop(&s->dev, vdev); + vhost_dev_stop(&s->dev, vdev, true); ret = k->set_guest_notifiers(qbus->parent, s->dev.nvqs, false); if (ret < 0) { diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index 26e4930676..043058ff43 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -259,7 +259,7 @@ static int vhost_net_start_one(struct vhost_net *net, goto fail_notifiers; } - r = vhost_dev_start(&net->dev, dev); + r = vhost_dev_start(&net->dev, dev, false); if (r < 0) { goto fail_start; } @@ -308,7 +308,7 @@ fail: if (net->nc->info->poll) { net->nc->info->poll(net->nc, true); } - vhost_dev_stop(&net->dev, dev); + vhost_dev_stop(&net->dev, dev, false); fail_start: vhost_dev_disable_notifiers(&net->dev, dev); fail_notifiers: @@ -329,7 +329,7 @@ static void vhost_net_stop_one(struct vhost_net *net, if (net->nc->info->poll) { net->nc->info->poll(net->nc, true); } - vhost_dev_stop(&net->dev, dev); + vhost_dev_stop(&net->dev, dev, false); if (net->nc->info->stop) { net->nc->info->stop(net->nc); } @@ -606,7 +606,7 @@ err_start: assert(r >= 0); } - vhost_dev_stop(&net->dev, vdev); + vhost_dev_stop(&net->dev, vdev, false); return r; } diff --git a/hw/scsi/vhost-scsi-common.c b/hw/scsi/vhost-scsi-common.c index 767f827e55..18ea5dcfa1 100644 --- a/hw/scsi/vhost-scsi-common.c +++ b/hw/scsi/vhost-scsi-common.c @@ -68,7 +68,7 @@ int vhost_scsi_common_start(VHostSCSICommon *vsc) goto err_guest_notifiers; } - ret = vhost_dev_start(&vsc->dev, vdev); + ret = vhost_dev_start(&vsc->dev, vdev, true); if (ret < 0) { error_report("Error start vhost dev"); goto err_guest_notifiers; @@ -101,7 +101,7 @@ void vhost_scsi_common_stop(VHostSCSICommon *vsc) VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus); int ret = 0; - vhost_dev_stop(&vsc->dev, vdev); + vhost_dev_stop(&vsc->dev, vdev, true); if (k->set_guest_notifiers) { ret = k->set_guest_notifiers(qbus->parent, vsc->dev.nvqs, false); diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events index 820dadc26c..14fc5b9bb2 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -9,8 +9,8 @@ vhost_section(const char *name) "%s" vhost_reject_section(const char *name, int d) "%s:%d" vhost_iotlb_miss(void *dev, int step) "%p step %d" vhost_dev_cleanup(void *dev) "%p" -vhost_dev_start(void *dev, const char *name) "%p:%s" -vhost_dev_stop(void *dev, const char *name) "%p:%s" +vhost_dev_start(void *dev, const char *name, bool vrings) "%p:%s vrings:%d" +vhost_dev_stop(void *dev, const char *name, bool vrings) "%p:%s vrings:%d" # vhost-user.c diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c index dc4014cdef..d97b179e6f 100644 --- a/hw/virtio/vhost-user-fs.c +++ b/hw/virtio/vhost-user-fs.c @@ -76,7 +76,7 @@ static void vuf_start(VirtIODevice *vdev) } fs->vhost_dev.acked_features = vdev->guest_features; - ret = vhost_dev_start(&fs->vhost_dev, vdev); + ret = vhost_dev_start(&fs->vhost_dev, vdev, true); if (ret < 0) { error_report("Error starting vhost: %d", -ret); goto err_guest_notifiers; @@ -110,7 +110,7 @@ static void vuf_stop(VirtIODevice *vdev) return; } - vhost_dev_stop(&fs->vhost_dev, vdev); + vhost_dev_stop(&fs->vhost_dev, vdev, true); ret = k->set_guest_notifiers(qbus->parent, fs->vhost_dev.nvqs, false); if (ret < 0) { diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c index 5851cb3bc9..0b40ebd15a 100644 --- a/hw/virtio/vhost-user-gpio.c +++ b/hw/virtio/vhost-user-gpio.c @@ -81,7 +81,7 @@ static int vu_gpio_start(VirtIODevice *vdev) */ vhost_ack_features(&gpio->vhost_dev, feature_bits, vdev->guest_features); - ret = vhost_dev_start(&gpio->vhost_dev, vdev); + ret = vhost_dev_start(&gpio->vhost_dev, vdev, false); if (ret < 0) { error_report("Error starting vhost-user-gpio: %d", ret); goto err_guest_notifiers; @@ -139,7 +139,7 @@ static void vu_gpio_stop(VirtIODevice *vdev) return; } - vhost_dev_stop(vhost_dev, vdev); + vhost_dev_stop(vhost_dev, vdev, false); ret = k->set_guest_notifiers(qbus->parent, vhost_dev->nvqs, false); if (ret < 0) { diff --git a/hw/virtio/vhost-user-i2c.c b/hw/virtio/vhost-user-i2c.c index 1c9f3d20dc..dc5c828ba6 100644 --- a/hw/virtio/vhost-user-i2c.c +++ b/hw/virtio/vhost-user-i2c.c @@ -46,7 +46,7 @@ static void vu_i2c_start(VirtIODevice *vdev) i2c->vhost_dev.acked_features = vdev->guest_features; - ret = vhost_dev_start(&i2c->vhost_dev, vdev); + ret = vhost_dev_start(&i2c->vhost_dev, vdev, true); if (ret < 0) { error_report("Error starting vhost-user-i2c: %d", -ret); goto err_guest_notifiers; @@ -80,7 +80,7 @@ static void vu_i2c_stop(VirtIODevice *vdev) return; } - vhost_dev_stop(&i2c->vhost_dev, vdev); + vhost_dev_stop(&i2c->vhost_dev, vdev, true); ret = k->set_guest_notifiers(qbus->parent, i2c->vhost_dev.nvqs, false); if (ret < 0) { diff --git a/hw/virtio/vhost-user-rng.c b/hw/virtio/vhost-user-rng.c index f9084cde58..201a39e220 100644 --- a/hw/virtio/vhost-user-rng.c +++ b/hw/virtio/vhost-user-rng.c @@ -47,7 +47,7 @@ static void vu_rng_start(VirtIODevice *vdev) } rng->vhost_dev.acked_features = vdev->guest_features; - ret = vhost_dev_start(&rng->vhost_dev, vdev); + ret = vhost_dev_start(&rng->vhost_dev, vdev, true); if (ret < 0) { error_report("Error starting vhost-user-rng: %d", -ret); goto err_guest_notifiers; @@ -81,7 +81,7 @@ static void vu_rng_stop(VirtIODevice *vdev) return; } - vhost_dev_stop(&rng->vhost_dev, vdev); + vhost_dev_stop(&rng->vhost_dev, vdev, true); ret = k->set_guest_notifiers(qbus->parent, rng->vhost_dev.nvqs, false); if (ret < 0) { diff --git a/hw/virtio/vhost-vsock-common.c b/hw/virtio/vhost-vsock-common.c index a67a275de2..d21c72b401 100644 --- a/hw/virtio/vhost-vsock-common.c +++ b/hw/virtio/vhost-vsock-common.c @@ -70,7 +70,7 @@ int vhost_vsock_common_start(VirtIODevice *vdev) } vvc->vhost_dev.acked_features = vdev->guest_features; - ret = vhost_dev_start(&vvc->vhost_dev, vdev); + ret = vhost_dev_start(&vvc->vhost_dev, vdev, true); if (ret < 0) { error_report("Error starting vhost: %d", -ret); goto err_guest_notifiers; @@ -105,7 +105,7 @@ void vhost_vsock_common_stop(VirtIODevice *vdev) return; } - vhost_dev_stop(&vvc->vhost_dev, vdev); + vhost_dev_stop(&vvc->vhost_dev, vdev, true); ret = k->set_guest_notifiers(qbus->parent, vvc->vhost_dev.nvqs, false); if (ret < 0) { diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index d1c4c20b8c..7fb008bc9e 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1777,15 +1777,36 @@ int vhost_dev_get_inflight(struct vhost_dev *dev, uint16_t queue_size, return 0; } +static int vhost_dev_set_vring_enable(struct vhost_dev *hdev, int enable) +{ + if (!hdev->vhost_ops->vhost_set_vring_enable) { + return 0; + } + + /* + * For vhost-user devices, if VHOST_USER_F_PROTOCOL_FEATURES has not + * been negotiated, the rings start directly in the enabled state, and + * .vhost_set_vring_enable callback will fail since + * VHOST_USER_SET_VRING_ENABLE is not supported. + */ + if (hdev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_USER && + !virtio_has_feature(hdev->backend_features, + VHOST_USER_F_PROTOCOL_FEATURES)) { + return 0; + } + + return hdev->vhost_ops->vhost_set_vring_enable(hdev, enable); +} + /* Host notifiers must be enabled at this point. */ -int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev) +int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev, bool vrings) { int i, r; /* should only be called after backend is connected */ assert(hdev->vhost_ops); - trace_vhost_dev_start(hdev, vdev->name); + trace_vhost_dev_start(hdev, vdev->name, vrings); vdev->vhost_started = true; hdev->started = true; @@ -1830,10 +1851,16 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev) goto fail_log; } } + if (vrings) { + r = vhost_dev_set_vring_enable(hdev, true); + if (r) { + goto fail_log; + } + } if (hdev->vhost_ops->vhost_dev_start) { r = hdev->vhost_ops->vhost_dev_start(hdev, true); if (r) { - goto fail_log; + goto fail_start; } } if (vhost_dev_has_iommu(hdev) && @@ -1848,6 +1875,10 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev) } } return 0; +fail_start: + if (vrings) { + vhost_dev_set_vring_enable(hdev, false); + } fail_log: vhost_log_put(hdev, false); fail_vq: @@ -1866,18 +1897,21 @@ fail_features: } /* Host notifiers must be enabled at this point. */ -void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev) +void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev, bool vrings) { int i; /* should only be called after backend is connected */ assert(hdev->vhost_ops); - trace_vhost_dev_stop(hdev, vdev->name); + trace_vhost_dev_stop(hdev, vdev->name, vrings); if (hdev->vhost_ops->vhost_dev_start) { hdev->vhost_ops->vhost_dev_start(hdev, false); } + if (vrings) { + vhost_dev_set_vring_enable(hdev, false); + } for (i = 0; i < hdev->nvqs; ++i) { vhost_virtqueue_stop(hdev, vdev, diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index 353252ac3e..67a6807fac 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -184,24 +184,26 @@ static inline bool vhost_dev_is_started(struct vhost_dev *hdev) * vhost_dev_start() - start the vhost device * @hdev: common vhost_dev structure * @vdev: the VirtIODevice structure + * @vrings: true to have vrings enabled in this call * * Starts the vhost device. From this point VirtIO feature negotiation * can start and the device can start processing VirtIO transactions. * * Return: 0 on success, < 0 on error. */ -int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev); +int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev, bool vrings); /** * vhost_dev_stop() - stop the vhost device * @hdev: common vhost_dev structure * @vdev: the VirtIODevice structure + * @vrings: true to have vrings disabled in this call * * Stop the vhost device. After the device is stopped the notifiers * can be disabled (@vhost_dev_disable_notifiers) and the device can * be torn down (@vhost_dev_cleanup). */ -void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev); +void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev, bool vrings); /** * DOC: vhost device configuration handling From 060f4a944072ecf37cece0f16a0609babfb679b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Wed, 30 Nov 2022 11:24:37 +0000 Subject: [PATCH 56/71] hw/virtio: add started_vu status field to vhost-user-gpio MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As per the fix to vhost-user-blk in f5b22d06fb (vhost: recheck dev state in the vhost_migration_log routine) we really should track the connection and starting separately. Signed-off-by: Alex Bennée Reviewed-by: Michael S. Tsirkin Message-Id: <20221130112439.2527228-4-alex.bennee@linaro.org> Signed-off-by: Michael S. Tsirkin --- hw/virtio/vhost-user-gpio.c | 11 ++++------- include/hw/virtio/vhost-user-gpio.h | 10 ++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c index 0b40ebd15a..be9be08b4c 100644 --- a/hw/virtio/vhost-user-gpio.c +++ b/hw/virtio/vhost-user-gpio.c @@ -86,6 +86,7 @@ static int vu_gpio_start(VirtIODevice *vdev) error_report("Error starting vhost-user-gpio: %d", ret); goto err_guest_notifiers; } + gpio->started_vu = true; /* * guest_notifier_mask/pending not used yet, so just unmask @@ -126,16 +127,12 @@ static void vu_gpio_stop(VirtIODevice *vdev) struct vhost_dev *vhost_dev = &gpio->vhost_dev; int ret; - if (!k->set_guest_notifiers) { + if (!gpio->started_vu) { return; } + gpio->started_vu = false; - /* - * We can call vu_gpio_stop multiple times, for example from - * vm_state_notify and the final object finalisation. Check we - * aren't already stopped before doing so. - */ - if (!vhost_dev_is_started(vhost_dev)) { + if (!k->set_guest_notifiers) { return; } diff --git a/include/hw/virtio/vhost-user-gpio.h b/include/hw/virtio/vhost-user-gpio.h index 4fe9aeecc0..a9305c5e6c 100644 --- a/include/hw/virtio/vhost-user-gpio.h +++ b/include/hw/virtio/vhost-user-gpio.h @@ -28,7 +28,17 @@ struct VHostUserGPIO { VhostUserState vhost_user; VirtQueue *command_vq; VirtQueue *interrupt_vq; + /** + * There are at least two steps of initialization of the + * vhost-user device. The first is a "connect" step and + * second is a "start" step. Make a separation between + * those initialization phases by using two fields. + * + * @connected: see vu_gpio_connect()/vu_gpio_disconnect() + * @started_vu: see vu_gpio_start()/vu_gpio_stop() + */ bool connected; + bool started_vu; /*< public >*/ }; From 71e076a07dc195129fe25d90d4b276be3b2f12d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Wed, 30 Nov 2022 11:24:38 +0000 Subject: [PATCH 57/71] hw/virtio: generalise CHR_EVENT_CLOSED handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ..and use for both virtio-user-blk and virtio-user-gpio. This avoids the circular close by deferring shutdown due to disconnection until a later point. virtio-user-blk already had this mechanism in place so generalise it as a vhost-user helper function and use for both blk and gpio devices. While we are at it we also fix up vhost-user-gpio to re-establish the event handler after close down so we can reconnect later. Signed-off-by: Alex Bennée Reviewed-by: Michael S. Tsirkin Reviewed-by: Raphael Norwitz Message-Id: <20221130112439.2527228-5-alex.bennee@linaro.org> Signed-off-by: Michael S. Tsirkin --- hw/block/vhost-user-blk.c | 41 +++----------------- hw/virtio/vhost-user-gpio.c | 11 +++++- hw/virtio/vhost-user.c | 71 ++++++++++++++++++++++++++++++++++ include/hw/virtio/vhost-user.h | 18 +++++++++ 4 files changed, 104 insertions(+), 37 deletions(-) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 1177064631..aff4d2b8cb 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -369,17 +369,10 @@ static void vhost_user_blk_disconnect(DeviceState *dev) vhost_user_blk_stop(vdev); vhost_dev_cleanup(&s->dev); -} -static void vhost_user_blk_chr_closed_bh(void *opaque) -{ - DeviceState *dev = opaque; - VirtIODevice *vdev = VIRTIO_DEVICE(dev); - VHostUserBlk *s = VHOST_USER_BLK(vdev); - - vhost_user_blk_disconnect(dev); + /* Re-instate the event handler for new connections */ qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, vhost_user_blk_event, - NULL, opaque, NULL, true); + NULL, dev, NULL, true); } static void vhost_user_blk_event(void *opaque, QEMUChrEvent event) @@ -398,33 +391,9 @@ static void vhost_user_blk_event(void *opaque, QEMUChrEvent event) } break; case CHR_EVENT_CLOSED: - if (!runstate_check(RUN_STATE_SHUTDOWN)) { - /* - * A close event may happen during a read/write, but vhost - * code assumes the vhost_dev remains setup, so delay the - * stop & clear. - */ - AioContext *ctx = qemu_get_current_aio_context(); - - qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, NULL, NULL, - NULL, NULL, false); - aio_bh_schedule_oneshot(ctx, vhost_user_blk_chr_closed_bh, opaque); - - /* - * Move vhost device to the stopped state. The vhost-user device - * will be clean up and disconnected in BH. This can be useful in - * the vhost migration code. If disconnect was caught there is an - * option for the general vhost code to get the dev state without - * knowing its type (in this case vhost-user). - * - * FIXME: this is sketchy to be reaching into vhost_dev - * now because we are forcing something that implies we - * have executed vhost_dev_stop() but that won't happen - * until vhost_user_blk_stop() gets called from the bh. - * Really this state check should be tracked locally. - */ - s->dev.started = false; - } + /* defer close until later to avoid circular close */ + vhost_user_async_close(dev, &s->chardev, &s->dev, + vhost_user_blk_disconnect); break; case CHR_EVENT_BREAK: case CHR_EVENT_MUX_IN: diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c index be9be08b4c..b7b82a1099 100644 --- a/hw/virtio/vhost-user-gpio.c +++ b/hw/virtio/vhost-user-gpio.c @@ -233,6 +233,8 @@ static int vu_gpio_connect(DeviceState *dev, Error **errp) return 0; } +static void vu_gpio_event(void *opaque, QEMUChrEvent event); + static void vu_gpio_disconnect(DeviceState *dev) { VirtIODevice *vdev = VIRTIO_DEVICE(dev); @@ -245,6 +247,11 @@ static void vu_gpio_disconnect(DeviceState *dev) vu_gpio_stop(vdev); vhost_dev_cleanup(&gpio->vhost_dev); + + /* Re-instate the event handler for new connections */ + qemu_chr_fe_set_handlers(&gpio->chardev, + NULL, NULL, vu_gpio_event, + NULL, dev, NULL, true); } static void vu_gpio_event(void *opaque, QEMUChrEvent event) @@ -262,7 +269,9 @@ static void vu_gpio_event(void *opaque, QEMUChrEvent event) } break; case CHR_EVENT_CLOSED: - vu_gpio_disconnect(dev); + /* defer close until later to avoid circular close */ + vhost_user_async_close(dev, &gpio->chardev, &gpio->vhost_dev, + vu_gpio_disconnect); break; case CHR_EVENT_BREAK: case CHR_EVENT_MUX_IN: diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index abe23d4ebe..8f635844af 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -21,6 +21,7 @@ #include "qemu/error-report.h" #include "qemu/main-loop.h" #include "qemu/sockets.h" +#include "sysemu/runstate.h" #include "sysemu/cryptodev.h" #include "migration/migration.h" #include "migration/postcopy-ram.h" @@ -2670,6 +2671,76 @@ void vhost_user_cleanup(VhostUserState *user) user->chr = NULL; } + +typedef struct { + vu_async_close_fn cb; + DeviceState *dev; + CharBackend *cd; + struct vhost_dev *vhost; +} VhostAsyncCallback; + +static void vhost_user_async_close_bh(void *opaque) +{ + VhostAsyncCallback *data = opaque; + struct vhost_dev *vhost = data->vhost; + + /* + * If the vhost_dev has been cleared in the meantime there is + * nothing left to do as some other path has completed the + * cleanup. + */ + if (vhost->vdev) { + data->cb(data->dev); + } + + g_free(data); +} + +/* + * We only schedule the work if the machine is running. If suspended + * we want to keep all the in-flight data as is for migration + * purposes. + */ +void vhost_user_async_close(DeviceState *d, + CharBackend *chardev, struct vhost_dev *vhost, + vu_async_close_fn cb) +{ + if (!runstate_check(RUN_STATE_SHUTDOWN)) { + /* + * A close event may happen during a read/write, but vhost + * code assumes the vhost_dev remains setup, so delay the + * stop & clear. + */ + AioContext *ctx = qemu_get_current_aio_context(); + VhostAsyncCallback *data = g_new0(VhostAsyncCallback, 1); + + /* Save data for the callback */ + data->cb = cb; + data->dev = d; + data->cd = chardev; + data->vhost = vhost; + + /* Disable any further notifications on the chardev */ + qemu_chr_fe_set_handlers(chardev, + NULL, NULL, NULL, NULL, NULL, NULL, + false); + + aio_bh_schedule_oneshot(ctx, vhost_user_async_close_bh, data); + + /* + * Move vhost device to the stopped state. The vhost-user device + * will be clean up and disconnected in BH. This can be useful in + * the vhost migration code. If disconnect was caught there is an + * option for the general vhost code to get the dev state without + * knowing its type (in this case vhost-user). + * + * Note if the vhost device is fully cleared by the time we + * execute the bottom half we won't continue with the cleanup. + */ + vhost->started = false; + } +} + static int vhost_user_dev_start(struct vhost_dev *dev, bool started) { if (!virtio_has_feature(dev->protocol_features, diff --git a/include/hw/virtio/vhost-user.h b/include/hw/virtio/vhost-user.h index c6e693cd3f..191216a74f 100644 --- a/include/hw/virtio/vhost-user.h +++ b/include/hw/virtio/vhost-user.h @@ -68,4 +68,22 @@ bool vhost_user_init(VhostUserState *user, CharBackend *chr, Error **errp); */ void vhost_user_cleanup(VhostUserState *user); +/** + * vhost_user_async_close() - cleanup vhost-user post connection drop + * @d: DeviceState for the associated device (passed to callback) + * @chardev: the CharBackend associated with the connection + * @vhost: the common vhost device + * @cb: the user callback function to complete the clean-up + * + * This function is used to handle the shutdown of a vhost-user + * connection to a backend. We handle this centrally to make sure we + * do all the steps and handle potential races due to VM shutdowns. + * Once the connection is disabled we call a backhalf to ensure + */ +typedef void (*vu_async_close_fn)(DeviceState *cb); + +void vhost_user_async_close(DeviceState *d, + CharBackend *chardev, struct vhost_dev *vhost, + vu_async_close_fn cb); + #endif From 4987e5bf2e9262094fd89d2b8e4d5bd6c4c7312f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Wed, 30 Nov 2022 11:24:39 +0000 Subject: [PATCH 58/71] include/hw: VM state takes precedence in virtio_device_should_start MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The VM status should always preempt the device status for these checks. This ensures the device is in the correct state when we suspend the VM prior to migrations. This restores the checks to the order they where in before the refactoring moved things around. While we are at it lets improve our documentation of the various fields involved and document the two functions. Fixes: 9f6bcfd99f (hw/virtio: move vm_running check to virtio_device_started) Fixes: 259d69c00b (hw/virtio: introduce virtio_device_should_start) Signed-off-by: Alex Bennée Tested-by: Christian Borntraeger Reviewed-by: Michael S. Tsirkin Message-Id: <20221130112439.2527228-6-alex.bennee@linaro.org> Signed-off-by: Michael S. Tsirkin --- include/hw/virtio/virtio.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index a973811cbf..acfd4df125 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -116,6 +116,13 @@ struct VirtIODevice bool broken; /* device in invalid state, needs reset */ bool use_disabled_flag; /* allow use of 'disable' flag when needed */ bool disabled; /* device in temporarily disabled state */ + /** + * @use_started: true if the @started flag should be used to check the + * current state of the VirtIO device. Otherwise status bits + * should be checked for a current status of the device. + * @use_started is only set via QMP and defaults to true for all + * modern machines (since 4.1). + */ bool use_started; bool started; bool start_on_kick; /* when virtio 1.0 feature has not been negotiated */ @@ -391,6 +398,16 @@ static inline bool virtio_is_big_endian(VirtIODevice *vdev) return false; } +/** + * virtio_device_started() - check if device started + * @vdev - the VirtIO device + * @status - the devices status bits + * + * Check if the device is started. For most modern machines this is + * tracked via the @vdev->started field (to support migration), + * otherwise we check for the final negotiated status bit that + * indicates everything is ready. + */ static inline bool virtio_device_started(VirtIODevice *vdev, uint8_t status) { if (vdev->use_started) { @@ -411,15 +428,11 @@ static inline bool virtio_device_started(VirtIODevice *vdev, uint8_t status) */ static inline bool virtio_device_should_start(VirtIODevice *vdev, uint8_t status) { - if (vdev->use_started) { - return vdev->started; - } - if (!vdev->vm_running) { return false; } - return status & VIRTIO_CONFIG_S_DRIVER_OK; + return virtio_device_started(vdev, status); } static inline void virtio_set_started(VirtIODevice *vdev, bool started) From 433c71e494ec66a7455b8ef2e6b2b42118426e50 Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Thu, 10 Nov 2022 07:59:40 +0100 Subject: [PATCH 59/71] hw/nvme: fix aio cancel in format There are several bugs in the async cancel code for the Format command. Firstly, cancelling a format operation neglects to set iocb->ret as well as clearing the iocb->aiocb after cancelling the underlying aiocb which causes the aio callback to ignore the cancellation. Trivial fix. Secondly, and worse, because the request is queued up for posting to the CQ in a bottom half, if the cancellation is due to the submission queue being deleted (which calls blk_aio_cancel), the req structure is deallocated in nvme_del_sq prior to the bottom half being schedulued. Fix this by simply removing the bottom half, there is no reason to defer it anyway. Fixes: 3bcf26d3d619 ("hw/nvme: reimplement format nvm to allow cancellation") Reported-by: Jonathan Derrick Reviewed-by: Keith Busch Signed-off-by: Klaus Jensen --- hw/nvme/ctrl.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index ac3885ce50..9bc56075f6 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -5741,7 +5741,6 @@ static uint16_t nvme_ns_attachment(NvmeCtrl *n, NvmeRequest *req) typedef struct NvmeFormatAIOCB { BlockAIOCB common; BlockAIOCB *aiocb; - QEMUBH *bh; NvmeRequest *req; int ret; @@ -5756,14 +5755,15 @@ typedef struct NvmeFormatAIOCB { uint8_t pil; } NvmeFormatAIOCB; -static void nvme_format_bh(void *opaque); - static void nvme_format_cancel(BlockAIOCB *aiocb) { NvmeFormatAIOCB *iocb = container_of(aiocb, NvmeFormatAIOCB, common); + iocb->ret = -ECANCELED; + if (iocb->aiocb) { blk_aio_cancel_async(iocb->aiocb); + iocb->aiocb = NULL; } } @@ -5787,13 +5787,17 @@ static void nvme_format_set(NvmeNamespace *ns, uint8_t lbaf, uint8_t mset, nvme_ns_init_format(ns); } +static void nvme_do_format(NvmeFormatAIOCB *iocb); + static void nvme_format_ns_cb(void *opaque, int ret) { NvmeFormatAIOCB *iocb = opaque; NvmeNamespace *ns = iocb->ns; int bytes; - if (ret < 0) { + if (iocb->ret < 0) { + goto done; + } else if (ret < 0) { iocb->ret = ret; goto done; } @@ -5817,8 +5821,7 @@ static void nvme_format_ns_cb(void *opaque, int ret) iocb->offset = 0; done: - iocb->aiocb = NULL; - qemu_bh_schedule(iocb->bh); + nvme_do_format(iocb); } static uint16_t nvme_format_check(NvmeNamespace *ns, uint8_t lbaf, uint8_t pi) @@ -5842,9 +5845,8 @@ static uint16_t nvme_format_check(NvmeNamespace *ns, uint8_t lbaf, uint8_t pi) return NVME_SUCCESS; } -static void nvme_format_bh(void *opaque) +static void nvme_do_format(NvmeFormatAIOCB *iocb) { - NvmeFormatAIOCB *iocb = opaque; NvmeRequest *req = iocb->req; NvmeCtrl *n = nvme_ctrl(req); uint32_t dw10 = le32_to_cpu(req->cmd.cdw10); @@ -5882,11 +5884,7 @@ static void nvme_format_bh(void *opaque) return; done: - qemu_bh_delete(iocb->bh); - iocb->bh = NULL; - iocb->common.cb(iocb->common.opaque, iocb->ret); - qemu_aio_unref(iocb); } @@ -5905,7 +5903,6 @@ static uint16_t nvme_format(NvmeCtrl *n, NvmeRequest *req) iocb = qemu_aio_get(&nvme_format_aiocb_info, NULL, nvme_misc_cb, req); iocb->req = req; - iocb->bh = qemu_bh_new(nvme_format_bh, iocb); iocb->ret = 0; iocb->ns = NULL; iocb->nsid = 0; @@ -5934,14 +5931,13 @@ static uint16_t nvme_format(NvmeCtrl *n, NvmeRequest *req) } req->aiocb = &iocb->common; - qemu_bh_schedule(iocb->bh); + nvme_do_format(iocb); return NVME_NO_COMPLETE; out: - qemu_bh_delete(iocb->bh); - iocb->bh = NULL; qemu_aio_unref(iocb); + return status; } From 3dbc1708ea37d03dd18ce498039e31d8565e673a Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Thu, 10 Nov 2022 07:59:44 +0100 Subject: [PATCH 60/71] hw/nvme: fix aio cancel in flush Make sure that iocb->aiocb is NULL'ed when cancelling. Fix a potential use-after-free by removing the bottom half and enqueuing the completion directly. Fixes: 38f4ac65ac88 ("hw/nvme: reimplement flush to allow cancellation") Reviewed-by: Keith Busch Signed-off-by: Klaus Jensen --- hw/nvme/ctrl.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 9bc56075f6..fede5af6af 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -3160,7 +3160,6 @@ typedef struct NvmeFlushAIOCB { BlockAIOCB common; BlockAIOCB *aiocb; NvmeRequest *req; - QEMUBH *bh; int ret; NvmeNamespace *ns; @@ -3176,6 +3175,7 @@ static void nvme_flush_cancel(BlockAIOCB *acb) if (iocb->aiocb) { blk_aio_cancel_async(iocb->aiocb); + iocb->aiocb = NULL; } } @@ -3185,6 +3185,8 @@ static const AIOCBInfo nvme_flush_aiocb_info = { .get_aio_context = nvme_get_aio_context, }; +static void nvme_do_flush(NvmeFlushAIOCB *iocb); + static void nvme_flush_ns_cb(void *opaque, int ret) { NvmeFlushAIOCB *iocb = opaque; @@ -3206,13 +3208,11 @@ static void nvme_flush_ns_cb(void *opaque, int ret) } out: - iocb->aiocb = NULL; - qemu_bh_schedule(iocb->bh); + nvme_do_flush(iocb); } -static void nvme_flush_bh(void *opaque) +static void nvme_do_flush(NvmeFlushAIOCB *iocb) { - NvmeFlushAIOCB *iocb = opaque; NvmeRequest *req = iocb->req; NvmeCtrl *n = nvme_ctrl(req); int i; @@ -3239,14 +3239,8 @@ static void nvme_flush_bh(void *opaque) return; done: - qemu_bh_delete(iocb->bh); - iocb->bh = NULL; - iocb->common.cb(iocb->common.opaque, iocb->ret); - qemu_aio_unref(iocb); - - return; } static uint16_t nvme_flush(NvmeCtrl *n, NvmeRequest *req) @@ -3258,7 +3252,6 @@ static uint16_t nvme_flush(NvmeCtrl *n, NvmeRequest *req) iocb = qemu_aio_get(&nvme_flush_aiocb_info, NULL, nvme_misc_cb, req); iocb->req = req; - iocb->bh = qemu_bh_new(nvme_flush_bh, iocb); iocb->ret = 0; iocb->ns = NULL; iocb->nsid = 0; @@ -3280,13 +3273,11 @@ static uint16_t nvme_flush(NvmeCtrl *n, NvmeRequest *req) } req->aiocb = &iocb->common; - qemu_bh_schedule(iocb->bh); + nvme_do_flush(iocb); return NVME_NO_COMPLETE; out: - qemu_bh_delete(iocb->bh); - iocb->bh = NULL; qemu_aio_unref(iocb); return status; From 36a251c3468f34a2486dd49836e397534a1bb189 Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Thu, 10 Nov 2022 07:59:47 +0100 Subject: [PATCH 61/71] hw/nvme: fix aio cancel in zone reset If the zone reset operation is cancelled but the block unmap operation completes normally, the callback will continue resetting the next zone since it neglects to check iocb->ret which will have been set to -ECANCELED. Make sure that this is checked and bail out if an error is present. Secondly, fix a potential use-after-free by removing the bottom half and enqueuing the completion directly. Fixes: 63d96e4ffd71 ("hw/nvme: reimplement zone reset to allow cancellation") Reviewed-by: Keith Busch Signed-off-by: Klaus Jensen --- hw/nvme/ctrl.c | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index fede5af6af..bf4abf73f7 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -3712,7 +3712,6 @@ typedef struct NvmeZoneResetAIOCB { BlockAIOCB common; BlockAIOCB *aiocb; NvmeRequest *req; - QEMUBH *bh; int ret; bool all; @@ -3741,17 +3740,6 @@ static const AIOCBInfo nvme_zone_reset_aiocb_info = { .cancel_async = nvme_zone_reset_cancel, }; -static void nvme_zone_reset_bh(void *opaque) -{ - NvmeZoneResetAIOCB *iocb = opaque; - - iocb->common.cb(iocb->common.opaque, iocb->ret); - - qemu_bh_delete(iocb->bh); - iocb->bh = NULL; - qemu_aio_unref(iocb); -} - static void nvme_zone_reset_cb(void *opaque, int ret); static void nvme_zone_reset_epilogue_cb(void *opaque, int ret) @@ -3762,14 +3750,8 @@ static void nvme_zone_reset_epilogue_cb(void *opaque, int ret) int64_t moff; int count; - if (ret < 0) { - nvme_zone_reset_cb(iocb, ret); - return; - } - - if (!ns->lbaf.ms) { - nvme_zone_reset_cb(iocb, 0); - return; + if (ret < 0 || iocb->ret < 0 || !ns->lbaf.ms) { + goto out; } moff = nvme_moff(ns, iocb->zone->d.zslba); @@ -3779,6 +3761,9 @@ static void nvme_zone_reset_epilogue_cb(void *opaque, int ret) BDRV_REQ_MAY_UNMAP, nvme_zone_reset_cb, iocb); return; + +out: + nvme_zone_reset_cb(iocb, ret); } static void nvme_zone_reset_cb(void *opaque, int ret) @@ -3787,7 +3772,9 @@ static void nvme_zone_reset_cb(void *opaque, int ret) NvmeRequest *req = iocb->req; NvmeNamespace *ns = req->ns; - if (ret < 0) { + if (iocb->ret < 0) { + goto done; + } else if (ret < 0) { iocb->ret = ret; goto done; } @@ -3835,9 +3822,9 @@ static void nvme_zone_reset_cb(void *opaque, int ret) done: iocb->aiocb = NULL; - if (iocb->bh) { - qemu_bh_schedule(iocb->bh); - } + + iocb->common.cb(iocb->common.opaque, iocb->ret); + qemu_aio_unref(iocb); } static uint16_t nvme_zone_mgmt_send_zrwa_flush(NvmeCtrl *n, NvmeZone *zone, @@ -3942,7 +3929,6 @@ static uint16_t nvme_zone_mgmt_send(NvmeCtrl *n, NvmeRequest *req) nvme_misc_cb, req); iocb->req = req; - iocb->bh = qemu_bh_new(nvme_zone_reset_bh, iocb); iocb->ret = 0; iocb->all = all; iocb->idx = zone_idx; From 818b9b8f5efb728793b9a2c124adab371d2c16e5 Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Thu, 10 Nov 2022 07:59:50 +0100 Subject: [PATCH 62/71] hw/nvme: fix aio cancel in dsm When the DSM operation is cancelled asynchronously, we set iocb->ret to -ECANCELED. However, the callback function only checks the return value of the completed aio, which may have completed succesfully prior to the cancellation and thus the callback ends up continuing the dsm operation instead of bailing out. Fix this. Secondly, fix a potential use-after-free by removing the bottom half and enqueuing the completion directly. Fixes: d7d1474fd85d ("hw/nvme: reimplement dsm to allow cancellation") Reviewed-by: Keith Busch Signed-off-by: Klaus Jensen --- hw/nvme/ctrl.c | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index bf4abf73f7..e847b89461 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -2329,7 +2329,6 @@ typedef struct NvmeDSMAIOCB { BlockAIOCB common; BlockAIOCB *aiocb; NvmeRequest *req; - QEMUBH *bh; int ret; NvmeDsmRange *range; @@ -2351,7 +2350,7 @@ static void nvme_dsm_cancel(BlockAIOCB *aiocb) } else { /* * We only reach this if nvme_dsm_cancel() has already been called or - * the command ran to completion and nvme_dsm_bh is scheduled to run. + * the command ran to completion. */ assert(iocb->idx == iocb->nr); } @@ -2362,17 +2361,6 @@ static const AIOCBInfo nvme_dsm_aiocb_info = { .cancel_async = nvme_dsm_cancel, }; -static void nvme_dsm_bh(void *opaque) -{ - NvmeDSMAIOCB *iocb = opaque; - - iocb->common.cb(iocb->common.opaque, iocb->ret); - - qemu_bh_delete(iocb->bh); - iocb->bh = NULL; - qemu_aio_unref(iocb); -} - static void nvme_dsm_cb(void *opaque, int ret); static void nvme_dsm_md_cb(void *opaque, int ret) @@ -2384,16 +2372,10 @@ static void nvme_dsm_md_cb(void *opaque, int ret) uint64_t slba; uint32_t nlb; - if (ret < 0) { - iocb->ret = ret; + if (ret < 0 || iocb->ret < 0 || !ns->lbaf.ms) { goto done; } - if (!ns->lbaf.ms) { - nvme_dsm_cb(iocb, 0); - return; - } - range = &iocb->range[iocb->idx - 1]; slba = le64_to_cpu(range->slba); nlb = le32_to_cpu(range->nlb); @@ -2406,7 +2388,6 @@ static void nvme_dsm_md_cb(void *opaque, int ret) ret = nvme_block_status_all(ns, slba, nlb, BDRV_BLOCK_ZERO); if (ret) { if (ret < 0) { - iocb->ret = ret; goto done; } @@ -2420,8 +2401,7 @@ static void nvme_dsm_md_cb(void *opaque, int ret) return; done: - iocb->aiocb = NULL; - qemu_bh_schedule(iocb->bh); + nvme_dsm_cb(iocb, ret); } static void nvme_dsm_cb(void *opaque, int ret) @@ -2434,7 +2414,9 @@ static void nvme_dsm_cb(void *opaque, int ret) uint64_t slba; uint32_t nlb; - if (ret < 0) { + if (iocb->ret < 0) { + goto done; + } else if (ret < 0) { iocb->ret = ret; goto done; } @@ -2468,7 +2450,8 @@ next: done: iocb->aiocb = NULL; - qemu_bh_schedule(iocb->bh); + iocb->common.cb(iocb->common.opaque, iocb->ret); + qemu_aio_unref(iocb); } static uint16_t nvme_dsm(NvmeCtrl *n, NvmeRequest *req) @@ -2486,7 +2469,6 @@ static uint16_t nvme_dsm(NvmeCtrl *n, NvmeRequest *req) nvme_misc_cb, req); iocb->req = req; - iocb->bh = qemu_bh_new(nvme_dsm_bh, iocb); iocb->ret = 0; iocb->range = g_new(NvmeDsmRange, nr); iocb->nr = nr; From 83f56ac321ca2301f00e63b6acbde5c692916a1d Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Thu, 14 Jul 2022 09:37:20 +0200 Subject: [PATCH 63/71] hw/nvme: remove copy bh scheduling Fix a potential use-after-free by removing the bottom half and enqueuing the completion directly. Fixes: 796d20681d9b ("hw/nvme: reimplement the copy command to allow aio cancellation") Reviewed-by: Keith Busch Signed-off-by: Klaus Jensen --- hw/nvme/ctrl.c | 63 +++++++++++--------------------------------------- 1 file changed, 14 insertions(+), 49 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index e847b89461..e54276dc1d 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -2552,7 +2552,6 @@ typedef struct NvmeCopyAIOCB { BlockAIOCB common; BlockAIOCB *aiocb; NvmeRequest *req; - QEMUBH *bh; int ret; void *ranges; @@ -2590,9 +2589,8 @@ static const AIOCBInfo nvme_copy_aiocb_info = { .cancel_async = nvme_copy_cancel, }; -static void nvme_copy_bh(void *opaque) +static void nvme_copy_done(NvmeCopyAIOCB *iocb) { - NvmeCopyAIOCB *iocb = opaque; NvmeRequest *req = iocb->req; NvmeNamespace *ns = req->ns; BlockAcctStats *stats = blk_get_stats(ns->blkconf.blk); @@ -2604,9 +2602,6 @@ static void nvme_copy_bh(void *opaque) qemu_iovec_destroy(&iocb->iov); g_free(iocb->bounce); - qemu_bh_delete(iocb->bh); - iocb->bh = NULL; - if (iocb->ret < 0) { block_acct_failed(stats, &iocb->acct.read); block_acct_failed(stats, &iocb->acct.write); @@ -2619,7 +2614,7 @@ static void nvme_copy_bh(void *opaque) qemu_aio_unref(iocb); } -static void nvme_copy_cb(void *opaque, int ret); +static void nvme_do_copy(NvmeCopyAIOCB *iocb); static void nvme_copy_source_range_parse_format0(void *ranges, int idx, uint64_t *slba, uint32_t *nlb, @@ -2731,7 +2726,7 @@ static void nvme_copy_out_completed_cb(void *opaque, int ret) iocb->idx++; iocb->slba += nlb; out: - nvme_copy_cb(iocb, iocb->ret); + nvme_do_copy(iocb); } static void nvme_copy_out_cb(void *opaque, int ret) @@ -2743,16 +2738,8 @@ static void nvme_copy_out_cb(void *opaque, int ret) size_t mlen; uint8_t *mbounce; - if (ret < 0) { - iocb->ret = ret; + if (ret < 0 || iocb->ret < 0 || !ns->lbaf.ms) { goto out; - } else if (iocb->ret < 0) { - goto out; - } - - if (!ns->lbaf.ms) { - nvme_copy_out_completed_cb(iocb, 0); - return; } nvme_copy_source_range_parse(iocb->ranges, iocb->idx, iocb->format, NULL, @@ -2771,7 +2758,7 @@ static void nvme_copy_out_cb(void *opaque, int ret) return; out: - nvme_copy_cb(iocb, ret); + nvme_copy_out_completed_cb(iocb, ret); } static void nvme_copy_in_completed_cb(void *opaque, int ret) @@ -2865,15 +2852,9 @@ static void nvme_copy_in_completed_cb(void *opaque, int ret) invalid: req->status = status; - iocb->aiocb = NULL; - if (iocb->bh) { - qemu_bh_schedule(iocb->bh); - } - - return; - + iocb->ret = -1; out: - nvme_copy_cb(iocb, ret); + nvme_do_copy(iocb); } static void nvme_copy_in_cb(void *opaque, int ret) @@ -2884,16 +2865,8 @@ static void nvme_copy_in_cb(void *opaque, int ret) uint64_t slba; uint32_t nlb; - if (ret < 0) { - iocb->ret = ret; + if (ret < 0 || iocb->ret < 0 || !ns->lbaf.ms) { goto out; - } else if (iocb->ret < 0) { - goto out; - } - - if (!ns->lbaf.ms) { - nvme_copy_in_completed_cb(iocb, 0); - return; } nvme_copy_source_range_parse(iocb->ranges, iocb->idx, iocb->format, &slba, @@ -2909,12 +2882,11 @@ static void nvme_copy_in_cb(void *opaque, int ret) return; out: - nvme_copy_cb(iocb, iocb->ret); + nvme_copy_in_completed_cb(iocb, ret); } -static void nvme_copy_cb(void *opaque, int ret) +static void nvme_do_copy(NvmeCopyAIOCB *iocb) { - NvmeCopyAIOCB *iocb = opaque; NvmeRequest *req = iocb->req; NvmeNamespace *ns = req->ns; uint64_t slba; @@ -2922,10 +2894,7 @@ static void nvme_copy_cb(void *opaque, int ret) size_t len; uint16_t status; - if (ret < 0) { - iocb->ret = ret; - goto done; - } else if (iocb->ret < 0) { + if (iocb->ret < 0) { goto done; } @@ -2972,14 +2941,11 @@ static void nvme_copy_cb(void *opaque, int ret) invalid: req->status = status; + iocb->ret = -1; done: - iocb->aiocb = NULL; - if (iocb->bh) { - qemu_bh_schedule(iocb->bh); - } + nvme_copy_done(iocb); } - static uint16_t nvme_copy(NvmeCtrl *n, NvmeRequest *req) { NvmeNamespace *ns = req->ns; @@ -3049,7 +3015,6 @@ static uint16_t nvme_copy(NvmeCtrl *n, NvmeRequest *req) } iocb->req = req; - iocb->bh = qemu_bh_new(nvme_copy_bh, iocb); iocb->ret = 0; iocb->nr = nr; iocb->idx = 0; @@ -3066,7 +3031,7 @@ static uint16_t nvme_copy(NvmeCtrl *n, NvmeRequest *req) BLOCK_ACCT_WRITE); req->aiocb = &iocb->common; - nvme_copy_cb(iocb, 0); + nvme_do_copy(iocb); return NVME_NO_COMPLETE; From 38e65936a8df1c9e7f5d19eae38a42133fab844b Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 30 Nov 2022 15:16:57 +0100 Subject: [PATCH 64/71] target/i386: allow MMX instructions with CR4.OSFXSR=0 MMX state is saved/restored by FSAVE/FRSTOR so the instructions are not illegal opcodes even if CR4.OSFXSR=0. Make sure that validate_vex takes into account the prefix and only checks HF_OSFXSR_MASK in the presence of an SSE instruction. Fixes: 20581aadec5e ("target/i386: validate VEX prefixes via the instructions' exception classes", 2022-10-18) Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1350 Reported-by: Helge Konetzka (@hejko on gitlab.com) Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/decode-new.c.inc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.c.inc index e4878b967f..80c579164f 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -1488,7 +1488,8 @@ static bool validate_vex(DisasContext *s, X86DecodedInsn *decode) if (!(s->flags & HF_AVX_EN_MASK)) { goto illegal; } - } else { + } else if (e->special != X86_SPECIAL_MMX || + (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ | PREFIX_DATA))) { if (!(s->flags & HF_OSFXSR_MASK)) { goto illegal; } From 8218c048be1567db9dfd3cf1e19fbff76bce8cfd Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 30 Nov 2022 23:45:22 -0800 Subject: [PATCH 65/71] target/i386: Always completely initialize TranslateFault In get_physical_address, the canonical address check failed to set TranslateFault.stage2, which resulted in an uninitialized read from the struct when reporting the fault in x86_cpu_tlb_fill. Adjust all error paths to use structure assignment so that the entire struct is always initialized. Reported-by: Daniel Hoffman Fixes: 9bbcf372193a ("target/i386: Reorg GET_HPHYS") Signed-off-by: Richard Henderson Message-Id: <20221201074522.178498-1-richard.henderson@linaro.org> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1324 Signed-off-by: Paolo Bonzini --- target/i386/tcg/sysemu/excp_helper.c | 34 ++++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c index 405a5d414a..55bd1194d3 100644 --- a/target/i386/tcg/sysemu/excp_helper.c +++ b/target/i386/tcg/sysemu/excp_helper.c @@ -71,10 +71,11 @@ static bool ptw_translate(PTETranslate *inout, hwaddr addr) TranslateFault *err = inout->err; assert(inout->ptw_idx == MMU_NESTED_IDX); - err->exception_index = 0; /* unused */ - err->error_code = inout->env->error_code; - err->cr2 = addr; - err->stage2 = S2_GPT; + *err = (TranslateFault){ + .error_code = inout->env->error_code, + .cr2 = addr, + .stage2 = S2_GPT, + }; return false; } return true; @@ -431,10 +432,11 @@ do_check_protect_pse36: MMU_NESTED_IDX, true, &pte_trans.haddr, &full, 0); if (unlikely(flags & TLB_INVALID_MASK)) { - err->exception_index = 0; /* unused */ - err->error_code = env->error_code; - err->cr2 = paddr; - err->stage2 = S2_GPA; + *err = (TranslateFault){ + .error_code = env->error_code, + .cr2 = paddr, + .stage2 = S2_GPA, + }; return false; } @@ -494,10 +496,11 @@ do_check_protect_pse36: } break; } - err->exception_index = EXCP0E_PAGE; - err->error_code = error_code; - err->cr2 = addr; - err->stage2 = S2_NONE; + *err = (TranslateFault){ + .exception_index = EXCP0E_PAGE, + .error_code = error_code, + .cr2 = addr, + }; return false; } @@ -564,9 +567,10 @@ static bool get_physical_address(CPUX86State *env, vaddr addr, int shift = in.pg_mode & PG_MODE_LA57 ? 56 : 47; int64_t sext = (int64_t)addr >> shift; if (sext != 0 && sext != -1) { - err->exception_index = EXCP0D_GPF; - err->error_code = 0; - err->cr2 = addr; + *err = (TranslateFault){ + .exception_index = EXCP0D_GPF, + .cr2 = addr, + }; return false; } } From 14dccc8ea6ece7ee63273144fb55e4770a05e0fd Mon Sep 17 00:00:00 2001 From: Xiaojuan Yang Date: Mon, 7 Nov 2022 10:09:47 +0800 Subject: [PATCH 66/71] hw/loongarch/virt: Add cfi01 pflash device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add cfi01 pflash device for LoongArch virt machine Signed-off-by: Xiaojuan Yang Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221130100647.398565-1-yangxiaojuan@loongson.cn> Signed-off-by: Song Gao --- hw/loongarch/Kconfig | 1 + hw/loongarch/acpi-build.c | 18 +++++++++++ hw/loongarch/virt.c | 62 +++++++++++++++++++++++++++++++++++++ include/hw/loongarch/virt.h | 5 +++ 4 files changed, 86 insertions(+) diff --git a/hw/loongarch/Kconfig b/hw/loongarch/Kconfig index 17d15b6c90..eb112af990 100644 --- a/hw/loongarch/Kconfig +++ b/hw/loongarch/Kconfig @@ -20,3 +20,4 @@ config LOONGARCH_VIRT select ACPI_HW_REDUCED select FW_CFG_DMA select DIMM + select PFLASH_CFI01 diff --git a/hw/loongarch/acpi-build.c b/hw/loongarch/acpi-build.c index 7d5f5a757d..c2b237736d 100644 --- a/hw/loongarch/acpi-build.c +++ b/hw/loongarch/acpi-build.c @@ -279,6 +279,23 @@ static void build_pci_device_aml(Aml *scope, LoongArchMachineState *lams) acpi_dsdt_add_gpex(scope, &cfg); } +static void build_flash_aml(Aml *scope, LoongArchMachineState *lams) +{ + Aml *dev, *crs; + + hwaddr flash_base = VIRT_FLASH_BASE; + hwaddr flash_size = VIRT_FLASH_SIZE; + + dev = aml_device("FLS0"); + aml_append(dev, aml_name_decl("_HID", aml_string("LNRO0015"))); + aml_append(dev, aml_name_decl("_UID", aml_int(0))); + + crs = aml_resource_template(); + aml_append(crs, aml_memory32_fixed(flash_base, flash_size, AML_READ_WRITE)); + aml_append(dev, aml_name_decl("_CRS", crs)); + aml_append(scope, dev); +} + #ifdef CONFIG_TPM static void acpi_dsdt_add_tpm(Aml *scope, LoongArchMachineState *vms) { @@ -328,6 +345,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, MachineState *machine) build_uart_device_aml(dsdt); build_pci_device_aml(dsdt, lams); build_la_ged_aml(dsdt, machine); + build_flash_aml(dsdt, lams); #ifdef CONFIG_TPM acpi_dsdt_add_tpm(dsdt, lams); #endif diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 958be74fa1..c8a495ea30 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -42,6 +42,63 @@ #include "hw/display/ramfb.h" #include "hw/mem/pc-dimm.h" #include "sysemu/tpm.h" +#include "sysemu/block-backend.h" +#include "hw/block/flash.h" + +static void virt_flash_create(LoongArchMachineState *lams) +{ + DeviceState *dev = qdev_new(TYPE_PFLASH_CFI01); + + qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE); + qdev_prop_set_uint8(dev, "width", 4); + qdev_prop_set_uint8(dev, "device-width", 2); + qdev_prop_set_bit(dev, "big-endian", false); + qdev_prop_set_uint16(dev, "id0", 0x89); + qdev_prop_set_uint16(dev, "id1", 0x18); + qdev_prop_set_uint16(dev, "id2", 0x00); + qdev_prop_set_uint16(dev, "id3", 0x00); + qdev_prop_set_string(dev, "name", "virt.flash"); + object_property_add_child(OBJECT(lams), "virt.flash", OBJECT(dev)); + object_property_add_alias(OBJECT(lams), "pflash", + OBJECT(dev), "drive"); + + lams->flash = PFLASH_CFI01(dev); +} + +static void virt_flash_map(LoongArchMachineState *lams, + MemoryRegion *sysmem) +{ + PFlashCFI01 *flash = lams->flash; + DeviceState *dev = DEVICE(flash); + hwaddr base = VIRT_FLASH_BASE; + hwaddr size = VIRT_FLASH_SIZE; + + assert(QEMU_IS_ALIGNED(size, VIRT_FLASH_SECTOR_SIZE)); + assert(size / VIRT_FLASH_SECTOR_SIZE <= UINT32_MAX); + + qdev_prop_set_uint32(dev, "num-blocks", size / VIRT_FLASH_SECTOR_SIZE); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + memory_region_add_subregion(sysmem, base, + sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0)); + +} + +static void fdt_add_flash_node(LoongArchMachineState *lams) +{ + MachineState *ms = MACHINE(lams); + char *nodename; + + hwaddr flash_base = VIRT_FLASH_BASE; + hwaddr flash_size = VIRT_FLASH_SIZE; + + nodename = g_strdup_printf("/flash@%" PRIx64, flash_base); + qemu_fdt_add_subnode(ms->fdt, nodename); + qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "cfi-flash"); + qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", + 2, flash_base, 2, flash_size); + qemu_fdt_setprop_cell(ms->fdt, nodename, "bank-width", 4); + g_free(nodename); +} static void fdt_add_rtc_node(LoongArchMachineState *lams) { @@ -596,6 +653,9 @@ static void loongarch_firmware_init(LoongArchMachineState *lams) int bios_size; lams->bios_loaded = false; + + virt_flash_map(lams, get_system_memory()); + if (filename) { bios_name = qemu_find_file(QEMU_FILE_TYPE_BIOS, filename); if (!bios_name) { @@ -779,6 +839,7 @@ static void loongarch_init(MachineState *machine) loongarch_direct_kernel_boot(lams); } } + fdt_add_flash_node(lams); /* register reset function */ for (i = 0; i < machine->smp.cpus; i++) { lacpu = LOONGARCH_CPU(qemu_get_cpu(i)); @@ -838,6 +899,7 @@ static void loongarch_machine_initfn(Object *obj) lams->acpi = ON_OFF_AUTO_AUTO; lams->oem_id = g_strndup(ACPI_BUILD_APPNAME6, 6); lams->oem_table_id = g_strndup(ACPI_BUILD_APPNAME8, 8); + virt_flash_create(lams); } static bool memhp_type_supported(DeviceState *dev) diff --git a/include/hw/loongarch/virt.h b/include/hw/loongarch/virt.h index 45c383f5a7..f5f818894e 100644 --- a/include/hw/loongarch/virt.h +++ b/include/hw/loongarch/virt.h @@ -12,6 +12,7 @@ #include "hw/boards.h" #include "qemu/queue.h" #include "hw/intc/loongarch_ipi.h" +#include "hw/block/flash.h" #define LOONGARCH_MAX_VCPUS 4 @@ -20,6 +21,9 @@ #define VIRT_FWCFG_BASE 0x1e020000UL #define VIRT_BIOS_BASE 0x1c000000UL #define VIRT_BIOS_SIZE (4 * MiB) +#define VIRT_FLASH_SECTOR_SIZE (128 * KiB) +#define VIRT_FLASH_BASE 0x1d000000UL +#define VIRT_FLASH_SIZE (16 * MiB) #define VIRT_LOWMEM_BASE 0 #define VIRT_LOWMEM_SIZE 0x10000000 @@ -48,6 +52,7 @@ struct LoongArchMachineState { int fdt_size; DeviceState *platform_bus_dev; PCIBus *pci_bus; + PFlashCFI01 *flash; }; #define TYPE_LOONGARCH_MACHINE MACHINE_TYPE_NAME("virt") From 0f0a9e4e5c38c45ca7e6ac09cb36db21d42ec6dd Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Nov 2022 09:30:54 +0100 Subject: [PATCH 67/71] tests/qtest/migration-test: Fix unlink error and memory leaks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When running the migration test compiled with Clang from Fedora 37 and sanitizers enabled, there is an error complaining about unlink(): ../tests/qtest/migration-test.c:1072:12: runtime error: null pointer passed as argument 1, which is declared to never be null /usr/include/unistd.h:858:48: note: nonnull attribute specified here SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../tests/qtest/migration-test.c:1072:12 in (test program exited with status code 1) TAP parsing error: Too few tests run (expected 33, got 20) The data->clientcert and data->clientkey pointers can indeed be unset in some tests, so we have to check them before calling unlink() with those. While we're at it, I also noticed that the code is only freeing some but not all of the allocated strings in this function, and indeed, valgrind is also complaining about memory leaks here. So let's call g_free() on all allocated strings to avoid leaking memory here. Message-Id: <20221125083054.117504-1-thuth@redhat.com> Tested-by: Bin Meng Reviewed-by: Daniel P. Berrangé Reviewed-by: Juan Quintela Signed-off-by: Thomas Huth --- tests/qtest/migration-test.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c index 442998d9eb..dbde726adf 100644 --- a/tests/qtest/migration-test.c +++ b/tests/qtest/migration-test.c @@ -1066,15 +1066,27 @@ test_migrate_tls_x509_finish(QTestState *from, TestMigrateTLSX509Data *data = opaque; test_tls_cleanup(data->keyfile); - unlink(data->cacert); - unlink(data->servercert); - unlink(data->serverkey); - unlink(data->clientcert); - unlink(data->clientkey); - rmdir(data->workdir); - - g_free(data->workdir); g_free(data->keyfile); + + unlink(data->cacert); + g_free(data->cacert); + unlink(data->servercert); + g_free(data->servercert); + unlink(data->serverkey); + g_free(data->serverkey); + + if (data->clientcert) { + unlink(data->clientcert); + g_free(data->clientcert); + } + if (data->clientkey) { + unlink(data->clientkey); + g_free(data->clientkey); + } + + rmdir(data->workdir); + g_free(data->workdir); + g_free(data); } #endif /* CONFIG_TASN1 */ From 21be74a9a59d1e4954ebb59dcbee0fda0b19de00 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 1 Dec 2022 19:44:43 +0100 Subject: [PATCH 68/71] target/s390x/tcg: Fix and improve the SACF instruction The SET ADDRESS SPACE CONTROL FAST instruction is not privileged, it can be used from problem space, too. Just the switching to the home address space is privileged and should still generate a privilege exception. This bug is e.g. causing programs like Java that use the "getcpu" vdso kernel function to crash (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990417#26 ). While we're at it, also check if DAT is not enabled. In that case the instruction is supposed to generate a special operation exception. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/655 Message-Id: <20221201184443.136355-1-thuth@redhat.com> Reviewed-by: Ilya Leoshkevich Reviewed-by: David Hildenbrand Reviewed-by: Richard Henderson Signed-off-by: Thomas Huth --- target/s390x/tcg/cc_helper.c | 7 +++++++ target/s390x/tcg/insn-data.h.inc | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/target/s390x/tcg/cc_helper.c b/target/s390x/tcg/cc_helper.c index b2e8d3d9f5..b36f8cdc8b 100644 --- a/target/s390x/tcg/cc_helper.c +++ b/target/s390x/tcg/cc_helper.c @@ -487,6 +487,10 @@ void HELPER(sacf)(CPUS390XState *env, uint64_t a1) { HELPER_LOG("%s: %16" PRIx64 "\n", __func__, a1); + if (!(env->psw.mask & PSW_MASK_DAT)) { + tcg_s390_program_interrupt(env, PGM_SPECIAL_OP, GETPC()); + } + switch (a1 & 0xf00) { case 0x000: env->psw.mask &= ~PSW_MASK_ASC; @@ -497,6 +501,9 @@ void HELPER(sacf)(CPUS390XState *env, uint64_t a1) env->psw.mask |= PSW_ASC_SECONDARY; break; case 0x300: + if ((env->psw.mask & PSW_MASK_PSTATE) != 0) { + tcg_s390_program_interrupt(env, PGM_PRIVILEGED, GETPC()); + } env->psw.mask &= ~PSW_MASK_ASC; env->psw.mask |= PSW_ASC_HOME; break; diff --git a/target/s390x/tcg/insn-data.h.inc b/target/s390x/tcg/insn-data.h.inc index 7e952bdfc8..54d4250c9f 100644 --- a/target/s390x/tcg/insn-data.h.inc +++ b/target/s390x/tcg/insn-data.h.inc @@ -1365,7 +1365,7 @@ /* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */ F(0xb220, SERVC, RRE, Z, r1_o, r2_o, 0, 0, servc, 0, IF_PRIV | IF_IO) /* SET ADDRESS SPACE CONTROL FAST */ - F(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0, IF_PRIV) + C(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0) /* SET CLOCK */ F(0xb204, SCK, S, Z, 0, m2_64a, 0, 0, sck, 0, IF_PRIV | IF_IO) /* SET CLOCK COMPARATOR */ From c1966f515d9bb6d8ed7076f4bebdc45407700100 Mon Sep 17 00:00:00 2001 From: Evgeny Ermakov Date: Sat, 26 Nov 2022 03:08:49 +1100 Subject: [PATCH 69/71] hw/display/next-fb: Fix comment typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Evgeny Ermakov Message-Id: <20221125160849.23711-1-evgeny.v.ermakov@gmail.com> Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Peter Maydell Signed-off-by: Thomas Huth --- hw/display/next-fb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/display/next-fb.c b/hw/display/next-fb.c index dd6a1aa8ae..8446ff3c00 100644 --- a/hw/display/next-fb.c +++ b/hw/display/next-fb.c @@ -126,7 +126,7 @@ static void nextfb_class_init(ObjectClass *oc, void *data) set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories); dc->realize = nextfb_realize; - /* Note: This device does not any state that we have to reset or migrate */ + /* Note: This device does not have any state that we have to reset or migrate */ } static const TypeInfo nextfb_info = { From edc93f455fa823a9a5fcb3a8da430104c7375a0a Mon Sep 17 00:00:00 2001 From: Song Gao Date: Mon, 5 Dec 2022 19:30:07 +0800 Subject: [PATCH 70/71] Revert "hw/loongarch/virt: Add cfi01 pflash device" This reverts commit 14dccc8ea6ece7ee63273144fb55e4770a05e0fd. Signed-off-by: Song Gao Signed-off-by: Stefan Hajnoczi Message-Id: <20221205113007.683505-1-gaosong@loongson.cn> --- hw/loongarch/Kconfig | 1 - hw/loongarch/acpi-build.c | 18 ----------- hw/loongarch/virt.c | 62 ------------------------------------- include/hw/loongarch/virt.h | 5 --- 4 files changed, 86 deletions(-) diff --git a/hw/loongarch/Kconfig b/hw/loongarch/Kconfig index eb112af990..17d15b6c90 100644 --- a/hw/loongarch/Kconfig +++ b/hw/loongarch/Kconfig @@ -20,4 +20,3 @@ config LOONGARCH_VIRT select ACPI_HW_REDUCED select FW_CFG_DMA select DIMM - select PFLASH_CFI01 diff --git a/hw/loongarch/acpi-build.c b/hw/loongarch/acpi-build.c index c2b237736d..7d5f5a757d 100644 --- a/hw/loongarch/acpi-build.c +++ b/hw/loongarch/acpi-build.c @@ -279,23 +279,6 @@ static void build_pci_device_aml(Aml *scope, LoongArchMachineState *lams) acpi_dsdt_add_gpex(scope, &cfg); } -static void build_flash_aml(Aml *scope, LoongArchMachineState *lams) -{ - Aml *dev, *crs; - - hwaddr flash_base = VIRT_FLASH_BASE; - hwaddr flash_size = VIRT_FLASH_SIZE; - - dev = aml_device("FLS0"); - aml_append(dev, aml_name_decl("_HID", aml_string("LNRO0015"))); - aml_append(dev, aml_name_decl("_UID", aml_int(0))); - - crs = aml_resource_template(); - aml_append(crs, aml_memory32_fixed(flash_base, flash_size, AML_READ_WRITE)); - aml_append(dev, aml_name_decl("_CRS", crs)); - aml_append(scope, dev); -} - #ifdef CONFIG_TPM static void acpi_dsdt_add_tpm(Aml *scope, LoongArchMachineState *vms) { @@ -345,7 +328,6 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, MachineState *machine) build_uart_device_aml(dsdt); build_pci_device_aml(dsdt, lams); build_la_ged_aml(dsdt, machine); - build_flash_aml(dsdt, lams); #ifdef CONFIG_TPM acpi_dsdt_add_tpm(dsdt, lams); #endif diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index c8a495ea30..958be74fa1 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -42,63 +42,6 @@ #include "hw/display/ramfb.h" #include "hw/mem/pc-dimm.h" #include "sysemu/tpm.h" -#include "sysemu/block-backend.h" -#include "hw/block/flash.h" - -static void virt_flash_create(LoongArchMachineState *lams) -{ - DeviceState *dev = qdev_new(TYPE_PFLASH_CFI01); - - qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE); - qdev_prop_set_uint8(dev, "width", 4); - qdev_prop_set_uint8(dev, "device-width", 2); - qdev_prop_set_bit(dev, "big-endian", false); - qdev_prop_set_uint16(dev, "id0", 0x89); - qdev_prop_set_uint16(dev, "id1", 0x18); - qdev_prop_set_uint16(dev, "id2", 0x00); - qdev_prop_set_uint16(dev, "id3", 0x00); - qdev_prop_set_string(dev, "name", "virt.flash"); - object_property_add_child(OBJECT(lams), "virt.flash", OBJECT(dev)); - object_property_add_alias(OBJECT(lams), "pflash", - OBJECT(dev), "drive"); - - lams->flash = PFLASH_CFI01(dev); -} - -static void virt_flash_map(LoongArchMachineState *lams, - MemoryRegion *sysmem) -{ - PFlashCFI01 *flash = lams->flash; - DeviceState *dev = DEVICE(flash); - hwaddr base = VIRT_FLASH_BASE; - hwaddr size = VIRT_FLASH_SIZE; - - assert(QEMU_IS_ALIGNED(size, VIRT_FLASH_SECTOR_SIZE)); - assert(size / VIRT_FLASH_SECTOR_SIZE <= UINT32_MAX); - - qdev_prop_set_uint32(dev, "num-blocks", size / VIRT_FLASH_SECTOR_SIZE); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - memory_region_add_subregion(sysmem, base, - sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0)); - -} - -static void fdt_add_flash_node(LoongArchMachineState *lams) -{ - MachineState *ms = MACHINE(lams); - char *nodename; - - hwaddr flash_base = VIRT_FLASH_BASE; - hwaddr flash_size = VIRT_FLASH_SIZE; - - nodename = g_strdup_printf("/flash@%" PRIx64, flash_base); - qemu_fdt_add_subnode(ms->fdt, nodename); - qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "cfi-flash"); - qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", - 2, flash_base, 2, flash_size); - qemu_fdt_setprop_cell(ms->fdt, nodename, "bank-width", 4); - g_free(nodename); -} static void fdt_add_rtc_node(LoongArchMachineState *lams) { @@ -653,9 +596,6 @@ static void loongarch_firmware_init(LoongArchMachineState *lams) int bios_size; lams->bios_loaded = false; - - virt_flash_map(lams, get_system_memory()); - if (filename) { bios_name = qemu_find_file(QEMU_FILE_TYPE_BIOS, filename); if (!bios_name) { @@ -839,7 +779,6 @@ static void loongarch_init(MachineState *machine) loongarch_direct_kernel_boot(lams); } } - fdt_add_flash_node(lams); /* register reset function */ for (i = 0; i < machine->smp.cpus; i++) { lacpu = LOONGARCH_CPU(qemu_get_cpu(i)); @@ -899,7 +838,6 @@ static void loongarch_machine_initfn(Object *obj) lams->acpi = ON_OFF_AUTO_AUTO; lams->oem_id = g_strndup(ACPI_BUILD_APPNAME6, 6); lams->oem_table_id = g_strndup(ACPI_BUILD_APPNAME8, 8); - virt_flash_create(lams); } static bool memhp_type_supported(DeviceState *dev) diff --git a/include/hw/loongarch/virt.h b/include/hw/loongarch/virt.h index f5f818894e..45c383f5a7 100644 --- a/include/hw/loongarch/virt.h +++ b/include/hw/loongarch/virt.h @@ -12,7 +12,6 @@ #include "hw/boards.h" #include "qemu/queue.h" #include "hw/intc/loongarch_ipi.h" -#include "hw/block/flash.h" #define LOONGARCH_MAX_VCPUS 4 @@ -21,9 +20,6 @@ #define VIRT_FWCFG_BASE 0x1e020000UL #define VIRT_BIOS_BASE 0x1c000000UL #define VIRT_BIOS_SIZE (4 * MiB) -#define VIRT_FLASH_SECTOR_SIZE (128 * KiB) -#define VIRT_FLASH_BASE 0x1d000000UL -#define VIRT_FLASH_SIZE (16 * MiB) #define VIRT_LOWMEM_BASE 0 #define VIRT_LOWMEM_SIZE 0x10000000 @@ -52,7 +48,6 @@ struct LoongArchMachineState { int fdt_size; DeviceState *platform_bus_dev; PCIBus *pci_bus; - PFlashCFI01 *flash; }; #define TYPE_LOONGARCH_MACHINE MACHINE_TYPE_NAME("virt") From ea3a008d2d9ced9c4f93871c823baee237047f93 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Tue, 6 Dec 2022 19:53:34 -0500 Subject: [PATCH 71/71] Update VERSION for v7.2.0-rc4 Signed-off-by: Stefan Hajnoczi --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 1c24435536..73559ba4f6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -7.1.93 +7.1.94