qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paul Brook <paul@codesourcery.com>
To: qemu-devel@nongnu.org
Cc: Aurelien Jarno <aurelien@aurel32.net>,
	Hollis Blanchard <hollisb@us.ibm.com>
Subject: Re: [Qemu-devel] [6064] Implement device tree support needed for Bamboo emulation
Date: Tue, 16 Dec 2008 16:31:31 +0000	[thread overview]
Message-ID: <200812161631.32268.paul@codesourcery.com> (raw)
In-Reply-To: <1229440187.31337.15.camel@localhost.localdomain>

[-- Attachment #1: Type: text/plain, Size: 2374 bytes --]

> > Then why is it optional?
>
> As you mention below, libfdt isn't generally available yet, and since
> it's possible to make a real firmware work in this environment (in which
> case -kernel isn't needed), the code can still be useful.
>
> If you'd prefer to make libfdt mandatory, I'm fine with that.

Well, from your description it sounds like your ppc bits are fairly useless 
without it. History has shown that if it's possible for people to build 
something incorrectly, they usually will. Even more so if the required 
libraries are even vaguely standard.

> > AFAIK libfdt isn't present in any of the major distros. I thought the
> > conclusion was that we should import libfdt into qemu.
>
> That was our conclusion, but Anthony never agreed.
>
> FWIW, I have requested that Fedora and Debian package libfdt, and they
> agreed in principle, but it's still missing in Fedora 10 for example.
>
> Is the existence of distribution packages a requirement for use, or
> should we say "install it by hand into /usr/local"? If it is a
> requirement, which versions of which distributions?

I'm extremely reluctant to require an external library that everyone has to go 
fetch and build themselves. IIRC The libfdt docs say it's expected that 
people will include it in their projects.

I can say from experience that it drops in pretty easily. It's a 4-line qemu 
patch, plus make libfdt_env.h use the qemu byteswap routines.

> I doubt anyone has tried to build libfdt on Windows...

I have (well, technically a cross build from linux, but same difference).

Signed-off-by: Paul Brook <paul@codesourcery.com>

Index: Makefile
===================================================================
--- Makefile	(revision 6069)
+++ Makefile	(working copy)
@@ -5,7 +5,7 @@ include config-host.mak
 .PHONY: all clean cscope distclean dvi html info install install-doc \
 	recurse-all speed tar tarbin test
 
-VPATH=$(SRC_PATH):$(SRC_PATH)/hw
+VPATH=$(SRC_PATH):$(SRC_PATH)/hw:$(SRC_PATH)/libfdt
 
 CFLAGS += $(OS_CFLAGS) $(ARCH_CFLAGS)
 LDFLAGS += $(OS_LDFLAGS) $(ARCH_LDFLAGS)
@@ -68,7 +68,11 @@ endif
 # system emulation, i.e. a single QEMU executable should support all
 # CPUs and machines.
 
+include $(SRC_PATH)/libfdt/Makefile.libfdt
+$(LIBFDT_OBJS): CPPFLAGS += -I$(SRC_PATH)/libfdt
+
 OBJS=$(BLOCK_OBJS)
+OBJS+=$(LIBFDT_OBJS)
 OBJS+=readline.o console.o
 
 OBJS+=irq.o

[-- Attachment #2: patch.libfdt --]
[-- Type: text/x-diff, Size: 588 bytes --]

Minor changes are required to get libfdt to build as part of qemu.
The patch below records modifications relative to upstream dtc-v1.2.0.

Index: libfdt_env.h
===================================================================
--- libfdt_env.h	(revision 230023)
+++ libfdt_env.h	(working copy)
@@ -4,10 +4,9 @@
 #include <stddef.h>
 #include <stdint.h>
 #include <string.h>
-#include <endian.h>
-#include <byteswap.h>
+#include "bswap.h"
 
-#if __BYTE_ORDER == __BIG_ENDIAN
+#ifdef WORDS_BIGENDIAN
 #define fdt32_to_cpu(x)		(x)
 #define cpu_to_fdt32(x)		(x)
 #define fdt64_to_cpu(x)		(x)

  parent reply	other threads:[~2008-12-16 16:31 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-16 10:43 [Qemu-devel] [6064] Implement device tree support needed for Bamboo emulation Aurelien Jarno
2008-12-16 12:30 ` Paul Brook
2008-12-16 15:09   ` Hollis Blanchard
2008-12-16 16:17     ` Anthony Liguori
2008-12-16 16:34       ` Paul Brook
2008-12-16 17:03         ` Blue Swirl
2008-12-16 20:34         ` Thiemo Seufer
2008-12-16 16:31     ` Paul Brook [this message]
2008-12-16 16:46     ` Daniel P. Berrange
2008-12-16 17:15       ` Hollis Blanchard
2008-12-16 18:15         ` Josh Boyer

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=200812161631.32268.paul@codesourcery.com \
    --to=paul@codesourcery.com \
    --cc=aurelien@aurel32.net \
    --cc=hollisb@us.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /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;
as well as URLs for NNTP newsgroup(s).