[XenPPC] [PATCH 1 of 4] [PATCH] Move flat device tree construction from python to libxc for xc_linux_build()
7 files changed, 699 insertions(+), 113 deletions(-) tools/libxc/powerpc64/Makefile |1 tools/libxc/powerpc64/mk_flatdevtree.c | 605 tools/libxc/powerpc64/mk_flatdevtree.h | 42 ++ tools/libxc/powerpc64/xc_linux_build.c | 143 ++- tools/libxc/xenguest.h |4 tools/python/xen/lowlevel/xc/xc.c | 12 tools/python/xen/xend/image.py |5 # HG changeset patch # User Ryan Harper [EMAIL PROTECTED] # Date 1169241710 21600 # Node ID 5a846b0c810cd24e5390a4dd2bdda8690d48c808 # Parent c16586000525f9d9dfbbe336d9d458dd08b44a0e [PATCH] Move flat device tree construction from python to libxc for xc_linux_build(). Signed-off-by: Ryan Harper [EMAIL PROTECTED] diff -r c16586000525 -r 5a846b0c810c tools/libxc/powerpc64/Makefile --- a/tools/libxc/powerpc64/MakefileWed Jan 17 19:37:20 2007 -0500 +++ b/tools/libxc/powerpc64/MakefileFri Jan 19 15:21:50 2007 -0600 @@ -1,4 +1,5 @@ GUEST_SRCS-y += powerpc64/flatdevtree.c GUEST_SRCS-y += powerpc64/flatdevtree.c +GUEST_SRCS-y += powerpc64/mk_flatdevtree.c GUEST_SRCS-y += powerpc64/xc_linux_build.c GUEST_SRCS-y += powerpc64/xc_prose_build.c GUEST_SRCS-y += powerpc64/utils.c diff -r c16586000525 -r 5a846b0c810c tools/libxc/powerpc64/xc_linux_build.c --- a/tools/libxc/powerpc64/xc_linux_build.cWed Jan 17 19:37:20 2007 -0500 +++ b/tools/libxc/powerpc64/xc_linux_build.cFri Jan 19 15:21:50 2007 -0600 @@ -13,9 +13,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * Copyright (C) IBM Corporation 2006 + * Copyright IBM Corporation 2006, 2007 * * Authors: Hollis Blanchard [EMAIL PROTECTED] + * Ryan Harper [EMAIL PROTECTED] */ #include stdio.h @@ -36,6 +37,7 @@ #include flatdevtree_env.h #include flatdevtree.h #include utils.h +#include mk_flatdevtree.h #define INITRD_ADDR (24UL 20) #define DEVTREE_ADDR (16UL 20) @@ -78,85 +80,6 @@ static int init_boot_vcpu( return rc; } -static int load_devtree( -int xc_handle, -int domid, -xen_pfn_t *page_array, -void *devtree, -unsigned long devtree_addr, -uint64_t initrd_base, -unsigned long initrd_len, -start_info_t *start_info __attribute__((unused)), -unsigned long start_info_addr) -{ -uint32_t si[4] = {0, start_info_addr, 0, 0x1000}; -struct boot_param_header *header; -void *chosen; -void *xen; -uint64_t initrd_end = initrd_base + initrd_len; -unsigned int devtree_size; -int rc = 0; - -DPRINTF(adding initrd props\n); - -chosen = ft_find_node(devtree, /chosen); -if (chosen == NULL) { -DPRINTF(couldn't find /chosen\n); -return -1; -} - -xen = ft_find_node(devtree, /xen); -if (xen == NULL) { -DPRINTF(couldn't find /xen\n); -return -1; -} - -/* initrd-start */ -rc = ft_set_prop(devtree, chosen, linux,initrd-start, -initrd_base, sizeof(initrd_base)); -if (rc 0) { -DPRINTF(couldn't set /chosen/linux,initrd-start\n); -return rc; -} - -/* initrd-end */ -rc = ft_set_prop(devtree, chosen, linux,initrd-end, -initrd_end, sizeof(initrd_end)); -if (rc 0) { -DPRINTF(couldn't set /chosen/linux,initrd-end\n); -return rc; -} - -rc = ft_set_rsvmap(devtree, 1, initrd_base, initrd_len); -if (rc 0) { -DPRINTF(couldn't set initrd reservation\n); -return ~0UL; -} - -/* start-info (XXX being removed soon) */ -rc = ft_set_prop(devtree, xen, start-info, si, sizeof(si)); -if (rc 0) { -DPRINTF(couldn't set /xen/start-info\n); -return rc; -} - -header = devtree; -devtree_size = header-totalsize; -{ -static const char dtb[] = /tmp/xc_domU.dtb; -int dfd = creat(dtb, 0666); -if (dfd != -1) { -write(dfd, devtree, devtree_size); -close(dfd); -} else -DPRINTF(could not open(\%s\)\n, dtb); -} - -DPRINTF(copying device tree to 0x%lx[0x%x]\n, DEVTREE_ADDR, devtree_size); -return install_image(xc_handle, domid, page_array, devtree, DEVTREE_ADDR, - devtree_size); -} - static int load_initrd( int xc_handle, int domid, @@ -187,13 +110,14 @@ out: } static unsigned long create_start_info( -void *devtree, start_info_t *start_info, -unsigned int console_evtchn, unsigned int store_evtchn, -unsigned long nr_pages, unsigned long rma_pages) +start_info_t *start_info, +unsigned int console_evtchn, +unsigned int store_evtchn, +unsigned long nr_pages, +unsigned long rma_pages) { unsigned long start_info_addr; uint64_t rma_top; -int rc; memset(start_info, 0, sizeof(*start_info)); snprintf(start_info-magic, sizeof(start_info-magic), @@ -209,13 +133,6 @@ static unsigned long
[XenPPC] [PATCH 1 of 4] [PATCH] Move flat device tree construction from python to libxc for xc_linux_build()
7 files changed, 697 insertions(+), 119 deletions(-) tools/libxc/powerpc64/Makefile |1 tools/libxc/powerpc64/mk_flatdevtree.c | 605 tools/libxc/powerpc64/mk_flatdevtree.h | 42 ++ tools/libxc/powerpc64/xc_linux_build.c | 147 ++- tools/libxc/xenguest.h |4 tools/python/xen/lowlevel/xc/xc.c | 12 tools/python/xen/xend/image.py |5 # HG changeset patch # User Ryan Harper [EMAIL PROTECTED] # Date 1169248739 21600 # Node ID e3b9f4ea49c014d8578415082ad09f76dbfb98b6 # Parent c16586000525f9d9dfbbe336d9d458dd08b44a0e [PATCH] Move flat device tree construction from python to libxc for xc_linux_build(). Signed-off-by: Ryan Harper [EMAIL PROTECTED] diff -r c16586000525 -r e3b9f4ea49c0 tools/libxc/powerpc64/Makefile --- a/tools/libxc/powerpc64/MakefileWed Jan 17 19:37:20 2007 -0500 +++ b/tools/libxc/powerpc64/MakefileFri Jan 19 17:18:59 2007 -0600 @@ -1,4 +1,5 @@ GUEST_SRCS-y += powerpc64/flatdevtree.c GUEST_SRCS-y += powerpc64/flatdevtree.c +GUEST_SRCS-y += powerpc64/mk_flatdevtree.c GUEST_SRCS-y += powerpc64/xc_linux_build.c GUEST_SRCS-y += powerpc64/xc_prose_build.c GUEST_SRCS-y += powerpc64/utils.c diff -r c16586000525 -r e3b9f4ea49c0 tools/libxc/powerpc64/xc_linux_build.c --- a/tools/libxc/powerpc64/xc_linux_build.cWed Jan 17 19:37:20 2007 -0500 +++ b/tools/libxc/powerpc64/xc_linux_build.cFri Jan 19 17:18:59 2007 -0600 @@ -13,9 +13,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * Copyright (C) IBM Corporation 2006 + * Copyright IBM Corporation 2006, 2007 * * Authors: Hollis Blanchard [EMAIL PROTECTED] + * Ryan Harper [EMAIL PROTECTED] */ #include stdio.h @@ -36,6 +37,7 @@ #include flatdevtree_env.h #include flatdevtree.h #include utils.h +#include mk_flatdevtree.h #define INITRD_ADDR (24UL 20) #define DEVTREE_ADDR (16UL 20) @@ -78,85 +80,6 @@ static int init_boot_vcpu( return rc; } -static int load_devtree( -int xc_handle, -int domid, -xen_pfn_t *page_array, -void *devtree, -unsigned long devtree_addr, -uint64_t initrd_base, -unsigned long initrd_len, -start_info_t *start_info __attribute__((unused)), -unsigned long start_info_addr) -{ -uint32_t si[4] = {0, start_info_addr, 0, 0x1000}; -struct boot_param_header *header; -void *chosen; -void *xen; -uint64_t initrd_end = initrd_base + initrd_len; -unsigned int devtree_size; -int rc = 0; - -DPRINTF(adding initrd props\n); - -chosen = ft_find_node(devtree, /chosen); -if (chosen == NULL) { -DPRINTF(couldn't find /chosen\n); -return -1; -} - -xen = ft_find_node(devtree, /xen); -if (xen == NULL) { -DPRINTF(couldn't find /xen\n); -return -1; -} - -/* initrd-start */ -rc = ft_set_prop(devtree, chosen, linux,initrd-start, -initrd_base, sizeof(initrd_base)); -if (rc 0) { -DPRINTF(couldn't set /chosen/linux,initrd-start\n); -return rc; -} - -/* initrd-end */ -rc = ft_set_prop(devtree, chosen, linux,initrd-end, -initrd_end, sizeof(initrd_end)); -if (rc 0) { -DPRINTF(couldn't set /chosen/linux,initrd-end\n); -return rc; -} - -rc = ft_set_rsvmap(devtree, 1, initrd_base, initrd_len); -if (rc 0) { -DPRINTF(couldn't set initrd reservation\n); -return ~0UL; -} - -/* start-info (XXX being removed soon) */ -rc = ft_set_prop(devtree, xen, start-info, si, sizeof(si)); -if (rc 0) { -DPRINTF(couldn't set /xen/start-info\n); -return rc; -} - -header = devtree; -devtree_size = header-totalsize; -{ -static const char dtb[] = /tmp/xc_domU.dtb; -int dfd = creat(dtb, 0666); -if (dfd != -1) { -write(dfd, devtree, devtree_size); -close(dfd); -} else -DPRINTF(could not open(\%s\)\n, dtb); -} - -DPRINTF(copying device tree to 0x%lx[0x%x]\n, DEVTREE_ADDR, devtree_size); -return install_image(xc_handle, domid, page_array, devtree, DEVTREE_ADDR, - devtree_size); -} - static int load_initrd( int xc_handle, int domid, @@ -187,13 +110,14 @@ out: } static unsigned long create_start_info( -void *devtree, start_info_t *start_info, -unsigned int console_evtchn, unsigned int store_evtchn, -unsigned long nr_pages, unsigned long rma_pages) +start_info_t *start_info, +unsigned int console_evtchn, +unsigned int store_evtchn, +unsigned long nr_pages, +unsigned long rma_pages) { unsigned long start_info_addr; uint64_t rma_top; -int rc; memset(start_info, 0, sizeof(*start_info)); snprintf(start_info-magic, sizeof(start_info-magic), @@ -209,13 +133,6 @@ static unsigned long