* Wolfgang Denk | 2011-11-21 21:19:07 [+0100]:

>Dear Sebastian Andrzej Siewior,
Hi Wolfgang,

>Please provide _exact_ reference where this code has been copied from,
>see bullet 4 etc. at
>http://www.denx.de/wiki/view/U-Boot/Patches#Attributing_Code_Copyrights_Sign
>
>Also please provide exact information about the applicable licenses
>for this copied code.

I added a detailed description to the repository and the commit head
where I took it from.

>...
>>      /* get image parameters */
>> -    switch (genimg_get_format(os_hdr)) {
>> +    img_type = genimg_get_format(os_hdr);
>> +    switch (img_type) {
>...
>> +#ifdef CONFIG_ANDROID_BOOT_IMAGE
>> +    } else if (img_type == IMAGE_FORMAT_ANDROID) {
>> +            images.ep = images.os.load;
>> +#endif
>
>Why don't you handle the Andoid image case inside the switch() ?

Because the code flow looks like:
|         if (images.legacy_hdr_valid) {
|                 images.ep = image_get_ep(&images.legacy_hdr_os_copy);
| #if defined(CONFIG_FIT)
|         } else if (images.fit_uname_os) {
...
|                 }
| #endif
| #ifdef CONFIG_ANDROID_BOOT_IMAGE
...
| #endif
|         } else {
|                 puts("Could not find kernel entry point!\n");
|                 return 1;
|         }
|

So if I don't add an extra android block here, I end up in this else
part complaining about the entrypoint.
I guess that this part could be merged into the previous switch
statement if you want me to.

>> +#ifdef CONFIG_ANDROID_BOOT_IMAGE
>> +static char andr_tmp_str[ANDR_BOOT_ARGS_SIZE + 1];
>> +static int android_image_get_kernel(struct andr_img_hdr *hdr, int verify)
>> +{
>> +    /*
>> +     * Not all Android tools use the id field for signing the image with
>> +     * sha1 (or anything) so we don't check it. It is not obvious that the
>> +     * string is null terminated so we take care of this.
>> +     */
>> +    strncpy(andr_tmp_str, hdr->name, ANDR_BOOT_NAME_SIZE);
>> +    andr_tmp_str[ANDR_BOOT_NAME_SIZE] = '\0';
>> +    if (strlen(andr_tmp_str))
>> +            printf("Android's image name: %s\n", andr_tmp_str);
>> +
>> +    printf("Kernel load addr 0x%08x size %u KiB\n",
>> +                    hdr->kernel_addr, DIV_ROUND_UP(hdr->kernel_size, 1024));
>> +    strncpy(andr_tmp_str, hdr->cmdline, ANDR_BOOT_ARGS_SIZE);
>> +    andr_tmp_str[ANDR_BOOT_ARGS_SIZE] = '\0';
>> +    if (strlen(andr_tmp_str)) {
>> +            printf("Kernel command line: %s\n", andr_tmp_str);
>> +            setenv("bootargs", andr_tmp_str);
>> +    }
>> +    if (hdr->ramdisk_size)
>> +            printf("RAM disk load addr 0x%08x size %u KiB\n",
>> +                            hdr->ramdisk_addr,
>> +                            DIV_ROUND_UP(hdr->ramdisk_size, 1024));
>> +    return 0;
>> +}
>> +#endif
>
>This and similar Android image related code shoudl eventually go into
>a separate file, exposing only a few functions.
Okay.

>> +#ifdef CONFIG_ANDROID_BOOT_IMAGE
>> +    if (format == IMAGE_FORMAT_INVALID) {
>> +            const struct andr_img_hdr *ahdr = img_addr;
>>  
>> +            if (!memcmp(ANDR_BOOT_MAGIC, ahdr->magic, ANDR_BOOT_MAGIC_SIZE))
>> +                    format = IMAGE_FORMAT_ANDROID;
>> +    }
>> +#endif
>
>This is all we have for testing for a valid image?

More or less, yes. The fastboot client [0] does nothing else if you
provide it a kernel (and it creates the ANDROID image out of it).
The comment field is used by mkbootimg/mkbootimg.c tool to stash a sha1
checksum. The format how to create the sha1 checksum (i.e. pad, don't
pad, include header or not, ...) isn't documented (atleast I did not
find anything) so the only source of documentation is
the source code wich is under Apache2 license which is compatible with
GPLv3 but not with v2 so I can't look at it.

[0] http://android-dls.com/wiki/index.php?title=Fastboot

>> index 0000000..b231b66
>> --- /dev/null
>> +++ b/include/android_image.h
>> @@ -0,0 +1,89 @@
>> +/*
>> + * This is from the Android Project,
>> + * bootloader/legacy/include/boot/bootimg.h
>> + *
>> + * Copyright (C) 2008 The Android Open Source Project
>> + * All rights reserved.
>> + *
>> + * Redistribution and use in source and binary forms, with or without
>> + * modification, are permitted provided that the following conditions
>> + * are met:
>> + *  * Redistributions of source code must retain the above copyright
>> + *    notice, this list of conditions and the following disclaimer.
>> + *  * Redistributions in binary form must reproduce the above copyright
>> + *    notice, this list of conditions and the following disclaimer in
>> + *    the documentation and/or other materials provided with the
>> + *    distribution.
>
>Sorry, but this is not GPL compatible.

Ehm. Is this the All rights reserved issue? If so then I assumed that I
cleared up things in
  http://lists.denx.de/pipermail/u-boot/2011-September/101793.html

>
>Best regards,
>
>Wolfgang Denk

Sebastian
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to