Giter Club home page Giter Club logo

nova's People

Contributors

nils-tud avatar udosteinberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nova's Issues

NOVA doesn't detect VMX capability when running in KVM

The IA32_FEATURE_CONTROL MSR in KVM is not implemented. See vmx_get_vmx_msr and vmx_set_vmx_msr in the Linux kernel code.

Quick workaround:

diff --git a/src/vmx.cpp b/src/vmx.cpp
index 4835dc1..fcd9a5f 100644
--- a/src/vmx.cpp
+++ b/src/vmx.cpp
@@ -101,7 +101,7 @@ Vmcs::Vmcs (mword esp, mword bmp, mword cr3, uint64 eptp) : rev (basic.revision)

 void Vmcs::init()
 {
-    if (!Cpu::feature (Cpu::FEAT_VMX) || (Msr::read<uint32>(Msr::IA32_FEATURE_CONTROL) & 0x5) != 0x5) {
+    if (!Cpu::feature (Cpu::FEAT_VMX)) {
         Hip::remove (Hip::FEAT_VMX);
         return;
     }

Drop FPU state on REPLY?

We currently never assume that FPU state is preserved across a call to REPLY and a subsequent entry through a portal. The way the code is structured would even make it very hard to find a good usecase for accessing the FPU state left from servicing the last portal call.

Would it make sense to change the semantics of REPLY to not preserve FPU state, i.e. setting fpowner = nullptr on REPLY? It should save a call to fpu->save() in a lot of cases, with no ill side effects, except for the minor tidbit that when a EC accesses the FPU upon serving a subsequent portal call, it will see stale content (if it were to look, which it isn't...).

Guest FPU state not accessible

Currently FPU/SSE/AVX/... instructions in the guest can not be emulated by the VMM, as NOVA does not export vCPU FPU state.

NOVA triggers KVM emulation failure

NOVA triggers a KVM failure when booted in qemu-kvm with more than one CPU. 64-bit version fails as well, but silently.

This is with QEMU emulator version 1.0.1 (qemu-kvm-1.0.1) and Linux 3.6.7-4.fc17.x86_64.

julian@workalot build % qemu-kvm -smp 1 -kernel hypervisor-x86_32 -append "spinner serial" -cpu coreduo -serial stdio 

NOVA Microhypervisor v5-ecc2057 (x86_32): Nov 28 2012 13:17:08 [gcc 4.7.2]

[ 0] CORE:0:0:0 6:e:8:0 [1] Genuine Intel(R) CPU           T2600  @ 2.16GHz
[ 0] Killed EC:0xc13ef200 SC:0xc0010100 V:0x1e CS:0x1b EIP:0x0 CR2:0x0 ERR:0x0 (No ELF)
qemu: terminating on signal 2
julian@workalot build % qemu-kvm -smp 2 -kernel hypervisor-x86_32 -append "spinner serial" -cpu coreduo -serial stdio 

NOVA Microhypervisor v5-ecc2057 (x86_32): Nov 28 2012 13:17:08 [gcc 4.7.2]

[ 0] CORE:0:0:0 6:e:8:0 [1] Genuine InKVM internal error. Suberror: 1
emulation failure
EAX=df300a2f EBX=00000094 ECX=00000000 EDX=c000f000
ESI=00202fd8 EDI=00000000 EBP=53f000ff ESP=00202fc0
EIP=00200fea EFL=00010046 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0023 00000000 ffffffff 00c0f300 DPL=3 DS   [-WA]
CS =0008 00000000 ffffffff 00c09b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
DS =0023 00000000 ffffffff 00c0f300 DPL=3 DS   [-WA]
FS =0023 00000000 ffffffff 00c0f300 DPL=3 DS   [-WA]
GS =0023 00000000 ffffffff 00c0f300 DPL=3 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     00200010 00000027
IDT=     00000000 0000ffff
CR0=8001003b CR2=00000000 CR3=0040f000 CR4=00000698
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 
DR6=00000000ffff0ff0 DR7=0000000000000400
EFER=0000000000000000
Code=?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? <??> ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
teqemu: terminating on signal 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.