Re: Passing an initrd to a Linux kernel with Device Tree
From: Grant Likely <hidden>
Date: 2011-09-21 14:38:28
On Wed, Sep 21, 2011 at 8:25 AM, Nicolas Pitre [off-list ref] wrote:
On Wed, 21 Sep 2011, Dave P Martin wrote:quoted
quoted
-----Original Message----- From: devicetree-discuss-bounces+dave.martin=arm.com-uLR06cmDAlY8sQ00jmICUQ@public.gmane.orgg [mailto:devicetree-discuss-> bounces+dave.martin=arm.com-uLR06cmDAlZ4lb6lR7t5LA@public.gmane.orgs.org] On Behalf Ofquoted
Grant Likely Sent: 20 September 2011 21:11 To: Olivier Martin Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Subject: Re: Passing an initrd to a Linux kernel with Device Tree On Tue, Sep 20, 2011 at 06:46:22PM +0100, Olivier Martin wrote:quoted
Hello, I tried recently to add support in UEFI to pass an initrdwith FDT toquoted
a Linux kernel. I have searched the Internet but I did not find any information to do that. FYI, this is the way it is done in ATAG: typedef struct { UINT32 start; UINT32 size; } LINUX_ATAG_INITRD2; The boot loader loads the initrd in system memory and passes the memory region information through ATAG. Sorry, if it is the wrong mailing-list. In this case, can someone point me on the right forum for any Linux FDT oriented questions.Hmmm, it may not be documented (the binding was implemented a long time ago before we got strict about documenting bindings). The magic is two properties in the /chosen node; "linux,initrd-start" and "linux,initrd-end". Each contains the physical start and end addresses of the initrd.What does "end address" mean here? It could be read as meaning either: a) address of the the final byte of the image b) address of the first byte following the image (0 if the image ends at 4G)Looking at the code (remember this is always the ultimate documentation), end_address = start_address + size. So (b) would be the right answer.
Yes, (b) is correct. I lost 2 days of my life tracking down a bug last year that turned out to be that I incorrectly assumed (a). g.