]>
git.karo-electronics.de Git - karo-tx-linux.git/log
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Pekka Enberg [Wed, 31 Mar 2010 18:08:16 +0000 (21:08 +0300)]
kvm: Extract ioport emulation code to its own file
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 31 Mar 2010 17:59:54 +0000 (20:59 +0300)]
kvm: Extract CPUID code into its own file
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 31 Mar 2010 17:52:12 +0000 (20:52 +0300)]
kvm: Enable GCC debugging information
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 31 Mar 2010 16:45:23 +0000 (19:45 +0300)]
kvm: Setup CPUID for the guest
This patch sets up guest CPUID which is based on host CPUID.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 31 Mar 2010 16:19:23 +0000 (19:19 +0300)]
kvm: Introduce --single-step command line option
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Tue, 30 Mar 2010 19:26:29 +0000 (23:26 +0400)]
kvm: Put fake bios interrupt handlers into known memory area
Instead of hacking boot protocol header better to place interrupt handlers into
BDA.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Mon, 29 Mar 2010 15:47:31 +0000 (19:47 +0400)]
kvm: Rename ivt_ prefixed entities
Though ivt stands for interrupt vector table it's not that clear, lets use
real_intr_desc for that.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sun, 28 Mar 2010 16:54:24 +0000 (19:54 +0300)]
kvm: Move util.h to include/kvm directory
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sun, 28 Mar 2010 16:45:08 +0000 (19:45 +0300)]
kvm: Clean up interrupt_table__setup()
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sun, 28 Mar 2010 16:41:48 +0000 (19:41 +0300)]
kvm: Move interrupt table to struct kvm
This patch moves the global interrupt table to struct kvm.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sun, 28 Mar 2010 16:35:32 +0000 (19:35 +0300)]
kvm: Remove unnecessary includes from interrupt.c
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sun, 28 Mar 2010 16:34:30 +0000 (19:34 +0300)]
kvm: Clean up kvm/interrupt.h a bit
Add include guards to the header file and remove unnecessary #includes.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sun, 28 Mar 2010 16:33:16 +0000 (19:33 +0300)]
kvm: Rename interrupt emulation source files
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Sun, 28 Mar 2010 15:53:30 +0000 (19:53 +0400)]
kvm: Fill up fake IVT
Fill up fake IVT to point to 2 bytes opcodes of "sti,iret". Since they have to
live somewhere in guest memory we use _pad entry from boot_params space.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Sun, 28 Mar 2010 15:10:03 +0000 (19:10 +0400)]
kvm: Setup fake IVT table
Setup fake interrupt handlers for real mode, it consists of iret opcode only.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Sun, 28 Mar 2010 14:45:51 +0000 (18:45 +0400)]
kvm: Introduce IVT handling
Introduce procedures for handling IVT (Interrupt Vector Table) to be used int
real mode bootstrap procedure.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Sun, 28 Mar 2010 10:35:06 +0000 (14:35 +0400)]
kvm: Add --params option
In particular this will keep boot agruments for kernel. The commit technically
prepares ground for real argument pass.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Sun, 28 Mar 2010 10:27:44 +0000 (14:27 +0400)]
kvm: Add --kernel parameter handling
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Sun, 28 Mar 2010 14:21:05 +0000 (18:21 +0400)]
kvm: Fixup boot selector
The boot selector for modern boot protocol is 64K not 4K.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Sat, 27 Mar 2010 20:12:10 +0000 (23:12 +0300)]
kvm: Use 64 bit names when showing registers
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Sat, 27 Mar 2010 19:11:26 +0000 (22:11 +0300)]
kvm: load_bzimage: Proper check for number of setup sectors
We should check for the number of setup sectors before adding the last one.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 18:55:27 +0000 (20:55 +0200)]
kvm: Introduce host_real_to_guest() helper function
Introduce a new host_real_to_guest() helper function and use it to clean up
code.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 18:46:33 +0000 (20:46 +0200)]
kvm: Setup stack for the kernel
The Linux kernel expects stack to be set up for it. Fixes a bug in the program
where we start to run an instruction stream filled with zeros.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 18:23:35 +0000 (20:23 +0200)]
kvm: Load kernel at 0x1000
As described in Documentation/x86/boot.txt, memory starting at 0x1000 is
available for the boot loader. As we don't have a separate boot loader, load
the kernel at the address. Note: we're setting up the segment selector here so
0x0100:0x0000 in 16-bit real mode is 0x1000 in physical memory.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 18:16:51 +0000 (20:16 +0200)]
kvm: Fix kernel boot IP
Booting to a Linux kernel is no longer supported. Therefore, start executing
at offset 0x200 of bzImage which has a jump to real-mode setup code. See
Documentation/x86/boot.txt for more details.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 18:05:04 +0000 (20:05 +0200)]
kvm: Remove 'reset vector' hack
As explained by Avi Kivity, KVM on Intel requires segment 'base' to equal to
'selector * 16'. Fix that up and remove the 'reset vector' hack.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 17:59:52 +0000 (19:59 +0200)]
kvm: Fix setup size calculation
I need a brown paper bag. When converting sectors to bytes, we need to shift
by 9 ("512"), not 4 ("16")...
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 16:56:38 +0000 (18:56 +0200)]
Revert "kvm: Enable 'interrupt request window'"
This reverts commit
c1a099311e695bfe1caca9a11e294fbd70d3ba11 . Interrupt
request windows are for host to guest interrupt injection. Software interrupts
and traps happen 100% in the guest.
Pekka Enberg [Sat, 27 Mar 2010 12:13:25 +0000 (14:13 +0200)]
kvm: Enable 'interrupt request window'
This patch enables KVM 'interrupt request window' so that KVM_RUN returns when
we hit an interrupt.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 09:15:31 +0000 (11:15 +0200)]
kvm: Document the 'reset vector' hack
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 09:08:32 +0000 (11:08 +0200)]
kvm: Clean up reset vector setup code
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 08:58:58 +0000 (10:58 +0200)]
kvm: Add some single-step debugging and don't stop running
Now that we can execute some instructions, don't stop on first single step but
dump some debugging output instead and continue running.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 08:53:15 +0000 (10:53 +0200)]
kvm: Hardcode a "reset vector" at f000:fff0
It seems that if we attempt to run code at any other location than f000:fff0,
we get an KVM_EXIT_UNKNOWN error. To work around that, hardcode a "reset
vector" at f000:fff0 that jumps to 0000:0x7c000 and load the kernel at the
latter location.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 08:15:18 +0000 (10:15 +0200)]
kvm: Read the whole bzImage to memory
We need to read the whole bzImage to memory; otherwise we miss some of the
setup code.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 07:54:58 +0000 (09:54 +0200)]
kvm: Fix bzImage setup sector default count
If setup sectors is zero, the real value is 4 as per
Documentation/x86/boot.txt.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Sat, 27 Mar 2010 07:34:00 +0000 (09:34 +0200)]
kvm: Load bzImage real-mode boot sector and setup code
We start KVM in 16-bit mode so we should set cs:ip to point to the real-mode
boot sector and setup code, not the protected mode kernel that starts at 1M.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Fri, 26 Mar 2010 19:51:55 +0000 (21:51 +0200)]
Add support for loading flat binaries
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Fri, 26 Mar 2010 19:40:46 +0000 (21:40 +0200)]
Add a simple "kernel" binary that can be used for testing
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Fri, 26 Mar 2010 18:12:48 +0000 (21:12 +0300)]
Add info() helper
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Fri, 26 Mar 2010 16:36:30 +0000 (18:36 +0200)]
Print 'avl' bits of a segment
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Fri, 26 Mar 2010 15:48:11 +0000 (18:48 +0300)]
Makefile: Add CPPFLAGS handling
Some developers may need to pass specific flags
to compiler, usually due to different include/
directory and etc. So add well known CPPFLAGS
here.
Example:
$ CPPFLAGS="-I/home/include" make
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Fri, 26 Mar 2010 15:24:39 +0000 (17:24 +0200)]
Fix up 'ip' in kvm__reset_vcpu() to take real mode into account
We can't just set 'rip' to 1 MB mark because in real mode, 'ip' is just 16 bits
wide.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Thu, 25 Mar 2010 19:16:53 +0000 (21:16 +0200)]
Improve KVM register dump output
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Thu, 25 Mar 2010 19:15:27 +0000 (21:15 +0200)]
Fix LDT descriptor type for KVM_SET_SREG
This patch fixes the KVM_EXIT_UNKNOWN error when running bzImage.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Thu, 25 Mar 2010 18:37:48 +0000 (20:37 +0200)]
Setup segmentation for the guest
This patch adds segmentation setup for the guest. It's not perfect yet as we
get KVM_EXIT_UNKNOWN but it's a start nevertheless.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Thu, 25 Mar 2010 15:40:51 +0000 (17:40 +0200)]
Separate KVM code from the main loop
This patch separates the KVM code in its own file and cleans everything up a
bit while at it.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Wed, 24 Mar 2010 21:15:36 +0000 (00:15 +0300)]
Don't die on old kernels without single-step debug support
Better inform the user that the host kernel do not
support single-stepping debug.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cyrill Gorcunov [Wed, 24 Mar 2010 21:14:25 +0000 (00:14 +0300)]
Add utility functions
Move helpers out to separate files.
Mostly borrowed from perf
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 20:16:07 +0000 (22:16 +0200)]
Enable KVM guest single-stepping
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 20:03:16 +0000 (22:03 +0200)]
Move KVM_SET_REGS to kvm__reset_vcpu()
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 19:33:45 +0000 (21:33 +0200)]
Dump KVM_EXIT_IO details
When KVM_RUN returns with KVM_EXIT_IO, dump the I/O details and exit.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 19:05:02 +0000 (21:05 +0200)]
Fix up rflags printing
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 18:08:21 +0000 (20:08 +0200)]
Setup rflags properly to fix EXIT_UNKNOWN
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 17:16:49 +0000 (19:16 +0200)]
Fix guest code printout
Doh, forgot to initialize 'c'...
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 17:04:31 +0000 (19:04 +0200)]
Show dump of executed code at KVM exit
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 16:49:32 +0000 (18:49 +0200)]
Print out constant names for KVM exit reasons
Things are way easier to debug that way.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 16:13:46 +0000 (18:13 +0200)]
Initialize RIP before starting to run the guest
Use the return value of load_kernel() to initialize RIP register before
starting the guest with KVM_RUN ioctl().
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 16:09:16 +0000 (18:09 +0200)]
Dump registers after KVM_RUN returns
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 15:57:08 +0000 (17:57 +0200)]
Update .gitignore to include object files
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 15:56:17 +0000 (17:56 +0200)]
Load bzImage to guest RAM
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 24 Mar 2010 15:19:28 +0000 (17:19 +0200)]
Initialize guest memory region properly
Use posix_memalign() to allocate memory for the guest and register the region
to KVM.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Tue, 23 Mar 2010 20:18:31 +0000 (22:18 +0200)]
Initial version of kernel image loading
This patch adds support for checking whether the provided kernel image is a
bzImage or not.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Tue, 23 Mar 2010 20:04:20 +0000 (22:04 +0200)]
Load kernel image to the VM
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Tue, 23 Mar 2010 19:57:32 +0000 (21:57 +0200)]
Move CPU emulation code to cpu.c
The kvm.c file is getting bigger so move CPU emulation code to a separate file.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Tue, 23 Mar 2010 19:51:54 +0000 (21:51 +0200)]
Mmap the kvm_run structure
Mmap the kvm_run structure and print out ->exit_reason in human-readable form
upon exit to make it more visible what's happening after KVM_RUN ioctl() is
called.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Tue, 23 Mar 2010 19:30:48 +0000 (21:30 +0200)]
Clean up struct kvm file descriptor names
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Tue, 23 Mar 2010 19:24:59 +0000 (21:24 +0200)]
Set up TSS address to make vcpu creation work
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Tue, 23 Mar 2010 05:38:07 +0000 (07:38 +0200)]
Initialize KVM some more
This patch adds some more KVM initialization code. Doesn't work yet, though.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Mon, 22 Mar 2010 21:39:40 +0000 (23:39 +0200)]
Clean up KVM initialization
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Mon, 22 Mar 2010 21:34:02 +0000 (23:34 +0200)]
Check for KVM_CAP_USER_MEMORY
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Mon, 22 Mar 2010 21:30:10 +0000 (23:30 +0200)]
Move KVM fds into 'struct kvm'
This patch introduces a 'struct kvm' and moves the KVM related file descriptors
into it so that we can introduce helper functions more easily.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Mon, 22 Mar 2010 21:12:14 +0000 (23:12 +0200)]
Create a VM using ioctl(KVM_CREATE_VM)
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Mon, 22 Mar 2010 21:06:27 +0000 (23:06 +0200)]
Add .gitignore file
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Mon, 22 Mar 2010 21:05:28 +0000 (23:05 +0200)]
Check for KVM_API_VERSION at init
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Mon, 22 Mar 2010 19:25:28 +0000 (21:25 +0200)]
Initial commit
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>