Switch to KVM hypervisor on Rb3Gen2-Core-Kit and QCM6490-IDP - #2879
Viswanath Kraleti (vkraleti) wants to merge 10 commits into
Conversation
7d56df9 to
a0d5c14
Compare
Test Results 119 files + 51 715 suites +396 8h 8m 26s ⏱️ + 2h 20m 43s 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.♻️ This comment has been updated with latest results. |
c9890b0 to
d3973df
Compare
|
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. |
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, |
d3973df to
b6c9efc
Compare
b6c9efc to
373420d
Compare
|
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? |
bcecb66 to
ff7380b
Compare
|
|
||
| # 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" |
There was a problem hiding this comment.
This will break capsule update for rb3gen2 as it is still using xbl_config.elf (the kvm logic is only in qcomflash).
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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).
There was a problem hiding this comment.
We can merge based on #3045 as well, then we can include the boot firmware changes that would switch the default xbl_config.
There was a problem hiding this comment.
Rebased.
|
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 |
ff7380b to
c83d9ff
Compare
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" |
There was a problem hiding this comment.
Viswanath Kraleti (@vkraleti) Why can't this be as easy as this?
|
Dmitry Baryshkov (@lumag) this is possible once UEFI supports switching b/w KVM and Gunyah with just xbl_config update. I'll drop |
c83d9ff to
44f5115
Compare
Done. |
44f5115 to
17ba272
Compare
|
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>
17ba272 to
d26a0cc
Compare
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.