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.


Clear code
Lei Xia [Fri, 12 Mar 2010 20:17:19 +0000 (14:17 -0600)]
palacios/src/devices/lnx_virtio_nic.c
palacios/src/devices/lnx_virtio_vnet.c
palacios/src/devices/vnet_nic.c
palacios/src/palacios/vmm_vnet.c

index 1caecbd..c626708 100644 (file)
 #define PrintDebug(fmt, args...)
 #endif
 
-#ifdef CONFIG_VNET_PROFILE
-#define VIRTIO_NIC_PROFILE
-#endif
-
 #define VIRTIO_NET_S_LINK_UP   1       /* Link is up */
 #define VIRTIO_NET_MAX_BUFSIZE (sizeof(struct virtio_net_hdr) + (64 << 10))
 
@@ -250,18 +246,6 @@ static int handle_pkt_tx(struct guest_info *core, struct virtio_net_state * virt
        virtio_state->virtio_cfg.pci_isr = 0x1;
     }
 
-#ifdef VIRTIO_NIC_PROFILE
-    if(virtio_state->pkt_sent % 10000 == 0)
-       PrintError("Virtio NIC: %p, pkt_sent: %ld\n", virtio_state, virtio_state->pkt_sent);
-#endif 
-
-#ifdef CONFIG_VNET_PROFILE
-    uint64_t time;
-    rdtscll(time);
-    core->vnet_times.total_handle_time = time - core->vnet_times.virtio_handle_start;
-    core->vnet_times.print = true;
-#endif
-
     return 0;
 }
 
@@ -312,11 +296,6 @@ static int virtio_io_write(struct guest_info *core, uint16_t port, void * src, u
     struct virtio_net_state * virtio = (struct virtio_net_state *)private_data;
     int port_idx = port % virtio->io_range_size;
 
-#ifdef CONFIG_VNET_PROFILE
-    uint64_t time;
-    rdtscll(time);
-    core->vnet_times.virtio_handle_start = time;
-#endif
 
     PrintDebug("VIRTIO NIC %p Write for port %d (index=%d) len=%d, value=%x\n", private_data,
               port, port_idx,  length, *(uint32_t *)src);
@@ -557,11 +536,6 @@ static int virtio_rx(uint8_t * buf, uint32_t size, void * private_data) {
        q->cur_avail_idx++;
     } else {
        virtio->pkt_drop++;
-
-#ifdef VIRTIO_NIC_PROFILE
-       PrintError("Virtio NIC: %p, one pkt dropped receieved: %ld, dropped: %ld, sent: %ld curidx: %d, avaiIdx: %d\n", 
-               virtio, virtio->pkt_recv, virtio->pkt_drop, virtio->pkt_sent, q->cur_avail_idx, q->avail->index);
-#endif
     }
 
     if (!(q->avail->flags & VIRTIO_NO_IRQ_FLAG)) {
@@ -570,13 +544,6 @@ static int virtio_rx(uint8_t * buf, uint32_t size, void * private_data) {
        virtio->virtio_cfg.pci_isr = 0x1;
     }
 
-#ifdef VIRTIO_NIC_PROFILE
-    if ((virtio->pkt_recv % 10000) == 0){
-       PrintError("Virtio NIC: %p, receieved: %ld, dropped: %ld, sent: %ld\n", 
-               virtio, virtio->pkt_recv, virtio->pkt_drop, virtio->pkt_sent);
-    }
-#endif
-
     ret_val = offset;
 
 exit:
index 8d01d72..4de1ab8 100644 (file)
@@ -315,13 +315,6 @@ static int handle_pkt_kick(struct guest_info *core, struct virtio_vnet_state * v
        vnet_state->virtio_cfg.pci_isr = 0x1;
     }
 
-#ifdef CONFIG_VNET_PROFILE
-    uint64_t time;
-    rdtscll(time);
-    core->vnet_times.total_handle_time = time - core->vnet_times.virtio_handle_start;
-    core->vnet_times.print = true;
-#endif
-
     return 0;
 }
 
@@ -445,7 +438,7 @@ static int virtio_io_write(struct guest_info * core, uint16_t port, void * src,
 }
 
 
-static int vnetbrg_io_read(struct guest_info * core, uint16_t port, void * dst, uint_t length, void * private_data) {
+static int virtio_io_read(struct guest_info * core, uint16_t port, void * dst, uint_t length, void * private_data) {
 
     struct virtio_vnet_state * vnet_state = (struct virtio_vnet_state *)private_data;
     int port_idx = port % vnet_state->io_range_size;
index 94c8a42..86f5ba7 100644 (file)
@@ -40,83 +40,11 @@ struct vnet_nic_state {
     int vnet_dev_id;
 };
 
-#if 0
-//Malloc/Free version of send
-static int vnet_send(uint8_t * buf, uint32_t len, void * private_data, struct vm_device *dest_dev){
-    struct v3_vnet_pkt * pkt = NULL;
-    struct guest_info *core  = (struct guest_info *)private_data; 
-
-#ifdef WCONFIG_DEBUG_VNET_NIC
-    {
-       PrintDebug("Virtio VNET-NIC: send pkt size: %d\n", len);
-       v3_hexdump(buf, len, NULL, 0);
-    }
-#endif
 
-#ifdef CONFIG_VNET_PROFILE
-    uint64_t start, end;
-    rdtscll(start);
-#endif
-
-    pkt = (struct v3_vnet_pkt *)V3_Malloc(sizeof(struct v3_vnet_pkt));
-
-    if(pkt == NULL){
-       PrintError("Malloc() fails");
-       return -1;
-    }
-       
-#ifdef CONFIG_VNET_PROFILE
-    {
-       rdtscll(end);
-       core->vnet_times.time_mallocfree = end - start;
-    }
-#endif
-
-
-    pkt->size = len;
-    pkt->src_type = LINK_INTERFACE;
-    pkt->src_id = 0;
-    memcpy(pkt->data, buf, pkt->size);
-
-#ifdef CONFIG_VNET_PROFILE
-    {
-       rdtscll(start);
-       core->vnet_times.memcpy_time = start - end;
-       core->vnet_times.time_copy_from_guest = start - core->vnet_times.virtio_handle_start - core->vnet_times.time_mallocfree;
-    }
-#endif
-
-    v3_vnet_send_pkt(pkt, (void *)core);
-
-#ifdef CONFIG_VNET_PROFILE
-    rdtscll(start);
-#endif
-
-    V3_Free(pkt);
-
-#ifdef CONFIG_VNET_PROFILE
-    {
-       rdtscll(end);
-       core->vnet_times.time_mallocfree += end - start;
-    }
-#endif
-
-    return 0;
-}
-
-#endif
-
-#if 1
-//alternative way, no malloc/free
 static int vnet_send(uint8_t * buf, uint32_t len, void * private_data, struct vm_device *dest_dev){
     struct v3_vnet_pkt pkt;
     struct vnet_nic_state *vnetnic = (struct vnet_nic_state *)private_data;
-    struct guest_info *core  = &(vnetnic->vm->cores[0]); 
 
-#ifdef CONFIG_VNET_PROFILE
-    uint64_t start, end;
-    rdtscll(start);
-#endif
 
     pkt.size = len;
     pkt.src_type = LINK_INTERFACE;
@@ -132,54 +60,10 @@ static int vnet_send(uint8_t * buf, uint32_t len, void * private_data, struct vm
 #endif
 
 
-#ifdef CONFIG_VNET_PROFILE
-    rdtscll(end);
-    core->vnet_times.time_copy_from_guest = end - core->vnet_times.virtio_handle_start;
-    core->vnet_times.memcpy_time = end - start;
-#endif
-
-    v3_vnet_send_pkt(&pkt, (void *)core);
+    v3_vnet_send_pkt(&pkt, NULL);
 
     return 0;
 }
-#endif
-
-#if 0
-//alternative way, no malloc/free, no copy
-//need to change pkt format
-static int vnet_send(uint8_t * buf, uint32_t len, void * private_data, struct vm_device *dest_dev){
-    struct v3_vnet_pkt pkt;
-    struct guest_info *core  = (struct guest_info *)private_data; 
-
-    
-#ifdef CONFIG_DEBUG_VNET_NIC
-    {
-       PrintDebug("Virtio VNET-NIC: send pkt size: %d\n", len);
-       v3_hexdump(buf, len, NULL, 0);
-    }
-#endif
-
-    pkt.size = len;
-    pkt.data = buf;
-
-#ifdef CONFIG_VNET_PROFILE
-    uint64_t start, end;
-    rdtscll(start);
-#endif
-
-    v3_vnet_send_pkt(&pkt, (void *)core);
-
-#ifdef CONFIG_VNET_PROFILE
-    {
-       rdtscll(end);
-       core->vnet_times.vnet_handle_time = end - start;
-    }
-#endif
-
-    return 0;
-}
-
-#endif
 
 static int virtio_input(struct v3_vm_info *info, struct v3_vnet_pkt * pkt, void * private_data){
     struct vnet_nic_state *vnetnic = (struct vnet_nic_state *)private_data;
@@ -306,45 +190,6 @@ static int vnet_nic_init(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) {
        }
     }
 #endif
-#if 0 //temporay hacking for vnet virtio bridge
-    {
-       uchar_t tapmac[6] = {0x00,0x02,0x55,0x67,0x42,0x39}; //for Intel-VT test HW
-       //uchar_t tapmac[6] = {0x6e,0xa8,0x75,0xf4,0x82,0x95};
-       uchar_t dstmac[6] = {0xff,0xff,0xff,0xff,0xff,0xff};
-       uchar_t zeromac[6] = {0,0,0,0,0,0};
-
-       struct v3_vnet_route route;
-        route.dst_id = vnet_dev_id;
-       route.dst_type = LINK_INTERFACE;
-       route.src_id = -1;
-       route.src_type = LINK_ANY;
-
-       if(!strcmp(name, "vnet_nicdom0")){
-           memcpy(route.dst_mac, tapmac, 6);
-           route.dst_mac_qual = MAC_NONE;
-           memcpy(route.src_mac, zeromac, 6);
-           route.src_mac_qual = MAC_ANY;
-          
-           v3_vnet_add_route(route);
-
-           memcpy(route.dst_mac, dstmac, 6);
-           route.dst_mac_qual = MAC_NONE;
-           memcpy(route.src_mac, tapmac, 6);
-           route.src_mac_qual = MAC_NOT;
-
-           v3_vnet_add_route(route);
-       }
-
-       if (!strcmp(name, "vnet_nic0")){
-           memcpy(route.dst_mac, zeromac, 6);
-           route.dst_mac_qual = MAC_ANY;
-           memcpy(route.src_mac, tapmac, 6);
-           route.src_mac_qual = MAC_NONE;
-          
-           v3_vnet_add_route(route);
-       }
-    }
-#endif
 
     return 0;
 }
index f4af883..bdc4719 100644 (file)
@@ -421,12 +421,6 @@ int v3_vnet_send_pkt(struct v3_vnet_pkt * pkt, void * private_data) {
    }
 #endif
 
-#ifdef CONFIG_VNET_PROFILE
-    struct guest_info *core = (struct guest_info *)private_data;
-    uint64_t start, end;
-    rdtscll(start);
-#endif
-
     flags = v3_lock_irqsave(vnet_state.lock);
 
     look_into_cache(pkt, &matched_routes);
@@ -447,12 +441,6 @@ int v3_vnet_send_pkt(struct v3_vnet_pkt * pkt, void * private_data) {
 
     v3_unlock_irqrestore(vnet_state.lock, flags);
 
-#ifdef CONFIG_VNET_PROFILE
-    {
-       rdtscll(end);
-       core->vnet_times.time_route_lookup = end - start;
-    }
-#endif
 
     PrintDebug("Vnet: HandleOnePacket: route matches %d\n", matched_routes->num_routes);
 
@@ -485,13 +473,6 @@ int v3_vnet_send_pkt(struct v3_vnet_pkt * pkt, void * private_data) {
 
         PrintDebug("Vnet: HandleOnePacket: Forward packet according to Route\n");
     }
-
-#ifdef CONFIG_VNET_PROFILE
-    {
-       rdtscll(start);
-       core->vnet_times.time_copy_to_guest = start - end;
-    }
-#endif
     
     return 0;
 }