From: Jack Lange Date: Tue, 22 Jul 2008 22:51:39 +0000 (+0000) Subject: more clean up changes X-Git-Tag: vmmhack1-ramdisk-boot-iso-puppy~53 X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=0e3fe455f4c490dc4c5d9412decf2420b905b3e9 more clean up changes --- diff --git a/palacios/build/Makefile b/palacios/build/Makefile index 0462485..0875737 100644 --- a/palacios/build/Makefile +++ b/palacios/build/Makefile @@ -1,6 +1,6 @@ # Makefile for GeekOS kernel, userspace, and tools # Copyright (c) 2004,2005 David H. Hovemeyer -# $Revision: 1.50 $ +# $Revision: 1.51 $ # This is free software. You are permitted to use, # redistribute, and modify it as specified in the file "COPYING". @@ -66,7 +66,7 @@ endif ifeq ($(DEBUG_PIC),1) DEBUG_SECTIONS := $(DEBUG_SECTIONS) -DDEBUG_PIC endif -ifeq ($(DEBUG_DEBUG_PIT),1) +ifeq ($(DEBUG_PIT),1) DEBUG_SECTIONS := $(DEBUG_SECTIONS) -DDEBUG_PIT endif ifeq ($(DEBUG_NVRAM),1) diff --git a/palacios/include/palacios/vmm_intr.h b/palacios/include/palacios/vmm_intr.h index ec7a8c9..8aa4ec7 100644 --- a/palacios/include/palacios/vmm_intr.h +++ b/palacios/include/palacios/vmm_intr.h @@ -32,11 +32,30 @@ typedef enum {INVALID_INTR, EXTERNAL_IRQ, NMI, EXCEPTION, SOFTWARE_INTR, VIRTUAL struct guest_info; +/* We need a way to allow the APIC/PIC to decide when they are supposed to receive interrupts... + * Maybe a notification call when they have been turned on, to deliver irqs to them... + * We can rehook the guest raise_irq op, to the appropriate controller + */ +struct vm_intr { + /* We need to rework the exception state, to handle stacking */ + uint_t excp_pending; + uint_t excp_num; + uint_t excp_error_code_valid : 1; + uint_t excp_error_code; + + struct intr_ctrl_ops * controller; + void * controller_state; + /* some way to get the [A]PIC intr */ +}; + + + +void init_interrupt_state(struct guest_info * info); int v3_raise_irq(struct guest_info * info, int irq); @@ -72,35 +91,16 @@ int end_irq(struct vm_intr * intr, int irq); -void init_interrupt_state(struct guest_info * info); - -/* We need a way to allow the APIC/PIC to decide when they are supposed to receive interrupts... - * Maybe a notification call when they have been turned on, to deliver irqs to them... - * We can rehook the guest raise_irq op, to the appropriate controller - */ -struct vm_intr { - /* We need to rework the exception state, to handle stacking */ - uint_t excp_pending; - uint_t excp_num; - uint_t excp_error_code_valid : 1; - uint_t excp_error_code; - - struct intr_ctrl_ops * controller; - void * controller_state; - - /* some way to get the [A]PIC intr */ - -}; struct vmm_intr_state; int v3_hook_irq(uint_t irq, - void (*handler)(struct vmm_intr_state *state), - void *opaque); + void (*handler)(struct vmm_intr_state *state), + void *opaque); int v3_hook_irq_for_guest_injection(struct guest_info *info, int irq); diff --git a/palacios/include/palacios/vmm_io.h b/palacios/include/palacios/vmm_io.h index 601bffe..6e85f7e 100644 --- a/palacios/include/palacios/vmm_io.h +++ b/palacios/include/palacios/vmm_io.h @@ -8,14 +8,6 @@ struct guest_info; -struct vmm_io_hook; - -struct vmm_io_map { - uint_t num_ports; - struct vmm_io_hook * head; - -}; - int v3_unhook_io_port(struct guest_info * info, uint_t port); @@ -26,12 +18,22 @@ int v3_hook_io_port(struct guest_info * info, uint_t port, int (*write)(ushort_t port, void * src, uint_t length, void * priv_data), void * priv_data); -void init_vmm_io_map(struct guest_info * info); + #ifdef __V3VEE__ +struct vmm_io_hook; + +struct vmm_io_map { + uint_t num_ports; + struct vmm_io_hook * head; + +}; + + +void init_vmm_io_map(struct guest_info * info); // FOREACH_IO_HOOK(vmm_io_map_t * io_map, vmm_io_hook_t * io_hook) #define FOREACH_IO_HOOK(io_map, io_hook) for (io_hook = (io_map).head; io_hook != NULL; io_hook = (io_hook)->next) diff --git a/palacios/src/palacios/vmm_config.c b/palacios/src/palacios/vmm_config.c index 62f4de5..dfb7974 100644 --- a/palacios/src/palacios/vmm_config.c +++ b/palacios/src/palacios/vmm_config.c @@ -16,11 +16,10 @@ int config_guest(struct guest_info * info, void * config_ptr) { struct guest_mem_layout * layout = (struct guest_mem_layout *)config_ptr; extern v3_cpu_arch_t v3_cpu_type; void * region_start; + int i; - PrintDebug("Time Init\n"); + v3_init_time(info); - - PrintDebug("Shadow map Init\n"); init_shadow_map(info); if (v3_cpu_type == V3_SVM_REV3_CPU) { @@ -39,10 +38,7 @@ int config_guest(struct guest_info * info, void * config_ptr) { dev_mgr_init(info); - - int i; - - + // SerialPrint("Guest Mem Dump at 0x%x\n", 0x100000); //PrintDebugMemDump((unsigned char *)(0x100000), 261 * 1024); if (layout->magic != MAGIC_CODE) {