X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_sym_swap.c;h=5c8cad8248aeaae704099117c22891e81dc9277d;hp=24f2869f2e4687a3536d9e8973e1d99e53ca9ca0;hb=123a1ba27ea09c8fa77a1b36ce625b43d7c48b14;hpb=4290e5f20a4ea5e5f32cb8228ac4d7446dc1021b diff --git a/palacios/src/palacios/vmm_sym_swap.c b/palacios/src/palacios/vmm_sym_swap.c index 24f2869..5c8cad8 100644 --- a/palacios/src/palacios/vmm_sym_swap.c +++ b/palacios/src/palacios/vmm_sym_swap.c @@ -21,7 +21,7 @@ #include #include - +#include #ifdef CONFIG_SYMBIOTIC_SWAP_TELEMETRY #include @@ -76,6 +76,7 @@ static void telemetry_cb(struct guest_info * info, void * private_data, char * h V3_Print("%sSymbiotic Swap:\n", hdr); V3_Print("%s\tRead faults=%d\n", hdr, swap_state->read_faults); V3_Print("%s\tWrite faults=%d\n", hdr, swap_state->write_faults); + V3_Print("%s\tMapped Pages=%d\n", hdr, swap_state->mapped_pages); V3_Print("%s\tFlushes=%d\n", hdr, swap_state->flushes); } #endif @@ -148,7 +149,7 @@ int v3_swap_flush(struct guest_info * info) { struct v3_sym_swap_state * swap_state = &(info->swap_state); struct hashtable_iter * ht_iter = v3_create_htable_iter(swap_state->shdw_ptr_ht); - PrintDebug("Flushing Symbiotic Swap table\n"); + // PrintDebug("Flushing Symbiotic Swap table\n"); #ifdef CONFIG_SYMBIOTIC_SWAP_TELEMETRY swap_state->flushes++; @@ -177,11 +178,18 @@ int v3_swap_flush(struct guest_info * info) { return 0; } +int v3_get_vaddr_perms(struct guest_info * info, addr_t vaddr, pte32_t * guest_pte, pf_error_t * page_perms) { + uint32_t pte_val = *(uint32_t *)guest_pte; -int v3_sym_get_addr_info(struct guest_info * info, addr_t vaddr, - int (*cb)(struct guest_info * info)) { - return 0; + // symcall to check if page is in cache or on swap disk + if (v3_sym_call3(info, SYMCALL_MEM_LOOKUP, (uint64_t *)&vaddr, (uint64_t *)&pte_val, (uint64_t *)page_perms) == -1) { + PrintError("Sym call error?? that's weird... \n"); + return -1; + } + + V3_Print("page perms = %x\n", *(uint32_t *)page_perms); + return 0; } @@ -198,6 +206,8 @@ addr_t v3_get_swapped_pg_addr(struct guest_info * info, pte32_t * shadow_pte, pt return 0; } + + swp_page_ptr = swp_dev->ops->get_swap_entry(get_pg_index(guest_pte), swp_dev->private_data); if (swp_page_ptr == NULL) {