Subject: Re: Still problems getting VMware running under -current.
To: Atsushi Onoe <onoe@sm.sony.co.jp>
From: Johan Ihren <johani@autonomica.se>
List: port-i386
Date: 06/27/2001 00:24:12
Atsushi Onoe <onoe@sm.sony.co.jp> writes:
> > starting vmnetif
> > /dev/vmnet1: Bad file descriptor
>
> Recent current requires FILE_SET_MATURE(fp) to duplicate fd.
> Attached is the complete diff against vmware-netbsd-1.0.tgz
> for NetBSD current after 2001/6/14.
Thanks, but it didn't help. Same error, i.e. starting vmnetif
complains about
/dev/vmnet: Bad file descriptor
I've cleaned out my old sources, unpacked a fresh
vmware-netbsd-1.0.tgz, patched and built and installed vmmon.o and
if_hub.o into $prefix/share/vmware/lkm/ and rebooted.
This is against -current tree from yesterday.
Regards,
Johan
> Atsushi Onoe
>
> diff -u -r ../../netbsd-org/source/vmmon/netbsd/drv.c ./vmmon/netbsd/drv.c
> --- ../../netbsd-org/source/vmmon/netbsd/drv.c Tue Apr 3 07:41:32 2001
> +++ ./vmmon/netbsd/drv.c Mon Jun 14 18:57:20 2001
> @@ -280,6 +280,9 @@
> fp->f_type = DTYPE_VNODE;
> fp->f_ops = &vnops;
> fp->f_data = (caddr_t)vp;
> +#ifdef FILE_SET_MATURE
> + FILE_SET_MATURE(fp);
> +#endif
> FILE_UNUSE(fp, p);
>
> p->p_dupfd = fd;
> diff -u -r ../../netbsd-org/source/vmmon/netbsd/host.c ./vmmon/netbsd/host.c
> --- ../../netbsd-org/source/vmmon/netbsd/host.c Tue Apr 3 21:23:08 2001
> +++ ./vmmon/netbsd/host.c Thu Jun 14 23:46:11 2001
> @@ -315,9 +315,16 @@
>
> /*
> * now locate it and write the results back to the pmap
> + *
> + * Under extreme memory pressure, the page may be gone again.
> + * Just fail the lock in that case.
> + * (It was ASSERT_BUG(6339, mpn).)
> + * -- edward
> */
> mpn = FindMPN(vpn);
> - ASSERT(mpn);
> + if (mpn == 0) {
> + return 0;
> + }
>
> /*
> * XXX SMP.
> @@ -628,6 +635,7 @@
> if (vm->crossvaddr != NULL)
> Warning("KernelAddr already allocated\n");
>
> + PHOLD(curproc);
> uvm_vslock(curproc, addr, PAGE_SIZE,
> VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE);
>
> @@ -636,6 +644,7 @@
> pmap_extract(vm_map_pmap(&curproc->p_vmspace->vm_map), uaddr, &paddr);
> pmap_kenter_pa(kvaddr, paddr,
> VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE);
> + PRELE(curproc);
> vm->crossvaddr = (void *)kvaddr;
> vm->crossuaddr = addr;
> #ifdef DEBUG
> diff -u -r ../../netbsd-org/source/vmnet/if_hubvar.h ./vmnet/if_hubvar.h
> --- ../../netbsd-org/source/vmnet/if_hubvar.h Tue Apr 3 07:57:57 2001
> +++ ./vmnet/if_hubvar.h Thu Jun 14 18:06:51 2001
> @@ -76,4 +76,4 @@
> #define MAKEHUBDEV(d,u) MAKEPORTDEV(d,0,-1)
>
> #define HUBMINPKT ETHER_HDR_LEN
> -#define HUBMAXPKT (ETHER_MAX_FRAME(ETHERTYPE_VLAN, 1))
> +#define HUBMAXPKT ETHER_MAX_LEN