* [Qemu-devel] experimental FreeBSD {k,}qemu port update
@ 2006-04-01 22:21 Juergen Lock
2006-04-01 23:36 ` [Qemu-devel] " Juergen Lock
2006-04-09 16:34 ` [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update Juergen Lock
0 siblings, 2 replies; 6+ messages in thread
From: Juergen Lock @ 2006-04-01 22:21 UTC (permalink / raw)
To: freebsd-emulation, qemu-devel
Here is what I have tested on i386 with kqemu. I also tried
-kernel-kqemu with a few linux 2.6 guests but only got panics, one
screenshot of KANOTIX-2006-CeBIT-RC3.iso is at
http://www.mytempdir.com/562050 (all panics looked like that).
As amd64 guests with kqemu/amd64 are not supposed to work yet
I think we can't update the port yet, so i only post the following
for ppl wanting to experiment...
First the patch for emulators/kqemu-kmod, after that after XXXX
the patch for the qemu port, updating it to today's cvs snapshot:
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/emulators/kqemu-kmod/Makefile,v
retrieving revision 1.3
diff -u -r1.3 Makefile
--- Makefile 6 Nov 2005 09:03:02 -0000 1.3
+++ Makefile 1 Apr 2006 22:08:19 -0000
@@ -6,15 +6,14 @@
#
PORTNAME= kqemu
-PORTVERSION= 0.7.2
-PORTREVISION= 1
+PORTVERSION= 1.3.0pre5
CATEGORIES= emulators
MASTER_SITES= http://fabrice.bellard.free.fr/qemu/
PKGNAMESUFFIX= -kmod
DIST_SUBDIR= kqemu
-MAINTAINER= nork@FreeBSD.org
-COMMENT= Kernel Acceralator for QEMU CPU Emulator
+MAINTAINER= nox@jelal.kn-bremen.de
+COMMENT= Kernel Acceralator for QEMU CPU Emulator (development version)
ONLY_FOR_ARCHS= i386 amd64
NO_PACKAGE= "Depends on kernel, and module not redistributable"
@@ -24,7 +23,6 @@
PLIST_FILES+= "@cwd /"
PLIST_FILES+= ${KMODDIR:C,^/,,}/kqemu.ko
-WRKSRC= ${WRKDIR}/${PORTNAME}
MAKEFILE= Makefile.freebsd
.include <bsd.port.pre.mk>
Index: distinfo
===================================================================
RCS file: /home/ncvs/ports/emulators/kqemu-kmod/distinfo,v
retrieving revision 1.2
diff -u -r1.2 distinfo
--- distinfo 22 Jan 2006 09:47:20 -0000 1.2
+++ distinfo 27 Mar 2006 23:06:15 -0000
@@ -1,3 +1,3 @@
-MD5 (kqemu/kqemu-0.7.2.tar.gz) = 02cfdecda90458d6393781496ec6b48b
-SHA256 (kqemu/kqemu-0.7.2.tar.gz) = 4158b2c67603f5256a78d0065d715bde068a457aa58bbfef12dda20fe7f7ad8b
-SIZE (kqemu/kqemu-0.7.2.tar.gz) = 79314
+MD5 (kqemu/kqemu-1.3.0pre5.tar.gz) = 2dc13fa4645a8d7c69f0f42aabf64cf5
+SHA256 (kqemu/kqemu-1.3.0pre5.tar.gz) = 2f2983393a4e007741685ef4e889fc91fe7619a038fc43998d414e441f5813a7
+SIZE (kqemu/kqemu-1.3.0pre5.tar.gz) = 189395
Index: files/patch-kqemu-freebsd.c
===================================================================
RCS file: /home/ncvs/ports/emulators/kqemu-kmod/files/patch-kqemu-freebsd.c,v
retrieving revision 1.2
diff -u -r1.2 patch-kqemu-freebsd.c
--- files/patch-kqemu-freebsd.c 6 Nov 2005 09:03:02 -0000 1.2
+++ files/patch-kqemu-freebsd.c 8 Feb 2006 23:11:32 -0000
@@ -1,506 +1,9 @@
---- kqemu-freebsd.c.orig Sun Aug 14 18:34:06 2005
-+++ kqemu-freebsd.c Thu Nov 3 17:15:47 2005
-@@ -3,32 +3,55 @@
- #include <sys/param.h>
- #include <sys/systm.h>
- #include <sys/conf.h>
-+#include <sys/ctype.h>
-+#include <sys/fcntl.h>
- #include <sys/ioccom.h>
- #include <sys/malloc.h>
- #include <sys/module.h>
-+#if __FreeBSD_version >= 500000
- #include <sys/mutex.h>
-+#endif
- #include <sys/proc.h>
-+#include <sys/resourcevar.h>
-+#if __FreeBSD_version >= 500000
- #include <sys/sched.h>
-+#endif
- #include <sys/signalvar.h>
- #include <sys/kernel.h>
-+#include <sys/sysctl.h>
-+#include <sys/uio.h>
-+#if __FreeBSD_version < 500000
-+#include <sys/buf.h>
-+#endif
-+
- #include <vm/vm.h>
- #include <vm/vm_param.h>
- #include <vm/vm_extern.h>
- #include <vm/pmap.h>
- #include <vm/vm_map.h>
- #include <vm/vm_kern.h>
-+#include <vm/vm_page.h>
-+
- #include <machine/vmparam.h>
- #include <machine/stdarg.h>
-
- #include "kqemu-kernel.h"
-
-+#ifndef KQEMU_MAJOR
-+#define KQEMU_MAJOR 250
-+#endif
-+
- MALLOC_DECLARE(M_KQEMU);
- MALLOC_DEFINE(M_KQEMU, "kqemu", "kqemu buffers");
-
-+int kqemu_debug;
-+SYSCTL_INT(_debug, OID_AUTO, kqemu_debug, CTLFLAG_RW, &kqemu_debug, 0,
-+ "kqemu debug flag");
-+
- #define USER_BASE 0x1000
-
- /* lock the page at virtual address 'user_addr' and return its
-- physical page index. Return -1 if error */
-+ physical page index. Return NULL if error */
- struct kqemu_user_page *CDECL kqemu_lock_user_page(unsigned long *ppage_index,
- unsigned long user_addr)
- {
-@@ -37,14 +60,18 @@
- vm_paddr_t pa = 0;
- int ret;
- pmap_t pmap;
-+#if __FreeBSD_version >= 500000
- ret = vm_map_wire(&vm->vm_map, va, va+PAGE_SIZE, VM_MAP_WIRE_USER);
-+#else
-+ ret = vm_map_user_pageable(&vm->vm_map, va, va+PAGE_SIZE, FALSE);
-+#endif
- if (ret != KERN_SUCCESS) {
-- printf("kqemu_lock_user_page(%08lx) failed, ret=%d\n", user_addr, ret);
-+ kqemu_log("kqemu_lock_user_page(%08lx) failed, ret=%d\n", user_addr, ret);
- return NULL;
- }
- pmap = vm_map_pmap(&vm->vm_map);
- pa = pmap_extract(pmap, va);
-- // printf("kqemu_lock_user_page(%08lx) va=%08x pa=%08x\n", user_addr, va, pa);
-+ /* kqemu_log("kqemu_lock_user_page(%08lx) va=%08x pa=%08x\n", user_addr, va, pa); */
- *ppage_index = pa >> PAGE_SHIFT;
- return (struct kqemu_user_page *)va;
- }
-@@ -54,12 +81,16 @@
- struct vmspace *vm = curproc->p_vmspace;
- vm_offset_t va;
- int ret;
-- // printf("kqemu_unlock_user_page(%08lx)\n", page_index);
-+ /* kqemu_log("kqemu_unlock_user_page(%08lx)\n", page_index); */
- va = (vm_offset_t)page;
-+#if __FreeBSD_version >= 500000
- ret = vm_map_unwire(&vm->vm_map, va, va+PAGE_SIZE, VM_MAP_WIRE_USER);
-+#else
-+ ret = vm_map_user_pageable(&vm->vm_map, va, va+PAGE_SIZE, TRUE);
-+#endif
- #if 0
- if (ret != KERN_SUCCESS) {
-- printf("kqemu_unlock_user_page(%08lx) failed, ret=%d\n", page_index, ret);
-+ kqemu_log("kqemu_unlock_user_page(%08lx) failed, ret=%d\n", page_index, ret);
- }
- #endif
- }
-@@ -76,20 +107,21 @@
-
- va = kmem_alloc(kernel_map, PAGE_SIZE);
- if (va == 0) {
-- printf("kqemu_alloc_zeroed_page: NULL\n");
-- return -1;
-+ kqemu_log("kqemu_alloc_zeroed_page: NULL\n");
-+ return NULL;
- }
- pmap = vm_map_pmap(kernel_map);
- pa = pmap_extract(pmap, va);
-- // printf("kqemu_alloc_zeroed_page: %08x\n", pa);
-+ /* kqemu_log("kqemu_alloc_zeroed_page: %08x\n", pa); */
- *ppage_index = pa >> PAGE_SHIFT;
- return (struct kqemu_page *)va;
- }
-
- void CDECL kqemu_free_page(struct kqemu_page *page)
- {
-- // printf("kqemu_free_page(%08lx)\n", page_index);
-- /* XXX: do it */
-+ if (kqemu_debug > 0)
-+ kqemu_log("kqemu_free_page(%p)\n", page);
-+ kmem_free(kernel_map, (vm_offset_t) page, PAGE_SIZE);
- }
-
- /* return kernel address of the physical page page_index */
-@@ -103,42 +135,29 @@
- GB of physical memory */
- void * CDECL kqemu_vmalloc(unsigned int size)
- {
-- struct vmspace *vm = curproc->p_vmspace;
-- vm_offset_t va = USER_BASE;
-- int rv;
-- if (size % PAGE_SIZE != 0) {
-- printf("kqemu_vmalloc(%d) not a multiple of page size\n", size);
-- return NULL;
-- }
-- rv = vm_map_find(&vm->vm_map, NULL, 0, &va, size, 1,
-- VM_PROT_ALL, VM_PROT_ALL, 0);
-- if (rv != KERN_SUCCESS) {
-- printf("kqemu_vmalloc(%d) failed rv=%d\n", size, rv);
-- return NULL;
-- }
-- printf("kqemu_vmalloc(%d): %08x\n", size, va);
-- return (void *)va;
-+ void *ptr = malloc(size, M_KQEMU, M_WAITOK);
-+ if (kqemu_debug > 0)
-+ kqemu_log("kqemu_vmalloc(%d): %p\n", size, ptr);
-+ return ptr;
- }
-
- void CDECL kqemu_vfree(void *ptr)
- {
-- printf("kqemu_vfree(%p)\n", ptr);
-+ if (kqemu_debug > 0)
-+ kqemu_log("kqemu_vfree(%p)\n", ptr);
-+ free(ptr, M_KQEMU);
- }
-
- /* return the physical page index for a given virtual page */
- unsigned long CDECL kqemu_vmalloc_to_phys(const void *vaddr)
- {
-- struct vmspace *vm = curproc->p_vmspace;
-- vm_paddr_t pa;
-- pmap_t pmap;
--
-- pmap = vm_map_pmap(&vm->vm_map);
-- pa = pmap_extract(pmap, (vm_offset_t)vaddr);
-+ vm_paddr_t pa = vtophys(vaddr);
- if (pa == 0) {
-- printf("kqemu_vmalloc_to_phys(%p)->error\n", vaddr);
-+ kqemu_log("kqemu_vmalloc_to_phys(%p)->error\n", vaddr);
- return -1;
- }
-- printf("kqemu_vmalloc_to_phys(%p)->%08x\n", vaddr, pa);
-+ if (kqemu_debug > 0)
-+ kqemu_log("kqemu_vmalloc_to_phys(%p)->%08x\n", vaddr, pa);
- return pa >> PAGE_SHIFT;
- }
-
-@@ -154,16 +173,48 @@
- {
- }
-
-+#if __FreeBSD_version < 500000
-+static int
-+curpriority_cmp(struct proc *p)
-+{
-+ int c_class, p_class;
-+
-+ c_class = RTP_PRIO_BASE(curproc->p_rtprio.type);
-+ p_class = RTP_PRIO_BASE(p->p_rtprio.type);
-+ if (p_class != c_class)
-+ return (p_class - c_class);
-+ if (p_class == RTP_PRIO_NORMAL)
-+ return (((int)p->p_priority - (int)curpriority) / PPQ);
-+ return ((int)p->p_rtprio.prio - (int)curproc->p_rtprio.prio);
-+}
-+
-+/* return TRUE if a signal is pending (i.e. the guest must stop
-+ execution) */
-+int CDECL kqemu_schedule(void)
-+{
-+ struct proc *p = curproc;
-+ if (curpriority_cmp(p) > 0) {
-+ int s = splhigh();
-+ p->p_priority = MAXPRI;
-+ setrunqueue(p);
-+ p->p_stats->p_ru.ru_nvcsw++;
-+ mi_switch();
-+ splx(s);
-+ }
-+ return issignal(curproc) != 0;
-+}
-+#else
- /* return TRUE if a signal is pending (i.e. the guest must stop
- execution) */
- int CDECL kqemu_schedule(void)
- {
-- // printf("kqemu_schedule\n");
-+ /* kqemu_log("kqemu_schedule\n"); */
- mtx_lock_spin(&sched_lock);
- mi_switch(SW_VOL, NULL);
- mtx_unlock_spin(&sched_lock);
- return SIGPENDING(curthread);
- }
-+#endif
-
- static char log_buf[4096];
-
-@@ -176,47 +227,160 @@
- va_end(ap);
- }
-
-+#define KQEMU_MAX_INSTANCES 4
-+
- struct kqemu_instance {
-- // struct semaphore sem;
-+#if __FreeBSD_version >= 500000
-+ TAILQ_ENTRY(kqemu_instance) kqemu_ent;
-+ struct cdev *kqemu_dev;
-+#endif
-+ /* struct semaphore sem; */
- struct kqemu_state *state;
+Index: kqemu-freebsd.c
+@@ -236,6 +236,7 @@
};
-+static int kqemu_ref_count = 0;
+ static int kqemu_ref_count = 0;
+static int max_locked_pages;
-+
-+#if __FreeBSD_version < 500000
-+static dev_t kqemu_dev;
-+#else
-+static struct clonedevs *kqemuclones;
-+static TAILQ_HEAD(,kqemu_instance) kqemuhead = TAILQ_HEAD_INITIALIZER(kqemuhead);
-+static eventhandler_tag clonetag;
-+#endif
-+
- static d_close_t kqemu_close;
- static d_open_t kqemu_open;
- static d_ioctl_t kqemu_ioctl;
-
- static struct cdevsw kqemu_cdevsw = {
-+#if __FreeBSD_version < 500000
-+ /* open */ kqemu_open,
-+ /* close */ kqemu_close,
-+ /* read */ noread,
-+ /* write */ nowrite,
-+ /* ioctl */ kqemu_ioctl,
-+ /* poll */ nopoll,
-+ /* mmap */ nommap,
-+ /* strategy */ nostrategy,
-+ /* name */ "kqemu",
-+ /* maj */ KQEMU_MAJOR,
-+ /* dump */ nodump,
-+ /* psize */ nopsize,
-+ /* flags */ 0,
-+ /* bmaj */ -1
-+#else
- .d_version = D_VERSION,
- .d_flags = D_NEEDGIANT,
- .d_open = kqemu_open,
- .d_ioctl = kqemu_ioctl,
- .d_close = kqemu_close,
- .d_name = "kqemu"
-+#endif
- };
-
--/* For use with make_dev(9)/destroy_dev(9). */
--static struct cdev *kqemu_dev;
-+#if __FreeBSD_version >= 500000
-+static void
-+#if __FreeBSD_version >= 600034
-+kqemu_clone(void *arg, struct ucred *cred, char *name, int namelen,
-+struct cdev **dev)
-+#else
-+kqemu_clone(void *arg, char *name, int namelen, struct cdev **dev)
-+#endif
-+{
-+ int unit, r;
-+ if (*dev != NULL)
-+ return;
-+
-+ if (strcmp(name, "kqemu") == 0)
-+ unit = -1;
-+ else if (dev_stdclone(name, NULL, "kqemu", &unit) != 1)
-+ return; /* Bad name */
-+ if (unit != -1 && unit > KQEMU_MAX_INSTANCES)
-+ return;
-+
-+ r = clone_create(&kqemuclones, &kqemu_cdevsw, &unit, dev, 0);
-+ if (r) {
-+ *dev = make_dev(&kqemu_cdevsw, unit2minor(unit),
-+ UID_ROOT, GID_WHEEL, 0660, "kqemu%d", unit);
-+ if (*dev != NULL) {
-+ dev_ref(*dev);
-+ (*dev)->si_flags |= SI_CHEAPCLONE;
-+ }
-+ }
-+}
-+#endif
-+
-+static void kqemu_destroy(struct kqemu_instance *ks)
-+{
-+#if __FreeBSD_version >= 500000
-+ struct cdev *dev = ks->kqemu_dev;
-+#endif
-+
-+ if (ks->state) {
-+ kqemu_delete(ks->state);
-+ ks->state = NULL;
-+ }
-+
-+#if __FreeBSD_version >= 500000
-+ dev->si_drv1 = NULL;
-+ TAILQ_REMOVE(&kqemuhead, ks, kqemu_ent);
-+ destroy_dev(dev);
-+#endif
-+ free(ks, M_KQEMU);
-+ --kqemu_ref_count;
-+}
-
- /* ARGSUSED */
- static int
-+#if __FreeBSD_version < 500000
-+kqemu_open(dev_t dev, int flags, int fmt __unused, struct proc *p)
-+{
-+#else
- kqemu_open(struct cdev *dev, int flags, int fmt __unused,
- struct thread *td)
- {
-+ struct proc *p = td->td_proc;
-+#endif
- struct kqemu_instance *ks;
-+
-+#if __FreeBSD_version >= 500000
-+ if (kqemu_ref_count >= KQEMU_MAX_INSTANCES)
-+#else
-+ if (dev->si_drv1 || kqemu_ref_count >= KQEMU_MAX_INSTANCES)
-+#endif
-+ return(EBUSY);
-+
-+ if ((flags & (FREAD|FWRITE)) == FREAD)
-+ return(EPERM);
-+
- ks = malloc(sizeof(struct kqemu_instance), M_KQEMU, M_WAITOK);
- if (ks == NULL) {
-- printf("malloc failed\n");
-+ kqemu_log("malloc failed\n");
- return ENOMEM;
- }
-- ks->state = NULL;
-+ memset(ks, 0, sizeof *ks);
-+#if __FreeBSD_version >= 500000
-+ ks->kqemu_dev = dev;
-+ TAILQ_INSERT_TAIL(&kqemuhead, ks, kqemu_ent);
-+#endif
-+ kqemu_ref_count++;
-+
- dev->si_drv1 = ks;
-+ if (kqemu_debug > 0)
-+ kqemu_log("opened by pid=%d\n", p->p_pid);
- return 0;
- }
-
- /* ARGSUSED */
- static int
-+#if __FreeBSD_version < 500000
-+kqemu_ioctl(dev_t dev, u_long cmd, caddr_t addr,
-+ int flags __unused, struct proc *p)
-+#else
- kqemu_ioctl(struct cdev *dev, u_long cmd, caddr_t addr,
- int flags __unused, struct thread *td)
-+#endif
- {
- int error = 0;
- int ret;
-@@ -231,8 +395,9 @@
- break;
- }
- d1 = *(struct kqemu_init *)addr;
-- printf("ram_base=%p ram_size=%ld\n", d1.ram_base, d1.ram_size);
-- s = kqemu_init(d, 16000);
-+ if (kqemu_debug > 0)
-+ kqemu_log("ram_base=%p ram_size=%ld\n", d1.ram_base, d1.ram_size);
-+ s = kqemu_init(d, max_locked_pages);
- if (s == NULL) {
- error = ENOMEM;
- break;
-@@ -248,9 +413,16 @@
- }
- ctx = kqemu_get_cpu_state(s);
- *ctx = *(struct kqemu_cpu_state *)addr;
-+#if __FreeBSD_version >= 500000
- DROP_GIANT();
-+#endif
- ret = kqemu_exec(s);
-+#if __FreeBSD_version >= 500000
- PICKUP_GIANT();
-+ td->td_retval[0] = ret;
-+#else
-+ p->p_retval[0] = ret;
-+#endif
- *(struct kqemu_cpu_state *)addr = *ctx;
- break;
- }
-@@ -265,10 +437,22 @@
-
- /* ARGSUSED */
- static int
-+#if __FreeBSD_version < 500000
-+kqemu_close(dev_t dev, int flags, int fmt __unused, struct proc *p)
-+{
-+#else
- kqemu_close(struct cdev *dev __unused, int flags, int fmt __unused,
- struct thread *td)
- {
-- return 0;
-+ struct proc *p = td->td_proc;
-+#endif
-+ struct kqemu_instance *ks = (struct kqemu_instance *) dev->si_drv1;
-+
-+ kqemu_destroy(ks);
-+
-+ if (kqemu_debug > 0)
-+ kqemu_log("closed by pid=%d\n", p->p_pid);
-+ return 0;
- }
-
- /* ARGSUSED */
-@@ -276,15 +460,55 @@
- kqemu_modevent(module_t mod __unused, int type, void *data __unused)
- {
- int error = 0;
-+#if __FreeBSD_version < 500000
-+ int rc;
-+#else
-+ struct kqemu_instance *ks;
-+#endif
+ static struct kqemu_global_state *kqemu_gs = NULL;
- switch (type) {
- case MOD_LOAD:
- printf("kqemu version 0x%08x\n", KQEMU_VERSION);
-+ max_locked_pages = physmem / (2 * KQEMU_MAX_INSTANCES);
-+ if (max_locked_pages > 32768)
-+ max_locked_pages = 32768;
-+#if __FreeBSD_version < 500000
-+ if ((rc = cdevsw_add(&kqemu_cdevsw))) {
-+ kqemu_log("error registering cdevsw, rc=%d\n", rc);
-+ error = ENOENT;
-+ break;
-+ }
- kqemu_dev = make_dev(&kqemu_cdevsw, 0,
-- UID_ROOT, GID_WHEEL, 0666, "kqemu");
-+ UID_ROOT, GID_WHEEL, 0660, "kqemu");
-+#else
-+ clone_setup(&kqemuclones);
-+ clonetag = EVENTHANDLER_REGISTER(dev_clone, kqemu_clone, 0, 1000);
-+ if (!clonetag) {
-+ error = ENOMEM;
-+ break;
-+ }
-+#endif
-+ kqemu_log("KQEMU installed, max_instances=%d max_locked_mem=%dkB.\n",
-+ KQEMU_MAX_INSTANCES, max_locked_pages * 4);
-+
-+ kqemu_ref_count = 0;
- break;
- case MOD_UNLOAD:
-+ if (kqemu_ref_count > 0) {
-+ error = EBUSY;
-+ break;
-+ }
-+#if __FreeBSD_version < 500000
- destroy_dev(kqemu_dev);
-+ if ((rc = cdevsw_remove(&kqemu_cdevsw)))
-+ kqemu_log("error unregistering, rc=%d\n", rc);
-+#else
-+ EVENTHANDLER_DEREGISTER(dev_clone, clonetag);
-+ while ((ks = TAILQ_FIRST(&kqemuhead)) != NULL) {
-+ kqemu_destroy(ks);
-+ }
-+ clone_cleanup(&kqemuclones);
-+#endif
- break;
- case MOD_SHUTDOWN:
- break;
+ #if __FreeBSD_version < 500000
XXXX here is the patch for emulators/qemu:
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
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 1 Apr 2006 22:04:41 -0000
@@ -6,8 +6,7 @@
#
PORTNAME= qemu
-PORTVERSION= 0.8.0
-PORTREVISION= 5
+PORTVERSION= 0.8.0s.20060401
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-01_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
@@ -48,6 +46,7 @@
ONLY_FOR_ARCHS= amd64 i386
.if defined(WITH_KQEMU)
CONFIGURE_ARGS+= --enable-kqemu
+CONFLICTS= kqemu-kmod-0*
.else
CONFIGURE_ARGS+= --disable-kqemu
.endif
@@ -64,11 +63,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 +89,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 1 Apr 2006 21:51:06 -0000
@@ -1,9 +1,3 @@
-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/patch3_cirrus) = ebe7ed9fce804c49e024bc93bfdfc810
-SHA256 (qemu/patch3_cirrus) = e862371834b7d895a896fbdb84fd9f70d17b5729a6f6789a48a61504fc941e11
-SIZE (qemu/patch3_cirrus) = 8817
+MD5 (qemu/qemu-snapshot-2006-04-01_23.tar.bz2) = e40bde18f4f9d5b9306002d4bd308255
+SHA256 (qemu/qemu-snapshot-2006-04-01_23.tar.bz2) = eac9c496d9710d1ecf9223ad7be3fbb674788ba81819b81a98337f8a42e09aed
+SIZE (qemu/qemu-snapshot-2006-04-01_23.tar.bz2) = 1286796
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
^ permalink raw reply [flat|nested] 6+ messages in thread* [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update
2006-04-01 22:21 [Qemu-devel] experimental FreeBSD {k,}qemu port update Juergen Lock
@ 2006-04-01 23:36 ` Juergen Lock
2006-04-02 0:22 ` Juergen Lock
2006-04-05 2:41 ` NAKATA Maho
2006-04-09 16:34 ` [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update Juergen Lock
1 sibling, 2 replies; 6+ messages in thread
From: Juergen Lock @ 2006-04-01 23:36 UTC (permalink / raw)
To: freebsd-emulation, qemu-devel
On Sun, Apr 02, 2006 at 12:21:52AM +0200, Juergen Lock wrote:
> Here is what I have tested on i386 with kqemu. I also tried
> -kernel-kqemu with a few linux 2.6 guests but only got panics, one
> screenshot of KANOTIX-2006-CeBIT-RC3.iso is at
> http://www.mytempdir.com/562050 (all panics looked like that).
Update: installed the qemu port (at first i was only using it from
within the work dir), and now it works! And pretty fast too! :)
Probably the bios got updated since 0.8.0, or something.
kudos to Fabrice for this nice kqemu update...
Juergen
^ permalink raw reply [flat|nested] 6+ messages in thread* [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update
2006-04-01 23:36 ` [Qemu-devel] " Juergen Lock
@ 2006-04-02 0:22 ` Juergen Lock
2006-04-05 2:41 ` NAKATA Maho
1 sibling, 0 replies; 6+ messages in thread
From: Juergen Lock @ 2006-04-02 0:22 UTC (permalink / raw)
To: freebsd-emulation, qemu-devel
On Sun, Apr 02, 2006 at 01:36:17AM +0200, Juergen Lock wrote:
> On Sun, Apr 02, 2006 at 12:21:52AM +0200, Juergen Lock wrote:
> > Here is what I have tested on i386 with kqemu. I also tried
> > -kernel-kqemu with a few linux 2.6 guests but only got panics, one
> > screenshot of KANOTIX-2006-CeBIT-RC3.iso is at
> > http://www.mytempdir.com/562050 (all panics looked like that).
>
> Update: installed the qemu port (at first i was only using it from
> within the work dir), and now it works! And pretty fast too! :)
A small `benchmark':
1. `normal' kqemu:
480s from `return' in grub until kde desktop up with:
QEMU_AUDIO_DRV=sdl qemu -monitor stdio -cdrom ~/iso/KANOTIX-2006-CeBIT-RC3.iso -m 256 -usb -soundhw es1370 -localtime
then: 47s from clicking on `root shell' menu entry until rxvt up
2. -kernel-kqemu:
128s from `return' in grub until kde desktop up with:
QEMU_AUDIO_DRV=sdl qemu -monitor stdio -cdrom ~/iso/KANOTIX-2006-CeBIT-RC3.iso -m 256 -usb -soundhw es1370 -localtime -kernel-kqemu
then below 5s from clicking on `root shell' menu entry until rxvt up!
(dmesg is filled with lines like:
npxdna: fpcurthread == curthread 38482 times
tho)
host CPU: AMD Athlon(tm) XP 2600+ (2075 MHz), 512 MB RAM.
...is vmware much faster? :)
Juergen
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update
2006-04-01 23:36 ` [Qemu-devel] " Juergen Lock
2006-04-02 0:22 ` Juergen Lock
@ 2006-04-05 2:41 ` NAKATA Maho
2006-04-09 15:39 ` John's IDE DMA patch and qemu cvs (was: Re: [Qemu-devel] Re: experimental FreeBSD {k, }qemu port update) Juergen Lock
1 sibling, 1 reply; 6+ messages in thread
From: NAKATA Maho @ 2006-04-05 2:41 UTC (permalink / raw)
To: qemu-devel, qemu-l; +Cc: freebsd-emulation
In Message-ID: <20060401233617.GA52848@saturn.kn-bremen.de>
Juergen Lock <qemu-l@jelal.kn-bremen.de> wrote:
> On Sun, Apr 02, 2006 at 12:21:52AM +0200, Juergen Lock wrote:
> > Here is what I have tested on i386 with kqemu. I also tried
> > -kernel-kqemu with a few linux 2.6 guests but only got panics, one
> > screenshot of KANOTIX-2006-CeBIT-RC3.iso is at
> > http://www.mytempdir.com/562050 (all panics looked like that).
>
> Update: installed the qemu port (at first i was only using it from
> within the work dir), and now it works! And pretty fast too! :)
Huge thanks for Fabrice and Juergen!!!
I updated your port with IDE DMA hack:
http://people.freebsd.org/~maho/qemu/qemu20060405.tar.gz
-- NAKATA, Maho (maho@FreeBSD.org)
^ permalink raw reply [flat|nested] 6+ messages in thread* John's IDE DMA patch and qemu cvs (was: Re: [Qemu-devel] Re: experimental FreeBSD {k, }qemu port update)
2006-04-05 2:41 ` NAKATA Maho
@ 2006-04-09 15:39 ` Juergen Lock
0 siblings, 0 replies; 6+ messages in thread
From: Juergen Lock @ 2006-04-09 15:39 UTC (permalink / raw)
To: chat95; +Cc: freebsd-emulation, qemu-devel
In article <20060405.114110.74679746.chat95@mac.com> you write:
>In Message-ID: <20060401233617.GA52848@saturn.kn-bremen.de>
>Juergen Lock <qemu-l@jelal.kn-bremen.de> wrote:
>
>> On Sun, Apr 02, 2006 at 12:21:52AM +0200, Juergen Lock wrote:
>> > Here is what I have tested on i386 with kqemu. I also tried
>> > -kernel-kqemu with a few linux 2.6 guests but only got panics, one
>> > screenshot of KANOTIX-2006-CeBIT-RC3.iso is at
>> > http://www.mytempdir.com/562050 (all panics looked like that).
>>
>> Update: installed the qemu port (at first i was only using it from
>> within the work dir), and now it works! And pretty fast too! :)
>
>Huge thanks for Fabrice and Juergen!!!
>I updated your port with IDE DMA hack:
>http://people.freebsd.org/~maho/qemu/qemu20060405.tar.gz
I just played with this one and tried
qemu -monitor stdio -cdrom ~/iso/KANOTIX-2006-CeBIT-RC3.iso -m 256 -usb -soundhw es1370 -localtime -kernel-kqemu
that gave me the panic mentioned above again! Looks like at least
parts of the qemu-piix4-udma.patch from the IDE DMA hack are still
needed (you omitted this patch probably because it no longer applies to
the used cvs snapshot, which is also why I removed the entire DMA hack
from the update I posted, but then I forgot that I still had the
patched bios installed when I first tried -kernel-kqemu...)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update
2006-04-01 22:21 [Qemu-devel] experimental FreeBSD {k,}qemu port update Juergen Lock
2006-04-01 23:36 ` [Qemu-devel] " Juergen Lock
@ 2006-04-09 16:34 ` Juergen Lock
1 sibling, 0 replies; 6+ messages in thread
From: Juergen Lock @ 2006-04-09 16:34 UTC (permalink / raw)
To: freebsd-emulation, qemu-devel
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 malc@pulsesoft.com\n",
++ 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 */
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-04-09 16:39 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-01 22:21 [Qemu-devel] experimental FreeBSD {k,}qemu port update Juergen Lock
2006-04-01 23:36 ` [Qemu-devel] " Juergen Lock
2006-04-02 0:22 ` Juergen Lock
2006-04-05 2:41 ` NAKATA Maho
2006-04-09 15:39 ` John's IDE DMA patch and qemu cvs (was: Re: [Qemu-devel] Re: experimental FreeBSD {k, }qemu port update) Juergen Lock
2006-04-09 16:34 ` [Qemu-devel] Re: experimental FreeBSD {k,}qemu port update Juergen Lock
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.