--- vmmon-only/freebsd/hostif.c.orig Thu Jul 12 22:05:29 2001 +++ vmmon-only/freebsd/hostif.c Thu Jul 12 22:14:09 2001 @@ -55,7 +55,11 @@ #include #include +#if __FreeBSD_version >= 500018 +#include +#else #include +#endif #include #include #include @@ -107,7 +111,16 @@ paddr = (vm_offset_t)addr; m = PHYS_TO_VM_PAGE(paddr); +#if __FreeBSD_version >= 500021 + GIANT_REQUIRED; +#elif __FreeBSD_version >= 500013 + mtx_lock(&vm_mtx); +#endif vm_page_wire(m); +#if __FreeBSD_version >= 500021 +#elif __FreeBSD_version >= 500013 + mtx_unlock(&vm_mtx); +#endif return 0; } @@ -120,7 +133,16 @@ paddr = (vm_offset_t)addr; m = PHYS_TO_VM_PAGE(paddr); +#if __FreeBSD_version >= 500021 + GIANT_REQUIRED; +#elif __FreeBSD_version >= 500013 + mtx_lock(&vm_mtx); +#endif vm_page_unwire(m, 1); +#if __FreeBSD_version >= 500021 +#elif __FreeBSD_version >= 500013 + mtx_unlock(&vm_mtx); +#endif return 0; } @@ -1066,10 +1088,19 @@ return NULL; } paddr = vtophys(addr); +#if __FreeBSD_version >= 500021 + GIANT_REQUIRED; +#elif __FreeBSD_version >= 500013 + mtx_lock(&vm_mtx); +#endif ka->kaddr = kmem_alloc_pageable(kernel_map, PAGE_SIZE); ka->map = PHYS_TO_VM_PAGE(paddr); vm_page_wire(ka->map); pmap_kenter(ka->kaddr, paddr); +#if __FreeBSD_version >= 500021 +#elif __FreeBSD_version >= 500013 + mtx_unlock(&vm_mtx); +#endif return ka->kaddr; } @@ -1079,9 +1110,18 @@ if (ka->map==NULL) return 0; +#if __FreeBSD_version >= 500021 + GIANT_REQUIRED; +#elif __FreeBSD_version >= 500013 + mtx_lock(&vm_mtx); +#endif vm_page_unwire(ka->map, 1); pmap_kremove(ka->kaddr); kmem_free(kernel_map, ka->kaddr, PAGE_SIZE); +#if __FreeBSD_version >= 500021 +#elif __FreeBSD_version >= 500013 + mtx_unlock(&vm_mtx); +#endif ka->kaddr = 0; ka->map = NULL; return 0;