All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

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.