Skip to content

Conversation

@shoudil
Copy link
Contributor

@shoudil shoudil commented Nov 14, 2025

To support Homoa IoT EVK board on meta-qcom, includes:

  1. Add machine conf
  2. Consume boot firmware from external release.
  3. Upgrade qcom-ptool to consume partition conf.
  4. Support to create flat build with non-hlos images for spinor.
  5. Pack DTB in UKI as current uefi don't support to load dtb.bin.
  6. Add nvme kernel config to mount rootfs normally.
  7. kas configuration and github CI support.

Depends on:
qualcomm-linux/qcom-ptool#51
qualcomm-linux/qcom-ptool#52

The generated flashable builds include builds for spinor and nvme:
tree -L 2 core-image-base-iq-x7181-evk.rootfs-20251116102537.qcomflash
core-image-base-iq-x7181-evk.rootfs-20251116102537.qcomflash
|-- dtb.bin
|-- dtb-hamoa-iot-evk-image.vfat
|-- efi.bin
|-- gpt_backup0.bin
|-- gpt_main0.bin
|-- patch0.xml
|-- rawprogram0.xml
|-- rootfs.img
|-- spinor
| |-- adsp_dtbs.elf
| |-- adsp_lite.lzma
| |-- aop_devcfg.mbn
| |-- aop.mbn
| |-- cpucp_dtbs.elf
| |-- cpucp.elf
| |-- devcfg_windows_hyp.mbn
| |-- gpt_backup0.bin
| |-- gpt_both0.bin
| |-- gpt_empty0.bin
| |-- gpt_main0.bin
| |-- hypvm.mbn
| |-- imagefv.elf
| |-- multi_image.mbn
| |-- patch0.xml
| |-- qupv3fw.elf
| |-- rawprogram0_BLANK_GPT.xml
| |-- rawprogram0_WIPE_PARTITIONS.xml
| |-- rawprogram0.xml
| |-- shrm.elf
| |-- tzapps.bin
| |-- tz.mbn
| |-- uefi.elf
| |-- wipe_rawprogram_PHY0.xml
| |-- wipe_rawprogram_PHY1.xml
| |-- wipe_rawprogram_PHY2.xml
| |-- wipe_rawprogram_PHY4.xml
| |-- wipe_rawprogram_PHY5.xml
| |-- wipe_rawprogram_PHY6.xml
| |-- wipe_rawprogram_PHY7.xml
| |-- xbl_config.elf
| |-- XblRamdump.xz
| |-- xbl_s_devprg_ns.melf
| |-- xbl_s.melf
| |-- zeros_1sector.bin
| |-- zeros_33sectors.bin
| -- zeros_5sectors.bin |-- vmlinux |-- xbl_s_devprg_ns.melf |-- zeros_1sector.bin -- zeros_33sectors.bin

@shoudil shoudil force-pushed the hamoa-iot-evk-support branch from 01aaa27 to 4a7dd63 Compare November 14, 2025 08:39

do_deploy:append() {
install -d ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR}/spinor
find "${S}/spinor" -maxdepth 1 -name '*.bin' -exec install -m 0644 {} ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR}/spinor \;
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't understand why you need to create the 'spinor' subfolder in DEPLOYDIR

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is to align the directory structure in released boot binaries.
shoudil@shoudil2-gv:/local/mnt/workspace2/shoudil/Hamoa_Yocto_Mainine$ ls -l IQ-X.1.0-Ver.1.1-ubuntu-X1E80100-nhlos-bin*
-rw-r----- 1 shoudil users 17016 Nov 13 20:27 IQ-X.1.0-Ver.1.1-ubuntu-X1E80100-nhlos-bins.tar.gz
-rw-r----- 1 shoudil users 17016 Nov 13 20:27 IQ-X.1.0-Ver.1.1-ubuntu-X1E80100-nhlos-bins.tar.gz.1

IQ-X.1.0-Ver.1.1-ubuntu-X1E80100-nhlos-bins:
total 4
drwxr-xr-x 2 shoudil users 4096 Oct 14 15:27 spinor
shoudil@shoudil2-gv:/local/mnt/workspace2/shoudil/Hamoa_Yocto_Mainine$ tree -L 2 IQ-X.1.0-Ver.1.1-ubuntu-X1E80100-nhlos-bins
IQ-X.1.0-Ver.1.1-ubuntu-X1E80100-nhlos-bins
`-- spinor
|-- adsp_dtbs.elf
|-- adsp_lite.lzma
|-- aop_devcfg.mbn
|-- aop.mbn
|-- cpucp_dtbs.elf

Copy link
Contributor

Choose a reason for hiding this comment

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

This is to align the directory structure in released boot binaries.

This doesn't really answer the 'why' question.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated with "spinor" included in QCOM_BOOT_IMG_SUBDIR.

@lumag
Copy link
Contributor

lumag commented Nov 14, 2025

To support homa iot evk board on meta-qcom, includes:

hamoa, IoT, EVK (also please fix PR subject)

@shoudil shoudil changed the title Hamoa iot evk support Hamoa IoT EVK support Nov 17, 2025
@github-actions
Copy link

Test run workflow

Test jobs for commit 4a7dd63

@github-actions
Copy link

Test Results

 14 files  ±0   28 suites  ±0   33m 31s ⏱️ + 3m 11s
 50 tests ±0   50 ✅ ±0  0 💤 ±0  0 ❌ ±0 
304 runs  ±0  304 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 4a7dd63. ± Comparison against base commit 36fd613.

@shoudil shoudil force-pushed the hamoa-iot-evk-support branch from 4a7dd63 to 4432991 Compare November 19, 2025 06:39
Copy link
Contributor

@lumag lumag left a comment

Choose a reason for hiding this comment

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

Also:

2025-11-19 07:07:41 - INFO     - | find: ‘/work/build/tmp/work/all-qcom-linux/firmware-qcom-boot-x7181/1.1/sources/IQ-X7181_bootbinaries/spinor’: No such file or directory


do_deploy:append() {
install -d ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR}/spinor
find "${S}/spinor" -maxdepth 1 -name '*.bin' -exec install -m 0644 {} ${DEPLOYDIR}/${QCOM_BOOT_IMG_SUBDIR}/spinor \;
Copy link
Contributor

Choose a reason for hiding this comment

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

This is to align the directory structure in released boot binaries.

This doesn't really answer the 'why' question.

# skip BLANK_GPT and WIPE_PARTITIONS for rawprogram xml files
for rawpg in `find ${DEPLOY_DIR_IMAGE}/${QCOM_PARTITION_FILES_SUBDIR} -maxdepth 1 -type f -name 'rawprogram*.xml' \
! -name 'rawprogram*_BLANK_GPT.xml' ! -name 'rawprogram*_WIPE_PARTITIONS.xml'`; do
install -m 0644 ${rawpg} .
Copy link
Contributor

Choose a reason for hiding this comment

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

Meanwhile, copy the programer outside
of spinor folder to be part of NVME flat build.

Why?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

NVME flat build include partition bins, hlos images efi.bin, rootfs.img and programmer to support build flash.

Copy link
Contributor

Choose a reason for hiding this comment

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

That's not an answer for the question. Please add a comment that you are reusing SPI-NOR programmer for NVMe.

Copy link
Contributor

Choose a reason for hiding this comment

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

Also, maybe it's too platform specific. Should it be done in bootbins?

Copy link
Contributor

Choose a reason for hiding this comment

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

Still not addressed

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is part of qcom flashable images deployment, should be implemented in create_qcomflash_pkg().

Copy link
Contributor

Choose a reason for hiding this comment

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

Can't understand your response.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated with below (in create_qcomflash_pkg):
if [ -e "${DEPLOY_DIR_IMAGE}/${QCOM_BOOT_FILES_SUBDIR}/xbl_s_devprg_ns.melf" ]; then
install -m 0644 "${DEPLOY_DIR_IMAGE}/${QCOM_BOOT_FILES_SUBDIR}/xbl_s_devprg_ns.melf" .
fi

Copy link
Contributor

Choose a reason for hiding this comment

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

No, this is still machine-specific. Move that part to the IQ-X7181 boot binaries recipe.

@koenkooi
Copy link
Contributor

Please use git rebase instead of git merge, PRs should never contain merge commits.

@shoudil shoudil force-pushed the hamoa-iot-evk-support branch 2 times, most recently from 04acbf1 to 384bc3b Compare November 24, 2025 11:06
Copy link
Contributor

@lumag lumag left a comment

Choose a reason for hiding this comment

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

@shoudil I see a lot unresolved ocmments from the previous review cycles. Why were they ignored?

@github-actions
Copy link

Test run workflow

Test jobs for commit 384bc3b

@test-reporting-app
Copy link

test-reporting-app bot commented Nov 24, 2025

Test Results

 14 files  ±0   28 suites  ±0   33m 56s ⏱️ + 1m 3s
 50 tests ±0   50 ✅ ±0  0 💤 ±0  0 ❌ ±0 
304 runs  ±0  304 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit b0fbcac. ± Comparison against base commit 3e7e427.

♻️ This comment has been updated with latest results.

@shoudil
Copy link
Contributor Author

shoudil commented Nov 25, 2025

Also:

2025-11-19 07:07:41 - INFO     - | find: ‘/work/build/tmp/work/all-qcom-linux/firmware-qcom-boot-x7181/1.1/sources/IQ-X7181_bootbinaries/spinor’: No such file or directory

This issue got resolved in new push.

@lumag
Copy link
Contributor

lumag commented Nov 25, 2025

This issue got resolved in new push.

Please resolve all review comments instead of fixing them one by one

@shoudil
Copy link
Contributor Author

shoudil commented Nov 25, 2025

@shoudil I see a lot unresolved ocmments from the previous review cycles. Why were they ignored?

Several issues need to check on one board, will resolve them ASAP.

Copy link
Contributor

@lumag lumag left a comment

Choose a reason for hiding this comment

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

I will not approve "Proprietary" licence. Please change it to one of Qualcomm binary licenses (check with the corresponding team, which one should be used).

@shoudil
Copy link
Contributor Author

shoudil commented Dec 26, 2025

If @mwasilew flashes the resulting binaries, would he be able to boot the board?

Yes, able to boot (as non-hlos release tag r1.0.r1_00004.0 used).

@shoudil shoudil force-pushed the hamoa-iot-evk-support branch from 1ec1b07 to 39ac63b Compare December 26, 2025 08:21
@shoudil
Copy link
Contributor Author

shoudil commented Dec 26, 2025

I will not approve "Proprietary" licence. Please change it to one of Qualcomm binary licenses (check with the corresponding team, which one should be used).

Modified it as "LICENSE.qcom-2" in e4fa14b, BTW, is it also fine to use the licenses from meta-qcom itself instead of the one from package source ?
https://github.com/qualcomm-linux/meta-qcom/tree/master/licenses
I checked several LICENSE.qcom-2 files from package source, looks file formats and hash values are not same, this can be avoided if we use same LICENSE files (example from meta-qcom itself):
Examples:
dynamic-layers/openembedded-layer/recipes-support/sensors/qcom-sensors-binaries_1.0.3.bb:LICENSE = "LICENSE.qcom-2"
dynamic-layers/openembedded-layer/recipes-support/sensors/qcom-sensors-binaries_1.0.3.bb:LIC_FILES_CHKSUM = "file://LICENSE.qcom-2;md5=f33ba334514c4dfabc6ab7377babb377"

recipes-graphics/adreno/qcom-adreno_1.838.3.bb:LICENSE = "LICENSE.qcom-2"
recipes-graphics/adreno/qcom-adreno_1.838.3.bb-LIC_FILES_CHKSUM = "file://NO.LOGIN.BINARY.LICENSE.QTI.pdf;md5=4ceffe94cb40cdce6d2f4fb93cc063d1 \

recipes-test/diag-router/diag-router_1.0.2.bb:LICENSE = "LICENSE.qcom-2"
recipes-test/diag-router/diag-router_1.0.2.bb-LIC_FILES_CHKSUM = "file://usr/share/doc/diag-router/NO.LOGIN.BINARY.LICENSE.QTI.pdf;md5=7a5da794b857d786888bbf2b7b7529c8"

recipes-bsp/hexagon-dsp-binaries/hexagon-dsp-binaries_20251125.bb: file://LICENSE.qcom-2;md5=165287851294f2fb8ac8cbc5e24b02b0 \

@lumag
Copy link
Contributor

lumag commented Dec 26, 2025

BTW, is it also fine to use the licenses from meta-qcom itself instead of the one from package source ? https://github.com/qualcomm-linux/meta-qcom/tree/master/licenses I checked several LICENSE.qcom-2 files from package source, looks file formats and hash values are not same, this can be avoided if we use same LICENSE files

What would it mean? LIC_FILES_CHKSUM checksums the source files, so that the check fails if the license changes.

Use the boot firmware from external release to generate spinor flat
build for IQ-X7181 platform.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
Deploy the boot firmware files which are used on iq-x7181-evk platform.
Meanwhile ajdust the file match rule to deploy CDT file.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
@shoudil shoudil force-pushed the hamoa-iot-evk-support branch from 39ac63b to f07ca1a Compare December 27, 2025 03:51
@shoudil
Copy link
Contributor Author

shoudil commented Dec 27, 2025

BTW, is it also fine to use the licenses from meta-qcom itself instead of the one from package source ? https://github.com/qualcomm-linux/meta-qcom/tree/master/licenses I checked several LICENSE.qcom-2 files from package source, looks file formats and hash values are not same, this can be avoided if we use same LICENSE files

What would it mean? LIC_FILES_CHKSUM checksums the source files, so that the check fails if the license changes.

It's compiling fine for packages, just a bit confused same license "LICENSE.qcom-2" have multiple file formats/names/hashvalues in different packages.

Copy link
Contributor

@lumag lumag left a comment

Choose a reason for hiding this comment

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

Other than the order if two commits LGTM.

Add fucntion deploy_partition_files to take care of partition files
deployment, and call it in flashable images generation.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
Spinor firmware is needed on IQ-X7181 based devices, use the external
released non-hlos images and deploy them to generate the flat build for
spinor flash. Meanwhile, copy the programer outside of spinor folder to
be part of NVMe flat build.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
Define a package with hamoa-soc specific kernel modules

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
Upgrade qcom-ptool to consume partition conf files added for IQ-X7181
platform.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
Enable kernel config to probe NVMe driver normally, which help
to fix rootfs mount failure.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
Add machine configuration file for IQ-X7181 platform, specify the paths
of partition binaries for both NVMe and spinor, where partition bins
will be consumed to create flat builds.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
Pack DTB inside Unified Kernel Image to ensure proper device
tree handling during boot.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
This is the kas config file to support building iq-x7181-evk.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
Update github workflow to build iq-x7181-evk in CI.

Signed-off-by: Shoudi Li <shoudil@qti.qualcomm.com>
@shoudil shoudil force-pushed the hamoa-iot-evk-support branch from f07ca1a to b0fbcac Compare December 28, 2025 02:13
Copy link
Contributor

@lumag lumag left a comment

Choose a reason for hiding this comment

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

Thanks a lot!

@github-actions
Copy link

Test run workflow

Test jobs for commit b0fbcac

@shoudil shoudil requested a review from koenkooi December 29, 2025 03:49
@lumag lumag merged commit 857b8ca into qualcomm-linux:master Dec 29, 2025
139 of 228 checks passed
@mwasilew
Copy link
Contributor

mwasilew commented Jan 6, 2026

I flashed the board and got it booting. It shows NVME drive:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS                                                  
sda           8:0    0 238.4G  0 disk                                                              
zram0       253:0    0     0B  0 disk                                                              
nvme0n1     259:0    0 476.9G  0 disk                                                              
|-nvme0n1p1 259:1    0   512M  0 part /efi                                                         
`-nvme0n1p2 259:2    0 476.4G  0 part /    

This is good enough for a health check.

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.

8 participants