freebsd-ports/emulators/vmware3/files/fbsd7-1.patch
Boris Samorodov 25e545e858 Unbreak compiling at FreeBSD-7.x. The port seems to work only with
an UP kernel.

PR:		117350
Submitted by:	Yi Wang <wangyi6854 at gmail.com>
Patch by:	fchang at cs.ubc.ca
Tested by:	Yi Wang <wangyi6854 at gmail.com>
2008-04-01 14:04:00 +00:00

45 lines
1.2 KiB
Diff

--- vmmon-only/freebsd/driver.c.orig 2008-03-04 10:05:14.000000000 +0300
+++ vmmon-only/freebsd/driver.c 2008-03-04 10:09:23.000000000 +0300
@@ -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