On 07/05/2010 09:16 PM, Marcelo Tosatti wrote:
test long rmap chains + +int main (void) +{ + int i; + int nr_pages; + void *target_page, *virt_addr; + + setup_vm(); + + nr_pages = inl(0xd1) / PAGE_SIZE; + nr_pages -= 1000;
No need to depend on the number of physical pages, since just one page is used (+ 1/512 page for the pte).
+ target_page = alloc_page(); + + virt_addr = (void *) 0xfffffa000; + for (i = 0; i< nr_pages; i++) { + install_page(phys_to_virt(read_cr3()), virt_to_phys(target_page), + virt_addr); + virt_addr += PAGE_SIZE; + } + printf("created %d mappings\n", nr_pages); + + virt_addr = (void *) 0xfffffa000; + for (i = 0; i< nr_pages; i++) { + unsigned long *touch = virt_addr; + + *touch = 0; + virt_addr += PAGE_SIZE; + } + printf("instantiated mappings\n"); + + virt_addr += PAGE_SIZE; + install_pte(phys_to_virt(read_cr3()), 1, virt_addr, + 0 | PTE_PRESENT | PTE_WRITE, target_page); + + *(unsigned long *)virt_addr = 0; + printf("PASS\n"); +
Would be nice to add measure the time for this, and fail above some threshold. Of course it's problematic in automated scenarios where the host can be overloaded, but still.
-- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html