Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Jul 2015 19:06:24 +0300
From:      Mihai Carabas <mihai.carabas@gmail.com>
To:        soc-status@freebsd.org
Subject:   Re: [GSOC] bhyve port on ARM - weekly status report
Message-ID:  <CANg1yUuMOjZjgrHDyyMfrLr64VngY%2BNYr1tSM2oUYtGvtFDS6A@mail.gmail.com>
In-Reply-To: <CANg1yUscFhh1C=ny4NS9sXQANFd5gc_am1re4-k2e-aErQ0NwA@mail.gmail.com>
References:  <CANg1yUspT8uHtX4bu0kO5dWLssvv-5457kSBovdyNKpi-OQ1kw@mail.gmail.com> <CANg1yUvgvtp5asPXLmtjwkROZ4Kf=mrOxXFcwvwdseYoQkcivA@mail.gmail.com> <CANg1yUsT=RRiNffq6cEXZArR4dYg9RiRc3dgc%2BCXMaY8JYir2Q@mail.gmail.com> <CANg1yUvyjTezxURAJi2EnYh6WLGVwSJbMSQNUEV0A2Un7kKNjA@mail.gmail.com> <CANg1yUsAifBweEKHBZbMrEpYmTd60ACq-H6aJ9Px%2BRb6ZK8moQ@mail.gmail.com> <CANg1yUt4tGB%2Bh6ZBQPqvQcbt66PM3qZmTdrCTKHQYREhz3P4aw@mail.gmail.com> <CANg1yUscFhh1C=ny4NS9sXQANFd5gc_am1re4-k2e-aErQ0NwA@mail.gmail.com>

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

In the last week I've written the glue C code which is calling the ASM
> methods to run a VM. The logic flow starts from userspace from bhyvearm
> program (it's a duplicate of the normal bhyve due to its high dependency of
> x86) using ioctl's to run the VM.
>
> I've also written a simplified bhyveloadarm which maps the desired memory
> from the GPA indicated as a parameter (here I had to write the entire flow
> from userspace to kernel because there were empty functions - the MMAP
> ioctl). Than it loads the raw kernel image in the memory at a given
> address. In the end I set up the PC using also an ioctl.
>
> I've created a new ramdisk containing the bhyvearm* programs and the
> dynamic libraries they depend on. Then I've managed to make bhyveloadarm
> to copy a file which contains the bytecode for the "wfi" instruction in the
> guest memory and now I'm playing with bhyvearm to make the "guest" run that
> instruction. I'm investigating a bug in restoring the host state after the
> VM has run (the VM throws a data abort exception because I haven't
> configured the VTCR yet and I'm trying to send this exception back in
> bhyvearm userspace).
>
> Last week I fulfilled an important step: I've managed to execute an
instruction in the VirtualMachine and returning back with the HYP expection
caused by executing a "wfi" instruction (which is disabled by
configuration). Than I've added two more operations: mov r0,1 and add r4,
r0 , 4 and both are executing OK (tested even step-by-step in the debugger).

Further, I've read the exception status registers (HSR, HIFAR, HDFAR,
HPFAR) in hyp-mode just before returning to the host. I've read them all
even some of them are in state unknown depending on the exception type. I
will let the C code to verify this.

I also had a design issue and I had to read these registers in "struct
hypctx"  first and when returning in the host, copy them back to the
"vm_exit" structure which was stored in "struct vm" (which isn't mapped in
HYP-mode and even if I map it, I have to do a lot of index calculation to
place the values in the right place - so I've decided to duplicate the
info). So right now, when executing the WFI instruction, it causes a HYP
exception which sets VM_EXITCODE_HYP which will determine the userspace
utility to exit.

An issue that need to be tackled is the reset state of the coprocessor
registers. I need to take them one-by-one and set this reset state probably
using some state-table approach (like KVM is doing).

Thank you,
Mihai



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANg1yUuMOjZjgrHDyyMfrLr64VngY%2BNYr1tSM2oUYtGvtFDS6A>