|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 09/12] arm: load dom0 kernel from first boot module
At 16:23 +0000 on 13 Nov (1352823801), Ian Campbell wrote:
> -static int kernel_try_zimage_prepare(struct kernel_info *info)
> +static int kernel_try_zimage_prepare(struct kernel_info *info,
> + paddr_t addr, paddr_t size)
> {
> uint32_t *zimage = (void *)FIXMAP_ADDR(FIXMAP_MISC);
> uint32_t start, end;
> struct minimal_dtb_header dtb_hdr;
>
> - set_fixmap(FIXMAP_MISC, KERNEL_FLASH_ADDRESS >> PAGE_SHIFT, DEV_SHARED);
> + set_fixmap(FIXMAP_MISC, addr >> PAGE_SHIFT, DEV_SHARED);
> +
> + zimage += addr & ~PAGE_MASK;
>
> if (zimage[ZIMAGE_MAGIC_OFFSET/4] != ZIMAGE_MAGIC)
> + {
> + clear_fixmap(FIXMAP_MISC);
> return -EINVAL;
> + }
>
> start = zimage[ZIMAGE_START_OFFSET/4];
> end = zimage[ZIMAGE_END_OFFSET/4];
>
> clear_fixmap(FIXMAP_MISC);
>
> + if ( end > addr + size )
> + return -EINVAL;
Should this also check for start == 0 && end > size?
> int kernel_prepare(struct kernel_info *info)
> {
> int rc;
>
> - rc = kernel_try_zimage_prepare(info);
> + paddr_t start, size;
> +
> + if ( early_info.modules.nr_mods > 1 )
> + panic("Cannot handle dom0 initrd yet\n");
> +
> + if ( early_info.modules.nr_mods < 1 )
> + {
> + printk("No boot modules found, trying flash\n");
> + start = KERNEL_FLASH_ADDRESS;
> + size = KERNEL_FLASH_SIZE;
> + }
> + else
> + {
> + printk("Loading kernel from boot module 1\n");
> + start = early_info.modules.module[1].start;
> + size = early_info.modules.module[1].size;
Do we want (here or elsewhere) to check that start is page-aligned?
Tim.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |