qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: experimental FreeBSD {k,}qemu port update


From: Juergen Lock
Subject: [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update
Date: Sun, 9 Apr 2006 18:34:37 +0200
User-agent: Mutt/1.4.2.1i

On Sun, Apr 02, 2006 at 12:21:52AM +0200, Juergen Lock wrote:
> Here is what I have tested on i386 with kqemu.  [...]

Updated version using yesterday's cvs snapshot and malc's latest
sound patch (still needs the kqemu port update from the linked message
which is archived here:
        http://docs.freebsd.org/cgi/mid.cgi?20060401222151.GA45952
)

 With this you no longer need QEMU_AUDIO_DRV=sdl to get sound working
with linux alsa guests. (thanks malc!)

Removed files:
files/patch-dyngen.h files/patch-hw-ne2000.c
files/patch-hw-usb-uhci.c files/patch-hw-usb.c files/patch-sdl.c
files/patch-slirp-socket.c files/patch-slirp_throttle
files/patch-target-i386-translate.c

New file:
files/patch-malc-17h_aqemu

Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/emulators/qemu/Makefile,v
retrieving revision 1.47
diff -u -r1.47 Makefile
--- Makefile    26 Mar 2006 15:11:36 -0000      1.47
+++ Makefile    9 Apr 2006 15:57:39 -0000
@@ -6,8 +6,7 @@
 #
 
 PORTNAME=      qemu
-PORTVERSION=   0.8.0
-PORTREVISION=  5
+PORTVERSION=   0.8.0s.20060408
 CATEGORIES=    emulators
 MASTER_SITES=  http://www.qemu.org/:release \
                http://people.fruitsalad.org/nox/qemu/:snapshot \
@@ -15,10 +14,8 @@
                http://qemu.dad-answers.com/download/qemu/:snapshot \
                http://people.brandeis.edu/~jcoiner/qemu_idedma/:idedma \
                http://people.freebsd.org/~maho/qemu/:misc
-DISTFILES=     ${DISTNAME}${EXTRACT_SUFX}:release
-.if defined (WITH_HACKS_IDEDMA) || defined (WITH_HACKS)
-DISTFILES+=    qemu_dma_patch.tar.gz:idedma
-.endif
+DISTNAME=      ${PORTNAME}-snapshot-2006-04-08_23
+DISTFILES=     ${DISTNAME}${EXTRACT_SUFX}:snapshot
 .if defined (WITH_HACKS_CIRRUS) || defined (WITH_HACKS)
 DISTFILES+=    patch3_cirrus:misc
 .endif
@@ -33,10 +30,11 @@
 RUN_DEPENDS+=  ${LOCALBASE}/sbin/smbd:${PORTSDIR}/net/samba
 .endif
 .if defined(WITH_KQEMU)
-BUILD_DEPENDS+=        
${LOCALBASE}/include/kqemu/kqemu.h:${PORTSDIR}/emulators/kqemu-kmod
+BUILD_DEPENDS+=        kqemu-kmod>=1.3.0pre5:${PORTSDIR}/emulators/kqemu-kmod
 .endif
 
 HAS_CONFIGURE= yes
+USE_BZIP2=     yes
 USE_GMAKE=     yes
 USE_GETOPT_LONG=       yes
 USE_SDL=       sdl
@@ -64,11 +62,9 @@
        @${ECHO_MSG} "Notice: you can build qemu with the (alpha!) kqemu 
accelerator kernel module"
        @${ECHO_MSG} "by defining WITH_KQEMU."
 .endif
-.if !defined(WITH_HACKS_IDEDMA) && !defined(WITH_HACKS_CIRRUS) && 
!defined(WITH_HACKS)
+.if !defined(WITH_HACKS_CIRRUS) && !defined(WITH_HACKS)
        @${ECHO_MSG} "You can build qemu with some hacks (esp. for speedup)"
        @${ECHO_MSG} "by defining WITH_HACKS, or specifically:"
-       @${ECHO_MSG} "1. WITH_HACKS_IDEDMA: IDE Bus-master DMA Support by John 
Coiner"
-       @${ECHO_MSG} 
"http://people.brandeis.edu/~jcoiner/qemu_idedma/qemu_dma_patch.html";
        @${ECHO_MSG} "2. WITH_HACKS_CIRRUS: higher speed on large display 
(cirrus_vga)"
        @${ECHO_MSG} "by Juergen Pfennig"
        @${ECHO_MSG} 
"http://lists.gnu.org/archive/html/qemu-devel/2006-01/msg00208.html";
@@ -92,9 +88,6 @@
        done
 
 post-patch:
-.if defined(WITH_HACKS_IDEDMA) || defined (WITH_HACKS)
-       @cd ${WRKDIR} ; ${TAR} xfz 
${DISTDIR}/${DIST_SUBDIR}/qemu_dma_patch.tar.gz ; ${CP} 
new_qemu_dma_patch/bios.bin ${WRKSRC}/pc-bios; cd ${WRKSRC}; ${PATCH} --quiet 
-p1 < ../new_qemu_dma_patch/qemu-piix4-udma.patch
-.endif
 .if defined(WITH_HACKS_CIRRUS) || defined (WITH_HACKS)
        @cd ${WRKSRC} ; ${PATCH} --quiet < 
${DISTDIR}/${DIST_SUBDIR}/patch3_cirrus
 .endif
Index: distinfo
===================================================================
RCS file: /home/ncvs/ports/emulators/qemu/distinfo,v
retrieving revision 1.27
diff -u -r1.27 distinfo
--- distinfo    21 Jan 2006 23:10:06 -0000      1.27
+++ distinfo    9 Apr 2006 15:58:11 -0000
@@ -1,9 +1,6 @@
-MD5 (qemu/qemu-0.8.0.tar.gz) = eb175b26583280706fe7e4d8910d320d
-SHA256 (qemu/qemu-0.8.0.tar.gz) = 
de388539ce86971a2cbe8474fca8b6160898c95772e3e6e08a7794d48db32a61
-SIZE (qemu/qemu-0.8.0.tar.gz) = 1497965
-MD5 (qemu/qemu_dma_patch.tar.gz) = 5e339dc201d411af56bad684d3f89338
-SHA256 (qemu/qemu_dma_patch.tar.gz) = 
cdf74bf5e079d835e100f116d940686b13ec2b7ed6aee5a6a97a4441ea5f2b8f
-SIZE (qemu/qemu_dma_patch.tar.gz) = 25837
+MD5 (qemu/qemu-snapshot-2006-04-08_23.tar.bz2) = 
74fd8046d94d5d800f1df35282dba733
+SHA256 (qemu/qemu-snapshot-2006-04-08_23.tar.bz2) = 
5cdcab83fa0fa6188c846f2d9c96d019300f6c7742d2ecf3cceae0a014fd6318
+SIZE (qemu/qemu-snapshot-2006-04-08_23.tar.bz2) = 1288264
 MD5 (qemu/patch3_cirrus) = ebe7ed9fce804c49e024bc93bfdfc810
 SHA256 (qemu/patch3_cirrus) = 
e862371834b7d895a896fbdb84fd9f70d17b5729a6f6789a48a61504fc941e11
 SIZE (qemu/patch3_cirrus) = 8817
Index: files/patch-bsdusb.patch
===================================================================
RCS file: /home/ncvs/ports/emulators/qemu/files/patch-bsdusb.patch,v
retrieving revision 1.1
diff -u -r1.1 patch-bsdusb.patch
--- files/patch-bsdusb.patch    18 Mar 2006 21:23:42 -0000      1.1
+++ files/patch-bsdusb.patch    27 Mar 2006 23:30:53 -0000
@@ -1,8 +1,9 @@
 Index: qemu/configure
-@@ -122,6 +122,7 @@
+@@ -122,7 +122,8 @@
  *)
  oss="yes"
  linux="yes"
+ user="yes"
 +usb="linux"
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
      kqemu="yes"
Index: files/patch-fbsd
===================================================================
RCS file: /home/ncvs/ports/emulators/qemu/files/patch-fbsd,v
retrieving revision 1.4
diff -u -r1.4 patch-fbsd
--- files/patch-fbsd    1 Oct 2005 13:25:09 -0000       1.4
+++ files/patch-fbsd    27 Mar 2006 23:39:21 -0000
@@ -1,5 +1,5 @@
 Index: qemu/Makefile
-@@ -13,7 +13,7 @@
+@@ -13,11 +13,14 @@
  endif
  DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1
  
@@ -8,14 +8,6 @@
        for d in $(TARGET_DIRS); do \
        $(MAKE) -C $$d $@ || exit 1 ; \
          done
-@@ -21,10 +21,13 @@
- ifdef CONFIG_WIN32
-       $(MAKE) -C kqemu -f Makefile.winnt
- else
--      $(MAKE) -C kqemu
-+      ( cd kqemu && $(BSD_MAKE) -f Makefile.freebsd )
- endif
- endif
  
 +bsd/libmath.a:
 +      ( cd bsd ; $(BSD_MAKE) CC=$(CC) )
@@ -23,7 +15,7 @@
  qemu-img$(EXESUF): qemu-img.c block.c block-cow.c block-qcow.c aes.c 
block-vmdk.c block-cloop.c block-dmg.c block-bochs.c block-vpc.c block-vvfat.c
        $(CC) -DQEMU_TOOL $(CFLAGS) $(LDFLAGS) $(DEFINES) -o $@ $^ -lz $(LIBS)
  
-@@ -33,6 +36,7 @@
+@@ -26,6 +29,7 @@
  
  clean:
  # avoid old build problems by removing potentially incorrect old files
@@ -31,25 +23,6 @@
        rm -f config.mak config.h op-i386.h opc-i386.h gen-op-i386.h op-arm.h 
opc-arm.h gen-op-arm.h 
        rm -f *.o *.a $(TOOLS) dyngen$(EXESUF) TAGS *.pod *~ */*~
        $(MAKE) -C tests clean
-@@ -40,7 +44,7 @@
-       $(MAKE) -C $$d $@ || exit 1 ; \
-         done
- ifdef CONFIG_KQEMU
--      $(MAKE) -C kqemu clean
-+      cd kqemu && $(BSD_MAKE) -f Makefile.freebsd clean
- endif
- 
- distclean: clean
-@@ -73,9 +77,6 @@
-       for d in $(TARGET_DIRS); do \
-       $(MAKE) -C $$d $@ || exit 1 ; \
-         done
--ifdef CONFIG_KQEMU
--      cd kqemu ; ./install.sh
--endif
- 
- # various test targets
- test speed test2: all
 Index: qemu/Makefile.target
 @@ -391,8 +391,8 @@
  VL_LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
Index: files/patch-malc-17h_aqemu
@@ -0,0 +1,243 @@
+Index: qemu/audio/alsaaudio.c
+===================================================================
+RCS file: /home/malc/cvsroot/bellard/qemu/audio/alsaaudio.c,v
+retrieving revision 1.1.1.4
+retrieving revision 1.1.1.1.2.8
+diff -u -r1.1.1.4 -r1.1.1.1.2.8
+--- audio/alsaaudio.c  21 Nov 2005 12:47:06 -0000      1.1.1.4
++++ audio/alsaaudio.c  7 Apr 2006 22:05:21 -0000       1.1.1.1.2.8
+@@ -61,8 +61,8 @@
+     .size_in_usec_in = 1,
+     .size_in_usec_out = 1,
+ #endif
+-    .pcm_name_out = "hw:0,0",
+-    .pcm_name_in = "hw:0,0",
++    .pcm_name_out = "default",
++    .pcm_name_in = "default",
+ #ifdef HIGH_LATENCY
+     .buffer_size_in = 400000,
+     .period_size_in = 400000 / 4,
+Index: qemu/audio/audio.h
+===================================================================
+RCS file: /home/malc/cvsroot/bellard/qemu/audio/audio.h,v
+retrieving revision 1.1.1.3
+retrieving revision 1.1.1.1.2.5
+diff -u -r1.1.1.3 -r1.1.1.1.2.5
+--- audio/audio.h      21 Nov 2005 12:47:06 -0000      1.1.1.3
++++ audio/audio.h      7 Apr 2006 22:05:21 -0000       1.1.1.1.2.5
+@@ -111,7 +111,7 @@
+ }
+ 
+ uint32_t popcount (uint32_t u);
+-inline uint32_t lsbindex (uint32_t u);
++uint32_t lsbindex (uint32_t u);
+ 
+ #ifdef __GNUC__
+ #define audio_MIN(a, b) ( __extension__ ({      \
+Index: qemu/audio/dsound_template.h
+===================================================================
+RCS file: /home/malc/cvsroot/bellard/qemu/audio/dsound_template.h,v
+retrieving revision 1.1.1.2
+retrieving revision 1.1.1.1.2.2
+diff -u -r1.1.1.2 -r1.1.1.1.2.2
+--- audio/dsound_template.h    5 Nov 2005 20:42:14 -0000       1.1.1.2
++++ audio/dsound_template.h    7 Apr 2006 22:05:21 -0000       1.1.1.1.2.2
+@@ -70,7 +70,13 @@
+     int i;
+     LPVOID p1 = NULL, p2 = NULL;
+     DWORD blen1 = 0, blen2 = 0;
++    DWORD flag;
+ 
++#ifdef DSBTYPE_IN
++    flag = entire ? DSCBLOCK_ENTIREBUFFER : 0;
++#else
++    flag = entire ? DSBLOCK_ENTIREBUFFER : 0;
++#endif
+     for (i = 0; i < conf.lock_retries; ++i) {
+         hr = glue (IFACE, _Lock) (
+             buf,
+@@ -80,13 +86,7 @@
+             &blen1,
+             &p2,
+             &blen2,
+-            (entire
+-#ifdef DSBTYPE_IN
+-             ? DSCBLOCK_ENTIREBUFFER
+-#else
+-             ? DSBLOCK_ENTIREBUFFER
+-#endif
+-             : 0)
++            flag
+             );
+ 
+         if (FAILED (hr)) {
+Index: qemu/audio/dsoundaudio.c
+===================================================================
+RCS file: /home/malc/cvsroot/bellard/qemu/audio/dsoundaudio.c,v
+retrieving revision 1.1.1.2
+retrieving revision 1.1.1.1.2.2
+diff -u -r1.1.1.2 -r1.1.1.1.2.2
+--- audio/dsoundaudio.c        5 Nov 2005 20:42:14 -0000       1.1.1.2
++++ audio/dsoundaudio.c        7 Apr 2006 22:05:21 -0000       1.1.1.1.2.2
+@@ -987,6 +987,12 @@
+     hr = IDirectSound_Initialize (s->dsound, NULL);
+     if (FAILED (hr)) {
+         dsound_logerr (hr, "Could not initialize DirectSound\n");
++
++        hr = IDirectSound_Release (s->dsound);
++        if (FAILED (hr)) {
++            dsound_logerr (hr, "Could not release DirectSound\n");
++        }
++        s->dsound = NULL;
+         return NULL;
+     }
+ 
+Index: qemu/audio/ossaudio.c
+===================================================================
+RCS file: /home/malc/cvsroot/bellard/qemu/audio/ossaudio.c,v
+retrieving revision 1.1.1.4
+retrieving revision 1.1.1.1.2.5
+diff -u -r1.1.1.4 -r1.1.1.1.2.5
+--- audio/ossaudio.c   21 Nov 2005 12:47:06 -0000      1.1.1.4
++++ audio/ossaudio.c   7 Apr 2006 22:23:42 -0000       1.1.1.1.2.5
+@@ -324,9 +324,18 @@
+             return 0;
+         }
+ 
+-        if (abinfo.bytes < 0 || abinfo.bytes > bufsize) {
+-            ldebug ("warning: Invalid available size, size=%d bufsize=%d\n",
+-                    abinfo.bytes, bufsize);
++        if (abinfo.bytes > bufsize) {
++#ifndef __FreeBSD__
++            dolog ("warning: Invalid available size, size=%d bufsize=%d\n"
++                   "please report your OS/audio hw to address@hidden",
++                   abinfo.bytes, bufsize);
++#endif
++            abinfo.bytes = bufsize;
++        }
++
++        if (abinfo.bytes < 0) {
++            dolog ("warning: Invalid available size, size=%d bufsize=%d\n",
++                   abinfo.bytes, bufsize);
+             return 0;
+         }
+ 
+Index: qemu/hw/es1370.c
+===================================================================
+RCS file: /home/malc/cvsroot/bellard/qemu/hw/es1370.c,v
+retrieving revision 1.1.1.4
+retrieving revision 1.1.1.1.2.7
+diff -u -r1.1.1.4 -r1.1.1.1.2.7
+--- hw/es1370.c        21 Nov 2005 12:47:06 -0000      1.1.1.4
++++ hw/es1370.c        7 Apr 2006 22:05:21 -0000       1.1.1.1.2.7
+@@ -479,9 +479,10 @@
+ IO_WRITE_PROTO (es1370_writeb)
+ {
+     ES1370State *s = opaque;
+-    addr = es1370_fixup (s, addr);
+     uint32_t shift, mask;
+ 
++    addr = es1370_fixup (s, addr);
++
+     switch (addr) {
+     case ES1370_REG_CONTROL:
+     case ES1370_REG_CONTROL + 1:
+Index: qemu/hw/sb16.c
+===================================================================
+RCS file: /home/malc/cvsroot/bellard/qemu/hw/sb16.c,v
+retrieving revision 1.1.1.4
+retrieving revision 1.1.1.1.2.6
+diff -u -r1.1.1.4 -r1.1.1.1.2.6
+--- hw/sb16.c  21 Nov 2005 12:47:06 -0000      1.1.1.4
++++ hw/sb16.c  7 Apr 2006 22:23:59 -0000       1.1.1.1.2.6
+@@ -193,6 +193,31 @@
+ #define DMA8_AUTO 1
+ #define DMA8_HIGH 2
+ 
++static void continue_dma8 (SB16State *s)
++{
++    if (s->freq > 0) {
++        audsettings_t as;
++
++        s->audio_free = 0;
++
++        as.freq = s->freq;
++        as.nchannels = 1 << s->fmt_stereo;
++        as.fmt = s->fmt;
++
++        s->voice = AUD_open_out (
++            &s->card,
++            s->voice,
++            "sb16",
++            s,
++            SB_audio_callback,
++            &as,
++            0                   /* little endian */
++            );
++    }
++
++    control (s, 1);
++}
++
+ static void dma_cmd8 (SB16State *s, int mask, int dma_len)
+ {
+     s->fmt = AUD_FMT_U8;
+@@ -201,7 +226,8 @@
+     s->fmt_signed = 0;
+     s->fmt_stereo = (s->mixer_regs[0x0e] & 2) != 0;
+     if (-1 == s->time_const) {
+-        s->freq = 11025;
++        if (s->freq <= 0)
++            s->freq = 11025;
+     }
+     else {
+         int tmp = (256 - s->time_const);
+@@ -239,27 +265,7 @@
+             s->freq, s->fmt_stereo, s->fmt_signed, s->fmt_bits,
+             s->block_size, s->dma_auto, s->fifo, s->highspeed);
+ 
+-    if (s->freq) {
+-        audsettings_t as;
+-
+-        s->audio_free = 0;
+-
+-        as.freq = s->freq;
+-        as.nchannels = 1 << s->fmt_stereo;
+-        as.fmt = s->fmt;
+-
+-        s->voice = AUD_open_out (
+-            &s->card,
+-            s->voice,
+-            "sb16",
+-            s,
+-            SB_audio_callback,
+-            &as,
+-            0                   /* little endian */
+-            );
+-    }
+-
+-    control (s, 1);
++    continue_dma8 (s);
+     speaker (s, 1);
+ }
+ 
+@@ -437,7 +443,7 @@
+             break;
+ 
+         case 0x1c:              /* Auto-Initialize DMA DAC, 8-bit */
+-            control (s, 1);
++            dma_cmd8 (s, DMA8_AUTO, -1);
+             break;
+ 
+         case 0x20:              /* Direct ADC, Juice/PL */
+@@ -531,7 +537,9 @@
+             break;
+ 
+         case 0xd4:              /* continue DMA operation. 8bit */
+-            control (s, 1);
++            /* KQ6 (or maybe Sierras audblst.drv in general) resets
++               the frequency between halt/continue */
++            continue_dma8 (s);
+             break;
+ 
+         case 0xd5:              /* halt DMA operation. 16bit */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]