qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] arm: dtb: Align dtb to 64K because some kernels


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] arm: dtb: Align dtb to 64K because some kernels use 64K page size.
Date: Mon, 1 Dec 2014 14:57:16 +0000

On 1 December 2014 at 14:13, Richard W.M. Jones <address@hidden> wrote:
> Resolves: https://bugs.launchpad.net/qemu/+bug/1383857
> Signed-off-by: Richard W.M. Jones <address@hidden>

This is really a kernel bug.
https://www.kernel.org/doc/Documentation/arm64/booting.txt
just says "The device tree blob (dtb) must be placed on an
8-byte boundary within the first 512 megabytes from the start
of the kernel image and must not cross a 2-megabyte boundary."

and doesn't make any requirements about it not overlapping
a page with the initrd.

> ---
>  hw/arm/boot.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/arm/boot.c b/hw/arm/boot.c
> index 0014c34..a859922 100644
> --- a/hw/arm/boot.c
> +++ b/hw/arm/boot.c
> @@ -632,11 +632,11 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info 
> *info)
>           */
>          if (have_dtb(info)) {
>              /* Place the DTB after the initrd in memory. Note that some
> -             * kernels will trash anything in the 4K page the initrd
> +             * kernels will trash anything in the page the initrd
>               * ends in, so make sure the DTB isn't caught up in that.
>               */
>              hwaddr dtb_start = QEMU_ALIGN_UP(info->initrd_start + 
> initrd_size,
> -                                             4096);
> +                                             65536);

I'd rather we didn't do this unconditionally, because for some of
our board models 64K is a significant proportion of their total RAM.

-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]