[PATCH v3 4/8] mach-snapdragon: implement capsule update support

Caleb Connolly caleb.connolly at linaro.org
Wed Jun 5 14:33:34 CEST 2024


Hi Sumit,
>> +/**
>> + * qcom_configure_capsule_updates() - Configure the DFU string for capsule updates
>> + *
>> + * U-Boot is flashed to the boot partition on Qualcomm boards. In most cases there
>> + * are two boot partitions, boot_a and boot_b. As we don't currently support doing
>> + * full A/B updates, we only support updating the currently active boot partition.
>> + *
>> + * So we need to find the current slot suffix and the associated boot partition.
>> + * We do this by looking for the boot partition that has the 'active' flag set
>> + * in the GPT partition vendor attribute bits.
>> + */
>> +void qcom_configure_capsule_updates(void)
>> +{
>> +       struct blk_desc *desc;
>> +       int ret = 0, partnum = -1, devnum;
>> +       static char dfu_string[32] = { 0 };
>> +       char name[32]; /* GPT partition name */
>> +       char *partname = "boot";
>> +       struct udevice *dev = NULL;
>> +
>> +       /*
>> +        * There is currently no good way to check how U-Boot is booting, but we have
>> +        * a few hueristics, like here checking if our DTB has a kaslr-seed specified
>> +        * will tell us if we were chainloaded by another bootloader.
>> +        * FIXME: we should do this check once and use some proper API to expose the data.
> 
> If U-Boot is built with LINUX_KERNEL_IMAGE_HEADER enabled then we
> should know that U-Boot is built as a replacement of Linux kernel and
> hence chainloaded. Isn't that what you need here?

Not necessarily, you can build with LINUX_KERNEL_IMAGE_HEADER and then 
pack U-Boot into XBL or flash it to hyp and it will still run (the 
kernel header is specifically written to behave like a nop slide). So we 
can't rely on this.
> 
> -Sumit
> 

Kind regards,

-- 
// Caleb (they/them)


More information about the U-Boot mailing list