Skip to content

feat(itf): add dual-QEMU ivshmem integration-test environment#617

Draft
Rahul-Sutariya wants to merge 3 commits into
eclipse-score:mainfrom
Rahul-Sutariya:rasu_dual_qemu_intergation_test_plugin
Draft

feat(itf): add dual-QEMU ivshmem integration-test environment#617
Rahul-Sutariya wants to merge 3 commits into
eclipse-score:mainfrom
Rahul-Sutariya:rasu_dual_qemu_intergation_test_plugin

Conversation

@Rahul-Sutariya

@Rahul-Sutariya Rahul-Sutariya commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Add a dual_qemu ITF/pytest plugin that boots two QNX VMs sharing one QEMU ivshmem-plain region, extending the upstream single-VM qemu plugin.

  • plugin: config.py, ivshmem_qemu.py, dual_qemu_process.py, init.py (target_a/target_b fixtures; sequential boot to avoid KVM race), BUILD, example config, README, example/run_example_manually.sh.
  • integration_testing.bzl: dual_qemu_integration_test macro (QNX-only, flaky).
  • example: offset_list.h + qemu_shared_ivshmem.cpp map the ivshmem BAR via pci-server and exchange a self-relative offset-pointer list, proving cross-VM pointer resolution; qemu_shared_ivshmem_test.py verifies both VMs.

Add a `dual_qemu` ITF/pytest plugin that boots two QNX VMs sharing one
QEMU ivshmem-plain region, extending the upstream single-VM `qemu` plugin.

- plugin: config.py, ivshmem_qemu.py, dual_qemu_process.py, __init__.py
  (target_a/target_b fixtures; sequential boot to avoid KVM race), BUILD,
  example config, README, example/run_example_manually.sh.
- integration_testing.bzl: dual_qemu_integration_test macro (QNX-only, flaky).
- example: offset_list.h + simple_ivshmem.cpp map the ivshmem BAR via
  pci-server and exchange a self-relative offset-pointer list, proving
  cross-VM pointer resolution; simple_ivshmem_test.py verifies both VMs.
note: Cross-VM shared memory forces the region onto the ivshmem PCI BAR (device/SHMCTL_PHYS memory),
but the production lib-memory ControlBlock puts a process-shared pthread_mutex there and locks it during init.

QNX refuses to operate a process-shared mutex on device-mapped BAR memory (returns EINVAL even with write-back caching),
so the producer aborts — making the umbrella score::memory::shared unusable over ivshmem, unlike the mutex-free demo.
@Rahul-Sutariya Rahul-Sutariya force-pushed the rasu_dual_qemu_intergation_test_plugin branch from 19dd911 to de939e0 Compare July 7, 2026 12:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant