[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