Skip to content

Switch to KVM hypervisor on Rb3Gen2-Core-Kit and QCM6490-IDP - #2879

Open
Viswanath Kraleti (vkraleti) wants to merge 10 commits into
qualcomm-linux:masterfrom
vkraleti:kodiak-kvm
Open

Viswanath Kraleti (vkraleti) wants to merge 10 commits into
qualcomm-linux:masterfrom
vkraleti:kodiak-kvm

Conversation

@vkraleti

@vkraleti Viswanath Kraleti (vkraleti) commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

All PILs are functioning correctly with KVM on Rb3Gen2-Core-Kit and QCM6490-IDP. Update
FIT_DTB_COMPATIBLE entries and machine configurations to switch to KVM on these boards.

Comment thread .github/workflows/build-yocto.yml
Comment thread .github/workflows/build-yocto.yml Outdated
@qcomlnxci

Copy link
Copy Markdown

Test Coral run workflow

Test jobs for commit c4dcacb

  • qcomdistro: multimedia image-prop
    Pass: 38 | Fail: 3 | Others: 12 | Total: 53
  • qcomdistro: multimedia image
    Pass: 8 | Fail: 1 | Total: 9

@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown

Test run workflow

Test jobs for commit 17ba272

qcom-distro
Pass: 253 | Fail: 23 | Total: 296
qcom-distro_linux-qcom-6.18
Pass: 180 | Fail: 2 | Total: 198
nodistro
Pass: 9 | Fail: 1 | Total: 10

@test-reporting-app

test-reporting-app Bot commented Aug 19, 2026

Copy link
Copy Markdown

Test Results

  119 files  +   51    715 suites  +396   8h 8m 26s ⏱️ + 2h 20m 43s
  175 tests +   22    149 ✅ +    6   2 💤 + 2  24 ❌ +14 
4 595 runs  +2 492  4 501 ✅ +2 443  61 💤 +28  33 ❌ +21 

For more details on these failures, see this check.

Results for commit 44f5115. ± Comparison against base commit 0397e37.

This pull request removes 2 and adds 24 tests. Note that renamed tests count towards both.
lava ‑ auto-login-action
lava ‑ minimal-boot
10_Logging_Journalctl_Validation ‑ Logging_Journalctl_Validation
11_Partition_PostBoot_Validation ‑ Partition_PostBoot_Validation
12_Boot_Systemd_KPI_Loop ‑ Boot_Systemd_KPI_Loop
5_OpenCV ‑ OpenCV
6_Ethernet ‑ Ethernet
6_irq ‑ irq
7_BT_ON_OFF ‑ BT_ON_OFF
7_Docker_Kernel_Config ‑ Docker_Kernel_Config
8_AudioRecord ‑ AudioRecord
8_EFI_Variable_Validation ‑ EFI_Variable_Validation
…

♻️ This comment has been updated with latest results.

@qcomlnxci

Copy link
Copy Markdown

Test Coral run workflow

Test jobs for commit a0d5c14

  • qcomdistro: multimedia image-prop
    Pass: 26 | Fail: 0 | Total: 26
  • qcomdistro: multimedia image
    Pass: 9 | Fail: 0 | Total: 9

Comment thread ci/gunyah.yml Outdated
Comment thread .github/workflows/build-yocto.yml Outdated
Comment thread conf/machine/include/fit-dtb-compatible-linux-qcom.inc Outdated
Comment thread .github/workflows/build-yocto.yml Outdated
Comment thread .github/workflows/build-yocto.yml
@vkraleti
Viswanath Kraleti (vkraleti) force-pushed the kodiak-kvm branch 2 times, most recently from c9890b0 to d3973df Compare August 20, 2026 10:55
@qcomlnxci

Copy link
Copy Markdown

Test Coral run workflow

Test jobs for commit d3973df

  • qcomdistro: multimedia image-prop
    Pass: 44 | Fail: 0 | Total: 44
  • qcomdistro: multimedia image
    Pass: 9 | Fail: 0 | Total: 9

@vkraleti

Copy link
Copy Markdown
Contributor Author

Dmitry Baryshkov (@lumag) Ricardo Salveti (@ricardosalveti) KVM enablement for QCS6490 is planned for the upcoming release, and we are running short on time to complete the full L4 test cycle. Could you please review this PR and let me know if you see any issues or required modifications?

As you are already aware, supporting both hypervisors is being tracked in another PR, on which we can continue discussions for a clean switching solution.

@lumag

Copy link
Copy Markdown
Contributor

KVM enablement for QCS6490 is planned for the upcoming release,

We have two different items here. KVM enablement and KVM being a default. Could we separate them? I don't think we require KVM being a default for completing L4 testing?

@vkraleti

Copy link
Copy Markdown
Contributor Author

KVM enablement for QCS6490 is planned for the upcoming release,

We have two different items here. KVM enablement and KVM being a default. Could we separate them? I don't think we require KVM being a default for completing L4 testing?

Commitment for Sep release is to switch to default KVM and perform complete L4 testing on KVM.

@lumag

Copy link
Copy Markdown
Contributor

KVM enablement for QCS6490 is planned for the upcoming release,

We have two different items here. KVM enablement and KVM being a default. Could we separate them? I don't think we require KVM being a default for completing L4 testing?

Commitment for Sep release is to switch to default KVM and perform complete L4 testing on KVM.

This means it must be implemented correctly. No shortcuts,

@vkraleti Viswanath Kraleti (vkraleti) changed the title Enable KVM by default on Rb3Gen2-Core-Kit and QCM6490-IDP Switch to KVM hypervisor on Rb3Gen2-Core-Kit and QCM6490-IDP Sep 1, 2026
@vkraleti

Copy link
Copy Markdown
Contributor Author

Dmitry Baryshkov (@lumag) Ricardo Salveti (@ricardosalveti) as discussed over the call with sahitya-tummala, I updated the commit messages in the current PR and also created #3052 to add Gunyah support in CI. Can you please review?

Comment thread conf/machine/include/fit-dtb-compatible-linux-qcom.inc Outdated
@vkraleti
Viswanath Kraleti (vkraleti) force-pushed the kodiak-kvm branch 2 times, most recently from bcecb66 to ff7380b Compare September 14, 2026 10:06
@qcomlnxci

Copy link
Copy Markdown

Test Coral run workflow

Test jobs for commit ff7380b

  • qcomdistro: multimedia image
    Pass: 9 | Fail: 0 | Total: 9
  • qcomdistro: multimedia image-prop
    Pass: 41 | Fail: 0 | Total: 41


# NOTE: TPM hardware is only present on rb3gen2-industrial kit
MACHINE_FEATURES += "efi m2connector pci tpm2 phone"
MACHINE_FEATURES += "efi kvm m2connector pci tpm2 phone"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This will break capsule update for rb3gen2 as it is still using xbl_config.elf (the kvm logic is only in qcomflash).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Discussed this case with the Target team. ishnajain (@ishnajain-qcom) uchitroj-qcom agreed to provide an updated bootbins/Meta build where KVM's config is going to be copied as default xbl_config.elf. This switch can happen only after HLOS also switch i.e. post merging this PR.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Merging this PR will break capsule update, so the firmware update should go along with this PR.

Are we expecting a new boot firmware to be provided before 2.1? Otherwise we should just change the capsule update logic to handle other xbl_configs (as it will be needed for gunyah anyway, since capsule should work with both).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

#3165 is to rename XBL_Config.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We can merge based on #3045 as well, then we can include the boot firmware changes that would switch the default xbl_config.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

#3045 is now merged.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Rebased.

Comment thread conf/machine/include/fit-dtb-compatible-linux-qcom.inc Outdated
@ricardosalveti

Copy link
Copy Markdown
Contributor

CI also needs an update as with kvm in MACHINE_FEATURES the rb3gen2-core-kit qcom-distro-kvm job is now the same build as qcom-distro, can we replace it with a gunyah build? Otherwise nothing will be covering it.

@vkraleti

Viswanath Kraleti (vkraleti) commented Sep 15, 2026

Copy link
Copy Markdown
Contributor Author

CI also needs an update as with kvm in MACHINE_FEATURES the rb3gen2-core-kit qcom-distro-kvm job is now the same build as qcom-distro, can we replace it with a gunyah build? Otherwise nothing will be covering it.

I have a open PR for this #3052

@qcomlnxci

Copy link
Copy Markdown

Test Coral run workflow

Test jobs for commit c83d9ff

  • qcomdistro: multimedia image
    Pass: 9 | Fail: 0 | Total: 9
  • qcomdistro: multimedia image-prop
    Pass: 41 | Fail: 0 | Total: 41

@ricardosalveti

Copy link
Copy Markdown
Contributor

CI also needs an update as with kvm in MACHINE_FEATURES the rb3gen2-core-kit qcom-distro-kvm job is now the same build as qcom-distro, can we replace it with a gunyah build? Otherwise nothing will be covering it.

I have a open PR for this #3052

We should at least drop the qcom-distro-kvm job for rb3gen2 as part of this pr.

FIT_DTB_COMPATIBLE[qcom_qcm6490-idp-staging] = "qcm6490-idp kodiak-staging"
FIT_DTB_COMPATIBLE[qcom_qcm6490-idp-el2kvm] = "qcm6490-idp kodiak-el2"
FIT_DTB_COMPATIBLE[qcom_qcm6490-idp-staging] = "qcm6490-idp kodiak-el2 kodiak-staging"
FIT_DTB_COMPATIBLE[qcom_qcm6490-idp] = "qcm6490-idp kodiak-el2"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Viswanath Kraleti (@vkraleti) Why can't this be as easy as this?

@vkraleti

Copy link
Copy Markdown
Contributor Author

Dmitry Baryshkov (@lumag) this is possible once UEFI supports switching b/w KVM and Gunyah with just xbl_config update. I'll drop -el2gh substring entries once the enhanced UEFI is consumed by meta-qcom.

@vkraleti

Copy link
Copy Markdown
Contributor Author

CI also needs an update as with kvm in MACHINE_FEATURES the rb3gen2-core-kit qcom-distro-kvm job is now the same build as qcom-distro, can we replace it with a gunyah build? Otherwise nothing will be covering it.

I have a open PR for this #3052

We should at least drop the qcom-distro-kvm job for rb3gen2 as part of this pr.

Done.

@qcomlnxci

Copy link
Copy Markdown

Test Coral run workflow

Test jobs for commit 44f5115

  • qcomdistro: multimedia image-prop
    Pass: 41 | Fail: 0 | Total: 41
  • qcomdistro: multimedia image
    Pass: 9 | Fail: 0 | Total: 9

@vkraleti

Copy link
Copy Markdown
Contributor Author

Dmitry Baryshkov (@lumag) Ricardo Salveti (@ricardosalveti) rebased on tip to resolve conflicts. Can you recheck?

The el2gh suffix selects the Gunyah hypervisor variant of a board's
compatible string, the same way el2kvm selects the KVM variant. Like
camx and staging, it is a feature/hypervisor selector rather than board
metadata, so it has no corresponding node in qcom-metadata.dtb.

test_fitimage_compatible_metadata_validation validates every
dash-separated suffix of the generated ITS compatible strings against
the metadata node names, and so already fails today on the pre-existing
el2gh entries in fit-dtb-compatible-linux-qcom.inc. Add el2gh to the
skip set to match the metadata-check script's blacklist, and to
COMPAT_EXTENSIONS so the unit-level fixtures stay in sync.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
KVM is the preffered hypervisor for Qualcomm Linux SoCs. Gunyah was
used as an interim solution till KVM is fully functional. Now that
KVM support on Rb3Gen2 Core Kit has been validated, it no longer
requires Gunyah as an interim solution.

Add 'kvm' to MACHINE_FEATURES so that the KVM-specific XBL configuration
is selected during boot. This switches the default hypervisor to KVM and
aligns Rb3Gen2 Core Kit with IQ-615-EVK, IQ-8275-EVK, and IQ-9075-EVK.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
KVM is the preffered hypervisor for Qualcomm Linux SoCs. Gunyah was
used as an interim solution till KVM is fully functional. Now that
KVM support on QCM6490-IDP has been validated, it no longer requires
Gunyah as an interim solution.

Add 'kvm' to MACHINE_FEATURES so that the KVM-specific XBL configuration
is selected during boot. This switches the default hypervisor to KVM and
aligns QCM6490-IDP with IQ-615-EVK, IQ-8275-EVK, and IQ-9075-EVK.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
Kodiak FIT_DTB_COMPATIBLE entries currently use el2kvm-suffixed
compatible strings to load el2.dtbo. As KVM is the default hypervisor
now, update the compatible entries to load kodiak-el2.dtbo without
requiring this suffix.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
Dropping the el2kvm suffix from Kodiak FIT_DTB_COMPATIBLE keys leaves
four keys, qcom_qcs5430-iot-camx, qcom_qcs5430-iot-subtype2-camx,
qcom_qcs6490-iot-camx and qcom_qcs6490-iot-subtype2-camx, each defined
twice with different values. Drop the stale first occurrence of each
of the four keys, keeping the kodiak-el2-inclusive value that these
are supposed to be resolving to.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
Kodiak's FIT_DTB_COMPATIBLE entries now default to the kvm hypervisor
overlay, but there was no way to select the Gunyah hypervisor instead,
since the entries that used to opt out of a hypervisor overlay were
renamed to the kvm-default ones in a previous commit.

Add an "-el2gh" suffixed entry alongside every kodiak entry, carrying
the same DTB/overlay stems minus the "kodiak-el2" overlay, so distro
configurations can still build a kodiak image without the kvm
hypervisor.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
The kodiak "-staging" FIT_DTB_COMPATIBLE entries carried no hypervisor
overlay, unlike their non-staging counterparts, which were switched to
default to the kvm hypervisor in a previous commit. Append "kodiak-el2"
to the "-staging" entries' values so they default to kvm as well,
consistent with the rest of the kodiak entries.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
Kodiak `-staging` FIT_DTB_COMPATIBLE entries now default to the KVM
hypervisor overlay, but there was no way to select the Gunyah since
the entries that used to opt out of a hypervisor overlay were folded
into the kvm-default ones in the previous commit.

Add an "-el2gh" suffixed entry alongside every kodiak `-staging` entry,
carrying the same DTB/overlay stems minus the "kodiak-el2" overlay, so
distro configurations can still build a kodiak image without the kvm
hypervisor.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
The rb3gen2-core-kit-open-fw machine inherit base rb3gen2-core-kit
machine configuration which now has 'kvm' by default. The KAS
fragment it was using to inject 'kvm' is therefore redundant, so
switch the CI entry from qcom-distro-kvm to qcom-distro.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
KVM is now enabled by default on Rb3Gen2-Core-Kit, making the
dedicated KVM build is redundent.

Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants