]>
git.karo-electronics.de Git - karo-tx-linux.git/log
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Pekka Enberg [Sun, 11 Apr 2010 18:07:45 +0000 (21:07 +0300)]
Merge branch 'master' of git://github.com/cyrillos/vm
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Pekka Enberg [Thu, 1 Apr 2010 13:35:38 +0000 (16:35 +0300)]
kvm: Setup guest FPU state
Use the KVM_SET_FPU ioctl() to set up guest initial FPU state.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 31 Mar 2010 18:55:49 +0000 (21:55 +0300)]
kvm: Remove unused cpu.c file
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 31 Mar 2010 18:35:27 +0000 (21:35 +0300)]
kvm: Add simple NMI enable/disable support
This patch adds simple NMI I/O port emulation.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg [Wed, 31 Mar 2010 18:11:30 +0000 (21:11 +0300)]
kvm: Don't abort guest on KVM_EXIT_IO
This is a preparational step for emulating IO.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
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>