Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Dec 2016 13:48:16 -0800
From:      Jason Harmening <jason.harmening@gmail.com>
To:        freebsd-arm@freebsd.org
Subject:   loading 'VIRT' kernel in qemu
Message-ID:  <CAM=8qa=pSRphmsbvy1L7fgPFDDK4xhozfrr3tj5fojd8w7fFjg@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi everyone,

I'm making some tweaks to the armv6 pmap to mirror some recent i386
changes.  I don't have arm hardware readily available, so I thought I'd
give qemu a whirl instead of asking other people to test my changes for
me.  Since I need SMP but don't need any specific peripheral hw, the 'VIRT'
kernel seems like my best bet.

I've successfully booted mips[64] under qemu, so naively starting out w/
the same steps I use for mips:

1). build armv6 world and VIRT kernel, install world to temp directory
2). use makefs(8) to build a 4GB (little endian) fs image from temp dir
3). Run qemu:
qemu-system-arm -M virt -kernel <VIRT kernel binary> -hda <fs image>
-nographic -m 1024

...fails immediately:
qemu: fatal: Trying to execute code outside RAM or ROM at 0xc1000100

R00=00000000 R01=00000000 R02=00000000 R03=00000000
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=00000000 R14=00000000 R15=c1000100

hmm, looks pretty close to KERNVIRTADDR.

Most online docs for qemu-system-arm seem to assume a prebuilt linux kernel
and initrd, the rest are...fragmented-to-nonexistent.  I've seen a few
hints that I might need to wrap the kernel image up along w/ u-boot, but
the u-boot images seem to be very SoC-specific.

Any help would be much appreciated, sorry for the n00b question.

Thanks,
Jason



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAM=8qa=pSRphmsbvy1L7fgPFDDK4xhozfrr3tj5fojd8w7fFjg>