1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
7 SDESC[standard]= Fast CPU emulator and virtualizer for x86 platform
8 HOMEPAGE= https://www.qemu.org/
12 SITES[main]= https://download.qemu.org/
13 DISTFILE[1]= qemu-8.0.2.tar.xz:main
15 SPKGS[standard]= complete
21 OPTIONS_AVAILABLE= none
22 OPTIONS_STANDARD= none
24 BUILD_DEPENDS= gnutls:dev:standard
28 python-Sphinx:single:python_used
29 python-sphinx-rtd-theme:single:python_used
31 texi2html:primary:standard
32 BUILDRUN_DEPENDS= cyrus-sasl:primary:standard
33 gnutls:primary:standard
34 libepoxy:primary:standard
35 nettle:primary:standard
36 snappy:primary:standard
39 USES= cpe gmake pkgconfig bison perl:build python:build
40 jpeg png mesa ncurses makeinfo ninja curl fontconfig
42 GNOME_COMPONENTS= gdkpixbuf gtk2 vte
43 SDL_COMPONENTS= sdl2 image2
44 XORG_COMPONENTS= x11 xext
46 LICENSE= GPLv2:primary
47 LICENSE_TERMS= primary:{{WRKSRC}}/LICENSE
48 LICENSE_FILE= GPLv2:{{WRKSRC}}/COPYING
51 FPC_EQUIVALENT= emulators/qemu
54 CONFIGURE_ARGS= --disable-usb-redir
55 --disable-stack-protector
65 --python={{PYTHON_CMD}}
68 BUILD_WRKSRC= {{WRKSRC}}/build
69 MAKE_ENV= BSD_MAKE="{{MAKE}}"
72 INSTALL_WRKSRC= {{WRKSRC}}/build
73 PLIST_SUB= JQUERY=3.6.0
76 CFLAGS= -I{{NCURSESBASE}}/include/ncursesw
77 VAR_OPSYS[freebsd]= CONFIGURE_ARGS=--enable-netmap
78 CONFIGURE_ARGS=--disable-linux-user
79 CONFIGURE_ARGS=--disable-linux-aio
80 VAR_OPSYS[linux]= CONFIGURE_ARGS=--disable-netmap
81 CONFIGURE_ARGS=--disable-linux-user
82 VAR_OPSYS[dragonfly]= CONFIGURE_ARGS=--disable-netmap
83 CONFIGURE_ARGS=--disable-linux-user
84 CONFIGURE_ARGS=--disable-linux-aio
85 VAR_OPSYS[midnightbsd]= CONFIGURE_ARGS=--enable-netmap
86 CONFIGURE_ARGS=--disable-linux-user
87 CONFIGURE_ARGS=--disable-linux-aio
88 CONFIGURE_ARGS=--extra-ldflags=-lutil
91 # silence some include warnings
92 ${MKDIR} ${WRKSRC}/bsd-user/dragonfly
94 ${CP} -a ${WRKSRC}/bsd-user/freebsd ${WRKSRC}/bsd-user/midnightbsd
97 ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample \
98 ${STAGEDIR}${PREFIX}/etc
99 ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample \
100 ${STAGEDIR}${PREFIX}/etc
101 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/qemu-*
102 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/elf2dmp
103 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/share/qemu/palcode-clipper
104 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/share/qemu/hppa-firmware.img
105 (cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${STD_DOCDIR}/)
106 # remove sphinx leftovers
107 ${RM} -r ${STAGEDIR}${STD_DOCDIR}/docs/sphinx
108 # remove empty directories
109 ${RM} -r ${STAGEDIR}/var
111 pre-configure-dragonfly:
112 # On dragonfly, userland programs can't include <sys/disk.h>
113 ${REINPLACE_CMD} -e 's|sys/disk\.h|sys/skipdisk.h|' \
114 ${WRKSRC}/meson.build
116 [FILE:782:descriptions/desc.primary]
117 QEMU is a fast processor emulator using dynamic translation to achieve
118 good emulation speed. QEMU has two operating modes:
120 * Full system emulation. In this mode, QEMU emulates a full system (for
121 example a PC), including a processor and various peripherials. It can
122 be used to launch different Operating Systems without rebooting the PC
123 or to debug system code.
124 * User mode emulation (Linux host only). In this mode, QEMU can launch
125 Linux processes compiled for one CPU on another CPU. It can be used to
126 launch the Wine Windows API emulator or to ease cross-compilation and
129 As QEMU requires no host kernel patches to run, it is safe and easy to use.
131 See also the preconfigured system images on http://oszoo.org/
132 Many live cd isos also work.
136 f060abd435fbe6794125e2c398568ffc3cfa540042596907a8b18edca34cf6a5 126707132 qemu-8.0.2.tar.xz
139 [FILE:2936:manifests/plist.primary]
140 @sample etc/qemu-ifdown.sample
141 @sample etc/qemu-ifup.sample
150 %%ONLY-LINUX%%libexec/qemu-bridge-helper
151 %%ONLY-MIDNIGHTBSD%%bin/
169 qemu-system-loongarch64
171 qemu-system-microblaze
172 qemu-system-microblazeel
193 include/qemu-plugin.h
194 share/applications/qemu.desktop
195 share/icons/hicolor/128x128/apps/qemu.png
196 share/icons/hicolor/16x16/apps/qemu.png
197 share/icons/hicolor/24x24/apps/qemu.png
198 share/icons/hicolor/256x256/apps/qemu.png
199 share/icons/hicolor/32x32/apps/
202 share/icons/hicolor/48x48/apps/qemu.png
203 share/icons/hicolor/512x512/apps/qemu.png
204 share/icons/hicolor/64x64/apps/qemu.png
205 share/icons/hicolor/scalable/apps/qemu.svg
218 edk2-i386-secure-code.fd
222 edk2-x86_64-secure-code.fd
241 opensbi-riscv32-generic-fw_dynamic.bin
242 opensbi-riscv64-generic-fw_dynamic.bin
245 petalogix-s3adsp1800.dtb
261 u-boot-sam460-20100605.bin
264 vgabios-bochs-display.bin
275 50-edk2-i386-secure.json
276 50-edk2-x86_64-secure.json
318 [FILE:10515:manifests/plist.docs]
327 share/doc/qemu/_static/
328 _sphinx_javascript_frameworks_compat.js
332 documentation_options.js
344 share/doc/qemu/_static/css/
347 share/doc/qemu/_static/css/fonts/
348 Roboto-Slab-Bold.woff
349 Roboto-Slab-Bold.woff2
350 Roboto-Slab-Regular.woff
351 Roboto-Slab-Regular.woff2
352 fontawesome-webfont.eot
353 fontawesome-webfont.svg
354 fontawesome-webfont.ttf
355 fontawesome-webfont.woff
356 fontawesome-webfont.woff2
357 lato-bold-italic.woff
358 lato-bold-italic.woff2
361 lato-normal-italic.woff
362 lato-normal-italic.woff2
365 share/doc/qemu/_static/js/
367 html5shiv-printshiv.min.js
370 share/doc/qemu/about/
376 removed-features.html
377 share/doc/qemu/devel/
381 block-coroutine-wrapper.html
386 conflict-resolution.html
387 control-flow-integrity.html
404 multi-thread-tcg.html
412 secure-coding-practices.html
415 submitting-a-patch.html
416 submitting-a-pull-request.html
427 writing-monitor-commands.html
430 block-replication.txt
440 multi-thread-compression.txt
443 pci_expander_bridge.txt
450 qemu-option-trace.rst.inc
457 xen-save-devices-state.txt
458 share/doc/qemu/docs/_templates/footer.html
459 share/doc/qemu/docs/about/
466 share/doc/qemu/docs/config/
468 mach-virt-graphical.cfg
471 q35-virtio-graphical.cfg
472 q35-virtio-serial.cfg
473 share/doc/qemu/docs/devel/
479 block-coroutine-wrapper.rst
481 ci-definitions.rst.inc
487 conflict-resolution.rst
488 control-flow-integrity.rst
507 multiple-iothreads.txt
516 secure-coding-practices.rst
519 submitting-a-patch.rst
520 submitting-a-pull-request.rst
532 writing-monitor-commands.rst
533 share/doc/qemu/docs/interop/
541 live-block-operations.rst
551 qemu-storage-daemon-qmp-ref.rst
558 virtio-balloon-stats.rst
559 vnc-ledstate-pseudo-encoding.rst
560 share/doc/qemu/docs/specs/
564 acpi_hw_reduced_hotplug.rst
576 ppc-spapr-hotplug.rst
578 ppc-spapr-uv-hcalls.rst
583 sev-guest-firmware.rst
590 share/doc/qemu/docs/sphinx-static/
593 share/doc/qemu/docs/spin/
595 aio_notify_accept.promela
596 aio_notify_bug.promela
597 tcg-exclusive.promela
598 win32-qemu-event.promela
599 share/doc/qemu/docs/system/
603 confidential-guest-support.rst
605 cpu-models-mips.rst.inc
606 cpu-models-x86-abi.csv
607 cpu-models-x86.rst.inc
609 device-url-syntax.rst.inc
626 qemu-block-drivers.rst
627 qemu-block-drivers.rst.inc
635 target-i386-desc.rst.inc
649 virtio-net-failover.rst
651 share/doc/qemu/docs/system/arm/
685 share/doc/qemu/docs/system/devices/
698 share/doc/qemu/docs/system/i386/
699 amd-memory-encryption.rst
707 share/doc/qemu/docs/system/loongarch/virt.rst
708 share/doc/qemu/docs/system/openrisc/
713 share/doc/qemu/docs/system/ppc/
720 share/doc/qemu/docs/system/riscv/
721 microchip-icicle-kit.rst
725 share/doc/qemu/docs/system/s390x/
733 share/doc/qemu/docs/tools/
738 qemu-storage-daemon.rst
740 virtfs-proxy-helper.rst
741 share/doc/qemu/docs/user/
744 share/doc/qemu/interop/
751 live-block-operations.html
756 qemu-storage-daemon-qmp-ref.html
760 virtio-balloon-stats.html
761 vnc-ledstate-pseudo-encoding.html
762 share/doc/qemu/specs/
763 acpi_cpu_hotplug.html
766 acpi_hw_reduced_hotplug.html
767 acpi_mem_hotplug.html
769 acpi_pci_hotplug.html
772 ppc-spapr-hcalls.html
773 ppc-spapr-hotplug.html
775 ppc-spapr-uv-hcalls.html
778 sev-guest-firmware.html
780 share/doc/qemu/system/
784 confidential-guest-support.html
786 device-emulation.html
801 qemu-block-drivers.html
822 virtio-net-failover.html
824 share/doc/qemu/system/arm/
856 xlnx-versal-virt.html
858 share/doc/qemu/system/devices/
871 share/doc/qemu/system/i386/
872 amd-memory-encryption.html
880 share/doc/qemu/system/loongarch/virt.html
881 share/doc/qemu/system/openrisc/
886 share/doc/qemu/system/ppc/
893 share/doc/qemu/system/riscv/
894 microchip-icicle-kit.html
898 share/doc/qemu/system/s390x/
906 share/doc/qemu/tools/
911 qemu-storage-daemon.html
913 virtfs-proxy-helper.html
919 [FILE:333:manifests/plist.nls]
920 share/locale/bg/LC_MESSAGES/qemu.mo
921 share/locale/de_DE/LC_MESSAGES/qemu.mo
922 share/locale/fr_FR/LC_MESSAGES/qemu.mo
923 share/locale/hu/LC_MESSAGES/qemu.mo
924 share/locale/it/LC_MESSAGES/qemu.mo
925 share/locale/sv/LC_MESSAGES/qemu.mo
926 share/locale/tr/LC_MESSAGES/qemu.mo
927 share/locale/uk/LC_MESSAGES/qemu.mo
928 share/locale/zh_CN/LC_MESSAGES/qemu.mo
931 [FILE:416:manifests/plist.man]
932 %%ONLY-FREEBSD%%share/man/man7/qemu-ga-ref.7.gz
933 %%ONLY-FREEBSD%%share/man/man8/qemu-ga.8.gz
934 %%ONLY-LINUX%%share/man/man7/qemu-ga-ref.7.gz
935 %%ONLY-LINUX%%share/man/man8/qemu-ga.8.gz
938 qemu-storage-daemon.1.gz
941 qemu-block-drivers.7.gz
944 qemu-storage-daemon-qmp-ref.7.gz
950 [FILE:414:patches/patch-accel_tcg_translate-all.c]
951 --- accel/tcg/translate-all.c.orig 2023-05-31 01:02:04 UTC
952 +++ accel/tcg/translate-all.c
955 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
956 #include <sys/param.h>
957 -#if __FreeBSD_version >= 700104
958 +#if defined(__MidnightBSD__) || __FreeBSD_version >= 700104
959 #define HAVE_KINFO_GETVMMAP
960 #define sigqueue sigqueue_freebsd /* avoid redefinition */
961 #include <sys/proc.h>
964 [FILE:831:patches/patch-bsd-user_freebsd_os-sys.c]
965 --- bsd-user/freebsd/os-sys.c.orig 2023-05-31 01:02:04 UTC
966 +++ bsd-user/freebsd/os-sys.c
967 @@ -426,7 +426,9 @@ static abi_long do_freebsd_sysctl_oid(CP
969 case CTL_SYSCTL_NEXT:
970 case CTL_SYSCTL_NAME2OID:
971 +#ifdef CTL_SYSCTL_NEXTNOSKIP
972 case CTL_SYSCTL_NEXTNOSKIP:
975 * All of these return an OID array, so we need to convert to
977 @@ -439,7 +441,9 @@ static abi_long do_freebsd_sysctl_oid(CP
978 sysctl_oidfmt(holdp);
980 case CTL_SYSCTL_OIDDESCR:
981 +#ifdef CTL_SYSCTL_OIDLABEL
982 case CTL_SYSCTL_OIDLABEL:
985 /* Handle it based on the type */
986 h2g_old_sysctl(holdp, &holdlen, kind);
989 [FILE:546:patches/patch-configure]
990 --- configure.orig 2023-05-31 01:02:04 UTC
992 @@ -429,6 +429,8 @@ elif check_define __sun__ ; then
994 elif check_define __HAIKU__ ; then
996 +elif check_define __MidnightBSD__ ; then
998 elif check_define __FreeBSD__ ; then
1000 elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
1001 @@ -470,6 +472,10 @@ dragonfly)
1003 make="${MAKE-gmake}"
1007 + make="${MAKE-gmake}"
1011 make="${MAKE-gmake}"
1014 [FILE:2507:patches/patch-meson.build]
1015 --- meson.build.orig 2023-05-31 01:02:04 UTC
1017 @@ -58,8 +58,8 @@ config_host_data = configuration_data()
1019 qapi_trace_events = []
1021 -bsd_oses = ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'darwin']
1022 -supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux']
1023 +bsd_oses = ['midnightbsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'darwin']
1024 +supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux', 'dragonfly', 'midnightbsd']
1025 supported_cpus = ['ppc', 'ppc64', 's390x', 'riscv', 'x86', 'x86_64',
1026 'arm', 'aarch64', 'loongarch64', 'mips', 'mips64', 'sparc64']
1028 @@ -441,7 +441,7 @@ if get_option('hax').allowed()
1029 accelerators += 'CONFIG_HAX'
1032 -if targetos == 'netbsd'
1033 +if targetos in [ 'netbsd', 'dragonfly' ]
1034 nvmm = cc.find_library('nvmm', required: get_option('nvmm'))
1036 accelerators += 'CONFIG_NVMM'
1037 @@ -889,7 +889,7 @@ if have_system and get_option('curses').
1041 - curses_dep_list = targetos == 'windows' ? ['ncurses', 'ncursesw'] : ['ncursesw']
1042 + curses_dep_list = targetos == 'windows' ? ['ncurses', 'ncursesw'] : ['ncurses']
1043 curses = dependency(curses_dep_list,
1045 method: 'pkg-config',
1046 @@ -912,15 +912,16 @@ if have_system and get_option('curses').
1047 has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
1050 - curses_libname_list = (targetos == 'windows' ? ['pdcurses'] : ['ncursesw', 'cursesw'])
1051 + libtinfo = cc.find_library('tinfo', required: false, static: enable_static)
1052 + curses_libname_list = (targetos == 'windows' ? ['pdcurses'] : ['ncurses'])
1053 foreach curses_libname : curses_libname_list
1054 libcurses = cc.find_library(curses_libname,
1056 kwargs: static_kwargs)
1057 if libcurses.found()
1058 - if cc.links(curses_test, args: curses_compile_args, dependencies: libcurses)
1059 + if cc.links(curses_test, args: curses_compile_args, dependencies: [libncurses,libtinfo])
1060 curses = declare_dependency(compile_args: curses_compile_args,
1061 - dependencies: [libcurses])
1062 + dependencies: [libncurses, libtinfo])
1065 msg = 'curses library not usable'
1068 [FILE:385:patches/patch-meson_mesonbuild_mesonlib_universal.py]
1069 --- meson/mesonbuild/mesonlib/universal.py.orig 2023-05-31 01:02:48 UTC
1070 +++ meson/mesonbuild/mesonlib/universal.py
1071 @@ -658,7 +658,7 @@ def is_netbsd() -> bool:
1074 def is_freebsd() -> bool:
1075 - return platform.system().lower() == 'freebsd'
1076 + return platform.system().lower() in ('freebsd', 'midnightbsd')
1078 def is_irix() -> bool:
1079 return platform.system().startswith('irix')
1082 [FILE:454:patches/patch-net_tap-bsd.c]
1083 --- net/tap-bsd.c.orig 2023-05-31 01:02:04 UTC
1087 #if defined(__NetBSD__) || defined(__FreeBSD__)
1088 #include <sys/ioctl.h>
1089 +#include <sys/socket.h>
1091 #include <net/if_tap.h>
1093 +#if defined(__DragonFly)
1094 +#include <sys/ioctl.h>
1095 +#include <sys/socket.h>
1096 +#include <net/if.h>
1097 +#include <net/tap/if_tap.h>
1101 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
1104 [FILE:828:patches/patch-roms_u-boot_include_compiler.h]
1105 --- roms/u-boot/include/compiler.h.orig 2023-05-31 01:02:50 UTC
1106 +++ roms/u-boot/include/compiler.h
1108 defined(__NetBSD__) || \
1109 defined(__FreeBSD__) || \
1110 defined(__sun__) || \
1111 + defined(__DragonFly__) || \
1113 # include <inttypes.h>
1114 #elif defined(__linux__) || defined(__WIN32__) || defined(__MINGW32__) || defined(__OpenBSD__)
1117 # include <endian.h>
1118 # include <byteswap.h>
1119 -#elif defined(__MACH__) || defined(__FreeBSD__)
1120 +#elif defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__)
1121 # include <machine/endian.h>
1124 +#if defined(__FreeBSD__) || defined(__DragonFly__)
1125 # include <sys/endian.h> /* htole32 and friends */
1126 # define __BYTE_ORDER BYTE_ORDER
1127 # define __LITTLE_ENDIAN LITTLE_ENDIAN
1130 [FILE:311:patches/patch-roms_u-boot_lib_bch.c]
1131 --- roms/u-boot/lib/bch.c.orig 2023-05-31 01:02:50 UTC
1132 +++ roms/u-boot/lib/bch.c
1134 #include <linux/bitops.h>
1137 -#if defined(__FreeBSD__)
1138 +#if defined(__FreeBSD__) || defined(__DragonFly__)
1139 #include <sys/endian.h>
1140 #elif defined(__APPLE__)
1141 #include <machine/endian.h>
1144 [FILE:344:patches/patch-util_getauxval.c]
1145 --- util/getauxval.c.orig 2023-05-31 01:02:03 UTC
1146 +++ util/getauxval.c
1147 @@ -98,7 +98,7 @@ unsigned long qemu_getauxval(unsigned lo
1151 -#elif defined(__FreeBSD__)
1152 +#elif defined(__MidnightBSD__) || (defined(__FreeBSD__) && __FreeBSD_version__ > 1200001)
1153 #include <sys/auxv.h>
1155 unsigned long qemu_getauxval(unsigned long type)
1158 [FILE:7685:files/pkg-message-single]
1162 - Needs to set net.link.tap.user_open sysctl in order to use /dev/tap*
1163 networking as non-root. Don't forget to adjust device node permissions in
1166 - slirp (usermode networking) is fixed now in cvs, on FreeSBIE 1.0 guests you
1167 still have to manually do: echo nameserver 10.0.2.3 >/etc/resolv.conf but
1168 i've been told that that's normal. (fixed on FreeSBIE 1.1.) And you have
1169 to wait a bit for dhclient to do its thing; traffic to address 10.0.2.2 is
1170 routed to 127.1 on the host.
1172 - Expect timer problems when guest kernel HZ is > hosts, for example time
1173 sleep 1 takes 49 seconds and booting sleeps for minutes at the acd0 probe
1174 with a FreeSBIE 1.0 guest, thats because its kernel is built with HZ=5000,
1175 and FreeBSD's default is 100... (no longer a problem with FreeSBIE 1.1.)
1176 The linux 2.6 kernel uses 1000 by default btw. (changed to 250 later, and
1177 recent linux kernels now no longer have a fixed HZ, aka `tickless
1178 kernel'...) Enabling /dev/rtc doesn't seem to help either (not included
1179 since it needs a patch to emulators/rtc.)
1181 - Update: the above problem has gotten worse with FreeBSD guests
1182 somewhere before 8.0, mainly since the kernel now usually wants
1183 double or even quadruple number of timer irqs compared to HZ if
1184 it detects an apic (and at least early versions of FreeBSD 8 had
1185 a bug that essentially halved qemu's clock rate too); the only
1186 reason you usually don't see symptoms of this with FreeBSD 8
1187 guests is they automatically reduce their HZ to 100 when running
1188 in a VM while the default for the host kernel is still HZ=1000.
1189 Workaround: you can disable the apic clock in the guest by setting
1191 hint.apic.0.clock="0"
1193 in loader.conf(5) (or manually at the loader prompt), if that
1194 doesn't work the only things you can do is either reduce the
1195 guest's HZ to, say, 100 by setting e.g.
1199 from the loader as above (which usually is a good idea in a VM
1200 anyway and FreeBSD 8 now does by itself as mentioned), or otherwise
1201 increase the host's HZ to 2000 or even 4000 from the loader in
1204 - The -smb option (smb-export local dir to guest using the default
1205 slirp networking) needs the samba port/package installed
1206 in addition to qemu. (SAMBA knob.)
1208 - If you want to use usb devices connected to the host in the guest
1209 yot need either recent 10-current (not tested yet much) or you can
1210 use usbredir over the network (see below); also unless you are
1211 running qemu as root you then need to fix permissions for /dev/ugen*
1212 device nodes: if you are on 5.x or later (devfs) put a rule in
1213 /etc/devfs.rules, activate it in /etc/rc.conf and run /etc/rc.d/devfs
1214 restart. Example devfs.rules:
1217 add path 'ugen*' mode 660 group operator
1219 corresponding rc.conf line:
1221 devfs_system_ruleset="ugen_ruleset"
1223 - If you want to test the new (in 0.15.0) usb network redirection (USBREDIR
1224 option) see this thread by Hans de Goede <hdegoede <at> redhat.com>:
1226 http://thread.gmane.org/gmane.comp.emulators.qemu/110176/focus=110183
1232 1) Start usbredirserver for a usb device:
1233 sudo usbredirserver 045e:0772
1234 2) Start qemu with usb2 support + a chardev talking to usbredirserver +
1235 a usb-redir device using this chardev:
1237 -readconfig docs/ich9-ehci-uhci.cfg \
1238 -chardev socket,id=usbredirchardev,host=localhost,port=4000 \
1239 -device usb-redir,chardev=usbredirchardev,id=usbredirdev ...
1241 [you would replace docs/ich9-ehci-uhci.cfg with e.g.
1242 /raven/share/doc/qemu/docs/ich9-ehci-uhci.cfg, but turns out
1243 ehci was broken for me here with FreeBSD guests and the previous
1244 qemu version at least, I got:
1246 FETCHENTRY: entry at 22C5484 is of type 2 which is not supported yet processing error - resetting ehci HC
1247 Assertion failed: (0), function ehci_advance_state, file /data/ports/emulators/qemu-devel/work/qemu-0.15.0/hw/usb-ehci.c, line 2045.
1249 The new qemu version works better tho.]
1251 - Still usb: since the hub is no longer attached to the uchi controller and
1252 the wakeup mechanism, resume interrupt is not implemented yet linux guests
1253 will suspend the bus, i.e. they wont see devices usb_add'ed after its
1254 (linux') uhci module got loaded. Workaround: either add devices before
1255 linux loads the module or rmmod and modprobe it afterwards. [Not sure
1256 if this still applies to the new libusb host code used on recent
1259 - If you build qemu wihout SDL and then get crashes running it try passing it
1260 -nographic. This should probably be default in that case...
1262 - qemu's network boot roms (-boot n) have a bug when bootfiles sizes are a
1263 multiple of blksize, if this affects you (like with FreeBSD's /boot/pxeboot)
1266 cp /boot/pxeboot pxeboot-qemu && chmod +w pxeboot-qemu && echo >>pxeboot-qemu
1268 and then use pxeboot-qemu. Actually you need recent btx code
1269 (from after 7.0 was released) because of the real mode boot
1270 problem, so use at least pxeboot from there. And I just did that
1271 for the pxeboot extracted out of
1273 ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/200805/7.0-STABLE-200805-i386-bootonly.iso
1277 http://people.freebsd.org/~nox/qemu/pxeboot-qemu
1279 - If you use slirp (usernet, the default) and want to mount nfs into the guest
1280 and you are not running qemu as root, then mountd(8) on the exporting box
1281 needs to be run with -n in order to accept requests from ports >= 1024.
1283 - (not FreeBSD-specific:) There have been reports of qcow2 corruption with (at
1284 least) win2k guests on recent kvm (which uses similar qcow2 code than qemu
1285 now, see this thread:
1287 http://lists.gnu.org/archive/html/qemu-devel/2009-02/msg00713.html -
1289 the consensus on that thread seems to be that qcow(2) code has always been
1290 experimental and you should use raw images if you want reliability; raw is
1291 also usually faster.) You should be able to migrate existing images to raw
1292 using qemu-img(1)'s convert function; raw doesn't support advanced features
1293 like snapshots tho. [a few important qcow2 bugfixed have been committed in
1294 the meantime so this _might_ be less of an issue now; and meanwhile there
1295 also is the new qed format - I don't know how stable that one is.]
1297 - (also not FreeBSD-specific:) It is recommended to pass raw images using the
1298 new -drive syntax, specifying format=raw explicitly in order to avoid
1299 malicious guests being able to exploit the format autodetection thats
1300 otherwise getting used. (Not that you should run malicious guests anyway,
1301 but this eleminates at least a known attack vector.)
1303 - qemu now has improved physical cdrom support, but still there is at
1304 least one known problem: you need to have the guest eject the disc if you
1305 want to change it/take it out, or otherwise the guest may continue using
1306 state (like size) of the old disc. (You can also do like `change ide1-cd0
1307 /dev/acd0' in the monitor after taking out the disc if a guest cannot eject
1310 - The default configuration location (qemu-ifup script etc.) has been changed
1311 from /etc to PREFIX/etc (usually /raven/etc). Move your files accordingly.
1313 - The pcap code (-net nic... -net pcap,ifname=...) should work properly now,
1314 with only one exception: Advanced features like TSO used on the host
1315 interface can cause oversize packets which now do get truncated to avoid
1316 confusing/panicing guests but of course still will cause retransmissions.
1317 So if you see slow throughput and `pcap_send: packet size > ..., truncating'
1318 messages on qemu's tty try disabling TSO etc on the host interface at least
1322 [FILE:20:files/qemu-ifdown.sample]
1327 [FILE:20:files/qemu-ifup.sample]
1332 [FILE:323:dragonfly/patch-hw-ppc_newworld.c]
1333 --- hw/ppc/mac_newworld.c.orig 2023-05-31 01:02:04 UTC
1334 +++ hw/ppc/mac_newworld.c
1336 #include "hw/sysbus.h"
1339 +/* FreeBSD headers define this */
1344 #define MAX_IDE_BUS 2
1345 #define CFG_ADDR 0xf0000510
1346 #define TBFREQ (100UL * 1000UL * 1000UL)
1349 [FILE:334:dragonfly/patch-hw_ppc_mac__oldworld.c]
1350 --- hw/ppc/mac_oldworld.c.orig 2023-05-31 01:02:04 UTC
1351 +++ hw/ppc/mac_oldworld.c
1354 #define GRACKLE_BASE 0xfec00000
1356 +/* FreeBSD headers define this */
1361 static void fw_cfg_boot_set(void *opaque, const char *boot_device,
1366 [FILE:906:dragonfly/patch-util_coroutine-ucontext.c]
1367 --- util/coroutine-ucontext.c.orig 2023-05-31 01:02:03 UTC
1368 +++ util/coroutine-ucontext.c
1369 @@ -225,7 +225,15 @@ Coroutine *qemu_coroutine_new(void)
1370 2, arg.i[0], arg.i[1]);
1372 /* swapcontext() in, siglongjmp() back out */
1373 - if (!sigsetjmp(old_env, 0)) {
1374 + /* Save signal mask in this sigsetjmp, because makecontext on DragonFly
1375 + * leaves all signals blocked when entering the new context with
1377 + * Workaround this, by just having the signal mask restored by the
1378 + * siglongjmp that brings us back from qemu_coroutine_new().
1379 + * XXX Remove this workaround when the makecontext behaviour is fixed
1382 + if (!sigsetjmp(old_env, 1)) {
1383 start_switch_fiber_asan(COROUTINE_YIELD, &fake_stack_save, co->stack,
1385 start_switch_fiber_tsan(&fake_stack_save,