Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Sep 2002 00:45:46 +0200
From:      Mark Santcroos <marks@ripe.net>
To:        Ian Dowse <iedowse@maths.tcd.ie>
Cc:        emulation@FreeBSD.ORG
Subject:   Re: vmware2 fix for fo_ioctl api change
Message-ID:  <20020902224546.GA715@laptop.6bone.nl>
In-Reply-To: <200209021943.aa05393@salmon.maths.tcd.ie>
References:  <20020820110134.GG716@laptop.6bone.nl> <200209021943.aa05393@salmon.maths.tcd.ie>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Ian,

I'm getting this, so thats probably not the thing your patch is fixing.
(I tried it also actually)

--------
linux: 'ioctl' fd=10, cmd=0x5401 ('T',1) not implemented
dscheck(md0): bio_bcount 1648 is not on a sector boundary (ssize 512)
linux: 'ioctl' fd=10, cmd=0x5401 ('T',1) not implemented
linux: 'ioctl' fd=12, cmd=0x5401 ('T',1) not implemented
dscheck(md0): bio_bcount 1648 is not on a sector boundary (ssize 512)
linux: 'ioctl' fd=12, cmd=0x5401 ('T',1) not implemented
linux: 'ioctl' fd=10, cmd=0x5401 ('T',1) not implemented
dscheck(md0): bio_bcount 1648 is not on a sector boundary (ssize 512)
linux: 'ioctl' fd=10, cmd=0x5401 ('T',1) not implemented
----------

I haven't had the time yet to do a binary search to find the commit that
broke it.

Hopefully soon..

Thanks

Mark

On Mon, Sep 02, 2002 at 07:43:52PM +0100, Ian Dowse wrote:
> 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

-- 
Mark Santcroos				RIPE Network Coordination Centre
http://www.ripe.net/home/mark/		New Projects Group/TTM

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?20020902224546.GA715>