On Tuesday, June 19, 2012 1:31:17 pm Matthias Apitz wrote: > El día Tuesday, June 19, 2012 a las 10:56:20AM -0400, John Baldwin escribió: > > > > #11 0xc0d11340 in vm_page_free_toq (m=0xc23daf78) > > > at /usr/src/sys/vm/vm_page.c:2060 > > > #12 0xc0d115b5 in vm_page_free (m=0xc23daf78) at > > /usr/src/sys/vm/vm_page.c:741 > > > #13 0xc68b01ba in OS_ReservedPageFree () > > > from /usr/local/lib/vmware-tools/modules/drivers/vmmemctl.ko > > > > Ah, so the bug is in here then. Which version of vmware-tools do you have > > installed? > > all the ports are from CVS of May, 19; the version is open-vm-tools-425873,1 Try this patch for the port. It uses vm_page_lock() instead of vm_page_lock_queues() around vm_page_free() for 9.0 and later. Index: files/patch-vmmemctl-os.c =================================================================== RCS file: /scratchbsd/FreeBSD/cvs/ports/emulators/open-vm-tools/files/patch- vmmemctl-os.c,v retrieving revision 1.2 diff -u -r1.2 patch-vmmemctl-os.c --- files/patch-vmmemctl-os.c 2 Jan 2010 16:29:44 -0000 1.2 +++ files/patch-vmmemctl-os.c 20 Jun 2012 13:45:11 -0000 _at__at_ -1,6 +1,6 _at__at_ ---- modules/freebsd/vmmemctl/os.c.orig 2009-04-09 15:18:08.000000000 -0400 -+++ modules/freebsd/vmmemctl/os.c 2009-04-09 15:34:06.000000000 -0400 -_at__at_ -413,12 +413,14 _at__at_ +--- modules/freebsd/vmmemctl/os.c.orig 2011-09-21 14:25:15.000000000 -0400 ++++ modules/freebsd/vmmemctl/os.c 2012-06-20 09:44:40.434083000 -0400 +_at__at_ -344,12 +344,22 _at__at_ os_state *state = &global_state; os_pmap *pmap = &state->pmap; _at__at_ -9,9 +9,17 _at__at_ + VM_OBJECT_LOCK(state->vmobject); + if ( vm_page_lookup(state->vmobject, page->pindex) ) { + os_pmap_putindex(pmap, page->pindex); ++#if __FreeBSD_version >= 900000 ++ vm_page_lock(page); ++#else + vm_page_lock_queues(); ++#endif + vm_page_free(page); ++#if __FreeBSD_version >= 900000 ++ vm_page_unlock(page); ++#else + vm_page_unlock_queues(); ++#endif } - - os_pmap_putindex(pmap, page->pindex); _at__at_ -19,8 +27,8 _at__at_ + VM_OBJECT_UNLOCK(state->vmobject); } - static vm_page_t os_kmem_alloc(int alloc_normal_failed) -_at__at_ -430,8 +432,11 _at__at_ + +_at__at_ -361,8 +371,11 _at__at_ os_state *state = &global_state; os_pmap *pmap = &state->pmap; _at__at_ -32,7 +40,7 _at__at_ return NULL; } -_at__at_ -452,6 +457,7 _at__at_ +_at__at_ -383,6 +396,7 _at__at_ if (!page) { os_pmap_putindex(pmap, pindex); } -- John BaldwinReceived on Wed Jun 20 2012 - 11:48:43 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:28 UTC