Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 02 Sep 2002 19:43:52 +0100
From:      Ian Dowse <iedowse@maths.tcd.ie>
To:        Mark Santcroos <marks@ripe.net>
Cc:        emulation@freebsd.org, vsilyaev@mindspring.com
Subject:   Re: vmware2 fix for fo_ioctl api change 
Message-ID:   <200209021943.aa05393@salmon.maths.tcd.ie>
In-Reply-To: Your message of "Tue, 20 Aug 2002 13:01:34 %2B0200." <20020820110134.GG716@laptop.6bone.nl> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <20020820110134.GG716@laptop.6bone.nl>, Mark Santcroos writes:
>Attached patches fixes compilation of vmware2 on -CURRENT.
>Note that it doesn't work at the moment, but that has other reasons and
>will be addressed in a seperate patch.
>(Not sure yet whether it is a vmware thing or a linux emu thing)

The following patch seems to make it actually run on -current for
me, though I haven't tested it very extensively.

Ian

Index: files/patch-be
===================================================================
RCS file: /home/iedowse/CVS/ports/emulators/vmware2/files/patch-be,v
retrieving revision 1.2
diff -u -r1.2 patch-be
--- files/patch-be	12 Jul 2001 14:26:10 -0000	1.2
+++ files/patch-be	2 Sep 2002 18:32:43 -0000
@@ -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;


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-emulation" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi? <200209021943.aa05393>