diff mbox

[U-Boot,RESEND] tools/imximage: set DCD pointer to NULL when its length is 0

Message ID 24b427fa8ee7500d08b6ed412da70e597bf5061a.1436454776.git.baruch@tkos.co.il
State Awaiting Upstream
Headers show

Commit Message

Baruch Siach July 9, 2015, 3:19 p.m. UTC
When dcd_len is 0 the Write Data command that the set_dcd_rst_v2() routine
generates is empty. This causes HAB to complain that the command is invalid.

--------- HAB Event 1 -----------------
event data:
	0xdb 0x00 0x0c 0x41 0x33 0x06 0xc0 0x00
	0xcc 0x00 0x04 0x04

To fix this set the DCD pointer in the IVT to NULL in this case. The DCD header
itself is still needed for detect_imximage_version() to determine the image
version.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
Resending with a proper To: header.

 tools/imximage.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Stefano Babic July 9, 2015, 4:04 p.m. UTC | #1
Hi Baruch,

On 09/07/2015 17:19, Baruch Siach wrote:
> When dcd_len is 0 the Write Data command that the set_dcd_rst_v2() routine
> generates is empty. This causes HAB to complain that the command is invalid.
> 
> --------- HAB Event 1 -----------------
> event data:
> 	0xdb 0x00 0x0c 0x41 0x33 0x06 0xc0 0x00
> 	0xcc 0x00 0x04 0x04
> 
> To fix this set the DCD pointer in the IVT to NULL in this case. The DCD header
> itself is still needed for detect_imximage_version() to determine the image
> version.
> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
> Resending with a proper To: header.
> 
>  tools/imximage.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/imximage.c b/tools/imximage.c
> index 6f469ae6336c..7b91d09699ad 100644
> --- a/tools/imximage.c
> +++ b/tools/imximage.c
> @@ -250,7 +250,11 @@ static void set_imx_hdr_v2(struct imx_header *imxhdr, uint32_t dcd_len,
>  	hdr_base = entry_point - imximage_init_loadsize +
>  		flash_offset;
>  	fhdr_v2->self = hdr_base;
> -	fhdr_v2->dcd_ptr = hdr_base + offsetof(imx_header_v2_t, dcd_table);
> +	if (dcd_len > 0)
> +		fhdr_v2->dcd_ptr = hdr_base
> +			+ offsetof(imx_header_v2_t, dcd_table);
> +	else
> +		fhdr_v2->dcd_ptr = 0;
>  	fhdr_v2->boot_data_ptr = hdr_base
>  			+ offsetof(imx_header_v2_t, boot_data);
>  	hdr_v2->boot_data.start = entry_point - imximage_init_loadsize;
> 

It looks ok for me.

Acked-by: Stefano Babic <sbabic@denx.de>

Best regards,
Stefano Babic
Baruch Siach July 14, 2015, 7:05 p.m. UTC | #2
Hi Stefano,

On Thu, Jul 09, 2015 at 06:04:17PM +0200, Stefano Babic wrote:
> On 09/07/2015 17:19, Baruch Siach wrote:
> > When dcd_len is 0 the Write Data command that the set_dcd_rst_v2() routine
> > generates is empty. This causes HAB to complain that the command is invalid.
> > 
> > --------- HAB Event 1 -----------------
> > event data:
> > 	0xdb 0x00 0x0c 0x41 0x33 0x06 0xc0 0x00
> > 	0xcc 0x00 0x04 0x04
> > 
> > To fix this set the DCD pointer in the IVT to NULL in this case. The DCD header
> > itself is still needed for detect_imximage_version() to determine the image
> > version.
> > 
> > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> > ---
> > Resending with a proper To: header.
> > 
> >  tools/imximage.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/tools/imximage.c b/tools/imximage.c
> > index 6f469ae6336c..7b91d09699ad 100644
> > --- a/tools/imximage.c
> > +++ b/tools/imximage.c
> > @@ -250,7 +250,11 @@ static void set_imx_hdr_v2(struct imx_header *imxhdr, uint32_t dcd_len,
> >  	hdr_base = entry_point - imximage_init_loadsize +
> >  		flash_offset;
> >  	fhdr_v2->self = hdr_base;
> > -	fhdr_v2->dcd_ptr = hdr_base + offsetof(imx_header_v2_t, dcd_table);
> > +	if (dcd_len > 0)
> > +		fhdr_v2->dcd_ptr = hdr_base
> > +			+ offsetof(imx_header_v2_t, dcd_table);
> > +	else
> > +		fhdr_v2->dcd_ptr = 0;
> >  	fhdr_v2->boot_data_ptr = hdr_base
> >  			+ offsetof(imx_header_v2_t, boot_data);
> >  	hdr_v2->boot_data.start = entry_point - imximage_init_loadsize;
> > 
> 
> It looks ok for me.
> 
> Acked-by: Stefano Babic <sbabic@denx.de>

Thanks.

Which tree is this patch going through?

baruch
Stefano Babic July 15, 2015, 7:13 a.m. UTC | #3
On 14/07/2015 21:05, Baruch Siach wrote:
> Hi Stefano,
> 
> On Thu, Jul 09, 2015 at 06:04:17PM +0200, Stefano Babic wrote:
>> On 09/07/2015 17:19, Baruch Siach wrote:
>>> When dcd_len is 0 the Write Data command that the set_dcd_rst_v2() routine
>>> generates is empty. This causes HAB to complain that the command is invalid.
>>>
>>> --------- HAB Event 1 -----------------
>>> event data:
>>> 	0xdb 0x00 0x0c 0x41 0x33 0x06 0xc0 0x00
>>> 	0xcc 0x00 0x04 0x04
>>>
>>> To fix this set the DCD pointer in the IVT to NULL in this case. The DCD header
>>> itself is still needed for detect_imximage_version() to determine the image
>>> version.
>>>
>>> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>>> ---
>>> Resending with a proper To: header.
>>>
>>>  tools/imximage.c | 6 +++++-
>>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tools/imximage.c b/tools/imximage.c
>>> index 6f469ae6336c..7b91d09699ad 100644
>>> --- a/tools/imximage.c
>>> +++ b/tools/imximage.c
>>> @@ -250,7 +250,11 @@ static void set_imx_hdr_v2(struct imx_header *imxhdr, uint32_t dcd_len,
>>>  	hdr_base = entry_point - imximage_init_loadsize +
>>>  		flash_offset;
>>>  	fhdr_v2->self = hdr_base;
>>> -	fhdr_v2->dcd_ptr = hdr_base + offsetof(imx_header_v2_t, dcd_table);
>>> +	if (dcd_len > 0)
>>> +		fhdr_v2->dcd_ptr = hdr_base
>>> +			+ offsetof(imx_header_v2_t, dcd_table);
>>> +	else
>>> +		fhdr_v2->dcd_ptr = 0;
>>>  	fhdr_v2->boot_data_ptr = hdr_base
>>>  			+ offsetof(imx_header_v2_t, boot_data);
>>>  	hdr_v2->boot_data.start = entry_point - imximage_init_loadsize;
>>>
>>
>> It looks ok for me.
>>
>> Acked-by: Stefano Babic <sbabic@denx.de>
> 
> Thanks.
> 
> Which tree is this patch going through?

This goes first into u-boot-imx, until I'll send a PR to Tom for
inclusion in his tree,

Best regards,
Stefano Babic
Baruch Siach Aug. 2, 2015, 6:45 p.m. UTC | #4
Hi Stefano,

On Wed, Jul 15, 2015 at 09:13:33AM +0200, Stefano Babic wrote:
> On 14/07/2015 21:05, Baruch Siach wrote:
> > On Thu, Jul 09, 2015 at 06:04:17PM +0200, Stefano Babic wrote:
> >> On 09/07/2015 17:19, Baruch Siach wrote:
> >>> When dcd_len is 0 the Write Data command that the set_dcd_rst_v2() routine
> >>> generates is empty. This causes HAB to complain that the command is invalid.
> >>>
> >>> --------- HAB Event 1 -----------------
> >>> event data:
> >>> 	0xdb 0x00 0x0c 0x41 0x33 0x06 0xc0 0x00
> >>> 	0xcc 0x00 0x04 0x04
> >>>
> >>> To fix this set the DCD pointer in the IVT to NULL in this case. The DCD header
> >>> itself is still needed for detect_imximage_version() to determine the image
> >>> version.
> >>>
> >>> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> >>> ---
> >>> Resending with a proper To: header.
> >>>
> >>>  tools/imximage.c | 6 +++++-
> >>>  1 file changed, 5 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/tools/imximage.c b/tools/imximage.c
> >>> index 6f469ae6336c..7b91d09699ad 100644
> >>> --- a/tools/imximage.c
> >>> +++ b/tools/imximage.c
> >>> @@ -250,7 +250,11 @@ static void set_imx_hdr_v2(struct imx_header *imxhdr, uint32_t dcd_len,
> >>>  	hdr_base = entry_point - imximage_init_loadsize +
> >>>  		flash_offset;
> >>>  	fhdr_v2->self = hdr_base;
> >>> -	fhdr_v2->dcd_ptr = hdr_base + offsetof(imx_header_v2_t, dcd_table);
> >>> +	if (dcd_len > 0)
> >>> +		fhdr_v2->dcd_ptr = hdr_base
> >>> +			+ offsetof(imx_header_v2_t, dcd_table);
> >>> +	else
> >>> +		fhdr_v2->dcd_ptr = 0;
> >>>  	fhdr_v2->boot_data_ptr = hdr_base
> >>>  			+ offsetof(imx_header_v2_t, boot_data);
> >>>  	hdr_v2->boot_data.start = entry_point - imximage_init_loadsize;
> >>
> >> It looks ok for me.
> >>
> >> Acked-by: Stefano Babic <sbabic@denx.de>
> > 
> > Which tree is this patch going through?
> 
> This goes first into u-boot-imx, until I'll send a PR to Tom for
> inclusion in his tree,

Thanks again. Is there a reason this patch is not in the u-boot-imx git tree?

baruch
Stefano Babic Aug. 3, 2015, 6:50 a.m. UTC | #5
Hi Baruch,

On 02/08/2015 20:45, Baruch Siach wrote:
> Hi Stefano,
> 
> On Wed, Jul 15, 2015 at 09:13:33AM +0200, Stefano Babic wrote:
>> On 14/07/2015 21:05, Baruch Siach wrote:
>>> On Thu, Jul 09, 2015 at 06:04:17PM +0200, Stefano Babic wrote:
>>>> On 09/07/2015 17:19, Baruch Siach wrote:
>>>>> When dcd_len is 0 the Write Data command that the set_dcd_rst_v2() routine
>>>>> generates is empty. This causes HAB to complain that the command is invalid.
>>>>>
>>>>> --------- HAB Event 1 -----------------
>>>>> event data:
>>>>> 	0xdb 0x00 0x0c 0x41 0x33 0x06 0xc0 0x00
>>>>> 	0xcc 0x00 0x04 0x04
>>>>>
>>>>> To fix this set the DCD pointer in the IVT to NULL in this case. The DCD header
>>>>> itself is still needed for detect_imximage_version() to determine the image
>>>>> version.
>>>>>
>>>>> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>>>>> ---
>>>>> Resending with a proper To: header.
>>>>>
>>>>>  tools/imximage.c | 6 +++++-
>>>>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/tools/imximage.c b/tools/imximage.c
>>>>> index 6f469ae6336c..7b91d09699ad 100644
>>>>> --- a/tools/imximage.c
>>>>> +++ b/tools/imximage.c
>>>>> @@ -250,7 +250,11 @@ static void set_imx_hdr_v2(struct imx_header *imxhdr, uint32_t dcd_len,
>>>>>  	hdr_base = entry_point - imximage_init_loadsize +
>>>>>  		flash_offset;
>>>>>  	fhdr_v2->self = hdr_base;
>>>>> -	fhdr_v2->dcd_ptr = hdr_base + offsetof(imx_header_v2_t, dcd_table);
>>>>> +	if (dcd_len > 0)
>>>>> +		fhdr_v2->dcd_ptr = hdr_base
>>>>> +			+ offsetof(imx_header_v2_t, dcd_table);
>>>>> +	else
>>>>> +		fhdr_v2->dcd_ptr = 0;
>>>>>  	fhdr_v2->boot_data_ptr = hdr_base
>>>>>  			+ offsetof(imx_header_v2_t, boot_data);
>>>>>  	hdr_v2->boot_data.start = entry_point - imximage_init_loadsize;
>>>>
>>>> It looks ok for me.
>>>>
>>>> Acked-by: Stefano Babic <sbabic@denx.de>
>>>
>>> Which tree is this patch going through?
>>
>> This goes first into u-boot-imx, until I'll send a PR to Tom for
>> inclusion in his tree,
> 
> Thanks again. Is there a reason this patch is not in the u-boot-imx git tree?

The reason is that it was not assigned in patchwork as I supposed and
this leads to forget it when I rework u-boot-imx - thanks for pointing out !

Applied to u-boot-imx, thanks !

Best regards,
Stefano Babic
diff mbox

Patch

diff --git a/tools/imximage.c b/tools/imximage.c
index 6f469ae6336c..7b91d09699ad 100644
--- a/tools/imximage.c
+++ b/tools/imximage.c
@@ -250,7 +250,11 @@  static void set_imx_hdr_v2(struct imx_header *imxhdr, uint32_t dcd_len,
 	hdr_base = entry_point - imximage_init_loadsize +
 		flash_offset;
 	fhdr_v2->self = hdr_base;
-	fhdr_v2->dcd_ptr = hdr_base + offsetof(imx_header_v2_t, dcd_table);
+	if (dcd_len > 0)
+		fhdr_v2->dcd_ptr = hdr_base
+			+ offsetof(imx_header_v2_t, dcd_table);
+	else
+		fhdr_v2->dcd_ptr = 0;
 	fhdr_v2->boot_data_ptr = hdr_base
 			+ offsetof(imx_header_v2_t, boot_data);
 	hdr_v2->boot_data.start = entry_point - imximage_init_loadsize;