diff options
author | Ian Dowse <iedowse@FreeBSD.org> | 2002-10-18 16:33:02 +0000 |
---|---|---|
committer | Ian Dowse <iedowse@FreeBSD.org> | 2002-10-18 16:33:02 +0000 |
commit | 8e07872e6a504c30c1a897998b50641da0232733 (patch) | |
tree | 39c828d10754bdfa9df0f6b16f3f1de15ba4ea7a /emulators/vmware3 | |
parent | Not installing symlinks anymore. This is not necessary anymore, (diff) |
Catch up with some not-so-recent VM changes to make vmware2 work
again on -CURRENT. Without this, attempting to boot the virtual
machine causes an instant panic in the host.
Approved by: knu, vsilyaev@mindspring.com (maintainer)
Notes
Notes:
svn path=/head/; revision=68267
Diffstat (limited to 'emulators/vmware3')
-rw-r--r-- | emulators/vmware3/files/patch-be | 94 |
1 files changed, 66 insertions, 28 deletions
diff --git a/emulators/vmware3/files/patch-be b/emulators/vmware3/files/patch-be index 1bfac1cee747..3515097e1e04 100644 --- a/emulators/vmware3/files/patch-be +++ b/emulators/vmware3/files/patch-be @@ -1,5 +1,5 @@ ---- 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 +--- vmmon-only/freebsd/hostif.c.orig Mon Sep 2 19:19:50 2002 ++++ vmmon-only/freebsd/hostif.c Mon Sep 2 19:30:03 2002 @@ -55,7 +55,11 @@ #include <vm/vm.h> @@ -12,75 +12,113 @@ #include <vm/pmap.h> #include <vm/vm_map.h> #include <vm/vm_page.h> -@@ -107,7 +111,16 @@ +@@ -107,7 +111,21 @@ paddr = (vm_offset_t)addr; m = PHYS_TO_VM_PAGE(paddr); -+#if __FreeBSD_version >= 500021 +- vm_page_wire(m); ++#if __FreeBSD_version >= 500038 + GIANT_REQUIRED; ++ vm_page_lock_queues(); ++ vm_page_wire(m); ++ vm_page_unlock_queues(); ++#elif __FreeBSD_version >= 500021 ++ GIANT_REQUIRED; ++ vm_page_wire(m); +#elif __FreeBSD_version >= 500013 + mtx_lock(&vm_mtx); -+#endif - vm_page_wire(m); -+#if __FreeBSD_version >= 500021 -+#elif __FreeBSD_version >= 500013 ++ vm_page_wire(m); + mtx_unlock(&vm_mtx); ++#else ++ vm_page_wire(m); +#endif return 0; } -@@ -120,7 +133,16 @@ +@@ -120,7 +138,21 @@ paddr = (vm_offset_t)addr; m = PHYS_TO_VM_PAGE(paddr); -+#if __FreeBSD_version >= 500021 ++#if __FreeBSD_version >= 500038 ++ GIANT_REQUIRED; ++ vm_page_lock_queues(); ++ vm_page_unwire(m, 1); ++ vm_page_unlock_queues(); ++#elif __FreeBSD_version >= 500021 + GIANT_REQUIRED; ++ vm_page_unwire(m, 1); +#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); ++#else ++ vm_page_unwire(m, 1); +#endif return 0; } -@@ -1066,10 +1088,19 @@ +@@ -1066,10 +1098,33 @@ return NULL; } paddr = vtophys(addr); -+#if __FreeBSD_version >= 500021 -+ GIANT_REQUIRED; ++#if __FreeBSD_version >= 500038 ++ GIANT_REQUIRED; ++ ka->kaddr = kmem_alloc_pageable(kernel_map, PAGE_SIZE); ++ ka->map = PHYS_TO_VM_PAGE(paddr); ++ vm_page_lock_queues(); ++ vm_page_wire(ka->map); ++ vm_page_unlock_queues(); ++ pmap_qenter(ka->kaddr, &ka->map, 1); ++#elif __FreeBSD_version >= 500021 ++ GIANT_REQUIRED; ++ 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); +#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); ++ mtx_unlock(&vm_mtx); ++#else 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 @@ +@@ -1079,9 +1134,29 @@ if (ka->map==NULL) return 0; -+#if __FreeBSD_version >= 500021 +- vm_page_unwire(ka->map, 1); +- pmap_kremove(ka->kaddr); ++#if __FreeBSD_version >= 500038 + GIANT_REQUIRED; -+#elif __FreeBSD_version >= 500013 -+ mtx_lock(&vm_mtx); -+#endif - vm_page_unwire(ka->map, 1); - pmap_kremove(ka->kaddr); ++ vm_page_lock_queues(); ++ vm_page_unwire(ka->map, 1); ++ vm_page_unlock_queues(); ++ pmap_qremove(ka->kaddr, 1); kmem_free(kernel_map, ka->kaddr, PAGE_SIZE); -+#if __FreeBSD_version >= 500021 ++#elif __FreeBSD_version >= 500021 ++ GIANT_REQUIRED; ++ vm_page_unwire(ka->map, 1); ++ pmap_kremove(ka->kaddr); ++ kmem_free(kernel_map, ka->kaddr, PAGE_SIZE); +#elif __FreeBSD_version >= 500013 ++ mtx_lock(&vm_mtx); ++ vm_page_unwire(ka->map, 1); ++ pmap_kremove(ka->kaddr); ++ kmem_free(kernel_map, ka->kaddr, PAGE_SIZE); + mtx_unlock(&vm_mtx); ++#else ++ vm_page_unwire(ka->map, 1); ++ pmap_kremove(ka->kaddr); ++ kmem_free(kernel_map, ka->kaddr, PAGE_SIZE); +#endif ka->kaddr = 0; ka->map = NULL; |