[PATCH 2/2] kexec: pass initrd position in dtb
Wang Nan
wangnan0 at huawei.com
Wed Mar 19 23:57:25 EDT 2014
On 2014/3/20 11:34, Dave Young wrote:
> On 03/20/14 at 11:26am, Dave Young wrote:
>> On 03/20/14 at 10:36am, Wang Nan wrote:
>>> This patch append the position of initrd to dtb when loading arm kernel
>>> and initrd without using atag.
>>>
>>> Signed-off-by: Wang Nan <wangnan0 at huawei.com>
>>> Cc: Simon Horman <horms at verge.net.au>
>>> Cc: Dave Young <dyoung at redhat.com>
>>> Cc: Geng Hui <hui.geng at huawei.com>
>>> ---
>>> kexec/arch/arm/kexec-zImage-arm.c | 84 +++++++++++++++++++++++++++------------
>>> 1 file changed, 59 insertions(+), 25 deletions(-)
>>>
>>> diff --git a/kexec/arch/arm/kexec-zImage-arm.c b/kexec/arch/arm/kexec-zImage-arm.c
>>> index 8a35018..15d8829 100644
>>> --- a/kexec/arch/arm/kexec-zImage-arm.c
>>> +++ b/kexec/arch/arm/kexec-zImage-arm.c
>>> @@ -20,6 +20,7 @@
>>> #include "kexec-arm.h"
>>> #include "../../fs2dt.h"
>>> #include "crashdump-arm.h"
>>> +#include "libfdt_internal.h"
>>
>> I guess it's for the FDT_TAGALIGN and FDT_TAGSIZE?
>> libfdt_internal.h should be used as internal header for libfdt, a better way is
>> adding another patch which move these 2 macros to fdt.h
>
> Or moving your new function setup_dtb_prop to libfdt, I'm not sure if it works on
> other arch though.
>
>> Thanks
>> Dave
What about following midification (FDT_TAGSIZE is in fdt.h)?
I'll send it formally if you agree this one.
diff --git a/kexec/arch/arm/kexec-zImage-arm.c b/kexec/arch/arm/kexec-zImage-arm.c
index 15d8829..1cd4ed0 100644
--- a/kexec/arch/arm/kexec-zImage-arm.c
+++ b/kexec/arch/arm/kexec-zImage-arm.c
@@ -20,7 +20,6 @@
#include "kexec-arm.h"
#include "../../fs2dt.h"
#include "crashdump-arm.h"
-#include "libfdt_internal.h"
#define BOOT_PARAMS_SIZE 1536
@@ -229,8 +228,8 @@ static int setup_dtb_prop(char **bufp, off_t *sizep, const char *node_name,
dtb_buf = *bufp;
*sizep = fdt_totalsize(*bufp) + FDT_TAGSIZE + len +
- FDT_TAGALIGN(strlen(node_name) + 1) +
- FDT_TAGALIGN(strlen(prop_name) + 1) +
+ _ALIGN(strlen(node_name) + 1, FDT_TAGSIZE) +
+ _ALIGN(strlen(prop_name) + 1, FDT_TAGSIZE) +
sizeof(struct fdt_property);
dtb_buf = xrealloc(dtb_buf, *sizep);
More information about the kexec
mailing list