Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Jul 2020 22:48:24 +0000 (UTC)
From:      Muhammad Moinur Rahman <bofh@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r542535 - in head/emulators: . qemu50 qemu50/files
Message-ID:  <202007182248.06IMmODB044635@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bofh
Date: Sat Jul 18 22:48:23 2020
New Revision: 542535
URL: https://svnweb.freebsd.org/changeset/ports/542535

Log:
  [NEW] emulators/qemu50: QEMU CPU Emulator - 5.0.X branch
  
  QEMU is a FAST! processor emulator using dynamic translation to achieve
  good emulation speed.
  QEMU has two operating modes:
  
  * Full system emulation. In this mode, QEMU emulates a full system
    (for example a PC), including a processor and various peripherials.
    It can be used to launch different Operating Systems without rebooting
    the PC or to debug system code.
  * User mode emulation (Linux host only). In this mode, QEMU can launch
    Linux processes compiled for one CPU on another CPU. It can be used to
    launch the Wine Windows API emulator or to ease cross-compilation and
    cross-debugging.
  
  As QEMU requires no host kernel patches to run, it is very safe and easy to use.
  
  See also the preconfigured system images on http://oszoo.org/
  Many live cd isos also work.
  
  WWW: http://wiki.qemu.org/Main_Page

Added:
  head/emulators/qemu50/
  head/emulators/qemu50/Makefile   (contents, props changed)
  head/emulators/qemu50/distinfo   (contents, props changed)
  head/emulators/qemu50/files/
  head/emulators/qemu50/files/patch-Makefile   (contents, props changed)
  head/emulators/qemu50/files/patch-configure   (contents, props changed)
  head/emulators/qemu50/files/patch-disas_libvixl_vixl_a64_disasm-a64.cc   (contents, props changed)
  head/emulators/qemu50/files/patch-include_net_net.h   (contents, props changed)
  head/emulators/qemu50/files/patch-include_qemu_atomic.h   (contents, props changed)
  head/emulators/qemu50/files/patch-net_tap-bsd.c   (contents, props changed)
  head/emulators/qemu50/files/pcap-patch-net_clients.h   (contents, props changed)
  head/emulators/qemu50/files/pcap-patch-net_net.c   (contents, props changed)
  head/emulators/qemu50/files/pcap-patch-qapi_net.json   (contents, props changed)
  head/emulators/qemu50/files/qemu-ifdown.sample   (contents, props changed)
  head/emulators/qemu50/files/qemu-ifup.sample   (contents, props changed)
  head/emulators/qemu50/pkg-descr   (contents, props changed)
  head/emulators/qemu50/pkg-message   (contents, props changed)
  head/emulators/qemu50/pkg-plist   (contents, props changed)
Modified:
  head/emulators/Makefile

Modified: head/emulators/Makefile
==============================================================================
--- head/emulators/Makefile	Sat Jul 18 21:27:11 2020	(r542534)
+++ head/emulators/Makefile	Sat Jul 18 22:48:23 2020	(r542535)
@@ -119,6 +119,7 @@
     SUBDIR += qemu31
     SUBDIR += qemu40
     SUBDIR += qemu41
+    SUBDIR += qemu50
     SUBDIR += qmc2
     SUBDIR += quasi88
     SUBDIR += riscv-fesvr

Added: head/emulators/qemu50/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/Makefile	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,168 @@
+# Created by: Juergen Lock <nox@jelal.kn-bremen.de>
+# $FreeBSD$
+
+PORTNAME=	qemu
+PORTVERSION=	5.0.0
+CATEGORIES=	emulators
+MASTER_SITES=	https://download.qemu.org/
+PKGNAMESUFFIX=	50
+DIST_SUBDIR=	qemu/${PORTVERSION}
+
+PATCH_SITES=	https://github.com/${PORTNAME}/${PORTNAME}/commit/
+
+MAINTAINER=	bofh@FreeBSD.org
+COMMENT=	QEMU CPU Emulator - 5.0.X branch
+
+LICENSE=	GPLv2
+
+ONLY_FOR_ARCHS=	amd64 i386 powerpc powerpc64
+
+LIB_DEPENDS=	libnettle.so:security/nettle \
+		libfontconfig.so:x11-fonts/fontconfig \
+		libfreetype.so:print/freetype2 \
+		libepoxy.so:graphics/libepoxy \
+		libpcre2-8.so:devel/pcre2
+
+USES=		bison compiler:c11 cpe gmake gnome iconv:wchar_t perl5 \
+		pkgconfig python:build tar:xz xorg
+USE_GNOME=	cairo glib20 libxml2
+USE_PERL5=	build
+USE_XORG=	pixman
+
+PATCHFILES+=	55765822804f.patch:-p1
+PATCHFILES+=	aa4d30f6618d.patch:-p1
+
+#BROKEN_powerpc64=	fails to compile: In function aio_bh_poll: internal compiler error: Segmentation fault
+
+#.if !defined(PKGNAMESUFFIX) || (${PKGNAMESUFFIX} != "-utils" && ${PKGNAMESUFFIX} != "-guest-agent")
+#.endif
+
+HAS_CONFIGURE=	yes
+MAKE_ENV+=	BSD_MAKE="${MAKE}" V=1
+
+OPTIONS_DEFINE=	SAMBA X11 GTK3 OPENGL GNUTLS SASL JPEG PNG CURL \
+		VDE CDROM_DMA PCAP USBREDIR X86_TARGETS \
+		STATIC_LINK DOCS NCURSES
+SAMBA_DESC=		samba dependency (for -smb)
+GNUTLS_DESC=		gnutls dependency (vnc encryption)
+SASL_DESC=		cyrus-sasl dependency (vnc encryption)
+JPEG_DESC=		jpeg dependency (vnc lossy compression)
+PNG_DESC=		png dependency (vnc compression)
+CDROM_DMA_DESC=		IDE CDROM DMA
+PCAP_DESC=		pcap dependency (networking with bpf)
+USBREDIR_DESC=		usb device network redirection (experimental!)
+X86_TARGETS_DESC=	Build only x86 system targets
+STATIC_LINK_DESC=	Statically link the executables
+VDE_DESC=		vde dependency (for vde networking)
+OPTIONS_DEFAULT=X11 GTK3 OPENGL GNUTLS SASL JPEG PNG CDROM_DMA CURL PCAP NCURSES VDE
+OPTIONS_SUB=	yes
+X11_USE=	SDL=sdl2 XORG=x11,xext GNOME=gdkpixbuf2
+X11_USES=	sdl
+X11_CONFIGURE_ENABLE=	sdl
+GTK3_LIB_DEPENDS=	libxkbcommon.so:x11/libxkbcommon
+GTK3_USE=	GNOME=gdkpixbuf2,gtk30,vte3 XORG=x11,xext
+GTK3_USES=	gettext gl
+GTK3_CONFIGURE_OFF=	--disable-gtk --disable-vte
+GNUTLS_LIB_DEPENDS=	libgnutls.so:security/gnutls
+GNUTLS_CONFIGURE_OFF=	--disable-gnutls
+SASL_LIB_DEPENDS=	libsasl2.so:security/cyrus-sasl2
+SASL_CONFIGURE_OFF=	--disable-vnc-sasl
+JPEG_USES=		jpeg
+JPEG_CONFIGURE_OFF=	--disable-vnc-jpeg
+PNG_LIB_DEPENDS=	libpng.so:graphics/png
+PNG_CONFIGURE_OFF=	--disable-vnc-png
+CURL_LIB_DEPENDS=	libcurl.so:ftp/curl
+CURL_CONFIGURE_OFF=	--disable-curl
+OPENGL_USE=	GL=gl
+OPENGL_USES=	gl
+OPENGL_CONFIGURE_OFF=	--disable-opengl
+USBREDIR_BUILD_DEPENDS=	usbredir>=0.6:net/usbredir
+USBREDIR_RUN_DEPENDS=	usbredir>=0.6:net/usbredir
+USBREDIR_CONFIGURE_OFF=	--disable-usb-redir
+PCAP_CONFIGURE_ON=	--enable-pcap
+#PCAP_EXTRA_PATCHES=	${FILESDIR}/pcap-patch-qapi_net.json ${FILESDIR}/pcap-patch-net_net.c \
+#			${FILESDIR}/pcap-patch-net_clients.h
+VDE_LIB_DEPENDS=	libvdeplug.so:net/vde2
+VDE_CONFIGURE_OFF=	--disable-vde
+STATIC_LINK_CONFIGURE_ON=	--static
+STATIC_LINK_PREVENTS=		GTK3 X11
+STATIC_LINK_PREVENTS_MSG=	X11 ui cannot be built static
+NCURSES_USES=		ncurses:base
+SAMBA_USES=		samba:run # smbd
+SAMBA_CONFIGURE_ON=	--smbd=${LOCALBASE}/sbin/smbd
+DOCS_BUILD_DEPENDS=	texi2html:textproc/texi2html \
+			sphinx-build:textproc/py-sphinx
+DOCS_USES=		makeinfo
+DOCS_MAKE_ARGS_OFF=	NOPORTDOCS=1
+
+PORTDOCS=	docs index.html interop/.buildinfo interop/* qemu-ga-ref.html qemu-ga-ref.txt \
+	       	qemu-qmp-ref.html qemu-qmp-ref.txt specs/.buildinfo specs/* system/.buildinfo \
+		system/* tools/.buildinfo tools/* user/.buildinfo user/*
+
+WITHOUT_CPU_CFLAGS=yes	#to avoid problems with register allocation
+CFLAGS:=	${CFLAGS:C/-fno-tree-vrp//}
+CFLAGS_amd64+=	-fPIC
+CONFIGURE_ARGS=	--localstatedir=/var --extra-ldflags=-L\"/usr/lib\" \
+		--extra-ldflags=-L\"${LOCALBASE}/lib\" --enable-debug \
+		--prefix=${PREFIX} --cc=${CC} --enable-netmap --enable-docs --disable-kvm \
+		--disable-linux-user --disable-linux-aio --disable-xen \
+		--enable-debug-info --python=${PYTHON_CMD} \
+		--extra-cflags=-I${WRKSRC}\ -I${LOCALBASE}/include\ -DPREFIX=\\\"\"${PREFIX}\\\"\"
+INSTALLS_ICONS=	yes
+
+.include <bsd.port.options.mk>
+
+.if !defined(STRIP) || ${STRIP} == ""
+CONFIGURE_ARGS+=--disable-strip
+.endif
+
+.if ${ARCH} == "amd64"
+MAKE_ARGS+=	ARCH=x86_64
+.endif
+
+.if ${ARCH} == "powerpc"
+MAKE_ARGS+=	ARCH=ppc
+.endif
+
+.if ${ARCH} == "powerpc64"
+MAKE_ARGS+=	ARCH=ppc64
+.endif
+
+.if ${ARCH} == "sparc64"
+CONFIGURE_ARGS+=	--sparc_cpu=v9
+.endif
+
+PLIST_SUB+=	LINUXBOOT_DMA=""
+
+# -lprocstat actually only _needs_ -lelf after r249666 or r250870 (MFC)
+# but it shouldn't matter much
+post-patch:
+#	@${REINPLACE_CMD} -e '/LIBS/s|-lprocstat|-lprocstat -lelf|' \
+#		 -e '/libusb/s/ --atleast-version=1\.0\.[0-9]*//' \
+#		${WRKSRC}/configure
+#	@${REINPLACE_CMD} -E \
+#		-e "s|^(CFLAGS=).*|\1${CFLAGS} -fno-strict-aliasing -I.|" \
+#		-e "s|^(LDFLAGS=).*|\1${LDFLAGS}|" \
+#		${WRKSRC}/Makefile
+
+post-patch-CDROM_DMA-off:
+	@${REINPLACE_CMD} -e '/USE_DMA_CDROM/d' ${WRKSRC}/include/hw/ide/internal.h
+
+# XXX need to disable usb host code on head while it's not ported to the
+# new usb stack yet
+post-configure:
+	@${REINPLACE_CMD} -E \
+		-e "s|^(HOST_USB=)bsd|\1stub|" \
+		${WRKSRC}/config-host.mak
+
+.if !target(post-install)
+post-install:
+	${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample ${STAGEDIR}${PREFIX}/etc
+	${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample ${STAGEDIR}${PREFIX}/etc
+	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/qemu-*
+
+post-install-DOCS-on:
+	@(cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${DOCSDIR}/)
+.endif
+
+.include <bsd.port.mk>

Added: head/emulators/qemu50/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/distinfo	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,7 @@
+TIMESTAMP = 1595103965
+SHA256 (qemu/5.0.0/qemu-5.0.0.tar.xz) = 2f13a92a0fa5c8b69ff0796b59b86b080bbb92ebad5d301a7724dd06b5e78cb6
+SIZE (qemu/5.0.0/qemu-5.0.0.tar.xz) = 62426192
+SHA256 (qemu/5.0.0/55765822804f.patch) = 10c2cc93ad01b02d854e26a9e445ba22bb5434dda1ef25baeb979be6292fa8ef
+SIZE (qemu/5.0.0/55765822804f.patch) = 2271
+SHA256 (qemu/5.0.0/aa4d30f6618d.patch) = eeddc5f5e08a460d2c133b4193d115fa1f00f206e0833f33ec66379981473efe
+SIZE (qemu/5.0.0/aa4d30f6618d.patch) = 2211

Added: head/emulators/qemu50/files/patch-Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/patch-Makefile	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,45 @@
+--- Makefile.orig	2020-04-28 16:49:25 UTC
++++ Makefile
+@@ -362,6 +362,10 @@ MANUAL_BUILDDIR := docs
+ endif
+ 
+ ifdef BUILD_DOCS
++ifdef NOPORTDOCS
++DOCS=qemu.1 qemu-img.1 qemu-nbd.8 qemu-ga.8
++DOCS+=docs/interop/qemu-qmp-ref.7 docs/interop/qemu-ga-ref.7
++else
+ DOCS+=$(MANUAL_BUILDDIR)/system/qemu.1
+ DOCS+=$(MANUAL_BUILDDIR)/tools/qemu-img.1
+ DOCS+=$(MANUAL_BUILDDIR)/tools/qemu-nbd.8
+@@ -369,6 +373,7 @@ DOCS+=$(MANUAL_BUILDDIR)/interop/qemu-ga.8
+ ifeq ($(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyy)
+ DOCS+=$(MANUAL_BUILDDIR)/tools/virtiofsd.1
+ endif
++endif
+ DOCS+=$(MANUAL_BUILDDIR)/system/qemu-block-drivers.7
+ DOCS+=docs/interop/qemu-qmp-ref.html docs/interop/qemu-qmp-ref.txt docs/interop/qemu-qmp-ref.7
+ DOCS+=docs/interop/qemu-ga-ref.html docs/interop/qemu-ga-ref.txt docs/interop/qemu-ga-ref.7
+@@ -878,10 +883,12 @@ install-sphinxdocs: sphinxdocs
+ 	$(call install-manual,user)
+ 
+ install-doc: $(DOCS) install-sphinxdocs
++ifndef NOPORTDOCS
+ 	$(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)"
+ 	$(INSTALL_DATA) $(MANUAL_BUILDDIR)/index.html "$(DESTDIR)$(qemu_docdir)"
+ 	$(INSTALL_DATA) docs/interop/qemu-qmp-ref.html "$(DESTDIR)$(qemu_docdir)"
+ 	$(INSTALL_DATA) docs/interop/qemu-qmp-ref.txt "$(DESTDIR)$(qemu_docdir)"
++endif
+ ifdef CONFIG_POSIX
+ 	$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
+ 	$(INSTALL_DATA) $(MANUAL_BUILDDIR)/system/qemu.1 "$(DESTDIR)$(mandir)/man1"
+@@ -899,8 +906,10 @@ ifdef CONFIG_TRACE_SYSTEMTAP
+ endif
+ ifneq (,$(findstring qemu-ga,$(TOOLS)))
+ 	$(INSTALL_DATA) $(MANUAL_BUILDDIR)/interop/qemu-ga.8 "$(DESTDIR)$(mandir)/man8"
++ifndef NOPORTDOCS
+ 	$(INSTALL_DATA) docs/interop/qemu-ga-ref.html "$(DESTDIR)$(qemu_docdir)"
+ 	$(INSTALL_DATA) docs/interop/qemu-ga-ref.txt "$(DESTDIR)$(qemu_docdir)"
++endif
+ 	$(INSTALL_DATA) docs/interop/qemu-ga-ref.7 "$(DESTDIR)$(mandir)/man7"
+ endif
+ endif

Added: head/emulators/qemu50/files/patch-configure
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/patch-configure	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,166 @@
+--- configure.orig	2020-04-28 16:49:25 UTC
++++ configure
+@@ -408,7 +408,7 @@ LDFLAGS_SHARED="-shared"
+ modules="no"
+ module_upgrades="no"
+ prefix="/usr/local"
+-mandir="\${prefix}/share/man"
++mandir="\${prefix}/man"
+ datadir="\${prefix}/share"
+ firmwarepath="\${prefix}/share/qemu-firmware"
+ qemu_docdir="\${prefix}/share/doc/qemu"
+@@ -493,6 +493,9 @@ numa=""
+ tcmalloc="no"
+ jemalloc="no"
+ replication="yes"
++pcap="no"
++pcap_create="no"
++bpf="no"
+ vxhs=""
+ bochs="yes"
+ cloop="yes"
+@@ -1168,6 +1171,10 @@ for opt do
+   ;;
+   --enable-vnc-png) vnc_png="yes"
+   ;;
++  --enable-pcap) pcap="yes"
++  ;;
++  --disable-pcap) pcap="no"
++  ;;
+   --disable-slirp) slirp="no"
+   ;;
+   --enable-slirp=git) slirp="git"
+@@ -3137,6 +3144,14 @@ if ! check_include "ifaddrs.h" ; then
+ fi
+ 
+ ##########################################
++# getifaddrs (for tests/test-io-channel-socket )
++
++have_ifaddrs_h=yes
++if ! check_include "ifaddrs.h" ; then
++  have_ifaddrs_h=no
++fi
++
++##########################################
+ # VTE probe
+ 
+ if test "$vte" != "no"; then
+@@ -3806,7 +3821,7 @@ for i in $glib_modules; do
+         glib_libs=$($pkg_config --libs $i)
+         QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
+         LIBS="$glib_libs $LIBS"
+-        libs_qga="$glib_libs $libs_qga"
++        libs_qga="$glib_libs -lintl $libs_qga"
+     else
+         error_exit "glib-$glib_req_ver $i is required to compile QEMU"
+     fi
+@@ -4957,14 +4972,6 @@ if test "$docs" != "no" ; then
+   fi
+   if has makeinfo && has pod2man && test "$sphinx_ok" = "yes"; then
+     docs=yes
+-  else
+-    if test "$docs" = "yes" ; then
+-      if has $sphinx_build && test "$sphinx_ok" != "yes"; then
+-        echo "Warning: $sphinx_build exists but it is either too old or uses too old a Python version" >&2
+-      fi
+-      feature_not_found "docs" "Install texinfo, Perl/perl-podlators and a Python 3 version of python-sphinx"
+-    fi
+-    docs=no
+   fi
+ fi
+ 
+@@ -5098,7 +5105,7 @@ fi
+ 
+ # check for libusb
+ if test "$libusb" != "no" ; then
+-    if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
++    if $pkg_config libusb-1.0; then
+         libusb="yes"
+         libusb_cflags=$($pkg_config --cflags libusb-1.0)
+         libusb_libs=$($pkg_config --libs libusb-1.0)
+@@ -5501,7 +5508,51 @@ if test "$debug_stack_usage" = "yes"; then
+   fi
+ fi
+ 
++##########################################
++# pcap probe
+ 
++if test "$pcap" = "yes" -a "$pcap" != "no"; then
++  cat > $TMPC << EOF
++#include <pcap.h>
++int main(void) { return (pcap_lib_version() == (char *)0 ? 1 : 0); }
++EOF
++  if test "$mingw32" = "no" ; then
++    libpcap=-lpcap
++  else
++    libpcap=-lwpcap
++  fi
++  if compile_prog "" "$libpcap" ; then
++    :
++  else
++    echo
++    echo "Error: Could not find pcap"
++    echo "Make sure to have the pcap libs and headers installed."
++    echo
++    exit 1
++  fi
++  cat > $TMPC << EOF
++#include <pcap.h>
++int main(void)
++{
++  char errbuf[PCAP_ERRBUF_SIZE];
++  return (pcap_create("foo", errbuf) == (pcap_t *)0 ? 1 : 0);
++}
++EOF
++  if compile_prog "" "$libpcap" ; then
++    pcap_create="yes"
++  fi
++  cat > $TMPC << EOF
++#define PCAP_DONT_INCLUDE_PCAP_BPF_H
++#include <pcap.h>
++#include <net/bpf.h>
++int main(void) { return (BPF_MAJOR_VERSION); }
++EOF
++  if compile_prog ; then
++    bpf="yes"
++  fi
++  libs_softmmu="$libpcap $libs_softmmu"
++fi # test "$pcap"
++
+ ##########################################
+ # check if we have open_by_handle_at
+ 
+@@ -6627,6 +6678,7 @@ echo "Audio drivers     $audio_drv_list"
+ echo "Block whitelist (rw) $block_drv_rw_whitelist"
+ echo "Block whitelist (ro) $block_drv_ro_whitelist"
+ echo "VirtFS support    $virtfs"
++echo "pcap support      $pcap"
+ echo "Multipath support $mpath"
+ echo "VNC support       $vnc"
+ if test "$vnc" = "yes" ; then
+@@ -6864,6 +6916,15 @@ fi
+ if test "$want_tools" = "yes" ; then
+   echo "CONFIG_TOOLS=y" >> $config_host_mak
+ fi
++if test "$pcap" = "yes" ; then
++  echo "CONFIG_PCAP=y" >> $config_host_mak
++  if test "$pcap_create" = "yes" ; then
++    echo "CONFIG_PCAP_CREATE=y" >> $config_host_mak
++  fi
++  if test "$bpf" = "yes" ; then
++    echo "CONFIG_BPF=y" >> $config_host_mak
++  fi
++fi
+ if test "$slirp" != "no"; then
+   echo "CONFIG_SLIRP=y" >> $config_host_mak
+   echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
+@@ -7120,6 +7181,9 @@ fi
+ # if this macro is set.
+ if test "$have_fsxattr" = "yes" ; then
+     echo "HAVE_FSXATTR=y" >> $config_host_mak
++fi
++if test "$have_ifaddrs_h" = "yes" ; then
++    echo "HAVE_IFADDRS_H=y" >> $config_host_mak
+ fi
+ if test "$have_copy_file_range" = "yes" ; then
+     echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak

Added: head/emulators/qemu50/files/patch-disas_libvixl_vixl_a64_disasm-a64.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/patch-disas_libvixl_vixl_a64_disasm-a64.cc	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,11 @@
+--- disas/libvixl/vixl/a64/disasm-a64.cc.orig	2019-04-23 18:14:45 UTC
++++ disas/libvixl/vixl/a64/disasm-a64.cc
+@@ -2693,7 +2693,7 @@ void Disassembler::AppendPCRelativeOffsetToOutput(cons
+   if (offset < 0) {
+     abs_offset = -abs_offset;
+   }
+-  AppendToOutput("#%c0x%" PRIx64, sign, abs_offset);
++  AppendToOutput("#%c0x%" PRIx64, sign, offset < 0 ? -offset : offset);
+ }
+ 
+ 

Added: head/emulators/qemu50/files/patch-include_net_net.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/patch-include_net_net.h	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,13 @@
+--- include/net/net.h.orig	2020-04-28 16:49:24 UTC
++++ include/net/net.h
+@@ -208,8 +208,8 @@ void netdev_add(QemuOpts *opts, Error **errp);
+ int net_hub_id_for_client(NetClientState *nc, int *id);
+ NetClientState *net_hub_port_find(int hub_id);
+ 
+-#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
+-#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
++#define DEFAULT_NETWORK_SCRIPT PREFIX "/etc/qemu-ifup"
++#define DEFAULT_NETWORK_DOWN_SCRIPT PREFIX "/etc/qemu-ifdown"
+ #define DEFAULT_BRIDGE_HELPER CONFIG_QEMU_HELPERDIR "/qemu-bridge-helper"
+ #define DEFAULT_BRIDGE_INTERFACE "br0"
+ 

Added: head/emulators/qemu50/files/patch-include_qemu_atomic.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/patch-include_qemu_atomic.h	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,41 @@
+--- include/qemu/atomic.h.orig	2020-04-28 16:49:24 UTC
++++ include/qemu/atomic.h
+@@ -228,10 +228,12 @@
+ /* And even shorter names that return void.  */
+ #define atomic_inc(ptr)    ((void) __atomic_fetch_add(ptr, 1, __ATOMIC_SEQ_CST))
+ #define atomic_dec(ptr)    ((void) __atomic_fetch_sub(ptr, 1, __ATOMIC_SEQ_CST))
++#ifndef __cplusplus
+ #define atomic_add(ptr, n) ((void) __atomic_fetch_add(ptr, n, __ATOMIC_SEQ_CST))
+ #define atomic_sub(ptr, n) ((void) __atomic_fetch_sub(ptr, n, __ATOMIC_SEQ_CST))
+ #define atomic_and(ptr, n) ((void) __atomic_fetch_and(ptr, n, __ATOMIC_SEQ_CST))
+ #define atomic_or(ptr, n)  ((void) __atomic_fetch_or(ptr, n, __ATOMIC_SEQ_CST))
++#endif
+ #define atomic_xor(ptr, n) ((void) __atomic_fetch_xor(ptr, n, __ATOMIC_SEQ_CST))
+ 
+ #else /* __ATOMIC_RELAXED */
+@@ -406,10 +408,12 @@
+ 
+ #define atomic_inc_fetch(ptr)  __sync_add_and_fetch(ptr, 1)
+ #define atomic_dec_fetch(ptr)  __sync_add_and_fetch(ptr, -1)
++#ifndef __cplusplus
+ #define atomic_add_fetch(ptr, n) __sync_add_and_fetch(ptr, n)
+ #define atomic_sub_fetch(ptr, n) __sync_sub_and_fetch(ptr, n)
+ #define atomic_and_fetch(ptr, n) __sync_and_and_fetch(ptr, n)
+ #define atomic_or_fetch(ptr, n) __sync_or_and_fetch(ptr, n)
++#endif
+ #define atomic_xor_fetch(ptr, n) __sync_xor_and_fetch(ptr, n)
+ 
+ #define atomic_cmpxchg(ptr, old, new) __sync_val_compare_and_swap(ptr, old, new)
+@@ -418,10 +422,12 @@
+ /* And even shorter names that return void.  */
+ #define atomic_inc(ptr)        ((void) __sync_fetch_and_add(ptr, 1))
+ #define atomic_dec(ptr)        ((void) __sync_fetch_and_add(ptr, -1))
++#ifndef __cplusplus
+ #define atomic_add(ptr, n)     ((void) __sync_fetch_and_add(ptr, n))
+ #define atomic_sub(ptr, n)     ((void) __sync_fetch_and_sub(ptr, n))
+ #define atomic_and(ptr, n)     ((void) __sync_fetch_and_and(ptr, n))
+ #define atomic_or(ptr, n)      ((void) __sync_fetch_and_or(ptr, n))
++#endif
+ #define atomic_xor(ptr, n)     ((void) __sync_fetch_and_xor(ptr, n))
+ 
+ #endif /* __ATOMIC_RELAXED */

Added: head/emulators/qemu50/files/patch-net_tap-bsd.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/patch-net_tap-bsd.c	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,10 @@
+--- net/tap-bsd.c.orig	2019-04-23 18:14:46 UTC
++++ net/tap-bsd.c
+@@ -31,6 +31,7 @@
+ 
+ #if defined(__NetBSD__) || defined(__FreeBSD__)
+ #include <sys/ioctl.h>
++#include <sys/socket.h>
+ #include <net/if.h>
+ #include <net/if_tap.h>
+ #endif

Added: head/emulators/qemu50/files/pcap-patch-net_clients.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/pcap-patch-net_clients.h	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,13 @@
+--- net/clients.h.orig	2018-04-24 16:30:47 UTC
++++ net/clients.h
+@@ -61,4 +61,10 @@ int net_init_netmap(const Netdev *netdev, const char *
+ int net_init_vhost_user(const Netdev *netdev, const char *name,
+                         NetClientState *peer, Error **errp);
+ 
++#ifdef CONFIG_PCAP
++int net_init_pcap(const Netdev *netdev, const char *name,
++                    NetClientState *peer, Error **errp);
++#endif
++
++
+ #endif /* QEMU_NET_CLIENTS_H */

Added: head/emulators/qemu50/files/pcap-patch-net_net.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/pcap-patch-net_net.c	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,250 @@
+--- net/net.c.orig	2018-04-24 16:30:47 UTC
++++ net/net.c
+@@ -52,6 +52,11 @@
+ #include "net/filter.h"
+ #include "qapi/string-output-visitor.h"
+ 
++#include <sys/ioctl.h>
++#ifdef __FreeBSD__
++#include <net/if.h>
++#endif
++
+ /* Net bridge is currently not supported for W32. */
+ #if !defined(_WIN32)
+ # define CONFIG_NET_BRIDGE
+@@ -929,7 +934,225 @@ static int net_init_nic(const Netdev *netdev, const ch
+     return idx;
+ }
+ 
++#if defined(CONFIG_PCAP)
++#if defined(CONFIG_BPF)
++#define PCAP_DONT_INCLUDE_PCAP_BPF_H
++#include <net/bpf.h>
++#endif
++#include <pcap.h>
+ 
++struct PCAPState {
++    NetClientState     nc;
++    pcap_t            *handle;
++    int                max_eth_frame_size;
++};
++
++static ssize_t pcap_receive(NetClientState *nc, const uint8_t *buf, size_t size)
++{
++    struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
++
++    return pcap_inject(s->handle, (u_char*)buf, size);
++}
++
++static void pcap_callback(u_char *user, struct pcap_pkthdr *phdr, u_char *pdata
++		)
++{
++    NetClientState *nc = (NetClientState *)user;
++
++    int len = phdr->len;
++#ifdef __FreeBSD__
++    struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
++    int max_eth_frame_size = s->max_eth_frame_size;
++
++    if (len > max_eth_frame_size) {
++        fprintf(stderr,
++            "pcap_send: packet size > %d (%d), truncating\n",
++            max_eth_frame_size, len);
++        len = max_eth_frame_size;
++    }
++#endif
++    qemu_send_packet(nc, pdata, len);
++}
++
++static void pcap_send(void *opaque)
++{
++    struct PCAPState *s = (struct PCAPState *)opaque;
++
++    for (;;) {
++        if (pcap_dispatch(s->handle, 0, (pcap_handler)&pcap_callback, (u_char *)&s->nc) >= 0)
++            break;
++    }
++}
++
++static void pcap_cleanup(NetClientState *nc)
++{
++    struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
++
++    qemu_purge_queued_packets(nc);
++    pcap_close(s->handle);
++}
++
++static NetClientInfo net_pcap_info = {
++    .type = NET_CLIENT_DRIVER_PCAP,
++    .size = sizeof(struct PCAPState),
++    .receive = pcap_receive,
++//    .receive_raw = pcap_receive_raw,
++//    .receive_iov = pcap_receive_iov,
++//    .poll = pcap_poll,
++    .cleanup = pcap_cleanup,
++};
++/*
++ * ... -net pcap,ifname="..."
++ */
++
++int net_init_pcap(const Netdev *netdev,
++    const char *name, NetClientState *peer, Error **errp)
++{
++    const NetdevPcapOptions *pcap_opts;
++    NetClientState *nc;
++    struct PCAPState *s;
++    const char *ifname;
++    char errbuf[PCAP_ERRBUF_SIZE];
++#if defined(_WIN32)
++    HANDLE h;
++#endif
++    int i;
++
++    assert(netdev->type == NET_CLIENT_DRIVER_PCAP);
++    pcap_opts = &netdev->u.pcap;
++    if (!pcap_opts->has_ifname)
++        return -1;
++
++    ifname = pcap_opts->ifname;
++
++    /* create the object */
++    nc = qemu_new_net_client(&net_pcap_info, peer, "pcap", ifname);
++    s = DO_UPCAST(struct PCAPState, nc, nc);
++
++    if (ifname == NULL && (ifname = pcap_lookupdev(errbuf)) == NULL) {
++        fprintf(stderr, "qemu: pcap_create: %s\n", errbuf);
++        goto fail;
++    }
++ 
++#ifdef __FreeBSD__
++    /*
++     * We want to avoid passing oversize packets to the guest, which
++     * at least on FreeBSD can happen if the host interface uses tso
++     * (seen with an em(4) in this case) - so find out the host
++    * interface's mtu and assume the guest is configured the same.
++     */
++    s->max_eth_frame_size = 1514;
++    i = socket(AF_INET, SOCK_DGRAM, 0);
++    if (i >= 0) {
++        struct ifreq ifr;
++
++        (void) memset(&ifr, 0, sizeof(ifr));
++        strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
++        if (ioctl(i, SIOCGIFMTU, &ifr) != -1)
++            s->max_eth_frame_size = ifr.ifr_mtu + 14;
++        close(i);
++    }
++#endif
++
++#if defined(CONFIG_PCAP_CREATE) || defined(_WIN32)
++    /*
++     * Create pcap handle for the device, set promiscuous mode and activate.
++     */
++    s->handle = (void *)pcap_create(ifname, errbuf);
++    if (!s->handle) {
++        fprintf(stderr, "qemu: pcap_create: %s\n", errbuf);
++        goto fail;
++    }
++    if (pcap_set_promisc(s->handle, 1) != 0) {
++        pcap_perror(s->handle, (char *)"qemu: pcap_set_promisc:");
++        goto fail;
++    }
++   if (pcap_activate(s->handle) != 0) {
++        pcap_perror(s->handle, (char *)"qemu: pcap_activate:");
++        goto fail;
++    }
++#else
++    /* Attempt to connect device. */
++    s->handle = (void *)pcap_open_live(ifname, 65535, 1, 0, errbuf);
++    if (!s->handle) {
++        fprintf(stderr, "qemu: pcap_open_live: %s\n", errbuf);
++        goto fail;
++    }
++#endif
++
++    /* Set non-blocking mode. */
++    if (pcap_setnonblock(s->handle, 1, errbuf) < 0) {
++        fprintf(stderr, "qemu: pcap_setnonblock: %s\n", errbuf);
++        goto fail;
++    }
++
++#if defined(_WIN32)
++    /*
++     * Tell the kernel that the packet has to be seen immediately.
++     */
++    if (pcap_setmintocopy(s->handle, 0) < 0) {
++        fprintf(stderr, "qemu: pcap failed to set immediate mode\n");
++        goto fail;
++    }
++#else /* !_WIN32 */
++#if defined(CONFIG_BPF)
++#if defined(BIOCIMMEDIATE)
++    /*
++     * Tell the kernel that the packet has to be seen immediately.
++     */
++    {
++        unsigned int one = 1;
++        if (ioctl(pcap_fileno(s->handle), BIOCIMMEDIATE, &one) < 0) {
++            fprintf(stderr, "qemu: pcap failed to set immediate mode\n");
++            goto fail;
++        }
++    }
++#endif /* BIOCIMMEDIATE */
++#if defined(BIOCFEEDBACK)
++    /*
++     * Tell the kernel that the sent packet has to be fed back.
++     * This is necessary to connect host and guest.
++     */
++    {
++        unsigned int one = 1;
++        if (ioctl(pcap_fileno(s->handle), BIOCFEEDBACK, &one) < 0) {
++            fprintf(stderr, "qemu: pcap failed to set feedback mode\n");
++            goto fail;
++        }
++    }
++#endif /* BIOCFEEDBACK */
++#endif /* CONFIG_BPF */
++#endif /* _WIN32 */
++
++    snprintf(s->nc.info_str, sizeof(s->nc.info_str), "pcap redirector");
++
++#if defined(_WIN32)
++    if ((h = pcap_getevent(s->handle)) == NULL) {
++        fprintf(stderr, "qemu: pcap_getevent failed\n");
++        goto fail;
++    }
++    qemu_add_wait_object(h, pcap_send, s);
++#else /* !_WIN32 */
++    if ((i = pcap_get_selectable_fd(s->handle)) < 0) {
++        fprintf(stderr, "qemu: pcap_get_selectable_fd failed\n");
++        goto fail;
++    }
++    qemu_set_fd_handler(i, pcap_send, NULL, s);
++#endif /* _WIN32 */
++
++    return 0;
++
++fail:
++    if (s) {
++        if (s->handle)
++            pcap_close(s->handle);
++    }
++
++    return -1;
++}
++
++#endif
++ 
+ static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
+     const Netdev *netdev,
+     const char *name,
+@@ -955,6 +1178,9 @@ static int (* const net_client_init_fun[NET_CLIENT_DRI
+ #endif
+ #ifdef CONFIG_L2TPV3
+         [NET_CLIENT_DRIVER_L2TPV3]    = net_init_l2tpv3,
++#endif
++#ifdef CONFIG_PCAP
++	[NET_CLIENT_DRIVER_PCAP]      = net_init_pcap,
+ #endif
+ };
+ 

Added: head/emulators/qemu50/files/pcap-patch-qapi_net.json
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/pcap-patch-qapi_net.json	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,56 @@
+--- qapi/net.json.orig	2018-04-24 16:30:47 UTC
++++ qapi/net.json
+@@ -388,6 +388,19 @@
+     '*helper': 'str' } }
+ 
+ ##
++# @NetdevPcapOptions:
++#
++# Use ifname as a source to capture
++#
++# @ifname: #required to determine which interface to capture
++#
++# Since: 1.2
++##
++{ 'struct': 'NetdevPcapOptions',
++  'data': {
++    '*ifname':     'str' } }
++
++##
+ # @NetdevHubPortOptions:
+ #
+ # Connect two or more net clients through a software hub.
+@@ -454,7 +467,7 @@
+ ##
+ { 'enum': 'NetClientDriver',
+   'data': [ 'none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde',
+-            'bridge', 'hubport', 'netmap', 'vhost-user' ] }
++            'bridge', 'hubport', 'netmap', 'vhost-user', 'pcap' ] }
+ 
+ ##
+ # @Netdev:
+@@ -478,6 +491,7 @@
+     'user':     'NetdevUserOptions',
+     'tap':      'NetdevTapOptions',
+     'l2tpv3':   'NetdevL2TPv3Options',
++    'pcap':     'NetdevPcapOptions',
+     'socket':   'NetdevSocketOptions',
+     'vde':      'NetdevVdeOptions',
+     'bridge':   'NetdevBridgeOptions',
+@@ -514,7 +528,7 @@
+ ##
+ { 'enum': 'NetLegacyOptionsType',
+   'data': ['none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde',
+-           'bridge', 'netmap', 'vhost-user'] }
++           'bridge', 'netmap', 'vhost-user', 'pcap'] }
+ 
+ ##
+ # @NetLegacyOptions:
+@@ -532,6 +546,7 @@
+     'user':     'NetdevUserOptions',
+     'tap':      'NetdevTapOptions',
+     'l2tpv3':   'NetdevL2TPv3Options',
++    'pcap':     'NetdevPcapOptions',
+     'socket':   'NetdevSocketOptions',
+     'vde':      'NetdevVdeOptions',
+     'bridge':   'NetdevBridgeOptions',

Added: head/emulators/qemu50/files/qemu-ifdown.sample
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/qemu-ifdown.sample	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec true

Added: head/emulators/qemu50/files/qemu-ifup.sample
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/files/qemu-ifup.sample	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec true

Added: head/emulators/qemu50/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/pkg-descr	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,19 @@
+QEMU is a FAST! processor emulator using dynamic translation to achieve
+good emulation speed.
+QEMU has two operating modes:
+
+    * Full system emulation. In this mode, QEMU emulates a full system
+(for example a PC), including a processor and various peripherials.
+It can be used to launch different Operating Systems without rebooting
+the PC or to debug system code.
+    * User mode emulation (Linux host only). In this mode, QEMU can launch
+Linux processes compiled for one CPU on another CPU. It can be used to
+launch the Wine Windows API emulator or to ease cross-compilation and
+cross-debugging.
+
+As QEMU requires no host kernel patches to run, it is very safe and easy to use.
+
+See also the preconfigured system images on http://oszoo.org/
+Many live cd isos also work.
+
+WWW: http://wiki.qemu.org/Main_Page

Added: head/emulators/qemu50/pkg-message
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/qemu50/pkg-message	Sat Jul 18 22:48:23 2020	(r542535)
@@ -0,0 +1,188 @@
+[
+{ type: install
+  message: <<EOM
+FreeBSD host notes
+==================
+
+- Needs to set net.link.tap.user_open sysctl in order to use /dev/tap*
+  networking as non-root.  Don't forget to adjust device node permissions in
+  /etc/devfs.rules.
+
+- slirp (usermode networking) is fixed now in cvs, on FreeSBIE 1.0 guests you
+  still have to manually do: echo nameserver 10.0.2.3 >/etc/resolv.conf but
+  i've been told that that's normal.  (fixed on FreeSBIE 1.1.) And you have
+  to wait a bit for dhclient to do its thing; traffic to address 10.0.2.2 is
+  routed to 127.1 on the host.
+
+- Expect timer problems when guest kernel HZ is > hosts, for example time
+  sleep 1 takes 49 seconds and booting sleeps for minutes at the acd0 probe
+  with a FreeSBIE 1.0 guest, thats because its kernel is built with HZ=5000,
+  and FreeBSD's default is 100...  (no longer a problem with FreeSBIE 1.1.)
+  The linux 2.6 kernel uses 1000 by default btw.  (changed to 250 later, and
+  recent linux kernels now no longer have a fixed HZ, aka `tickless
+  kernel'...)  Enabling /dev/rtc doesn't seem to help either (not included
+  since it needs a patch to emulators/rtc.)
+
+- Update: the above problem has gotten worse with FreeBSD guests
+  somewhere before 8.0, mainly since the kernel now usually wants
+  double or even quadruple number of timer irqs compared to HZ if
+  it detects an apic (and at least early versions of FreeBSD 8 had
+  a bug that essentially halved qemu's clock rate too); the only
+  reason you usually don't see symptoms of this with FreeBSD 8
+  guests is they automatically reduce their HZ to 100 when running
+  in a VM while the default for the host kernel is still HZ=1000.
+  Workaround: you can disable the apic clock in the guest by setting
+
+	hint.apic.0.clock="0"
+
+  in loader.conf(5) (or manually at the loader prompt), if that
+  doesn't work the only things you can do is either reduce the
+  guest's HZ to, say, 100 by setting e.g.
+
+	kern.hz="100"
+
+  from the loader as above (which usually is a good idea in a VM
+  anyway and FreeBSD 8 now does by itself as mentioned), or otherwise
+  increase the host's HZ to 2000 or even 4000 from the loader in
+  the same way.
+
+- The -smb option (smb-export local dir to guest using the default
+  slirp networking) needs the samba port/package installed
+  in addition to qemu. (SAMBA knob.)
+
+- If you want to use usb devices connected to the host in the guest
+  yot need either recent 10-current (not tested yet much) or you can
+  use usbredir over the network (see below); also unless you are
+  running qemu as root you then need to fix permissions for /dev/ugen*
+  device nodes: if you are on 5.x or later (devfs) put a rule in
+  /etc/devfs.rules, activate it in /etc/rc.conf and run /etc/rc.d/devfs
+  restart.  Example devfs.rules:
+
+	[ugen_ruleset=20]
+	add path 'ugen*' mode 660 group operator
+
+  corresponding rc.conf line:
+
+	devfs_system_ruleset="ugen_ruleset"
+
+- If you want to test the new (in 0.15.0) usb network redirection (USBREDIR
+  option) see this thread by Hans de Goede <hdegoede <at> redhat.com>:
+
+	http://thread.gmane.org/gmane.comp.emulators.qemu/110176/focus=110183
+
+  Quote:
+
+  Example usage:
+
+  1) Start usbredirserver for a usb device:
+  sudo usbredirserver 045e:0772
+  2) Start qemu with usb2 support + a chardev talking to usbredirserver +
+     a usb-redir device using this chardev:
+  qemu -usb \
+    -readconfig docs/ich9-ehci-uhci.cfg \
+    -chardev socket,id=usbredirchardev,host=localhost,port=4000 \
+    -device usb-redir,chardev=usbredirchardev,id=usbredirdev ...
+
+  [you would replace docs/ich9-ehci-uhci.cfg with e.g.
+  /usr/local/share/doc/qemu/docs/ich9-ehci-uhci.cfg, but turns out
+  ehci was broken for me here with FreeBSD guests and the previous
+  qemu version at least, I got:
+
+	FETCHENTRY: entry at 22C5484 is of type 2 which is not supported yet
+processing error - resetting ehci HC
+	Assertion failed: (0), function ehci_advance_state, file /data/ports/emulators/qemu-devel/work/qemu-0.15.0/hw/usb-ehci.c, line 2045.
+
+  The new qemu version works better tho.]
+
+- Still usb: since the hub is no longer attached to the uchi controller and
+  the wakeup mechanism, resume interrupt is not implemented yet linux guests
+  will suspend the bus, i.e. they wont see devices usb_add'ed after its
+  (linux') uhci module got loaded.  Workaround: either add devices before
+  linux loads the module or rmmod and modprobe it afterwards.  [Not sure
+  if this still applies to the new libusb host code used on recent
+  10-current.]
+
+- If you get repeated `atapi_poll called!' console messages with FreeBSD
+  guests or other weird cdrom problems then thats probably because the guest
+  has atapicam loaded, which for reasons still to be determined has problems
+  with qemu's now by default enabled cdrom dma.  You can build the port with
+  CDROM_DMA disabled to disable it.  [Looks like this is fixed in recent
+  FreeBSD guest versions.]
+
+- If you build qemu wihout SDL and then get crashes running it try passing it
+  -nographic.  This should probably be default in that case...
+
+- qemu's network boot roms (-boot n) have a bug when bootfiles sizes are a
+  multiple of blksize, if this affects you (like with FreeBSD's /boot/pxeboot)
+  you can do like
+
+	cp /boot/pxeboot pxeboot-qemu && chmod +w pxeboot-qemu && echo >>pxeboot-qemu
+
+  and then use pxeboot-qemu.  Actually you need recent btx code
+  (from after 7.0 was released) because of the real mode boot
+  problem, so use at least pxeboot from there.  And I just did that
+  for the pxeboot extracted out of
+
+	ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/200805/7.0-STABLE-200805-i386-bootonly.iso
+
+  and placed it here:
+
+	http://people.freebsd.org/~nox/qemu/pxeboot-qemu
+
+- If you use slirp (usernet, the default) and want to mount nfs into the guest
+  and you are not running qemu as root, then mountd(8) on the exporting box
+  needs to be run with -n in order to accept requests from ports >= 1024.
+
+- (not FreeBSD-specific:) There have been reports of qcow2 corruption with (at
+  least) win2k guests on recent kvm (which uses similar qcow2 code than qemu
+  now, see this thread:
+
+	http://lists.gnu.org/archive/html/qemu-devel/2009-02/msg00713.html -
+
+  the consensus on that thread seems to be that qcow(2) code has always been

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



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