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.


Fix to VMM/Guest model dynamic switch for Virtio NIC
[palacios.git] / palacios / src / devices / piix3.c
index 59c70fc..ab82bdb 100644 (file)
@@ -370,7 +370,7 @@ static int raise_pci_irq(struct pci_device * pci_dev, void * dev_data) {
     int intr_pin = pci_dev->config_header.intr_pin - 1;
     int irq_index = (intr_pin + pci_dev->dev_num - 1) & 0x3;
     
-    //        PrintError("Raising PCI IRQ %d\n", piix3_cfg->pirq_rc[irq_index]);
+    //PrintError("Raising PCI IRQ %d, %p\n", piix3_cfg->pirq_rc[irq_index], piix3->vm);
     
     v3_raise_irq(piix3->vm, piix3_cfg->pirq_rc[irq_index]);
 
@@ -395,13 +395,17 @@ static int lower_pci_irq(struct pci_device * pci_dev, void * dev_data) {
 
 
 
-static int piix_free(struct vm_device * dev) {
+static int piix_free(struct v3_southbridge * piix3) {
+
+    // unregister pci
+
+    V3_Free(piix3);
     return 0;
 }
 
 
 static struct v3_device_ops dev_ops = {
-    .free = piix_free,
+    .free = (int (*)(void *))piix_free,
 };
 
 
@@ -453,6 +457,7 @@ static int piix3_init(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) {
 
     piix3->pci_bus = pci;
     piix3->type = V3_SB_PIIX3;
+    piix3->vm = vm;
     
     dev = v3_add_device(vm, dev_id, &dev_ops, piix3);