Decode · Qualcomm

QSEE A/B slots (0:qsee, 0:qsee_1) explained

[    1.312391] 0x000000600000-0x000000900000 : "0:qsee"
[    1.318954] 0x000000300000-0x000000600000 : "0:qsee_1"

On a Qualcomm IPQ platform, the kernel's MTD partition dump will show two QSEE partitions: 0:qsee and 0:qsee_1. Same pattern for 0:appsblbak (APPSBL backup) and typically 0:tzbak and others.

This is Qualcomm's A/B slot pattern for the Qualcomm Secure Execution Environment image. Purpose: if a QSEE update fails mid-flash or the newly-flashed image fails signature verification on next boot, the boot ROM falls back to the previous known-good slot. Common in every OEM firmware lifecycle that has to support field updates.

Whether rollback protection (preventing an attacker from downgrading to a signed-but-vulnerable older QSEE image) is actually enforced is a separate question. QFPROM anti-rollback fuses can gate this, but on IPQ networking parts they usually are not burned by the OEM: the anti-rollback threat model was built for phones.

Also worth naming: which slot is *currently* running is not visible from the MTD partition dump alone; you need the QSEE metadata to know. The addresses in the log above (0:qsee at 0x600000, 0:qsee_1 at 0x300000) are just where the two slots live in flash.

References

Full walkthrough: /blog/qualcomm-sbl-secure-boot

Source log: /samples/bootintel-4.txt

More decoders: /decode · /faq

Have a boot log with something you can't decode? Paste it into the free fingerprinter. It identifies bootloader / kernel / SoC / autoboot exposure client-side, nothing uploaded.