From b481074d7fb231e6e3f8781cb63bd942cecbf2cb Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Sat, 6 Aug 2022 11:31:11 -0400 Subject: [PATCH] Fixes for 5.10 Signed-off-by: Sasha Levin --- ...ndle-compiler-optimizations-in-ucall.patch | 61 ++++++++++++++++++ queue-5.10/series | 2 + ...ix-display-of-error-when-multiple-pr.patch | 64 +++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 queue-5.10/selftests-kvm-handle-compiler-optimizations-in-ucall.patch create mode 100644 queue-5.10/tools-kvm_stat-fix-display-of-error-when-multiple-pr.patch diff --git a/queue-5.10/selftests-kvm-handle-compiler-optimizations-in-ucall.patch b/queue-5.10/selftests-kvm-handle-compiler-optimizations-in-ucall.patch new file mode 100644 index 00000000000..0dd3c197e68 --- /dev/null +++ b/queue-5.10/selftests-kvm-handle-compiler-optimizations-in-ucall.patch @@ -0,0 +1,61 @@ +From c1014f3ca7b45c03403c6254b8c7ccaceb698781 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 15 Jun 2022 18:57:06 +0000 +Subject: selftests: KVM: Handle compiler optimizations in ucall + +From: Raghavendra Rao Ananta + +[ Upstream commit 9e2f6498efbbc880d7caa7935839e682b64fe5a6 ] + +The selftests, when built with newer versions of clang, is found +to have over optimized guests' ucall() function, and eliminating +the stores for uc.cmd (perhaps due to no immediate readers). This +resulted in the userspace side always reading a value of '0', and +causing multiple test failures. + +As a result, prevent the compiler from optimizing the stores in +ucall() with WRITE_ONCE(). + +Suggested-by: Ricardo Koller +Suggested-by: Reiji Watanabe +Signed-off-by: Raghavendra Rao Ananta +Message-Id: <20220615185706.1099208-1-rananta@google.com> +Reviewed-by: Andrew Jones +Signed-off-by: Paolo Bonzini +Signed-off-by: Sasha Levin +--- + tools/testing/selftests/kvm/lib/aarch64/ucall.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/tools/testing/selftests/kvm/lib/aarch64/ucall.c b/tools/testing/selftests/kvm/lib/aarch64/ucall.c +index 2f37b90ee1a9..f600311fdc6a 100644 +--- a/tools/testing/selftests/kvm/lib/aarch64/ucall.c ++++ b/tools/testing/selftests/kvm/lib/aarch64/ucall.c +@@ -73,20 +73,19 @@ void ucall_uninit(struct kvm_vm *vm) + + void ucall(uint64_t cmd, int nargs, ...) + { +- struct ucall uc = { +- .cmd = cmd, +- }; ++ struct ucall uc = {}; + va_list va; + int i; + ++ WRITE_ONCE(uc.cmd, cmd); + nargs = nargs <= UCALL_MAX_ARGS ? nargs : UCALL_MAX_ARGS; + + va_start(va, nargs); + for (i = 0; i < nargs; ++i) +- uc.args[i] = va_arg(va, uint64_t); ++ WRITE_ONCE(uc.args[i], va_arg(va, uint64_t)); + va_end(va); + +- *ucall_exit_mmio_addr = (vm_vaddr_t)&uc; ++ WRITE_ONCE(*ucall_exit_mmio_addr, (vm_vaddr_t)&uc); + } + + uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, struct ucall *uc) +-- +2.35.1 + diff --git a/queue-5.10/series b/queue-5.10/series index 21f36b2d743..00bc89637c2 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -8,3 +8,5 @@ acpi-video-force-backlight-native-for-some-tongfang-devices.patch acpi-video-shortening-quirk-list-by-identifying-clevo-by-board_name-only.patch acpi-apei-better-fix-to-avoid-spamming-the-console-with-old-error-logs.patch crypto-arm64-poly1305-fix-a-read-out-of-bound.patch +tools-kvm_stat-fix-display-of-error-when-multiple-pr.patch +selftests-kvm-handle-compiler-optimizations-in-ucall.patch diff --git a/queue-5.10/tools-kvm_stat-fix-display-of-error-when-multiple-pr.patch b/queue-5.10/tools-kvm_stat-fix-display-of-error-when-multiple-pr.patch new file mode 100644 index 00000000000..f08e7535402 --- /dev/null +++ b/queue-5.10/tools-kvm_stat-fix-display-of-error-when-multiple-pr.patch @@ -0,0 +1,64 @@ +From afc5b295e0fb5054b10cc59de0bfffdf8772492d Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 14 Jun 2022 15:11:41 +0300 +Subject: tools/kvm_stat: fix display of error when multiple processes are + found + +From: Dmitry Klochkov + +[ Upstream commit 933b5f9f98da29af646b51b36a0753692908ef64 ] + +Instead of printing an error message, kvm_stat script fails when we +restrict statistics to a guest by its name and there are multiple guests +with such name: + + # kvm_stat -g my_vm + Traceback (most recent call last): + File "/usr/bin/kvm_stat", line 1819, in + main() + File "/usr/bin/kvm_stat", line 1779, in main + options = get_options() + File "/usr/bin/kvm_stat", line 1718, in get_options + options = argparser.parse_args() + File "/usr/lib64/python3.10/argparse.py", line 1825, in parse_args + args, argv = self.parse_known_args(args, namespace) + File "/usr/lib64/python3.10/argparse.py", line 1858, in parse_known_args + namespace, args = self._parse_known_args(args, namespace) + File "/usr/lib64/python3.10/argparse.py", line 2067, in _parse_known_args + start_index = consume_optional(start_index) + File "/usr/lib64/python3.10/argparse.py", line 2007, in consume_optional + take_action(action, args, option_string) + File "/usr/lib64/python3.10/argparse.py", line 1935, in take_action + action(self, namespace, argument_values, option_string) + File "/usr/bin/kvm_stat", line 1649, in __call__ + ' to specify the desired pid'.format(" ".join(pids))) + TypeError: sequence item 0: expected str instance, int found + +To avoid this, it's needed to convert pids int values to strings before +pass them to join(). + +Signed-off-by: Dmitry Klochkov +Message-Id: <20220614121141.160689-1-kdmitry556@gmail.com> +Signed-off-by: Paolo Bonzini +Signed-off-by: Sasha Levin +--- + tools/kvm/kvm_stat/kvm_stat | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tools/kvm/kvm_stat/kvm_stat b/tools/kvm/kvm_stat/kvm_stat +index b0bf56c5f120..a1efcfbd8b9e 100755 +--- a/tools/kvm/kvm_stat/kvm_stat ++++ b/tools/kvm/kvm_stat/kvm_stat +@@ -1646,7 +1646,8 @@ Press any other key to refresh statistics immediately. + .format(values)) + if len(pids) > 1: + sys.exit('Error: Multiple processes found (pids: {}). Use "-p"' +- ' to specify the desired pid'.format(" ".join(pids))) ++ ' to specify the desired pid' ++ .format(" ".join(map(str, pids)))) + namespace.pid = pids[0] + + argparser = argparse.ArgumentParser(description=description_text, +-- +2.35.1 + -- 2.47.3