Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Bernatowicz, Marcin" <marcin.bernatowicz@linux.intel.com>
To: Adam Miszczak <adam.miszczak@linux.intel.com>,
	igt-dev@lists.freedesktop.org
Cc: kamil.konieczny@linux.intel.com
Subject: Re: [PATCH i-g-t 3/3] tools/vmtb: Reconfigure tests setup
Date: Fri, 16 Oct 2026 19:02:36 +0200	[thread overview]
Message-ID: <2c57bd4d-1cb5-433a-92c1-347ea6106941@linux.intel.com> (raw)
In-Reply-To: <20261015071037.10898-4-adam.miszczak@linux.intel.com>

LGTM,

Reviewed-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>

On 10/15/2026 9:10 AM, Adam Miszczak wrote:
> Switch test config variants from vGPU profiles to auto resources
> and scheduling provisioning (basic and migration tests).
>
> Drop the 'full' migration config variant - all busy migration tests
> by default run in the basic 1xVF and 2xVF scope.
>
> Add dedicated TestBusyMigrationParallel class with 4xVF and 6xVF
> config variants to validate parallel multi-VM migration:
> - 4xVMs migration: VM0->VM3 and VM1->VM2
> - 6xVMs migration: VM0->VM5, VM1->VM4 and VM2->VM3
> Raise default max_vms in test_migration config helper (2 -> 24)
> to allow running VMs on all enabled VFs.
>
> Remove manual EQ/PT override in test_migration::test_2vm_pause_resume
> (no longer needed since the driver provides finite defaults).
>
> Reduce max VMs number (4 -> 2) for test_basic::TestVfDriverLoadRemove
> to prevent host's memory depletion on systems with limited host RAM.
>
> Signed-off-by: Adam Miszczak <adam.miszczak@linux.intel.com>
> ---
>   tools/vmtb/vmm_flows/test_basic.py     | 15 ++++----
>   tools/vmtb/vmm_flows/test_migration.py | 51 ++++++++++++--------------
>   2 files changed, 30 insertions(+), 36 deletions(-)
>
> diff --git a/tools/vmtb/vmm_flows/test_basic.py b/tools/vmtb/vmm_flows/test_basic.py
> index 597ebbb68..d7041c61f 100644
> --- a/tools/vmtb/vmm_flows/test_basic.py
> +++ b/tools/vmtb/vmm_flows/test_basic.py
> @@ -41,8 +41,7 @@ def set_test_config(test_variants: List[Tuple[int, VfProvisioningMode, VfSchedul
>       return test_configs
>   
>   
> -test_variants_1 = [(1, VfProvisioningMode.VGPU_PROFILE, VfSchedulingMode.DEFAULT_PROFILE),
> -                   (2, VfProvisioningMode.VGPU_PROFILE, VfSchedulingMode.DEFAULT_PROFILE),
> +test_variants_1 = [(1, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO),
>                      (2, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO)]
>   
>   @pytest.mark.parametrize('setup_vms', set_test_config(test_variants_1), ids=idfn_test_config, indirect=['setup_vms'])
> @@ -63,9 +62,9 @@ class TestVmSetup:
>               assert driver_check(vm)
>   
>   
> -test_variants_2 = [(1, VfProvisioningMode.VGPU_PROFILE, VfSchedulingMode.DEFAULT_PROFILE),
> -                   (2, VfProvisioningMode.VGPU_PROFILE, VfSchedulingMode.DEFAULT_PROFILE),
> -                   (4, VfProvisioningMode.VGPU_PROFILE, VfSchedulingMode.DEFAULT_PROFILE)]
> +test_variants_2 = [(1, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO),
> +                   (2, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO),
> +                   (4, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO)]
>   
>   @pytest.mark.parametrize('setup_vms', set_test_config(test_variants_2), ids=idfn_test_config, indirect=['setup_vms'])
>   class TestVmWorkload:
> @@ -106,10 +105,10 @@ class TestVmWorkload:
>           logger.info("Execute wsim parallel on VMs - results: %s", result)
>   
>   
> -test_variants_3 = [(2, VfProvisioningMode.VGPU_PROFILE, VfSchedulingMode.DEFAULT_PROFILE),
> -                   (4, VfProvisioningMode.VGPU_PROFILE, VfSchedulingMode.DEFAULT_PROFILE)]
> +test_variants_3 = [(2, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO),
> +                   (4, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO)]
>   
> -@pytest.mark.parametrize('setup_vms', set_test_config(test_variants=test_variants_3, max_vms=4, vf_driver_load=False),
> +@pytest.mark.parametrize('setup_vms', set_test_config(test_variants=test_variants_3, max_vms=2, vf_driver_load=False),
>                            ids = idfn_test_config, indirect=['setup_vms'])
>   class TestVfDriverLoadRemove:
>       """Verify VF (guest) driver load or remove doesn't affect execution on the other VM:
> diff --git a/tools/vmtb/vmm_flows/test_migration.py b/tools/vmtb/vmm_flows/test_migration.py
> index c4f3f00a4..273ff5768 100644
> --- a/tools/vmtb/vmm_flows/test_migration.py
> +++ b/tools/vmtb/vmm_flows/test_migration.py
> @@ -30,17 +30,14 @@ IGT_RESTORE_DELAY = 3 # Time between VM resume and WL status check (post-restore
>   MS_IN_SEC = 1000
>   
>   
> -# Full configuration variant: 1xVF, 2xVF and MAXxVF with auto and vGPU profiles provisioning
> -# TODO: add max VFs variants
> -test_variants_full = [(1, VfProvisioningMode.AUTO, VfSchedulingMode.DEFAULT_PROFILE),
> -                      (2, VfProvisioningMode.AUTO, VfSchedulingMode.DEFAULT_PROFILE),
> -                      (1, VfProvisioningMode.VGPU_PROFILE, VfSchedulingMode.DEFAULT_PROFILE),
> -                      (2, VfProvisioningMode.VGPU_PROFILE, VfSchedulingMode.DEFAULT_PROFILE)]
> +# Basic configuration variant: 1xVF and 2xVF with auto provisioning
> +test_variants_basic = [(1, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO),
> +                       (2, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO)]
>   
>   
> -# Basic configuration variant: 1xVF and 2xVF with auto provisioning
> -test_variants_basic = [(1, VfProvisioningMode.AUTO, VfSchedulingMode.DEFAULT_PROFILE),
> -                       (2, VfProvisioningMode.AUTO, VfSchedulingMode.DEFAULT_PROFILE)]
> +# Parallel-migration configuration variant: 4xVF and 6xVF with auto provisioning
> +test_variants_parallel = [(4, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO),
> +                          (6, VfProvisioningMode.AUTO, VfSchedulingMode.AUTO)]
>   
>   
>   # vGPU profiles configuration variant: 1xVF and 2xVF with vGPU profiles provisioning
> @@ -365,7 +362,7 @@ def idfn_workload(workload: MigrationWorkloadWsim):
>   
>   
>   def set_test_config(test_variants: List[Tuple[int, VfProvisioningMode, VfSchedulingMode]],
> -                    max_vms: int = 2, wa_reduce_vf_lmem: bool = False) -> List[VmmTestingConfig]:
> +                    max_vms: int = 24, wa_reduce_vf_lmem: bool = False) -> List[VmmTestingConfig]:
>       """Helper function to provide a parametrized test with a list of test configuration variants."""
>       test_configs: List[VmmTestingConfig] = []
>   
> @@ -380,7 +377,8 @@ def set_test_config(test_variants: List[Tuple[int, VfProvisioningMode, VfSchedul
>   # Busy migration TCs with WSIM workload
>   @pytest.mark.parametrize('set_migration_wl', [wsim_short_preempt],
>                            ids=idfn_workload, indirect=['set_migration_wl'])
> -@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_full), ids=idfn_test_config, indirect=['setup_vms'])
> +@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_basic),
> +                         ids=idfn_test_config, indirect=['setup_vms'])
>   class TestBusyMigrationWsim1(BaseTestBusyMigration):
>       """Save-restore VM state with VF busy executing short (5ms) preemptable batches.
>   
> @@ -468,7 +466,7 @@ class TestBusyMigrationIgtExecReset2(BaseTestBusyMigration):
>   
>   @pytest.mark.parametrize('set_migration_wl', [igt_exec_reset_long_spin_many_preempt_threads],
>                            ids=idfn_workload, indirect=['set_migration_wl'])
> -@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_full),
> +@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_basic),
>                            ids=idfn_test_config, indirect=['setup_vms'])
>   class TestBusyMigrationIgtExecReset3(BaseTestBusyMigration):
>       """Save-restore VM state with VF busy executing IGT xe_exec_reset@long-spin-many-preempt-threads."""
> @@ -508,7 +506,7 @@ class TestBusyMigrationIgtExecReset7(BaseTestBusyMigration):
>   
>   @pytest.mark.parametrize('set_migration_wl', [igt_exec_reset_long_spin_reuse_many_preempt_threads],
>                            ids=idfn_workload, indirect=['set_migration_wl'])
> -@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_full),
> +@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_basic),
>                            ids=idfn_test_config, indirect=['setup_vms'])
>   class TestBusyMigrationIgtExecReset8(BaseTestBusyMigration):
>       """Save-restore VM state with VF busy executing IGT xe_exec_reset@long-spin-reuse-many-preempt-threads."""
> @@ -532,7 +530,7 @@ class TestBusyMigrationIgtExecReset10(BaseTestBusyMigration):
>   
>   @pytest.mark.parametrize('set_migration_wl', [igt_exec_reset_long_spin_sys_reuse_many_preempt_threads],
>                            ids=idfn_workload, indirect=['set_migration_wl'])
> -@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_full),
> +@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_basic),
>                            ids=idfn_test_config, indirect=['setup_vms'])
>   class TestBusyMigrationIgtExecReset11(BaseTestBusyMigration):
>       """Save-restore VM state with VF busy executing IGT xe_exec_reset@long-spin-sys-reuse-many-preempt-threads."""
> @@ -540,7 +538,7 @@ class TestBusyMigrationIgtExecReset11(BaseTestBusyMigration):
>   
>   @pytest.mark.parametrize('set_migration_wl', [igt_exec_reset_long_spin_comp_reuse_many_preempt_threads],
>                            ids=idfn_workload, indirect=['set_migration_wl'])
> -@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_full),
> +@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_basic),
>                            ids=idfn_test_config, indirect=['setup_vms'])
>   class TestBusyMigrationIgtExecReset12(BaseTestBusyMigration):
>       """Save-restore VM state with VF busy executing IGT xe_exec_reset@long-spin-comp-reuse-many-preempt-threads."""
> @@ -580,7 +578,7 @@ class TestBusyMigrationIgtExecReset16(BaseTestBusyMigration):
>   
>   @pytest.mark.parametrize('set_migration_wl', [igt_exec_threads_basic],
>                            ids=idfn_workload, indirect=['set_migration_wl'])
> -@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_full),
> +@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_basic),
>                            ids=idfn_test_config, indirect=['setup_vms'])
>   class TestBusyMigrationIgtExecThreads1(BaseTestBusyMigration):
>       """Save-restore VM state with VF busy executing IGT xe_exec_threads@threads-basic."""
> @@ -604,7 +602,7 @@ class TestBusyMigrationIgtExecThreads3(BaseTestBusyMigration):
>   
>   @pytest.mark.parametrize('set_migration_wl', [igt_exec_threads_many_queues],
>                           ids=idfn_workload, indirect=['set_migration_wl'])
> -@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_full),
> +@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_basic),
>                            ids=idfn_test_config, indirect=['setup_vms'])
>   class TestBusyMigrationIgtExecThreads4(BaseTestBusyMigration):
>       """Save-restore VM state with VF busy executing IGT xe_exec_threads@threads-many-queues."""
> @@ -634,6 +632,14 @@ class TestBusyMigrationIgtComputePreempt(BaseTestBusyMigration):
>       """Save-restore VM state with VF busy executing IGT xe_compute_preempt@compute-preempt-many (CCS path)."""
>   
>   
> +@pytest.mark.parametrize('set_migration_wl', [igt_exec_threads_many_queues],
> +                        ids=idfn_workload, indirect=['set_migration_wl'])
> +@pytest.mark.parametrize('setup_vms', set_test_config(test_variants_parallel),
> +                         ids=idfn_test_config, indirect=['setup_vms'])
> +class TestBusyMigrationParallel(BaseTestBusyMigration):
> +    """Save-restore multiple VMs state in parallel with VF busy executing IGT xe_exec_threads@threads-many-queues."""
> +
> +
>   @pytest.mark.parametrize('setup_vms', set_test_config(test_variants_basic),
>                            ids=idfn_test_config, indirect=['setup_vms'])
>   class TestIdleMigration:
> @@ -1175,8 +1181,6 @@ def test_2vm_pause_resume(create_1host_2vm):
>       vm1.assign_vf(vf2)
>       ts.poweron_vms()
>   
> -    pause_vf_num = 1
> -
>       assert modprobe_driver_run_check(vm0)
>       assert modprobe_driver_run_check(vm1)
>   
> @@ -1194,11 +1198,6 @@ def test_2vm_pause_resume(create_1host_2vm):
>       logger.debug("Submit IGT WL (gem_spin_batch) on VM1")
>       igt_vm1 = IgtExecutor(vm1, IgtType.SPIN_BATCH)
>   
> -    # Special handling of pausing VMs with infinite ExecQuanta - refer to SAS for details
> -    logger.debug("Set VF1 EQ/PF before the pause")
> -    ts.get_dut().driver.set_exec_quantum_ms(pause_vf_num, 1)
> -    ts.get_dut().driver.set_preempt_timeout_us(pause_vf_num, 100)
> -
>       logger.debug("Pause execution on VM0/VF1")
>       vm0.pause()
>   
> @@ -1208,10 +1207,6 @@ def test_2vm_pause_resume(create_1host_2vm):
>       logger.debug("Resume execution on VM0/VF1")
>       vm0.resume()
>   
> -    logger.debug("Reset VF1 EQ/PF to the initial values (infinite) after resume")
> -    ts.get_dut().driver.set_exec_quantum_ms(pause_vf_num, 0)
> -    ts.get_dut().driver.set_preempt_timeout_us(pause_vf_num, 0)
> -
>       result_vm0 = gem_wsim_vm0.wait_results() # Throws exception on wsim fail
>       assert expected_elapsed_sec * 0.8 < result_vm0.elapsed_sec < expected_elapsed_sec * 1.5
>       logger.debug("VM0 IGT WL (paused-resumed) finished successfully")

  reply	other threads:[~2026-10-16 17:04 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-15  7:10 [PATCH i-g-t 0/3] tools/vmtb: Parallel multi-VM migration and tests reconfiguration Adam Miszczak
2026-10-15  7:10 ` [PATCH i-g-t 1/3] tools/vmtb: Support parallel multi-VM busy migration Adam Miszczak
2026-10-16 17:01   ` Bernatowicz, Marcin
2026-10-15  7:10 ` [PATCH i-g-t 2/3] tools/vmtb: Skip double migration tests on no-debug config Adam Miszczak
2026-10-16 17:02   ` Bernatowicz, Marcin
2026-10-15  7:10 ` [PATCH i-g-t 3/3] tools/vmtb: Reconfigure tests setup Adam Miszczak
2026-10-16 17:02   ` Bernatowicz, Marcin [this message]
2026-10-15  9:05 ` ✓ i915.CI.BAT: success for tools/vmtb: Parallel multi-VM migration and tests reconfiguration Patchwork
2026-10-15 11:37 ` ✓ i915.CI.Full: " Patchwork
2026-10-15 15:21 ` ✓ Xe.CI.BAT: " Patchwork
2026-10-15 20:09 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-10-15 21:35 ` Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2c57bd4d-1cb5-433a-92c1-347ea6106941@linux.intel.com \
    --to=marcin.bernatowicz@linux.intel.com \
    --cc=adam.miszczak@linux.intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=kamil.konieczny@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox