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.1.1.tar.xz:main
15 SPKGS[standard]= complete
22 OPTIONS_AVAILABLE= none
23 OPTIONS_STANDARD= none
25 BUILD_DEPENDS= gnutls:dev:standard
29 python-Sphinx:single:python_used
30 python-sphinx-rtd-theme:single:python_used
32 texi2html:primary:standard
34 xorg-xkeyboard-config:primary:standard
35 BUILDRUN_DEPENDS= cyrus-sasl:primary:standard
36 gnutls:primary:standard
37 libepoxy:primary:standard
38 nettle:primary:standard
39 snappy:primary:standard
42 USES= cpe gmake pkgconfig bison perl:build python:build
43 jpeg png mesa ncurses makeinfo ninja curl fontconfig
45 GNOME_COMPONENTS= gdkpixbuf gtk2 vte
46 SDL_COMPONENTS= sdl2 image2
47 XORG_COMPONENTS= x11 xext
49 LICENSE= GPLv2:primary
50 LICENSE_TERMS= primary:{{WRKSRC}}/LICENSE
51 LICENSE_FILE= GPLv2:{{WRKSRC}}/COPYING
54 FPC_EQUIVALENT= emulators/qemu
57 CONFIGURE_ARGS= --disable-usb-redir
58 --disable-stack-protector
67 --python={{PYTHON_CMD}}
70 BUILD_WRKSRC= {{WRKSRC}}/build
71 MAKE_ENV= BSD_MAKE="{{MAKE}}"
74 INSTALL_WRKSRC= {{WRKSRC}}/build
75 PLIST_SUB= JQUERY=3.6.0
78 CFLAGS= -I{{NCURSESBASE}}/include/ncursesw
79 VAR_OPSYS[freebsd]= CONFIGURE_ARGS=--enable-netmap
80 CONFIGURE_ARGS=--disable-linux-user
81 CONFIGURE_ARGS=--disable-linux-aio
82 VAR_OPSYS[linux]= CONFIGURE_ARGS=--disable-netmap
83 CONFIGURE_ARGS=--disable-linux-user
84 VAR_OPSYS[dragonfly]= CONFIGURE_ARGS=--disable-netmap
85 CONFIGURE_ARGS=--disable-linux-user
86 CONFIGURE_ARGS=--disable-linux-aio
87 VAR_OPSYS[midnightbsd]= CONFIGURE_ARGS=--enable-netmap
88 CONFIGURE_ARGS=--disable-linux-user
89 CONFIGURE_ARGS=--disable-linux-aio
90 CONFIGURE_ARGS=--extra-ldflags=-lutil
93 # silence some include warnings
94 ${MKDIR} ${WRKSRC}/bsd-user/dragonfly
96 ${CP} -a ${WRKSRC}/bsd-user/freebsd ${WRKSRC}/bsd-user/midnightbsd
99 ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample \
100 ${STAGEDIR}${PREFIX}/etc
101 ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample \
102 ${STAGEDIR}${PREFIX}/etc
103 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/qemu-*
104 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/elf2dmp
105 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/share/qemu/palcode-clipper
106 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/share/qemu/hppa-firmware.img
107 (cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${STD_DOCDIR}/)
108 # remove sphinx leftovers
109 ${RM} -r ${STAGEDIR}${STD_DOCDIR}/docs/sphinx
110 # remove empty directories
111 ${RM} -r ${STAGEDIR}/var
113 pre-configure-dragonfly:
114 # On dragonfly, userland programs can't include <sys/disk.h>
115 ${REINPLACE_CMD} -e 's|sys/disk\.h|sys/skipdisk.h|' \
116 ${WRKSRC}/meson.build
118 [FILE:782:descriptions/desc.primary]
119 QEMU is a fast processor emulator using dynamic translation to achieve
120 good emulation speed. QEMU has two operating modes:
122 * Full system emulation. In this mode, QEMU emulates a full system (for
123 example a PC), including a processor and various peripherials. It can
124 be used to launch different Operating Systems without rebooting the PC
125 or to debug system code.
126 * User mode emulation (Linux host only). In this mode, QEMU can launch
127 Linux processes compiled for one CPU on another CPU. It can be used to
128 launch the Wine Windows API emulator or to ease cross-compilation and
131 As QEMU requires no host kernel patches to run, it is safe and easy to use.
133 See also the preconfigured system images on http://oszoo.org/
134 Many live cd isos also work.
138 37ce2ef5e500fb752f681117c68b45118303ea49a7e26bd54080ced54fab7def 123558860 qemu-8.1.1.tar.xz
141 [FILE:2927:manifests/plist.primary]
142 @sample etc/qemu-ifdown.sample
143 @sample etc/qemu-ifup.sample
152 %%ONLY-LINUX%%libexec/qemu-bridge-helper
153 %%ONLY-MIDNIGHTBSD%%bin/
172 qemu-system-loongarch64
174 qemu-system-microblaze
175 qemu-system-microblazeel
196 share/applications/qemu.desktop
197 share/icons/hicolor/128x128/apps/qemu.png
198 share/icons/hicolor/16x16/apps/qemu.png
199 share/icons/hicolor/24x24/apps/qemu.png
200 share/icons/hicolor/256x256/apps/qemu.png
201 share/icons/hicolor/32x32/apps/
204 share/icons/hicolor/48x48/apps/qemu.png
205 share/icons/hicolor/512x512/apps/qemu.png
206 share/icons/hicolor/64x64/apps/qemu.png
207 share/icons/hicolor/scalable/apps/qemu.svg
220 edk2-i386-secure-code.fd
224 edk2-x86_64-secure-code.fd
243 opensbi-riscv32-generic-fw_dynamic.bin
244 opensbi-riscv64-generic-fw_dynamic.bin
247 petalogix-s3adsp1800.dtb
263 u-boot-sam460-20100605.bin
266 vgabios-bochs-display.bin
277 50-edk2-i386-secure.json
278 50-edk2-x86_64-secure.json
320 [FILE:92:manifests/plist.dev]
327 lib/pkgconfig/libfdt.pc
330 [FILE:10768:manifests/plist.docs]
339 share/doc/qemu/_static/
340 _sphinx_javascript_frameworks_compat.js
344 documentation_options.js
356 share/doc/qemu/_static/css/
359 share/doc/qemu/_static/css/fonts/
360 Roboto-Slab-Bold.woff
361 Roboto-Slab-Bold.woff2
362 Roboto-Slab-Regular.woff
363 Roboto-Slab-Regular.woff2
364 fontawesome-webfont.eot
365 fontawesome-webfont.svg
366 fontawesome-webfont.ttf
367 fontawesome-webfont.woff
368 fontawesome-webfont.woff2
369 lato-bold-italic.woff
370 lato-bold-italic.woff2
373 lato-normal-italic.woff
374 lato-normal-italic.woff2
377 share/doc/qemu/_static/js/
379 html5shiv-printshiv.min.js
382 share/doc/qemu/about/
388 removed-features.html
389 share/doc/qemu/devel/
393 block-coroutine-wrapper.html
398 conflict-resolution.html
399 control-flow-integrity.html
416 multi-thread-tcg.html
426 secure-coding-practices.html
429 submitting-a-patch.html
430 submitting-a-pull-request.html
441 writing-monitor-commands.html
445 block-replication.txt
455 multi-thread-compression.txt
458 pci_expander_bridge.txt
465 qemu-option-trace.rst.inc
471 xen-save-devices-state.txt
472 share/doc/qemu/docs/_templates/footer.html
473 share/doc/qemu/docs/about/
480 share/doc/qemu/docs/config/
482 mach-virt-graphical.cfg
485 q35-virtio-graphical.cfg
486 q35-virtio-serial.cfg
487 share/doc/qemu/docs/devel/
493 block-coroutine-wrapper.rst
495 ci-definitions.rst.inc
501 conflict-resolution.rst
502 control-flow-integrity.rst
521 multiple-iothreads.txt
532 secure-coding-practices.rst
535 submitting-a-patch.rst
536 submitting-a-pull-request.rst
548 writing-monitor-commands.rst
550 share/doc/qemu/docs/interop/
558 live-block-operations.rst
568 qemu-storage-daemon-qmp-ref.rst
574 virtio-balloon-stats.rst
575 vnc-ledstate-pseudo-encoding.rst
576 share/doc/qemu/docs/specs/
580 acpi_hw_reduced_hotplug.rst
592 ppc-spapr-hotplug.rst
594 ppc-spapr-uv-hcalls.rst
599 sev-guest-firmware.rst
606 share/doc/qemu/docs/sphinx-static/
609 share/doc/qemu/docs/spin/
611 aio_notify_accept.promela
612 aio_notify_bug.promela
613 tcg-exclusive.promela
614 win32-qemu-event.promela
615 share/doc/qemu/docs/system/
619 confidential-guest-support.rst
621 cpu-models-mips.rst.inc
622 cpu-models-x86-abi.csv
623 cpu-models-x86.rst.inc
625 device-url-syntax.rst.inc
642 qemu-block-drivers.rst
643 qemu-block-drivers.rst.inc
651 target-i386-desc.rst.inc
665 virtio-net-failover.rst
667 share/doc/qemu/docs/system/arm/
703 share/doc/qemu/docs/system/devices/
718 share/doc/qemu/docs/system/i386/
719 amd-memory-encryption.rst
727 share/doc/qemu/docs/system/loongarch/virt.rst
728 share/doc/qemu/docs/system/openrisc/
733 share/doc/qemu/docs/system/ppc/
740 share/doc/qemu/docs/system/riscv/
741 microchip-icicle-kit.rst
745 share/doc/qemu/docs/system/s390x/
753 share/doc/qemu/docs/tools/
758 qemu-storage-daemon.rst
760 virtfs-proxy-helper.rst
761 share/doc/qemu/docs/user/
764 share/doc/qemu/interop/
771 live-block-operations.html
776 qemu-storage-daemon-qmp-ref.html
781 virtio-balloon-stats.html
782 vnc-ledstate-pseudo-encoding.html
783 share/doc/qemu/specs/
784 acpi_cpu_hotplug.html
787 acpi_hw_reduced_hotplug.html
788 acpi_mem_hotplug.html
790 acpi_pci_hotplug.html
796 ppc-spapr-hcalls.html
797 ppc-spapr-hotplug.html
799 ppc-spapr-uv-hcalls.html
802 sev-guest-firmware.html
804 share/doc/qemu/system/
808 confidential-guest-support.html
810 device-emulation.html
825 qemu-block-drivers.html
846 virtio-net-failover.html
848 share/doc/qemu/system/arm/
882 xlnx-versal-virt.html
884 share/doc/qemu/system/devices/
899 share/doc/qemu/system/i386/
900 amd-memory-encryption.html
908 share/doc/qemu/system/loongarch/virt.html
909 share/doc/qemu/system/openrisc/
914 share/doc/qemu/system/ppc/
921 share/doc/qemu/system/riscv/
922 microchip-icicle-kit.html
926 share/doc/qemu/system/s390x/
934 share/doc/qemu/tools/
939 qemu-storage-daemon.html
941 virtfs-proxy-helper.html
947 [FILE:333:manifests/plist.nls]
948 share/locale/bg/LC_MESSAGES/qemu.mo
949 share/locale/de_DE/LC_MESSAGES/qemu.mo
950 share/locale/fr_FR/LC_MESSAGES/qemu.mo
951 share/locale/hu/LC_MESSAGES/qemu.mo
952 share/locale/it/LC_MESSAGES/qemu.mo
953 share/locale/sv/LC_MESSAGES/qemu.mo
954 share/locale/tr/LC_MESSAGES/qemu.mo
955 share/locale/uk/LC_MESSAGES/qemu.mo
956 share/locale/zh_CN/LC_MESSAGES/qemu.mo
959 [FILE:416:manifests/plist.man]
960 %%ONLY-FREEBSD%%share/man/man7/qemu-ga-ref.7.gz
961 %%ONLY-FREEBSD%%share/man/man8/qemu-ga.8.gz
962 %%ONLY-LINUX%%share/man/man7/qemu-ga-ref.7.gz
963 %%ONLY-LINUX%%share/man/man8/qemu-ga.8.gz
966 qemu-storage-daemon.1.gz
969 qemu-block-drivers.7.gz
972 qemu-storage-daemon-qmp-ref.7.gz
978 [FILE:414:patches/patch-accel_tcg_translate-all.c]
979 --- accel/tcg/translate-all.c.orig 2023-09-21 20:20:51 UTC
980 +++ accel/tcg/translate-all.c
983 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
984 #include <sys/param.h>
985 -#if __FreeBSD_version >= 700104
986 +#if defined(__MidnightBSD__) || __FreeBSD_version >= 700104
987 #define HAVE_KINFO_GETVMMAP
988 #define sigqueue sigqueue_freebsd /* avoid redefinition */
989 #include <sys/proc.h>
992 [FILE:831:patches/patch-bsd-user_freebsd_os-sys.c]
993 --- bsd-user/freebsd/os-sys.c.orig 2023-09-21 20:20:51 UTC
994 +++ bsd-user/freebsd/os-sys.c
995 @@ -426,7 +426,9 @@ static abi_long do_freebsd_sysctl_oid(CP
997 case CTL_SYSCTL_NEXT:
998 case CTL_SYSCTL_NAME2OID:
999 +#ifdef CTL_SYSCTL_NEXTNOSKIP
1000 case CTL_SYSCTL_NEXTNOSKIP:
1003 * All of these return an OID array, so we need to convert to
1005 @@ -439,7 +441,9 @@ static abi_long do_freebsd_sysctl_oid(CP
1006 sysctl_oidfmt(holdp);
1008 case CTL_SYSCTL_OIDDESCR:
1009 +#ifdef CTL_SYSCTL_OIDLABEL
1010 case CTL_SYSCTL_OIDLABEL:
1013 /* Handle it based on the type */
1014 h2g_old_sysctl(holdp, &holdlen, kind);
1017 [FILE:512:patches/patch-configure]
1018 --- configure.orig 2023-09-21 20:20:51 UTC
1020 @@ -355,6 +355,8 @@ elif check_define __sun__ ; then
1022 elif check_define __HAIKU__ ; then
1024 +elif check_define __MidnightBSD__ ; then
1026 elif check_define __FreeBSD__ ; then
1028 elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
1029 @@ -394,6 +396,10 @@ freebsd)
1035 + make="${MAKE-gmake}"
1042 [FILE:2464:patches/patch-meson.build]
1043 --- meson.build.orig 2023-09-21 20:20:52 UTC
1045 @@ -53,8 +53,8 @@ config_host_data = configuration_data()
1047 qapi_trace_events = []
1049 -bsd_oses = ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'darwin']
1050 -supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux']
1051 +bsd_oses = ['midnightbsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'darwin']
1052 +supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux', 'dragonfly', 'midnightbsd']
1053 supported_cpus = ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', 'x86_64',
1054 'arm', 'aarch64', 'loongarch64', 'mips', 'mips64', 'sparc64']
1056 @@ -668,7 +668,7 @@ if get_option('hax').allowed()
1057 accelerators += 'CONFIG_HAX'
1060 -if targetos == 'netbsd'
1061 +if targetos in [ 'netbsd', 'dragonfly' ]
1062 nvmm = cc.find_library('nvmm', required: get_option('nvmm'))
1064 accelerators += 'CONFIG_NVMM'
1065 @@ -1161,7 +1161,7 @@ if have_system and get_option('curses').
1069 - curses_dep_list = targetos == 'windows' ? ['ncurses', 'ncursesw'] : ['ncursesw']
1070 + curses_dep_list = targetos == 'windows' ? ['ncurses', 'ncursesw'] : ['ncurses']
1071 curses = dependency(curses_dep_list,
1073 method: 'pkg-config')
1074 @@ -1184,14 +1184,15 @@ if have_system and get_option('curses').
1075 has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
1078 - curses_libname_list = (targetos == 'windows' ? ['pdcurses'] : ['ncursesw', 'cursesw'])
1079 + libtinfo = cc.find_library('tinfo', required: false, static: enable_static)
1080 + curses_libname_list = (targetos == 'windows' ? ['pdcurses'] : ['ncurses'])
1081 foreach curses_libname : curses_libname_list
1082 libcurses = cc.find_library(curses_libname,
1084 if libcurses.found()
1085 - if cc.links(curses_test, args: curses_compile_args, dependencies: libcurses)
1086 + if cc.links(curses_test, args: curses_compile_args, dependencies: [libncurses,libtinfo])
1087 curses = declare_dependency(compile_args: curses_compile_args,
1088 - dependencies: [libcurses])
1089 + dependencies: [libncurses, libtinfo])
1092 msg = 'curses library not usable'
1095 [FILE:454:patches/patch-net_tap-bsd.c]
1096 --- net/tap-bsd.c.orig 2023-09-21 20:20:52 UTC
1100 #if defined(__NetBSD__) || defined(__FreeBSD__)
1101 #include <sys/ioctl.h>
1102 +#include <sys/socket.h>
1104 #include <net/if_tap.h>
1106 +#if defined(__DragonFly)
1107 +#include <sys/ioctl.h>
1108 +#include <sys/socket.h>
1109 +#include <net/if.h>
1110 +#include <net/tap/if_tap.h>
1114 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
1117 [FILE:828:patches/patch-roms_u-boot_include_compiler.h]
1118 --- roms/u-boot/include/compiler.h.orig 2023-09-21 20:21:47 UTC
1119 +++ roms/u-boot/include/compiler.h
1121 defined(__NetBSD__) || \
1122 defined(__FreeBSD__) || \
1123 defined(__sun__) || \
1124 + defined(__DragonFly__) || \
1126 # include <inttypes.h>
1127 #elif defined(__linux__) || defined(__WIN32__) || defined(__MINGW32__) || defined(__OpenBSD__)
1130 # include <endian.h>
1131 # include <byteswap.h>
1132 -#elif defined(__MACH__) || defined(__FreeBSD__)
1133 +#elif defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__)
1134 # include <machine/endian.h>
1137 +#if defined(__FreeBSD__) || defined(__DragonFly__)
1138 # include <sys/endian.h> /* htole32 and friends */
1139 # define __BYTE_ORDER BYTE_ORDER
1140 # define __LITTLE_ENDIAN LITTLE_ENDIAN
1143 [FILE:311:patches/patch-roms_u-boot_lib_bch.c]
1144 --- roms/u-boot/lib/bch.c.orig 2023-09-21 20:21:48 UTC
1145 +++ roms/u-boot/lib/bch.c
1147 #include <linux/bitops.h>
1150 -#if defined(__FreeBSD__)
1151 +#if defined(__FreeBSD__) || defined(__DragonFly__)
1152 #include <sys/endian.h>
1153 #elif defined(__APPLE__)
1154 #include <machine/endian.h>
1157 [FILE:344:patches/patch-util_getauxval.c]
1158 --- util/getauxval.c.orig 2023-09-21 20:20:53 UTC
1159 +++ util/getauxval.c
1160 @@ -98,7 +98,7 @@ unsigned long qemu_getauxval(unsigned lo
1164 -#elif defined(__FreeBSD__)
1165 +#elif defined(__MidnightBSD__) || (defined(__FreeBSD__) && __FreeBSD_version__ > 1200001)
1166 #include <sys/auxv.h>
1168 unsigned long qemu_getauxval(unsigned long type)
1171 [FILE:486:patches/patch-util_meson.build]
1172 --- util/meson.build.orig 2023-09-21 20:20:53 UTC
1173 +++ util/meson.build
1174 @@ -14,7 +14,7 @@ util_ss.add(when: 'CONFIG_POSIX', if_tru
1175 util_ss.add(when: 'CONFIG_POSIX', if_true: files('event_notifier-posix.c'))
1176 util_ss.add(when: 'CONFIG_POSIX', if_true: files('mmap-alloc.c'))
1178 -if targetos == 'freebsd'
1179 +if targetos in ['freebsd', 'midnightbsd', 'dragonfly']
1182 util_ss.add(when: 'CONFIG_POSIX', if_true: [files('oslib-posix.c'), freebsd_dep])
1185 [FILE:7685:files/pkg-message-single]
1189 - Needs to set net.link.tap.user_open sysctl in order to use /dev/tap*
1190 networking as non-root. Don't forget to adjust device node permissions in
1193 - slirp (usermode networking) is fixed now in cvs, on FreeSBIE 1.0 guests you
1194 still have to manually do: echo nameserver 10.0.2.3 >/etc/resolv.conf but
1195 i've been told that that's normal. (fixed on FreeSBIE 1.1.) And you have
1196 to wait a bit for dhclient to do its thing; traffic to address 10.0.2.2 is
1197 routed to 127.1 on the host.
1199 - Expect timer problems when guest kernel HZ is > hosts, for example time
1200 sleep 1 takes 49 seconds and booting sleeps for minutes at the acd0 probe
1201 with a FreeSBIE 1.0 guest, thats because its kernel is built with HZ=5000,
1202 and FreeBSD's default is 100... (no longer a problem with FreeSBIE 1.1.)
1203 The linux 2.6 kernel uses 1000 by default btw. (changed to 250 later, and
1204 recent linux kernels now no longer have a fixed HZ, aka `tickless
1205 kernel'...) Enabling /dev/rtc doesn't seem to help either (not included
1206 since it needs a patch to emulators/rtc.)
1208 - Update: the above problem has gotten worse with FreeBSD guests
1209 somewhere before 8.0, mainly since the kernel now usually wants
1210 double or even quadruple number of timer irqs compared to HZ if
1211 it detects an apic (and at least early versions of FreeBSD 8 had
1212 a bug that essentially halved qemu's clock rate too); the only
1213 reason you usually don't see symptoms of this with FreeBSD 8
1214 guests is they automatically reduce their HZ to 100 when running
1215 in a VM while the default for the host kernel is still HZ=1000.
1216 Workaround: you can disable the apic clock in the guest by setting
1218 hint.apic.0.clock="0"
1220 in loader.conf(5) (or manually at the loader prompt), if that
1221 doesn't work the only things you can do is either reduce the
1222 guest's HZ to, say, 100 by setting e.g.
1226 from the loader as above (which usually is a good idea in a VM
1227 anyway and FreeBSD 8 now does by itself as mentioned), or otherwise
1228 increase the host's HZ to 2000 or even 4000 from the loader in
1231 - The -smb option (smb-export local dir to guest using the default
1232 slirp networking) needs the samba port/package installed
1233 in addition to qemu. (SAMBA knob.)
1235 - If you want to use usb devices connected to the host in the guest
1236 yot need either recent 10-current (not tested yet much) or you can
1237 use usbredir over the network (see below); also unless you are
1238 running qemu as root you then need to fix permissions for /dev/ugen*
1239 device nodes: if you are on 5.x or later (devfs) put a rule in
1240 /etc/devfs.rules, activate it in /etc/rc.conf and run /etc/rc.d/devfs
1241 restart. Example devfs.rules:
1244 add path 'ugen*' mode 660 group operator
1246 corresponding rc.conf line:
1248 devfs_system_ruleset="ugen_ruleset"
1250 - If you want to test the new (in 0.15.0) usb network redirection (USBREDIR
1251 option) see this thread by Hans de Goede <hdegoede <at> redhat.com>:
1253 http://thread.gmane.org/gmane.comp.emulators.qemu/110176/focus=110183
1259 1) Start usbredirserver for a usb device:
1260 sudo usbredirserver 045e:0772
1261 2) Start qemu with usb2 support + a chardev talking to usbredirserver +
1262 a usb-redir device using this chardev:
1264 -readconfig docs/ich9-ehci-uhci.cfg \
1265 -chardev socket,id=usbredirchardev,host=localhost,port=4000 \
1266 -device usb-redir,chardev=usbredirchardev,id=usbredirdev ...
1268 [you would replace docs/ich9-ehci-uhci.cfg with e.g.
1269 /raven/share/doc/qemu/docs/ich9-ehci-uhci.cfg, but turns out
1270 ehci was broken for me here with FreeBSD guests and the previous
1271 qemu version at least, I got:
1273 FETCHENTRY: entry at 22C5484 is of type 2 which is not supported yet processing error - resetting ehci HC
1274 Assertion failed: (0), function ehci_advance_state, file /data/ports/emulators/qemu-devel/work/qemu-0.15.0/hw/usb-ehci.c, line 2045.
1276 The new qemu version works better tho.]
1278 - Still usb: since the hub is no longer attached to the uchi controller and
1279 the wakeup mechanism, resume interrupt is not implemented yet linux guests
1280 will suspend the bus, i.e. they wont see devices usb_add'ed after its
1281 (linux') uhci module got loaded. Workaround: either add devices before
1282 linux loads the module or rmmod and modprobe it afterwards. [Not sure
1283 if this still applies to the new libusb host code used on recent
1286 - If you build qemu wihout SDL and then get crashes running it try passing it
1287 -nographic. This should probably be default in that case...
1289 - qemu's network boot roms (-boot n) have a bug when bootfiles sizes are a
1290 multiple of blksize, if this affects you (like with FreeBSD's /boot/pxeboot)
1293 cp /boot/pxeboot pxeboot-qemu && chmod +w pxeboot-qemu && echo >>pxeboot-qemu
1295 and then use pxeboot-qemu. Actually you need recent btx code
1296 (from after 7.0 was released) because of the real mode boot
1297 problem, so use at least pxeboot from there. And I just did that
1298 for the pxeboot extracted out of
1300 ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/200805/7.0-STABLE-200805-i386-bootonly.iso
1304 http://people.freebsd.org/~nox/qemu/pxeboot-qemu
1306 - If you use slirp (usernet, the default) and want to mount nfs into the guest
1307 and you are not running qemu as root, then mountd(8) on the exporting box
1308 needs to be run with -n in order to accept requests from ports >= 1024.
1310 - (not FreeBSD-specific:) There have been reports of qcow2 corruption with (at
1311 least) win2k guests on recent kvm (which uses similar qcow2 code than qemu
1312 now, see this thread:
1314 http://lists.gnu.org/archive/html/qemu-devel/2009-02/msg00713.html -
1316 the consensus on that thread seems to be that qcow(2) code has always been
1317 experimental and you should use raw images if you want reliability; raw is
1318 also usually faster.) You should be able to migrate existing images to raw
1319 using qemu-img(1)'s convert function; raw doesn't support advanced features
1320 like snapshots tho. [a few important qcow2 bugfixed have been committed in
1321 the meantime so this _might_ be less of an issue now; and meanwhile there
1322 also is the new qed format - I don't know how stable that one is.]
1324 - (also not FreeBSD-specific:) It is recommended to pass raw images using the
1325 new -drive syntax, specifying format=raw explicitly in order to avoid
1326 malicious guests being able to exploit the format autodetection thats
1327 otherwise getting used. (Not that you should run malicious guests anyway,
1328 but this eleminates at least a known attack vector.)
1330 - qemu now has improved physical cdrom support, but still there is at
1331 least one known problem: you need to have the guest eject the disc if you
1332 want to change it/take it out, or otherwise the guest may continue using
1333 state (like size) of the old disc. (You can also do like `change ide1-cd0
1334 /dev/acd0' in the monitor after taking out the disc if a guest cannot eject
1337 - The default configuration location (qemu-ifup script etc.) has been changed
1338 from /etc to PREFIX/etc (usually /raven/etc). Move your files accordingly.
1340 - The pcap code (-net nic... -net pcap,ifname=...) should work properly now,
1341 with only one exception: Advanced features like TSO used on the host
1342 interface can cause oversize packets which now do get truncated to avoid
1343 confusing/panicing guests but of course still will cause retransmissions.
1344 So if you see slow throughput and `pcap_send: packet size > ..., truncating'
1345 messages on qemu's tty try disabling TSO etc on the host interface at least
1349 [FILE:20:files/qemu-ifdown.sample]
1354 [FILE:20:files/qemu-ifup.sample]
1359 [FILE:323:dragonfly/patch-hw-ppc_newworld.c]
1360 --- hw/ppc/mac_newworld.c.orig 2023-09-21 20:20:52 UTC
1361 +++ hw/ppc/mac_newworld.c
1363 #include "hw/sysbus.h"
1366 +/* FreeBSD headers define this */
1371 #define MAX_IDE_BUS 2
1372 #define CFG_ADDR 0xf0000510
1373 #define TBFREQ (100UL * 1000UL * 1000UL)
1376 [FILE:334:dragonfly/patch-hw_ppc_mac__oldworld.c]
1377 --- hw/ppc/mac_oldworld.c.orig 2023-09-21 20:20:52 UTC
1378 +++ hw/ppc/mac_oldworld.c
1381 #define GRACKLE_BASE 0xfec00000
1383 +/* FreeBSD headers define this */
1388 static void fw_cfg_boot_set(void *opaque, const char *boot_device,
1393 [FILE:906:dragonfly/patch-util_coroutine-ucontext.c]
1394 --- util/coroutine-ucontext.c.orig 2023-09-21 20:20:53 UTC
1395 +++ util/coroutine-ucontext.c
1396 @@ -225,7 +225,15 @@ Coroutine *qemu_coroutine_new(void)
1397 2, arg.i[0], arg.i[1]);
1399 /* swapcontext() in, siglongjmp() back out */
1400 - if (!sigsetjmp(old_env, 0)) {
1401 + /* Save signal mask in this sigsetjmp, because makecontext on DragonFly
1402 + * leaves all signals blocked when entering the new context with
1404 + * Workaround this, by just having the signal mask restored by the
1405 + * siglongjmp that brings us back from qemu_coroutine_new().
1406 + * XXX Remove this workaround when the makecontext behaviour is fixed
1409 + if (!sigsetjmp(old_env, 1)) {
1410 start_switch_fiber_asan(COROUTINE_YIELD, &fake_stack_save, co->stack,
1412 start_switch_fiber_tsan(&fake_stack_save,