Sun Sep 5 20:58:17 2021 UTC ()
qemu: Re-add NetBSD 9 NVMM support.


(nia)
diff -r1.284 -r1.285 pkgsrc/emulators/qemu/Makefile
diff -r1.183 -r1.184 pkgsrc/emulators/qemu/distinfo
diff -r1.8 -r1.9 pkgsrc/emulators/qemu/patches/patch-meson.build
diff -r0 -r1.4 pkgsrc/emulators/qemu/patches/patch-target_i386_nvmm_nvmm-all.c

cvs diff -r1.284 -r1.285 pkgsrc/emulators/qemu/Makefile (expand / switch to context diff)
--- pkgsrc/emulators/qemu/Makefile 2021/08/29 01:53:06 1.284
+++ pkgsrc/emulators/qemu/Makefile 2021/09/05 20:58:16 1.285
@@ -1,7 +1,8 @@
-# $NetBSD: Makefile,v 1.284 2021/08/29 01:53:06 mcf Exp $
+# $NetBSD: Makefile,v 1.285 2021/09/05 20:58:16 nia Exp $
 
 DISTNAME=	qemu-6.1.0
 PKGNAME=	${DISTNAME:S/-rc/rc/}
+PKGREVISION=	1
 CATEGORIES=	emulators
 MASTER_SITES=	https://download.qemu.org/
 EXTRACT_SUFX=	.tar.xz

cvs diff -r1.183 -r1.184 pkgsrc/emulators/qemu/distinfo (expand / switch to context diff)
--- pkgsrc/emulators/qemu/distinfo 2021/08/27 03:32:37 1.183
+++ pkgsrc/emulators/qemu/distinfo 2021/09/05 20:58:16 1.184
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.183 2021/08/27 03:32:37 ryoon Exp $
+$NetBSD: distinfo,v 1.184 2021/09/05 20:58:16 nia Exp $
 
 SHA1 (palcode-clipper-qemu-5.2.0nb8) = ddbf1dffb7c2b2157e0bbe9fb7db7e57105130b1
 RMD160 (palcode-clipper-qemu-5.2.0nb8) = 3f9fe19a40f7ca72ecfe047d1449e55b63cba3ee
@@ -21,7 +21,8 @@
 SHA1 (patch-hw_scsi_scsi-disk.c) = fdbf2f962a6dcb1a115a7f8a5b8790ff9295fb33
 SHA1 (patch-hw_usb_dev-mtp.c) = 94ddf53a41cc75810cfece1b8aef1831fab4ce43
 SHA1 (patch-include_sysemu_nvmm.h) = 2cf9ea36c77570136b0678fe3b1c126ca7fa04cd
-SHA1 (patch-meson.build) = 086400b3eebd0d5ce91af7779fa4f2a56d953542
+SHA1 (patch-meson.build) = 35f4d563e99dcc014a011bb4c7cddefac852d4cf
 SHA1 (patch-net_tap-solaris.c) = cc953c9a624dd55ace4e130d0b31bbfb956c17d5
 SHA1 (patch-roms_u-boot-sam460ex_Makefile) = 3a1bbf19b1422c10ebdd819eb0b711fafc78e2f2
+SHA1 (patch-target_i386_nvmm_nvmm-all.c) = 8f4b51a6460090d7826af1ae02840a208767345b
 SHA1 (patch-target_sparc_translate.c) = 7ec2add2fd808facb48b9a66ccc345599251bf76

cvs diff -r1.8 -r1.9 pkgsrc/emulators/qemu/patches/patch-meson.build (expand / switch to context diff)
--- pkgsrc/emulators/qemu/patches/patch-meson.build 2021/08/27 03:32:37 1.8
+++ pkgsrc/emulators/qemu/patches/patch-meson.build 2021/09/05 20:58:16 1.9
@@ -1,22 +1,24 @@
-$NetBSD: patch-meson.build,v 1.8 2021/08/27 03:32:37 ryoon Exp $
+$NetBSD: patch-meson.build,v 1.9 2021/09/05 20:58:16 nia Exp $
 
 * Add NetBSD support.
 * Detect iconv in libc properly for pkgsrc (pkgsrc removes -liconv)
   to fix qemu-system-aarch64 link.
 * Detect curses (non-ncurses{,w} too)
 
---- meson.build.orig	2021-08-04 16:29:08.000000000 +0000
+--- meson.build.orig	2021-08-24 17:35:41.000000000 +0000
 +++ meson.build
-@@ -237,7 +237,7 @@ if not get_option('hax').disabled()
+@@ -237,9 +237,7 @@ if not get_option('hax').disabled()
    endif
  endif
  if targetos == 'netbsd'
 -  if cc.has_header_symbol('nvmm.h', 'nvmm_cpu_stop', required: get_option('nvmm'))
-+  if cc.has_header_symbol('nvmm.h', 'nvmm_vcpu_stop', required: get_option('nvmm'))
-     nvmm = cc.find_library('nvmm', required: get_option('nvmm'))
-   endif
+-    nvmm = cc.find_library('nvmm', required: get_option('nvmm'))
+-  endif
++  nvmm = cc.find_library('nvmm', required: get_option('nvmm'))
    if nvmm.found()
-@@ -613,7 +613,7 @@ if have_system and not get_option('curse
+     accelerators += 'CONFIG_NVMM'
+   endif
+@@ -613,7 +611,7 @@ if have_system and not get_option('curse
        has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
      endif
      if has_curses_h
@@ -25,7 +27,7 @@
        foreach curses_libname : curses_libname_list
          libcurses = cc.find_library(curses_libname,
                                      required: false,
-@@ -631,7 +631,7 @@ if have_system and not get_option('curse
+@@ -631,7 +629,7 @@ if have_system and not get_option('curse
      endif
    endif
    if not get_option('iconv').disabled()

File Added: pkgsrc/emulators/qemu/patches/patch-target_i386_nvmm_nvmm-all.c
$NetBSD: patch-target_i386_nvmm_nvmm-all.c,v 1.4 2021/09/05 20:58:16 nia Exp $

Re-add NetBSD 9 support.

--- target/i386/nvmm/nvmm-all.c.orig	2021-08-24 17:35:41.000000000 +0000
+++ target/i386/nvmm/nvmm-all.c
@@ -750,7 +750,11 @@ nvmm_vcpu_loop(CPUState *cpu)
         nvmm_vcpu_pre_run(cpu);
 
         if (qatomic_read(&cpu->exit_request)) {
+#if NVMM_USER_VERSION >= 2
             nvmm_vcpu_stop(vcpu);
+#else
+            qemu_cpu_kick_self();
+#endif
         }
 
         /* Read exit_request before the kernel reads the immediate exit flag */
@@ -767,6 +771,7 @@ nvmm_vcpu_loop(CPUState *cpu)
         switch (exit->reason) {
         case NVMM_VCPU_EXIT_NONE:
             break;
+#if NVMM_USER_VERSION >= 2
         case NVMM_VCPU_EXIT_STOPPED:
             /*
              * The kernel cleared the immediate exit flag; cpu->exit_request
@@ -775,6 +780,7 @@ nvmm_vcpu_loop(CPUState *cpu)
             smp_wmb();
             qcpu->stop = true;
             break;
+#endif
         case NVMM_VCPU_EXIT_MEMORY:
             ret = nvmm_handle_mem(mach, vcpu);
             break;
@@ -888,8 +894,12 @@ nvmm_ipi_signal(int sigcpu)
 {
     if (current_cpu) {
         struct qemu_vcpu *qcpu = get_qemu_vcpu(current_cpu);
+#if NVMM_USER_VERSION >= 2
         struct nvmm_vcpu *vcpu = &qcpu->vcpu;
         nvmm_vcpu_stop(vcpu);
+#else
+        qcpu->stop = true;
+#endif
     }
 }