Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


*** empty log message ***
Jack Lange [Thu, 17 Jul 2008 04:39:18 +0000 (04:39 +0000)]
palacios/build/Makefile
palacios/src/devices/serial.c
palacios/src/geekos/vm.c

index eb45f7f..afbbafc 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for GeekOS kernel, userspace, and tools
 # Copyright (c) 2004,2005 David H. Hovemeyer <daveho@cs.umd.edu>
-# $Revision: 1.42 $
+# $Revision: 1.43 $
 
 # This is free software.  You are permitted to use,
 # redistribute, and modify it as specified in the file "COPYING".
@@ -147,7 +147,7 @@ VMM_C_OBJS := $(VMM_C_SRCS:%.c=palacios/%.o)
 
 VMM_OBJS := $(VMM_C_OBJS) $(VMM_ASM_OBJS)
 
-DEVICE_C_SRCS :=  generic.c keyboard.c nvram.c timer.c simple_pic.c 8259a.c 8254.c
+DEVICE_C_SRCS := generic.c keyboard.c nvram.c timer.c simple_pic.c 8259a.c 8254.c serial.c
 
 DEVICE_C_OBJS := $(DEVICE_C_SRCS:%.c=devices/%.o)
 
index 6b3337b..690123c 100644 (file)
@@ -139,9 +139,9 @@ struct serial_port {
   struct irq_id_reg         iid;
   struct fifo_ctrl_reg      fcr;
   struct line_ctrl_reg      lcr;
-  struct model_ctrl_reg     mcr;
+  struct modem_ctrl_reg     mcr;
   struct line_status_reg    lsr;
-  struct model_status_reg   msr;
+  struct modem_status_reg   msr;
 
 
   char tx_buffer[256];
@@ -198,119 +198,121 @@ int read_status_port(ushort_t port, void * dst, uint_t length, struct vm_device
 
 
 
-void serial_init(struct vm_device * dev) {
+int serial_init(struct vm_device * dev) {
   struct serial_state * state = (struct serial_state *)dev->private_data;
 
   state->com1.ier.rsvd = 0;
-  state->com1.iir.rsvd = 0;
+  state->com1.iid.rsvd = 0;
   state->com1.fcr.rsvd = 0;
   state->com1.mcr.rsvd = 0;
-  state->com1.iir.pending = 1;
+  state->com1.iid.pending = 1;
 
   state->com2.ier.rsvd = 0;
-  state->com2.iir.rsvd = 0;
+  state->com2.iid.rsvd = 0;
   state->com2.fcr.rsvd = 0;
   state->com2.mcr.rsvd = 0;
-  state->com2.iir.pending = 1;
+  state->com2.iid.pending = 1;
 
   state->com3.ier.rsvd = 0;
-  state->com3.iir.rsvd = 0;
+  state->com3.iid.rsvd = 0;
   state->com3.fcr.rsvd = 0;
   state->com3.mcr.rsvd = 0;
-  state->com3.iir.pending = 1;
+  state->com3.iid.pending = 1;
 
   state->com4.ier.rsvd = 0;
-  state->com4.iir.rsvd = 0;
+  state->com4.iid.rsvd = 0;
   state->com4.fcr.rsvd = 0;
   state->com4.mcr.rsvd = 0;
-  state->com4.iir.pending = 1;
+  state->com4.iid.pending = 1;
 
 
   dev_hook_io(dev, COM1_DATA_PORT, &read_data_port, &write_data_port);
   dev_hook_io(dev, COM1_IRQ_ENABLE_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM1_FIFO_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM1_LINE_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
-  dev_hook_io(dev, COM1_MODEL_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
+  dev_hook_io(dev, COM1_MODEM_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM1_LINE_STATUS_PORT, &read_status_port, &write_status_port);
-  dev_hook_io(dev, COM1_MODEL_STATUS_PORT, &read_status_port, &write_status_port);
+  dev_hook_io(dev, COM1_MODEM_STATUS_PORT, &read_status_port, &write_status_port);
   dev_hook_io(dev, COM1_SCRATCH_PORT, &read_ctrl_port, &write_ctrl_port);
 
   dev_hook_io(dev, COM2_DATA_PORT, &read_data_port, &write_data_port);
   dev_hook_io(dev, COM2_IRQ_ENABLE_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM2_FIFO_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM2_LINE_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
-  dev_hook_io(dev, COM2_MODEL_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
+  dev_hook_io(dev, COM2_MODEM_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM2_LINE_STATUS_PORT, &read_status_port, &write_status_port);
-  dev_hook_io(dev, COM2_MODEL_STATUS_PORT, &read_status_port, &write_status_port);
+  dev_hook_io(dev, COM2_MODEM_STATUS_PORT, &read_status_port, &write_status_port);
   dev_hook_io(dev, COM2_SCRATCH_PORT, &read_ctrl_port, &write_ctrl_port);
 
   dev_hook_io(dev, COM3_DATA_PORT, &read_data_port, &write_data_port);
   dev_hook_io(dev, COM3_IRQ_ENABLE_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM3_FIFO_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM3_LINE_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
-  dev_hook_io(dev, COM3_MODEL_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
+  dev_hook_io(dev, COM3_MODEM_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM3_LINE_STATUS_PORT, &read_status_port, &write_status_port);
-  dev_hook_io(dev, COM3_MODEL_STATUS_PORT, &read_status_port, &write_status_port);
+  dev_hook_io(dev, COM3_MODEM_STATUS_PORT, &read_status_port, &write_status_port);
   dev_hook_io(dev, COM3_SCRATCH_PORT, &read_ctrl_port, &write_ctrl_port);
 
   dev_hook_io(dev, COM4_DATA_PORT, &read_data_port, &write_data_port);
   dev_hook_io(dev, COM4_IRQ_ENABLE_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM4_FIFO_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM4_LINE_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
-  dev_hook_io(dev, COM4_MODEL_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
+  dev_hook_io(dev, COM4_MODEM_CTRL_PORT, &read_ctrl_port, &write_ctrl_port);
   dev_hook_io(dev, COM4_LINE_STATUS_PORT, &read_status_port, &write_status_port);
-  dev_hook_io(dev, COM4_MODEL_STATUS_PORT, &read_status_port, &write_status_port);
+  dev_hook_io(dev, COM4_MODEM_STATUS_PORT, &read_status_port, &write_status_port);
   dev_hook_io(dev, COM4_SCRATCH_PORT, &read_ctrl_port, &write_ctrl_port);
 
+  return 0;
 }
 
 
-void serial_deinit(struct vm_device * dev) {
+int serial_deinit(struct vm_device * dev) {
 
 
   dev_unhook_io(dev, COM1_DATA_PORT);
   dev_unhook_io(dev, COM1_IRQ_ENABLE_PORT);
   dev_unhook_io(dev, COM1_FIFO_CTRL_PORT);
   dev_unhook_io(dev, COM1_LINE_CTRL_PORT);
-  dev_unhook_io(dev, COM1_MODEL_CTRL_PORT);
+  dev_unhook_io(dev, COM1_MODEM_CTRL_PORT);
   dev_unhook_io(dev, COM1_LINE_STATUS_PORT);
-  dev_unhook_io(dev, COM1_MODEL_STATUS_PORT);
+  dev_unhook_io(dev, COM1_MODEM_STATUS_PORT);
   dev_unhook_io(dev, COM1_SCRATCH_PORT);
 
   dev_unhook_io(dev, COM2_DATA_PORT);
   dev_unhook_io(dev, COM2_IRQ_ENABLE_PORT);
   dev_unhook_io(dev, COM2_FIFO_CTRL_PORT);
   dev_unhook_io(dev, COM2_LINE_CTRL_PORT);
-  dev_unhook_io(dev, COM2_MODEL_CTRL_PORT);
+  dev_unhook_io(dev, COM2_MODEM_CTRL_PORT);
   dev_unhook_io(dev, COM2_LINE_STATUS_PORT);
-  dev_unhook_io(dev, COM2_MODEL_STATUS_PORT);
+  dev_unhook_io(dev, COM2_MODEM_STATUS_PORT);
   dev_unhook_io(dev, COM2_SCRATCH_PORT);
 
   dev_unhook_io(dev, COM3_DATA_PORT);
   dev_unhook_io(dev, COM3_IRQ_ENABLE_PORT);
   dev_unhook_io(dev, COM3_FIFO_CTRL_PORT);
   dev_unhook_io(dev, COM3_LINE_CTRL_PORT);
-  dev_unhook_io(dev, COM3_MODEL_CTRL_PORT);
+  dev_unhook_io(dev, COM3_MODEM_CTRL_PORT);
   dev_unhook_io(dev, COM3_LINE_STATUS_PORT);
-  dev_unhook_io(dev, COM3_MODEL_STATUS_PORT);
+  dev_unhook_io(dev, COM3_MODEM_STATUS_PORT);
   dev_unhook_io(dev, COM3_SCRATCH_PORT);
 
   dev_unhook_io(dev, COM4_DATA_PORT);
   dev_unhook_io(dev, COM4_IRQ_ENABLE_PORT);
   dev_unhook_io(dev, COM4_FIFO_CTRL_PORT);
   dev_unhook_io(dev, COM4_LINE_CTRL_PORT);
-  dev_unhook_io(dev, COM4_MODEL_CTRL_PORT);
+  dev_unhook_io(dev, COM4_MODEM_CTRL_PORT);
   dev_unhook_io(dev, COM4_LINE_STATUS_PORT);
-  dev_unhook_io(dev, COM4_MODEL_STATUS_PORT);
+  dev_unhook_io(dev, COM4_MODEM_STATUS_PORT);
   dev_unhook_io(dev, COM4_SCRATCH_PORT);
 
+  return 0;
 }
 
 
 
 static struct vm_device_ops dev_ops = {
   .init = serial_init,
-  .deinit = serial_deini,
+  .deinit = serial_deinit,
   .reset = NULL,
   .start = NULL,
   .stop = NULL,
index 358287e..904b1be 100644 (file)
@@ -12,6 +12,7 @@
 #include <devices/8259a.h>
 #include <devices/8254.h>
 #include <devices/keyboard.h>
+#include <devices/serial.h>
 
 #include <palacios/vmm_intr.h>
 #include <palacios/vmm_dev_mgr.h>
@@ -344,6 +345,7 @@ int RunVMM(struct Boot_Info * bootInfo) {
        struct vm_device * pic = create_pic();
        struct vm_device * keyboard = create_keyboard();
        struct vm_device * pit = create_pit(); 
+       struct vm_device * serial = create_serial();
 
 
 #define GENERIC 1
@@ -366,10 +368,12 @@ IGNORE},   // DMA 2 channels 4,5,6,7 (address, counter)
           {0xd0, 0xde, GENERIC_PRINT_AND_IGNORE},   // DMA 2 misc registers
 #endif
 
-         {0x3f8, 0x3f8+7, GENERIC_PRINT_AND_IGNORE},      // COM 1
-         {0x2f8, 0x2f8+7, GENERIC_PRINT_AND_IGNORE},      // COM 2
-         {0x3e8, 0x3e8+7, GENERIC_PRINT_AND_IGNORE},      // COM 2
-         {0x2e8, 0x2e8+7, GENERIC_PRINT_AND_IGNORE},      // COM 2
+         /*
+           {0x3f8, 0x3f8+7, GENERIC_PRINT_AND_IGNORE},      // COM 1
+           {0x2f8, 0x2f8+7, GENERIC_PRINT_AND_IGNORE},      // COM 2
+           {0x3e8, 0x3e8+7, GENERIC_PRINT_AND_IGNORE},      // COM 2
+           {0x2e8, 0x2e8+7, GENERIC_PRINT_AND_IGNORE},      // COM 2
+         */
          /*
            {0x170, 0x178, GENERIC_PRINT_AND_PASSTHROUGH}, // IDE 1
            {0x376, 0x377, GENERIC_PRINT_AND_PASSTHROUGH}, // IDE 1
@@ -387,7 +391,7 @@ IGNORE},   // DMA 2 channels 4,5,6,7 (address, counter)
 
         };
 
-       struct vm_device * generic = create_generic(range,10,  // THIS NUMBER IS CRITICAL
+       struct vm_device * generic = create_generic(range,6,  // THIS NUMBER IS CRITICAL
 
                                                    NULL,0,NULL,0);
 #endif
@@ -397,6 +401,7 @@ IGNORE},   // DMA 2 channels 4,5,6,7 (address, counter)
        attach_device(&(vm_info), pic);
        attach_device(&(vm_info), pit);
        attach_device(&(vm_info), keyboard);
+       attach_device(&(vm_info), serial);
 
 
 #if GENERIC