]> git.karo-electronics.de Git - karo-tx-linux.git/log
karo-tx-linux.git
14 years agokvm__setup_cpuid: use KVM_GET_SUPPORTED_CPUID to simplify cpuid setup
Asias He [Mon, 12 Jul 2010 12:52:23 +0000 (20:52 +0800)]
kvm__setup_cpuid: use KVM_GET_SUPPORTED_CPUID to simplify cpuid setup

Let kernel setup "struct kvm_cpuid2" for us!

https://kerneltrap.org/mailarchive/linux-kernel/2010/4/27/4563640
Avi Kivity:
'''
No.  KVM_GET_CPUID2 reads what was set by KVM_SET_CPUID, as modified by
the guest executing the cpuid instruction.  KVM_GET_SUPPORTED_CPUID
tells userspace which bits are supported by the host cpu and kvm.

The API for KVM_GET_SUPPORTED_CPUID returns all cpuid leaves supported
in one go, IIRC.
'''
Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Add --mem= option
Cyrill Gorcunov [Sun, 11 Jul 2010 10:06:30 +0000 (14:06 +0400)]
kvm: Add --mem= option

Which allow an user to specify the amount of memory
he would like to provide for kernel.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agobios: No need for sti at int15 irq exit
Cyrill Gorcunov [Sat, 10 Jul 2010 20:57:47 +0000 (00:57 +0400)]
bios: No need for sti at int15 irq exit

iret will restore eflags anyway

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agobios: Don't clobber 32bit registers
Cyrill Gorcunov [Sat, 10 Jul 2010 20:56:33 +0000 (00:56 +0400)]
bios: Don't clobber 32bit registers

To be on safe side we better to save whole 32bit
of appropriate registers. Even in real mode.

At moment no code affected but it's possible in future.
Actually int15 code does touch 32bit registers but it
uses caller's stack.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: BIOS E820 memory map emulation
Pekka Enberg [Thu, 8 Jul 2010 18:27:35 +0000 (21:27 +0300)]
kvm: BIOS E820 memory map emulation

This patch adds BIOS E820 memory map emulation to KVM.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm, bios: Rework BIOS setup
Cyrill Gorcunov [Thu, 8 Jul 2010 15:00:07 +0000 (19:00 +0400)]
kvm, bios: Rework BIOS setup

This is a really huge rework of our primitive BIOS emulator.

The initial idea was to implement stack management in BIOS
irq handlers. In turn it ends up in re-factoring of all BIOS
code.

Some code details
-----------------

1) BIOS stack is placed at predefined constant memory address.
2) BIOS stack is only 64 bytes deep. It must be enough even for
   future irq handlers.
3) To be able to place irq handlers at almost arbitrary place of
   guest memory their start address must be 16 byte aligned.
   This makes easy to compute irq routines local variables addresses.
4) To eliminate address relocations in irq handlers code we use a
   special loader script.

TODO
----

- Still needs e820 map implements, int15 is dummy at moment

P.S. Thanks H. Peter Anvin for advices.

[ penberg@cs.helsinki.fi: cleanups ]
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agoExclude .cscope from .gitignore
Cyrill Gorcunov [Thu, 8 Jul 2010 11:05:46 +0000 (15:05 +0400)]
Exclude .cscope from .gitignore

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm, bios: Get rid of buggy int10 handler
Cyrill Gorcunov [Wed, 7 Jul 2010 19:19:34 +0000 (23:19 +0400)]
kvm, bios: Get rid of buggy int10 handler

At moment any BIOS code using which needs own stack
have to be remade. It's a bit not that easy task.

We're happily may live without int10 handler since we
switch to early_printk interface really early. And
actually we don't scan VGA memory anyway so that even
if there is something written we ignore the result.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Cleanup struct boot_params setup
Pekka Enberg [Mon, 5 Jul 2010 19:16:54 +0000 (22:16 +0300)]
kvm: Cleanup struct boot_params setup

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Cleanup kvm__cpu_supports_vm()
Pekka Enberg [Mon, 5 Jul 2010 18:43:17 +0000 (21:43 +0300)]
kvm: Cleanup kvm__cpu_supports_vm()

This patch cleans up kvm__cpu_supports_vm() by unifying the VMX and SVM paths.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Check for SVM extension being supported for AMD cpus
Cyrill Gorcunov [Mon, 5 Jul 2010 17:10:48 +0000 (21:10 +0400)]
kvm: Check for SVM extension being supported for AMD cpus

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Check vmx capability using cpuid
Asias He [Mon, 5 Jul 2010 06:01:11 +0000 (14:01 +0800)]
kvm: Check vmx capability using cpuid

[ penberg@cs.helsinki.fi: use host_cpuid(), cleanups ]
Reported-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Introduce '--kvm-dev' command line option
Pekka Enberg [Sun, 4 Jul 2010 18:57:14 +0000 (21:57 +0300)]
kvm: Introduce '--kvm-dev' command line option

This patch introduces a '--kvm-dev' command line option for debugging purposes.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Introduce 'make devices' target
Pekka Enberg [Sun, 4 Jul 2010 16:24:35 +0000 (19:24 +0300)]
kvm: Introduce 'make devices' target

This patch adds a 'make devices' target to Makefile that sets up KVM device if
one does not exist in '/dev/kvm'.

Suggested-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Fix compilation warning
Pekka Enberg [Sun, 4 Jul 2010 11:13:20 +0000 (14:13 +0300)]
kvm: Fix compilation warning

This patch fixes the following compilation warning:

  main.c: In function ‘main’:
  main.c:149: warning: label ‘out’ defined but not used

Reported-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Don't stop on ioport errors by default
Pekka Enberg [Sun, 4 Jul 2010 11:02:05 +0000 (14:02 +0300)]
kvm: Don't stop on ioport errors by default

This patch introduces a '--ioport-debug' option that preserves the old
stop-on-error behavior and changes the default to keep on running despite of
ioport errors. This allows Linux kernel to boot to VFS mount phase.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Add '--params' to usage
Pekka Enberg [Sun, 4 Jul 2010 10:59:10 +0000 (13:59 +0300)]
kvm: Add '--params' to usage

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Add proper 00E0 ioport handling
Pekka Enberg [Sun, 4 Jul 2010 10:41:45 +0000 (13:41 +0300)]
kvm: Add proper 00E0 ioport handling

We use 00E0 ioport for trapping to the hypervisor. This patch cleans up
handling of the ioport to call exit() in ioport emulation handler.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Cleanup ioport_ops table
Pekka Enberg [Sun, 4 Jul 2010 10:35:30 +0000 (13:35 +0300)]
kvm: Cleanup ioport_ops table

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Cleanup command line parsing
Pekka Enberg [Sun, 4 Jul 2010 10:32:20 +0000 (13:32 +0300)]
kvm: Cleanup command line parsing

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Use 'nopci pci=off' kernel parameters by default
Pekka Enberg [Sun, 4 Jul 2010 10:18:59 +0000 (13:18 +0300)]
kvm: Use 'nopci pci=off' kernel parameters by default

As pointed out by Cyrill, use 'nopci pci=off' by default to avoid the need for
emulating PCI.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm, cpuid: Use logical AND on bit ops
Cyrill Gorcunov [Sun, 4 Jul 2010 10:00:35 +0000 (14:00 +0400)]
kvm, cpuid: Use logical AND on bit ops

Otherwise we may push cleaned bits back.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm, cpuid: Fill up func 0 and 4
Cyrill Gorcunov [Sat, 3 Jul 2010 20:52:41 +0000 (00:52 +0400)]
kvm, cpuid: Fill up func 0 and 4

Retun "qemu64" largest function number and set
cpu to GenueIntel, fill up cache info and rename
cpuid to host_cpuid since we may need to distinguish
which cpuid (host or guest) is called.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: KVM_CAP_EXT_CPUID is required
Cyrill Gorcunov [Sat, 3 Jul 2010 17:58:24 +0000 (21:58 +0400)]
kvm: KVM_CAP_EXT_CPUID is required

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm, cpuid: Fix XSTOR and VMX compatibility in cpuid
Cyrill Gorcunov [Sat, 3 Jul 2010 15:21:33 +0000 (19:21 +0400)]
kvm, cpuid: Fix XSTOR and VMX compatibility in cpuid

Under virtual environment we don't support XSTOR and VMX features.

Reported-by: Asias He <asias.hejun.hj@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm, tests: Use motherboard specific ports for testing
Cyrill Gorcunov [Thu, 10 Jun 2010 17:15:26 +0000 (21:15 +0400)]
kvm, tests: Use motherboard specific ports for testing

H. Peter Anvin suggested to use motherboard specific ports
for testing instead of ones well known. Thanks, Peter!

Reported-by: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Add force exit from tests
Cyrill Gorcunov [Thu, 10 Jun 2010 16:55:40 +0000 (20:55 +0400)]
kvm: Add force exit from tests

To make so we write any value to port 0 and
start kvm in --dbgtest mode so we are expecting
for this exit.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agotests/pit: Increase PIT frequency up to 1KHz
Cyrill Gorcunov [Wed, 9 Jun 2010 20:05:07 +0000 (00:05 +0400)]
tests/pit: Increase PIT frequency up to 1KHz

Otherwise it's too boring ;)

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Check for HTL extension granted
Cyrill Gorcunov [Wed, 9 Jun 2010 19:05:58 +0000 (23:05 +0400)]
kvm: Check for HTL extension granted

We need it thought it seems it doesn't work in
all our testcases.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Add 'check' target to Makefile
Pekka Enberg [Wed, 9 Jun 2010 18:32:29 +0000 (21:32 +0300)]
kvm: Add 'check' target to Makefile

This patch adds a 'check' target to Makefile that can be used to run some
simple test cases.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm, test: Improve PIT test output
Pekka Enberg [Wed, 9 Jun 2010 18:30:56 +0000 (21:30 +0300)]
kvm, test: Improve PIT test output

This patch makes the PIT test output less verbose.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Add .gitignore for tests
Pekka Enberg [Wed, 9 Jun 2010 18:25:49 +0000 (21:25 +0300)]
kvm: Add .gitignore for tests

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Add Makefile for compiling all test cases
Pekka Enberg [Wed, 9 Jun 2010 18:25:18 +0000 (21:25 +0300)]
kvm: Add Makefile for compiling all test cases

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agotest/pit: Fill up IDT with noop handler
Cyrill Gorcunov [Wed, 9 Jun 2010 18:17:56 +0000 (22:17 +0400)]
test/pit: Fill up IDT with noop handler

To cover all IRQs.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agotests/pit: Issue cli on ISR handling
Cyrill Gorcunov [Wed, 9 Jun 2010 17:24:32 +0000 (21:24 +0400)]
tests/pit: Issue cli on ISR handling

Better to not allow any nested maskable IRQs
while we handle timer irq.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm, test: Move PIT tests to separate directory
Pekka Enberg [Tue, 8 Jun 2010 17:21:40 +0000 (20:21 +0300)]
kvm, test: Move PIT tests to separate directory

This patch moves PIT tests to separate directory and adds Makefile for it.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm, test: add a counter to tick test in ISR
Asias He [Tue, 8 Jun 2010 12:46:51 +0000 (20:46 +0800)]
kvm, test: add a counter to tick test in ISR

when the counter reaches zero, ISR print "TESK OK" then issue a hlt.

Reported-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm, test: add PIT 8254 and PIC 8259 test code
Asias He [Tue, 8 Jun 2010 12:46:50 +0000 (20:46 +0800)]
kvm, test: add PIT 8254 and PIC 8259 test code

8254 ticks at 100HZ.

Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm__setup_sregs: fix indentation
Asias He [Tue, 1 Jun 2010 16:41:59 +0000 (20:41 +0400)]
kvm__setup_sregs: fix indentation

Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agoearly_printk: Simplify the code
Cyrill Gorcunov [Sun, 30 May 2010 19:15:28 +0000 (23:15 +0400)]
early_printk: Simplify the code

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agoearly_printk.c: add rep/outsb support
Asias He [Fri, 28 May 2010 07:48:19 +0000 (15:48 +0800)]
early_printk.c: add rep/outsb support

Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: The command line storage should not be too short
Cyrill Gorcunov [Sun, 30 May 2010 18:33:27 +0000 (22:33 +0400)]
kvm: The command line storage should not be too short

At moment boot protocol may hold up to 2048 symbols
from command line we should provide the same compatibility
for --params option.

Reported-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Append missing ending space for built-in command line
Cyrill Gorcunov [Sun, 30 May 2010 18:23:55 +0000 (22:23 +0400)]
kvm: Append missing ending space for built-in command line

We have a predefined command line but when an user passes
additional parameters the last predefined argument and
first user's one get sticked together. Fix it by adding
ending space for built-in command line.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Check for required KVM extensions in one place
Cyrill Gorcunov [Sun, 30 May 2010 16:32:13 +0000 (20:32 +0400)]
kvm: Check for required KVM extensions in one place

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: kvm__setup_sregs initialize more registers
Asias He [Fri, 28 May 2010 07:48:17 +0000 (15:48 +0800)]
kvm: kvm__setup_sregs initialize more registers

This allow to boot bzImage

Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: reimplement kvm__setup_sregs
Asias He [Fri, 28 May 2010 07:48:16 +0000 (15:48 +0800)]
kvm: reimplement kvm__setup_sregs

It's better to get sregs which was initialized by kernel and change what
we need precisely. Actually vmx_vcpu_reset does the cpu initialization
before us.

This solves the problem of failing to run on x86-32 host kernel.

Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm__init: the kernel should support irq and pit
Asias He [Fri, 28 May 2010 16:47:50 +0000 (20:47 +0400)]
kvm__init: the kernel should support irq and pit

We rely on kenrnel being fresh enough since we're
not going to support non built-in IRQ routing and
PIT emulation.

Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: remove unneccessary iotcl parameter
Asias He [Tue, 11 May 2010 14:21:22 +0000 (22:21 +0800)]
kvm: remove unneccessary iotcl parameter

The last parameter of the following is unneccessary:

  ret = ioctl(self->vm_fd, KVM_SET_USER_MEMORY_REGION, &mem, 1);

as seen in linux-2.6.32.12/virt/kvm/kvm_main.c:

case KVM_SET_USER_MEMORY_REGION: {
        struct kvm_userspace_memory_region kvm_userspace_mem;

        r = -EFAULT;
        if (copy_from_user(&kvm_userspace_mem, argp,
                                        sizeof kvm_userspace_mem))
                goto out;

        r = kvm_vm_ioctl_set_memory_region(kvm, &kvm_userspace_mem, 1);
        if (r)
                goto out;
        break;
}

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Use strlcat helper for copying cmdline params
Cyrill Gorcunov [Mon, 10 May 2010 10:18:17 +0000 (14:18 +0400)]
kvm: Use strlcat helper for copying cmdline params

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Use PRIx qualificator for printf
Cyrill Gorcunov [Wed, 28 Apr 2010 18:59:36 +0000 (22:59 +0400)]
kvm: Use PRIx qualificator for printf

In sake of portability better to use PRIx qualificator
for printf flags.

Reported-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agobios: No new line at EOF nit fix
Asias He [Wed, 28 Apr 2010 18:53:49 +0000 (22:53 +0400)]
bios: No new line at EOF nit fix

Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Fix .gitignore patterns
Pekka Enberg [Mon, 26 Apr 2010 15:16:25 +0000 (18:16 +0300)]
kvm: Fix .gitignore patterns

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Print error code on unknown error
Cyrill Gorcunov [Mon, 26 Apr 2010 11:08:00 +0000 (15:08 +0400)]
kvm: Print error code on unknown error

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agoChange __x86_x__ to CONFIG_X86_X
Cyrill Gorcunov [Mon, 26 Apr 2010 06:55:50 +0000 (10:55 +0400)]
Change __x86_x__ to CONFIG_X86_X

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Flush stdout for early printk
Pekka Enberg [Sat, 24 Apr 2010 06:57:38 +0000 (09:57 +0300)]
kvm: Flush stdout for early printk

Make sure we flush stdout for early printk so that we can see what's really
going on when a kernel gets stuck.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Dump state on SIGQUIT
Pekka Enberg [Sat, 24 Apr 2010 06:54:52 +0000 (09:54 +0300)]
kvm: Dump state on SIGQUIT

This patch adds state dumping to SIGQUIT signal handler to make debugging
infinite loops easier.  If a kernel gets stuck under KVM, you can press Ctrl-4
and then use 'addr2line' to figure out the exact location where it's stuck from
the reported 'rip':

  ^\[    0.000000] Calibrating delay loop... Registers:
   rip: ffffffff816a0c83   rsp: ffffffff81c01eb8 flags: 0000000000000246
   rax: 00000000ffff8ad0   rbx: ffffffff81d541a0   rcx: 00000000ffffffff
   rdx: 00000000ffff8ad0   rsi: 0000000000000046   rdi: 0000000000002000
   rbp: ffffffff81c01f28   r8:  00000000000003fd   r9:  0000000000000000
   r10: 0000000000000000   r11: 000000000000000d   r12: ffffffff81d56d20
   r13: 0000000000000000   r14: ffffffffffffffff   r15: 0000000000013690
   cr0: 000000008005003b   cr2: 0000000000000000   cr3: 0000000001c08000
   cr4: 00000000000006b0   cr8: 0000000000000000
  Segment registers:
   register  selector  base              limit     type  p dpl db s l g avl
   cs        0010      0000000000000000  ffffffff  0b    1 0   0  1 1 1 0
   ss        0000      0000000000000000  ffffffff  00    0 0   0  0 0 0 0
   ds        0000      0000000000000000  ffffffff  00    0 0   0  0 0 0 0
   es        0000      0000000000000000  ffffffff  00    0 0   0  0 0 0 0
   fs        0000      0000000000000000  ffffffff  00    0 0   0  0 0 0 0
   gs        0000      ffff880002000000  ffffffff  00    0 0   0  0 0 0 0
   tr        0040      ffff880002011bc0  00002087  0b    1 0   0  0 0 0 0
   ldt       0000      0000000000000000  ffffffff  00    0 0   0  0 0 0 0
   gdt                 ffff880002004000  0000007f
   idt                 ffffffff81de9000  00000fff
   [ efer: 0000000000000d01  apic base: 0000000000000000  nmi: enabled ]
  Interrupt bitmap:
   0000000000000000 0000000000000000 0000000000000000 0000000000000000
  Code:
  Stack:
  penberg@tiger:~/vm$ addr2line -e vmlinux
  0xffffffff816a0c83
  /home/penberg/linux/init/calibrate.c:149

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Don't touch 64 bit specific MSR registers on 32 bit
Cyrill Gorcunov [Thu, 22 Apr 2010 14:46:31 +0000 (18:46 +0400)]
kvm: Don't touch 64 bit specific MSR registers on 32 bit

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Set more fields in boot protocol
Cyrill Gorcunov [Sat, 17 Apr 2010 11:32:48 +0000 (15:32 +0400)]
kvm: Set more fields in boot protocol

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Command line update must honor ABI
Cyrill Gorcunov [Fri, 16 Apr 2010 17:33:04 +0000 (21:33 +0400)]
kvm: Command line update must honor ABI

This is a part of boot protocol, so that we
must honor it.

Reported-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agoMakefile: Add cpu specific definition
Cyrill Gorcunov [Wed, 14 Apr 2010 16:22:00 +0000 (20:22 +0400)]
Makefile: Add cpu specific definition

We need to figure out what kind of cpu we're
going to run on for bios code.

Suggested-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Kill the bin2c helper
Cyrill Gorcunov [Tue, 13 Apr 2010 19:48:17 +0000 (23:48 +0400)]
kvm: Kill the bin2c helper

Instead of calling bin2c helper we just include 16-bit pure code with .incbin
and export the symbols we need.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Add more default kernel command line parameters
Cyrill Gorcunov [Sun, 11 Apr 2010 18:21:09 +0000 (22:21 +0400)]
kvm: Add more default kernel command line parameters

We dont support ACPI, APIC, SMP yet, mark it so.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agoMerge branch 'master' of git://github.com/cyrillos/vm
Pekka Enberg [Sun, 11 Apr 2010 18:07:45 +0000 (21:07 +0300)]
Merge branch 'master' of git://github.com/cyrillos/vm

14 years agokvm: Clean up early serial code
Pekka Enberg [Sun, 11 Apr 2010 18:05:36 +0000 (21:05 +0300)]
kvm: Clean up early serial code

Use similar constants and variable names as in arch/x86/kernel/early_printk.c
in the Linux kernel.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agoioport: Make all PIT channels being dummy
Cyrill Gorcunov [Sun, 11 Apr 2010 17:56:56 +0000 (21:56 +0400)]
ioport: Make all PIT channels being dummy

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Force 'notsc' and 'earlyprintk' kernel parameters
Pekka Enberg [Sun, 11 Apr 2010 17:55:56 +0000 (20:55 +0300)]
kvm: Force 'notsc' and 'earlyprintk' kernel parameters

We don't support TSC calibration properly and we want early printk so force
them as kernel parameters.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Add support for early serial printk
Pekka Enberg [Sun, 11 Apr 2010 17:42:10 +0000 (20:42 +0300)]
kvm: Add support for early serial printk

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Make command line to be placed at predefined address
Cyrill Gorcunov [Sun, 11 Apr 2010 16:09:28 +0000 (20:09 +0400)]
kvm: Make command line to be placed at predefined address

We support only 0x202 boot protocol at moment so that kernel command line is
copied into predefined address.

Reported-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Fix minor formatting glitch in cpuid.c
Pekka Enberg [Sun, 11 Apr 2010 14:08:15 +0000 (17:08 +0300)]
kvm: Fix minor formatting glitch in cpuid.c

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Fix off-by-one bugs in kvm__setup_cpuid()
Pekka Enberg [Sun, 11 Apr 2010 13:35:35 +0000 (16:35 +0300)]
kvm: Fix off-by-one bugs in kvm__setup_cpuid()

The cpuid_highest_func() and cpuid_highest_ext_func() return the highest
possible function number, not the first non-existing function.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore keyboard controller ioports
Pekka Enberg [Sun, 11 Apr 2010 12:29:43 +0000 (15:29 +0300)]
kvm: Ignore keyboard controller ioports

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore PIT ioports
Pekka Enberg [Sun, 11 Apr 2010 12:25:46 +0000 (15:25 +0300)]
kvm: Ignore PIT ioports

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore dummy delay ioport
Pekka Enberg [Sun, 11 Apr 2010 12:24:17 +0000 (15:24 +0300)]
kvm: Ignore dummy delay ioport

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore CRT control ioports
Pekka Enberg [Sun, 11 Apr 2010 12:22:38 +0000 (15:22 +0300)]
kvm: Ignore CRT control ioports

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore CMOS RAM/RTC ioports
Pekka Enberg [Sun, 11 Apr 2010 12:21:09 +0000 (15:21 +0300)]
kvm: Ignore CMOS RAM/RTC ioports

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore PIC accesses
Pekka Enberg [Sun, 11 Apr 2010 12:18:19 +0000 (15:18 +0300)]
kvm: Ignore PIC accesses

Fix up some dummy ioport ops so that we don't stop on PIC setup code in the
kernel.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore MMIO accesses
Pekka Enberg [Sun, 11 Apr 2010 12:15:02 +0000 (15:15 +0300)]
kvm: Ignore MMIO accesses

Lets cheat some more and ignore MMIO accesses altogether.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore PCI config space accesses
Pekka Enberg [Sun, 11 Apr 2010 12:01:02 +0000 (15:01 +0300)]
kvm: Ignore PCI config space accesses

Lets try to cheat a bit and just flat out ignore PCI config space accesses.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Don't crash debug dump if address isn't in guest memory
Pekka Enberg [Sun, 11 Apr 2010 09:45:15 +0000 (12:45 +0300)]
kvm: Don't crash debug dump if address isn't in guest memory

We don't do MMU translation in the hypevisor for guest memory addresses which
causes us to try to dereference invalid pointers.  Work around the problem by
checking that a pointer is in guest memory before dumping the contents.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Set up MAXPHYADDR guest CPUID
Pekka Enberg [Sun, 11 Apr 2010 09:37:54 +0000 (12:37 +0300)]
kvm: Set up MAXPHYADDR guest CPUID

As explained by Avi Kivity, we need to set up MAXPHYADDR for the guest to avoid
a triple fault when the guest tries to enter long mode. This fixes the
KVM_EXIT_SHUTDOWN problem I was seeing on my machine.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Dump page tables at exit
Pekka Enberg [Sun, 11 Apr 2010 06:28:14 +0000 (09:28 +0300)]
kvm: Dump page tables at exit

To make debugging more easy, dump page tables at exit as suggested by Avi
Kivity.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Dump stack on KVM oops
Pekka Enberg [Thu, 8 Apr 2010 18:53:07 +0000 (21:53 +0300)]
kvm: Dump stack on KVM oops

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Show gdt and idt registers
Pekka Enberg [Thu, 8 Apr 2010 18:45:24 +0000 (21:45 +0300)]
kvm: Show gdt and idt registers

As suggested by Avi Kivity, dump 'gdt' and 'idt' registers as well.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Reference to undefined variable
Cyrill Gorcunov [Thu, 8 Apr 2010 17:53:13 +0000 (21:53 +0400)]
kvm: Reference to undefined variable

We may have cmdline_size not initialized before use. Fix it.

Reported-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Add .gitignore for bios build files
Pekka Enberg [Thu, 8 Apr 2010 18:02:34 +0000 (21:02 +0300)]
kvm: Add .gitignore for bios build files

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Setup VCPU MSRs
Pekka Enberg [Thu, 8 Apr 2010 17:44:37 +0000 (20:44 +0300)]
kvm: Setup VCPU MSRs

Use the KVM_SET_MSRS ioctl() to set up model-specific registers (MSRs) to a
known state.  The MSRs are initialized to zero for now because I'm not sure
what are the right values.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Clean up kvm__reset_vcpu() function
Pekka Enberg [Thu, 8 Apr 2010 17:42:32 +0000 (20:42 +0300)]
kvm: Clean up kvm__reset_vcpu() function

This patch splits kvm__reset_vcpu() into three separate helper functions to
make the function more readable.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Add test binaries to .gitignore
Pekka Enberg [Thu, 8 Apr 2010 17:19:41 +0000 (20:19 +0300)]
kvm: Add test binaries to .gitignore

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Clean up Makefile output
Pekka Enberg [Thu, 8 Apr 2010 17:19:12 +0000 (20:19 +0300)]
kvm: Clean up Makefile output

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Update command line related enitites in boot parameters
Cyrill Gorcunov [Fri, 2 Apr 2010 21:46:11 +0000 (01:46 +0400)]
kvm: Update command line related enitites in boot parameters

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Add copying of kernel command line into guest memory
Cyrill Gorcunov [Fri, 2 Apr 2010 21:16:51 +0000 (01:16 +0400)]
kvm: Add copying of kernel command line into guest memory

We will need to modify heap pointer in guest.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agobios: Add bios stubs generated from assembly files
Cyrill Gorcunov [Thu, 1 Apr 2010 17:23:18 +0000 (21:23 +0400)]
bios: Add bios stubs generated from assembly files

We substitute hardcoded fake bios handlers with ones generated
from assembly sources. This way we may extend them if needed.

In particular new int0x10 handler just write output into video
guest memory so the node machine may read the output anytime
it needs (though, to be fair, the kernel uses int0x10 only once
at bootup procedure if there was an attempt to boot directly
from disk/floppy, any other output is done via video port I/O
which is not implemented yet).

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agointerrupt: Move bios related constants to kvm/bios.h
Cyrill Gorcunov [Thu, 1 Apr 2010 15:51:46 +0000 (19:51 +0400)]
interrupt: Move bios related constants to kvm/bios.h

This will allow us to share them between assembly code
and C code as well.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Introduce kvm__dump_mem helper
Cyrill Gorcunov [Wed, 31 Mar 2010 19:57:12 +0000 (23:57 +0400)]
kvm: Introduce kvm__dump_mem helper

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agointerrupt: Add interrupt_table__set helper
Cyrill Gorcunov [Thu, 1 Apr 2010 15:23:21 +0000 (19:23 +0400)]
interrupt: Add interrupt_table__set helper

In case if some particular interrupt entry needs
to be modified we should use interrupt_table__set
helper.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agobios: Add simple bin2c converter
Cyrill Gorcunov [Wed, 31 Mar 2010 19:45:15 +0000 (23:45 +0400)]
bios: Add simple bin2c converter

We will need it to convert binary data into compilable C code.
It's pretty trivial.

Signed-off-by: Tobias Brox <tobixen@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agokvm: Free memory on exit
Pekka Enberg [Thu, 1 Apr 2010 14:45:26 +0000 (17:45 +0300)]
kvm: Free memory on exit

Free memory on exit so that valgrind reports are easier to read.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Fix protected mode code dump
Pekka Enberg [Thu, 1 Apr 2010 14:32:38 +0000 (17:32 +0300)]
kvm: Fix protected mode code dump

This patch fixes protected mode code dump not to take 16-bit segment selector
into account when calculating the guest flat address.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore PIC init during boot
Pekka Enberg [Thu, 1 Apr 2010 14:23:38 +0000 (17:23 +0300)]
kvm: Ignore PIC init during boot

We don't have interrupt injection so we can safely ignore PIC interrupt masking
during bootup.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
14 years agokvm: Ignore math co-processor reset I/O writes
Pekka Enberg [Thu, 1 Apr 2010 14:18:58 +0000 (17:18 +0300)]
kvm: Ignore math co-processor reset I/O writes

The Linux kernel resets math co-processor when entering protected mode.  Ignore
the reset for now so kernel boot doesn't stop there.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>