Re: [PATCH v2 1/5] boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
Hi, Le 13/06/2024 à 12:13, Mattijs Korpershoek a écrit : When calling android_image_get_dtb_by_index() using boot image v3+, we should also pass the vendor_boot ramdisk address. Use get_avendor_bootimg_addr() to do so. Notes: on boot image v2, this is harmless since get_avendor_bootimg_addr() returns -1. for legacy implementations that don't have CMD_ABOOTIMG, add a weak implementation to avoid linking errors. Signed-off-by: Mattijs Korpershoek --- boot/image-android.c | 5 + boot/image-fdt.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/boot/image-android.c b/boot/image-android.c index ee626972c114..09c7a44e058a 100644 --- a/boot/image-android.c +++ b/boot/image-android.c @@ -56,6 +56,11 @@ static ulong add_trailer(ulong bootconfig_start_addr, ulong bootconfig_size) return BOOTCONFIG_TRAILER_SIZE; } +__weak ulong get_avendor_bootimg_addr(void) +{ + return -1; +} + static void android_boot_image_v3_v4_parse_hdr(const struct andr_boot_img_hdr_v3 *hdr, struct andr_image_data *data) { diff --git a/boot/image-fdt.c b/boot/image-fdt.c index 56dd7687f51c..8332792b8e80 100644 --- a/boot/image-fdt.c +++ b/boot/image-fdt.c @@ -502,7 +502,7 @@ int boot_get_fdt(void *buf, const char *select, uint arch, * Firstly check if this android boot image has dtb field. */ dtb_idx = (u32)env_get_ulong("adtb_idx", 10, 0); - if (android_image_get_dtb_by_index((ulong)hdr, 0, + if (android_image_get_dtb_by_index((ulong)hdr, get_avendor_bootimg_addr(), dtb_idx, _addr, _size)) { fdt_blob = (char *)map_sysmem(fdt_addr, 0); if (fdt_check_header(fdt_blob)) Reviewed-by: Guillaume La Roque
Re: [PATCH v2 1/5] boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
On Thu, Jun 13, 2024 at 12:13 PM Mattijs Korpershoek wrote: > > When calling android_image_get_dtb_by_index() using boot image v3+, > we should also pass the vendor_boot ramdisk address. > > Use get_avendor_bootimg_addr() to do so. > > Notes: on boot image v2, this is harmless since get_avendor_bootimg_addr() >returns -1. >for legacy implementations that don't have CMD_ABOOTIMG, add a weak >implementation to avoid linking errors. > > Signed-off-by: Mattijs Korpershoek > --- > boot/image-android.c | 5 + > boot/image-fdt.c | 2 +- > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/boot/image-android.c b/boot/image-android.c > index ee626972c114..09c7a44e058a 100644 > --- a/boot/image-android.c > +++ b/boot/image-android.c > @@ -56,6 +56,11 @@ static ulong add_trailer(ulong bootconfig_start_addr, > ulong bootconfig_size) > return BOOTCONFIG_TRAILER_SIZE; > } > > +__weak ulong get_avendor_bootimg_addr(void) > +{ > + return -1; > +} > + > static void android_boot_image_v3_v4_parse_hdr(const struct > andr_boot_img_hdr_v3 *hdr, >struct andr_image_data *data) > { > diff --git a/boot/image-fdt.c b/boot/image-fdt.c > index 56dd7687f51c..8332792b8e80 100644 > --- a/boot/image-fdt.c > +++ b/boot/image-fdt.c > @@ -502,7 +502,7 @@ int boot_get_fdt(void *buf, const char *select, uint arch, > * Firstly check if this android boot image has dtb field. > */ > dtb_idx = (u32)env_get_ulong("adtb_idx", 10, 0); > - if (android_image_get_dtb_by_index((ulong)hdr, 0, > + if (android_image_get_dtb_by_index((ulong)hdr, > get_avendor_bootimg_addr(), >dtb_idx, _addr, > _size)) { > fdt_blob = (char *)map_sysmem(fdt_addr, 0); > if (fdt_check_header(fdt_blob)) > > -- > 2.45.2 > Reviewed-by: Igor Opaniuk -- Best regards - Atentamente - Meilleures salutations Igor Opaniuk mailto: igor.opan...@gmail.com skype: igor.opanyuk https://www.linkedin.com/in/iopaniuk
Re: [PATCH v2 1/5] boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
On Thu 13 Jun 2024 at 17:42, Mattijs Korpershoek wrote: > When calling android_image_get_dtb_by_index() using boot image v3+, > we should also pass the vendor_boot ramdisk address. > > Use get_avendor_bootimg_addr() to do so. > > Notes: on boot image v2, this is harmless since get_avendor_bootimg_addr() >returns -1. >for legacy implementations that don't have CMD_ABOOTIMG, add a weak >implementation to avoid linking errors. > > Signed-off-by: Mattijs Korpershoek > --- > boot/image-android.c | 5 + > boot/image-fdt.c | 2 +- > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/boot/image-android.c b/boot/image-android.c > index ee626972c114..09c7a44e058a 100644 > --- a/boot/image-android.c > +++ b/boot/image-android.c > @@ -56,6 +56,11 @@ static ulong add_trailer(ulong bootconfig_start_addr, > ulong bootconfig_size) > return BOOTCONFIG_TRAILER_SIZE; > } > > +__weak ulong get_avendor_bootimg_addr(void) > +{ > + return -1; > +} > + > static void android_boot_image_v3_v4_parse_hdr(const struct > andr_boot_img_hdr_v3 *hdr, > struct andr_image_data *data) > { > diff --git a/boot/image-fdt.c b/boot/image-fdt.c > index 56dd7687f51c..8332792b8e80 100644 > --- a/boot/image-fdt.c > +++ b/boot/image-fdt.c > @@ -502,7 +502,7 @@ int boot_get_fdt(void *buf, const char *select, uint arch, >* Firstly check if this android boot image has dtb field. >*/ > dtb_idx = (u32)env_get_ulong("adtb_idx", 10, 0); > - if (android_image_get_dtb_by_index((ulong)hdr, 0, > + if (android_image_get_dtb_by_index((ulong)hdr, > get_avendor_bootimg_addr(), > dtb_idx, _addr, > _size)) { > fdt_blob = (char *)map_sysmem(fdt_addr, 0); > if (fdt_check_header(fdt_blob)) > > -- > 2.45.2 > Reviewed-by: Julien Masson -- Julien Masson
Re: [PATCH v2 1/5] boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
On Thu, 13 Jun 2024 at 04:13, Mattijs Korpershoek wrote: > > When calling android_image_get_dtb_by_index() using boot image v3+, > we should also pass the vendor_boot ramdisk address. > > Use get_avendor_bootimg_addr() to do so. > > Notes: on boot image v2, this is harmless since get_avendor_bootimg_addr() >returns -1. >for legacy implementations that don't have CMD_ABOOTIMG, add a weak >implementation to avoid linking errors. > > Signed-off-by: Mattijs Korpershoek > --- > boot/image-android.c | 5 + > boot/image-fdt.c | 2 +- > 2 files changed, 6 insertions(+), 1 deletion(-) Reviewed-by: Simon Glass
[PATCH v2 1/5] boot: android: Provide vendor_bootimg_addr in boot_get_fdt()
When calling android_image_get_dtb_by_index() using boot image v3+, we should also pass the vendor_boot ramdisk address. Use get_avendor_bootimg_addr() to do so. Notes: on boot image v2, this is harmless since get_avendor_bootimg_addr() returns -1. for legacy implementations that don't have CMD_ABOOTIMG, add a weak implementation to avoid linking errors. Signed-off-by: Mattijs Korpershoek --- boot/image-android.c | 5 + boot/image-fdt.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/boot/image-android.c b/boot/image-android.c index ee626972c114..09c7a44e058a 100644 --- a/boot/image-android.c +++ b/boot/image-android.c @@ -56,6 +56,11 @@ static ulong add_trailer(ulong bootconfig_start_addr, ulong bootconfig_size) return BOOTCONFIG_TRAILER_SIZE; } +__weak ulong get_avendor_bootimg_addr(void) +{ + return -1; +} + static void android_boot_image_v3_v4_parse_hdr(const struct andr_boot_img_hdr_v3 *hdr, struct andr_image_data *data) { diff --git a/boot/image-fdt.c b/boot/image-fdt.c index 56dd7687f51c..8332792b8e80 100644 --- a/boot/image-fdt.c +++ b/boot/image-fdt.c @@ -502,7 +502,7 @@ int boot_get_fdt(void *buf, const char *select, uint arch, * Firstly check if this android boot image has dtb field. */ dtb_idx = (u32)env_get_ulong("adtb_idx", 10, 0); - if (android_image_get_dtb_by_index((ulong)hdr, 0, + if (android_image_get_dtb_by_index((ulong)hdr, get_avendor_bootimg_addr(), dtb_idx, _addr, _size)) { fdt_blob = (char *)map_sysmem(fdt_addr, 0); if (fdt_check_header(fdt_blob)) -- 2.45.2