aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2025-05-05 11:26:40 -0400
committerStefan Hajnoczi <stefanha@redhat.com>2025-05-05 11:26:41 -0400
commitb6f568262b48ca0cb3dc018909908017551b5679 (patch)
treedeeb0e4b71c43800e26633d0a3608679bdc27261 /scripts
parentd0394ab5b94c2536603ea804c06201a1f0634c37 (diff)
parente674fedbd1fd9953bc30026670aba6779848280a (diff)
downloadqemu-b6f568262b48ca0cb3dc018909908017551b5679.zip
qemu-b6f568262b48ca0cb3dc018909908017551b5679.tar.gz
qemu-b6f568262b48ca0cb3dc018909908017551b5679.tar.bz2
Merge tag 'migration-20250502-pull-request' of https://gitlab.com/peterx/qemu into staging
Migration pull request - Prasad's few pre-requisite patches from multifd+postcopy enablement series - Markus's fix on a latent bug for tls_authz setup - Zhijian's latest RDMA series (includes the rdma soft-RoCE unit test) - Jack's RDMA migration patch to re-enable ipv6 - Thomas's vmstate static checker update on rename field in acpi/ghes - Peter's postcopy preempt optimization for locality hint # -----BEGIN PGP SIGNATURE----- # # iIgEABYKADAWIQS5GE3CDMRX2s990ak7X8zN86vXBgUCaBT1DBIccGV0ZXJ4QHJl # ZGhhdC5jb20ACgkQO1/MzfOr1wbp5QD8DIxndg/ssr2s+jb4T3tLHj5887FqH9P3 # vU8aoppi4dkA/iYifF8eK+jmhh4yEAP+/NzbmDy+kLO7uEAJDIK+Z/UM # =Ae6/ # -----END PGP SIGNATURE----- # gpg: Signature made Fri 02 May 2025 12:38:36 EDT # gpg: using EDDSA key B9184DC20CC457DACF7DD1A93B5FCCCDF3ABD706 # gpg: issuer "peterx@redhat.com" # gpg: Good signature from "Peter Xu <xzpeter@gmail.com>" [full] # gpg: aka "Peter Xu <peterx@redhat.com>" [full] # Primary key fingerprint: B918 4DC2 0CC4 57DA CF7D D1A9 3B5F CCCD F3AB D706 * tag 'migration-20250502-pull-request' of https://gitlab.com/peterx/qemu: scripts/vmstate-static-checker.py: Allow new name for ghes_addr_le field migration/rdma: Remove qemu_rdma_broken_ipv6_kernel migration/postcopy: Spatial locality page hint for preempt mode tests/qtest/migration: consolidate set capabilities migration/ram: Implement save_postcopy_prepare() migration: Add save_postcopy_prepare() savevm handler migration: refactor channel discovery mechanism migration/multifd: move macros to multifd header migration: Fix latent bug in migrate_params_test_apply() migration: Add qtest for migration over RDMA migration: Unfold control_save_page() migration/rdma: Remove redundant migration_in_postcopy checks migration: disable RDMA + postcopy-ram migration: check RDMA and capabilities are compatible on both sides Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/rdma-migration-helper.sh70
-rwxr-xr-xscripts/vmstate-static-checker.py1
2 files changed, 71 insertions, 0 deletions
diff --git a/scripts/rdma-migration-helper.sh b/scripts/rdma-migration-helper.sh
new file mode 100755
index 0000000..a39f2fb
--- /dev/null
+++ b/scripts/rdma-migration-helper.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+# Copied from blktests
+get_ipv4_addr()
+{
+ ip -4 -o addr show dev "$1" |
+ sed -n 's/.*[[:blank:]]inet[[:blank:]]*\([^[:blank:]/]*\).*/\1/p' |
+ head -1 | tr -d '\n'
+}
+
+# existing rdma interfaces
+rdma_interfaces()
+{
+ rdma link show | sed -nE 's/^link .* netdev ([^ ]+).*$/\1 /p'
+}
+
+# existing valid ipv4 interfaces
+ipv4_interfaces()
+{
+ ip -o addr show | awk '/inet / {print $2}' | grep -v -w lo
+}
+
+rdma_rxe_detect()
+{
+ for r in $(rdma_interfaces)
+ do
+ ipv4_interfaces | grep -qw $r && get_ipv4_addr $r && return
+ done
+
+ return 1
+}
+
+rdma_rxe_setup()
+{
+ for i in $(ipv4_interfaces)
+ do
+ rdma_interfaces | grep -qw $i && continue
+ rdma link add "${i}_rxe" type rxe netdev "$i" && {
+ echo "Setup new rdma/rxe ${i}_rxe for $i with $(get_ipv4_addr $i)"
+ return
+ }
+ done
+
+ echo "Failed to setup any new rdma/rxe link" >&2
+ return 1
+}
+
+rdma_rxe_clean()
+{
+ modprobe -r rdma_rxe
+}
+
+operation=${1:-detect}
+
+command -v rdma >/dev/null || {
+ echo "Command 'rdma' is not available, please install it first." >&2
+ exit 1
+}
+
+if [ "$operation" == "setup" ] || [ "$operation" == "clean" ]; then
+ [ "$UID" == 0 ] || {
+ echo "Root privilege is required to setup/clean a rdma/rxe link" >&2
+ exit 1
+ }
+ rdma_rxe_"$operation"
+elif [ "$operation" == "detect" ]; then
+ rdma_rxe_detect
+else
+ echo "Usage: $0 [setup | detect | clean]"
+fi
diff --git a/scripts/vmstate-static-checker.py b/scripts/vmstate-static-checker.py
index 9c0e6b8..25aca83 100755
--- a/scripts/vmstate-static-checker.py
+++ b/scripts/vmstate-static-checker.py
@@ -42,6 +42,7 @@ def check_fields_match(name, s_field, d_field):
# Some fields changed names between qemu versions. This list
# is used to allow such changes in each section / description.
changed_names = {
+ 'acpi-ghes': ['ghes_addr_le', 'hw_error_le'],
'apic': ['timer', 'timer_expiry'],
'e1000': ['dev', 'parent_obj'],
'ehci': ['dev', 'pcidev'],