mbox

target-arm: kvm: use KVM_SET_SREGS to set target to Cortex A15

Message ID 87394gpdoi.fsf@rustcorp.com.au
State New
Headers show

Pull-request

git://git.linaro.org/people/rusty/qemu-linaro.git msr-ops

Message

Rusty Russell July 25, 2012, 6:17 a.m. UTC
On Tue, 17 Jul 2012 19:19:16 +0100, Peter Maydell <peter.maydell@linaro.org> wrote:
> So I can't see anything better than "complain and return failure
> from kvm_arch_init_vcpu() if the guest CPU isn't going to work".

OK, here's what I have for kvm.  It matches the kernel patches I just
sent out, with the updated API.

I rewrote all the backwards compat stuff to wrap it in #ifdef
HORRIBLE_COMPAT_HACK, but something subtle broke and it no longer set
cpsr correctly for older kernels.  After wasting an afternoon on it, I
gave up and threw out the backwards compat code in digust.

Nor does it bisect, since we update the headers as you asked, then
update the code.

The following changes since commit 94d477a4017d45222a4a0227857ad9fc3f81fb2d:

  Merge upstream master into qemu-linaro (2012-07-16 15:04:16 +0100)

are available in the git repository at:


  git://git.linaro.org/people/rusty/qemu-linaro.git msr-ops

for you to fetch changes up to caf1e8a68ceb6ffd485e96d2f05102b095dd69bd:

  target-arm: kvm: use KVM_GET_MSRS/KVM_SET_MSRS for CP15 registers. (2012-07-25 15:37:44 +0930)

----------------------------------------------------------------
Rusty Russell (3):
      Local update of linux-headers/asm-arm/kvm.h
      target-arm: kvm: use KVM_ARM_VCPU_INIT to set target to Cortex A15
      target-arm: kvm: use KVM_GET_MSRS/KVM_SET_MSRS for CP15 registers.

 linux-headers/asm-arm/kvm.h |   50 +++++++++++++++++++++++++++++-------
 linux-headers/linux/kvm.h   |    3 +++
 target-arm/kvm.c            |   60 +++++++++++++++++++++++++++++++++----------
 3 files changed, 91 insertions(+), 22 deletions(-)

Comments

Peter Maydell July 25, 2012, 3:04 p.m. UTC | #1
On 25 July 2012 07:17, Rusty Russell <rusty.russell@linaro.org> wrote:
> On Tue, 17 Jul 2012 19:19:16 +0100, Peter Maydell <peter.maydell@linaro.org> wrote:
>> So I can't see anything better than "complain and return failure
>> from kvm_arch_init_vcpu() if the guest CPU isn't going to work".
>
> OK, here's what I have for kvm.  It matches the kernel patches I just
> sent out, with the updated API.
>
> I rewrote all the backwards compat stuff to wrap it in #ifdef
> HORRIBLE_COMPAT_HACK, but something subtle broke and it no longer set
> cpsr correctly for older kernels.  After wasting an afternoon on it, I
> gave up and threw out the backwards compat code in digust.
>
> Nor does it bisect, since we update the headers as you asked, then
> update the code.

Looks ok. We'll probably rewrite that register read/write code
at some point before upstreaming -- I want to see if we
can do that as a straightforward "iterate through cp15 hash
table and do something for every register" kind of loop,
but this is OK for purposes of staying in sync with the kernel.

I'm going to hold off on putting this in qemu-linaro until Christoffer
has acked the ABI changes on the kernel side, though.

>       Local update of linux-headers/asm-arm/kvm.h

From the commit message for that:
# Worse, the new arm kvm_para.h includes asm-generic/kvm_para.h,
# which isn't included in qemu.

That we can deal with now, though: update-linux-headers.sh
just needs updating to include it in its non-arch-specific
set of copied headers.

-- PMM
Antonios Motakis July 31, 2012, 9:52 p.m. UTC | #2
On Wed, Jul 25, 2012 at 8:17 AM, Rusty Russell <rusty.russell@linaro.org>wrote:

> On Tue, 17 Jul 2012 19:19:16 +0100, Peter Maydell <
> peter.maydell@linaro.org> wrote:
> > So I can't see anything better than "complain and return failure
> > from kvm_arch_init_vcpu() if the guest CPU isn't going to work".
>
> OK, here's what I have for kvm.  It matches the kernel patches I just
> sent out, with the updated API.
>
> I rewrote all the backwards compat stuff to wrap it in #ifdef
> HORRIBLE_COMPAT_HACK, but something subtle broke and it no longer set
> cpsr correctly for older kernels.  After wasting an afternoon on it, I
> gave up and threw out the backwards compat code in digust.
>
> Nor does it bisect, since we update the headers as you asked, then
> update the code.
>
> The following changes since commit
> 94d477a4017d45222a4a0227857ad9fc3f81fb2d:
>
>   Merge upstream master into qemu-linaro (2012-07-16 15:04:16 +0100)
>
> are available in the git repository at:
>
>
>   git://git.linaro.org/people/rusty/qemu-linaro.git msr-ops
>
> for you to fetch changes up to caf1e8a68ceb6ffd485e96d2f05102b095dd69bd:
>
>   target-arm: kvm: use KVM_GET_MSRS/KVM_SET_MSRS for CP15 registers.
> (2012-07-25 15:37:44 +0930)
>
> ----------------------------------------------------------------
> Rusty Russell (3):
>       Local update of linux-headers/asm-arm/kvm.h
>       target-arm: kvm: use KVM_ARM_VCPU_INIT to set target to Cortex A15
>       target-arm: kvm: use KVM_GET_MSRS/KVM_SET_MSRS for CP15 registers.
>
>  linux-headers/asm-arm/kvm.h |   50 +++++++++++++++++++++++++++++-------
>  linux-headers/linux/kvm.h   |    3 +++
>  target-arm/kvm.c            |   60
> +++++++++++++++++++++++++++++++++----------
>  3 files changed, 91 insertions(+), 22 deletions(-)
> _______________________________________________
> kvmarm mailing list
> kvmarm@lists.cs.columbia.edu
> https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm
>

Hello,

I've been trying to get your msr-ops linux-kvm & qemu branches to work, but
so far I've not had any luck booting a guest. I'll nuke my setup and start
over tomorrow to make sure I don't have something broken. Are there any
known issues with the code so far?

Cheers,
Antonios
Rusty Russell Aug. 1, 2012, 1:53 a.m. UTC | #3
On Tue, 31 Jul 2012 23:52:20 +0200, Antonios Motakis <a.motakis@virtualopensystems.com> wrote:
> Hello,
> 
> I've been trying to get your msr-ops linux-kvm & qemu branches to work, but
> so far I've not had any luck booting a guest. I'll nuke my setup and start
> over tomorrow to make sure I don't have something broken. Are there any
> known issues with the code so far?

Hmm, works for me...

I've just moved everything across to a separate linux-kvm-arm tree, and
just pushed the exact version I was using:

     git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-kvm-arm.git

(branch msr-ops).

If that fails, please describe symtoms...

Thanks,
Rusty.