Skip to content

Conversation

@smitterl
Copy link
Contributor

@smitterl smitterl commented Nov 20, 2025

S390x doesn't have ACPI (s3/s4), nor does it have cpu hot unplug. Set values and filter accordingly for s390x.

Summary by CodeRabbit

  • Tests
    • Updated test configuration for virtual CPU operations to enhance coverage for s390-virtio architecture, including adjustments to suspend and CPU unplugging scenarios.

✏️ Tip: You can customize this high-level summary in your review settings.

S390x doesn't have ACPI (s3/s4), nor does it have cpu hot
unplug. Set values and filter accordingly for s390x.

Signed-off-by: Sebastian Mitterle <smitterl@redhat.com>
@coderabbitai
Copy link

coderabbitai bot commented Nov 20, 2025

Walkthrough

This change modifies the libvirt virtual CPU plug/unplug test configuration file. It adds a new s390-virtio configuration section with specific settings that disable memory suspend, disk suspend, vCPU unplugging, and pin-before-unplug operations. Additionally, it removes an exclusionary "no s390-virtio" constraint from the pin_unplug variant within the vcpu_pin test path. These modifications alter test configuration constraints for the s390-virtio platform.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

  • Key areas requiring attention:
    • Verify the new s390-virtio section is placed at the correct hierarchy level within the configuration structure
    • Confirm that removing "no s390-virtio" from pin_unplug path produces the intended behavioral change for s390-virtio test scenarios
    • Validate that the four configuration parameters (no suspend_to_mem, suspend_to_disk, vcpu_unplug, pin_before_unplug) are appropriate and necessary for s390-virtio testing

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'libvirt_vcpu_plug_unplug: adapt to s390x' clearly and concisely describes the main change: adapting the vcpu plug/unplug configuration for s390x architecture support.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Comment @coderabbitai help to get the list of available commands and usage tips.

@smitterl
Copy link
Contributor Author

smitterl commented Nov 20, 2025

test log before I added no suspend_to_mem, suspend_to_disk- I tested that filter later manually with a --dry-run call

(.libvirt-ci-venv-ci-runtest-Py8zyV) [root@rdu-z16-l26 ~]# avocado run --vt-type libvirt --vt-omit-data-loss --vt-machine-type s390-virtio libvirt_vcpu_plug_unplug --vt-extra-params "vcpu_unplug = no --job-timeout 1200 --vt-connect-uri qemu:///system                                                                                                                            
> ping_before_unplug = no"
No python imaging library installed. Screendump and Windows guest BSOD detection are disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
No python imaging library installed. PPM image conversion to JPEG disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
No python imaging library installed. Screendump and Windows guest BSOD detection are disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
No python imaging library installed. PPM image conversion to JPEG disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
JOB ID     : deed294e0896dc1047392a3ad3ce680069d2906a
JOB LOG    : /var/log/avocado/job-results/job-2025-11-20T10.51-deed294/job.log
 (01/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.no_operation: STARTED
 (01/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.no_operation: PASS (35.36 s)
 (02/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.save: STARTED
 (02/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.save: PASS (49.12 s)
 (03/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.managedsave: STARTED
 (03/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.managedsave: PASS (49.50 s)
 (04/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend: STARTED
 (04/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend: PASS (43.23 s)
 (05/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend_to_mem: STARTED
 (05/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend_to_mem: FAIL: error: Domain 'avocado-vt-vm1' could not be suspended\nerror: Operation not supported: Domain does not have suspend support\n (49.16 s)
 (06/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend_to_disk: STARTED
 (06/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend_to_disk: FAIL: error: Domain 'avocado-vt-vm1' could not be suspended\nerror: Operation not supported: Domain does not have suspend support\n (50.33 s)
 (07/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.save_with_unplug: STARTED
 (07/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.save_with_unplug: PASS (49.71 s)
 (08/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.managedsave_with_unplug: STARTED
 (08/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.managedsave_with_unplug: PASS (49.39 s)
 (09/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend_with_unplug: STARTED
 (09/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend_with_unplug: PASS (43.28 s)
 (10/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.reboot: STARTED
 (10/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.reboot: PASS (84.80 s)
 (11/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.libvirtd_restart: STARTED
 (11/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.libvirtd_restart: PASS (36.05 s)
 (12/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vcpu_pin.pin_plug_unplug: STARTED
 (12/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vcpu_pin.pin_plug_unplug: PASS (36.70 s)
 (13/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vcpu_pin.plug_pin: STARTED
 (13/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vcpu_pin.plug_pin: PASS (35.59 s)
 (14/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vcpu_pin.unplug_pin: STARTED
 (14/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vcpu_pin.unplug_pin: PASS (22.26 s)
 (15/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.with_stress: STARTED
 (15/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.with_stress: PASS (299.32 s)
 (16/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.with_iteration: STARTED
 (16/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.with_iteration: PASS (183.51 s)
 (17/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.with_maxvcpu: STARTED
 (17/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.with_maxvcpu: PASS (160.07 s)
 (18/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.no_operation: STARTED
 (18/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.no_operation: PASS (24.67 s)
 (19/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.save: STARTED
 (19/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.save: PASS (32.38 s)
 (20/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.managedsave: STARTED
 (20/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.managedsave: PASS (31.31 s)
 (21/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend: STARTED
 (21/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend: PASS (24.92 s)
 (22/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend_to_mem: STARTED
 (22/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend_to_mem: FAIL: error: Domain 'avocado-vt-vm1' could not be suspended\nerror: Operation not supported: Domain does not have suspend support\n (37.91 s)
 (23/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend_to_disk: STARTED
 (23/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend_to_disk: FAIL: error: Domain 'avocado-vt-vm1' could not be suspended\nerror: Operation not supported: Domain does not have suspend support\n (38.83 s)
 (24/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.save_with_unplug: STARTED
 (24/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.save_with_unplug: PASS (31.24 s)
 (25/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.managedsave_with_unplug: STARTED
 (25/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.managedsave_with_unplug: PASS (30.84 s)
 (26/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend_with_unplug: STARTED
 (26/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend_with_unplug: PASS (25.07 s)
 (27/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.reboot: STARTED
 (27/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.reboot: PASS (60.90 s)
 (28/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.libvirtd_restart: STARTED
 (28/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.libvirtd_restart: PASS (24.73 s)
 (29/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.no_operation: STARTED
 (29/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.no_operation: PASS (38.45 s)
 (30/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.save: STARTED
 (30/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.save: PASS (37.87 s)
 (31/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.managedsave: STARTED
 (31/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.managedsave: PASS (37.90 s)
 (32/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.suspend: STARTED
 (32/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.suspend: PASS (37.93 s)
 (33/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.suspend_to_mem: STARTED
 (33/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.suspend_to_mem: PASS (38.19 s)
 (34/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.suspend_to_disk: STARTED
 (34/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.suspend_to_disk: PASS (40.77 s)
 (35/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.save_with_unplug: STARTED
 (35/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.save_with_unplug: PASS (37.91 s)
 (36/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.managedsave_with_unplug: STARTED
 (36/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.managedsave_with_unplug: PASS (38.05 s)
 (37/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.suspend_with_unplug: STARTED
 (37/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.suspend_with_unplug: PASS (37.94 s)
 (38/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.reboot: STARTED
 (38/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.vm_operate.reboot: PASS (38.39 s)
 (39/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.libvirtd_restart: STARTED
 (39/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.guest.libvirtd_restart: PASS (38.38 s)
 (40/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.greater_plug_number: STARTED
 (40/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.greater_plug_number: PASS (22.73 s)
 (41/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.readonly_setvcpu: STARTED
 (41/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.readonly_setvcpu: PASS (22.93 s)
 (42/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.no_ga_channel: STARTED
 (42/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.no_ga_channel: PASS (22.57 s)
 (43/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.no_install_qemuga: STARTED
 (43/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.no_install_qemuga: PASS (22.97 s)
 (44/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.no_start_qemuga: STARTED
 (44/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.no_start_qemuga: PASS (39.26 s)
 (45/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.guest_plug.more_than_current: STARTED
 (45/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.guest_plug.more_than_current: PASS (38.90 s)
 (46/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.guest_plug.more_than_max: STARTED
 (46/46) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.negative_test.guest_plug.more_than_max: PASS (38.75 s)
RESULTS    : PASS 42 | ERROR 0 | FAIL 4 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB HTML   : /var/log/avocado/job-results/job-2025-11-20T10.51-deed294/results.html
JOB TIME   : 2310.28 s

Test summary:
05-type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend_to_mem: FAIL
06-type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.vm_operate.suspend_to_disk: FAIL
22-type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend_to_mem: FAIL
23-type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.config.vm_operate.suspend_to_disk: FAIL

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
libvirt/tests/cfg/libvirt_vcpu_plug_unplug.cfg (1)

17-20: Consider explicitly filtering unplug-related variants for clarity and add documentation.

The current approach disables vcpu_unplug and pin_before_unplug via parameter settings, which means unplug-related test variants (e.g., save_with_unplug, managedsave_with_unplug, suspend_with_unplug, pin_unplug, unplug_pin) will still be generated but won't perform actual unplug operations. This could be confusing and may result in redundant test runs that don't test meaningful functionality for s390x.

Additionally, there's no documentation explaining the architectural limitations driving these changes.

Consider applying this more explicit approach:

 s390-virtio:
+    # s390x lacks ACPI support (no s3/s4 suspend) and does not support CPU hot-unplug
     no suspend_to_mem, suspend_to_disk
+    no save_with_unplug, managedsave_with_unplug, suspend_with_unplug
+    no pin_unplug, unplug_pin
     vcpu_unplug = no
-    pin_before_unplug = no

Alternatively, verify that the test implementation correctly handles vcpu_unplug="no" for these unplug-related variants and skips operations appropriately, ensuring the tests remain meaningful for s390-virtio.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 875c970 and b28ac26.

📒 Files selected for processing (1)
  • libvirt/tests/cfg/libvirt_vcpu_plug_unplug.cfg (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Python 3.12
  • GitHub Check: Python 3.8
  • GitHub Check: Python 3.11
  • GitHub Check: Python 3.9
🔇 Additional comments (1)
libvirt/tests/cfg/libvirt_vcpu_plug_unplug.cfg (1)

66-70: Verify configuration precedence for pin_before_unplug on s390-virtio before merging.

The pin_unplug variant explicitly sets pin_before_unplug = "yes" (line 68), while the s390-virtio section sets pin_before_unplug = no (line 20). The review notes indicate the explicit no s390-virtio exclusion was removed from this variant, meaning it now applies to s390-virtio platforms.

The concern is valid: test code (line 436-439 in libvirt_vcpu_plug_unplug.py) has no architecture validation before executing pin operations. Verify that:

  1. The test framework's config precedence correctly applies architecture-level settings over nested variant settings, OR
  2. The pin operation gracefully fails/is-skipped on s390-virtio rather than causing test failures.

Note: All four pin variants (pin_plug_unplug, pin_unplug, plug_pin, unplug_pin) lack no s390-virtio exclusion, suggesting this may be intentional framework behavior—but this should still be confirmed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant