From: Jerone Young <jyoung5@us.ibm.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: kvm-devel@lists.sourceforge.net, kvm-ppc-devel@lists.sourceforge.net
Subject: Re: [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model
Date: Wed, 19 Mar 2008 14:36:12 -0500 [thread overview]
Message-ID: <1205955372.18563.2.camel@thinkpad.austin.ibm.com> (raw)
In-Reply-To: <47E169CE.5090405@codemonkey.ws>
On Wed, 2008-03-19 at 14:30 -0500, Anthony Liguori wrote:
> Jerone Young wrote:
> > # HG changeset patch
> > # User Jerone Young <jyoung5@us.ibm.com>
> > # Date 1205953012 18000
> > # Branch merge
> > # Node ID 8e9da5ddf159eb6cf5a292ccbf5f735103b493ef
> > # Parent 03925441312877b8350e4af68e475d5d746304d4
> > Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model
> >
> > This patch adds code to dynamically manipulate the device tree when loaded into memory. This allows us to finally have the ability to manipulate the kernel command line & initrd from the qemu command line. This will also let us setup different settings for the board.
> >
> > This patch also now uses new uboot loader load_uimage() to load kernel image.
> >
> > Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
> >
> > diff --git a/qemu/Makefile.target b/qemu/Makefile.target
> > --- a/qemu/Makefile.target
> > +++ b/qemu/Makefile.target
> > @@ -617,7 +617,7 @@ OBJS+= unin_pci.o ppc_chrp.o
> > OBJS+= unin_pci.o ppc_chrp.o
> > # PowerPC 4xx boards
> > OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
> > -OBJS+= ppc440.o ppc440_bamboo.o
> > +OBJS+= ppc440.o ppc440_bamboo.o device_tree.o
> > endif
> > ifeq ($(TARGET_BASE_ARCH), mips)
> > OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o
> > diff --git a/qemu/hw/device_tree.c b/qemu/hw/device_tree.c
> > new file mode 100644
> > --- /dev/null
> > +++ b/qemu/hw/device_tree.c
> > @@ -0,0 +1,181 @@
> > +/*
> > + * Functions to help device tree manipulation using libfdt.
> > + * It also provides functions to read entries from device tree proc
> > + * interface.
> > + *
> > + * Copyright 2008 IBM Corporation.
> > + * Authors: Jerone Young <jyoung5@us.ibm.com>
> > + *
> > + * This work is licensed under the GNU GPL license version 2 or later.
> > + *
> > + */
> > +
> > +#include <stdio.h>
> > +#include <sys/types.h>
> > +#include <sys/stat.h>
> > +#include <fcntl.h>
> > +#include <unistd.h>
> > +#include <stdlib.h>
> > +
> > +#include "config.h"
> > +#include "ppc440.h"
> > +
> > +#ifdef CONFIG_LIBFDT
> > +#include "libfdt.h"
> > +#endif
> > +
> > +#define DT_PROC_INTERFACE_PATH "/proc/device-tree"
> > +
> > +/* FUNCTIONS FOR READING FROM DEVICE TREE OF HOST IN /PROC */
> > +
> > +/* This function reads device-tree property files that are of
> > + * a single cell size
> > + */
> > +uint32_t read_proc_dt_prop_cell(char *path_in_device_tree)
> > +{
> > + char *buf = NULL;
> > + int i;
> > + uint32_t num;
> > + FILE *stream;
> > +
> > + i = snprintf(buf, 0, "%s/%s", DT_PROC_INTERFACE_PATH,
> > + path_in_device_tree);
> > +
> > + buf = (char *)malloc(i);
> > + if (buf == NULL) {
> > + printf("%s: Unable to malloc string buffer buf\n",
> > + __func__);
> > + exit(1);
> > + }
> > +
> > + i = snprintf(buf, i+1, "%s/%s", DT_PROC_INTERFACE_PATH,
> > + path_in_device_tree);
> >
>
> asprintf() is the right thing to do here. You allocate 'i' bytes but
> then snprintf() to 'i + 1' bytes, that's a buffer overflow.
Ouch! Yes this has to be fixed. Not sure why I did this, but
>
> > +fail:
> > + if (dt_file)
> > + qemu_free(dt_file);
> > + return NULL;
> > +}
> > +
> > +void dump_device_tree_to_file(void *fdt, char *filename)
> > +{
> > + int fd;
> > + fd = open(filename, O_RDWR|O_CREAT);
> >
>
> Need to pass a permission mask when using O_CREAT.
I'll fix this also.
>
> Regards,
>
> Anthony LIguori
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> kvm-devel mailing list
> kvm-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/kvm-devel
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
next prev parent reply other threads:[~2008-03-19 19:36 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-19 19:01 [PATCH 0 of 7] [v5] PowerPC kvm-userspace patches Jerone Young
2008-03-19 19:01 ` [PATCH 1 of 7] Add libfdt to KVM userspace Jerone Young
2008-03-19 19:01 ` [PATCH 2 of 7] Add libfdt support to qemu Jerone Young
2008-03-19 19:01 ` [PATCH 3 of 7] Create new load_uimage() & gunzip support to uboot loader in Qemu Jerone Young
2008-03-19 19:25 ` Anthony Liguori
2008-03-19 19:01 ` [PATCH 4 of 7] Add PPC 440EP bamboo board device tree source & binary into qemu Jerone Young
2008-03-19 19:01 ` [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model Jerone Young
2008-03-19 19:30 ` Anthony Liguori
2008-03-19 19:36 ` Jerone Young [this message]
2008-03-19 19:01 ` [PATCH 6 of 7] Modify PPC bamboo & ppc440 board models Jerone Young
2008-03-19 19:01 ` [PATCH 7 of 7] Add ability to specify ram on command line for bamboo board model Jerone Young
-- strict thread matches above, loose matches on Subject: below --
2008-03-19 20:00 [PATCH 0 of 7] [v6] PowerPC kvm-userspace patches Jerone Young
2008-03-19 20:00 ` [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model Jerone Young
2008-03-19 14:45 [PATCH 0 of 7] PowerPC kvm-userspace patches Jerone Young
2008-03-19 14:45 ` [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model Jerone Young
2008-03-18 20:06 [PATCH 0 of 7] [v3] PowerPC kvm-userspace patches Jerone Young
2008-03-18 20:06 ` [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model Jerone Young
2008-03-14 17:09 [PATCH 0 of 7] [v2] PowerPC kvm-userspace patches Jerone Young
2008-03-14 17:09 ` [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model Jerone Young
2008-03-12 4:50 [PATCH 0 of 7] PowerPC kvm-userspace patches Jerone Young
2008-03-12 4:50 ` [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model Jerone Young
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1205955372.18563.2.camel@thinkpad.austin.ibm.com \
--to=jyoung5@us.ibm.com \
--cc=anthony@codemonkey.ws \
--cc=kvm-devel@lists.sourceforge.net \
--cc=kvm-ppc-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox