Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Dec 2016 17:25:02 -0800
From:      Oleksandr Tymoshenko <gonzo@bluezbox.com>
To:        Jason Harmening <jason.harmening@gmail.com>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: loading 'VIRT' kernel in qemu
Message-ID:  <58C0D791-3D3C-4DE2-9EAF-93DA40ED620D@bluezbox.com>
In-Reply-To: <CAM=8qa=RZJvRXX1H3hWS%2BSnOv_Hxnp=6P71SE%2Bt6d6D9Kbxx8A@mail.gmail.com>
References:  <CAM=8qa=pSRphmsbvy1L7fgPFDDK4xhozfrr3tj5fojd8w7fFjg@mail.gmail.com> <BA5B89E5-9187-4BD3-A036-554F3CF6F671@bluezbox.com> <CAM=8qa=RZJvRXX1H3hWS%2BSnOv_Hxnp=6P71SE%2Bt6d6D9Kbxx8A@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

> On Dec 29, 2016, at 5:12 AM, Jason Harmening =
<jason.harmening@gmail.com> wrote:
>=20
> On Wed, Dec 28, 2016 at 11:25 AM, Oleksandr Tymoshenko =
<gonzo@bluezbox.com <mailto:gonzo@bluezbox.com>> wrote:
>=20
>> On Dec 27, 2016, at 1:48 PM, Jason Harmening =
<jason.harmening@gmail.com <mailto:jason.harmening@gmail.com>> wrote:
>>=20
>> Hi everyone,
>>=20
>> 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.
>>=20
>> I've successfully booted mips[64] under qemu, so naively starting out =
w/
>> the same steps I use for mips:
>>=20
>> 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
>>=20
>> ...fails immediately:
>> qemu: fatal: Trying to execute code outside RAM or ROM at 0xc1000100
>>=20
>> R00=3D00000000 R01=3D00000000 R02=3D00000000 R03=3D00000000
>> R04=3D00000000 R05=3D00000000 R06=3D00000000 R07=3D00000000
>> R08=3D00000000 R09=3D00000000 R10=3D00000000 R11=3D00000000
>> R12=3D00000000 R13=3D00000000 R14=3D00000000 R15=3Dc1000100
>>=20
>> hmm, looks pretty close to KERNVIRTADDR.
>>=20
>> 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.
>>=20
>> Any help would be much appreciated, sorry for the n00b question.
>=20
> Hi Jason,
>=20
> It looks like for VIRT kernel is supposed to be used with UEFI. At =
least
> this part of NanoBSD sources hints at it:
> =
http://sources.freebsd.org/HEAD/src/tools/tools/nanobsd/embedded/qemu-armv=
7.cfg =
<http://sources.freebsd.org/HEAD/src/tools/tools/nanobsd/embedded/qemu-arm=
v7.cfg>
> You can probably use NanoBSD-generated image for your experiments
>=20
> Ah, thanks!  That should make things a good deal easier.
> Using the nanobsd-generated images and the qemu invocation from =
qemu-armv7.cfg, I get a bit further but end up with a repeating prefetch =
abort:
> Prefetch Abort Exception PC at 0xFF176790  CPSR 0x80000113
>=20
> This is either in UEFI or very early in kernel bootstrap, since the =
copyright hasn't printed yet...haven't poked at it to figure out where =
the pc comes from yet.

Looks like it's boot1.efi. After upgrading to clang 3.9.0 -fPIC is =
required to  build loader. In addition to this problem there seems to be =
some error when calculating value for relocation. Looks like it=E2=80=99s =
going to take a bit of time to track down, I can=E2=80=99t identify it =
immediately. =20




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?58C0D791-3D3C-4DE2-9EAF-93DA40ED620D>