From owner-freebsd-emulation@FreeBSD.ORG Tue Mar 4 03:50:03 2008 Return-Path: Delivered-To: freebsd-emulation@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 30E451065671 for ; Tue, 4 Mar 2008 03:50:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 30CFC8FC16 for ; Tue, 4 Mar 2008 03:50:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m243o2bF009052 for ; Tue, 4 Mar 2008 03:50:02 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m243o21q009051; Tue, 4 Mar 2008 03:50:02 GMT (envelope-from gnats) Date: Tue, 4 Mar 2008 03:50:02 GMT Message-Id: <200803040350.m243o21q009051@freefall.freebsd.org> To: freebsd-emulation@FreeBSD.org From: fchang@cs.ubc.ca Cc: Subject: Re: ports/117350: compile error in emulators/vmware3 X-BeenThere: freebsd-emulation@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: fchang@cs.ubc.ca List-Id: Development of Emulators of other operating systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Mar 2008 03:50:03 -0000 The following reply was made to PR ports/117350; it has been noted by GNATS. From: fchang@cs.ubc.ca To: bug-followup@FreeBSD.org Cc: Subject: Re: ports/117350: compile error in emulators/vmware3 Date: Mon, 3 Mar 2008 19:26:40 -0800 (PST) Please test this patch. I tested it on FreeBSD RELEASE-7.0 i386 uniprocessor, and I could boot Windows XP from it. --- work/vmware-distrib/vmmon-only/freebsd/driver.c.old 2008-03-03 17:03:25.000000000 +0000 +++ work/vmware-distrib/vmmon-only/freebsd/driver.c 2008-03-03 17:04:13.000000000 +0000 @@ -397,12 +397,12 @@ if ((error = falloc(td, &fp, &fd)) != 0) return error; - FILEDESC_LOCK(p->p_fd); + FILEDESC_XLOCK(p->p_fd); fp->f_data = data; fp->f_flag = flags & FMASK; fp->f_ops = &vmmon_fileops; fp->f_type = DTYPE_SOCKET; - FILEDESC_UNLOCK(p->p_fd); + FILEDESC_XUNLOCK(p->p_fd); #if __FreeBSD_version >= 501111 /* falloc now returns TWO references to the file, not one. */ @@ -1309,6 +1309,19 @@ return FALSE; } +static vm_paddr_t +get_avail_end(void) +{ + vm_paddr_t avail_end; + int i; + avail_end = phys_avail[1]; + for (i = 0; phys_avail[i + 1]; i += 2) { + if (phys_avail[i + 1] > avail_end) + avail_end = phys_avail[i + 1]; + } + return avail_end; +} + /* * Allocate and lock numPages of memory physically continguous addresses * below 4GB. @@ -1341,6 +1354,7 @@ VMDEBUG("vmmon_alloc_low_pages: malloc MemRange failed\n"); return ENOMEM; } + vm_paddr_t avail_end = get_avail_end(); if (avail_end > ISA_DMA_BOUNCE_THRESHOLD) high = trunc_page(ISA_DMA_BOUNCE_THRESHOLD); else --- work/vmware-distrib/vmmon-only/include/vm_asm.h.old 2008-03-03 17:03:22.000000000 +0000 +++ work/vmware-distrib/vmmon-only/include/vm_asm.h 2008-03-03 17:07:21.000000000 +0000 @@ -1020,6 +1020,7 @@ *----------------------------------------------------------------------------- */ +#if 0 static INLINE void Div643264(uint64 dividend, uint32 divisor, @@ -1047,6 +1048,7 @@ *quotient = (uint64)hQuotient << 32 | lQuotient; } #endif +#endif #endif /* VM_ASM_H */