xen: arm: refactor struct kernel_info

The kernel_order and kernel_image fields are ELF specific.

Also add a few comments about what things are.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Julien Grall <julien.grall@linaro.org>
This commit is contained in:
Ian Campbell committed 2014-04-16 16:20:16 +01:00
1 parent c82fbfe6ec
commit 315b7a0c8f
2 files changed
+15 -13

No files matched your search

+7 -7
View File
@@ -297,7 +297,7 @@ static void kernel_elf_load(struct kernel_info *info)
elf_load_binary(&info->elf.elf);
printk("Free temporary kernel buffer\n");
free_xenheap_pages(info->kernel_img, info->kernel_order);
free_xenheap_pages(info->elf.kernel_img, info->elf.kernel_order);
}
static int kernel_try_elf_prepare(struct kernel_info *info,
@@ -307,14 +307,14 @@ static int kernel_try_elf_prepare(struct kernel_info *info,
memset(&info->elf.elf, 0, sizeof(info->elf.elf));
info->kernel_order = get_order_from_bytes(size);
info->kernel_img = alloc_xenheap_pages(info->kernel_order, 0);
if ( info->kernel_img == NULL )
info->elf.kernel_order = get_order_from_bytes(size);
info->elf.kernel_img = alloc_xenheap_pages(info->elf.kernel_order, 0);
if ( info->elf.kernel_img == NULL )
panic("Cannot allocate temporary buffer for kernel");
copy_from_paddr(info->kernel_img, addr, size);
copy_from_paddr(info->elf.kernel_img, addr, size);
if ( (rc = elf_init(&info->elf.elf, info->kernel_img, size )) != 0 )
if ( (rc = elf_init(&info->elf.elf, info->elf.kernel_img, size )) != 0 )
goto err;
#ifdef VERBOSE
elf_set_verbose(&info->elf.elf);
@@ -353,7 +353,7 @@ err:
printk("Xen: ELF kernel broken: %s\n",
elf_check_broken(&info->elf.elf));
free_xenheap_pages(info->kernel_img, info->kernel_order);
free_xenheap_pages(info->elf.kernel_img, info->elf.kernel_order);
return rc;
}
+8 -6
View File
@@ -18,14 +18,16 @@ struct kernel_info {
paddr_t unassigned_mem; /* RAM not (yet) assigned to a bank */
struct dt_mem_info mem;
paddr_t dtb_paddr;
/* kernel entry point */
paddr_t entry;
/* boot blob load addresses */
paddr_t dtb_paddr;
paddr_t initrd_paddr;
void *kernel_img;
unsigned kernel_order;
/* loader to use for this kernel */
void (*load)(struct kernel_info *info);
/* loader specific state */
union {
struct {
paddr_t kernel_addr;
@@ -36,10 +38,10 @@ struct kernel_info {
struct {
struct elf_binary elf;
struct elf_dom_parms parms;
unsigned kernel_order;
void *kernel_img;
} elf;
};
void (*load)(struct kernel_info *info);
};
int kernel_prepare(struct kernel_info *info);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.