From: Alex G. <mr.nuke.me@gmail.com>
To: u-boot@lists.denx.de
Subject: [PATCH] Revert "Fix data abort caused by mis-aligning FIT data"
Date: Tue, 20 Oct 2020 09:38:52 -0500 [thread overview]
Message-ID: <a20ae360-ac7e-4f21-e7fd-d5251d70ac7b@gmail.com> (raw)
In-Reply-To: <20201020143254.GV14816@bill-the-cat>
On 10/20/20 9:32 AM, Tom Rini wrote:
> On Tue, Oct 20, 2020 at 04:29:36PM +0200, Marek Vasut wrote:
>> On 10/20/20 4:07 PM, Tom Rini wrote:
>>> On Tue, Oct 20, 2020 at 11:05:40AM +0200, Marek Vasut wrote:
>>>> On 10/20/20 2:27 AM, Reuben Dowle wrote:
>>>>>>> What assumptions? Any code that assumes 4 byte alignment will also work
>>>>>> on 8 byte alignment.
>>>>>>>
>>>>>>> Reverting is not the same as assuming ALIGN(...4) if incoming data is not
>>>>>> already aligned to 4 bytes (as was the case when I saw crashes).
>>>>>>
>>>>>> Can the incoming data _not_ be 4 byte aligned ?
>>>>>> How can this be replicated ?
>>>>>
>>>>> In my case I have an offline signing process (separate from build server to keep secure boot keys safe), and this runs a script which also patches the main uboot device tree with some extra properties, then updates main uboot dtb with kernel signature, then finally updates the spl dtb with the uboot signature. I think when mkimage patches the dtb with the signatures, this results in the alignment issues (the unsigned bootloader direct from the uboot make process does not experience this issue).
>>>>>
>>>>> Possibly using mkimage to add padding would also fix the alignment issue I see at boot time.
>>>>>
>>>>>>> Interesting. I had not noticed the -B parameter previously. I had originally
>>>>>> fixed this issue on an older version of uboot that did not have that option,
>>>>>> and later rebased the fix to newer uboot. I would need to do some testing to
>>>>>> see if this would fix it as well.
>>>>>>
>>>>>> I believe this is the way to handle this if you are building a custom DT for U-
>>>>>> Boot -- just make sure it has the correct parameters. I think this is also related
>>>>>> to:
>>>>>> 20a154f95b ("mkimage: fit: Do not tail-pad fitImage with external data")
>>>>>
>>>>> I will look into this, although unfortunately I am very busy with other projects right now so can't retest th
>>>>
>>>> In that case, I would propose to revert this to fix existing boards in
>>>> mainline, and if your tests are not successful, revisit this issue.
>>>>
>>>> I am rather sure what you are hitting is related to the mkimage patch
>>>> above, there was a lengthy discussion on that topic before.
>>>
>>> This gets back to what I was saying earlier in this thread. But to
>>> expand on it, we have been, but cannot, use the same variable for both
>>> "this is where we have the DTB at runtime to use" and "this is where the
>>> DTB happens to exist when we get here". For the case of "we copy the
>>> device tree to $address", $address must be 8 bytes aligned. For the
>>> case of "we use an externally provided DTB in place" I don't like the
>>> idea of, and worry a lot about, assuming it's going to be 8 byte
>>> aligned. But I can set that aside for the moment. That said, in that
>>> second case we need to set $address to where the device tree is.
>>
>> I don't think I understand this paragraph at all ?
>
> OK. Maybe I can better explain it after you walk through how changing
> the "copy the DTB to this address" to be 8 byte aligned is leading to
> failure, as I ask below.
(gdb) print gd->fdt_blob
$13 = (const void *) 0xc01cf85c
(gdb) x/4x gd->fdt_blob
0xc01cf85c: 0xc01b814c 0xedfe0dd0 0xa0670100 0x38000000
Notice how u-boot thinks fdt_blob is at 0xc01cf85c. However it was
actually loaded at 0xc01cf860, as evidenced by the doodfeed signature.
This is with the 8-byte alignment.
Alex
next prev parent reply other threads:[~2020-10-20 14:38 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-19 21:40 [PATCH] Revert "Fix data abort caused by mis-aligning FIT data" Marek Vasut
2020-10-19 21:50 ` Reuben Dowle
2020-10-19 21:59 ` Marek Vasut
2020-10-19 22:17 ` Reuben Dowle
2020-10-19 22:46 ` Marek Vasut
2020-10-19 22:45 ` Tom Rini
2020-10-19 22:54 ` Marek Vasut
2020-10-19 22:58 ` Tom Rini
2020-10-19 23:02 ` Marek Vasut
2020-10-19 23:09 ` Alex G.
2020-10-19 23:13 ` Reuben Dowle
2020-10-20 0:31 ` Alex G.
2020-10-19 23:02 ` Reuben Dowle
2020-10-19 23:11 ` Marek Vasut
2020-10-20 0:27 ` Reuben Dowle
2020-10-20 9:05 ` Marek Vasut
2020-10-20 14:07 ` Tom Rini
2020-10-20 14:29 ` Marek Vasut
2020-10-20 14:32 ` Tom Rini
2020-10-20 14:38 ` Alex G. [this message]
2020-10-20 15:54 ` Tom Rini
2020-10-20 17:01 ` Alex G.
2020-10-20 18:10 ` Tom Rini
2020-10-21 17:11 ` Alex G.
2020-10-20 14:42 ` Marek Vasut
2020-10-21 23:12 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a20ae360-ac7e-4f21-e7fd-d5251d70ac7b@gmail.com \
--to=mr.nuke.me@gmail.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox