vbox-dev  

Re: [vbox-dev] Guest additions for FreeBSD guests

Alexander Kabaev
Wed, 26 Aug 2009 05:30:55 -0700

On Tue, 25 Aug 2009 15:52:31 -0400
Alexander Kabaev <kab...@gmail.com> wrote:

Follow up to myself: attached patch is a newer version that
allows vboxguest driver to load without panicking the guest kernel.

http://people.freebsd.org/~kan/vbox_1.diff

-- 
Alexander Kabaev
Index: Config.kmk
===================================================================
--- Config.kmk	(revision 22444)
+++ Config.kmk	(working copy)
@@ -205,8 +205,7 @@
 
 # This indicates that additions (of some kind or another) is being _built_.
 # VBOX_WITHOUT_ADDITIONS overrides it.
-#if1of ($(KBUILD_TARGET), freebsd linux os2 solaris win)
-if1of ($(KBUILD_TARGET), linux solaris win)
+if1of ($(KBUILD_TARGET), freebsd linux os2 solaris win)
  VBOX_WITH_ADDITIONS = 1
 endif
 # Build the optional ring-0 part of the additions for syntax checking.
@@ -3533,6 +3532,9 @@
 	$(VBOX_LIB_VBGL_R3_SHARED) \
 	$(VBOX_LIB_IPRT_GUEST_R3_MINI) \
 	$(VBOX_LIB_VBGL_R3_SHARED)
+if1of ($(KBUILD_TARGET), freebsd)
+ TEMPLATE_VBOXGUESTR3XORGMOD_LIBS += iconv
+endif
 
 
 #
Index: src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
===================================================================
--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c	(revision 22444)
+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c	(working copy)
@@ -469,7 +469,7 @@
         vm_offset_t MapAddress = pvFixed != (void *)-1
                                ? (vm_offset_t)pvFixed
                                : vm_map_min(pMap);
-        if (pvFixed)
+        if (pvFixed != (void *)-1)
             vm_map_remove(pMap,
                           MapAddress,
                           MapAddress + cb);
Index: src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp
===================================================================
--- src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp	(revision 22444)
+++ src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp	(working copy)
@@ -33,10 +33,10 @@
 # define __STDC_LIMIT_MACROS
 # include <arpa/inet.h>
 # include <errno.h>
-# include <net/if.h>
 # include <netinet/in.h>
 # include <sys/ioctl.h>
 # include <sys/socket.h>
+# include <net/if.h>
 # include <unistd.h>
 # include <utmp.h>
 # ifdef RT_OS_SOLARIS
@@ -235,6 +235,8 @@
 
         ::LsaFreeReturnBuffer(pSessions);
  #endif /* TARGET_NT4 */
+#elif defined(RT_OS_FREEBSD)
+	/* TODO: Port me */
 #else
         utmp* ut_user;
         rc = utmpname(UTMP_FILE);
@@ -377,7 +379,7 @@
                 VBoxServiceError("Failed to ioctl(SIOCGIFBRDADDR) on socket: Error %d\n", errno);
                 return -1;
             }
- #ifdef RT_OS_SOLARIS
+ #if defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
             pAddress = (sockaddr_in *)&ifrequest[i].ifr_addr;
  #else
             pAddress = (sockaddr_in *)&ifrequest[i].ifr_netmask;
Index: src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c
===================================================================
--- src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c	(revision 22444)
+++ src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c	(working copy)
@@ -26,22 +26,24 @@
 
 #include <sys/param.h>
 #include <sys/systm.h>
+#include <sys/conf.h>
 #include <sys/kernel.h>
 #include <sys/module.h>
 #include <sys/bus.h>
+#include <sys/poll.h>
+#include <sys/selinfo.h>
 #include <sys/queue.h>
-#include <sys/lockmgr.h>
-#include <sys/types.h>
-#include <sys/conf.h>
 #include <sys/malloc.h>
 #include <sys/uio.h>
 #include <sys/file.h>
+#include <sys/rman.h>
 #include <machine/bus.h>
-#include <sys/rman.h>
 #include <machine/resource.h>
 #include <dev/pci/pcivar.h>
 #include <dev/pci/pcireg.h>
-
+#ifdef PVM
+#  undef PVM
+#endif
 #include "VBoxGuestInternal.h"
 #include <VBox/log.h>
 #include <iprt/assert.h>
@@ -55,8 +57,6 @@
 
 struct VBoxGuestDeviceState
 {
-    /** file node minor code */
-    unsigned           uMinor;
     /** Resource ID of the I/O port */
     int                iIOPortResId;
     /** Pointer to the I/O port resource. */
@@ -93,6 +93,7 @@
 static d_ioctl_t  VBoxGuestFreeBSDIOCtl;
 static d_write_t  VBoxGuestFreeBSDWrite;
 static d_read_t   VBoxGuestFreeBSDRead;
+static d_poll_t   VBoxGuestFreeBSDPoll;
 
 /*
  * IRQ related functions.
@@ -120,6 +121,7 @@
     .d_ioctl =          VBoxGuestFreeBSDIOCtl,
     .d_read =           VBoxGuestFreeBSDRead,
     .d_write =          VBoxGuestFreeBSDWrite,
+    .d_poll =           VBoxGuestFreeBSDPoll,
     .d_name =           DEVICE_NAME
 };
 
@@ -129,8 +131,9 @@
 static struct clonedevs    *g_pVBoxGuestFreeBSDClones;
 /** The dev_clone event handler tag. */
 static eventhandler_tag     g_VBoxGuestFreeBSDEHTag;
+/** selinfo structure used for polling. */
+static struct selinfo       g_SelInfo;
 
-
 /**
  * DEVFS event handler.
  */
@@ -162,7 +165,7 @@
     if (rc)
     {
         *ppDev = make_dev(&g_VBoxGuestFreeBSDChrDevSW,
-                          unit2minor(iUnit),
+                          iUnit,
                           UID_ROOT,
                           GID_WHEEL,
                           0644,
@@ -343,19 +346,47 @@
     return rc;
 }
 
-static ssize_t VBoxGuestFreeBSDWrite (struct cdev *pDev, struct uio *pUio, int fIo)
+static int VBoxGuestFreeBSDPoll (struct cdev *pDev, int events, struct thread *td)
 {
+    int revents;
+
+    LogFlow((DEVICE_NAME "::Poll: fEvents=%d\n", fEvents));
+
+    PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pDev->si_drv1;
+    if (RT_UNLIKELY(!VALID_PTR(pSession))) {
+        Log((DEVICE_NAME "::Poll: no state data for %s\n", devtoname(pDev)));
+        return (events & (POLLHUP|POLLIN|POLLRDNORM|POLLOUT|POLLWRNORM));
+    }
+
+    uint32_t u32CurSeq = ASMAtomicUoReadU32(&g_DevExt.u32MousePosChangedSeq);
+    if (pSession->u32MousePosChangedSeq != u32CurSeq)
+    {
+	revents = events & (POLLIN | POLLRDNORM);
+	pSession->u32MousePosChangedSeq = u32CurSeq;
+    }
+    else
+    {
+	revents = 0;
+
+	selrecord(td, &g_SelInfo);
+    }
+
+    return revents;
+}
+
+static int VBoxGuestFreeBSDWrite (struct cdev *pDev, struct uio *pUio, int fIo)
+{
     return 0;
 }
 
-static ssize_t VBoxGuestFreeBSDRead (struct cdev *pDev, struct uio *pUio, int fIo)
+static int VBoxGuestFreeBSDRead (struct cdev *pDev, struct uio *pUio, int fIo)
 {
     return 0;
 }
 
 static int VBoxGuestFreeBSDDetach(device_t pDevice)
 {
-    struct VBoxGuestDeviceState *pState = (struct VBoxGuestDeviceState *)device_get_softc(pDevice);
+    struct VBoxGuestDeviceState *pState = device_get_softc(pDevice);
 
     /*
      * Reserve what we did in VBoxGuestFreeBSDAttach.
@@ -371,7 +402,6 @@
 
     VBoxGuestDeleteDevExt(&g_DevExt);
 
-    free(pState, M_VBOXDEV);
     RTR0Term();
 
     return 0;
@@ -392,6 +422,16 @@
     return fOurIRQ ? 0 : 1;
 }
 
+void VBoxGuestNativeISRMousePollEvent(PVBOXGUESTDEVEXT pDevExt)
+{
+    LogFlow((DEVICE_NAME "::NativeISRMousePollEvent:\n"));
+
+    /*
+     * Wake up poll waiters.
+     */
+    selwakeup(&g_SelInfo);
+}
+
 /**
  * Sets IRQ for VMMDev.
  *
@@ -458,15 +498,7 @@
     }
 
     pState = device_get_softc(pDevice);
-    if (!pState)
-    {
-        pState = malloc(sizeof(struct VBoxGuestDeviceState), M_VBOXDEV, M_NOWAIT | M_ZERO);
-        if (!pState)
-            return ENOMEM;
 
-        device_set_softc(pDevice, pState);
-    }
-
     /*
      * Allocate I/O port resource.
      */
@@ -562,11 +594,6 @@
 DRIVER_MODULE(vboxguest, pci, VBoxGuestFreeBSDDriver, VBoxGuestFreeBSDClass, 0, 0);
 MODULE_VERSION(vboxguest, 1);
 
-#if 0/** @todo This shouldn't be needed. if it is, that means exceptions hasn't been disabled correctly. */
-int __gxx_personality_v0 = 0xdeadbeef;
-#endif
-
-
 /* Common code that depend on g_DevExt. */
 #include "VBoxGuestIDC-unix.c.h"
 
Index: src/VBox/Additions/common/VBoxGuest/Makefile.kmk
===================================================================
--- src/VBox/Additions/common/VBoxGuest/Makefile.kmk	(revision 22444)
+++ src/VBox/Additions/common/VBoxGuest/Makefile.kmk	(working copy)
@@ -54,11 +54,11 @@
   VBoxGuest_LIBS          = \
   	$(VBOX_LIB_VBGL_R0BASE) \
   	$(VBOX_LIB_IPRT_GUEST_R0)
-  VBoxGuest_INTERMEDIATES.freebsd = \
+  VBoxGuest_DEPS.freebsd = \
   	$(PATH_VBoxGuest)/pci_if.h \
   	$(PATH_VBoxGuest)/bus_if.h \
   	$(PATH_VBoxGuest)/device_if.h
-  VBoxGuest_CLEAN.freebsd = $(VBoxGuest_INTERMEDIATES.freebsd)
+  VBoxGuest_CLEAN.freebsd = $(VBoxGuest_DEPS.freebsd)
 
  else # OS/2:
   # The library order is crucial, so a bit of trickery is necessary.
@@ -100,18 +100,21 @@
   VBOX_AWK := /usr/bin/awk
   $$(PATH_VBoxGuest)/bus_if.h: $(VBOX_FREEBSD_SRC)/kern/bus_if.m
 	$(call MSG_TOOL,awk,VBoxGuest,$<,$@)
+	$(QUIET)$(MKDIR) -p $(PATH_VBoxGuest)
 	$(QUIET)$(CP) -f $(VBOX_FREEBSD_SRC)/kern/bus_if.m $(PATH_VBoxGuest)/bus_if.m
 	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/makeobjops.awk $(PATH_VBoxGuest)/bus_if.m -h -p
 	$(QUIET)$(RM) $(PATH_VBoxGuest)/bus_if.m
 
   $$(PATH_VBoxGuest)/device_if.h: $(VBOX_FREEBSD_SRC)/kern/device_if.m
 	$(call MSG_TOOL,awk,VBoxGuest,$<,$@)
+	$(QUIET)$(MKDIR) -p $(PATH_VBoxGuest)
 	$(QUIET)$(CP) -f $(VBOX_FREEBSD_SRC)/kern/device_if.m $(PATH_VBoxGuest)/device_if.m
 	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/makeobjops.awk $(PATH_VBoxGuest)/device_if.m -h -p
 	$(QUIET)$(RM) $(PATH_VBoxGuest)/device_if.m
 
   $$(PATH_VBoxGuest)/pci_if.h: $(VBOX_FREEBSD_SRC)/dev/pci/pci_if.m
 	$(call MSG_TOOL,awk,VBoxGuest,$<,$@)
+	$(QUIET)$(MKDIR) -p $(PATH_VBoxGuest)
 	$(QUIET)$(CP) -f $(VBOX_FREEBSD_SRC)/dev/pci/pci_if.m $(PATH_VBoxGuest)/pci_if.m
 	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/makeobjops.awk $(PATH_VBoxGuest)/pci_if.m -h -p
 	$(QUIET)$(RM) $(PATH_VBoxGuest)/pci_if.m
Index: src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3Lib.cpp
===================================================================
--- src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3Lib.cpp	(revision 22444)
+++ src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3Lib.cpp	(working copy)
@@ -199,7 +199,7 @@
     char szDevice[RT_MAX(sizeof(VBOXGUEST_DEVICE_NAME), sizeof(VBOXGUEST_USER_DEVICE_NAME)) + 16];
     for (unsigned iUnit = 0; iUnit < 1024; iUnit++)
     {
-        RTStrPrintf(szDevice, sizeof(szDevice), pszDeviceName "%d", iUnit);
+        RTStrPrintf(szDevice, sizeof(szDevice), "%s%d", pszDeviceName, iUnit);
 # if defined(VBOX_VBGLR3_XFREE86)
         File = xf86open(szDevice, XF86_O_RDWR);
         if (File >= 0)
Index: src/VBox/Additions/freebsd/drm/vboxvideo_drm.c
===================================================================
--- src/VBox/Additions/freebsd/drm/vboxvideo_drm.c	(revision 0)
+++ src/VBox/Additions/freebsd/drm/vboxvideo_drm.c	(revision 0)
@@ -0,0 +1,120 @@
+/*-
+ * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
+ * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Rickard E. (Rik) Faith <fa...@valinux.com>
+ *    Daryll Strauss <dar...@valinux.com>
+ *    Gareth Hughes <gar...@valinux.com>
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "dev/drm/drmP.h"
+#include "dev/drm/drm_pciids.h"
+
+#define DRIVER_AUTHOR                   "Sun Microsystems Inc."
+#define DRIVER_NAME                     "vboxvideo"
+#define DRIVER_DESC                     "VirtualBox DRM"
+#define DRIVER_DATE                     "20090317"
+#define DRIVER_MAJOR                    1
+#define DRIVER_MINOR                    0
+#define DRIVER_PATCHLEVEL               0
+
+#define vboxvideo_PCI_IDS           { 0x80ee, 0xbeef, 0, "VirtualBox Video" }, \
+                                    { 0, 0, 0, NULL }
+
+static drm_pci_id_list_t vboxvideo_pciidlist[] = {
+	vboxvideo_PCI_IDS
+};
+
+static void vboxvideo_configure(struct drm_device *dev)
+{
+	dev->driver->buf_priv_size	= 1; /* No dev_priv */
+
+	dev->driver->max_ioctl		= 0;
+
+	dev->driver->name		= DRIVER_NAME;
+	dev->driver->desc		= DRIVER_DESC;
+	dev->driver->date		= DRIVER_DATE;
+	dev->driver->major		= DRIVER_MAJOR;
+	dev->driver->minor		= DRIVER_MINOR;
+	dev->driver->patchlevel		= DRIVER_PATCHLEVEL;
+}
+
+static int
+vboxvideo_probe(device_t kdev)
+{
+	return drm_probe(kdev, vboxvideo_pciidlist);
+}
+
+static int
+vboxvideo_attach(device_t kdev)
+{
+	struct drm_device *dev = device_get_softc(kdev);
+
+	dev->driver = malloc(sizeof(struct drm_driver_info), DRM_MEM_DRIVER,
+	    M_WAITOK | M_ZERO);
+
+	vboxvideo_configure(dev);
+
+	return drm_attach(kdev, vboxvideo_pciidlist);
+}
+
+static int
+vboxvideo_detach(device_t kdev)
+{
+	struct drm_device *dev = device_get_softc(kdev);
+	int ret;
+
+	ret = drm_detach(kdev);
+
+	free(dev->driver, DRM_MEM_DRIVER);
+
+	return ret;
+}
+
+static device_method_t vboxvideo_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_probe,		vboxvideo_probe),
+	DEVMETHOD(device_attach,	vboxvideo_attach),
+	DEVMETHOD(device_detach,	vboxvideo_detach),
+
+	{ 0, 0 }
+};
+
+static driver_t vboxvideo_driver = {
+	"drm",
+	vboxvideo_methods,
+	sizeof(struct drm_device)
+};
+
+extern devclass_t drm_devclass;
+#if __FreeBSD_version >= 700010
+DRIVER_MODULE(vboxvideo, vgapci, vboxvideo_driver, drm_devclass, 0, 0);
+#else
+DRIVER_MODULE(vboxvideo, pci, vboxvideo_driver, drm_devclass, 0, 0);
+#endif
+MODULE_DEPEND(vboxvideo, drm, 1, 1, 1);

Property changes on: src/VBox/Additions/freebsd/drm/vboxvideo_drm.c
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + FreeBSD=%H
Added: svn:eol-style
   + native

Index: src/VBox/Additions/freebsd/drm/Makefile.kmk
===================================================================
--- src/VBox/Additions/freebsd/drm/Makefile.kmk	(revision 0)
+++ src/VBox/Additions/freebsd/drm/Makefile.kmk	(revision 0)
@@ -0,0 +1,83 @@
+# $Id: Makefile.kmk 18057 2009-03-18 12:31:39Z vboxsync $
+## @file
+# Sub-Makefile for the vboxvideo DRM module (FreeBSD kernel OpenGL module).
+#
+
+#
+# Copyright (C) 2009 Sun Microsystems, Inc.
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
+# Clara, CA 95054 USA or visit http://www.sun.com if you need
+# additional information or have any questions.
+#
+
+
+SUB_DEPTH = ../../../../..
+include	$(KBUILD_PATH)/subheader.kmk
+
+ifneq ($(KBUILD_HOST),freebsd)
+$(error "The FreeBSD guest additions can only be built on FreeBSD!")
+endif
+
+#
+# vboxvideo - The Video DRM (Direct Rendering Module) kernel module
+#
+SYSMODS.freebsd        += vboxvideo
+vboxvideo_TEMPLATE      = VBOXGUESTR0
+vboxvideo_DEFS          = VBOX_WITH_HGCM VBOX_SVN_REV=$(VBOX_SVN_REV)
+vboxvideo_DEPS         += $(VBOX_SVN_REV_KMK)
+vboxvideo_INCS.freebsd  = $(PATH_vboxvideo)
+vboxvideo_SOURCES       = \
+	vboxvideo_drm.c
+vboxvideo_LIBS          = \
+	$(VBOX_LIB_VBGL_R0) \
+	$(VBOX_LIB_IPRT_GUEST_R0)
+vboxvideo_DEPS         += \
+	$(PATH_vboxvideo)/pci_if.h \
+	$(PATH_vboxvideo)/bus_if.h \
+	$(PATH_vboxvideo)/device_if.h \
+	$(PATH_vboxvideo)/opt_drm.h
+vboxvideo_CLEAN.freebsd = $(vboxvideo_DEPS)
+
+#
+# FreeBSD: Genereate bus, device and pci interface headers. (explain why)
+#
+# We cannot give a output path to the awk program, it will always generate
+# the header next to the source. So, we'll have to temporarily copy the
+# source file to the destination direction for it to work out correctly.
+#
+VBOX_AWK := /usr/bin/awk
+$$(PATH_vboxvideo)/bus_if.h: $(VBOX_FREEBSD_SRC)/kern/bus_if.m
+	$(call MSG_TOOL,awk,vboxvideo,$<,$@)
+	$(QUIET)$(MKDIR) -p $(PATH_vboxvideo)
+	$(QUIET)$(CP) -f $(VBOX_FREEBSD_SRC)/kern/bus_if.m $(PATH_vboxvideo)/bus_if.m
+	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/makeobjops.awk $(PATH_vboxvideo)/bus_if.m -h -p
+	$(QUIET)$(RM) $(PATH_vboxvideo)/bus_if.m
+
+$$(PATH_vboxvideo)/device_if.h: $(VBOX_FREEBSD_SRC)/kern/device_if.m
+	$(call MSG_TOOL,awk,vboxvideo,$<,$@)
+	$(QUIET)$(MKDIR) -p $(PATH_vboxvideo)
+	$(QUIET)$(CP) -f $(VBOX_FREEBSD_SRC)/kern/device_if.m $(PATH_vboxvideo)/device_if.m
+	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/makeobjops.awk $(PATH_vboxvideo)/device_if.m -h -p
+	$(QUIET)$(RM) $(PATH_vboxvideo)/device_if.m
+
+$$(PATH_vboxvideo)/pci_if.h: $(VBOX_FREEBSD_SRC)/dev/pci/pci_if.m
+	$(call MSG_TOOL,awk,vboxvideo,$<,$@)
+	$(QUIET)$(MKDIR) -p $(PATH_vboxvideo)
+	$(QUIET)$(CP) -f $(VBOX_FREEBSD_SRC)/dev/pci/pci_if.m $(PATH_vboxvideo)/pci_if.m
+	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/makeobjops.awk $(PATH_vboxvideo)/pci_if.m -h -p
+	$(QUIET)$(RM) $(PATH_vboxvideo)/pci_if.m
+
+$$(PATH_vboxvideo)/opt_drm.h:
+	$(QUIET)$(MKDIR) -p $(PATH_vboxvideo)
+	$(QUIET)touch $(PATH_vboxvideo)/opt_drm.h
+
+include	$(KBUILD_PATH)/subfooter.kmk

Property changes on: src/VBox/Additions/freebsd/drm/Makefile.kmk
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + FreeBSD=%H
Added: svn:eol-style
   + native

Index: src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk
===================================================================
--- src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk	(revision 22444)
+++ src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk	(working copy)
@@ -34,7 +34,7 @@
 vboxvfs_DEFS          = VBOX_WITH_HGCM
 vboxvfs_INCS          = \
         . \
-       $(PATH_vboxfs)
+       $(PATH_vboxvfs)
 vboxvfs_SOURCES       = \
 	vboxvfs_vfsops.c \
 	vboxvfs_vnops.c
@@ -42,9 +42,9 @@
 	$(VBOX_LIB_VBGL_R0) \
 	$(VBOX_LIB_IPRT_GUEST_R0)
 vboxvfs_DEPS          = \
-       $$(PATH_vboxvfs)/vnode_if.h \
-       $$(PATH_vboxvfs)/vnode_if_newproto.h \
-       $$(PATH_vboxvfs)/vnode_if_typedef.h
+       $(PATH_vboxvfs)/vnode_if.h \
+       $(PATH_vboxvfs)/vnode_if_newproto.h \
+       $(PATH_vboxvfs)/vnode_if_typedef.h
 vboxvfs_CLEAN        += $(vboxvfs_DEPS)
 
 VBOX_AWK := /usr/bin/awk
@@ -52,17 +52,14 @@
 $$(PATH_vboxvfs)/vnode_if.h: $(VBOX_FREEBSD_SRC)/kern/vnode_if.src
 	$(call MSG_TOOL,awk,VBoxGuest,$<,$@)
 	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/vnode_if.awk $(VBOX_FREEBSD_SRC)/kern/vnode_if.src -h
-	$(QUIET)$(MV) $(PATH_vboxvfs)/vnode_if.h $(PATH_vboxvfs)/vnode_if.h
 
 $$(PATH_vboxvfs)/vnode_if_newproto.h: $(VBOX_FREEBSD_SRC)/kern/vnode_if.src
 	$(call MSG_TOOL,awk,VBoxGuest,$<,$@)
 	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/vnode_if.awk $(VBOX_FREEBSD_SRC)/kern/vnode_if.src -p
-	$(QUIET)$(MV) $(PATH_vboxvfs)/vnode_if_newproto.h $(PATH_vboxvfs)/vnode_if_newproto.h
 
 $$(PATH_vboxvfs)/vnode_if_typedef.h: $(VBOX_FREEBSD_SRC)/kern/vnode_if.src
 	$(call MSG_TOOL,awk,VBoxGuest,$<,$@)
 	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/vnode_if.awk $(VBOX_FREEBSD_SRC)/kern/vnode_if.src -q
-	$(QUIET)$(MV) $(PATH_vboxvfs)/vnode_if_typedef.h $(PATH_vboxvfs)/vnode_if_typedef.h
 
 include	$(KBUILD_PATH)/subfooter.kmk
 
Index: src/VBox/Additions/freebsd/Makefile.kmk
===================================================================
--- src/VBox/Additions/freebsd/Makefile.kmk	(revision 22444)
+++ src/VBox/Additions/freebsd/Makefile.kmk	(working copy)
@@ -27,7 +27,8 @@
 endif
 
 # Include sub-makefiles.
-include $(PATH_SUB_CURRENT)/vboxvfs/Makefile.kmk
+#include $(PATH_SUB_CURRENT)/vboxvfs/Makefile.kmk
+include $(PATH_SUB_CURRENT)/drm/Makefile.kmk
 
 # Globals
 VBOX_FBSD_ADD_INS_OUT_DIR := $(PATH_TARGET)/Additions/FreeBSD/Installer
@@ -59,6 +60,8 @@
 		$(VBOX_PATH_X11_ADDITION_INSTALLER)/98vboxadd-xclient \
 		$(VBOX_PATH_X11_ADDITION_INSTALLER)/x11config.pl \
 		$(PATH_BIN)/additions/vboxguest.ko \
+		$(PATH_BIN)/additions/vboxvideo.ko \
+		$(PATH_BIN)/additions/vboxvfs.ko \
 		$(PATH_BIN)/additions/VBoxClient \
 		$(PATH_BIN)/additions/VBoxService \
 		$(PATH_BIN)/additions/VBoxControl \

Attachment: signature.asc
Description: PGP signature

_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
http://vbox.innotek.de/mailman/listinfo/vbox-dev