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.


Merge branch 'devel' of ssh://newskysaw.cs.northwestern.edu/home/palacios/palacios...
[palacios.releases.git] / palacios / src / devices / pci.c
index acac197..f9a2f9b 100644 (file)
@@ -632,7 +632,7 @@ static int scan_pci_caps(struct pci_device * pci) {
 
 }
 
-int v3_pci_enable_capability(struct pci_device * pci, pci_cap_type_t cap_type, int mask) {
+int v3_pci_enable_capability(struct pci_device * pci, pci_cap_type_t cap_type) {
     uint32_t size = 0;
     struct pci_cap * tmp_cap = NULL;
     struct pci_cap * cap = NULL;
@@ -697,18 +697,18 @@ int v3_pci_enable_capability(struct pci_device * pci, pci_cap_type_t cap_type, i
        size = 8;
     }
 
-    if (mask) {
-       V3_Print("Hooking capability range (offset=%d, size=%d)\n", cap->offset, size);
 
-       if (v3_pci_hook_config_range(pci, cap->offset, size + 2, 
-                                    cap_write, NULL, cap) == -1) {
-           PrintError("Could not hook config range (start=%d, size=%d)\n", 
-                      cap->offset + 2, size);
-           return -1;
-       }
+    V3_Print("Hooking capability range (offset=%d, size=%d)\n", cap->offset, size);
+
+    if (v3_pci_hook_config_range(pci, cap->offset, size + 2, 
+                                cap_write, NULL, cap) == -1) {
+       PrintError("Could not hook config range (start=%d, size=%d)\n", 
+                  cap->offset + 2, size);
+       return -1;
     }
 
 
+
     // link it to the active capabilities list
     pci->config_space[cap->offset + 1] = pci->config_header.cap_ptr;
     pci->config_header.cap_ptr = cap->offset; // add to the head of the list
@@ -1396,6 +1396,8 @@ int v3_pci_raise_acked_irq(struct vm_device * pci_bus, struct pci_device * dev,
 
        memset(&ipi, 0, sizeof(struct v3_gen_ipi));
 
+       // decode MSI fields into IPI
+
        ipi.vector = data->vector + vec.irq;
        ipi.mode = data->del_mode;
        ipi.logical = addr->dst_mode;
@@ -1403,9 +1405,6 @@ int v3_pci_raise_acked_irq(struct vm_device * pci_bus, struct pci_device * dev,
        ipi.dst_shorthand = 0;
        ipi.dst = addr->dst_id;
        
-       // decode MSI fields into IPI
-
-       V3_Print("Decode MSI\n");
 
        v3_apic_send_ipi(dev->vm, &ipi, dev->apic_dev);
 
@@ -1436,6 +1435,7 @@ int v3_pci_raise_acked_irq(struct vm_device * pci_bus, struct pci_device * dev,
        data = &(msix_table->entries[vec.irq].data);
        addr = &(msix_table->entries[vec.irq].addr);;
        
+       // decode MSIX fields into IPI
        ipi.vector = data->vector + vec.irq;
        ipi.mode = data->del_mode;
        ipi.logical = addr->dst_mode;
@@ -1443,7 +1443,7 @@ int v3_pci_raise_acked_irq(struct vm_device * pci_bus, struct pci_device * dev,
        ipi.dst_shorthand = 0;
        ipi.dst = addr->dst_id;
        
-       // decode MSIX fields into IPI
+
 
        V3_Print("Decode MSIX\n");