Index: head/emulators/open-vm-tools/Makefile =================================================================== --- head/emulators/open-vm-tools/Makefile (revision 434549) +++ head/emulators/open-vm-tools/Makefile (revision 434550) @@ -1,88 +1,88 @@ # Created by: mbr@FreeBSD.org # $FreeBSD$ PORTNAME= open-vm-tools PORTVERSION= ${BUILD_VER} -PORTREVISION= 16 +PORTREVISION= 17 PORTEPOCH= 1 CATEGORIES= emulators MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/stable-9.4.x DISTNAME= open-vm-tools-${RELEASE_VER}-${BUILD_VER} MAINTAINER= swills@FreeBSD.org COMMENT?= Open VMware tools for FreeBSD VMware guests LICENSE= LGPL21 LICENSE_FILE= ${WRKSRC}/COPYING RELEASE_VER= 9.4.0 BUILD_VER= 1280544 OPTIONS_DEFINE= X11 LIBNOTIFY UNITY FUSE DNET ICU OPTIONS_DEFAULT= X11 LIBNOTIFY FUSE DNET ICU OPTIONS_SUB= DNET_DESC= libdnet support LIBNOTIFY_DESC= Desktop notification support UNITY_DESC= liburiparser support X11_CONFIGURE_WITH= x gtk2 gtkmm X11_LDFLAGS= -L${LOCALBASE}/lib X11_USE= xorg=x11,ice,sm,xext,xineramaproto,xinerama,xrandr,xrender,xtst \ gnome=gtk20,gtkmm24 X11_USES= fuse LIBNOTIFY_LIB_DEPENDS= libnotify.so:devel/libnotify UNITY_CONFIGURE_ENV= CUSTOM_URIPARSER_CPPFLAGS="-I${LOCALBASE}/include/uriparser" UNITY_LIB_DEPENDS= liburiparser.so:net/uriparser UNITY_CONFIGURE_ENABLE= unity DNET_CONFIGURE_WITH= dnet DNET_LIB_DEPENDS= libdnet.so:net/libdnet ICU_CONFIGURE_WITH= icu ICU_LIB_DEPENDS= libicuuc.so:devel/icu WRKSRC= ${WRKDIR}/open-vm-tools-${RELEASE_VER}-${BUILD_VER} GNU_CONFIGURE= yes USES= pathfix pkgconfig kmod libtool USE_GNOME= glib20 USE_LDCONFIG= yes CPPFLAGS+= -Wno-deprecated-declarations SSP_UNSAFE= kernel module does not support ssp CONFIGURE_ARGS+= --without-procps --sysconfdir=${LOCALBASE}/etc CONFLICTS+= vmware-guestd[0-9]* vmware-tools[0-9]* SUB_FILES= pkg-message USE_RC_SUBR= vmware-guestd vmware-kmod .include .if ${PORT_OPTIONS:MX11} CONFLICTS= open-vm-tools-nox11-[0-9]* .else CONFLICTS= open-vm-tools-[0-9]* .endif BROKEN_aarch64= Fails to configure: error: Unknown architecture NOT_FOR_ARCHS= sparc64 NOT_FOR_ARCHS_REASON= not yet ported to this architecture .include post-build: cd ${WRKSRC}/modules && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_ARGS} post-install: ${MKDIR} ${STAGEDIR}${PREFIX}/lib/vmware-tools/modules/drivers ${MKDIR} ${STAGEDIR}${PREFIX}/lib/vmware-tools/modules/input ${INSTALL_DATA} ${WRKSRC}/modules/freebsd/vmmemctl.ko ${STAGEDIR}${PREFIX}/lib/vmware-tools/modules/drivers/vmmemctl.ko ${INSTALL_DATA} ${WRKSRC}/modules/freebsd/vmxnet.ko ${STAGEDIR}${PREFIX}/lib/vmware-tools/modules/drivers/vmxnet.ko ${INSTALL_DATA} ${WRKSRC}/modules/freebsd/vmhgfs.ko ${STAGEDIR}${PREFIX}/lib/vmware-tools/modules/drivers/vmhgfs.ko ${INSTALL_DATA} ${WRKSRC}/modules/freebsd/vmblock.ko ${STAGEDIR}${PREFIX}/lib/vmware-tools/modules/drivers/vmblock.ko ${MKDIR} ${STAGEDIR}${PREFIX}/share/open-vm-tools/scripts/vmware/ ${MKDIR} ${STAGEDIR}${PREFIX}/share/open-vm-tools/scripts/ ${MKDIR} ${STAGEDIR}${PREFIX}/share/open-vm-tools/tests/ .include Index: head/emulators/open-vm-tools/files/patch-vmmemctl-os.c =================================================================== --- head/emulators/open-vm-tools/files/patch-vmmemctl-os.c (revision 434549) +++ head/emulators/open-vm-tools/files/patch-vmmemctl-os.c (revision 434550) @@ -1,157 +1,166 @@ ---- modules/freebsd/vmmemctl/os.c.orig 2013-09-23 10:51:10.000000000 -0500 -+++ modules/freebsd/vmmemctl/os.c 2014-04-23 15:51:43.823041178 -0500 +--- modules/freebsd/vmmemctl/os.c.orig 2013-09-23 08:51:10.000000000 -0700 ++++ modules/freebsd/vmmemctl/os.c 2017-02-20 21:19:02.000000000 -0800 @@ -37,9 +37,11 @@ #include #include #include +#include #include #include #include +#include #include #include -@@ -223,7 +225,11 @@ static __inline__ unsigned long os_ffz(u +@@ -223,7 +225,11 @@ unsigned long OS_ReservedPageGetLimit(void) { +#if __FreeBSD_version < 1100015 return cnt.v_page_count; +#else + return vm_cnt.v_page_count; +#endif } -@@ -295,7 +301,13 @@ OS_ReservedPageGetHandle(PA64 pa) // +@@ -295,7 +301,13 @@ Mapping OS_MapPageHandle(PageHandle handle) // IN { + +#if __FreeBSD_version >= 1000042 + vm_offset_t res = kva_alloc(PAGE_SIZE); +#else vm_offset_t res = kmem_alloc_nofault(kernel_map, PAGE_SIZE); +#endif + vm_page_t page = (vm_page_t)handle; if (!res) { -@@ -352,7 +364,11 @@ void +@@ -352,7 +364,11 @@ OS_UnmapPage(Mapping mapping) // IN { pmap_qremove((vm_offset_t)mapping, 1); +#if __FreeBSD_version >= 1000042 + kva_free((vm_offset_t)mapping, PAGE_SIZE); +#else kmem_free(kernel_map, (vm_offset_t)mapping, PAGE_SIZE); +#endif } -@@ -360,7 +376,11 @@ static void +@@ -360,7 +376,11 @@ os_pmap_alloc(os_pmap *p) // IN { /* number of pages (div. 8) */ +#if __FreeBSD_version < 1100015 p->size = (cnt.v_page_count + 7) / 8; +#else + p->size = (vm_cnt.v_page_count + 7) / 8; +#endif /* * expand to nearest word boundary -@@ -369,14 +389,23 @@ os_pmap_alloc(os_pmap *p) // IN +@@ -369,14 +389,23 @@ p->size = (p->size + sizeof(unsigned long) - 1) & ~(sizeof(unsigned long) - 1); +#if __FreeBSD_version >= 1000042 + p->bitmap = (unsigned long *)kmem_malloc(kernel_arena, p->size, + M_WAITOK | M_ZERO); +#else p->bitmap = (unsigned long *)kmem_alloc(kernel_map, p->size); +#endif } static void os_pmap_free(os_pmap *p) // IN { +#if __FreeBSD_version >= 1000042 + kva_free((vm_offset_t)p->bitmap, p->size); +#else kmem_free(kernel_map, (vm_offset_t)p->bitmap, p->size); +#endif p->size = 0; p->bitmap = NULL; } -@@ -449,12 +478,31 @@ os_kmem_free(vm_page_t page) // IN +@@ -449,12 +478,31 @@ os_state *state = &global_state; os_pmap *pmap = &state->pmap; - if ( !vm_page_lookup(state->vmobject, page->pindex) ) { - return; - } - os_pmap_putindex(pmap, page->pindex); - vm_page_free(page); +#if __FreeBSD_version > 1000029 + VM_OBJECT_WLOCK(state->vmobject); +#else + VM_OBJECT_LOCK(state->vmobject); +#endif + 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 + } +#if __FreeBSD_version > 1000029 + VM_OBJECT_WUNLOCK(state->vmobject); +#else + VM_OBJECT_UNLOCK(state->vmobject); +#endif } -@@ -466,8 +514,19 @@ os_kmem_alloc(int alloc_normal_failed) / +@@ -466,8 +514,19 @@ os_state *state = &global_state; os_pmap *pmap = &state->pmap; +#if __FreeBSD_version > 1000029 + VM_OBJECT_WLOCK(state->vmobject); +#else + VM_OBJECT_LOCK(state->vmobject); +#endif + pindex = os_pmap_getindex(pmap); if (pindex == (vm_pindex_t)-1) { +#if __FreeBSD_version > 1000029 + VM_OBJECT_WUNLOCK(state->vmobject); +#else + VM_OBJECT_UNLOCK(state->vmobject); +#endif return NULL; } -@@ -488,6 +547,11 @@ os_kmem_alloc(int alloc_normal_failed) / +@@ -488,6 +547,11 @@ if (!page) { os_pmap_putindex(pmap, pindex); } +#if __FreeBSD_version > 1000029 + VM_OBJECT_WUNLOCK(state->vmobject); +#else + VM_OBJECT_UNLOCK(state->vmobject); +#endif return page; } +@@ -824,7 +888,7 @@ + static void + vmmemctl_init_sysctl(void) + { +- oid = sysctl_add_oid(NULL, SYSCTL_STATIC_CHILDREN(_vm), OID_AUTO, ++ oid = SYSCTL_ADD_OID(NULL, SYSCTL_STATIC_CHILDREN(_vm), OID_AUTO, + BALLOON_NAME, CTLTYPE_STRING | CTLFLAG_RD, + 0, 0, vmmemctl_sysctl, "A", + BALLOON_NAME_VERBOSE);