From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Cc: Alexander Graf <agraf@suse.de>,
kvmarm@lists.cs.columbia.edu,
"Mian M. Hamayun" <m.hamayun@virtualopensystems.com>,
patches@linaro.org
Subject: [Qemu-devel] [PATCH v7 0/3] hw/arm: Add 'virt' platform
Date: Thu, 12 Sep 2013 11:17:50 +0100 [thread overview]
Message-ID: <1378981073-9989-1-git-send-email-peter.maydell@linaro.org> (raw)
This patch series adds a 'virt' platform which uses the
kernel's mach-virt (fully device-tree driven) support
to create a simple minimalist platform intended for
use for KVM VM guests.
The major change here is that I've added a PL011 UART.
Sample command line:
qemu-system-arm -machine type=virt -display none \
-kernel zImage \
-append 'root=/dev/vda rw console=ttyAMA0 rootwait'
-cpu cortex-a15 \
-device virtio-blk-device,drive=foo \
-drive if=none,file=arm-wheezy.img,id=foo \
-m 2048 -serial stdio
Note that there is no earlyprintk via the PL011 because
there's no defined device tree binding for "hey, here
is your earlyprintk UART".
*** NOTE *** to get the PL011 to work you'll need to
tweak the kernel a bit:
diff --git a/arch/arm/mach-virt/virt.c b/arch/arm/mach-virt/virt.c
index b184e57..2b6aceb 100644
--- a/arch/arm/mach-virt/virt.c
+++ b/arch/arm/mach-virt/virt.c
@@ -21,11 +21,13 @@
#include <linux/of_irq.h>
#include <linux/of_platform.h>
#include <linux/smp.h>
+#include <linux/clk-provider.h>
#include <asm/mach/arch.h>
static void __init virt_init(void)
{
+ of_clk_init(NULL);
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
}
Otherwise the kernel doesn't ever add the clock to its
list, and then it refuses to probe for the PL011.
(I'm told this isn't really the right fix, though, and
ideally the call should be done in some generic location
rather than in every machine's init function.)
The alternative would be for the kernel to be fixed to
follow its own device tree binding documentation and not
require clocks/clock-names properties on the pl011 node.
Changes from John Rigby's v3->my v4:
* renamed user-facing machine to just "virt"
* removed the A9 support (it can't work since the A9 has no
generic timers)
* added virtio-mmio transports instead of random set of 'soc' devices
* instead of updating io_base as we step through adding devices,
define a memory map with an array (similar to vexpress)
* folded in some minor fixes from John's aarch64-support patch
* rather than explicitly doing endian-swapping on FDT cells,
use fdt APIs that let us just pass in host-endian values
and let the fdt layer take care of the swapping
* miscellaneous minor code cleanups and style fixes
Changes v4->v5:
* removed outdated TODO remarks from commit messages
Changes v5->v6:
* adjusted the memory map as per Anup's review comments
(actually made the changes this time!)
Changes v6->v7:
* added a PL011 UART, at Alex's suggestion (and the accompanying
fake clock dtb node that this requires)
* added an irqmap[] in parallel with the memmap[] so that our
assignment of devices to irq lines is neatly in one place
* the removal of arm_pic allows us to get rid of an irritating
array sized to the number of CPUs
* included the "terminate dtb reservemap" patch since it's a
dependency to get the kernel to boot
John Rigby (1):
hw/arm/boot: Allow boards to provide an fdt blob
Peter Maydell (2):
device_tree.c: Terminate the empty reservemap in create_device_tree()
hw/arm: Add 'virt' platform
device_tree.c | 4 +
hw/arm/Makefile.objs | 2 +-
hw/arm/boot.c | 32 ++--
hw/arm/virt.c | 419 ++++++++++++++++++++++++++++++++++++++++++++++++++
include/hw/arm/arm.h | 7 +
5 files changed, 451 insertions(+), 13 deletions(-)
create mode 100644 hw/arm/virt.c
--
1.7.9.5
next reply other threads:[~2013-09-12 10:43 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-12 10:17 Peter Maydell [this message]
2013-09-12 10:17 ` [Qemu-devel] [PATCH v7 1/3] device_tree.c: Terminate the empty reservemap in create_device_tree() Peter Maydell
2013-09-12 10:17 ` [Qemu-devel] [PATCH v7 2/3] hw/arm/boot: Allow boards to provide an fdt blob Peter Maydell
2013-09-12 10:17 ` [Qemu-devel] [PATCH v7 3/3] hw/arm: Add 'virt' platform Peter Maydell
2013-09-12 16:29 ` [Qemu-devel] [PATCH v7 0/3] " Christoffer Dall
2013-10-15 14:21 ` Peter Maydell
[not found] ` <8093E19A-6522-4E72-953E-07850720ED0A@bromium.com>
2013-10-15 15:00 ` Peter Maydell
2013-10-15 15:14 ` Tom Sutcliffe
2013-10-17 14:30 ` Peter Maydell
2013-10-17 14:49 ` Tom Sutcliffe
2013-10-17 15:00 ` Peter Maydell
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=1378981073-9989-1-git-send-email-peter.maydell@linaro.org \
--to=peter.maydell@linaro.org \
--cc=agraf@suse.de \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=m.hamayun@virtualopensystems.com \
--cc=patches@linaro.org \
--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).