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.2.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 libxkbcommon:dev:standard
36 BUILDRUN_DEPENDS= cyrus-sasl:primary:standard
37 gnutls:primary:standard
38 libepoxy:primary:standard
39 nettle:primary:standard
40 snappy:primary:standard
43 USES= cpe gmake pkgconfig bison perl:build python:build
44 jpeg png ncurses makeinfo ninja curl fontconfig zstd
46 GNOME_COMPONENTS= gdkpixbuf gtk2 vte
47 SDL_COMPONENTS= sdl2 image2
48 XORG_COMPONENTS= x11 xext
50 LICENSE= GPLv2:primary
51 LICENSE_TERMS= primary:{{WRKSRC}}/LICENSE
52 LICENSE_FILE= GPLv2:{{WRKSRC}}/COPYING
55 FPC_EQUIVALENT= emulators/qemu
58 CONFIGURE_ARGS= --disable-usb-redir
59 --disable-stack-protector
68 --python={{PYTHON_CMD}}
71 BUILD_WRKSRC= {{WRKSRC}}/build
72 MAKE_ENV= BSD_MAKE="{{MAKE}}"
75 INSTALL_WRKSRC= {{WRKSRC}}/build
76 PLIST_SUB= JQUERY=3.6.0
79 CFLAGS= -I{{NCURSESBASE}}/include/ncursesw
80 VAR_OPSYS[freebsd]= CONFIGURE_ARGS=--enable-netmap
81 CONFIGURE_ARGS=--disable-linux-user
82 CONFIGURE_ARGS=--disable-linux-aio
83 VAR_OPSYS[linux]= CONFIGURE_ARGS=--disable-netmap
84 CONFIGURE_ARGS=--disable-linux-user
85 VAR_OPSYS[dragonfly]= CONFIGURE_ARGS=--disable-netmap
86 CONFIGURE_ARGS=--disable-linux-user
87 CONFIGURE_ARGS=--disable-linux-aio
88 VAR_OPSYS[midnightbsd]= CONFIGURE_ARGS=--enable-netmap
89 CONFIGURE_ARGS=--disable-linux-user
90 CONFIGURE_ARGS=--disable-linux-aio
91 CONFIGURE_ARGS=--extra-ldflags=-lutil
94 # silence some include warnings
95 ${MKDIR} ${WRKSRC}/bsd-user/dragonfly
97 ${CP} -a ${WRKSRC}/bsd-user/freebsd ${WRKSRC}/bsd-user/midnightbsd
100 ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample \
101 ${STAGEDIR}${PREFIX}/etc
102 ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample \
103 ${STAGEDIR}${PREFIX}/etc
104 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/qemu-*
105 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/elf2dmp
106 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/share/qemu/palcode-clipper
107 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/share/qemu/hppa-firmware.img
108 (cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${STD_DOCDIR}/)
109 # remove sphinx leftovers
110 ${RM} -r ${STAGEDIR}${STD_DOCDIR}/docs/sphinx
111 # remove empty directories
112 ${RM} -r ${STAGEDIR}/var
114 pre-configure-dragonfly:
115 # On dragonfly, userland programs can't include <sys/disk.h>
116 ${REINPLACE_CMD} -e 's|sys/disk\.h|sys/skipdisk.h|' \
117 ${WRKSRC}/meson.build
119 [FILE:782:descriptions/desc.primary]
120 QEMU is a fast processor emulator using dynamic translation to achieve
121 good emulation speed. QEMU has two operating modes:
123 * Full system emulation. In this mode, QEMU emulates a full system (for
124 example a PC), including a processor and various peripherials. It can
125 be used to launch different Operating Systems without rebooting the PC
126 or to debug system code.
127 * User mode emulation (Linux host only). In this mode, QEMU can launch
128 Linux processes compiled for one CPU on another CPU. It can be used to
129 launch the Wine Windows API emulator or to ease cross-compilation and
132 As QEMU requires no host kernel patches to run, it is safe and easy to use.
134 See also the preconfigured system images on http://oszoo.org/
135 Many live cd isos also work.
139 541526a764576eb494d2ff5ec46aeb253e62ea29035d1c23c0a8af4e6cd4f087 123553328 qemu-8.1.2.tar.xz
142 [FILE:2927:manifests/plist.primary]
143 @sample etc/qemu-ifdown.sample
144 @sample etc/qemu-ifup.sample
153 %%ONLY-LINUX%%libexec/qemu-bridge-helper
154 %%ONLY-MIDNIGHTBSD%%bin/
173 qemu-system-loongarch64
175 qemu-system-microblaze
176 qemu-system-microblazeel
197 share/applications/qemu.desktop
198 share/icons/hicolor/128x128/apps/qemu.png
199 share/icons/hicolor/16x16/apps/qemu.png
200 share/icons/hicolor/24x24/apps/qemu.png
201 share/icons/hicolor/256x256/apps/qemu.png
202 share/icons/hicolor/32x32/apps/
205 share/icons/hicolor/48x48/apps/qemu.png
206 share/icons/hicolor/512x512/apps/qemu.png
207 share/icons/hicolor/64x64/apps/qemu.png
208 share/icons/hicolor/scalable/apps/qemu.svg
221 edk2-i386-secure-code.fd
225 edk2-x86_64-secure-code.fd
244 opensbi-riscv32-generic-fw_dynamic.bin
245 opensbi-riscv64-generic-fw_dynamic.bin
248 petalogix-s3adsp1800.dtb
264 u-boot-sam460-20100605.bin
267 vgabios-bochs-display.bin
278 50-edk2-i386-secure.json
279 50-edk2-x86_64-secure.json
321 [FILE:92:manifests/plist.dev]
328 lib/pkgconfig/libfdt.pc
331 [FILE:10768:manifests/plist.docs]
340 share/doc/qemu/_static/
341 _sphinx_javascript_frameworks_compat.js
345 documentation_options.js
357 share/doc/qemu/_static/css/
360 share/doc/qemu/_static/css/fonts/
361 Roboto-Slab-Bold.woff
362 Roboto-Slab-Bold.woff2
363 Roboto-Slab-Regular.woff
364 Roboto-Slab-Regular.woff2
365 fontawesome-webfont.eot
366 fontawesome-webfont.svg
367 fontawesome-webfont.ttf
368 fontawesome-webfont.woff
369 fontawesome-webfont.woff2
370 lato-bold-italic.woff
371 lato-bold-italic.woff2
374 lato-normal-italic.woff
375 lato-normal-italic.woff2
378 share/doc/qemu/_static/js/
380 html5shiv-printshiv.min.js
383 share/doc/qemu/about/
389 removed-features.html
390 share/doc/qemu/devel/
394 block-coroutine-wrapper.html
399 conflict-resolution.html
400 control-flow-integrity.html
417 multi-thread-tcg.html
427 secure-coding-practices.html
430 submitting-a-patch.html
431 submitting-a-pull-request.html
442 writing-monitor-commands.html
446 block-replication.txt
456 multi-thread-compression.txt
459 pci_expander_bridge.txt
466 qemu-option-trace.rst.inc
472 xen-save-devices-state.txt
473 share/doc/qemu/docs/_templates/footer.html
474 share/doc/qemu/docs/about/
481 share/doc/qemu/docs/config/
483 mach-virt-graphical.cfg
486 q35-virtio-graphical.cfg
487 q35-virtio-serial.cfg
488 share/doc/qemu/docs/devel/
494 block-coroutine-wrapper.rst
496 ci-definitions.rst.inc
502 conflict-resolution.rst
503 control-flow-integrity.rst
522 multiple-iothreads.txt
533 secure-coding-practices.rst
536 submitting-a-patch.rst
537 submitting-a-pull-request.rst
549 writing-monitor-commands.rst
551 share/doc/qemu/docs/interop/
559 live-block-operations.rst
569 qemu-storage-daemon-qmp-ref.rst
575 virtio-balloon-stats.rst
576 vnc-ledstate-pseudo-encoding.rst
577 share/doc/qemu/docs/specs/
581 acpi_hw_reduced_hotplug.rst
593 ppc-spapr-hotplug.rst
595 ppc-spapr-uv-hcalls.rst
600 sev-guest-firmware.rst
607 share/doc/qemu/docs/sphinx-static/
610 share/doc/qemu/docs/spin/
612 aio_notify_accept.promela
613 aio_notify_bug.promela
614 tcg-exclusive.promela
615 win32-qemu-event.promela
616 share/doc/qemu/docs/system/
620 confidential-guest-support.rst
622 cpu-models-mips.rst.inc
623 cpu-models-x86-abi.csv
624 cpu-models-x86.rst.inc
626 device-url-syntax.rst.inc
643 qemu-block-drivers.rst
644 qemu-block-drivers.rst.inc
652 target-i386-desc.rst.inc
666 virtio-net-failover.rst
668 share/doc/qemu/docs/system/arm/
704 share/doc/qemu/docs/system/devices/
719 share/doc/qemu/docs/system/i386/
720 amd-memory-encryption.rst
728 share/doc/qemu/docs/system/loongarch/virt.rst
729 share/doc/qemu/docs/system/openrisc/
734 share/doc/qemu/docs/system/ppc/
741 share/doc/qemu/docs/system/riscv/
742 microchip-icicle-kit.rst
746 share/doc/qemu/docs/system/s390x/
754 share/doc/qemu/docs/tools/
759 qemu-storage-daemon.rst
761 virtfs-proxy-helper.rst
762 share/doc/qemu/docs/user/
765 share/doc/qemu/interop/
772 live-block-operations.html
777 qemu-storage-daemon-qmp-ref.html
782 virtio-balloon-stats.html
783 vnc-ledstate-pseudo-encoding.html
784 share/doc/qemu/specs/
785 acpi_cpu_hotplug.html
788 acpi_hw_reduced_hotplug.html
789 acpi_mem_hotplug.html
791 acpi_pci_hotplug.html
797 ppc-spapr-hcalls.html
798 ppc-spapr-hotplug.html
800 ppc-spapr-uv-hcalls.html
803 sev-guest-firmware.html
805 share/doc/qemu/system/
809 confidential-guest-support.html
811 device-emulation.html
826 qemu-block-drivers.html
847 virtio-net-failover.html
849 share/doc/qemu/system/arm/
883 xlnx-versal-virt.html
885 share/doc/qemu/system/devices/
900 share/doc/qemu/system/i386/
901 amd-memory-encryption.html
909 share/doc/qemu/system/loongarch/virt.html
910 share/doc/qemu/system/openrisc/
915 share/doc/qemu/system/ppc/
922 share/doc/qemu/system/riscv/
923 microchip-icicle-kit.html
927 share/doc/qemu/system/s390x/
935 share/doc/qemu/tools/
940 qemu-storage-daemon.html
942 virtfs-proxy-helper.html
948 [FILE:333:manifests/plist.nls]
949 share/locale/bg/LC_MESSAGES/qemu.mo
950 share/locale/de_DE/LC_MESSAGES/qemu.mo
951 share/locale/fr_FR/LC_MESSAGES/qemu.mo
952 share/locale/hu/LC_MESSAGES/qemu.mo
953 share/locale/it/LC_MESSAGES/qemu.mo
954 share/locale/sv/LC_MESSAGES/qemu.mo
955 share/locale/tr/LC_MESSAGES/qemu.mo
956 share/locale/uk/LC_MESSAGES/qemu.mo
957 share/locale/zh_CN/LC_MESSAGES/qemu.mo
960 [FILE:416:manifests/plist.man]
961 %%ONLY-FREEBSD%%share/man/man7/qemu-ga-ref.7.gz
962 %%ONLY-FREEBSD%%share/man/man8/qemu-ga.8.gz
963 %%ONLY-LINUX%%share/man/man7/qemu-ga-ref.7.gz
964 %%ONLY-LINUX%%share/man/man8/qemu-ga.8.gz
967 qemu-storage-daemon.1.gz
970 qemu-block-drivers.7.gz
973 qemu-storage-daemon-qmp-ref.7.gz
979 [FILE:414:patches/patch-accel_tcg_translate-all.c]
980 --- accel/tcg/translate-all.c.orig 2023-10-16 17:57:20 UTC
981 +++ accel/tcg/translate-all.c
984 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
985 #include <sys/param.h>
986 -#if __FreeBSD_version >= 700104
987 +#if defined(__MidnightBSD__) || __FreeBSD_version >= 700104
988 #define HAVE_KINFO_GETVMMAP
989 #define sigqueue sigqueue_freebsd /* avoid redefinition */
990 #include <sys/proc.h>
993 [FILE:831:patches/patch-bsd-user_freebsd_os-sys.c]
994 --- bsd-user/freebsd/os-sys.c.orig 2023-10-16 17:57:20 UTC
995 +++ bsd-user/freebsd/os-sys.c
996 @@ -426,7 +426,9 @@ static abi_long do_freebsd_sysctl_oid(CP
998 case CTL_SYSCTL_NEXT:
999 case CTL_SYSCTL_NAME2OID:
1000 +#ifdef CTL_SYSCTL_NEXTNOSKIP
1001 case CTL_SYSCTL_NEXTNOSKIP:
1004 * All of these return an OID array, so we need to convert to
1006 @@ -439,7 +441,9 @@ static abi_long do_freebsd_sysctl_oid(CP
1007 sysctl_oidfmt(holdp);
1009 case CTL_SYSCTL_OIDDESCR:
1010 +#ifdef CTL_SYSCTL_OIDLABEL
1011 case CTL_SYSCTL_OIDLABEL:
1014 /* Handle it based on the type */
1015 h2g_old_sysctl(holdp, &holdlen, kind);
1018 [FILE:512:patches/patch-configure]
1019 --- configure.orig 2023-10-16 17:57:20 UTC
1021 @@ -355,6 +355,8 @@ elif check_define __sun__ ; then
1023 elif check_define __HAIKU__ ; then
1025 +elif check_define __MidnightBSD__ ; then
1027 elif check_define __FreeBSD__ ; then
1029 elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
1030 @@ -394,6 +396,10 @@ freebsd)
1036 + make="${MAKE-gmake}"
1043 [FILE:2464:patches/patch-meson.build]
1044 --- meson.build.orig 2023-10-16 17:57:21 UTC
1046 @@ -53,8 +53,8 @@ config_host_data = configuration_data()
1048 qapi_trace_events = []
1050 -bsd_oses = ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'darwin']
1051 -supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux']
1052 +bsd_oses = ['midnightbsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'darwin']
1053 +supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux', 'dragonfly', 'midnightbsd']
1054 supported_cpus = ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', 'x86_64',
1055 'arm', 'aarch64', 'loongarch64', 'mips', 'mips64', 'sparc64']
1057 @@ -668,7 +668,7 @@ if get_option('hax').allowed()
1058 accelerators += 'CONFIG_HAX'
1061 -if targetos == 'netbsd'
1062 +if targetos in [ 'netbsd', 'dragonfly' ]
1063 nvmm = cc.find_library('nvmm', required: get_option('nvmm'))
1065 accelerators += 'CONFIG_NVMM'
1066 @@ -1161,7 +1161,7 @@ if have_system and get_option('curses').
1070 - curses_dep_list = targetos == 'windows' ? ['ncurses', 'ncursesw'] : ['ncursesw']
1071 + curses_dep_list = targetos == 'windows' ? ['ncurses', 'ncursesw'] : ['ncurses']
1072 curses = dependency(curses_dep_list,
1074 method: 'pkg-config')
1075 @@ -1184,14 +1184,15 @@ if have_system and get_option('curses').
1076 has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
1079 - curses_libname_list = (targetos == 'windows' ? ['pdcurses'] : ['ncursesw', 'cursesw'])
1080 + libtinfo = cc.find_library('tinfo', required: false, static: enable_static)
1081 + curses_libname_list = (targetos == 'windows' ? ['pdcurses'] : ['ncurses'])
1082 foreach curses_libname : curses_libname_list
1083 libcurses = cc.find_library(curses_libname,
1085 if libcurses.found()
1086 - if cc.links(curses_test, args: curses_compile_args, dependencies: libcurses)
1087 + if cc.links(curses_test, args: curses_compile_args, dependencies: [libncurses,libtinfo])
1088 curses = declare_dependency(compile_args: curses_compile_args,
1089 - dependencies: [libcurses])
1090 + dependencies: [libncurses, libtinfo])
1093 msg = 'curses library not usable'
1096 [FILE:454:patches/patch-net_tap-bsd.c]
1097 --- net/tap-bsd.c.orig 2023-10-16 17:57:21 UTC
1101 #if defined(__NetBSD__) || defined(__FreeBSD__)
1102 #include <sys/ioctl.h>
1103 +#include <sys/socket.h>
1105 #include <net/if_tap.h>
1107 +#if defined(__DragonFly)
1108 +#include <sys/ioctl.h>
1109 +#include <sys/socket.h>
1110 +#include <net/if.h>
1111 +#include <net/tap/if_tap.h>
1115 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
1118 [FILE:828:patches/patch-roms_u-boot_include_compiler.h]
1119 --- roms/u-boot/include/compiler.h.orig 2023-10-16 17:58:11 UTC
1120 +++ roms/u-boot/include/compiler.h
1122 defined(__NetBSD__) || \
1123 defined(__FreeBSD__) || \
1124 defined(__sun__) || \
1125 + defined(__DragonFly__) || \
1127 # include <inttypes.h>
1128 #elif defined(__linux__) || defined(__WIN32__) || defined(__MINGW32__) || defined(__OpenBSD__)
1131 # include <endian.h>
1132 # include <byteswap.h>
1133 -#elif defined(__MACH__) || defined(__FreeBSD__)
1134 +#elif defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__)
1135 # include <machine/endian.h>
1138 +#if defined(__FreeBSD__) || defined(__DragonFly__)
1139 # include <sys/endian.h> /* htole32 and friends */
1140 # define __BYTE_ORDER BYTE_ORDER
1141 # define __LITTLE_ENDIAN LITTLE_ENDIAN
1144 [FILE:311:patches/patch-roms_u-boot_lib_bch.c]
1145 --- roms/u-boot/lib/bch.c.orig 2023-10-16 17:58:11 UTC
1146 +++ roms/u-boot/lib/bch.c
1148 #include <linux/bitops.h>
1151 -#if defined(__FreeBSD__)
1152 +#if defined(__FreeBSD__) || defined(__DragonFly__)
1153 #include <sys/endian.h>
1154 #elif defined(__APPLE__)
1155 #include <machine/endian.h>
1158 [FILE:344:patches/patch-util_getauxval.c]
1159 --- util/getauxval.c.orig 2023-10-16 17:57:21 UTC
1160 +++ util/getauxval.c
1161 @@ -98,7 +98,7 @@ unsigned long qemu_getauxval(unsigned lo
1165 -#elif defined(__FreeBSD__)
1166 +#elif defined(__MidnightBSD__) || (defined(__FreeBSD__) && __FreeBSD_version__ > 1200001)
1167 #include <sys/auxv.h>
1169 unsigned long qemu_getauxval(unsigned long type)
1172 [FILE:486:patches/patch-util_meson.build]
1173 --- util/meson.build.orig 2023-10-16 17:57:21 UTC
1174 +++ util/meson.build
1175 @@ -14,7 +14,7 @@ util_ss.add(when: 'CONFIG_POSIX', if_tru
1176 util_ss.add(when: 'CONFIG_POSIX', if_true: files('event_notifier-posix.c'))
1177 util_ss.add(when: 'CONFIG_POSIX', if_true: files('mmap-alloc.c'))
1179 -if targetos == 'freebsd'
1180 +if targetos in ['freebsd', 'midnightbsd', 'dragonfly']
1183 util_ss.add(when: 'CONFIG_POSIX', if_true: [files('oslib-posix.c'), freebsd_dep])
1186 [FILE:7685:files/pkg-message-single]
1190 - Needs to set net.link.tap.user_open sysctl in order to use /dev/tap*
1191 networking as non-root. Don't forget to adjust device node permissions in
1194 - slirp (usermode networking) is fixed now in cvs, on FreeSBIE 1.0 guests you
1195 still have to manually do: echo nameserver 10.0.2.3 >/etc/resolv.conf but
1196 i've been told that that's normal. (fixed on FreeSBIE 1.1.) And you have
1197 to wait a bit for dhclient to do its thing; traffic to address 10.0.2.2 is
1198 routed to 127.1 on the host.
1200 - Expect timer problems when guest kernel HZ is > hosts, for example time
1201 sleep 1 takes 49 seconds and booting sleeps for minutes at the acd0 probe
1202 with a FreeSBIE 1.0 guest, thats because its kernel is built with HZ=5000,
1203 and FreeBSD's default is 100... (no longer a problem with FreeSBIE 1.1.)
1204 The linux 2.6 kernel uses 1000 by default btw. (changed to 250 later, and
1205 recent linux kernels now no longer have a fixed HZ, aka `tickless
1206 kernel'...) Enabling /dev/rtc doesn't seem to help either (not included
1207 since it needs a patch to emulators/rtc.)
1209 - Update: the above problem has gotten worse with FreeBSD guests
1210 somewhere before 8.0, mainly since the kernel now usually wants
1211 double or even quadruple number of timer irqs compared to HZ if
1212 it detects an apic (and at least early versions of FreeBSD 8 had
1213 a bug that essentially halved qemu's clock rate too); the only
1214 reason you usually don't see symptoms of this with FreeBSD 8
1215 guests is they automatically reduce their HZ to 100 when running
1216 in a VM while the default for the host kernel is still HZ=1000.
1217 Workaround: you can disable the apic clock in the guest by setting
1219 hint.apic.0.clock="0"
1221 in loader.conf(5) (or manually at the loader prompt), if that
1222 doesn't work the only things you can do is either reduce the
1223 guest's HZ to, say, 100 by setting e.g.
1227 from the loader as above (which usually is a good idea in a VM
1228 anyway and FreeBSD 8 now does by itself as mentioned), or otherwise
1229 increase the host's HZ to 2000 or even 4000 from the loader in
1232 - The -smb option (smb-export local dir to guest using the default
1233 slirp networking) needs the samba port/package installed
1234 in addition to qemu. (SAMBA knob.)
1236 - If you want to use usb devices connected to the host in the guest
1237 yot need either recent 10-current (not tested yet much) or you can
1238 use usbredir over the network (see below); also unless you are
1239 running qemu as root you then need to fix permissions for /dev/ugen*
1240 device nodes: if you are on 5.x or later (devfs) put a rule in
1241 /etc/devfs.rules, activate it in /etc/rc.conf and run /etc/rc.d/devfs
1242 restart. Example devfs.rules:
1245 add path 'ugen*' mode 660 group operator
1247 corresponding rc.conf line:
1249 devfs_system_ruleset="ugen_ruleset"
1251 - If you want to test the new (in 0.15.0) usb network redirection (USBREDIR
1252 option) see this thread by Hans de Goede <hdegoede <at> redhat.com>:
1254 http://thread.gmane.org/gmane.comp.emulators.qemu/110176/focus=110183
1260 1) Start usbredirserver for a usb device:
1261 sudo usbredirserver 045e:0772
1262 2) Start qemu with usb2 support + a chardev talking to usbredirserver +
1263 a usb-redir device using this chardev:
1265 -readconfig docs/ich9-ehci-uhci.cfg \
1266 -chardev socket,id=usbredirchardev,host=localhost,port=4000 \
1267 -device usb-redir,chardev=usbredirchardev,id=usbredirdev ...
1269 [you would replace docs/ich9-ehci-uhci.cfg with e.g.
1270 /raven/share/doc/qemu/docs/ich9-ehci-uhci.cfg, but turns out
1271 ehci was broken for me here with FreeBSD guests and the previous
1272 qemu version at least, I got:
1274 FETCHENTRY: entry at 22C5484 is of type 2 which is not supported yet processing error - resetting ehci HC
1275 Assertion failed: (0), function ehci_advance_state, file /data/ports/emulators/qemu-devel/work/qemu-0.15.0/hw/usb-ehci.c, line 2045.
1277 The new qemu version works better tho.]
1279 - Still usb: since the hub is no longer attached to the uchi controller and
1280 the wakeup mechanism, resume interrupt is not implemented yet linux guests
1281 will suspend the bus, i.e. they wont see devices usb_add'ed after its
1282 (linux') uhci module got loaded. Workaround: either add devices before
1283 linux loads the module or rmmod and modprobe it afterwards. [Not sure
1284 if this still applies to the new libusb host code used on recent
1287 - If you build qemu wihout SDL and then get crashes running it try passing it
1288 -nographic. This should probably be default in that case...
1290 - qemu's network boot roms (-boot n) have a bug when bootfiles sizes are a
1291 multiple of blksize, if this affects you (like with FreeBSD's /boot/pxeboot)
1294 cp /boot/pxeboot pxeboot-qemu && chmod +w pxeboot-qemu && echo >>pxeboot-qemu
1296 and then use pxeboot-qemu. Actually you need recent btx code
1297 (from after 7.0 was released) because of the real mode boot
1298 problem, so use at least pxeboot from there. And I just did that
1299 for the pxeboot extracted out of
1301 ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/200805/7.0-STABLE-200805-i386-bootonly.iso
1305 http://people.freebsd.org/~nox/qemu/pxeboot-qemu
1307 - If you use slirp (usernet, the default) and want to mount nfs into the guest
1308 and you are not running qemu as root, then mountd(8) on the exporting box
1309 needs to be run with -n in order to accept requests from ports >= 1024.
1311 - (not FreeBSD-specific:) There have been reports of qcow2 corruption with (at
1312 least) win2k guests on recent kvm (which uses similar qcow2 code than qemu
1313 now, see this thread:
1315 http://lists.gnu.org/archive/html/qemu-devel/2009-02/msg00713.html -
1317 the consensus on that thread seems to be that qcow(2) code has always been
1318 experimental and you should use raw images if you want reliability; raw is
1319 also usually faster.) You should be able to migrate existing images to raw
1320 using qemu-img(1)'s convert function; raw doesn't support advanced features
1321 like snapshots tho. [a few important qcow2 bugfixed have been committed in
1322 the meantime so this _might_ be less of an issue now; and meanwhile there
1323 also is the new qed format - I don't know how stable that one is.]
1325 - (also not FreeBSD-specific:) It is recommended to pass raw images using the
1326 new -drive syntax, specifying format=raw explicitly in order to avoid
1327 malicious guests being able to exploit the format autodetection thats
1328 otherwise getting used. (Not that you should run malicious guests anyway,
1329 but this eleminates at least a known attack vector.)
1331 - qemu now has improved physical cdrom support, but still there is at
1332 least one known problem: you need to have the guest eject the disc if you
1333 want to change it/take it out, or otherwise the guest may continue using
1334 state (like size) of the old disc. (You can also do like `change ide1-cd0
1335 /dev/acd0' in the monitor after taking out the disc if a guest cannot eject
1338 - The default configuration location (qemu-ifup script etc.) has been changed
1339 from /etc to PREFIX/etc (usually /raven/etc). Move your files accordingly.
1341 - The pcap code (-net nic... -net pcap,ifname=...) should work properly now,
1342 with only one exception: Advanced features like TSO used on the host
1343 interface can cause oversize packets which now do get truncated to avoid
1344 confusing/panicing guests but of course still will cause retransmissions.
1345 So if you see slow throughput and `pcap_send: packet size > ..., truncating'
1346 messages on qemu's tty try disabling TSO etc on the host interface at least
1350 [FILE:20:files/qemu-ifdown.sample]
1355 [FILE:20:files/qemu-ifup.sample]
1360 [FILE:323:dragonfly/patch-hw-ppc_newworld.c]
1361 --- hw/ppc/mac_newworld.c.orig 2023-10-16 17:57:21 UTC
1362 +++ hw/ppc/mac_newworld.c
1364 #include "hw/sysbus.h"
1367 +/* FreeBSD headers define this */
1372 #define MAX_IDE_BUS 2
1373 #define CFG_ADDR 0xf0000510
1374 #define TBFREQ (100UL * 1000UL * 1000UL)
1377 [FILE:334:dragonfly/patch-hw_ppc_mac__oldworld.c]
1378 --- hw/ppc/mac_oldworld.c.orig 2023-10-16 17:57:21 UTC
1379 +++ hw/ppc/mac_oldworld.c
1382 #define GRACKLE_BASE 0xfec00000
1384 +/* FreeBSD headers define this */
1389 static void fw_cfg_boot_set(void *opaque, const char *boot_device,
1394 [FILE:906:dragonfly/patch-util_coroutine-ucontext.c]
1395 --- util/coroutine-ucontext.c.orig 2023-10-16 17:57:21 UTC
1396 +++ util/coroutine-ucontext.c
1397 @@ -225,7 +225,15 @@ Coroutine *qemu_coroutine_new(void)
1398 2, arg.i[0], arg.i[1]);
1400 /* swapcontext() in, siglongjmp() back out */
1401 - if (!sigsetjmp(old_env, 0)) {
1402 + /* Save signal mask in this sigsetjmp, because makecontext on DragonFly
1403 + * leaves all signals blocked when entering the new context with
1405 + * Workaround this, by just having the signal mask restored by the
1406 + * siglongjmp that brings us back from qemu_coroutine_new().
1407 + * XXX Remove this workaround when the makecontext behaviour is fixed
1410 + if (!sigsetjmp(old_env, 1)) {
1411 start_switch_fiber_asan(COROUTINE_YIELD, &fake_stack_save, co->stack,
1413 start_switch_fiber_tsan(&fake_stack_save,